From 30397dfd556121f728b2b6f9b11160afcf5c066c Mon Sep 17 00:00:00 2001 From: Andrew Bays Date: Wed, 13 Nov 2019 07:16:56 -0500 Subject: [PATCH] Add missing requirements directory to automation Change-Id: Ic4ca3768ada3a794849f898ff1525e14fd9d956a --- pkg/automation/baremetal.go | 28 ++++++++++++++++++++++++++++ 1 file changed, 28 insertions(+) diff --git a/pkg/automation/baremetal.go b/pkg/automation/baremetal.go index 2de36a8..4661626 100644 --- a/pkg/automation/baremetal.go +++ b/pkg/automation/baremetal.go @@ -120,6 +120,10 @@ func (bad baremetalAutomatedDeployment) PrepareAutomation(requirements map[strin return fmt.Errorf("baremetalAutomatedDeployment: PrepareAutomation: error writing destination site config file: %s", err) } + // Create "requirements" directory in the automation repo (needed for later commands) + requirementsPath := fmt.Sprintf("%s/requirements", automationDestination) + os.Mkdir(requirementsPath, 0755) + log.Printf("baremetalAutomatedDeployment: PrepareAutomation: finished downloading baremetal automation repo (%s)\n", automationRemoteSource) log.Printf("baremetalAutomatedDeployment: PrepareAutomation: injecting version selections into automation repo...\n") @@ -257,6 +261,30 @@ func (bad baremetalAutomatedDeployment) FinalizeAutomationPreparation() error { log.Println("baremetalAutomatedDeployment: FinalizeAutomationPreparation: finished running automation host preparation script") + // Copy required versions of oc and openshift-install into the automation repo's "requirements" + // directory so that they're used with later automation calls + log.Printf("baremetalAutomatedDeployment: FinalizeAutomationPreparation: injecting OpenShift binaries for automation repo...\n") + + requirementsSource := fmt.Sprintf("%s/%s/requirements", bad.siteBuildPath, bad.siteName) + requirementsDestination := fmt.Sprintf("%s/%s/baremetal_automation/requirements/.", bad.siteBuildPath, bad.siteName) + + for _, requirement := range []string{"oc", "openshift-install"} { + requirementFullPath := fmt.Sprintf("%s/%s", requirementsSource, requirement) + + _, err := os.Stat(requirementFullPath) + + if err != nil { + // Requirement was missing, so warn the user (in this case, automation will use + // the binary pulled by the call to prep_bm_host.sh above) + log.Printf("WARNING: '%s' requirement not specified; automation will use the default for its selected version!", requirement) + continue + } + + utils.ExecuteCommand("", nil, true, false, "cp", requirementFullPath, requirementsDestination) + } + + log.Printf("baremetalAutomatedDeployment: FinalizeAutomationPreparation: finished injecting OpenShift binaries for automation repo\n") + return nil } -- 2.16.6