def dropdownData(profile): dropdown_dir = os.path.abspath( os.path.join(bp.static_folder, 'json', 'dropdown')) shipped_dropdown_file = os.path.abspath( os.path.join(dropdown_dir, 'dropdown.json')) # shipped_dropdown_file = os.path.abspath(os.path.join(bp.static_folder, 'json', 'dropdown', 'dropdown.json')) profile_dropdown_dir = os.path.abspath( os.path.join(dropdown_dir, 'profiles')) profile_dropdown_file = os.path.abspath( os.path.join(profile_dropdown_dir, f'{profile}.json')) # Check if profile specific dropdown file exists if not use the default if request.method == 'GET': if os.path.exists(profile_dropdown_file): dropdown_file = profile_dropdown_file logger.info(f'Loading Dropdown file {dropdown_file}') dropdown_json = readJsonFile(dropdown_file) else: dropdown_file = shipped_dropdown_file logger.info(f'Loading Dropdown file {dropdown_file}') dropdown_json = readJsonFile(dropdown_file) dropdown_json["shipped"] = True dropdown_json["default"] = True return dropdown_json elif request.method == 'POST': logger.info(f'Saving Dropdown file {profile_dropdown_file}') writeJsonFile(request.json, profile_dropdown_file) return request.json else: return 'Unknown Method', 500
def processWorkflow(args): try: okit_json = readJsonFile(args["json"]) if args['format'].lower() == 'terraform': generator = OCITerraformGenerator(args['templateroot'], args["outputdir"], okit_json, False) elif args['format'].lower() == 'ansible': generator = OCIAnsibleGenerator(args['templateroot'], args["outputdir"], okit_json, False) elif args['format'].lower() == 'resource-manager': generator = OCIResourceManagerGenerator(args['templateroot'], args["outputdir"], okit_json, False) else: logger.warn('Not a Valid Output Format : {0!s:s}'.format( args['format'])) logger.warn('Valid Options :') logger.warn(' ansible : Generate Ansible Playbook') logger.warn(' terraform : Generate Terraform Files') logger.warn( ' resource-manager : Generate Resource Manager Terraform Files' ) raise Exception() generator.generate() generator.writeFiles() except Exception: pass return
def dropdownData(): dropdown_file = os.path.abspath(os.path.join(bp.static_folder, 'json', 'dropdown.json')) if request.method == 'GET': dropdown_json = readJsonFile(dropdown_file) return dropdown_json elif request.method == 'POST': writeJsonFile(request.json, dropdown_file) return request.json else: return 'Unknown Method', 500
def get_template_entry(root, path, json_file): # json_file = os.path.join(path, template_file) okit_template = { 'path': path, 'json': json_file, 'id': json_file.replace('.', '_').replace('/', '_') } try: filename = os.path.join(root, okit_template['path'], okit_template['json']) template_json = readJsonFile(filename) logger.debug('Template Json : {0!s:s}'.format(template_json)) okit_template['name'] = template_json['title'] okit_template['description'] = template_json.get( 'description', template_json['title']) okit_template['description'] = template_json['title'] except Exception as e: logger.debug(e) return okit_template
def build_categories(path, key, category, templates): category['name'] = str(key.split('/')[0]).replace('_', ' ').title() if len(key.split('/')) > 1: child_key = '/'.join(key.split('/')[1:]) child_category = category['children'].get( str(child_key.split('/')[0]).replace('_', ' ').title(), { 'path': path, 'name': '', 'templates': [], 'children': {} }) build_categories(path, child_key, child_category, templates) category['children'][str(child_key.split('/')[0]).replace( '_', ' ').title()] = child_category else: category['templates'] = templates category['templates'] = [] for template_file in sorted(templates): try: json_file = os.path.join(category['path'], template_file) okit_template = { 'json': json_file, 'id': json_file.replace('.', '_').replace('/', '_') } filename = os.path.join(bp.static_folder, 'templates', okit_template['json']) template_json = readJsonFile(filename) logger.debug('Template Json : {0!s:s}'.format(template_json)) okit_template['title'] = template_json['title'] okit_template['description'] = template_json.get( 'description', template_json['title']) category['templates'].append(okit_template) except Exception as e: logger.debug(e) logger.debug(category) return category
def designer(): # Read Artifact Model Specific JavaScript Files artefact_model_js_files = sorted( os.listdir(os.path.join(bp.static_folder, 'model', 'js', 'artefacts'))) # Read Artifact View Specific JavaScript Files artefact_view_js_files = sorted( os.listdir( os.path.join(bp.static_folder, 'view', 'designer', 'js', 'artefacts'))) # Get Palette Icon Groups / Icons svg_files = [] svg_icon_groups = {} # Read Files for (dirpath, dirnames, filenames) in os.walk(os.path.join(bp.static_folder, 'palette')): logger.debug('dirpath : {0!s:s}'.format(dirpath)) logger.debug('dirnames : {0!s:s}'.format(dirnames)) logger.debug('filenames : {0!s:s}'.format(filenames)) if os.path.basename(dirpath) != 'palette': svg_files.extend([ os.path.join(os.path.basename(dirpath), f) for f in filenames ]) svg_icon_groups[os.path.basename(dirpath)] = filenames else: svg_files.extend(filenames) logger.debug('Files Walk : {0!s:s}'.format(svg_files)) logger.debug('SVG Icon Groups {0!s:s}'.format(svg_icon_groups)) palette_icon_groups = [] for key in sorted(svg_icon_groups.keys()): palette_icon_group = {'name': str(key).title(), 'icons': []} for palette_svg in sorted(svg_icon_groups[key]): palette_icon = { 'svg': os.path.join(key, palette_svg), 'title': os.path.basename(palette_svg).split('.')[0].replace('_', ' ') } palette_icon_group['icons'].append(palette_icon) palette_icon_groups.append(palette_icon_group) logger.debug('Palette Icon Groups : {0!s:s}'.format(palette_icon_groups)) logJson(palette_icon_groups) # Read Fragment Files fragment_files = os.listdir( os.path.join(bp.static_folder, 'fragments', 'svg')) fragment_icons = [] for fragment_svg in sorted(fragment_files): logger.info('Fragment : {0!s:s}'.format(fragment_svg)) logger.info('Fragment full : {0!s:s}'.format( os.path.join(bp.static_folder, 'fragments', 'svg', fragment_svg))) fragment_icon = { 'svg': fragment_svg, 'title': os.path.basename(fragment_svg).split('.')[0].replace('_', ' ').title() } logger.info('Icon : {0!s:s}'.format(fragment_icon)) fragment_icons.append(fragment_icon) # Walk Template directory Structure template_files = [] template_dirs = {} logger.debug('Walking the template directories') rootdir = os.path.join(bp.static_folder, 'templates') for (dirpath, dirnames, filenames) in os.walk(rootdir, followlinks=True): logger.debug('dirpath : {0!s:s}'.format(dirpath)) logger.debug('dirnames : {0!s:s}'.format(dirnames)) logger.debug('filenames : {0!s:s}'.format(filenames)) relpath = os.path.relpath(dirpath, rootdir) logger.debug('Relative Path : {0!s:s}'.format(relpath)) template_files.extend([os.path.join(relpath, f) for f in filenames]) template_dirs[relpath] = filenames logger.debug('Files Walk : {0!s:s}'.format(template_files)) logger.debug('Template Dirs {0!s:s}'.format(template_dirs)) template_groups = [] for key in sorted(template_dirs.keys()): template_group = { 'name': str(key).replace('_', ' ').title(), 'templates': [] } for template_file in sorted(template_dirs[key]): try: okit_template = { 'json': os.path.join(key, template_file), 'id': template_file.replace('.', '_') } filename = os.path.join(bp.static_folder, 'templates', key, template_file) template_json = readJsonFile(filename) logger.debug('Template Json : {0!s:s}'.format(template_json)) okit_template['title'] = template_json['title'] okit_template['description'] = template_json.get( 'description', template_json['title']) template_group['templates'].append(okit_template) except Exception as e: logger.debug(e) template_groups.append(template_group) logger.debug('Template Groups {0!s:s}'.format(template_groups)) logJson(template_groups) config_sections = {"sections": readConfigFileSections()} logger.info('Config Sections {0!s:s}'.format(config_sections)) #Render The Template return render_template('okit/okit_designer.html', artefact_model_js_files=artefact_model_js_files, artefact_view_js_files=artefact_view_js_files, palette_icon_groups=palette_icon_groups, fragment_icons=fragment_icons, okit_templates_groups=template_groups)
def designer(): # Test if developer mode developer_mode = (request.args.get('developer', default='false') == 'true') if developer_mode: logger.info( "<<<<<<<<<<<<<<<<<<<<<<<<<< Developer Mode >>>>>>>>>>>>>>>>>>>>>>>>>>" ) # Test if experimental mode experimental_mode = (request.args.get('experimental', default='false') == 'true') if experimental_mode: logger.info( "<<<<<<<<<<<<<<<<<<<<<<<<<< Experimental Mode >>>>>>>>>>>>>>>>>>>>>>>>>>" ) # Read Artifact Model Specific JavaScript Files artefact_model_js_files = sorted( os.listdir(os.path.join(bp.static_folder, 'model', 'js', 'artefacts'))) # Read Artifact View Specific JavaScript Files if os.path.exists(os.path.join( bp.static_folder, 'view', 'js', 'artefacts')) and os.path.isdir( os.path.join(bp.static_folder, 'view', 'js', 'artefacts')): artefact_view_js_files = sorted( os.listdir( os.path.join(bp.static_folder, 'view', 'js', 'artefacts'))) else: artefact_view_js_files = [] artefact_view_js_files.extend( sorted( os.listdir( os.path.join(bp.static_folder, 'view', 'designer', 'js', 'artefacts')))) # Get Palette Icon Groups / Icons svg_files = [] svg_icon_groups = {} # Read Files for (dirpath, dirnames, filenames) in os.walk(os.path.join(bp.static_folder, 'palette')): logger.debug('dirpath : {0!s:s}'.format(dirpath)) logger.debug('dirnames : {0!s:s}'.format(dirnames)) logger.debug('filenames : {0!s:s}'.format(filenames)) if os.path.basename(dirpath) != 'palette': svg_files.extend([ os.path.join(os.path.basename(dirpath), f) for f in filenames if f.endswith(".svg") ]) svg_icon_groups[os.path.basename(dirpath)] = [ f for f in filenames if f.endswith(".svg") ] else: svg_files.extend([f for f in filenames if f.endswith(".svg")]) logger.debug('Files Walk : {0!s:s}'.format(svg_files)) logger.debug('SVG Icon Groups {0!s:s}'.format(svg_icon_groups)) palette_icon_groups = [] for key in sorted(svg_icon_groups.keys()): palette_icon_group = {'name': str(key).title(), 'icons': []} for palette_svg in sorted(svg_icon_groups[key]): palette_icon = { 'svg': os.path.join(key, palette_svg), 'title': os.path.basename(palette_svg).split('.')[0].replace('_', ' ') } palette_icon_group['icons'].append(palette_icon) palette_icon_groups.append(palette_icon_group) logger.debug('Palette Icon Groups : {0!s:s}'.format(palette_icon_groups)) logJson(palette_icon_groups) # Read Fragment Files fragment_files = os.listdir( os.path.join(bp.static_folder, 'fragments', 'svg')) fragment_icons = [] for fragment_svg in sorted(fragment_files): logger.debug('Fragment : {0!s:s}'.format(fragment_svg)) logger.debug('Fragment full : {0!s:s}'.format( os.path.join(bp.static_folder, 'fragments', 'svg', fragment_svg))) fragment_icon = { 'svg': fragment_svg, 'title': os.path.basename(fragment_svg).split('.')[0].replace('_', ' ').title() } logger.debug('Icon : {0!s:s}'.format(fragment_icon)) fragment_icons.append(fragment_icon) # Walk Template directory Structure template_files = [] template_dirs = {} logger.debug('Walking the template directories') rootdir = os.path.join(bp.static_folder, 'templates') for (dirpath, dirnames, filenames) in os.walk(rootdir, followlinks=True): logger.debug('dirpath : {0!s:s}'.format(dirpath)) logger.debug('dirnames : {0!s:s}'.format(dirnames)) logger.debug('filenames : {0!s:s}'.format(filenames)) relpath = os.path.relpath(dirpath, rootdir) logger.debug('Relative Path : {0!s:s}'.format(relpath)) template_files.extend([ os.path.join(relpath, f) for f in filenames if f.endswith(".json") ]) template_dirs[relpath] = [f for f in filenames if f.endswith(".json")] logger.debug('Files Walk : {0!s:s}'.format(template_files)) logger.debug('Template Dirs {0!s:s}'.format(template_dirs)) template_groups = [] for key in sorted(template_dirs.keys()): template_group = { 'name': str(key).replace('_', ' ').title(), 'templates': [], 'directories': {} } for template_file in sorted(template_dirs[key]): try: okit_template = { 'json': os.path.join(key, template_file), 'id': template_file.replace('.', '_') } filename = os.path.join(bp.static_folder, 'templates', key, template_file) template_json = readJsonFile(filename) logger.debug('Template Json : {0!s:s}'.format(template_json)) okit_template['title'] = template_json['title'] okit_template['description'] = template_json.get( 'description', template_json['title']) template_group['templates'].append(okit_template) except Exception as e: logger.debug(e) template_groups.append(template_group) logger.debug('Template Groups {0!s:s}'.format(template_groups)) logJson(template_groups) template_categories = {} for key in sorted(template_dirs.keys()): name = str(key.split('/')[0]).replace('_', ' ').title() path = key category = template_categories.get(name, { 'path': path, 'name': '', 'templates': [], 'children': {} }) template_categories[name] = build_categories( path, key, category, sorted(template_dirs[key])) logger.debug('Categories {0!s:s}'.format(template_categories)) logJson(template_categories) config_sections = {"sections": readConfigFileSections()} logger.debug('Config Sections {0!s:s}'.format(config_sections)) #Render The Template return render_template('okit/okit_designer.html', artefact_model_js_files=artefact_model_js_files, artefact_view_js_files=artefact_view_js_files, palette_icon_groups=palette_icon_groups, fragment_icons=fragment_icons, okit_templates_groups=template_groups, okit_template_categories=template_categories, developer_mode=developer_mode, experimental_mode=experimental_mode)
def designer(): local = current_app.config.get('LOCAL', False) if not local and session.get('username', None) is None: logger.info( '<<<<<<<<<<<<<<<<<<<<<<<<< Redirect to Login >>>>>>>>>>>>>>>>>>>>>>>>>' ) return redirect(url_for('okit.login'), code=302) # Test if developer mode developer_mode = (request.args.get('developer', default='false') == 'true') if developer_mode: logger.info( "<<<<<<<<<<<<<<<<<<<<<<<<<< Developer Mode >>>>>>>>>>>>>>>>>>>>>>>>>>" ) # Test if experimental mode experimental_mode = (request.args.get('experimental', default='false') == 'true') if experimental_mode: logger.info( "<<<<<<<<<<<<<<<<<<<<<<<<<< Experimental Mode >>>>>>>>>>>>>>>>>>>>>>>>>>" ) # Test if cd3 mode cd3_mode = (request.args.get('cd3', default='false') == 'true') if cd3_mode: logger.info( "<<<<<<<<<<<<<<<<<<<<<<<<<< CD3 Mode >>>>>>>>>>>>>>>>>>>>>>>>>>") # Test if PCA mode pca_mode = (request.args.get('pca', default='false') == 'true') if pca_mode: logger.info( "<<<<<<<<<<<<<<<<<<<<<<<<<< PCA Mode >>>>>>>>>>>>>>>>>>>>>>>>>>") # Test if A2C mode a2c_mode = (request.args.get('a2c', default='false') == 'true') if a2c_mode: logger.info( "<<<<<<<<<<<<<<<<<<<<<<<<<< A2C Mode >>>>>>>>>>>>>>>>>>>>>>>>>>") # Test if Ansible mode ansible_mode = (request.args.get('ansible', default='false') == 'true') if ansible_mode: logger.info( "<<<<<<<<<<<<<<<<<<<<<<<< Ansible Mode >>>>>>>>>>>>>>>>>>>>>>>>") # Read Artifact Model Specific JavaScript Files artefact_model_js_files = sorted( os.listdir(os.path.join(bp.static_folder, 'model', 'js', 'artefacts'))) # Read Artifact View Specific JavaScript Files if os.path.exists(os.path.join( bp.static_folder, 'view', 'js', 'artefacts')) and os.path.isdir( os.path.join(bp.static_folder, 'view', 'js', 'artefacts')): artefact_view_js_files = sorted( os.listdir( os.path.join(bp.static_folder, 'view', 'js', 'artefacts'))) else: artefact_view_js_files = [] artefact_view_js_files.extend( sorted( os.listdir( os.path.join(bp.static_folder, 'view', 'designer', 'js', 'artefacts')))) # Read Pallete Json palette_json = readJsonFile( os.path.join(bp.static_folder, 'palette', 'palette.json')) # # Get Palette Icon Groups / Icons # svg_files = [] # svg_icon_groups = {} # # Read Files # for (dirpath, dirnames, filenames) in os.walk(os.path.join(bp.static_folder, 'palette')): # logger.debug('dirpath : {0!s:s}'.format(dirpath)) # logger.debug('dirnames : {0!s:s}'.format(dirnames)) # logger.debug('filenames : {0!s:s}'.format(filenames)) # if os.path.basename(dirpath) != 'palette': # svg_files.extend([os.path.join(os.path.basename(dirpath), f) for f in filenames if f.endswith(".svg")]) # svg_icon_groups[os.path.basename(dirpath)] = [f for f in filenames if f.endswith(".svg")] # else: # svg_files.extend([f for f in filenames if f.endswith(".svg")]) # logger.debug('Files Walk : {0!s:s}'.format(svg_files)) # logger.debug('SVG Icon Groups {0!s:s}'.format(svg_icon_groups)) # palette_icon_groups = [] # for key in sorted(svg_icon_groups.keys()): # palette_icon_group = {'name': str(key).title(), 'icons': []} # for palette_svg in sorted(svg_icon_groups[key]): # palette_icon = {'svg': os.path.join(key, palette_svg), 'title': os.path.basename(palette_svg).split('.')[0].replace('_', ' ')} # palette_icon_group['icons'].append(palette_icon) # palette_icon_groups.append(palette_icon_group) # logger.debug('Palette Icon Groups : {0!s:s}'.format(palette_icon_groups)) # logJson(palette_icon_groups) config_sections = {"sections": readConfigFileSections()} #Render The Template return render_template( 'okit/okit_designer.html', artefact_model_js_files=artefact_model_js_files, artefact_view_js_files=artefact_view_js_files, palette_json=palette_json, # palette_icon_groups=palette_icon_groups, # fragment_icons=fragment_icons, # okit_templates_groups=template_groups, # okit_template_categories=template_categories, local_okit=local, developer_mode=developer_mode, experimental_mode=experimental_mode, cd3_mode=cd3_mode, a2c_mode=a2c_mode, pca_mode=pca_mode, ansible_mode=ansible_mode)