Skip to content

Commit 521b57d

Browse files
authored
chore(iaas): remove deprecated SNA region flags from SNA cmds (#1483)
relates to STACKITCLI-283
1 parent fcdf9ab commit 521b57d

5 files changed

Lines changed: 18 additions & 767 deletions

File tree

internal/cmd/network-area/create/create.go

Lines changed: 6 additions & 157 deletions
Original file line numberDiff line numberDiff line change
@@ -3,23 +3,19 @@ package create
33
import (
44
"context"
55
"fmt"
6-
"strings"
76

87
"github.com/stackitcloud/stackit-cli/internal/pkg/types"
98

109
iaas "github.com/stackitcloud/stackit-sdk-go/services/iaas/v2api"
11-
wait "github.com/stackitcloud/stackit-sdk-go/services/iaas/v2api/wait"
1210

1311
"github.com/stackitcloud/stackit-cli/internal/pkg/args"
14-
cliErr "github.com/stackitcloud/stackit-cli/internal/pkg/errors"
1512
"github.com/stackitcloud/stackit-cli/internal/pkg/examples"
1613
"github.com/stackitcloud/stackit-cli/internal/pkg/flags"
1714
"github.com/stackitcloud/stackit-cli/internal/pkg/globalflags"
1815
"github.com/stackitcloud/stackit-cli/internal/pkg/print"
1916
"github.com/stackitcloud/stackit-cli/internal/pkg/services/iaas/client"
2017
rmClient "github.com/stackitcloud/stackit-cli/internal/pkg/services/resourcemanager/client"
2118
rmUtils "github.com/stackitcloud/stackit-cli/internal/pkg/services/resourcemanager/utils"
22-
"github.com/stackitcloud/stackit-cli/internal/pkg/spinner"
2319
"github.com/stackitcloud/stackit-cli/internal/pkg/utils"
2420

2521
"github.com/spf13/cobra"
@@ -28,40 +24,14 @@ import (
2824
const (
2925
nameFlag = "name"
3026
organizationIdFlag = "organization-id"
31-
// Deprecated: dnsNameServersFlag is deprecated, because with iaas v2 the create endpoint for network area was separated, remove this after April 2026.
32-
dnsNameServersFlag = "dns-name-servers"
33-
// Deprecated: networkRangesFlag is deprecated, because with iaas v2 the create endpoint for network area was separated, remove this after April 2026.
34-
networkRangesFlag = "network-ranges"
35-
// Deprecated: transferNetworkFlag is deprecated, because with iaas v2 the create endpoint for network area was separated, remove this after April 2026.
36-
transferNetworkFlag = "transfer-network"
37-
// Deprecated: defaultPrefixLengthFlag is deprecated, because with iaas v2 the create endpoint for network area was separated, remove this after April 2026.
38-
defaultPrefixLengthFlag = "default-prefix-length"
39-
// Deprecated: maxPrefixLengthFlag is deprecated, because with iaas v2 the create endpoint for network area was separated, remove this after April 2026.
40-
maxPrefixLengthFlag = "max-prefix-length"
41-
// Deprecated: minPrefixLengthFlag is deprecated, because with iaas v2 the create endpoint for network area was separated, remove this after April 2026.
42-
minPrefixLengthFlag = "min-prefix-length"
43-
labelFlag = "labels"
44-
45-
deprecationMessage = "Deprecated and will be removed after April 2026. Use instead the new command `$ stackit network-area region` to configure these options for a network area."
27+
labelFlag = "labels"
4628
)
4729

4830
type inputModel struct {
4931
*globalflags.GlobalFlagModel
5032
Name string
5133
OrganizationId string
52-
// Deprecated: DnsNameServers is deprecated, because with iaas v2 the create endpoint for network area was separated, remove this after April 2026.
53-
DnsNameServers *[]string
54-
// Deprecated: NetworkRanges is deprecated, because with iaas v2 the create endpoint for network area was separated, remove this after April 2026.
55-
NetworkRanges *[]string
56-
// Deprecated: TransferNetwork is deprecated, because with iaas v2 the create endpoint for network area was separated, remove this after April 2026.
57-
TransferNetwork *string
58-
// Deprecated: DefaultPrefixLength is deprecated, because with iaas v2 the create endpoint for network area was separated, remove this after April 2026.
59-
DefaultPrefixLength *int64
60-
// Deprecated: MaxPrefixLength is deprecated, because with iaas v2 the create endpoint for network area was separated, remove this after April 2026.
61-
MaxPrefixLength *int64
62-
// Deprecated: MinPrefixLength is deprecated, because with iaas v2 the create endpoint for network area was separated, remove this after April 2026.
63-
MinPrefixLength *int64
64-
Labels map[string]any
34+
Labels map[string]any
6535
}
6636

6737
// NetworkAreaResponses is a workaround, to keep the two responses of the iaas v2 api together for the json and yaml output
@@ -134,29 +104,6 @@ func NewCmd(params *types.CmdParams) *cobra.Command {
134104
NetworkArea: *resp,
135105
}
136106

137-
if hasDeprecatedFlagsSet(model) {
138-
deprecatedFlags := getConfiguredDeprecatedFlags(model)
139-
params.Printer.Warn("the flags %q are deprecated and will be removed after April 2026. Use `$ stackit network-area region` to configure these options for a network area.\n", strings.Join(deprecatedFlags, ","))
140-
if resp == nil || resp.Id == nil {
141-
return fmt.Errorf("create network area: empty response")
142-
}
143-
reqNetworkArea := buildRequestNetworkAreaRegion(ctx, model, *resp.Id, apiClient)
144-
respNetworkArea, err := reqNetworkArea.Execute()
145-
if err != nil {
146-
return fmt.Errorf("create network area region: %w", err)
147-
}
148-
if !model.Async {
149-
err := spinner.Run(params.Printer, "Create network area region", func() error {
150-
_, err = wait.CreateNetworkAreaRegionWaitHandler(ctx, apiClient.DefaultAPI, model.OrganizationId, *resp.Id, model.Region).WaitWithContext(ctx)
151-
return err
152-
})
153-
if err != nil {
154-
return fmt.Errorf("wait for creating network area region %w", err)
155-
}
156-
}
157-
responses.RegionalArea = respNetworkArea
158-
}
159-
160107
return outputResult(params.Printer, model.OutputFormat, orgLabel, responses)
161108
},
162109
}
@@ -168,78 +115,19 @@ func configureFlags(cmd *cobra.Command) {
168115
cmd.Flags().StringP(nameFlag, "n", "", "Network area name")
169116
cmd.Flags().Var(flags.UUIDFlag(), organizationIdFlag, "Organization ID")
170117
cmd.Flags().StringToString(labelFlag, nil, "Labels are key-value string pairs which can be attached to a network-area. E.g. '--labels key1=value1,key2=value2,...'")
171-
cmd.Flags().StringSlice(dnsNameServersFlag, nil, "List of DNS name server IPs")
172-
cmd.Flags().Var(flags.CIDRSliceFlag(), networkRangesFlag, "List of network ranges")
173-
cmd.Flags().Var(flags.CIDRFlag(), transferNetworkFlag, "Transfer network in CIDR notation")
174-
cmd.Flags().Int64(defaultPrefixLengthFlag, 0, "The default prefix length for networks in the network area")
175-
cmd.Flags().Int64(maxPrefixLengthFlag, 0, "The maximum prefix length for networks in the network area")
176-
cmd.Flags().Int64(minPrefixLengthFlag, 0, "The minimum prefix length for networks in the network area")
177-
178-
cobra.CheckErr(cmd.Flags().MarkDeprecated(dnsNameServersFlag, deprecationMessage))
179-
cobra.CheckErr(cmd.Flags().MarkDeprecated(networkRangesFlag, deprecationMessage))
180-
cobra.CheckErr(cmd.Flags().MarkDeprecated(transferNetworkFlag, deprecationMessage))
181-
cobra.CheckErr(cmd.Flags().MarkDeprecated(defaultPrefixLengthFlag, deprecationMessage))
182-
cobra.CheckErr(cmd.Flags().MarkDeprecated(maxPrefixLengthFlag, deprecationMessage))
183-
cobra.CheckErr(cmd.Flags().MarkDeprecated(minPrefixLengthFlag, deprecationMessage))
184-
185-
cmd.MarkFlagsRequiredTogether(networkRangesFlag, transferNetworkFlag)
186118

187119
err := flags.MarkFlagsRequired(cmd, nameFlag, organizationIdFlag)
188120
cobra.CheckErr(err)
189121
}
190122

191-
func hasDeprecatedFlagsSet(model *inputModel) bool {
192-
deprecatedFlags := getConfiguredDeprecatedFlags(model)
193-
return len(deprecatedFlags) > 0
194-
}
195-
196-
func getConfiguredDeprecatedFlags(model *inputModel) []string {
197-
var result []string
198-
if model.DnsNameServers != nil {
199-
result = append(result, dnsNameServersFlag)
200-
}
201-
if model.NetworkRanges != nil {
202-
result = append(result, networkRangesFlag)
203-
}
204-
if model.TransferNetwork != nil {
205-
result = append(result, transferNetworkFlag)
206-
}
207-
if model.DefaultPrefixLength != nil {
208-
result = append(result, defaultPrefixLengthFlag)
209-
}
210-
if model.MaxPrefixLength != nil {
211-
result = append(result, maxPrefixLengthFlag)
212-
}
213-
if model.MinPrefixLength != nil {
214-
result = append(result, minPrefixLengthFlag)
215-
}
216-
return result
217-
}
218-
219123
func parseInput(p *print.Printer, cmd *cobra.Command, _ []string) (*inputModel, error) {
220124
globalFlags := globalflags.Parse(p, cmd)
221125

222126
model := inputModel{
223-
GlobalFlagModel: globalFlags,
224-
Name: flags.FlagToStringValue(p, cmd, nameFlag),
225-
OrganizationId: flags.FlagToStringValue(p, cmd, organizationIdFlag),
226-
DnsNameServers: flags.FlagToStringSlicePointer(p, cmd, dnsNameServersFlag),
227-
NetworkRanges: flags.FlagToStringSlicePointer(p, cmd, networkRangesFlag),
228-
TransferNetwork: flags.FlagToStringPointer(p, cmd, transferNetworkFlag),
229-
DefaultPrefixLength: flags.FlagToInt64Pointer(p, cmd, defaultPrefixLengthFlag),
230-
MaxPrefixLength: flags.FlagToInt64Pointer(p, cmd, maxPrefixLengthFlag),
231-
MinPrefixLength: flags.FlagToInt64Pointer(p, cmd, minPrefixLengthFlag),
232-
Labels: flags.FlagToStringToAny(p, cmd, labelFlag),
233-
}
234-
235-
// Check if any of the deprecated **optional** fields are set and if no of the associated deprecated **required** fields is set.
236-
hasAllRequiredRegionalAreaFieldsSet := model.NetworkRanges != nil && model.TransferNetwork != nil
237-
hasOptionalRegionalAreaFieldsSet := model.DnsNameServers != nil || model.DefaultPrefixLength != nil || model.MaxPrefixLength != nil || model.MinPrefixLength != nil
238-
if hasOptionalRegionalAreaFieldsSet && !hasAllRequiredRegionalAreaFieldsSet {
239-
return nil, &cliErr.MultipleFlagsAreMissing{
240-
MissingFlags: []string{networkRangesFlag, transferNetworkFlag},
241-
SetFlags: []string{dnsNameServersFlag, defaultPrefixLengthFlag, minPrefixLengthFlag, maxPrefixLengthFlag},
242-
}
127+
GlobalFlagModel: globalFlags,
128+
Name: flags.FlagToStringValue(p, cmd, nameFlag),
129+
OrganizationId: flags.FlagToStringValue(p, cmd, organizationIdFlag),
130+
Labels: flags.FlagToStringToAny(p, cmd, labelFlag),
243131
}
244132

245133
p.DebugInputModel(model)
@@ -257,45 +145,6 @@ func buildRequest(ctx context.Context, model *inputModel, apiClient *iaas.APICli
257145
return req.CreateNetworkAreaPayload(payload)
258146
}
259147

260-
func buildRequestNetworkAreaRegion(ctx context.Context, model *inputModel, networkAreaId string, apiClient *iaas.APIClient) iaas.ApiCreateNetworkAreaRegionRequest {
261-
req := apiClient.DefaultAPI.CreateNetworkAreaRegion(ctx, model.OrganizationId, networkAreaId, model.Region)
262-
263-
var networkRanges []iaas.NetworkRange
264-
if model.NetworkRanges != nil {
265-
networkRanges = make([]iaas.NetworkRange, len(*model.NetworkRanges))
266-
for i, networkRange := range *model.NetworkRanges {
267-
networkRanges[i] = iaas.NetworkRange{
268-
Prefix: networkRange,
269-
}
270-
}
271-
}
272-
273-
ipv4 := &iaas.RegionalAreaIPv4{
274-
NetworkRanges: networkRanges,
275-
}
276-
if model.DnsNameServers != nil {
277-
ipv4.DefaultNameservers = *model.DnsNameServers
278-
}
279-
if model.TransferNetwork != nil {
280-
ipv4.TransferNetwork = *model.TransferNetwork
281-
}
282-
if model.DefaultPrefixLength != nil {
283-
ipv4.DefaultPrefixLen = *model.DefaultPrefixLength
284-
}
285-
if model.MaxPrefixLength != nil {
286-
ipv4.MaxPrefixLen = *model.MaxPrefixLength
287-
}
288-
if model.MinPrefixLength != nil {
289-
ipv4.MinPrefixLen = *model.MinPrefixLength
290-
}
291-
292-
payload := iaas.CreateNetworkAreaRegionPayload{
293-
Ipv4: ipv4,
294-
}
295-
296-
return req.CreateNetworkAreaRegionPayload(payload)
297-
}
298-
299148
func outputResult(p *print.Printer, outputFormat, orgLabel string, responses *NetworkAreaResponses) error {
300149
if responses == nil {
301150
return fmt.Errorf("network area is nil")

0 commit comments

Comments
 (0)