aboutsummaryrefslogtreecommitdiffstats
path: root/extra
AgeCommit message (Expand)AuthorFilesLines
2020-05-18Add info in the SVGsebdet1-31/+31
2020-04-28Fix VNF entityId in policiessebdet1-31/+31
2020-04-23Fix entityId bugsebdet1-31/+31
2020-04-21Remove legacy password encryptionJulienBe2-33/+33
2020-04-03Fix pdp group info not there for legacy policysebdet1-31/+31
2020-04-01Rework the logssebdet1-31/+31
2020-03-27Fix frontend dockersebdet1-1/+1
2020-03-25Improve the policy model downloadsebdet1-31/+31
2020-03-24Improve metadata supportsebdet1-22/+45
2020-03-23Fix the CDS callssebdet1-15/+22
2020-03-16Fix the legacy policiessebdet1-15/+15
2020-03-13Fix the new tosca convertersebdet1-15/+15
2020-03-10Fix the tosca convertersebdet1-16/+16
2020-03-10Rework tosca convertersebdet1-15/+15
2020-03-09Rework tosca convertersebdet1-15/+15
2020-03-04Change json representation in op policysebdet2-23/+21
2020-02-27Fix bug in operational policysebdet1-17/+17
2020-02-26Add new dialog for policysebdet1-17/+17
2020-02-26Create get Pdp Groups flowxuegao1-0/+3
2020-02-25Fix Bug due to user management changessebdet1-17/+17
2020-02-25Modify the Uisebdet1-18/+18
2020-02-25Operational policy modificationsebdet2-20/+25
2020-02-17Fix the loop template viewsebdet1-10/+27
2020-02-14Changes include Metadata support, Upload tosca policy model and Loop Templateash742681-11/+20
2020-02-10Removal of ELKsebdet20-930/+0
2020-02-10Get policy in CsarInstallersebdet4-14/+14
2020-02-10Merge "Update get Dcae Status flow"Sébastien Determe1-1/+2
2020-02-10Update get Dcae Status flowxuegao1-1/+2
2020-02-05Update SSL Certs and docChrisC1-1/+1
2020-01-30Remove blueprintId in loopsebdet2-11/+10
2020-01-30Change the Csar installersebdet2-15/+13
2020-01-30Update deploy-loop routexuegao1-1/+2
2020-01-23Modify the template modelsebdet2-79/+109
2020-01-17Add fields on microservicesebdet2-14/+16
2020-01-16Add template and tosca model entities and repositoriesnrpandya2-15/+207
2019-12-18Move jsonRepresentationxuegao1-1/+1
2019-12-09Update service objectxuegao1-0/+1
2019-11-18Create Service objectxuegao1-1/+14
2019-10-09Fix start-backend scriptsebdet1-1/+2
2019-09-12Add scritp for DBsebdet9-5/+241
2019-09-11Checkstyle fixessebdet1-1/+1
2019-09-10Remove dead codesebdet5-801/+12
2019-09-06Removal of previous UIsebdet1-1/+1
2019-09-06Draft of React testsebdet2-0/+54
2019-08-28Fix frontend dockersebdet2-9/+13
2019-08-20Fix the docker composesebdet1-1/+1
2019-08-20Fix SQLsebdet1-1/+1
2019-08-19Draft of op policysebdet1-0/+1
2019-07-17add searchguardosgn422w1-1/+3
2019-06-05Rework the loop statesebdet1-0/+1
ass="o">= "BASE" def version(): return VERSION def usage(): print ('usage: ' + sys.argv[0] + ' [-f|--folder] vendor-heat-directory [-n|--name] manifest-name [-d|--description] manifet-description' ) def header(): print ("\nASDC Vendor manifest file generator, version " + version() + "\n") def getEnvVariables(value, defaultValue): try: eVal = os.environ[value] return eVal except KeyError: print ("Missing ${" + value + "} envirunment variable. Using default value: " + defaultValue) return defaultValue def getF(listFiles): print ("Analyzing files ...") foundABase = False files = listFiles jsons = {} lOfEnvs = {} lOfVolumes = {} lOfNetworks = {} lOfHeats = {} lOfShels = {} lOfArtifacts = {} for f in files: fullFilename = f[1] fObj = ManifestFileInfo(fullFilename) if fObj.isEnv(): lOfEnvs[fObj.file_name] = fObj elif fObj.isShell(): lOfShels[fObj.file_name] = fObj elif fObj.isVolume(): lOfVolumes[fObj.file_name] = fObj elif fObj.isNetwork(): lOfNetworks[fObj.file_name] = fObj elif (fObj.isYaml() and not fObj.isBase()): lOfHeats[fObj.file_name] = fObj elif fObj.isArtifact(): lOfArtifacts[fObj.file_name] = fObj elif (fObj.isBase() and fObj.isYaml()): foundABase = True lOfHeats[fObj.file_name] = fObj jsons['heats'] = lOfHeats jsons['envs'] = lOfEnvs jsons['shells'] = lOfShels jsons['volumes'] = lOfVolumes jsons['networks'] = lOfNetworks jsons['artifacts'] = lOfArtifacts if not foundABase: print (">>> Warning: No Base was found") return jsons def loadFilesToList(folder): print ("Analyzing files in folder: << " + folder + " >>") files = os.listdir(folder) listOfFiles = [] for f in files: if os.path.isdir(os.path.join(folder, f)): ConsoleLogger.warning("Sub folders are ignored by this script, you may want to remove it before archiving") continue filename, file_extension = os.path.splitext(f) if filename == 'MANIFEST': ConsoleLogger.warning("Your folder already contains a manifest file that will be overridden") continue listOfFiles.append([filename, f]) return listOfFiles def make(files): flist = [] dEnvs = {} dEnvs = files['envs'] dHeats = files['heats'] dNetworks = files['networks'] dVolumes = files['volumes'] dArtifacts = files['artifacts'] dShells = files['shells'] env_items = dEnvs.items() for fileItem in env_items: env_name = fileItem[1].file_name env_base = fileItem[1].base_file_name if env_name in dHeats: dHeats[env_name].add(fileItem[1]) continue if env_name in dNetworks.items(): dNetworks[env_name].add(fileItem[1]) continue if env_name in dVolumes.items(): dVolumes[env_name[0]].add(env_name[1]) continue for fName in dHeats: heat_base = dHeats[fName].base_file_name if env_base in heat_base: dHeats[fName].add(dEnvs[env_name]) break else: for fName in dNetworks: net_base = dNetworks[fName].base_file_name if env_base in net_base: dNetworks[fName].add(dEnvs[env_name]) break else: for fName in dVolumes: vol_base = dVolumes[fName].base_file_name if env_base in vol_base: dVolumes[fName].add(dEnvs[env_name]) break else: flist.append(dEnvs[env_name]) for fName in dVolumes: vol_base = dVolumes[fName].base_file_name for hfName in dHeats: heat_base = dHeats[hfName].base_file_name if heat_base in vol_base: dHeats[hfName].add(dVolumes[fName]) break else: flist.append(dVolumes[fName]) for fName in dNetworks: net_base = dNetworks[fName].base_file_name for hfName in dHeats: heat_base = dHeats[hfName].base_file_name if heat_base in net_base: dHeats[hfName].add(dNetworks[fName]) break else: flist.append(dNetworks[fName]) for fName in dHeats: flist.append(dHeats[fName]) for fName in dShells: flist.append(dShells[fName]) for fName in dArtifacts: flist.append(dArtifacts[fName]) print ("\n------------------------------------------------------------\n") return flist def generate(folder, name, description): print ("Checking envirunment variables ...") global globalVolumeVal globalVolumeVal = getEnvVariables("VOLUME", globalVolumeVal) global globalNetworkVal globalNetworkVal = getEnvVariables("NETWORK", globalNetworkVal) global globalBaseVal globalBaseVal = getEnvVariables("BASE", globalBaseVal) YamlTabCleaner(folder).cleanYamlTabs() print ("Generating manifest file ...") jsons = getF(loadFilesToList(folder)) lFiles = make(jsons) manifest = Manifest(name, description, '1.0', lFiles) output_json = json.dumps(manifest, default=jdefault, indent=4, sort_keys=False) f = open(os.path.join(folder, 'MANIFEST.json'), 'w') f.write(output_json) print("MANIFEST file created") ################ def jdefault(obj): if hasattr(obj, '__json__'): return obj.__json__() else: return obj.__dict__ class ManifestFileInfo(object): def __init__(self, filename): self.name = filename self.base = 'false' self.data = [] self.file_name, self.file_extension = os.path.splitext(filename) self.base_file_name = re.sub(VERSION_DELIMITER_PATTERN, '', self.file_name) self.base_file_name = re.sub(VERSION_DELIMITER_PATTERN2, '', self.base_file_name) if self.isEnv(): self.heat_type = Types.ENV elif self.isShell(): self.heat_type = Types.SHELL elif self.isVolume(): self.heat_type = Types.VOL elif self.isNetwork(): self.heat_type = Types.NET elif self.isYaml() and not self.isBase(): self.heat_type = Types.HEAT elif self.isArtifact(): self.heat_type = Types.OTHER elif (self.isBase() and self.isYaml()): self.heat_type = Types.HEAT self.base = 'true' def set(self, data): self.data = data def add(self, item): self.data.append(item) def isYaml(self): return any(val in self.file_extension.lower() for val in YAML_EXT) def isEnv(self): return self.file_extension.lower() == ENV_EXT.lower() def isShell(self): return self.file_extension.lower() == SHELL_EXT.lower() def isVolume(self): res = globalVolumeVal.lower() in self.file_name.lower() return res def isNetwork(self): res = globalNetworkVal.lower() in self.file_name.lower() return res def isBase(self): res = globalBaseVal.lower() in self.file_name.lower() return res def isArtifact(self): return (not self.isBase() and not self.isVolume() and not self.isNetwork() and not self.isEnv()) def isHEAT(self): return ((self.heat_type == Types.HEAT) | (self.heat_type == Types.BASE) | (self.heat_type == Types.NET) | ( self.heat_type == Types.VOL)) def __json__(self): dict = OrderedDict( [('file', self.name), ('type', self.heat_type)]) if self.isHEAT(): dict['isBase'] = self.base if self.data != []: dict['data'] = self.data return dict class Manifest(object): def __init__(self, name, description, version, data): self.name = name self.description = description self.version = version self.data = data def add(self, data): self.data.append(data) def __json__(self): return OrderedDict([('name', self.name), ('description', self.description), ('data', self.data)]) class YamlTabCleaner(object): def __init__(self, folder): self.folder = folder def replaceTabs(self, sourceFile, targetFile): with open(sourceFile, "rt") as fin: if '\t' in fin.read(): print("\'tab\' character was found in the file: " + sourceFile + "\na clean version of the file can be found under \'clean\' folder") target = os.path.dirname(targetFile) if not os.path.exists(target): os.makedirs(target) fin.seek(0) with open(targetFile, "wt") as fout: for line in fin: fout.write(line.replace('\t', ' ')) def cleanYamlTabs(self): included_extenstions = ['yml', 'yaml'] files = [fn for fn in os.listdir(self.folder) if any(fn.endswith(ext) for ext in included_extenstions)] target = os.path.join(self.folder, "clean") for file in files: self.replaceTabs(os.path.join(self.folder, file), os.path.join(target, file)) class ConsoleLogger(object): @classmethod def error(cls, message): print(">>> Error: " + message) @classmethod def warning(cls, message): print(">>> Warning: " + message) @classmethod def info(cls, message): print(">>> Info: " + message) def enum(**named_values): return type('Enum', (), named_values) ################ def main(argv): action = '' folderName = '.' name = '' description = '' version = '' try: opts, args = getopt.getopt(argv, "h:f:n:d", ["folder=", "name=", "description=", ]) except getopt.GetoptError as err: # print help information and exit: print ('>>>>' + str(err)) usage() sys.exit(2) for opt, arg in opts: if opt == '-h': usage() sys.exit() elif opt in ('-f', '--folder'): action = 'generate' if not arg: print ("Error: missing heat files directory") usage() sys.exit(2) else: folderName = arg elif opt in ('-n', '--name'): name = arg elif opt in ('-d', '--description'): description = arg else: usage() if action == 'generate': generate(folderName, name, description) sys.exit() else: usage() if __name__ == "__main__": header() Types = enum(HEAT='HEAT', BASE='HEAT_BASE', NET='HEAT_NET', VOL='HEAT_VOL', ENV='HEAT_ENV', SHELL='SHELL', OTHER='OTHER') main(sys.argv[1:])