Skip to content

Commit

Permalink
Merge pull request #46 from latitudesh/fix/vlan-adjustments
Browse files Browse the repository at this point in the history
fix: missing fields from vlan create/update responses
  • Loading branch information
ynhummel authored Jun 4, 2024
2 parents 3577b99 + b918692 commit 886a871
Show file tree
Hide file tree
Showing 2 changed files with 70 additions and 7 deletions.
35 changes: 33 additions & 2 deletions virtual_network_assignments.go
Original file line number Diff line number Diff line change
Expand Up @@ -63,6 +63,25 @@ type VlanAssignmentGetResponse struct {
Meta meta `json:"meta"`
}

type VlanAssignmentCreateResponse struct {
Data VlanAssignmentCreateData `json:"data"`
Meta meta `json:"meta"`
}

type VlanAssignmentCreateData struct {
ID string `json:"id"`
Type string `json:"type"`
Attributes VlanAssignmentCreateAttributes `json:"attributes"`
}

type VlanAssignmentCreateAttributes struct {
VirtualNetworkID string `json:"virtual_network_id"`
Vid int `json:"vid"`
Description string `json:"description"`
Status string `json:"status"`
ServerId string `json:"server_id"`
}

type VlanAssignRequest struct {
Data VlanAssignData `json:"data"`
}
Expand Down Expand Up @@ -92,6 +111,18 @@ func NewFlatVlanAssignment(vnd VlanAssignmentData) VlanAssignment {
}
}

func NewCreateFlatVlanAssignment(vnd VlanAssignmentCreateData) VlanAssignment {
return VlanAssignment{
ID: vnd.ID,
Type: vnd.Type,
VirtualNetworkID: vnd.Attributes.VirtualNetworkID,
Vid: vnd.Attributes.Vid,
Description: vnd.Attributes.Description,
Status: vnd.Attributes.Status,
ServerID: vnd.Attributes.ServerId,
}
}

func NewFlatVlanAssignmentList(vnd []VlanAssignmentData) []VlanAssignment {
var res []VlanAssignment
for _, vn := range vnd {
Expand Down Expand Up @@ -141,14 +172,14 @@ func (s *VlanAssignmentServiceOp) Get(vlanAssignmentID string) (*VlanAssignment,
}

func (s *VlanAssignmentServiceOp) Assign(assignRequest *VlanAssignRequest) (*VlanAssignment, *Response, error) {
vLan := new(VlanAssignmentGetResponse)
vLan := new(VlanAssignmentCreateResponse)

resp, err := s.client.DoRequest("POST", vlanAssignmentBasePath, assignRequest, vLan)
if err != nil {
return nil, resp, err
}

flatVlanAssignment := NewFlatVlanAssignment(vLan.Data)
flatVlanAssignment := NewCreateFlatVlanAssignment(vLan.Data)
return &flatVlanAssignment, resp, err
}

Expand Down
42 changes: 37 additions & 5 deletions virtual_networks.go
Original file line number Diff line number Diff line change
Expand Up @@ -68,6 +68,27 @@ type VirtualNetworkGetResponse struct {
Meta meta `json:"meta"`
}

type VirtualNetworkPostData struct {
ID string `json:"id"`
Type string `json:"type"`
Attributes VirtualNetworkPostAttributes `json:"attributes"`
}

type VirtualNetworkPostAttributes struct {
Vid int `json:"vid"`
Description string `json:"description"`
Site string `json:"site"`
Tags []EmbedTag `json:"tags"`
Name string `json:"name"`
}

type VirtualNetworkCreateResponse struct {
Data VirtualNetworkPostData `json:"data"`
Meta meta `json:"meta"`
}

type VirtualNetworkUpdateResponse VirtualNetworkCreateResponse

type VirtualNetworkCreateRequest struct {
Data VirtualNetworkCreateData `json:"data"`
}
Expand Down Expand Up @@ -115,6 +136,17 @@ func NewFlatVirtualNetwork(vnd VirtualNetworkData) VirtualNetwork {
}
}

func NewFlatCreatedVirtualNetwork(vnd VirtualNetworkPostData) VirtualNetwork {
return VirtualNetwork{
ID: vnd.ID,
Type: vnd.Type,
Vid: vnd.Attributes.Vid,
Description: vnd.Attributes.Description,
SiteSlug: vnd.Attributes.Site,
Tags: vnd.Attributes.Tags,
}
}

func NewFlatVirtualNetworkList(vnd []VirtualNetworkData) []VirtualNetwork {
var res []VirtualNetwork
for _, vn := range vnd {
Expand Down Expand Up @@ -160,28 +192,28 @@ func (s *VirtualNetworkServiceOp) Get(virtualNetworkID string, opts *GetOptions)

// Create creates a new virtual network
func (s *VirtualNetworkServiceOp) Create(createRequest *VirtualNetworkCreateRequest) (*VirtualNetwork, *Response, error) {
vLan := new(VirtualNetworkGetResponse)
virtualNetwork := new(VirtualNetworkCreateResponse)

resp, err := s.client.DoRequest("POST", virtualNetworkBasePath, createRequest, vLan)
resp, err := s.client.DoRequest("POST", virtualNetworkBasePath, createRequest, virtualNetwork)
if err != nil {
return nil, resp, err
}

flatVirtualNetwork := NewFlatVirtualNetwork(vLan.Data)
flatVirtualNetwork := NewFlatCreatedVirtualNetwork(virtualNetwork.Data)
return &flatVirtualNetwork, resp, err
}

// Update updates a virtual network
func (s *VirtualNetworkServiceOp) Update(virtualNetworkID string, updateRequest *VirtualNetworkUpdateRequest) (*VirtualNetwork, *Response, error) {
apiPath := path.Join(virtualNetworkBasePath, virtualNetworkID)
virtualNetwork := new(VirtualNetworkGetResponse)
virtualNetwork := new(VirtualNetworkUpdateResponse)

resp, err := s.client.DoRequest("PATCH", apiPath, updateRequest, virtualNetwork)
if err != nil {
return nil, resp, err
}

flatVirtualNetwork := NewFlatVirtualNetwork(virtualNetwork.Data)
flatVirtualNetwork := NewFlatCreatedVirtualNetwork(virtualNetwork.Data)
return &flatVirtualNetwork, resp, err
}

Expand Down

0 comments on commit 886a871

Please sign in to comment.