From 754d27a81399993802bc96c185095bc88620990f Mon Sep 17 00:00:00 2001
From: Christos Tranoris <tranoris@ece.upatras.gr>
Date: Thu, 26 Sep 2024 22:37:01 +0300
Subject: [PATCH] adding new spec param for values yaml

---
 .settings/org.eclipse.core.resources.prefs    |  8 +--
 .../sylva/SylvaMDResourceOperator.java        | 27 +++++++++-
 .../sylva/SylvaMDResourceSpec.java            |  1 +
 .../resources/SylvaMDResourceOperator.yaml    |  2 +
 .../resources/crorder_example_valuesyaml.yaml | 54 +++++++++++++++++++
 .../values.sylvamd.configmaps.osl.etsi.org    | 39 --------------
 6 files changed, 86 insertions(+), 45 deletions(-)
 create mode 100644 src/main/resources/crorder_example_valuesyaml.yaml

diff --git a/.settings/org.eclipse.core.resources.prefs b/.settings/org.eclipse.core.resources.prefs
index 18308de..29abf99 100644
--- a/.settings/org.eclipse.core.resources.prefs
+++ b/.settings/org.eclipse.core.resources.prefs
@@ -1,6 +1,6 @@
 eclipse.preferences.version=1
-encoding//src/main/java=utf-8
-encoding//src/main/resources=utf-8
-encoding//src/test/java=utf-8
-encoding//src/test/resources=utf-8
+encoding//src/main/java=UTF-8
+encoding//src/main/resources=UTF-8
+encoding//src/test/java=UTF-8
+encoding//src/test/resources=UTF-8
 encoding/<project>=UTF-8
diff --git a/src/main/java/org/etsi/osl/controllers/sylva/SylvaMDResourceOperator.java b/src/main/java/org/etsi/osl/controllers/sylva/SylvaMDResourceOperator.java
index 9141172..f290bae 100644
--- a/src/main/java/org/etsi/osl/controllers/sylva/SylvaMDResourceOperator.java
+++ b/src/main/java/org/etsi/osl/controllers/sylva/SylvaMDResourceOperator.java
@@ -371,8 +371,15 @@ public class SylvaMDResourceOperator {
     createEmptyFile(deploymentFolder + "/secrets.yaml");
 
     // Step 3: Modify values.yaml using SylvaMDResourceSpec
-    populateAndModifyValuesYaml(namespace, "values.sylvamd.configmaps.osl.etsi.org",
-        deploymentFolder + "/values.yaml", resourceClone.getSpec());
+    
+    if ( resourceClone.getSpec().getValuesyaml() != null ) {
+      populateFileFromText(namespace, resourceClone.getSpec().getValuesyaml(),
+          deploymentFolder + "/values.yaml");      
+    }else {
+      populateAndModifyValuesYaml(namespace, "values.sylvamd.configmaps.osl.etsi.org",
+          deploymentFolder + "/values.yaml", resourceClone.getSpec());      
+    }
+    
 
     // Step 4: Populate kustomization.yaml and secrets.yaml from ConfigMaps
     populateFileFromConfigMap(namespace, "kustomization.sylvamd.configmaps.osl.etsi.org",
@@ -487,6 +494,22 @@ public class SylvaMDResourceOperator {
       log.error("Error writing to file: {}", filePath, e);
     }
   }
+  
+
+  private void populateFileFromText(String namespace, String text, String filePath) {
+    try {
+
+      if (text != null ) {
+        String content = text;
+        Files.write(Paths.get(filePath), content.getBytes());
+        log.info("Populated file {} from text {}", filePath, text);
+      } else {
+        log.error("Failed to write text: {}", text);
+      }
+    } catch (IOException e) {
+      log.error("Error writing to file: {}", filePath, e);
+    }
+  }
 
   // Execute the shell script to apply the workload with the working directory set to
   // /opt/sylva-core
diff --git a/src/main/java/org/etsi/osl/controllers/sylva/SylvaMDResourceSpec.java b/src/main/java/org/etsi/osl/controllers/sylva/SylvaMDResourceSpec.java
index 742740b..25d40eb 100644
--- a/src/main/java/org/etsi/osl/controllers/sylva/SylvaMDResourceSpec.java
+++ b/src/main/java/org/etsi/osl/controllers/sylva/SylvaMDResourceSpec.java
@@ -26,6 +26,7 @@ public class SylvaMDResourceSpec {
 
   private int clusterControlPlaneReplicas;
   private int clusterMd0Replicas;
+  private String valuesyaml;
   
   
 }
diff --git a/src/main/resources/SylvaMDResourceOperator.yaml b/src/main/resources/SylvaMDResourceOperator.yaml
index 6d3308b..46cab1a 100644
--- a/src/main/resources/SylvaMDResourceOperator.yaml
+++ b/src/main/resources/SylvaMDResourceOperator.yaml
@@ -20,6 +20,8 @@ spec:
             spec:
               type: object
               properties:
+                valuesyaml:
+                  type: string
                 clusterControlPlaneReplicas:
                   type: string
                 clusterMd0Replicas:
diff --git a/src/main/resources/crorder_example_valuesyaml.yaml b/src/main/resources/crorder_example_valuesyaml.yaml
new file mode 100644
index 0000000..5b5c64e
--- /dev/null
+++ b/src/main/resources/crorder_example_valuesyaml.yaml
@@ -0,0 +1,54 @@
+apiVersion: controllers.osl.etsi.org/v1alpha1
+kind: SylvaMDResource
+metadata:
+  name: wc67890-bbccdd
+spec:
+  valuesyaml: |
+    ---
+    cluster:
+
+      capi_providers:
+        infra_provider: capo
+        bootstrap_provider: cabpr
+
+      capo:
+        image_key: ubuntu-jammy-plain-rke2-1-28-8  # OpenStack Glance image (key of image in sylva_diskimagebuilder_images/os_images)
+        ssh_key_name: sylva # OpenStack Nova SSH keypair is provided by runner context in CI
+        network_id: 7b490a0c-0f5c-4475-a436-e4bcbecc7f5e # OpenStack Neutron network id is provided by runner context in CI
+        flavor_name: cpu8.m16384.d40g
+        control_plane_az:
+          - nova
+
+      machine_deployments:
+        md0:
+          replicas: 2
+          capo:
+            failure_domain: nova
+            flavor_name: cpu8.m16384.d40g
+
+      control_plane_replicas: 1
+
+    openstack:
+      control_plane_affinity_policy: soft-anti-affinity
+      storageClass:
+        name: "rbd1"
+        type: "rbd1"
+
+    proxies:
+      http_proxy: ""
+      https_proxy: ""
+      no_proxy: ""
+
+    ntp:
+      enabled: false
+      servers:
+      # - 1.2.3.4
+      # - 1.2.3.5
+
+    sylva_diskimagebuilder_images:
+     ubuntu-jammy-plain-rke2-1-28-8:
+        enabled: true
+
+     ubuntu-jammy-plain-kubeadm-1-28-9:
+        enabled: true
+
diff --git a/src/main/resources/values.sylvamd.configmaps.osl.etsi.org b/src/main/resources/values.sylvamd.configmaps.osl.etsi.org
index 68743f3..ccc92b3 100644
--- a/src/main/resources/values.sylvamd.configmaps.osl.etsi.org
+++ b/src/main/resources/values.sylvamd.configmaps.osl.etsi.org
@@ -53,42 +53,3 @@ data:
      ubuntu-jammy-plain-kubeadm-1-28-9:
         enabled: true
 
-    units:
-      coredns:
-        kustomization_spec:
-          patches:
-            - target:
-                kind: ConfigMap
-              patch: |
-                - op: replace
-                  path: /data/Corefile
-                  value: |
-                        ${CLUSTER_DOMAIN}:53 {
-                            errors
-                            forward ${CLUSTER_DOMAIN} ${CLUSTER_VIRTUAL_IP}
-                        }
-                        .:53 {
-                            errors
-                            health {
-                               lameduck 5s
-                            }
-                            ready
-                            kubernetes cluster.local in-addr.arpa ip6.arpa {
-                               pods insecure
-                               fallthrough in-addr.arpa ip6.arpa
-                               ttl 30
-                            }
-                            prometheus :9153
-                            forward . /etc/resolv.conf {
-                               max_concurrent 1000
-                            }
-                            cache 60
-                            loop
-                            reload
-                            loadbalance
-                            hosts {
-                              10.1.3.2 glance.pnet nova.pnet neutron.pnet horizon.pnet cinder.pnet novncproxy.pnet keystone.pnet heat-api.pnet
-                              fallthrough
-                              fallthrough
-                            }
-                        }
-- 
GitLab