tools/service-catalog.py (47 lines of code) (raw):

#!/usr/bin/python3 # Copyright 2023 Google LLC # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # https://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. import os import sys import glob import shutil from colorama import Fore, Back, Style def main(): # List existing RADLab Modules module = list_modules() sc_path = os.getcwd() + '/radlab-service-catalog' # Creating RadLab Service Catalog Package folder os.system('mkdir -p ' + sc_path) # Pull specific folder from RADLab GitHub Repo shutil.copytree(os.path.dirname(os.getcwd()) + '/modules/'+ module, sc_path + '/' + module) for filename in os.listdir(sc_path + '/' + module): f = os.path.join(sc_path + '/' + module, filename) # Remove all non.tf files from the root of the module if os.path.isfile(f) and os.path.splitext(f)[1] != ".tf": os.remove(f) # Zip the module in such a way that .tf files are at the root of the zipped file os.system('cd ' + sc_path + '/' + module + '; zip -r ' + module + '.zip *') # Move thezip package to the RADLab Service Catalog Folder os.system('mv ' + sc_path + '/' + module + '/' + module + '.zip ' + sc_path ) # Remove the downloaded module os.system('rm -r ' + sc_path + '/' + module) # Printing path to RADLab's Service Catalog Solution. print("Please find the zipped solution here: " + sc_path + '/' + module +'.zip') def list_modules(): modules = [s.replace(os.path.dirname(os.getcwd()) + '/modules/', "") for s in glob.glob(os.path.dirname(os.getcwd()) + '/modules/*')] modules = sorted(modules) c = 1 print_list = '' # Printing List of Modules for module in modules: first_line = '' # Fetch Module name try: with open(os.path.dirname(os.getcwd()) + '/modules/'+ module + '/README.md', "r") as file: first_line = file.readline() except: print(Fore.RED +'Missing README.md file for module: ' + module + Style.RESET_ALL) print_list = print_list + "["+ str(c) +"] " + first_line.strip() + Fore.GREEN + " (" +module + ")\n" + Style.RESET_ALL c = c+1 # Selecting Module try: selected_module = input("\nList of available RAD Lab modules:\n"+print_list+"["+ str(c) +"] Exit\n"+ Fore.YELLOW + Style.BRIGHT + "Choose a number for the RAD Lab Module"+ Style.RESET_ALL + ': ').strip() selected_module = int(selected_module) except: sys.exit(Fore.RED + "\nInvalid module") # Validating User Module selection if selected_module > 0 and selected_module < c: # print(modules) module_name = modules[selected_module-1] print("\nRAD Lab Module (selected) : "+ Fore.GREEN + Style.BRIGHT +module_name+ Style.RESET_ALL) return module_name elif selected_module == c: sys.exit(Fore.GREEN + "\nExiting Installer") else: sys.exit(Fore.RED + "\nInvalid module") if __name__ == '__main__': main()