Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

AGENT-557: Split register into registerCluster and registerInfraEnv #5376

Merged
merged 1 commit into from Jul 28, 2023
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.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
71 changes: 71 additions & 0 deletions cmd/agentbasedinstaller/client/main.go
Expand Up @@ -91,8 +91,15 @@ func main() {
}
switch os.Args[1] {
case "register":
// registers both cluster and infraenv
infraEnvID := register(ctx, log, bmInventory)
os.WriteFile("/etc/assisted/client_config", []byte("INFRA_ENV_ID="+infraEnvID), 0644)
case "registerCluster":
clusterID := registerCluster(ctx, log, bmInventory)
os.WriteFile("/etc/assisted/client_config", []byte("CLUSTER_ID="+clusterID), 0644)
case "registerInfraEnv":
infraEnvID := registerInfraEnv(ctx, log, bmInventory)
os.WriteFile("/etc/assisted/client_config", []byte("INFRA_ENV_ID="+infraEnvID), 0644)
case "configure":
configure(ctx, log, bmInventory)
default:
Expand Down Expand Up @@ -130,6 +137,70 @@ func register(ctx context.Context, log *log.Logger, bmInventory *client.Assisted
return modelsInfraEnv.ID.String()
}

func registerCluster(ctx context.Context, log *log.Logger, bmInventory *client.AssistedInstall) string {
err := envconfig.Process("", &RegisterOptions)
if err != nil {
log.Fatal(err.Error())
}

existingCluster, err := agentbasedinstaller.GetCluster(ctx, log, bmInventory)
if err == nil {
log.Infof("Skipping cluster registration. Found existing cluster with id: %s", existingCluster.ID.String())
return existingCluster.ID.String()
}

pullSecret, err := agentbasedinstaller.GetPullSecret(RegisterOptions.PullSecretFile)
if err != nil {
log.Fatal("Failed to get pull secret: ", err.Error())
}

modelsCluster, err := agentbasedinstaller.RegisterCluster(ctx, log, bmInventory, pullSecret,
RegisterOptions.ClusterDeploymentFile, RegisterOptions.AgentClusterInstallFile, RegisterOptions.ClusterImageSetFile, RegisterOptions.ReleaseImageMirror)
if err != nil {
log.Fatal("Failed to register cluster with assisted-service: ", err)
}

err = agentbasedinstaller.RegisterExtraManifests(os.DirFS(RegisterOptions.ExtraManifests), ctx, log, bmInventory.Manifests, modelsCluster)
if err != nil {
log.Fatal("Failed to register extra manifests with assisted-service: ", err)
}

return modelsCluster.ID.String()
}

func registerInfraEnv(ctx context.Context, log *log.Logger, bmInventory *client.AssistedInstall) string {
err := envconfig.Process("", &RegisterOptions)
if err != nil {
log.Fatal(err.Error())
}

existingInfraEnv, err := agentbasedinstaller.GetInfraEnv(ctx, log, bmInventory)
if err == nil {
log.Infof("Skipping infraenv registration. Found existing infraenv with id: %s", existingInfraEnv.ID.String())
return existingInfraEnv.ID.String()
}

pullSecret, err := agentbasedinstaller.GetPullSecret(RegisterOptions.PullSecretFile)
if err != nil {
log.Fatal("Failed to get pull secret: ", err.Error())
}

modelsCluster, err := agentbasedinstaller.GetCluster(ctx, log, bmInventory)
if err != nil {
log.Fatal("Failed to find cluster when registering infraenv: ", err)
} else {
log.Infof("Reference to cluster id: %s", modelsCluster.ID.String())
}

modelsInfraEnv, err := agentbasedinstaller.RegisterInfraEnv(ctx, log, bmInventory, pullSecret,
modelsCluster, RegisterOptions.InfraEnvFile, RegisterOptions.NMStateConfigFile, RegisterOptions.ImageTypeISO, "")
if err != nil {
log.Fatal("Failed to register infraenv with assisted-service: ", err)
}

return modelsInfraEnv.ID.String()
}

func configure(ctx context.Context, log *log.Logger, bmInventory *client.AssistedInstall) {
err := envconfig.Process("", &ConfigureOptions)
if err != nil {
Expand Down
34 changes: 34 additions & 0 deletions cmd/agentbasedinstaller/register.go
Expand Up @@ -193,6 +193,40 @@ func RegisterExtraManifests(fsys fs.FS, ctx context.Context, log *log.Logger, cl
return nil
}

func GetCluster(ctx context.Context, log *log.Logger, bmInventory *client.AssistedInstall) (cluster *models.Cluster, err error) {
list, err := bmInventory.Installer.V2ListClusters(ctx, &installer.V2ListClustersParams{})
if err != nil {
return nil, err
}
clusterList := list.Payload
numClusters := len(clusterList)
if numClusters > 1 {
errorMessage := "found multiple clusters registered in assisted-service"
return nil, errors.New(errorMessage)
}
if numClusters == 0 {
return nil, errors.New("No clusters registered in assisted-service")
}
return clusterList[0], nil
}

func GetInfraEnv(ctx context.Context, log *log.Logger, bmInventory *client.AssistedInstall) (infraEnv *models.InfraEnv, err error) {
list, err := bmInventory.Installer.ListInfraEnvs(ctx, &installer.ListInfraEnvsParams{})
if err != nil {
return nil, err
}
infraEnvList := list.Payload
numInfraEnvs := len(infraEnvList)
if numInfraEnvs > 1 {
errorMessage := "found multiple infraenvs registered in assisted-service"
return nil, errors.New(errorMessage)
}
if numInfraEnvs == 0 {
return nil, errors.New("No infraenvs registered in assisted-service")
}
return infraEnvList[0], nil
}

// Read a Yaml file and unmarshal the contents
func getFileData(filePath string, output interface{}) error {

Expand Down