Beispiel #1
0
def diff(config_files: str, input_file: str, generate: bool):
    """
    List differences between input OpenAPI spec file and computed API from apps.
    """
    logger.info(__name__, "openapi.diff")
    if generate:
        api.setup(generate_mode=True)
    api.load_api_file(input_file)
    _update_api_spec(config_files)
    ddiff = DeepDiff(api.static_spec, api.spec, ignore_order=True)
    if len(ddiff) > 0:
        logger.warning(
            __name__,
            "Running configuration differs from API spec. Check differences.")
        for reason, items in ddiff.items():
            print()
            print(reason)
            for item in items:
                print('\t', item)
                try:
                    old_value = str(eval(item, None,
                                         {'root': api.static_spec}))  # pylint: disable=eval-used
                except Exception as e:  # pylint: disable=broad-except
                    old_value = str(e)
                try:
                    new_value = str(eval(item, None, {'root': api.spec}))  # pylint: disable=eval-used
                except Exception as e:  # pylint: disable=broad-except
                    new_value = str(e)
                print('\t\t<<<', re.sub('\n', ' ', old_value))
                print('\t\t>>>', re.sub('\n', ' ', new_value))
    else:
        logger.info(__name__, "OK: API spec and running configuration match.")
def _init_api(
        mock_api_app_config,
        mock_api_spec,
        plugin=None,  # noqa: F811
        init_server=False,
        init_apps=False,
        init_swagger=False,
        generate_mode=False):
    api.clear()
    if generate_mode:
        api.setup(generate_mode=True)
    api.init_empty_spec(api_version=mock_api_spec['info']['version'],
                        title=mock_api_spec['info']['title'],
                        description=mock_api_spec['info']['description'])
    server_config = mock_api_app_config.server
    if init_server:
        api.register_server_config(server_config)
    if init_apps:
        apps = [mock_api_app_config]
        if plugin:
            apps.append(plugin)
        api.register_apps(apps)
    if init_swagger:
        api.static_spec = deepcopy(api.spec)
        api.enable_swagger(mock_api_app_config.server, web.Application())
Beispiel #3
0
def update(api_version: str, config_files: str, input_file: str, output_file: str, generate: bool = False):
    """
    Updates OpenAPI spec based on current input file plus running configuration from apps.
    """
    logger.info(__name__, "openapi.update")
    if generate:
        api.setup(generate_mode=True)
    api.load_api_file(input_file)
    _update_api_spec(config_files)
    api.save_api_file(output_file, api_version)
Beispiel #4
0
def create(api_version: str, title: str, description: str, config_files: str,
           output_file: str, generate: bool):
    """
    Creates OpenAPI spec file
    """
    logger.info(__name__, "openapi.update")
    if generate:
        api.setup(generate_mode=True)
    api.init_empty_spec(api_version, title, description)
    _update_api_spec(config_files)
    api.static_spec = api.spec
    api.save_api_file(output_file, api_version)