Esempio n. 1
0
def register_data_models(model_dir, root_resource, verbose=False):
    """
    Register any imported YANG modes with flask

    :param model_dir: (string) Directory containing code-generated models
    :param root_resource: (string) Base API resource.  Ie  'restconf', 'top/restconf', ...
    :param verbose: (int) Enables verbose output
    """
    # Import them first

    _import_data_models(model_dir, verbose=False)

    # Now register a base URL to catch them all
    # TODO: Work with the regular expression custom converter and see if we can get it to do better parsing

    data_base = '/%s/data' % root_resource
    data_url = '/%s/data<wildcard:path>' % root_resource

    data_url_regex = '/%s/data<regex():path>' % root_resource

    app.add_url_rule(data_url, view_func=_data_get, methods=['GET'])

    for model in data_models:
        if verbose:
            print '[%s] Registering YANG model path' % model.name

        model_dir = '%s/%s' % (data_base, model.name)
        _path_to_model[model_dir] = model
def register_data_models(model_dir, root_resource, verbose=False):
    """
    Register any imported YANG modes with flask

    :param model_dir: (string) Directory containing code-generated models
    :param root_resource: (string) Base API resource.  Ie  'restconf', 'top/restconf', ...
    :param verbose: (int) Enables verbose output
    """
    # Import them first

    _import_data_models(model_dir, verbose=False)

    # Now register a base URL to catch them all
    # TODO: Work with the regular expression custom converter and see if we can get it to do better parsing

    data_base = '/%s/data' % root_resource
    data_url = '/%s/data<wildcard:path>' % root_resource

    data_url_regex = '/%s/data<regex():path>' % root_resource

    app.add_url_rule(data_url, view_func=_data_get, methods=['GET'])

    for model in data_models:
        if verbose:
            print '[%s] Registering YANG model path' % model.name

        model_dir = '%s/%s' % (data_base, model.name)
        _path_to_model[model_dir] = model
def register_top_level_resource(root_resource, verbose=False):
    """
    Retrieve the Top-level API Resource
    """
    # Register with flask
    app.add_url_rule(root_resource,
                     view_func=_top_level_api_get,
                     methods=['GET'])
def register_yang_library_version(root_resource, verbose=False):
    """
    This mandatory leaf identifies the revision date of the
    "ietf-yang-library" YANG module that is implemented by this server.

    :param root_resource: TODO: Comment this
    :param verbose: (int) Enables verbose output
    """
    yang_ibrary = YangLibrary(data_models)

    for model in data_models:
        pass

    # TODO The IETF YANG Library modules supports notifications.  Do we want to support this?

    # Register with flask

    lib_dir = '/%s/yang-library-version:modules' % root_resource
    app.add_url_rule(lib_dir, view_func=_yang_library_get, methods=['GET'])
def register_yang_library_version(root_resource, verbose=False):
    """
    This mandatory leaf identifies the revision date of the
    "ietf-yang-library" YANG module that is implemented by this server.

    :param root_resource: TODO: Comment this
    :param verbose: (int) Enables verbose output
    """
    yang_ibrary = YangLibrary(data_models)

    for model in data_models:
        pass

    # TODO The IETF YANG Library modules supports notifications.  Do we want to support this?

    # Register with flask

    lib_dir = '/%s/yang-library-version:modules' % root_resource
    app.add_url_rule(lib_dir, view_func=_yang_library_get, methods=['GET'])
def register_top_level_resource(root_resource, verbose=False):
    """
    Retrieve the Top-level API Resource
    """
    # Register with flask
    app.add_url_rule(root_resource, view_func=_top_level_api_get, methods=['GET'])