release new version step 2/2
[it/dev.git] / xapp_onboarder / xapp_onboarder / helm_controller / xApp_builder.py
index 0cd821b..da9f34a 100644 (file)
@@ -122,14 +122,13 @@ class xApp():
 
         for item in current_node.keys():
             if type(current_node.get(item)) is not dict:
-                current_node[item] = '{{ '+ helm_value_path +'.'+ item + ' | toJson }}'
+                current_node[item] = '{{ index '+ helm_value_path +' "'+ item + '" | toJson }}'
             else:
                 new_node_list = node_list.copy()
                 new_node_list.append(item)
                 self.recursive_convert_config_file(new_node_list)
 
 
-
     def append_config_to_config_map(self):
         with open(self.chart_workspace_path + '/' + self.chart_name + '/templates/appconfig.yaml', 'a') as outputfile:
             self.recursive_convert_config_file()
@@ -137,6 +136,7 @@ class xApp():
             indented_config_text = indent(config_file_json_text, 4)
             indented_config_text = re.sub(r"\"{{", '{{', indented_config_text)
             indented_config_text = re.sub(r"}}\"", '}}', indented_config_text)
+            indented_config_text = re.sub(r"\\", '', indented_config_text)
             outputfile.write("  config-file.json: |\n")
             outputfile.write(indented_config_text)
             outputfile.write("\n  schema.json: |\n")
@@ -145,13 +145,27 @@ class xApp():
             outputfile.write(indented_schema_text)
 
 
+# This is a work around for the bronze release to be backward compatible to the previous xapp standard helm template
+    def write_config_and_schema(self):
+        os.makedirs(self.chart_workspace_path + '/' + self.chart_name + '/descriptors')
+        os.makedirs(self.chart_workspace_path + '/' + self.chart_name + '/config')
+        with open(self.chart_workspace_path + '/' + self.chart_name + '/descriptors/schema.json', 'w') as outfile:
+            json.dump(self.schema_file, outfile)
+        with open(self.chart_workspace_path + '/' + self.chart_name + '/config/config-file.json', 'w') as outfile:
+            json.dump(self.config_file, outfile)
+
+
+
     def add_probes_to_deployment(self):
         with open(self.chart_workspace_path + '/' + self.chart_name + '/templates/deployment.yaml', 'a') as outputfile:
 
             for probes in ['readinessProbe', 'livenessProbe']:
                 if self.configmap_config_json_file.get(probes):
                     probe_definition = self.configmap_config_json_file.get(probes)
-                    probe_definition_yaml = yaml.dump(probe_definition)
+                    probe_definition_yaml = yaml.dump(probe_definition, width=1000)
+
+                    print(probe_definition_yaml)
+
                     indented_probe_definition_yaml = indent(probe_definition_yaml, 12)
                     indented_probe_definition_yaml = re.sub(r" \| toJson", '', indented_probe_definition_yaml)
                     indented_probe_definition_yaml = re.sub(r"'", '', indented_probe_definition_yaml)
@@ -188,13 +202,19 @@ class xApp():
                 err.stderr.decode("utf-8") +  "\n" + err.stdout.decode("utf-8") + ")", 400)
 
     def package_chart(self):
+        self.write_config_and_schema()
         self.append_config_to_config_map()
         self.append_config_to_values_yaml()
         self.add_probes_to_deployment()
         self.change_chart_name_version()
         self.helm_lint()
         try:
-            process = subprocess.run([self.helm_client_path, "package", self.chart_workspace_path + "/" + self.chart_name, "-d"
+
+            if settings.HELM_VERSION.startswith("3") == True: 
+                process = subprocess.run([self.helm_client_path, "package", self.chart_workspace_path + "/" + self.chart_name, "-d"
+                                 ,self.chart_workspace_path], stdout=PIPE, stderr=PIPE, check=True)
+            else:
+                process = subprocess.run([self.helm_client_path, "package", self.chart_workspace_path + "/" + self.chart_name, "-d"
                                ,self.chart_workspace_path,"--save=false"], stdout=PIPE, stderr=PIPE, check=True)
 
         except OSError as err: