From 2b4d8616a5cce423968d95b2f492f0caf893a6ac Mon Sep 17 00:00:00 2001 From: Cezar Craciunoiu Date: Mon, 7 Sep 2026 12:26:15 +0300 Subject: [PATCH] chore(internal)!: Remove old node quirks Signed-off-by: Cezar Craciunoiu --- .../cli/kraft/cloud/instance/create/create.go | 67 +------------- internal/cli/kraft/cloud/utils/utils.go | 92 ------------------- 2 files changed, 4 insertions(+), 155 deletions(-) delete mode 100644 internal/cli/kraft/cloud/utils/utils.go diff --git a/internal/cli/kraft/cloud/instance/create/create.go b/internal/cli/kraft/cloud/instance/create/create.go index fd2cc3eee..0e21673b6 100644 --- a/internal/cli/kraft/cloud/instance/create/create.go +++ b/internal/cli/kraft/cloud/instance/create/create.go @@ -22,7 +22,6 @@ import ( kraftcloud "sdk.kraft.cloud" kcclient "sdk.kraft.cloud/client" - kcimages "sdk.kraft.cloud/images" kcinstances "sdk.kraft.cloud/instances" kcservices "sdk.kraft.cloud/services" @@ -129,59 +128,6 @@ func Create(ctx context.Context, opts *CreateOptions, args ...string) (*kcclient // Replace all slashes in the name with dashes. opts.Name = strings.ReplaceAll(opts.Name, "/", "-") - // NOTE(craciunoiuc): Code should be removed after public nodes are updated - if isPublic, err := utils.IsPublicMetro(ctx, opts.Metro); err != nil { - return nil, nil, fmt.Errorf("could not determine if metro is public: %w", err) - } else if isPublic { - // Keep a reference of the image that we are going to use for the instance. - var image *kcimages.GetResponseItem - - // Check if the image exists before creating the instance - paramodel, err := processtree.NewProcessTree( - ctx, - []processtree.ProcessTreeOption{ - processtree.IsParallel(false), - processtree.WithRenderer( - log.LoggerTypeFromString(config.G[config.KraftKit](ctx).Log.Type) != log.FANCY, - ), - processtree.WithFailFast(true), - processtree.WithHideOnSuccess(true), - processtree.WithTimeout(60 * time.Second), - }, - processtree.NewProcessTreeItem( - "propagating", - "", - func(ctx context.Context) error { - for { - imageResp, err := opts.Client.Images().WithMetro(opts.Metro).Get(ctx, opts.Image) - if err != nil { - return fmt.Errorf("could not get image: %w", err) - } - - image, err = imageResp.FirstOrErr() - if err != nil { - return fmt.Errorf("could not get image: %w", err) - } - - if image == nil { - continue - } - - return nil - } - }, - ), - ) - if err != nil { - return nil, nil, fmt.Errorf("could not start the process tree: %w", err) - } - - err = paramodel.Start() - if err != nil { - return nil, nil, fmt.Errorf("could not wait for image to be available: %w", err) - } - } - var features []kcinstances.Feature for _, feature := range opts.Features { @@ -361,15 +307,10 @@ func Create(ctx context.Context, opts *CreateOptions, args ...string) (*kcclient _, instImageBase, _ = strings.Cut(instImageBase, "://") } - // NOTE(craciunoiuc): Check should be removed after public nodes are updated - if isPublic, err := utils.IsPublicMetro(ctx, opts.Metro); err != nil { - return nil, nil, fmt.Errorf("could not determine if metro is public: %w", err) - } else if !isPublic { - // Remove the registry origin which is always present - // Also remove the 'official/' if possible - _, instImageBase, _ = strings.Cut(instImageBase, "/") - instImageBase = strings.TrimPrefix(instImageBase, "official/") - } + // Remove the registry origin which is always present + // Also remove the 'official/' if possible + _, instImageBase, _ = strings.Cut(instImageBase, "/") + instImageBase = strings.TrimPrefix(instImageBase, "official/") if instImageBase == imageBase { qualifiedInstancesToRolloutOver = append(qualifiedInstancesToRolloutOver, instance) diff --git a/internal/cli/kraft/cloud/utils/utils.go b/internal/cli/kraft/cloud/utils/utils.go deleted file mode 100644 index 5168e9bf6..000000000 --- a/internal/cli/kraft/cloud/utils/utils.go +++ /dev/null @@ -1,92 +0,0 @@ -// SPDX-License-Identifier: BSD-3-Clause -// Copyright (c) 2025, Unikraft GmbH and The KraftKit Authors. -// Licensed under the BSD-3-Clause License (the "License"). -// You may not use this file except in compliance with the License. - -package utils - -import ( - "context" - "fmt" - "slices" - - unikraftcloud "sdk.kraft.cloud" -) - -func getPublicMetroCodes(ctx context.Context) ([]string, error) { - client := unikraftcloud.NewMetrosClient() - metros, err := client.List(ctx, false) - if err != nil { - return nil, fmt.Errorf("could not list metros: %w", err) - } - - candidates := make([]string, len(metros)) - for i, m := range metros { - candidates[i] = m.Code - } - return candidates, nil -} - -func getPublicMetroURLs(ctx context.Context) ([]string, error) { - metroCodes, err := getPublicMetroCodes(ctx) - if err != nil { - return nil, err - } - - urls := make([]string, len(metroCodes)) - for i, code := range metroCodes { - urls[i] = fmt.Sprintf("https://api.%s.unikraft.cloud/v1", code) - } - - return urls, nil -} - -func getOldPublicMetroURLs(ctx context.Context) ([]string, error) { - metroCodes, err := getPublicMetroCodes(ctx) - if err != nil { - return nil, err - } - - urls := make([]string, len(metroCodes)) - for i, code := range metroCodes { - urls[i] = fmt.Sprintf("https://api%s0.kraft.cloud/v1", code) - } - - return urls, nil -} - -// IsPublicMetro checks if the provided server URL corresponds to a public metro. -func IsPublicMetro(ctx context.Context, server string) (bool, error) { - if server == "" { - return false, nil - } - - codes, err := getPublicMetroCodes(ctx) - if err != nil { - return false, err - } - - urls, err := getPublicMetroURLs(ctx) - if err != nil { - return false, err - } - - oldUrls, err := getOldPublicMetroURLs(ctx) - if err != nil { - return false, err - } - - if slices.Contains(codes, server) { - return true, nil - } - - if slices.Contains(urls, server) { - return true, nil - } - - if slices.Contains(oldUrls, server) { - return true, nil - } - - return false, nil -}