Add in configmap for KUD variables to bpa-operator
[icn.git] / cmd / bpa-operator / pkg / controller / provisioning / provisioning_controller.go
index 5b5cc41..da0c18d 100644 (file)
@@ -192,7 +192,7 @@ func (r *ReconcileProvisioning) Reconcile(request reconcile.Request) (reconcile.
         mastersList := provisioningInstance.Spec.Masters
         workersList := provisioningInstance.Spec.Workers
         kudPlugins := provisioningInstance.Spec.KUDPlugins
-
+        podSubnet := provisioningInstance.Spec.PodSubnet
 
         bareMetalHostList, _ := listBareMetalHosts(r.bmhClient)
         virtletVMList, _ := listVirtletVMs(r.clientset)
@@ -254,9 +254,12 @@ func (r *ReconcileProvisioning) Reconcile(request reconcile.Request) (reconcile.
                                err = fmt.Errorf("IP address not found for host with MAC address %s \n", masterMAC)
                                return reconcile.Result{}, err
                            }
+                           allString += masterLabel + "  ansible_ssh_host="  + hostIPaddress + " ansible_ssh_port=22" + "\n"
                       }
 
-                       allString += masterLabel + "  ansible_ssh_host="  + hostIPaddress + " ansible_ssh_port=22" + "\n"
+                       if clusterType == "virtlet-vm" {
+                           allString += masterLabel + "  ansible_ssh_host="  + hostIPaddress + " ansible_ssh_port=22" + " ansible_ssh_user=root" + " ansible_ssh_pass=root" + "\n"
+                       }
                        masterString += masterLabel + "\n"
                        clusterData[masterTag + masterLabel] = hostIPaddress
 
@@ -334,11 +337,13 @@ func (r *ReconcileProvisioning) Reconcile(request reconcile.Request) (reconcile.
                                                    fmt.Errorf("IP address not found for host with MAC address %s \n", workerMAC)
                                                    return reconcile.Result{}, err
                                                }
+                                               allString += workerLabel + "  ansible_ssh_host="  + hostIPaddress + " ansible_ssh_port=22" + "\n"
                                           }
                                            fmt.Printf("%s : %s \n", hostIPaddress, workerMAC)
 
-
-                                           allString += workerLabel + "  ansible_ssh_host="  + hostIPaddress + " ansible_ssh_port=22" + "\n"
+                                           if clusterType == "virtlet-vm" {
+                                               allString += masterLabel + "  ansible_ssh_host="  + hostIPaddress + " ansible_ssh_port=22" + " ansible_ssh_user=root" + " ansible_ssh_pass=root" + "\n"
+                                           }
                                            workerString += workerLabel + "\n"
                                           clusterData[workerTag + workerLabel] = hostIPaddress
 
@@ -409,6 +414,7 @@ func (r *ReconcileProvisioning) Reconcile(request reconcile.Request) (reconcile.
            return reconcile.Result{}, err
         }
 
+        if clusterType != "virtlet-vm" {
         _, err = hostFile.NewRawSection("ovn-central", masterString)
         if err != nil {
            fmt.Printf("Error occured while creating section \n %v", err)
@@ -426,7 +432,7 @@ func (r *ReconcileProvisioning) Reconcile(request reconcile.Request) (reconcile.
            fmt.Printf("Error occured while creating section \n %v", err)
            return reconcile.Result{}, err
         }
-
+        }
         _, err = hostFile.NewRawSection("k8s-cluster:children", "kube-node\n" + "kube-master")
         if err != nil {
            fmt.Printf("Error occured while creating section \n %v", err)
@@ -438,7 +444,7 @@ func (r *ReconcileProvisioning) Reconcile(request reconcile.Request) (reconcile.
         hostFile.SaveTo(iniHostFilePath)
 
         //Install KUD
-        err = createKUDinstallerJob(clusterName, request.Namespace, clusterLabel, kudPlugins,  r.clientset)
+        err = createKUDinstallerJob(clusterName, request.Namespace, clusterLabel,  podSubnet, kudPlugins,  r.clientset)
         if err != nil {
            fmt.Printf("Error occured while creating KUD Installer job for cluster %v\n ERROR: %v", clusterName, err)
            return reconcile.Result{}, err
@@ -619,12 +625,15 @@ func getConfigMapData(namespace, clusterName string, clientset kubernetes.Interf
 }
 
 //Function to create job for KUD installation
-func createKUDinstallerJob(clusterName, namespace string, labels map[string]string, kudPlugins []string, clientset kubernetes.Interface) error{
+func createKUDinstallerJob(clusterName, namespace string, labels map[string]string, podSubnet string, kudPlugins []string, clientset kubernetes.Interface) error{
 
     var backOffLimit int32 = 0
     var privi bool = true
 
     installerString := " ./installer --cluster " + clusterName
+    if len(podSubnet) > 0 {
+       installerString += " --network " + podSubnet
+    }
 
     // Check if any plugin was specified
     if len(kudPlugins) > 0 {
@@ -669,6 +678,11 @@ func createKUDinstallerJob(clusterName, namespace string, labels map[string]stri
                                                         },
 
                                            },
+                                           EnvFrom: []corev1.EnvFromSource{
+                                                   {
+                                                             ConfigMapRef: &corev1.ConfigMapEnvSource{LocalObjectReference: corev1.LocalObjectReference{Name: "kud-installer"}},
+                                                   },
+                                           },
                                            Command: []string{"/bin/sh","-c"},
                                            Args: []string{"cp -r /.ssh /root/; chmod -R 600 /root/.ssh;" + installerString},
                                            SecurityContext: &corev1.SecurityContext{
@@ -867,8 +881,8 @@ func listVirtletVMs(clientset kubernetes.Interface) ([]VirtletVM, error) {
                         podStatusJson, _ := json.Marshal(pod.Status)
                         json.Unmarshal([]byte(podStatusJson), &podStatus)
 
-                        if runtime  == "virtlet.cloud" && podStatus.Phase == "Running" && podAnnotation["v1.multus-cni.io/default-network"] != nil {
-                                ns := podAnnotation["v1.multus-cni.io/default-network"].(string)
+                        if runtime  == "virtlet.cloud" && podStatus.Phase == "Running" && podAnnotation["k8s.v1.cni.cncf.io/networks-status"] != nil {
+                                ns := podAnnotation["k8s.v1.cni.cncf.io/networks-status"].(string)
                                 json.Unmarshal([]byte(ns), &podDefaultNetStatus)
 
                                 vmPodList = append(vmPodList, VirtletVM{podStatus.PodIP, podDefaultNetStatus[0].Mac})