Add missing requirements directory to automation 68/1968/2
authorAndrew Bays <andrew.bays@gmail.com>
Wed, 13 Nov 2019 12:16:56 +0000 (07:16 -0500)
committerAndrew Bays <andrew.bays@gmail.com>
Thu, 14 Nov 2019 15:04:47 +0000 (10:04 -0500)
Change-Id: Ic4ca3768ada3a794849f898ff1525e14fd9d956a

pkg/automation/baremetal.go

index 2de36a8..4661626 100644 (file)
@@ -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
 }