Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
12 changes: 8 additions & 4 deletions client.go
Original file line number Diff line number Diff line change
Expand Up @@ -430,19 +430,23 @@ type DeviceLinkGroupLink struct {
type ClusterDetails struct {
ClusterName *string
NumOfNodes *int
ClusterNodeDetails map[string]*ClusterNodeDetail
ClusterNodeDetails map[string]*ClusterNodeDetail // Deprecated: Use Node0 and Node1 instead
ClusterId *string
Nodes []ClusterNode
Nodes []ClusterNode // Deprecated: Use Node0 and Node1 instead
Node0 *ClusterNodeDetail
Node1 *ClusterNodeDetail
}

//ClusterNodeDetail describes Network Edge cluster node configuration
//ClusterNodeDetail describes Network Edge cluster node details
type ClusterNodeDetail struct {
UUID *string
Name *string
VendorConfiguration map[string]string
LicenseFileId *string
LicenseToken *string
}

type ClusterNode struct {
type ClusterNode struct { // Deprecated: Use ClusterNodeDetail instead
UUID *string
Name *string
Node *int
Expand Down
2 changes: 1 addition & 1 deletion internal/api/device.go
Original file line number Diff line number Diff line change
Expand Up @@ -85,6 +85,7 @@ type SecondaryDeviceRequest struct {
AdditionalBandwidth *int `json:"additionalBandwidth,omitempty,string"`
SshInterfaceId *string `json:"sshInterfaceId,omitempty"`
ACLTemplateUUID *string `json:"aclTemplateUuid,omitempty"`
MgmtAclTemplateUuid *string `json:"mgmtAclTemplateUuid,omitempty"`
VendorConfig map[string]string `json:"vendorConfig,omitempty"`
UserPublicKey *DeviceUserPublicKeyRequest `json:"userPublicKey,omitempty"`
}
Expand Down Expand Up @@ -169,7 +170,6 @@ type DeviceACLResponse struct {
//ClusterDetailsRequest describes cluster details of device creation request
type ClusterDetailsRequest struct {
ClusterName *string `json:"clusterName,omitempty"`
NumOfNodes *int `json:"numOfNodes,omitempty"`
ClusterNodeDetails map[string]ClusterNodeDetailRequest `json:"clusterNodeDetails,omitempty"`
}

Expand Down
15 changes: 11 additions & 4 deletions rest_device.go
Original file line number Diff line number Diff line change
Expand Up @@ -288,6 +288,7 @@ func mapDeviceClusterDetailsAPIToDomain(apiClusterDetails *api.ClusterDetails) *
clusterDetails.NumOfNodes = apiClusterDetails.NumOfNodes
apiNodes := apiClusterDetails.Nodes
transformed := make([]ClusterNode, len(apiNodes))
clusterNodeDetails := make([]*ClusterNodeDetail, len(apiNodes))
for i := range apiNodes {
transformed[i] = ClusterNode{
UUID: apiNodes[i].UUID,
Expand All @@ -296,8 +297,15 @@ func mapDeviceClusterDetailsAPIToDomain(apiClusterDetails *api.ClusterDetails) *
AdminPassword: apiNodes[i].AdminPassword,
VendorConfiguration: apiNodes[i].VendorConfiguration,
}
clusterNodeDetails[i] = &ClusterNodeDetail{
UUID: apiNodes[i].UUID,
Name: apiNodes[i].Name,
VendorConfiguration: apiNodes[i].VendorConfiguration,
}
}
clusterDetails.Nodes = transformed
clusterDetails.Node0 = clusterNodeDetails[0]
clusterDetails.Node1 = clusterNodeDetails[1]
return &clusterDetails
}

Expand All @@ -307,11 +315,9 @@ func mapDeviceClusterDetailsDomainToAPI(clusterDetails *ClusterDetails) *api.Clu
}
req := api.ClusterDetailsRequest{}
req.ClusterName = clusterDetails.ClusterName
req.NumOfNodes = clusterDetails.NumOfNodes
clusterNodeDetailsRequest := make(map[string]api.ClusterNodeDetailRequest)
for k, v := range clusterDetails.ClusterNodeDetails {
clusterNodeDetailsRequest[k] = *mapDeviceClusterNodeDetailDomainToAPI(v)
}
clusterNodeDetailsRequest["node0"] = *mapDeviceClusterNodeDetailDomainToAPI(clusterDetails.Node0)
clusterNodeDetailsRequest["node1"] = *mapDeviceClusterNodeDetailDomainToAPI(clusterDetails.Node1)
req.ClusterNodeDetails = clusterNodeDetailsRequest
return &req
}
Expand Down Expand Up @@ -389,6 +395,7 @@ func createRedundantDeviceRequest(primary Device, secondary Device) api.DeviceRe
secReq.SshInterfaceId = req.SshInterfaceId
}
secReq.ACLTemplateUUID = secondary.ACLTemplateUUID
secReq.MgmtAclTemplateUuid = secondary.MgmtAclTemplateUuid
secReq.VendorConfig = secondary.VendorConfiguration
secReq.UserPublicKey = mapDeviceUserPublicKeyDomainToAPI(secondary.UserPublicKey)
req.Secondary = &secReq
Expand Down
31 changes: 15 additions & 16 deletions rest_device_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -95,6 +95,7 @@ func TestCreateRedundantDevice(t *testing.T) {
AccountNumber: String("99999"),
AdditionalBandwidth: Int(200),
ACLTemplateUUID: String("4972e8d2-417f-4821-91a8-f4a61a6dcdc3"),
MgmtAclTemplateUuid: String("4972e8d2-417f-4821-91a8-f4a61a6dcdc3"),
VendorConfiguration: map[string]string{
"serialNumber": "2222222",
"controller1": "2.2.2.2",
Expand Down Expand Up @@ -155,21 +156,19 @@ func TestCreateClusterDevice(t *testing.T) {
},
ClusterDetails: &ClusterDetails{
ClusterName: String("clusterName"),
ClusterNodeDetails: map[string]*ClusterNodeDetail{
"node0": {
VendorConfiguration: map[string]string{
"hostName": "panw-host0",
},
LicenseFileId: String("8d180057-8309-4c59-b645-f630f010ad43"),
LicenseToken: String("licenseToken"),
Node0: &ClusterNodeDetail{
VendorConfiguration: map[string]string{
"hostname": "panw-host0",
},
"node1": {
VendorConfiguration: map[string]string{
"hostName": "panw-host1",
},
LicenseFileId: String("8d180057-8309-4c59-b645-f630f010ad43"),
LicenseToken: String("licenseToken"),
LicenseFileId: String("8d180057-8309-4c59-b645-f630f010ad43"),
LicenseToken: String("licenseToken"),
},
Node1: &ClusterNodeDetail{
VendorConfiguration: map[string]string{
"hostname": "panw-host1",
},
LicenseFileId: String("8d180057-8309-4c59-b645-f630f010ad43"),
LicenseToken: String("licenseToken"),
},
},
}
Expand Down Expand Up @@ -478,6 +477,7 @@ func verifyRedundantDeviceRequest(t *testing.T, primary, secondary Device, req a
assert.Equal(t, secondary.AccountNumber, req.Secondary.AccountNumber, "Secondary AccountNumber matches")
assert.Equal(t, secondary.AdditionalBandwidth, req.Secondary.AdditionalBandwidth, "Secondary AdditionalBandwidth matches")
assert.Equal(t, secondary.ACLTemplateUUID, req.Secondary.ACLTemplateUUID, "Secondary ACLTemplateUUID matches")
assert.Equal(t, secondary.MgmtAclTemplateUuid, req.Secondary.MgmtAclTemplateUuid, "Secondary MgmtAclTemplateUuid matches")
assert.Equal(t, secondary.VendorConfiguration, req.Secondary.VendorConfig, "Secondary VendorConfigurations match")
assert.NotNil(t, req.Secondary.UserPublicKey, "UserPublicKey is not nil")
verifyDeviceUserPublicKeyRequest(t, *secondary.UserPublicKey, *req.Secondary.UserPublicKey)
Expand Down Expand Up @@ -528,9 +528,8 @@ func verifyClusterDetailsRequest(t *testing.T, clusterDetails ClusterDetails, ap
assert.Equal(t, clusterDetails.ClusterName, apiClusterDetailsReq.ClusterName, "ClusterName matches")
apiClusterNodeDetailReqMap := apiClusterDetailsReq.ClusterNodeDetails
assert.NotNil(t, apiClusterNodeDetailReqMap, "ClusterNodeDetails are not nil")
for k, v := range clusterDetails.ClusterNodeDetails {
verifyClusterNodeDetailRequest(t, v, apiClusterNodeDetailReqMap[k])
}
verifyClusterNodeDetailRequest(t, clusterDetails.Node0, apiClusterNodeDetailReqMap["node0"])
verifyClusterNodeDetailRequest(t, clusterDetails.Node1, apiClusterNodeDetailReqMap["node1"])
}

func verifyClusterNodeDetailRequest(t *testing.T, clusterNodeDetail *ClusterNodeDetail, apiClusterNodeDetailReq api.ClusterNodeDetailRequest) {
Expand Down