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())
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)
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)