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
6 changes: 5 additions & 1 deletion csctldocker/csctldocker_main.go
Original file line number Diff line number Diff line change
Expand Up @@ -38,7 +38,9 @@ https://github.com/SovereignCloudStack/csctl
}

func main() {
if len(os.Args) != 4 {
numArgs := 5
if len(os.Args) != numArgs {
fmt.Printf("Wrong number of arguments. Expected %d got %d\n", numArgs, len(os.Args))
usage()
os.Exit(1)
}
Expand All @@ -62,8 +64,10 @@ func main() {
fmt.Println(err.Error())
os.Exit(1)
}
nodeImageRegistry := os.Args[4]
fmt.Printf("clusterStackPath: %s\n", clusterStackPath)
fmt.Printf("releaseDir: %s\n", releaseDir)
fmt.Printf("nodeImageRegistry: %s\n", nodeImageRegistry)
fmt.Printf("..... pretending to read config: %s\n", config.Config.Provider.Config["dummyKey"])
fmt.Printf("..... pretending to do heavy work (creating node images) ...\n")
}
14 changes: 11 additions & 3 deletions pkg/cmd/create.go
Original file line number Diff line number Diff line change
Expand Up @@ -51,8 +51,9 @@ var (
)

var (
mode string
outputDirectory string
mode string
outputDirectory string
nodeImageRegistry string
)

// CreateOptions contains config for creating a release.
Expand All @@ -63,6 +64,7 @@ type CreateOptions struct {
Metadata clusterstack.MetaData
CurrentReleaseHash hash.ReleaseHash
LatestReleaseHash hash.ReleaseHash
NodeImageRegistry string
}

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

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

createOption.NodeImageRegistry = nodeImageRegistry

return createOption, nil
}

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

err = providerplugin.CreateNodeImages(&c.Config, c.ClusterStackPath, c.ClusterStackReleaseDir)
err = providerplugin.CreateNodeImages(&c.Config,
c.ClusterStackPath,
c.ClusterStackReleaseDir,
c.NodeImageRegistry)
if err != nil {
return fmt.Errorf("providerplugin.CreateNodeImages() failed: %w", err)
}
Expand Down
7 changes: 4 additions & 3 deletions pkg/providerplugin/providerplugin.go
Original file line number Diff line number Diff line change
Expand Up @@ -49,16 +49,17 @@ func GetProviderExecutable(config *clusterstack.CsctlConfig) (needed bool, path
}

// CreateNodeImages calls the provider plugin command to create nodes images.
func CreateNodeImages(config *clusterstack.CsctlConfig, clusterStackPath, clusterStackReleaseDir string) error {
func CreateNodeImages(config *clusterstack.CsctlConfig, clusterStackPath, clusterStackReleaseDir, nodeImageRegistry string) error {
needed, path, err := GetProviderExecutable(config)
if err != nil {
return err
}
if !needed {
fmt.Printf("No provider specifig configuration in csctl.yaml. No need to call a plugin for provider %q\n", config.Config.Provider.Type)
fmt.Printf("No provider specifig configuration in csctl.yaml. No need to call a plugin for provider %q\n",
config.Config.Provider.Type)
return nil
}
args := []string{"create-node-images", clusterStackPath, clusterStackReleaseDir}
args := []string{"create-node-images", clusterStackPath, clusterStackReleaseDir, nodeImageRegistry}
fmt.Printf("Calling Provider Plugin: %s\n", path)
cmd := exec.Command(path, args...) // #nosec G204
cmd.Stdout = os.Stdout
Expand Down