From 040df42094d56ac0e50a8ae253694e455dc7cda2 Mon Sep 17 00:00:00 2001 From: Stefan Majer Date: Tue, 23 Jul 2024 14:07:46 +0200 Subject: [PATCH] Update spec --- api/models/v1_network_create_request.go | 8 ++-- api/models/v1_network_immutable.go | 8 ++-- api/models/v1_network_response.go | 59 ++++++++++++++++++++++--- metal-api.json | 21 +++++---- 4 files changed, 75 insertions(+), 21 deletions(-) diff --git a/api/models/v1_network_create_request.go b/api/models/v1_network_create_request.go index 91a71be..59a435c 100644 --- a/api/models/v1_network_create_request.go +++ b/api/models/v1_network_create_request.go @@ -21,7 +21,7 @@ type V1NetworkCreateRequest struct { // the addressfamilies in this network, either IPv4 or IPv6 or both // Required: true - Addressfamily map[string]bool `json:"addressfamily" yaml:"addressfamily"` + Addressfamilies map[string]bool `json:"addressfamilies" yaml:"addressfamilies"` // if privatesuper, this defines the bitlen of child prefixes per addressfamily if not nil Defaultchildprefixlength map[string]int64 `json:"defaultchildprefixlength,omitempty" yaml:"defaultchildprefixlength,omitempty"` @@ -82,7 +82,7 @@ type V1NetworkCreateRequest struct { func (m *V1NetworkCreateRequest) Validate(formats strfmt.Registry) error { var res []error - if err := m.validateAddressfamily(formats); err != nil { + if err := m.validateAddressfamilies(formats); err != nil { res = append(res, err) } @@ -116,9 +116,9 @@ func (m *V1NetworkCreateRequest) Validate(formats strfmt.Registry) error { return nil } -func (m *V1NetworkCreateRequest) validateAddressfamily(formats strfmt.Registry) error { +func (m *V1NetworkCreateRequest) validateAddressfamilies(formats strfmt.Registry) error { - if err := validate.Required("addressfamily", "body", m.Addressfamily); err != nil { + if err := validate.Required("addressfamilies", "body", m.Addressfamilies); err != nil { return err } diff --git a/api/models/v1_network_immutable.go b/api/models/v1_network_immutable.go index cd57205..5413375 100644 --- a/api/models/v1_network_immutable.go +++ b/api/models/v1_network_immutable.go @@ -22,7 +22,7 @@ type V1NetworkImmutable struct { // the addressfamilies in this network, either IPv4 or IPv6 or both // Required: true - Addressfamily map[string]bool `json:"addressfamily" yaml:"addressfamily"` + Addressfamilies map[string]bool `json:"addressfamilies" yaml:"addressfamilies"` // if privatesuper, this defines the bitlen of child prefixes per addressfamily if not nil Defaultchildprefixlength map[string]int64 `json:"defaultchildprefixlength,omitempty" yaml:"defaultchildprefixlength,omitempty"` @@ -61,7 +61,7 @@ type V1NetworkImmutable struct { func (m *V1NetworkImmutable) Validate(formats strfmt.Registry) error { var res []error - if err := m.validateAddressfamily(formats); err != nil { + if err := m.validateAddressfamilies(formats); err != nil { res = append(res, err) } @@ -91,9 +91,9 @@ func (m *V1NetworkImmutable) Validate(formats strfmt.Registry) error { return nil } -func (m *V1NetworkImmutable) validateAddressfamily(formats strfmt.Registry) error { +func (m *V1NetworkImmutable) validateAddressfamilies(formats strfmt.Registry) error { - if err := validate.Required("addressfamily", "body", m.Addressfamily); err != nil { + if err := validate.Required("addressfamilies", "body", m.Addressfamilies); err != nil { return err } diff --git a/api/models/v1_network_response.go b/api/models/v1_network_response.go index dede7f3..a79c470 100644 --- a/api/models/v1_network_response.go +++ b/api/models/v1_network_response.go @@ -21,7 +21,7 @@ type V1NetworkResponse struct { // the addressfamilies in this network, either IPv4 or IPv6 or both // Required: true - Addressfamily map[string]bool `json:"addressfamily" yaml:"addressfamily"` + Addressfamilies map[string]bool `json:"addressfamilies" yaml:"addressfamilies"` // the last changed timestamp of this entity // Read Only: true @@ -81,10 +81,14 @@ type V1NetworkResponse struct { // Required: true Underlay *bool `json:"underlay" yaml:"underlay"` - // usage of ips and prefixes in this network + // usage of IPv4 ips and prefixes in this network // Required: true Usage *V1NetworkUsage `json:"usage" yaml:"usage"` + // usage of IPv6 ips and prefixes in this network + // Required: true + Usagev6 *V1NetworkUsage `json:"usagev6" yaml:"usagev6"` + // the vrf this network is associated with Vrf int64 `json:"vrf,omitempty" yaml:"vrf,omitempty"` @@ -96,7 +100,7 @@ type V1NetworkResponse struct { func (m *V1NetworkResponse) Validate(formats strfmt.Registry) error { var res []error - if err := m.validateAddressfamily(formats); err != nil { + if err := m.validateAddressfamilies(formats); err != nil { res = append(res, err) } @@ -136,15 +140,19 @@ func (m *V1NetworkResponse) Validate(formats strfmt.Registry) error { res = append(res, err) } + if err := m.validateUsagev6(formats); err != nil { + res = append(res, err) + } + if len(res) > 0 { return errors.CompositeValidationError(res...) } return nil } -func (m *V1NetworkResponse) validateAddressfamily(formats strfmt.Registry) error { +func (m *V1NetworkResponse) validateAddressfamilies(formats strfmt.Registry) error { - if err := validate.Required("addressfamily", "body", m.Addressfamily); err != nil { + if err := validate.Required("addressfamilies", "body", m.Addressfamilies); err != nil { return err } @@ -249,6 +257,26 @@ func (m *V1NetworkResponse) validateUsage(formats strfmt.Registry) error { return nil } +func (m *V1NetworkResponse) validateUsagev6(formats strfmt.Registry) error { + + if err := validate.Required("usagev6", "body", m.Usagev6); err != nil { + return err + } + + if m.Usagev6 != nil { + if err := m.Usagev6.Validate(formats); err != nil { + if ve, ok := err.(*errors.Validation); ok { + return ve.ValidateName("usagev6") + } else if ce, ok := err.(*errors.CompositeError); ok { + return ce.ValidateName("usagev6") + } + return err + } + } + + return nil +} + // ContextValidate validate this v1 network response based on the context it is used func (m *V1NetworkResponse) ContextValidate(ctx context.Context, formats strfmt.Registry) error { var res []error @@ -265,6 +293,10 @@ func (m *V1NetworkResponse) ContextValidate(ctx context.Context, formats strfmt. res = append(res, err) } + if err := m.contextValidateUsagev6(ctx, formats); err != nil { + res = append(res, err) + } + if len(res) > 0 { return errors.CompositeValidationError(res...) } @@ -306,6 +338,23 @@ func (m *V1NetworkResponse) contextValidateUsage(ctx context.Context, formats st return nil } +func (m *V1NetworkResponse) contextValidateUsagev6(ctx context.Context, formats strfmt.Registry) error { + + if m.Usagev6 != nil { + + if err := m.Usagev6.ContextValidate(ctx, formats); err != nil { + if ve, ok := err.(*errors.Validation); ok { + return ve.ValidateName("usagev6") + } else if ce, ok := err.(*errors.CompositeError); ok { + return ce.ValidateName("usagev6") + } + return err + } + } + + return nil +} + // MarshalBinary interface implementation func (m *V1NetworkResponse) MarshalBinary() ([]byte, error) { if m == nil { diff --git a/metal-api.json b/metal-api.json index dce9ac8..9b8e28a 100644 --- a/metal-api.json +++ b/metal-api.json @@ -3666,7 +3666,7 @@ }, "v1.NetworkCreateRequest": { "properties": { - "addressfamily": { + "addressfamilies": { "additionalProperties": { "type": "boolean" }, @@ -3752,7 +3752,7 @@ } }, "required": [ - "addressfamily", + "addressfamilies", "destinationprefixes", "id", "nat", @@ -3814,7 +3814,7 @@ "v1.NetworkImmutable": { "description": "a network which contains prefixes from which IP addresses can be allocated\nprefixes that are reachable within this network", "properties": { - "addressfamily": { + "addressfamilies": { "additionalProperties": { "type": "boolean" }, @@ -3869,7 +3869,7 @@ } }, "required": [ - "addressfamily", + "addressfamilies", "destinationprefixes", "nat", "prefixes", @@ -3879,7 +3879,7 @@ }, "v1.NetworkResponse": { "properties": { - "addressfamily": { + "addressfamilies": { "additionalProperties": { "type": "boolean" }, @@ -3968,7 +3968,11 @@ }, "usage": { "$ref": "#/definitions/v1.NetworkUsage", - "description": "usage of ips and prefixes in this network" + "description": "usage of IPv4 ips and prefixes in this network" + }, + "usagev6": { + "$ref": "#/definitions/v1.NetworkUsage", + "description": "usage of IPv6 ips and prefixes in this network" }, "vrf": { "description": "the vrf this network is associated with", @@ -3981,14 +3985,15 @@ } }, "required": [ - "addressfamily", + "addressfamilies", "destinationprefixes", "id", "nat", "prefixes", "privatesuper", "underlay", - "usage" + "usage", + "usagev6" ] }, "v1.NetworkUpdateRequest": {