Exemplo n.º 1
0
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
Exemplo n.º 2
0
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
Exemplo n.º 4
0
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
Exemplo n.º 5
0
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)
Exemplo n.º 7
0
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)
Exemplo n.º 8
0
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)