Skip to content

Commit 8721b62

Browse files
authored
Change payload handling for create and update network commands (#462)
* fix network create payload * fix network update payload * extend create unit test
1 parent 93f88ce commit 8721b62

File tree

3 files changed

+34
-7
lines changed

3 files changed

+34
-7
lines changed

internal/cmd/beta/network/create/create.go

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -153,23 +153,26 @@ func buildRequest(ctx context.Context, model *inputModel, apiClient *iaas.APICli
153153
req := apiClient.CreateNetwork(ctx, model.ProjectId)
154154
addressFamily := &iaas.CreateNetworkAddressFamily{}
155155

156-
if model.IPv6DnsNameServers != nil {
156+
if model.IPv6DnsNameServers != nil || model.IPv6PrefixLength != nil {
157157
addressFamily.Ipv6 = &iaas.CreateNetworkIPv6Body{
158158
Nameservers: model.IPv6DnsNameServers,
159159
PrefixLength: model.IPv6PrefixLength,
160160
}
161161
}
162162

163-
if model.IPv4DnsNameServers != nil {
163+
if model.IPv4DnsNameServers != nil || model.IPv4PrefixLength != nil {
164164
addressFamily.Ipv4 = &iaas.CreateNetworkIPv4Body{
165165
Nameservers: model.IPv4DnsNameServers,
166166
PrefixLength: model.IPv4PrefixLength,
167167
}
168168
}
169169

170170
payload := iaas.CreateNetworkPayload{
171-
Name: model.Name,
172-
AddressFamily: addressFamily,
171+
Name: model.Name,
172+
}
173+
174+
if addressFamily.Ipv4 != nil || addressFamily.Ipv6 != nil {
175+
payload.AddressFamily = addressFamily
173176
}
174177

175178
return req.CreateNetworkPayload(payload)

internal/cmd/beta/network/create/create_test.go

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -65,6 +65,17 @@ func fixtureRequest(mods ...func(request *iaas.ApiCreateNetworkRequest)) iaas.Ap
6565
return request
6666
}
6767

68+
func fixtureRequiredRequest(mods ...func(request *iaas.ApiCreateNetworkRequest)) iaas.ApiCreateNetworkRequest {
69+
request := testClient.CreateNetwork(testCtx, testProjectId)
70+
request = request.CreateNetworkPayload(iaas.CreateNetworkPayload{
71+
Name: utils.Ptr("example-network-name"),
72+
})
73+
for _, mod := range mods {
74+
mod(&request)
75+
}
76+
return request
77+
}
78+
6879
func fixturePayload(mods ...func(payload *iaas.CreateNetworkPayload)) iaas.CreateNetworkPayload {
6980
payload := iaas.CreateNetworkPayload{
7081
Name: utils.Ptr("example-network-name"),
@@ -226,6 +237,17 @@ func TestBuildRequest(t *testing.T) {
226237
model: fixtureInputModel(),
227238
expectedRequest: fixtureRequest(),
228239
},
240+
{
241+
description: "only name in payload",
242+
model: &inputModel{
243+
GlobalFlagModel: &globalflags.GlobalFlagModel{
244+
ProjectId: testProjectId,
245+
Verbosity: globalflags.VerbosityDefault,
246+
},
247+
Name: utils.Ptr("example-network-name"),
248+
},
249+
expectedRequest: fixtureRequiredRequest(),
250+
},
229251
}
230252

231253
for _, tt := range tests {

internal/cmd/beta/network/update/update.go

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,6 @@ type inputModel struct {
3434
Name *string
3535
IPv4DnsNameServers *[]string
3636
IPv6DnsNameServers *[]string
37-
IPv6PrefixLength *int64
3837
}
3938

4039
func NewCmd(p *print.Printer) *cobra.Command {
@@ -166,8 +165,11 @@ func buildRequest(ctx context.Context, model *inputModel, apiClient *iaas.APICli
166165
}
167166

168167
payload := iaas.PartialUpdateNetworkPayload{
169-
Name: model.Name,
170-
AddressFamily: addressFamily,
168+
Name: model.Name,
169+
}
170+
171+
if addressFamily.Ipv4 != nil || addressFamily.Ipv6 != nil {
172+
payload.AddressFamily = addressFamily
171173
}
172174

173175
return req.PartialUpdateNetworkPayload(payload)

0 commit comments

Comments
 (0)