Skip to content

Commit ff295ba

Browse files
authored
🌱 csctl accepts "--node-image-registry" now and passes this to the plugin. (#105)
Signed-off-by: Thomas Guettler <thomas.guettler@syself.com>
1 parent bf1f8f0 commit ff295ba

File tree

3 files changed

+20
-7
lines changed

3 files changed

+20
-7
lines changed

csctldocker/csctldocker_main.go

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,9 @@ https://github.com/SovereignCloudStack/csctl
3838
}
3939

4040
func main() {
41-
if len(os.Args) != 4 {
41+
numArgs := 5
42+
if len(os.Args) != numArgs {
43+
fmt.Printf("Wrong number of arguments. Expected %d got %d\n", numArgs, len(os.Args))
4244
usage()
4345
os.Exit(1)
4446
}
@@ -62,8 +64,10 @@ func main() {
6264
fmt.Println(err.Error())
6365
os.Exit(1)
6466
}
67+
nodeImageRegistry := os.Args[4]
6568
fmt.Printf("clusterStackPath: %s\n", clusterStackPath)
6669
fmt.Printf("releaseDir: %s\n", releaseDir)
70+
fmt.Printf("nodeImageRegistry: %s\n", nodeImageRegistry)
6771
fmt.Printf("..... pretending to read config: %s\n", config.Config.Provider.Config["dummyKey"])
6872
fmt.Printf("..... pretending to do heavy work (creating node images) ...\n")
6973
}

pkg/cmd/create.go

Lines changed: 11 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -51,8 +51,9 @@ var (
5151
)
5252

5353
var (
54-
mode string
55-
outputDirectory string
54+
mode string
55+
outputDirectory string
56+
nodeImageRegistry string
5657
)
5758

5859
// CreateOptions contains config for creating a release.
@@ -63,6 +64,7 @@ type CreateOptions struct {
6364
Metadata clusterstack.MetaData
6465
CurrentReleaseHash hash.ReleaseHash
6566
LatestReleaseHash hash.ReleaseHash
67+
NodeImageRegistry string
6668
}
6769

6870
// createCmd represents the create command.
@@ -78,6 +80,7 @@ var createCmd = &cobra.Command{
7880
func init() {
7981
createCmd.Flags().StringVarP(&mode, "mode", "m", "stable", "It defines the mode of the cluster stack manager")
8082
createCmd.Flags().StringVarP(&outputDirectory, "output", "o", "./releases", "It defines the output directory in which the release artifacts will be generated")
83+
createCmd.Flags().StringVarP(&nodeImageRegistry, "node-image-registry", "r", "", "It defines the node image registry. For example oci://ghcr.io/foo/bar/node-images/staging/")
8184
}
8285

8386
// GetCreateOptions create a Create Option for create command.
@@ -148,6 +151,8 @@ func GetCreateOptions(ctx context.Context, clusterStackPath string) (*CreateOpti
148151
// Release directory name `release/docker-ferrol-1-27-v1`
149152
createOption.ClusterStackReleaseDir = filepath.Join(outputDirectory, releaseDirName)
150153

154+
createOption.NodeImageRegistry = nodeImageRegistry
155+
151156
return createOption, nil
152157
}
153158

@@ -250,7 +255,10 @@ func (c *CreateOptions) generateRelease() error {
250255
return fmt.Errorf("failed to write metadata: %w", err)
251256
}
252257

253-
err = providerplugin.CreateNodeImages(&c.Config, c.ClusterStackPath, c.ClusterStackReleaseDir)
258+
err = providerplugin.CreateNodeImages(&c.Config,
259+
c.ClusterStackPath,
260+
c.ClusterStackReleaseDir,
261+
c.NodeImageRegistry)
254262
if err != nil {
255263
return fmt.Errorf("providerplugin.CreateNodeImages() failed: %w", err)
256264
}

pkg/providerplugin/providerplugin.go

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -49,16 +49,17 @@ func GetProviderExecutable(config *clusterstack.CsctlConfig) (needed bool, path
4949
}
5050

5151
// CreateNodeImages calls the provider plugin command to create nodes images.
52-
func CreateNodeImages(config *clusterstack.CsctlConfig, clusterStackPath, clusterStackReleaseDir string) error {
52+
func CreateNodeImages(config *clusterstack.CsctlConfig, clusterStackPath, clusterStackReleaseDir, nodeImageRegistry string) error {
5353
needed, path, err := GetProviderExecutable(config)
5454
if err != nil {
5555
return err
5656
}
5757
if !needed {
58-
fmt.Printf("No provider specifig configuration in csctl.yaml. No need to call a plugin for provider %q\n", config.Config.Provider.Type)
58+
fmt.Printf("No provider specifig configuration in csctl.yaml. No need to call a plugin for provider %q\n",
59+
config.Config.Provider.Type)
5960
return nil
6061
}
61-
args := []string{"create-node-images", clusterStackPath, clusterStackReleaseDir}
62+
args := []string{"create-node-images", clusterStackPath, clusterStackReleaseDir, nodeImageRegistry}
6263
fmt.Printf("Calling Provider Plugin: %s\n", path)
6364
cmd := exec.Command(path, args...) // #nosec G204
6465
cmd.Stdout = os.Stdout

0 commit comments

Comments
 (0)