--- /dev/null
+*** Settings ***
+Library OperatingSystem
+Library SSHLibrary
+Library Collections
+Library RequestsLibrary
+Library backuprestore/JsonDiffTool.py
+Resource ClusterManagement.robot
+Resource ../variables/daexim/DaeximVariables.robot
+Resource DaeximKeywords.robot
+Resource ../variables/backuprestore/BackupRestoreVariables.robot
+Resource ../variables/Variables.robot
+Resource Utils.robot
+
+*** Keywords ***
+Set Global Variable If It Does Not Exist
+ [Arguments] ${name} ${value}
+ [Documentation] Checks whether a given variable has been defined. If it does not, sets the passed value to that global variable
+ ${status} ${message} = Run Keyword And Ignore Error Variable Should Exist ${name}
+ Run Keyword If "${status}" == "FAIL" Set Global Variable ${name} ${value}
+
+Perform Export
+ [Arguments] ${controller_index}
+ [Documentation] schedule a basic export/backup, waiting for completion
+ [Tags] create backup
+ DaeximKeywords.Schedule Export ${controller_index}
+ DaeximKeywords.Verify Export Status ${EXPORT_SCHEDULED_STATUS} ${controller_index}
+ Builtin.Wait Until Keyword Succeeds 10 sec 5 sec DaeximKeywords.Verify Export Status ${EXPORT_COMPLETE_STATUS} ${controller_index}
+ DaeximKeywords.Verify Export Files ${controller_index}
+
+ConditionalBackupRestoreCheck
+ [Arguments] ${exclusionsConfigBefore}=${EMPTY} ${exclusionsConfigAfter}=${EMPTY} ${exclusionsOperationalBefore}=${EMPTY} ${exclusionsOperationalAfter}=${EMPTY} ${odlControllerIndex}=${FIRST_CONTROLLER_INDEX}
+ [Documentation] When enabled, performs a datastore export, then a backup, then a restore, then an export. The check is considered to be failed when exports before and after are different (two different json path files can be passed in order to filter certain subtrees from the export files before / after the export)
+ Set Global Variable If It Does Not Exist \${BR_TESTING_ENABLED} FALSE
+ Return From Keyword If '${BR_TESTING_ENABLED}'!='true'
+ BackupRestoreCheck ${exclusionsConfigBefore} ${exclusionsConfigAfter} ${exclusionsOperationalBefore} ${exclusionsOperationalAfter} ${odlControllerIndex}
+
+BackupRestoreCheck
+ [Arguments] ${exclusionsConfigBefore}=${EMPTY} ${exclusionsConfigAfter}=${EMPTY} ${exclusionsOperationalBefore}=${EMPTY} ${exclusionsOperationalAfter}=${EMPTY} ${odlControllerIndex}=${FIRST_CONTROLLER_INDEX}
+ [Documentation] When enabled, performs a datastore export, then a backup, then a restore, then an export. The check is considered to be failed when exports before and after are different (two different json path files can be passed in order to filter certain subtrees from the export files before / after the export)
+ Log Performing backup-restore check
+ ${ARG_CONFIG_BEFORE}= Set Variable ' '
+ ${ARG_CONFIG_AFTER}= Set Variable ' '
+ ${ARG_OPER_BEFORE}= Set Variable ' '
+ ${ARG_OPER_AFTER}= Set Variable ' '
+ ${ARG_CONFIG_BEFORE}= Run Keyword If '${exclusionsConfigBefore}'!='${EMPTY}' '${exclusionsConfigBefore}'
+ ${ARG_CONFIG_AFTER}= Run Keyword If '${exclusionsConfigAfter}'!='${EMPTY}' '${exclusionsConfigAfter}'
+ ${ARG_OPER_BEFORE}= Run Keyword If '${exclusionsOperationalBefore}'!='${EMPTY}' Normalize Path ${CURDIR}/${exclusionsOperationalBefore}
+ ${ARG_OPER_AFTER}= Run Keyword If '${exclusionsOperationalAfter}'!='${EMPTY}' Normalize Path ${CURDIR}/${exclusionsOperationalAfter}
+ ${controller_index} Builtin.Convert To Integer ${odlControllerIndex}
+ Perform Export ${controller_index}
+ ${host} ClusterManagement.Resolve IP Address For Member ${controller_index}
+ ${directory_exist} Builtin.Run Keyword And Return Status OperatingSystem.Directory Should Exist ${EXP_DIR}/${RELATIVE_BEFORE_BACKUP_DIR}
+ Builtin.Run Keyword If ${directory_exist} Cleanup Directory ${EXP_DIR}/${RELATIVE_BEFORE_BACKUP_DIR}
+ Copy Export Directory To Test VM ${host}
+ OperatingSystem.Move Directory ${EXP_DIR}${host} ${EXP_DIR}/${RELATIVE_BEFORE_BACKUP_DIR}
+ #
+ # TODO: Insert The Backup + Restore call here
+ #
+ Log doing the second export!
+ Perform Export ${controller_index}
+ Copy Export Directory To Test VM ${host}
+ ${directory_exist} Builtin.Run Keyword And Return Status OperatingSystem.Directory Should Exist ${EXP_DIR}/${RELATIVE_AFTER_RESTORE_DIR}
+ Builtin.Run Keyword If ${directory_exist} Cleanup Directory ${EXP_DIR}/${RELATIVE_AFTER_RESTORE_DIR}
+ OperatingSystem.Move Directory ${EXP_DIR}${host} ${EXP_DIR}/${RELATIVE_AFTER_RESTORE_DIR}
+ log "Performing comparison"
+ ${differencesConfigDatastore}= Json Diff Check Keyword ${EXP_DIR}/${RELATIVE_BEFORE_BACKUP_DIR}/${EXP_DATA_FILE} ${EXP_DIR}/${RELATIVE_AFTER_RESTORE_DIR}/${EXP_DATA_FILE} ${ARG_CONFIG_BEFORE} ${ARG_CONFIG_AFTER}
+ ${differencesOperationalDatastore}= Json Diff Check Keyword ${EXP_DIR}/${RELATIVE_BEFORE_BACKUP_DIR}/${EXP_OPER_FILE} ${EXP_DIR}/${RELATIVE_AFTER_RESTORE_DIR}/${EXP_OPER_FILE} ${ARG_OPER_BEFORE} ${ARG_OPER_AFTER}
+ Should Be Equal '0' '${differencesConfigDatastore}' Error: Diferences found in the config DS before backup / after restore
+ Should Be Equal '0' '${differencesOperationalDatastore}' Error: Diferences found in the config DS before backup / after restore
${host_index} Builtin.Convert To Integer ${host_index}
Builtin.Run Keyword And Ignore Error ClusterManagement.Delete_And_Check_Member_List_Or_All ${TOPOLOGY_URL} ${host_index}
${output1} Builtin.Run Keyword and IgnoreError ClusterManagement.Run Bash Command On Member sudo rm -rf ${WORKSPACE}/${BUNDLEFOLDER}/daexim;clear ${host_index}
- # Executing the deletion without sudo prevents "sudo: no tty present and no askpass program specified" errors
${output2} Builtin.Run Keyword and IgnoreError ClusterManagement.Run Bash Command On Member rm -rf ${WORKSPACE}/${BUNDLEFOLDER}/daexim;clear ${host_index}
${output} ClusterManagement.Run Bash Command On Member ls -lart ${WORKSPACE}/${BUNDLEFOLDER} ${host_index}
Builtin.Log ${output}
--- /dev/null
+import argparse
+import logging
+import jsonpatch
+import json
+from jsonpathl import jsonpath
+import types
+import sys
+
+
+"""
+Library for checking differences between json files,
+allowing pre-filtering those files using a number
+of jsonpath expressions
+This library supports the automated verification
+of backup & restore use cases for applications
+Updated: 2017-04-10
+"""
+
+__author__ = "Diego Granados"
+__copyright__ = "Copyright(c) 2017, Ericsson."
+__license__ = "New-style BSD"
+__email__ = "diego.jesus.granados.lopez@ericsson.com"
+
+
+def from_path_to_jsonpatch(matchedpath):
+ """ Given a json path (using jsonpath notation), to a json patch (RFC 6902)
+ which can be used to remove the document fragment pointed by the input path
+ Note that such conversion is not formally specified anywhere, so the conversion
+ rules are experimentation-based
+
+ :param matchedpath: the input path (using jsonpath notation, see http://goessner.net/articles/JsonPath)
+ :return: the corresponding json patch for removing the fragment
+ """
+
+ logging.info('starting. filter path: %s', matchedpath)
+
+ # First step: path format change
+ # typical input: $['ietf-yang-library:modules-state']['module'][57]
+ # desired output: /ietf-yang-library:modules-state/module/57
+
+ matchedpath = matchedpath.replace('$.', '/')
+ matchedpath = matchedpath.replace('$[\'', '/')
+ matchedpath = matchedpath.replace('\'][\'', '/')
+ matchedpath = matchedpath.replace('\']', '/')
+
+ # this one is for the $[2] pattern
+ if '$[' in matchedpath and ']' in matchedpath:
+ matchedpath = matchedpath.replace('$[', '/')
+ matchedpath = matchedpath.replace(']', '')
+
+ matchedpath = matchedpath.replace('[', '')
+ matchedpath = matchedpath.replace(']', '')
+ matchedpath = matchedpath.rstrip('/')
+
+ # Now, for input: /ietf-yang-library:modules-state/module/57
+ # desired output: [{"op":"remove","path":"/ietf-yang-library:modules-state/module/57"}]
+
+ logging.info('final filter path: %s', matchedpath)
+ as_patch = '[{{"op\":\"remove\",\"path\":\"{0}\"}}]'.format(matchedpath)
+ logging.info('generated patch line: %s', as_patch)
+ return as_patch
+
+
+def apply_filter(json_arg, filtering_line):
+ """ Filters a json document by removing the elements identified by a filtering pattern
+
+ :param json_arg: the document to filter
+ :param filtering_line: The filtering pattern. This is specified using jsonpath notation grammar
+ (see http://goessner.net/articles/JsonPath/)
+ :return: the filtered document
+ """
+
+ logging.info('apply_filter:starting. jsonPath filter=[%s]', filtering_line)
+
+ res = jsonpath(json_arg, filtering_line, result_type='PATH')
+ if isinstance(res, types.BooleanType) or len(res) == 0:
+ logging.info('apply_filter: The prefilter [%s] matched nothing', filtering_line)
+ return json_arg
+ if len(res) > 1:
+ raise AssertionError('Bad pre-filter [%s] (returned [%d] entries, should return one at most',
+ filtering_line, len(res))
+ as_json_patch = from_path_to_jsonpatch(res[0])
+ logging.info('apply_filter: applying patch! resolved patch =%s', as_json_patch)
+ patched_json = jsonpatch.apply_patch(json_arg, as_json_patch)
+
+ logging.info('apply_filter: json after patching: %s', patched_json)
+ return patched_json
+
+
+def prefilter(json_arg, initial_prefilter):
+ """ Performs the prefiltering of a json file
+ :param json_arg: the json document to filter (as string)
+ :type json_arg: str
+ :param initial_prefilter: a file containing a number of filtering patterns (using jsonpath notation)
+ :return: the original document, python-deserialized and having the fragments
+ matched by the filtering patterns removed
+ """
+
+ if not initial_prefilter:
+ logging.info('prefilter not found!')
+ # whether it is filtered or not, return as json so it can be handled uniformly from now on
+ return json.loads(json_arg)
+
+ with open(initial_prefilter) as f:
+ lines = f.read().splitlines()
+ logging.info('prefilter:lines in prefilter file: %d ', len(lines))
+ lines = filter(lambda k: not k.startswith('#'), lines)
+ logging.info('prefilter:lines after removing comments: %d ', len(lines))
+ json_args_as_json = json.loads(json_arg)
+ for filtering_line in lines:
+ json_args_as_json = apply_filter(json_args_as_json, filtering_line)
+
+ return json_args_as_json
+
+
+def prefilter_json_files_then_compare(args):
+ """ Main function. Prefilters the input files using provided prefiltering patterns,
+ then returns number of differences (and the differences themselves, when requested)
+
+ :param args: Input arguments, already parsed
+ :return: the number of differences (from a jsonpatch standpoint) between the input
+ json files (those input files can be prefiltered using a number of patterns when
+ requested)
+ """
+
+ logging.info('prefilter_json_files_then_compare: starting!')
+ with open(args.initialFile) as f:
+ json_initial = file.read(f)
+ with open(args.finalFile) as f2:
+ json_final = file.read(f2)
+
+ patch = jsonpatch.JsonPatch.from_diff(json_initial, json_final)
+ logging.info('prefilter_json_files_then_compare:differences before patching: %d', len(list(patch)))
+
+ json_initial_filtered = prefilter(json_initial, args.initial_prefilter)
+ json_final_filtered = prefilter(json_final, args.finalPreFilter)
+
+ patch_after_filtering = jsonpatch.JsonPatch.from_diff(json_initial_filtered, json_final_filtered)
+ differences_after_patching = list(patch_after_filtering)
+ logging.info('prefilter_json_files_then_compare: differences after patching: %d', len(differences_after_patching))
+
+ if args.printDifferences:
+ for patchline in differences_after_patching:
+ print json.dumps(patchline)
+
+ print len(differences_after_patching)
+ return len(differences_after_patching)
+
+
+def Json_Diff_Check_Keyword(json_before, json_after, filter_before, filter_after):
+ input_argv = ['-i', json_before, '-f', json_after, '-ipf', filter_before, '-fpf', filter_after, '-pd']
+ sys.argv[1:] = input_argv
+ logging.info('starting. constructed command line: %s', sys.argv)
+ return Json_Diff_Check()
+
+
+def parse_args(args):
+ parser = argparse.ArgumentParser(description='both initial and final json files are compared for differences. '
+ 'The program returns 0 when the json contents are the same, or the '
+ 'number of'
+ ' differences otherwise. Both json files can be prefiltered for '
+ 'certain patterns'
+ ' before checking the differences')
+
+ parser.add_argument('-i', '--initialFile', required='true', dest='initialFile', action='store',
+ help='initial json file')
+ parser.add_argument('-f', '--finalFile', required='true', dest='finalFile', action='store', help='final json file')
+ parser.add_argument('-ipf', '--initial_prefilter', dest='initial_prefilter',
+ help='File with pre-filtering patterns to apply to the initial json file before comparing')
+ parser.add_argument('-fpf', '--finalPreFilter', dest='finalPreFilter',
+ help='File with pre-filtering patterns to apply to the final json file before comparing')
+ parser.add_argument('-pd', '--printDifferences', action='store_true',
+ help='on differences found, prints the list of paths for the found differences before exitting')
+ parser.add_argument('-v', '--verbose', dest='verbose', action='store_true', help='generate log information')
+ return parser.parse_args(args)
+
+
+def Json_Diff_Check():
+ args = parse_args(sys.argv[1:])
+
+ if hasattr(args, 'verbose'):
+ if args.verbose:
+ logging.basicConfig(level=logging.DEBUG)
+
+ if args.printDifferences:
+ logging.info('(will print differences)')
+
+ result = prefilter_json_files_then_compare(args)
+ return result
+
+
+if __name__ == '__main__':
+ Json_Diff_Check()
--- /dev/null
+== Backup-Restore test support library ==
+
+=== 1. Introduction ===
+
+The purpose of this library is to allow the generic verification
+of feature correctness in backup + restore scenarios.
+
+A feature is correct from a backup+restore standpoint when,
+at any provisioning point, a controller backup, followed by a
+restore, can be performed, and the execution of that procedure
+will not have any impact on traffic tests or datastore state
+check in respect to the expected behaviour when no backup + restore
+procedures are performed.
+
+The library can also be used (with minimal modifications) to check
+whether a feature is safe (continues operating correctly) in the
+event of a controller reboot (e.g. SFC is known not to, because of
+keeping certain information (rendered service paths) in the
+operational DS only and being unable to reconstruct that information
+after a reboot).
+
+=== 2. Library usage ===
+
+==== 2.1. Use as Robot Library keywords ====
+
+The library is delivered as a readily-available Robot FW library in
+the ODL integration/test repository. It provides two keywords:
+
+- A new keyword ('''BackupRestoreCheck'''), which:
+
+# Performs a complete datastore export (using Daexim export rpc)
+# Does a backup, then a restore of the backup previously
+ created. NOTE: this step is purposefully not implemented in the
+ keyword (a placeholder for concrete backup & restore scripts is
+ provided instead). ODL does not provide a comprehensive B&R implementation:
+ such implementation shall include both the datastore and certain
+ configuration files, but those configuration files depend on the
+ concrete ODL distribution / deployment, so ODL provides only some
+ pieces to implement that backup (i.e. the datastore backup RPCs).
+ This library is contributed with the purpose of easing the testing
+ of any backup&restore implementation; therefore that implementation
+ shall be incorporated to this library (by modifying this step)
+# Performs a new datastore export
+# Compares both config & operational datastores for differences (that
+ is, pre-backup and post-restore exports for both datastores), optionally
+ prefiltering those exports using pre-filter files (those prefilter files
+ are passed as parameters to the keyword)
+# Fails when pre-backup and post-restore exports are different even after
+ removing the specified filtered parts
+
+- A new keyword ('''ConditionalBackupRestoreCheck'''), which performs
+ the same steps than BackupRestoreCheck only when a command-line flag ("-v
+ BR_TESTING_ENABLED:true") is present. This allows to easily add
+backup-restore verification on existing tests, allowing to toggle
+the execution of that verification
+
+===== 2.1.1. Adding the br verification keyword to an existing robot test =====
+
+The library has been designed from the ground up to allow its use in
+existing testcases, so specific feature provisioning can be tested for
+correctness in backup-restore scenarios. The design premises for the
+library were:
+* To be very easy to incorporate into existing testcases (just one resource
+ import + the verification keyword, that shall be inserted in the existing
+ testcase just after test specific provisioning and before existing test
+verification steps)
+* To be togglable (that is, to allow whether to execute / to bypass the
+export + backup + restore + export + exports comparison block)
+
+===== 2.1.2. Steps to add backup-restore verification to an existing test suite =====
+1) Suite setup: Add ClusterManagement Setup (it is needed for Daexim export
+ to work). Hint: if the testsuite already contains an init suite keyword, you
+ can use the Run Keywords construct in order to run both initialization keywords.
+
+(Subsequent examples use diff-format):
+
+*** Settings ***
+Documentation Test suite for SFC Service Functions, Operates functions from Restconf APIs.
+-Suite Setup Init Suite
++Suite Setup Run Keywords Init Suite ClusterManagement Setup
+Suite Teardown Delete All Sessions
+
+2) Import Backup-Restore support library
+
+Resource ../../../libraries/TemplatedRequests.robot
++Resource ../../../libraries/BackupRestoreKeywords.robot
+
+3) Add the verification keyword (after provisioning, before assertions/traffic verification)
+Should Contain ${ALLOWED_STATUS_CODES} ${resp.status_code}
+ ${elements}= Create List SFC1-100-Path-1 "parent-service-function-path":"SFC1-100" "hop-number":0 "service-index":255 "ho
+... "service-index":254 "hop-number":2 "service-index":253
++ ConditionalBackupRestoreCheck
+Check For Elements At URI ${OPERATIONAL_RSPS_URI} ${elements}
+
+4) Execute the suite without passing the enablement flag (or pass it disabled:
+ '-v BR_TESTING_ENABLED:false'). Note how the testcase runs as always
+5) Execute the suite, now passing the enablement flag ('-v BR_TESTING_ENABLED:true'):
+5.1. If the testcases pass, that means the suite provisioning is safe for B&R
+ (that is, both config and operational DSs are identical before and after the
+ procedure, and any assert / traffic verification the cases perform are also correct.
+5.2. If a testcase fail:
+5.2.1. If it is the ConditionalBackupRestoreCheck keyword what fails: it means
+ differences are found in the datastores before the backup / after the restore. Test
+log should include the list of differences found. Two types of differences:
+5.2.1.1. If differences are non-issues (e.g. elements whose changes are expected
+ after a backup + restore, as elements containing timestamps that are recalculated
+ after the restore, or elements showing transitory states which are not important
+ regarding B&R correctness), then create as many pre-filter entries as necessary
+ in the corresponding prefilter file (4 prefilter files can be passed to the
+ keyword: prefilter for the config DS before the backup, config DS after restore,
+ operational DS before the backup and operational DS after the restore. Repeat until
+ all unimportant DS entries are filtered
+5.2.1.2. Differences found on which the former rule is not applicable should be
+ checked carefully, as they are likely to showcase application bugs (regading B&R /
+ controller reboots)
+5.2.2 Errors in the testcase execution when the BR_TESTING_ENABLED:true flag is
+ passed, in keywords other than the verification keyword, are also candidates to
+ point to application bugs (e.g. because of using runtime-required in-memory
+ state that they fail to reconstruct after the restore), thus requiring careful revision
+
+==== 2.2. Execution as a standalone commandline utility ====
+In scenarios where Robot FW is not used for testing, the library core (this is, the
+prefiltered json comparison) can also be used from the command line. The tool is
+provided as a python commandline utility. Help follows:
+
+ odluser@odluser-VirtualBox:~/odl/test/csit/libraries/backuprestore\> python JsonDiffTool.py -h
+ usage: JsonDiffTool.py [-h] -i INITIALFILE -f FINALFILE [-ipf INITIALPREFILTER] [-fpf FINALPREFILTER] [-pd] [-v]
+ both initial and final json files are compared for differences. The program
+ returns 0 when the json contents are the same, or the number of differences
+ otherwise. Both json files can be prefiltered for certain patterns before
+ checking the differences
+ optional arguments:
+ -h, --help show this help message and exit
+ -i INITIALFILE, --initialFile INITIALFILE
+ initial json file
+ -f FINALFILE, --finalFile FINALFILE
+ final json file
+ -ipf INITIALPREFILTER, --initialPreFilter INITIALPREFILTER
+ File with pre-filtering patterns to apply to the
+ initial json file before comparing
+ -fpf FINALPREFILTER, --finalPreFilter FINALPREFILTER
+ File with pre-filtering patterns to apply to the final
+ json file before comparing
+ -pd, --printDifferences
+ on differences found, prints the list of paths for the
+ found differences before exitting
+ -v, --verbose generate log information
+
+===== 2.2.1. Command-line usage examples =====
+- Checking for differences between two json files (showing only the number of differences)
+ odluser@odluser-VirtualBox:~/odl/test/csit/libraries/backuprestore\> python JsonDiffTool.py -i ./testinput/arrayTwoNames.json -f ./testinput/arrayThreeNamesSorted.json
+ 1
+
+- Checking for differences and displaying the differences (jsonpatch format)
+ odluser@odluser-VirtualBox:~/odl/test/csit/libraries/backuprestore\> python JsonDiffTool.py -i ./testinput/arrayTwoNames.json -f ./testinput/arrayThreeNamesSorted.json -pd
+ {"path": "/2", "value": {"Name": "Tom"}, "op": "add"}
+ 1
+
+- Checking for differences (and displaying them), using a pre-filter file for the initial json file
+ odluser@odluser-VirtualBox:~/odl/test/csit/libraries/backuprestore\> python JsonDiffTool.py -i ./testinput/mainTestCase/odl_backup_operational_before.json -f testinput/mainTestCase/odl_backup_operational_after.json -ipf testinput/mainTestCase/json_prefilter.conf -pd
+ {"path": "/entity-owners:entity-owners/entity-type/2", "op": "remove"}
+ {"path": "/entity-owners:entity-owners/entity-type/4", "value": {"type": "iface", "entity": [{"owner": "member-1", "id": "/general-entity:entity[general-entity:name='iface']", "candidate": [{"name": "member-1"}]}]}, "op": "add"}
+ {"path": "/network-topology:network-topology/topology/3", "value": {"node": [{"netconf-node-topology:host": "127.0.0.1", "netconf-node-topology:port": 1830, "netconf-node-topology:connection-status": "connecting", "node-id": "CONTROLLER1"}, {"netconf-node-topology:host": "127.0.0.1", "netconf-node-topology:port": 1830, "netconf-node-topology:connection-status": "connecting", "node-id": "CONTROLLER2"}], "topology-id": "topology-netconf"}, "op": "replace"}
+ {"path": "/ietf-yang-library:modules-state/module-set-id", "value": "3", "op": "replace"}
+ {"path": "/ietf-yang-library:modules-state/module/56", "op": "remove"}
+ {"path": "/ietf-yang-library:modules-state/module/116", "op": "remove"}
+ {"path": "/ietf-yang-library:modules-state/module/127", "op": "remove"}
+ {"path": "/ietf-yang-library:modules-state/module/140", "op": "remove"}
+ {"path": "/ietf-yang-library:modules-state/module/139", "op": "remove"}
+ {"path": "/ietf-yang-library:modules-state/module/185", "op": "remove"}
+ {"path": "/ietf-yang-library:modules-state/module/238", "op": "remove"}
+ {"path": "/ietf-yang-library:modules-state/module/267", "op": "remove"}
+ {"path": "/ietf-yang-library:modules-state/module/269", "op": "remove"}
+ {"path": "/ietf-yang-library:modules-state/module/278", "op": "remove"}
+ {"path": "/ietf-yang-library:modules-state/module/277", "op": "remove"}
+ 15
+
+===== 2.2.2. Unit tests =====
+A handful of unit tests (testing both jsonpath - jsonpatch expression transformation,
+difference evaluation, use of filters and error cases) are provided. They can be
+executed as standard python unittests from the commandline:
+
+ odluser@odluser-VirtualBox:~/odl/test/csit/libraries/backuprestore\> python backuprestoretest.py
+ 0
+ .2
+ .usage: backuprestoretest.py [-h] -i INITIALFILE -f FINALFILE
+ [-ipf INITIALPREFILTER] [-fpf FINALPREFILTER]
+ [-pd] [-v]
+ backuprestoretest.py: error: argument -i/--initialFile is required
+ .14
+ 14
+ .16
+ 16
+ .16
+ 16
+ .1
+ ..16
+ 16
+ ...
+ ----------------------------------------------------------------------
+ Ran 11 tests in 0.881s
+ OK
+
+=== 3. Prefilter file format ===
+Prefilter files:
+* Can contain any number of jsonpath expressions ([http://goessner.net/articles/JsonPath/ jsonpath expressions specification])
+* Use "#" as line prefix for comments
+Example:
+ #
+ # Pre-filter file example (removes the module from ietf-yang-library:modules-state which name is 'extension-resync-message')
+ #
+ $.ietf-yang-library:modules-state.module[?(@.name=='extension-resync-message')]
+ # $.ietf-yang-library:modules-state.module[?(@.name=='extension-switchfeatures-message')]
+
+=== 4. Dependencies / discarded alternatives ===
+
+The library includes in the commit itself the jsonpath library by Phil Budne
+(https://pypi.python.org/pypi/jsonpath/). This had to be done in order to rename
+the module (from jsonpath to jsonpathl), because RIDE fails to import a class
+from a module with the same name, which is the case for this library. The library
+license (MIT) allows for including / modifying it, so this inclusion is safe license-wise.
+
+Other alternatives to this library were explored, but were found unfit for the
+purpose. Specifically, we tried to use the popular jsonpath-rw library, but it
+does not support json query filtering by attribute values (only by field names),
+which is a must. Also objectpath, but the library does not support the return of
+the path of matching objects (only matched objects themselves). Those paths are
+required (they are the ones which are transformed into jsonpatch expressions)
+
+jsonpatch library (https://pypi.python.org/pypi/jsonpatch) is expected to be
+installed in order for this library to work. The library is used for removing json
+elements via patches
--- /dev/null
+import unittest
+import sys
+import JsonDiffTool
+
+"""
+Unit tests for the Json Diff Tool library
+Updated: 2017-04-24
+"""
+
+__author__ = "Diego Granados"
+__copyright__ = "Copyright(c) 2017, Ericsson."
+__license__ = "New-style BSD"
+__email__ = "diego.jesus.granados.lopez@ericsson.com"
+
+
+class PathConversionTest(unittest.TestCase):
+ """
+ Conversions from jsonpath paths to jsonpatch patches used to remove the element pointed by the path
+ """
+
+ def testArrayElementConversion(self):
+ self.assertEquals('[{"op":"remove","path":"/ietf-yang-library:modules-state/module/56"}]',
+ JsonDiffTool.from_path_to_jsonpatch('/ietf-yang-library:modules-state/module/56'),
+ "Array element conversion failed!")
+
+ def testMapValueElementConversion(self):
+ self.assertEquals('[{"op":"remove","path":"/ietf-yang-library:modules-state/module/blablah"}]',
+ JsonDiffTool.from_path_to_jsonpatch('/ietf-yang-library:modules-state/module/blablah'),
+ "Array element conversion failed!")
+
+
+class JsonDiffToolTest(unittest.TestCase):
+ """
+ Tests for the tool itself, including both command-line and RIDE keyword invokation style
+ """
+
+ def testSimpleDifferenceCountingWithoutFiltering(self):
+ """
+ Identical documents
+ """
+ self.assertEquals(0,
+ JsonDiffTool.Json_Diff_Check_Keyword('testinput/arrayTwoNames.json',
+ 'testinput/arrayTwoNamesCopy.json',
+ '',
+ ''),
+ 'failed! (expected 0 differences)')
+
+ def testEqualFilesWithScrambledArrayOrder(self):
+ """
+ This is moving an array element from one position to other. RFC 6902 describes this as "moving
+ a value", but this jsonpatch implementation constructs a patch using remove + add. Acceptable though
+ """
+ self.assertEquals(2,
+ JsonDiffTool.Json_Diff_Check_Keyword('testinput/arrayTwoNames.json',
+ 'testinput/arrayTwoNamesReversed.json',
+ '',
+ ''),
+ 'failed! (expected 2 differences)')
+
+ def testEqualFilesWithChangedAttributeOrder(self):
+ """
+ Attributes in different order. It's not a difference
+ """
+ self.assertEquals(0,
+ JsonDiffTool.Json_Diff_Check_Keyword('testinput/setTwoNames.json',
+ 'testinput/setTwoNamesReversed.json',
+ '',
+ ''),
+ 'failed! (expected 0 differences)')
+
+ def testSimpleDifferenceSecondFileWithExtraAttrib(self):
+ self.assertEquals(1,
+ JsonDiffTool.Json_Diff_Check_Keyword('testinput/setTwoNames.json',
+ 'testinput/setTwoNamesExtraAttrib.json',
+ '',
+ ''),
+ 'failed! (expected 1 differences)')
+
+ def testSimpleDifferenceCountingWithoutFiltering(self):
+ """
+ Example coming from a true daexim export. No prefilters used
+ """
+ input_argv = ['-i', 'testinput/mainTestCase/odl_backup_operational_before.json',
+ '-f', 'testinput/mainTestCase/odl_backup_operational_after.json']
+ sys.argv[1:] = input_argv
+ self.assertEquals(16,
+ JsonDiffTool.Json_Diff_Check(),
+ "main failed! expected 16 differences, result was: " + str(JsonDiffTool.Json_Diff_Check()))
+
+ def testSimpleDifferenceCountingUsingSingleMatchingBeforeFilter(self):
+ """
+ Using a prefilter for the initial file The prefilter contains one expression only
+ """
+ input_argv = ['-i', 'testinput/mainTestCase/odl_backup_operational_before.json',
+ '-f', 'testinput/mainTestCase/odl_backup_operational_after.json',
+ '-ipf', 'testinput/mainTestCase/json_prefilter.conf', '-v']
+ sys.argv[1:] = input_argv
+ self.assertEquals(15,
+ JsonDiffTool.Json_Diff_Check(),
+ "main failed! expected 15 differences, result was: " + str(JsonDiffTool.Json_Diff_Check()))
+
+ def testSimpleDifferenceCountingUsingMatchingBeforeFilterMatchingTwoEntries(self):
+ """
+ Using a prefilter for the initial file The prefilter contains two expressions
+ """
+ input_argv = ['-i', 'testinput/mainTestCase/odl_backup_operational_before.json',
+ '-f', 'testinput/mainTestCase/odl_backup_operational_after.json',
+ '-ipf', 'testinput/mainTestCase/json_prefilter_two_matches.conf', '-v']
+ sys.argv[1:] = input_argv
+ self.assertEquals(14,
+ JsonDiffTool.Json_Diff_Check(),
+ "main failed! expected 14 differences, result was: " + str(JsonDiffTool.Json_Diff_Check()))
+
+ def testSimpleDifferenceCountingUsingSingleMatchingBeforeFilter(self):
+ """
+ Using a prefilter for both initial and final files
+ """
+ input_argv = ['-i', 'testinput/mainTestCase/odl_backup_operational_before.json',
+ '-f', 'testinput/mainTestCase/odl_backup_operational_after.json',
+ '-ipf', 'testinput/mainTestCase/json_prefilter.conf',
+ '-fpf', 'testinput/mainTestCase/json_postfilter.conf',
+ '-v']
+ sys.argv[1:] = input_argv
+ self.assertEquals(16,
+ JsonDiffTool.Json_Diff_Check(),
+ "main failed! expected 16 differences, result was: " + str(JsonDiffTool.Json_Diff_Check()))
+
+ def testUsingANonExistingFile(self):
+ """
+ The second file does not exist. Exception expected
+ """
+ self.assertRaises(IOError,
+ JsonDiffTool.Json_Diff_Check_Keyword,
+ 'testinput/arrayTwoNames.json',
+ 'testinput/thisFileDoesNotExist.json',
+ '',
+ '')
+
+ def testNotPassingAMandatoryParameter(self):
+ """
+ Both initial and final json files are mandatory
+ """
+ input_argv = ['-f', 'testinput/mainTestCase/odl_backup_operational_after.json']
+ # parser = JsonDiffTool.parseArgs(input_argv)
+
+ with self.assertRaises(SystemExit) as cm:
+ JsonDiffTool.parse_args(input_argv)
+
+ # 2 for missing argument
+ self.assertEqual(cm.exception.code, 2)
+
+ def testUsingNotMatchingFilterExpressions(self):
+ """
+ Using prefilter files whose expressions match nothing
+ """
+ input_argv = ['-i', 'testinput/mainTestCase/odl_backup_operational_before.json',
+ '-f', 'testinput/mainTestCase/odl_backup_operational_after.json',
+ '-ipf', 'testinput/mainTestCase/json_prefilter_zero_matches.conf',
+ '-fpf', 'testinput/mainTestCase/json_prefilter_zero_matches.conf',
+ '-v']
+ sys.argv[1:] = input_argv
+ self.assertEquals(16,
+ JsonDiffTool.Json_Diff_Check(),
+ "main failed! expected 16 differences, result was: " + str(
+ JsonDiffTool.Json_Diff_Check()))
+
+
+if __name__ == "__main__":
+ unittest.main()
--- /dev/null
+"""
+An XPath for JSON
+
+A port of the Perl, and JavaScript versions of JSONPath
+see http://goessner.net/articles/JsonPath/
+
+Based on on JavaScript version by Stefan Goessner at:
+ http://code.google.com/p/jsonpath/
+and Perl version by Kate Rhodes at:
+ http://github.com/masukomi/jsonpath-perl/tree/master
+"""
+
+import re
+import sys
+
+__author__ = "Phil Budne"
+__revision__ = "$Revision: 1.13 $"
+__version__ = '0.54'
+
+# Copyright (c) 2007 Stefan Goessner (goessner.net)
+# Copyright (c) 2008 Kate Rhodes (masukomi.org)
+# Copyright (c) 2008-2012 Philip Budne (ultimate.com)
+# Licensed under the MIT licence:
+#
+# Permission is hereby granted, free of charge, to any person
+# obtaining a copy of this software and associated documentation
+# files (the "Software"), to deal in the Software without
+# restriction, including without limitation the rights to use,
+# copy, modify, merge, publish, distribute, sublicense, and/or sell
+# copies of the Software, and to permit persons to whom the
+# Software is furnished to do so, subject to the following
+# conditions:
+#
+# The above copyright notice and this permission notice shall be
+# included in all copies or substantial portions of the Software.
+#
+# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+# EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
+# OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
+# HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+# WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+# FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+# OTHER DEALINGS IN THE SOFTWARE.
+
+# XXX BUGS:
+# evalx is generally a crock:
+# handle !@.name.name???
+# there are probably myriad unexpected ways to get an exception:
+# wrap initial "trace" call in jsonpath body in a try/except??
+
+# XXX TODO:
+# internally keep paths as lists to preserve integer types
+# (instead of as ';' delimited strings)
+
+__all__ = ['jsonpath']
+
+
+# XXX precompile RE objects on load???
+# re_1 = re.compile(.....)
+# re_2 = re.compile(.....)
+
+def normalize(x):
+ """normalize the path expression; outside jsonpath to allow testing"""
+ subx = []
+
+ # replace index/filter expressions with placeholders
+ # Python anonymous functions (lambdas) are cryptic, hard to debug
+ def f1(m):
+ n = len(subx) # before append
+ g1 = m.group(1)
+ subx.append(g1)
+ ret = "[#%d]" % n
+ # print "f1:", g1, ret
+ return ret
+
+ x = re.sub(r"[\['](\??\(.*?\))[\]']", f1, x)
+
+ # added the negative lookbehind -krhodes
+ x = re.sub(r"'?(?<!@)\.'?|\['?", ";", x)
+
+ x = re.sub(r";;;|;;", ";..;", x)
+
+ x = re.sub(r";$|'?\]|'$", "", x)
+
+ # put expressions back
+ def f2(m):
+ g1 = m.group(1)
+ # print "f2:", g1
+ return subx[int(g1)]
+
+ x = re.sub(r"#([0-9]+)", f2, x)
+
+ return x
+
+
+def jsonpath(obj, expr, result_type='VALUE', debug=0, use_eval=True):
+ """traverse JSON object using jsonpath expr, returning values or paths"""
+
+ def s(x, y):
+ """concatenate path elements"""
+ return str(x) + ';' + str(y)
+
+ def isint(x):
+ """check if argument represents a decimal integer"""
+ return x.isdigit()
+
+ def as_path(path):
+ """convert internal path representation to
+ "full bracket notation" for PATH output"""
+ p = '$'
+ for piece in path.split(';')[1:]:
+ # make a guess on how to index
+ # XXX need to apply \ quoting on '!!
+ if isint(piece):
+ p += "[%s]" % piece
+ else:
+ p += "['%s']" % piece
+ return p
+
+ def store(path, object):
+ if result_type == 'VALUE':
+ result.append(object)
+ elif result_type == 'IPATH': # Index format path (Python ext)
+ # return list of list of indices -- can be used w/o "eval" or split
+ result.append(path.split(';')[1:])
+ else: # PATH
+ result.append(as_path(path))
+ return path
+
+ def trace(expr, obj, path):
+ if debug:
+ print "trace", expr, "/", path
+ if expr:
+ x = expr.split(';')
+ loc = x[0]
+ x = ';'.join(x[1:])
+ if debug:
+ print "\t", loc, type(obj)
+ if loc == "*":
+ def f03(key, loc, expr, obj, path):
+ if debug > 1:
+ print "\tf03", key, loc, expr, path
+ trace(s(key, expr), obj, path)
+
+ walk(loc, x, obj, path, f03)
+ elif loc == "..":
+ trace(x, obj, path)
+
+ def f04(key, loc, expr, obj, path):
+ if debug > 1:
+ print "\tf04", key, loc, expr, path
+ if isinstance(obj, dict):
+ if key in obj:
+ trace(s('..', expr), obj[key], s(path, key))
+ else:
+ if key < len(obj):
+ trace(s('..', expr), obj[key], s(path, key))
+
+ walk(loc, x, obj, path, f04)
+ elif loc == "!":
+ # Perl jsonpath extension: return keys
+ def f06(key, loc, expr, obj, path):
+ if isinstance(obj, dict):
+ trace(expr, key, path)
+
+ walk(loc, x, obj, path, f06)
+ elif isinstance(obj, dict) and loc in obj:
+ trace(x, obj[loc], s(path, loc))
+ elif isinstance(obj, list) and isint(loc):
+ iloc = int(loc)
+ if len(obj) >= iloc:
+ trace(x, obj[iloc], s(path, loc))
+ else:
+ # [(index_expression)]
+ if loc.startswith("(") and loc.endswith(")"):
+ if debug > 1:
+ print "index", loc
+ e = evalx(loc, obj)
+ trace(s(e, x), obj, path)
+ return
+
+ # ?(filter_expression)
+ if loc.startswith("?(") and loc.endswith(")"):
+ if debug > 1:
+ print "filter", loc
+
+ def f05(key, loc, expr, obj, path):
+ if debug > 1:
+ print "f05", key, loc, expr, path
+ if isinstance(obj, dict):
+ eval_result = evalx(loc, obj[key])
+ else:
+ eval_result = evalx(loc, obj[int(key)])
+ if eval_result:
+ trace(s(key, expr), obj, path)
+
+ loc = loc[2:-1]
+ walk(loc, x, obj, path, f05)
+ return
+
+ m = re.match(r'(-?[0-9]*):(-?[0-9]*):?(-?[0-9]*)$', loc)
+ if m:
+ if isinstance(obj, (dict, list)):
+ def max(x, y):
+ if x > y:
+ return x
+ return y
+
+ def min(x, y):
+ if x < y:
+ return x
+ return y
+
+ objlen = len(obj)
+ s0 = m.group(1)
+ s1 = m.group(2)
+ s2 = m.group(3)
+
+ # XXX int("badstr") raises exception
+ start = int(s0) if s0 else 0
+ end = int(s1) if s1 else objlen
+ step = int(s2) if s2 else 1
+
+ if start < 0:
+ start = max(0, start + objlen)
+ else:
+ start = min(objlen, start)
+ if end < 0:
+ end = max(0, end + objlen)
+ else:
+ end = min(objlen, end)
+
+ for i in xrange(start, end, step):
+ trace(s(i, x), obj, path)
+ return
+
+ # after (expr) & ?(expr)
+ if loc.find(",") >= 0:
+ # [index,index....]
+ for piece in re.split(r"'?,'?", loc):
+ if debug > 1:
+ print "piece", piece
+ trace(s(piece, x), obj, path)
+ else:
+ store(path, obj)
+
+ def walk(loc, expr, obj, path, funct):
+ if isinstance(obj, list):
+ for i in xrange(0, len(obj)):
+ funct(i, loc, expr, obj, path)
+ elif isinstance(obj, dict):
+ for key in obj:
+ funct(key, loc, expr, obj, path)
+
+ def evalx(loc, obj):
+ """eval expression"""
+
+ if debug:
+ print "evalx", loc
+
+ # a nod to JavaScript. doesn't work for @.name.name.length
+ # Write len(@.name.name) instead!!!
+ loc = loc.replace("@.length", "len(__obj)")
+
+ loc = loc.replace("&&", " and ").replace("||", " or ")
+
+ # replace !@.name with 'name' not in obj
+ # XXX handle !@.name.name.name....
+ def notvar(m):
+ return "'%s' not in __obj" % m.group(1)
+
+ loc = re.sub("!@\.([a-zA-Z@_]+)", notvar, loc)
+
+ # replace @.name.... with __obj['name']....
+ # handle @.name[.name...].length
+ def varmatch(m):
+ def brackets(elts):
+ ret = "__obj"
+ for e in elts:
+ if isint(e):
+ ret += "[%s]" % e # ain't necessarily so
+ else:
+ ret += "['%s']" % e # XXX beware quotes!!!!
+ return ret
+
+ g1 = m.group(1)
+ elts = g1.split('.')
+ if elts[-1] == "length":
+ return "len(%s)" % brackets(elts[1:-1])
+ return brackets(elts[1:])
+
+ loc = re.sub(r'(?<!\\)(@\.[a-zA-Z@_.]+)', varmatch, loc)
+
+ # removed = -> == translation
+ # causes problems if a string contains =
+
+ # replace @ w/ "__obj", but \@ means a literal @
+ loc = re.sub(r'(?<!\\)@', "__obj", loc).replace(r'\@', '@')
+ if not use_eval:
+ if debug:
+ print "eval disabled"
+ raise Exception("eval disabled")
+ if debug:
+ print "eval", loc
+ try:
+ # eval w/ caller globals, w/ local "__obj"!
+ v = eval(loc, caller_globals, {'__obj': obj})
+ except Exception, e:
+ if debug:
+ print e
+ return False
+
+ if debug:
+ print "->", v
+ return v
+
+ # body of jsonpath()
+
+ # Get caller globals so eval can pick up user functions!!!
+ caller_globals = sys._getframe(1).f_globals
+ result = []
+ if expr and obj:
+ cleaned_expr = normalize(expr)
+ if cleaned_expr.startswith("$;"):
+ cleaned_expr = cleaned_expr[2:]
+
+ # XXX wrap this in a try??
+ trace(cleaned_expr, obj, '$')
+
+ if len(result) > 0:
+ return result
+ return False
+
+
+if __name__ == '__main__':
+ try:
+ import json # v2.6
+ except ImportError:
+ import simplejson as json
+
+ import sys
+
+ # XXX take options for output format, output file, debug level
+
+ if len(sys.argv) < 3 or len(sys.argv) > 4:
+ sys.stdout.write("Usage: jsonpath.py FILE PATH [OUTPUT_TYPE]\n")
+ sys.exit(1)
+
+ object = json.load(file(sys.argv[1]))
+ path = sys.argv[2]
+ format = 'VALUE'
+
+ if len(sys.argv) > 3:
+ # XXX verify?
+ format = sys.argv[3]
+
+ value = jsonpath(object, path, format)
+
+ if not value:
+ sys.exit(1)
+
+ f = sys.stdout
+ json.dump(value, f, sort_keys=True, indent=1)
+ f.write("\n")
+
+ sys.exit(0)
--- /dev/null
+[{"Name": "John"},{"Name": "Mark"}, {"Name": "Tom"}]
--- /dev/null
+[{"Name": "John"},{"Name": "Mark"}]
--- /dev/null
+[{"Name": "John"},{"Name": "Mark"}]
--- /dev/null
+[{"Name": "Mark"},{"Name": "John"}]
--- /dev/null
+# $.*[1]
+$.[?(@.Name=='Tom')]
+#$[@.Name is 'Tom']
+# "$.Name"
+# $.ietf-yang-library:modules-state.module[?(@.name=='extension-resync-message')]
+# $.ietf-yang-library:modules-state.module[?(@.name=='extension-switchfeatures-message')]
+# $.ietf-yang-library:modules-state.module
--- /dev/null
+#
+# aclservice-config
+$.ietf-yang-library:modules-state.module[?(@.name=='aclservice-config')]
+# $.ietf-yang-library:modules-state.module[?(@.name=='extension-switchfeatures-message')]
+# $.ietf-yang-library:modules-state.module
--- /dev/null
+#
+# Pre-filter file example (removes the module from ietf-yang-library:modules-state which name is 'extension-resync-message')
+#
+$.ietf-yang-library:modules-state.module[?(@.name=='extension-resync-message')]
+# $.ietf-yang-library:modules-state.module[?(@.name=='extension-switchfeatures-message')]
--- /dev/null
+$.ietf-yang-library:modules-state.module[?(@.name=='extension-resync-message')]
+$.ietf-yang-library:modules-state.module[?(@.name=='extension-switchfeatures-message')]
+# $.ietf-yang-library:modules-state.module
--- /dev/null
+#
+# Support file for a negative test case
+# none of this patterns will match anything
+#
+$.ietf-yang-library:modules-state.module[?(@.name=='blablah-name')]
+$.ietf-yang-library:modules-state.module[?(@.name=='blablah-name-two')]
--- /dev/null
+{"entity-owners:entity-owners":{"entity-type":[{"type":"bgp","entity":[{"id":"/general-entity:entity[general-entity:name='bgp']","candidate":[{"name":"member-1"}],"owner":"member-1"}]},{"type":"ovsdb-southbound-provider","entity":[{"id":"/general-entity:entity[general-entity:name='ovsdb-southbound-provider']","candidate":[{"name":"member-1"}],"owner":"member-1"}]},{"type":"org.opendaylight.mdsal.ServiceEntityType","entity":[{"id":"/odl-general-entity:entity[odl-general-entity:name='KeyedInstanceIdentifier{targetType=interface org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.network.topology.topology.Node, path=[org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.NetworkTopology, org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.network.topology.Topology[key=TopologyKey [_topologyId=Uri [_value=topology-netconf]]], org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.network.topology.topology.Node[key=NodeKey [_nodeId=Uri [_value=CONTROLLER1]]]]}']","candidate":[{"name":"member-1"}],"owner":"member-1"},{"id":"/odl-general-entity:entity[odl-general-entity:name='KeyedInstanceIdentifier{targetType=interface org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.network.topology.topology.Node, path=[org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.NetworkTopology, org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.network.topology.Topology[key=TopologyKey [_topologyId=Uri [_value=topology-netconf]]], org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.network.topology.topology.Node[key=NodeKey [_nodeId=Uri [_value=CONTROLLER2]]]]}']","candidate":[{"name":"member-1"}],"owner":"member-1"}]},{"type":"org.opendaylight.mdsal.AsyncServiceCloseEntityType","entity":[{"id":"/odl-general-entity:entity[odl-general-entity:name='KeyedInstanceIdentifier{targetType=interface org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.network.topology.topology.Node, path=[org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.NetworkTopology, org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.network.topology.Topology[key=TopologyKey [_topologyId=Uri [_value=topology-netconf]]], org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.network.topology.topology.Node[key=NodeKey [_nodeId=Uri [_value=CONTROLLER1]]]]}']","candidate":[{"name":"member-1"}],"owner":"member-1"},{"id":"/odl-general-entity:entity[odl-general-entity:name='KeyedInstanceIdentifier{targetType=interface org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.network.topology.topology.Node, path=[org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.NetworkTopology, org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.network.topology.Topology[key=TopologyKey [_topologyId=Uri [_value=topology-netconf]]], org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.network.topology.topology.Node[key=NodeKey [_nodeId=Uri [_value=CONTROLLER2]]]]}']","candidate":[{"name":"member-1"}],"owner":"member-1"}]},{"type":"iface","entity":[{"id":"/general-entity:entity[general-entity:name='iface']","candidate":[{"name":"member-1"}],"owner":"member-1"}]},{"type":"ovsdb-hwvtepsouthbound-provider","entity":[{"id":"/general-entity:entity[general-entity:name='ovsdb-hwvtepsouthbound-provider']","candidate":[{"name":"member-1"}],"owner":"member-1"}]},{"type":"arpmonitoring","entity":[{"id":"/general-entity:entity[general-entity:name='arpmonitoring']","candidate":[{"name":"member-1"}],"owner":"member-1"}]},{"type":"elan","entity":[{"id":"/general-entity:entity[general-entity:name='elan']","candidate":[{"name":"member-1"}],"owner":"member-1"}]},{"type":"netvirt-acl","entity":[{"id":"/general-entity:entity[general-entity:name='netvirt-acl']","candidate":[{"name":"member-1"}],"owner":"member-1"}]}]},"network-topology:network-topology":{"topology":[{"topology-id":"hwvtep:1"},{"topology-id":"flow:1"},{"topology-id":"ovsdb:1"},{"topology-id":"topology-netconf","node":[{"node-id":"CONTROLLER1","netconf-node-topology:connection-status":"connecting","netconf-node-topology:port":1830,"netconf-node-topology:host":"127.0.0.1"},{"node-id":"CONTROLLER2","netconf-node-topology:connection-status":"connecting","netconf-node-topology:port":1830,"netconf-node-topology:host":"127.0.0.1"}]},{"topology-id":"netvirt:1"}]},"ietf-yang-library:modules-state":{"module":[{"name":"entity-owners","revision":"2015-08-04","schema":"/modules/entity-owners/2015-08-04","namespace":"urn:opendaylight:params:xml:ns:yang:controller:md:sal:clustering:entity-owners","conformance-type":"import"},{"name":"opendaylight-md-sal-common","revision":"2013-10-28","schema":"/modules/opendaylight-md-sal-common/2013-10-28","namespace":"urn:opendaylight:params:xml:ns:yang:controller:md:sal:common","conformance-type":"import"},{"name":"ietf-restconf","revision":"2017-01-26","schema":"/modules/ietf-restconf/2017-01-26","namespace":"urn:ietf:params:xml:ns:yang:ietf-restconf","conformance-type":"import"},{"name":"ietf-yang-types","revision":"2010-09-24","schema":"/modules/ietf-yang-types/2010-09-24","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-types","conformance-type":"import"},{"name":"neutronvpn-config","revision":"2016-08-06","schema":"/modules/neutronvpn-config/2016-08-06","namespace":"urn:opendaylight:netvirt:neutronvpn:config","conformance-type":"import"},{"name":"batch-common","revision":"2016-03-22","schema":"/modules/batch-common/2016-03-22","namespace":"urn:opendaylight:service:batch:common","conformance-type":"import"},{"name":"iana-afn-safi","revision":"2013-07-04","schema":"/modules/iana-afn-safi/2013-07-04","namespace":"urn:ietf:params:xml:ns:yang:iana-afn-safi","conformance-type":"import"},{"name":"l3nexthop","revision":"2015-04-09","schema":"/modules/l3nexthop/2015-04-09","namespace":"urn:opendaylight:netvirt:l3nexthop","conformance-type":"import"},{"name":"dhcpservice-api","revision":"2015-07-10","schema":"/modules/dhcpservice-api/2015-07-10","namespace":"urn:opendaylight:params:xml:ns:yang:dhcpservice:api","conformance-type":"import"},{"name":"forwarding-rules-manager-config","revision":"2016-05-11","schema":"/modules/forwarding-rules-manager-config/2016-05-11","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:app:forwardingrules-manager:config","conformance-type":"import"},{"name":"general-entity","revision":"2015-08-20","schema":"/modules/general-entity/2015-08-20","namespace":"urn:opendaylight:params:xml:ns:yang:controller:md:sal:core:general-entity","conformance-type":"import"},{"name":"dhcpservice-config","revision":"2015-07-10","schema":"/modules/dhcpservice-config/2015-07-10","namespace":"urn:opendaylight:params:xml:ns:yang:dhcpservice:config","conformance-type":"import"},{"name":"aclservice-config","revision":"2016-08-06","schema":"/modules/aclservice-config/2016-08-06","namespace":"urn:opendaylight:netvirt:aclservice-config","conformance-type":"import"},{"name":"ietf-yang-types","revision":"2013-07-15","schema":"/modules/ietf-yang-types/2013-07-15","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-types","conformance-type":"import"},{"name":"flow-errors","revision":"2013-11-16","schema":"/modules/flow-errors/2013-11-16","namespace":"urn:opendaylight:flow:errors","conformance-type":"import"},{"name":"credential-store","revision":"2015-02-26","schema":"/modules/credential-store/2015-02-26","namespace":"urn:opendaylight:params:xml:ns:yang:aaa:credential-store","conformance-type":"import"},{"name":"rpc-context","revision":"2013-06-17","schema":"/modules/rpc-context/2013-06-17","namespace":"urn:ietf:params:xml:ns:yang:rpc-context","conformance-type":"import"},{"name":"opendaylight-queue-types","revision":"2013-09-25","schema":"/modules/opendaylight-queue-types/2013-09-25","namespace":"urn:opendaylight:flow:types:queue","conformance-type":"import"},{"name":"vpn-rpc","revision":"2016-02-01","schema":"/modules/vpn-rpc/2016-02-01","namespace":"urn:opendaylight:netvirt:vpn:rpc","conformance-type":"import"},{"name":"neutron-attrs","revision":"2015-07-12","schema":"/modules/neutron-attrs/2015-07-12","namespace":"urn:opendaylight:neutron-attrs","conformance-type":"import"},{"name":"neutron-vpnaas","revision":"2015-07-12","schema":"/modules/neutron-vpnaas/2015-07-12","namespace":"urn:opendaylight:neutron-vpnaas","conformance-type":"import"},{"name":"lldp-speaker","revision":"2014-10-23","schema":"/modules/lldp-speaker/2014-10-23","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:applications:lldp-speaker","conformance-type":"import"},{"name":"opendaylight-port-types","revision":"2013-09-25","schema":"/modules/opendaylight-port-types/2013-09-25","namespace":"urn:opendaylight:flow:types:port","conformance-type":"import"},{"name":"neutron-bgpvpns","revision":"2015-09-03","schema":"/modules/neutron-bgpvpns/2015-09-03","namespace":"urn:opendaylight:neutron-bgpvpns","conformance-type":"import"},{"name":"openflow-types","revision":"2013-07-31","schema":"/modules/openflow-types/2013-07-31","namespace":"urn:opendaylight:openflow:common:types","conformance-type":"import"},{"name":"notifications","revision":"2008-07-14","schema":"/modules/notifications/2008-07-14","namespace":"urn:ietf:params:xml:ns:netconf:notification:1.0","conformance-type":"import"},{"name":"openflow-provider-config","revision":"2016-05-10","schema":"/modules/openflow-provider-config/2016-05-10","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:provider:config","conformance-type":"import"},{"name":"yang-ext","revision":"2013-07-09","schema":"/modules/yang-ext/2013-07-09","namespace":"urn:opendaylight:yang:extension:yang-ext","conformance-type":"import"},{"name":"odl-fib","revision":"2015-03-30","schema":"/modules/odl-fib/2015-03-30","namespace":"urn:opendaylight:netvirt:fibmanager","conformance-type":"import"},{"name":"data-export-import","revision":"2016-09-21","schema":"/modules/data-export-import/2016-09-21","namespace":"urn:opendaylight:daexim","conformance-type":"import"},{"name":"data-export-import-internal","revision":"2016-09-21","schema":"/modules/data-export-import-internal/2016-09-21","namespace":"urn:opendaylight:daexim-internal","conformance-type":"import"},{"name":"cluster-admin","revision":"2015-10-13","schema":"/modules/cluster-admin/2015-10-13","namespace":"urn:opendaylight:params:xml:ns:yang:controller:md:sal:cluster:admin","conformance-type":"import"},{"name":"lldp-speaker-config","revision":"2016-05-12","schema":"/modules/lldp-speaker-config/2016-05-12","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:applications:lldp-speaker:config","conformance-type":"import"},{"name":"aaa-encrypt-service-config","revision":"2016-09-15","schema":"/modules/aaa-encrypt-service-config/2016-09-15","namespace":"config:aaa:authn:encrypt:service:config","conformance-type":"import"},{"name":"topology-lldp-discovery-config","revision":"2016-05-11","schema":"/modules/topology-lldp-discovery-config/2016-05-11","namespace":"urn:opendaylight:params:xml:ns:yang:topology-lldp-discovery:config","conformance-type":"import"},{"name":"barrier-common","revision":"2016-03-15","schema":"/modules/barrier-common/2016-03-15","namespace":"urn:opendaylight:service:barrier:common","conformance-type":"import"},{"name":"odl-general-entity","revision":"2015-09-30","schema":"/modules/odl-general-entity/2015-09-30","namespace":"urn:opendaylight:params:xml:ns:yang:mdsal:core:general-entity","conformance-type":"import"},{"name":"opendaylight-meter-types","revision":"2013-09-18","schema":"/modules/opendaylight-meter-types/2013-09-18","namespace":"urn:opendaylight:meter:types","conformance-type":"import"},{"name":"neutron-ml2-services","revision":"2014-09-30","schema":"/modules/neutron-ml2-services/2014-09-30","namespace":"urn:ericsson:neutron:ml2","conformance-type":"import"},{"name":"neutron-ml3-services","revision":"2014-09-30","schema":"/modules/neutron-ml3-services/2014-09-30","namespace":"urn:ericsson:neutron:ml3","conformance-type":"import"},{"name":"sal-remote","revision":"2014-01-14","schema":"/modules/sal-remote/2014-01-14","namespace":"urn:opendaylight:params:xml:ns:yang:controller:md:sal:remote","conformance-type":"import"},{"name":"sal-remote-augment","revision":"2014-07-08","schema":"/modules/sal-remote-augment/2014-07-08","namespace":"urn:sal:restconf:event:subscription","conformance-type":"import"},{"name":"lock-manager","revision":"2016-04-13","schema":"/modules/lock-manager/2016-04-13","namespace":"urn:opendaylight:genius:lockmanager","conformance-type":"import"},{"name":"opendaylight-statistics-types","revision":"2013-09-25","schema":"/modules/opendaylight-statistics-types/2013-09-25","namespace":"urn:opendaylight:model:statistics:types","conformance-type":"import"},{"name":"neutron-sfc","revision":"2016-05-11","schema":"/modules/neutron-sfc/2016-05-11","namespace":"urn:opendaylight:neutron-sfc","conformance-type":"import"},{"name":"aaa-cert","revision":"2015-11-26","schema":"/modules/aaa-cert/2015-11-26","namespace":"urn:opendaylight:yang:aaa:cert","conformance-type":"import"},{"name":"neutron-networks","revision":"2015-07-12","schema":"/modules/neutron-networks/2015-07-12","namespace":"urn:opendaylight:neutron-networks","conformance-type":"import"},{"name":"neutron-trunks","revision":"2017-01-18","schema":"/modules/neutron-trunks/2017-01-18","namespace":"urn:opendaylight:neutron-trunks","conformance-type":"import"},{"name":"neutron-hostconfig","revision":"2015-07-12","schema":"/modules/neutron-hostconfig/2015-07-12","namespace":"urn:opendaylight:neutron-hostconfig","conformance-type":"import"},{"name":"nc-notifications","revision":"2008-07-14","schema":"/modules/nc-notifications/2008-07-14","namespace":"urn:ietf:params:xml:ns:netmod:notification","conformance-type":"import"},{"name":"ietf-inet-types","revision":"2013-07-15","schema":"/modules/ietf-inet-types/2013-07-15","namespace":"urn:ietf:params:xml:ns:yang:ietf-inet-types","conformance-type":"import"},{"name":"neutron-types","revision":"2016-05-17","schema":"/modules/neutron-types/2016-05-17","namespace":"urn:opendaylight:neutron-types","conformance-type":"import"},{"name":"ebgp","revision":"2015-09-01","schema":"/modules/ebgp/2015-09-01","namespace":"urn:ericsson:params:xml:ns:yang:ebgp","conformance-type":"import"},{"name":"opendaylight-arbitrary-bitmask-fields","revision":"2016-01-30","schema":"/modules/opendaylight-arbitrary-bitmask-fields/2016-01-30","namespace":"urn:opendaylight:arbitrary:bitmask:fields","conformance-type":"import"},{"name":"ietf-restconf","revision":"2013-10-19","schema":"/modules/ietf-restconf/2013-10-19","namespace":"urn:ietf:params:xml:ns:yang:ietf-restconf","conformance-type":"import"},{"name":"opendaylight-inventory","revision":"2013-08-19","schema":"/modules/opendaylight-inventory/2013-08-19","namespace":"urn:opendaylight:inventory","conformance-type":"import"},{"name":"neighbor-discovery","revision":"2016-06-20","schema":"/modules/neighbor-discovery/2016-06-20","namespace":"urn:opendaylight:netvirt:ipv6service:nd:packet","conformance-type":"import"},{"name":"odl-nat","revision":"2016-01-11","schema":"/modules/odl-nat/2016-01-11","namespace":"urn:opendaylight:netvirt:natservice","conformance-type":"import"},{"name":"aliveness-monitor","revision":"2016-04-11","schema":"/modules/aliveness-monitor/2016-04-11","namespace":"urn:opendaylight:genius:alivenessmonitor","conformance-type":"import"},{"name":"ietf-yang-library","revision":"2016-06-21","schema":"/modules/ietf-yang-library/2016-06-21","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-library","conformance-type":"import"},{"name":"odl-nat-rpc","revision":"2017-02-09","schema":"/modules/odl-nat-rpc/2017-02-09","namespace":"urn:opendaylight:netvirt:natservice:rpc","conformance-type":"import"},{"name":"start-resync-download-notification","revision":"2014-02-07","schema":"/modules/start-resync-download-notification/2014-02-07","namespace":"urn:ericsson:resync:start:notification","conformance-type":"import"},{"name":"ietf-netconf","revision":"2011-06-01","schema":"/modules/ietf-netconf/2011-06-01","feature":["rollback-on-error","xpath","validate","writable-running","confirmed-commit","startup","url","candidate"],"namespace":"urn:ietf:params:xml:ns:netconf:base:1.0","conformance-type":"import"},{"name":"neutron-provider","revision":"2015-07-12","schema":"/modules/neutron-provider/2015-07-12","namespace":"urn:opendaylight:neutron-provider","conformance-type":"import"},{"name":"sal-queue","revision":"2015-03-05","schema":"/modules/sal-queue/2015-03-05","namespace":"urn:opendaylight:queue:service","conformance-type":"import"},{"name":"openflowplugin-experimenter-types","revision":"2015-10-20","schema":"/modules/openflowplugin-experimenter-types/2015-10-20","namespace":"urn:opendaylight:openflowplugin:experimenter:types","conformance-type":"import"},{"name":"vpn-config","revision":"2016-11-30","schema":"/modules/vpn-config/2016-11-30","namespace":"urn:opendaylight:netvirt:vpn:config","conformance-type":"import"},{"name":"ietf-yang-library","revision":"2016-04-09","schema":"/modules/ietf-yang-library/2016-04-09","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-library","conformance-type":"import"},{"name":"network-topology","revision":"2013-07-12","schema":"/modules/network-topology/2013-07-12","namespace":"urn:TBD:params:xml:ns:yang:network-topology","conformance-type":"import"},{"name":"l3-unicast-igp-topology","revision":"2013-07-12","schema":"/modules/l3-unicast-igp-topology/2013-07-12","namespace":"urn:TBD:params:xml:ns:yang:nt:l3-unicast-igp-topology","conformance-type":"import"},{"name":"ietf-inet-types","revision":"2010-09-24","schema":"/modules/ietf-inet-types/2010-09-24","namespace":"urn:ietf:params:xml:ns:yang:ietf-inet-types","conformance-type":"import"},{"name":"switch-features-notification","revision":"2013-08-19","schema":"/modules/switch-features-notification/2013-08-19","namespace":"urn:ericsson:switch-features:notification","conformance-type":"import"},{"name":"id-manager","revision":"2016-04-06","schema":"/modules/id-manager/2016-04-06","namespace":"urn:opendaylight:genius:idmanager","conformance-type":"import"},{"name":"system-notifications","revision":"2013-09-27","schema":"/modules/system-notifications/2013-09-27","namespace":"urn:opendaylight:openflow:system","conformance-type":"import"},{"name":"ted","revision":"2013-07-12","schema":"/modules/ted/2013-07-12","namespace":"urn:TBD:params:xml:ns:yang:network:ted","conformance-type":"import"},{"name":"statistics-manager-control","revision":"2015-08-12","schema":"/modules/statistics-manager-control/2015-08-12","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:sm:control","conformance-type":"import"},{"name":"opendaylight-l2-types","revision":"2013-08-27","schema":"/modules/opendaylight-l2-types/2013-08-27","namespace":"urn:opendaylight:l2:types","conformance-type":"import"},{"name":"isis-topology","revision":"2013-07-12","schema":"/modules/isis-topology/2013-07-12","namespace":"urn:TBD:params:xml:ns:yang:network:isis-topology","conformance-type":"import"},{"name":"elan-config","revision":"2015-07-10","schema":"/modules/elan-config/2015-07-10","namespace":"urn:opendaylight:netvirt:elan:config","conformance-type":"import"},{"name":"experimenter-flow-types","revision":"2014-04-25","schema":"/modules/experimenter-flow-types/2014-04-25","namespace":"urn:ericsson:experimenter:openflow:types","conformance-type":"import"},{"name":"flow-capable-transaction","revision":"2015-03-04","schema":"/modules/flow-capable-transaction/2015-03-04","namespace":"urn:opendaylight:flow:transaction","conformance-type":"import"},{"name":"sal-port","revision":"2013-11-07","schema":"/modules/sal-port/2013-11-07","namespace":"urn:opendaylight:port:service","conformance-type":"import"},{"name":"forwardingrules-manager-reconciliation","revision":"2015-08-04","schema":"/modules/forwardingrules-manager-reconciliation/2015-08-04","namespace":"urn:ericsson:reconciliation:service","conformance-type":"import"},{"name":"node-config","revision":"2014-10-15","schema":"/modules/node-config/2014-10-15","namespace":"urn:opendaylight:module:config","conformance-type":"import"},{"name":"switch-features-extension","revision":"2014-02-07","schema":"/modules/switch-features-extension/2014-02-07","namespace":"urn:ericsson:switch-features:rpcs:notification","conformance-type":"import"},{"name":"config","revision":"2013-04-05","schema":"/modules/config/2013-04-05","namespace":"urn:opendaylight:params:xml:ns:yang:controller:config","conformance-type":"import"},{"name":"openflow-provider","revision":"2014-03-26","schema":"/modules/openflow-provider/2014-03-26","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:common:config","conformance-type":"import"},{"name":"openflowplugin-extension-registry","revision":"2015-04-25","schema":"/modules/openflowplugin-extension-registry/2015-04-25","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:extension:api","conformance-type":"import"},{"name":"netty","revision":"2013-11-19","schema":"/modules/netty/2013-11-19","namespace":"urn:opendaylight:params:xml:ns:yang:controller:netty","conformance-type":"import"},{"name":"shutdown","revision":"2013-12-18","schema":"/modules/shutdown/2013-12-18","namespace":"urn:opendaylight:params:xml:ns:yang:controller:shutdown","conformance-type":"import"},{"name":"netconf-northbound-mapper","revision":"2015-01-14","schema":"/modules/netconf-northbound-mapper/2015-01-14","namespace":"urn:opendaylight:params:xml:ns:yang:controller:netconf:north:mapper","conformance-type":"import"},{"name":"opendaylight-config-dom-datastore","revision":"2014-06-17","schema":"/modules/opendaylight-config-dom-datastore/2014-06-17","namespace":"urn:opendaylight:params:xml:ns:yang:controller:md:sal:core:spi:config-dom-store","conformance-type":"import"},{"name":"shutdown-impl","revision":"2013-12-18","schema":"/modules/shutdown-impl/2013-12-18","namespace":"urn:opendaylight:params:xml:ns:yang:controller:shutdown:impl","conformance-type":"import"},{"name":"opendaylight-operational-dom-datastore","revision":"2014-06-17","schema":"/modules/opendaylight-operational-dom-datastore/2014-06-17","namespace":"urn:opendaylight:params:xml:ns:yang:controller:md:sal:core:spi:operational-dom-store","conformance-type":"import"},{"name":"threadpool","revision":"2013-04-09","schema":"/modules/threadpool/2013-04-09","namespace":"urn:opendaylight:params:xml:ns:yang:controller:threadpool","conformance-type":"import"},{"name":"nicira-extension","revision":"2014-07-11","schema":"/modules/nicira-extension/2014-07-11","namespace":"urn:opendaylight:params:xml:ns:yang:controller:config:openflowplugin:nx:config","conformance-type":"import"},{"name":"threadpool-impl-scheduled","revision":"2013-12-01","schema":"/modules/threadpool-impl-scheduled/2013-12-01","namespace":"urn:opendaylight:params:xml:ns:yang:controller:threadpool:impl:scheduled","conformance-type":"import"},{"name":"netty-timer","revision":"2013-11-19","schema":"/modules/netty-timer/2013-11-19","namespace":"urn:opendaylight:params:xml:ns:yang:controller:netty:timer","conformance-type":"import"},{"name":"openflow-switch-connection-provider","revision":"2014-03-28","schema":"/modules/openflow-switch-connection-provider/2014-03-28","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:switch:connection:provider","conformance-type":"import"},{"name":"netconf-northbound","revision":"2015-01-14","schema":"/modules/netconf-northbound/2015-01-14","namespace":"urn:opendaylight:params:xml:ns:yang:controller:config:netconf:northbound","conformance-type":"import"},{"name":"netconf-northbound-impl","revision":"2015-01-12","schema":"/modules/netconf-northbound-impl/2015-01-12","namespace":"urn:opendaylight:params:xml:ns:yang:controller:config:netconf:northbound:impl","conformance-type":"import"},{"name":"threadpool-impl-fixed","revision":"2013-12-01","schema":"/modules/threadpool-impl-fixed/2013-12-01","namespace":"urn:opendaylight:params:xml:ns:yang:controller:threadpool:impl:fixed","conformance-type":"import"},{"name":"threadpool-impl-flexible","revision":"2013-12-01","schema":"/modules/threadpool-impl-flexible/2013-12-01","namespace":"urn:opendaylight:params:xml:ns:yang:controller:threadpool:impl:flexible","conformance-type":"import"},{"name":"netty-event-executor","revision":"2013-11-12","schema":"/modules/netty-event-executor/2013-11-12","namespace":"urn:opendaylight:params:xml:ns:yang:controller:netty:eventexecutor","conformance-type":"import"},{"name":"inter-vpn-link","revision":"2016-03-11","schema":"/modules/inter-vpn-link/2016-03-11","namespace":"urn:opendaylight:params:xml:ns:yang:netvirt:inter-vpn-link","conformance-type":"import"},{"name":"shared-schema-repository","revision":"2015-07-27","schema":"/modules/shared-schema-repository/2015-07-27","namespace":"urn:opendaylight:params:xml:ns:yang:controller:netconf:topology:shared:schema:repository","conformance-type":"import"},{"name":"resource-manager","revision":"2016-06-22","schema":"/modules/resource-manager/2016-06-22","namespace":"urn:opendaylight:genius:resourcemanager","conformance-type":"import"},{"name":"actor-system-provider-service","revision":"2015-10-05","schema":"/modules/actor-system-provider-service/2015-10-05","namespace":"urn:opendaylight:params:xml:ns:yang:controller:config:actor-system-provider:service","conformance-type":"import"},{"name":"actor-system-provider-impl","revision":"2015-10-05","schema":"/modules/actor-system-provider-impl/2015-10-05","namespace":"urn:opendaylight:params:xml:ns:yang:controller:config:actor-system-provider:impl","conformance-type":"import"},{"name":"protocol-framework","revision":"2014-03-13","schema":"/modules/protocol-framework/2014-03-13","namespace":"urn:opendaylight:params:xml:ns:yang:controller:protocol:framework","conformance-type":"import"},{"name":"ospf-topology","revision":"2013-07-12","schema":"/modules/ospf-topology/2013-07-12","namespace":"urn:ietf:params:xml:ns:yang:ospf-topology","conformance-type":"import"},{"name":"opendaylight-md-sal-binding-v1-codec","revision":"2016-07-14","schema":"/modules/opendaylight-md-sal-binding-v1-codec/2016-07-14","namespace":"urn:opendaylight:params:xml:ns:yang:controller:md:sal:binding:v1:codec","conformance-type":"import"},{"name":"threadpool-impl","revision":"2013-04-05","schema":"/modules/threadpool-impl/2013-04-05","namespace":"urn:opendaylight:params:xml:ns:yang:controller:threadpool:impl","conformance-type":"import"},{"name":"cluster-singleton-service-spi","revision":"2016-07-18","schema":"/modules/cluster-singleton-service-spi/2016-07-18","namespace":"urn:opendaylight:params:xml:ns:yang:md:sal:config:spi:cluster-singleton-service","conformance-type":"import"},{"name":"sal-restconf-service","revision":"2015-07-08","schema":"/modules/sal-restconf-service/2015-07-08","namespace":"urn:opendaylight:params:xml:ns:yang:controller:sal:restconf:service","conformance-type":"import"},{"name":"nicira-extension-impl","revision":"2014-07-11","schema":"/modules/nicira-extension-impl/2014-07-11","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:nx:config:impl","conformance-type":"import"},{"name":"resync-output","revision":"2014-02-07","schema":"/modules/resync-output/2014-02-07","namespace":"urn:ericsson:resync:output:notification","conformance-type":"import"},{"name":"ietf-netconf-notifications","revision":"2012-02-06","schema":"/modules/ietf-netconf-notifications/2012-02-06","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-notifications","conformance-type":"import"},{"name":"opendaylight-md-sal-binding","revision":"2013-10-28","schema":"/modules/opendaylight-md-sal-binding/2013-10-28","namespace":"urn:opendaylight:params:xml:ns:yang:controller:md:sal:binding","conformance-type":"import"},{"name":"aaa-cert-mdsal","revision":"2016-03-21","schema":"/modules/aaa-cert-mdsal/2016-03-21","namespace":"urn:opendaylight:yang:aaa:cert:mdsal","conformance-type":"import"},{"name":"cluster-admin-provider","revision":"2015-10-13","schema":"/modules/cluster-admin-provider/2015-10-13","namespace":"urn:opendaylight:params:xml:ns:yang:controller:config:cluster-admin-provider","conformance-type":"import"},{"name":"lockmanager-impl","revision":"2016-04-06","schema":"/modules/lockmanager-impl/2016-04-06","namespace":"urn:opendaylight:genius:lockmanager:impl","conformance-type":"import"},{"name":"threadgroup","revision":"2013-11-07","schema":"/modules/threadgroup/2013-11-07","namespace":"urn:opendaylight:params:xml:ns:yang:controller:netty:threadgroup","conformance-type":"import"},{"name":"netconf-northbound-tcp","revision":"2015-04-23","schema":"/modules/netconf-northbound-tcp/2015-04-23","namespace":"urn:opendaylight:params:xml:ns:yang:controller:netconf:northbound:tcp","conformance-type":"import"},{"name":"odl-netconf-cfg","revision":"2014-04-08","schema":"/modules/odl-netconf-cfg/2014-04-08","namespace":"urn:opendaylight:params:xml:ns:yang:controller:config:netconf","conformance-type":"import"},{"name":"odl-netconfig-client-cfg","revision":"2014-04-08","schema":"/modules/odl-netconfig-client-cfg/2014-04-08","namespace":"urn:opendaylight:params:xml:ns:yang:controller:config:netconf:client:dispatcher","conformance-type":"import"},{"name":"opendaylight-port-statistics","revision":"2013-12-14","schema":"/modules/opendaylight-port-statistics/2013-12-14","namespace":"urn:opendaylight:port:statistics","conformance-type":"import"},{"name":"ted","revision":"2013-10-21","schema":"/modules/ted/2013-10-21","namespace":"urn:TBD:params:xml:ns:yang:network:ted","conformance-type":"import"},{"name":"ietf-netconf-monitoring","revision":"2010-10-04","schema":"/modules/ietf-netconf-monitoring/2010-10-04","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-monitoring","conformance-type":"import"},{"name":"ietf-netconf-monitoring-extension","revision":"2013-12-10","schema":"/modules/ietf-netconf-monitoring-extension/2013-12-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-monitoring-extension","conformance-type":"import"},{"name":"data-export-import-spi","revision":"2016-08-16","schema":"/modules/data-export-import-spi/2016-08-16","namespace":"urn:opendaylight:daexim-spi","conformance-type":"import"},{"name":"opendaylight-md-sal-dom","revision":"2013-10-28","schema":"/modules/opendaylight-md-sal-dom/2013-10-28","namespace":"urn:opendaylight:params:xml:ns:yang:controller:md:sal:dom","conformance-type":"import"},{"name":"opendaylight-inmemory-datastore-provider","revision":"2014-06-17","schema":"/modules/opendaylight-inmemory-datastore-provider/2014-06-17","namespace":"urn:opendaylight:params:xml:ns:yang:controller:inmemory-datastore-provider","conformance-type":"import"},{"name":"distributed-datastore-provider","revision":"2014-06-12","schema":"/modules/distributed-datastore-provider/2014-06-12","namespace":"urn:opendaylight:params:xml:ns:yang:controller:config:distributed-datastore-provider","conformance-type":"import"},{"name":"opendaylight-pingpong-broker","revision":"2014-11-07","schema":"/modules/opendaylight-pingpong-broker/2014-11-07","namespace":"urn:opendaylight:params:xml:ns:yang:controller:md:sal:dom:pingpong","conformance-type":"import"},{"name":"opendaylight-rest-connector","revision":"2014-07-24","schema":"/modules/opendaylight-rest-connector/2014-07-24","namespace":"urn:opendaylight:params:xml:ns:yang:controller:md:sal:rest:connector","conformance-type":"import"},{"name":"odl-sal-netconf-connector-cfg","revision":"2015-08-03","schema":"/modules/odl-sal-netconf-connector-cfg/2015-08-03","namespace":"urn:opendaylight:params:xml:ns:yang:controller:md:sal:connector:netconf","conformance-type":"import"},{"name":"netconf-topology","revision":"2015-07-27","schema":"/modules/netconf-topology/2015-07-27","namespace":"urn:opendaylight:params:xml:ns:yang:controller:netconf:topology","conformance-type":"import"},{"name":"opendaylight-sal-binding-broker-impl","revision":"2013-10-28","schema":"/modules/opendaylight-sal-binding-broker-impl/2013-10-28","namespace":"urn:opendaylight:params:xml:ns:yang:controller:md:sal:binding:impl","conformance-type":"import"},{"name":"netconf-auth","revision":"2015-07-15","schema":"/modules/netconf-auth/2015-07-15","namespace":"urn:opendaylight:params:xml:ns:yang:controller:config:netconf:auth","conformance-type":"import"},{"name":"netconf-northbound-ssh","revision":"2015-01-14","schema":"/modules/netconf-northbound-ssh/2015-01-14","namespace":"urn:opendaylight:params:xml:ns:yang:controller:netconf:northbound:ssh","conformance-type":"import"},{"name":"aaa-authn-netconf-plugin","revision":"2015-07-15","schema":"/modules/aaa-authn-netconf-plugin/2015-07-15","namespace":"config:aaa:authn:netconf:plugin","conformance-type":"import"},{"name":"cloud-servicechain-api","revision":"2015-12-11","schema":"/modules/cloud-servicechain-api/2015-12-11","namespace":"urn:opendaylight:netvirt:cloud-servicechain:api","conformance-type":"import"},{"name":"network-topology","revision":"2013-10-21","schema":"/modules/network-topology/2013-10-21","namespace":"urn:TBD:params:xml:ns:yang:network-topology","conformance-type":"import"},{"name":"hwvtep","revision":"2015-09-01","schema":"/modules/hwvtep/2015-09-01","namespace":"urn:opendaylight:params:xml:ns:yang:ovsdb:hwvtep","conformance-type":"import"},{"name":"opendaylight-topology","revision":"2013-10-30","schema":"/modules/opendaylight-topology/2013-10-30","namespace":"urn:opendaylight:model:topology:general","conformance-type":"import"},{"name":"l3-unicast-igp-topology","revision":"2013-10-21","schema":"/modules/l3-unicast-igp-topology/2013-10-21","namespace":"urn:TBD:params:xml:ns:yang:nt:l3-unicast-igp-topology","conformance-type":"import"},{"name":"isis-topology","revision":"2013-10-21","schema":"/modules/isis-topology/2013-10-21","namespace":"urn:TBD:params:xml:ns:yang:network:isis-topology","conformance-type":"import"},{"name":"opendaylight-topology-view","revision":"2013-10-30","schema":"/modules/opendaylight-topology-view/2013-10-30","namespace":"urn:opendaylight:model:topology:view","conformance-type":"import"},{"name":"ospf-topology","revision":"2013-10-21","schema":"/modules/ospf-topology/2013-10-21","namespace":"urn:TBD:params:xml:ns:yang:ospf-topology","conformance-type":"import"},{"name":"opendaylight-topology-inventory","revision":"2013-10-30","schema":"/modules/opendaylight-topology-inventory/2013-10-30","namespace":"urn:opendaylight:model:topology:inventory","conformance-type":"import"},{"name":"resync-notification","revision":"2014-02-07","schema":"/modules/resync-notification/2014-02-07","namespace":"urn:ericsson:resync:rpcs:notification","conformance-type":"import"},{"name":"sal-experimenter-mp-message","revision":"2015-10-20","schema":"/modules/sal-experimenter-mp-message/2015-10-20","namespace":"urn:opendaylight:experimenter-mp-message:service","conformance-type":"import"},{"name":"netconf-node-inventory","revision":"2014-01-08","schema":"/modules/netconf-node-inventory/2014-01-08","namespace":"urn:opendaylight:netconf-node-inventory","conformance-type":"import"},{"name":"netconf-northbound-notification","revision":"2015-08-06","schema":"/modules/netconf-northbound-notification/2015-08-06","namespace":"urn:opendaylight:params:xml:ns:yang:controller:netconf:northbound:notification","conformance-type":"import"},{"name":"openflowjava-nx-api-config","revision":"2014-07-11","schema":"/modules/openflowjava-nx-api-config/2014-07-11","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:ofjava:nx:api:config","conformance-type":"import"},{"name":"openflowjava-nx-config","revision":"2014-07-11","schema":"/modules/openflowjava-nx-config/2014-07-11","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:ofjava:nx:config","conformance-type":"import"},{"name":"flow-topology-discovery","revision":"2013-08-19","schema":"/modules/flow-topology-discovery/2013-08-19","namespace":"urn:opendaylight:flow:topology:discovery","conformance-type":"import"},{"name":"openflow-extensible-match","revision":"2015-02-25","schema":"/modules/openflow-extensible-match/2015-02-25","namespace":"urn:opendaylight:openflow:oxm","conformance-type":"import"},{"name":"experimenter-match-type","revision":"2014-03-06","schema":"/modules/experimenter-match-type/2014-03-06","namespace":"urn:experimenter:matchExp","conformance-type":"import"},{"name":"openflow-action","revision":"2015-02-03","schema":"/modules/openflow-action/2015-02-03","namespace":"urn:opendaylight:openflow:common:action","conformance-type":"import"},{"name":"openflow-instruction","revision":"2013-07-31","schema":"/modules/openflow-instruction/2013-07-31","namespace":"urn:opendaylight:openflow:common:instruction","conformance-type":"import"},{"name":"nicira-action","revision":"2014-04-21","schema":"/modules/nicira-action/2014-04-21","namespace":"urn:opendaylight:openflowjava:nx:action","conformance-type":"import"},{"name":"nicira-match","revision":"2014-04-21","schema":"/modules/nicira-match/2014-04-21","namespace":"urn:opendaylight:openflowjava:nx:match","conformance-type":"import"},{"name":"odl-mdsalutil","revision":"2016-04-06","schema":"/modules/odl-mdsalutil/2016-04-06","namespace":"urn:opendaylight:genius:mdsalutil","conformance-type":"import"},{"name":"resourcemanager-impl","revision":"2016-04-06","schema":"/modules/resourcemanager-impl/2016-04-06","namespace":"urn:opendaylight:genius:resourcemanager:impl","conformance-type":"import"},{"name":"arputil-impl","revision":"2016-04-06","schema":"/modules/arputil-impl/2016-04-06","namespace":"urn:opendaylight:genius:arputil:impl","conformance-type":"import"},{"name":"resync-error-notification","revision":"2014-02-07","schema":"/modules/resync-error-notification/2014-02-07","namespace":"urn:ericsson:resync:error:notification","conformance-type":"import"},{"name":"sal-echo","revision":"2015-03-05","schema":"/modules/sal-echo/2015-03-05","namespace":"urn:opendaylight:echo:service","conformance-type":"import"},{"name":"remote-rpc-connector","revision":"2014-07-07","schema":"/modules/remote-rpc-connector/2014-07-07","namespace":"urn:opendaylight:params:xml:ns:yang:controller:config:remote-rpc-connector","conformance-type":"import"},{"name":"vpnservice-dhcp","revision":"2016-04-28","schema":"/modules/vpnservice-dhcp/2016-04-28","namespace":"urn:opendaylight:netvirt:dhcp","conformance-type":"import"},{"name":"opendaylight-ipv6-arbitrary-bitmask-fields","revision":"2016-02-24","schema":"/modules/opendaylight-ipv6-arbitrary-bitmask-fields/2016-02-24","namespace":"urn:opendaylight:opendaylight-ipv6-arbitrary-bitmask-fields","conformance-type":"import"},{"name":"opendaylight-match-types","revision":"2013-10-26","schema":"/modules/opendaylight-match-types/2013-10-26","namespace":"urn:opendaylight:model:match:types","conformance-type":"import"},{"name":"opendaylight-action-types","revision":"2013-11-12","schema":"/modules/opendaylight-action-types/2013-11-12","namespace":"urn:opendaylight:action:types","conformance-type":"import"},{"name":"experimenter-action-types","revision":"2014-02-28","schema":"/modules/experimenter-action-types/2014-02-28","namespace":"urn:ericsson:experimenter:action:types","conformance-type":"import"},{"name":"opendaylight-group-types","revision":"2013-10-18","schema":"/modules/opendaylight-group-types/2013-10-18","namespace":"urn:opendaylight:group:types","conformance-type":"import"},{"name":"sal-group","revision":"2013-09-18","schema":"/modules/sal-group/2013-09-18","namespace":"urn:opendaylight:group:service","conformance-type":"import"},{"name":"sal-groups-batch","revision":"2016-03-15","schema":"/modules/sal-groups-batch/2016-03-15","namespace":"urn:opendaylight:groups:service","conformance-type":"import"},{"name":"opendaylight-sal-dom-broker-impl","revision":"2013-10-28","schema":"/modules/opendaylight-sal-dom-broker-impl/2013-10-28","namespace":"urn:opendaylight:params:xml:ns:yang:controller:md:sal:dom:impl","conformance-type":"import"},{"name":"odl-concurrent-data-broker-cfg","revision":"2014-11-24","schema":"/modules/odl-concurrent-data-broker-cfg/2014-11-24","namespace":"urn:opendaylight:params:xml:ns:yang:controller:config:concurrent-data-broker","conformance-type":"import"},{"name":"mdsalutil-impl","revision":"2016-04-06","schema":"/modules/mdsalutil-impl/2016-04-06","namespace":"urn:opendaylight:genius:mdsalutil:impl","conformance-type":"import"},{"name":"ietf-network","revision":"2015-06-08","schema":"/modules/ietf-network/2015-06-08","namespace":"urn:ietf:params:xml:ns:yang:ietf-network","conformance-type":"import"},{"name":"ietf-network-topology","revision":"2015-06-08","schema":"/modules/ietf-network-topology/2015-06-08","namespace":"urn:ietf:params:xml:ns:yang:ietf-network-topology","conformance-type":"import"},{"name":"sal-meters-batch","revision":"2016-03-16","schema":"/modules/sal-meters-batch/2016-03-16","namespace":"urn:opendaylight:meters:service","conformance-type":"import"},{"name":"sal-meter","revision":"2013-09-18","schema":"/modules/sal-meter/2013-09-18","namespace":"urn:opendaylight:meter:service","conformance-type":"import"},{"name":"neutron-qos","revision":"2016-06-13","schema":"/modules/neutron-qos/2016-06-13","namespace":"urn:opendaylight:neutron-qos","conformance-type":"import"},{"name":"netconf-node-topology","revision":"2015-01-14","schema":"/modules/netconf-node-topology/2015-01-14","namespace":"urn:opendaylight:netconf-node-topology","conformance-type":"import"},{"name":"neutronvpn","revision":"2015-06-02","schema":"/modules/neutronvpn/2015-06-02","namespace":"urn:opendaylight:netvirt:neutronvpn","conformance-type":"import"},{"name":"ietf-restconf-monitoring","revision":"2017-01-26","schema":"/modules/ietf-restconf-monitoring/2017-01-26","namespace":"urn:ietf:params:xml:ns:yang:ietf-restconf-monitoring","conformance-type":"import"},{"name":"neutron-l2gateways","revision":"2015-07-12","schema":"/modules/neutron-l2gateways/2015-07-12","namespace":"urn:opendaylight:neutron-l2gateways","conformance-type":"import"},{"name":"opendaylight-flow-types","revision":"2013-10-26","schema":"/modules/opendaylight-flow-types/2013-10-26","namespace":"urn:opendaylight:flow:types","conformance-type":"import"},{"name":"fib-rpc","revision":"2016-01-21","schema":"/modules/fib-rpc/2016-01-21","namespace":"urn:opendaylight:netvirt:fib:rpc","conformance-type":"import"},{"name":"opendaylight-table-types","revision":"2013-10-26","schema":"/modules/opendaylight-table-types/2013-10-26","namespace":"urn:opendaylight:table:types","conformance-type":"import"},{"name":"experimenter-table-types","revision":"2014-03-06","schema":"/modules/experimenter-table-types/2014-03-06","namespace":"urn:ericsson:experimenter:table:types","conformance-type":"import"},{"name":"flow-node-inventory","revision":"2013-08-19","schema":"/modules/flow-node-inventory/2013-08-19","namespace":"urn:opendaylight:flow:inventory","conformance-type":"import"},{"name":"opendaylight-queue-statistics","revision":"2013-12-16","schema":"/modules/opendaylight-queue-statistics/2013-12-16","namespace":"urn:opendaylight:queue:statistics","conformance-type":"import"},{"name":"sal-flows-batch","revision":"2016-03-14","schema":"/modules/sal-flows-batch/2016-03-14","namespace":"urn:opendaylight:flows:service","conformance-type":"import"},{"name":"sal-table","revision":"2013-10-26","schema":"/modules/sal-table/2013-10-26","namespace":"urn:opendaylight:table:service","conformance-type":"import"},{"name":"packet-processing","revision":"2013-07-09","schema":"/modules/packet-processing/2013-07-09","namespace":"urn:opendaylight:packet:service","conformance-type":"import"},{"name":"experimenter-flow-types","revision":"2014-04-22","schema":"/modules/experimenter-flow-types/2014-04-22","namespace":"urn:ericsson:experimenter:flow:types","conformance-type":"import"},{"name":"sal-flat-batch","revision":"2016-03-21","schema":"/modules/sal-flat-batch/2016-03-21","namespace":"urn:opendaylight:flat-batch:service","conformance-type":"import"},{"name":"sal-flow","revision":"2013-08-19","schema":"/modules/sal-flow/2013-08-19","namespace":"urn:opendaylight:flow:service","conformance-type":"import"},{"name":"node-error","revision":"2014-04-10","schema":"/modules/node-error/2014-04-10","namespace":"urn:opendaylight:node:error:service","conformance-type":"import"},{"name":"opendaylight-group-statistics","revision":"2013-11-11","schema":"/modules/opendaylight-group-statistics/2013-11-11","namespace":"urn:opendaylight:group:statistics","conformance-type":"import"},{"name":"opendaylight-flow-table-statistics","revision":"2013-12-15","schema":"/modules/opendaylight-flow-table-statistics/2013-12-15","namespace":"urn:opendaylight:flow:table:statistics","conformance-type":"import"},{"name":"neutron-L3","revision":"2015-07-12","schema":"/modules/neutron-L3/2015-07-12","namespace":"urn:opendaylight:neutron-L3","conformance-type":"import"},{"name":"bgp","revision":"2013-07-15","schema":"/modules/bgp/2013-07-15","namespace":"urn:cisco:params:xml:ns:yang:bgp","conformance-type":"import"},{"name":"neutron-extensions","revision":"2016-06-17","schema":"/modules/neutron-extensions/2016-06-17","namespace":"urn:opendaylight:neutron-extensions","conformance-type":"import"},{"name":"neutron-constants","revision":"2015-07-12","schema":"/modules/neutron-constants/2015-07-12","namespace":"urn:opendaylight:neutron-constants","conformance-type":"import"},{"name":"neutron-fwaas","revision":"2015-07-12","schema":"/modules/neutron-fwaas/2015-07-12","namespace":"urn:opendaylight:neutron-fwaas","conformance-type":"import"},{"name":"neutron-ports","revision":"2015-07-12","schema":"/modules/neutron-ports/2015-07-12","namespace":"urn:opendaylight:neutron-ports","conformance-type":"import"},{"name":"neutron-metering","revision":"2015-07-12","schema":"/modules/neutron-metering/2015-07-12","namespace":"urn:opendaylight:neutron-metering","conformance-type":"import"},{"name":"neutron-sfc-flow-classifier","revision":"2016-05-11","schema":"/modules/neutron-sfc-flow-classifier/2016-05-11","namespace":"urn:opendaylight:neutron-sfc-flow-classifier","conformance-type":"import"},{"name":"neutron-lbaasv2","revision":"2015-07-12","schema":"/modules/neutron-lbaasv2/2015-07-12","namespace":"urn:opendaylight:neutron-lbaasv2","conformance-type":"import"},{"name":"neutron-secgroups","revision":"2015-07-12","schema":"/modules/neutron-secgroups/2015-07-12","namespace":"urn:opendaylight:neutron-secgroups","conformance-type":"import"},{"name":"idmanager-impl","revision":"2016-04-06","schema":"/modules/idmanager-impl/2016-04-06","namespace":"urn:opendaylight:genius:idmanager:impl","conformance-type":"import"},{"name":"ietf-interfaces","revision":"2014-05-08","schema":"/modules/ietf-interfaces/2014-05-08","feature":["pre-provisioning","arbitrary-names","if-mib"],"namespace":"urn:ietf:params:xml:ns:yang:ietf-interfaces","conformance-type":"import"},{"name":"l3vpn","revision":"2014-08-15","schema":"/modules/l3vpn/2014-08-15","namespace":"urn:huawei:params:xml:ns:yang:l3vpn","conformance-type":"import"},{"name":"ietf-packet-fields","revision":"2016-02-18","schema":"/modules/ietf-packet-fields/2016-02-18","namespace":"urn:ietf:params:xml:ns:yang:ietf-packet-fields","conformance-type":"import"},{"name":"elan","revision":"2015-06-02","schema":"/modules/elan/2015-06-02","namespace":"urn:opendaylight:netvirt:elan","conformance-type":"import"},{"name":"iana-if-type","revision":"2014-05-08","schema":"/modules/iana-if-type/2014-05-08","namespace":"urn:ietf:params:xml:ns:yang:iana-if-type","conformance-type":"import"},{"name":"odl-arputil","revision":"2016-04-06","schema":"/modules/odl-arputil/2016-04-06","namespace":"urn:opendaylight:genius:arputil","conformance-type":"import"},{"name":"etree","revision":"2016-06-14","schema":"/modules/etree/2016-06-14","namespace":"urn:opendaylight:netvirt:elan:etree","conformance-type":"import"},{"name":"ietf-access-control-list","revision":"2016-02-18","schema":"/modules/ietf-access-control-list/2016-02-18","namespace":"urn:ietf:params:xml:ns:yang:ietf-access-control-list","conformance-type":"import"},{"name":"aclservice","revision":"2016-06-08","schema":"/modules/aclservice/2016-06-08","namespace":"urn:opendaylight:netvirt:aclservice","conformance-type":"import"},{"name":"interface-statistics","revision":"2015-08-24","schema":"/modules/interface-statistics/2015-08-24","namespace":"urn:opendaylight:genius:interface:statistics","conformance-type":"import"},{"name":"cloud-service-chain-state","revision":"2017-05-11","schema":"/modules/cloud-service-chain-state/2017-05-11","namespace":"urn:opendaylight:netvirt:cloud-servicechain:state","conformance-type":"import"},{"name":"elan-statistics","revision":"2015-08-24","schema":"/modules/elan-statistics/2015-08-24","namespace":"urn:opendaylight:netvirt:elan:statistics","conformance-type":"import"},{"name":"odl-interface","revision":"2016-04-06","schema":"/modules/odl-interface/2016-04-06","namespace":"urn:opendaylight:genius:interfacemanager","conformance-type":"import"},{"name":"itm-config","revision":"2016-04-06","schema":"/modules/itm-config/2016-04-06","namespace":"urn:opendaylight:genius:itm:config","conformance-type":"import"},{"name":"itm","revision":"2016-04-06","schema":"/modules/itm/2016-04-06","namespace":"urn:opendaylight:genius:itm","conformance-type":"import"},{"name":"odl-l3vpn","revision":"2013-09-11","schema":"/modules/odl-l3vpn/2013-09-11","namespace":"urn:opendaylight:netvirt:l3vpn","conformance-type":"import"},{"name":"itm-state","revision":"2016-04-06","schema":"/modules/itm-state/2016-04-06","namespace":"urn:opendaylight:genius:itm:op","conformance-type":"import"},{"name":"odl-interface-rpc","revision":"2016-04-06","schema":"/modules/odl-interface-rpc/2016-04-06","namespace":"urn:opendaylight:genius:interfacemanager:rpcs","conformance-type":"import"},{"name":"itm-rpc","revision":"2016-04-06","schema":"/modules/itm-rpc/2016-04-06","namespace":"urn:opendaylight:genius:itm:rpcs","conformance-type":"import"},{"name":"itm-impl","revision":"2016-04-06","schema":"/modules/itm-impl/2016-04-06","namespace":"urn:opendaylight:genius:itm:impl","conformance-type":"import"},{"name":"alivenessmonitor-impl","revision":"2016-04-06","schema":"/modules/alivenessmonitor-impl/2016-04-06","namespace":"urn:opendaylight:genius:alivenessmonitor:impl","conformance-type":"import"},{"name":"cluster-singleton-service-impl","revision":"2016-07-18","schema":"/modules/cluster-singleton-service-impl/2016-07-18","namespace":"urn:opendaylight:params:xml:ns:yang:md:sal:config:impl:cluster-singleton-service","conformance-type":"import"},{"name":"opendaylight-entity-ownership-service","revision":"2015-08-10","schema":"/modules/opendaylight-entity-ownership-service/2015-08-10","namespace":"urn:opendaylight:params:xml:ns:yang:controller:md:sal:core:spi:entity-ownership-service","conformance-type":"import"},{"name":"interfacemanager-impl","revision":"2016-04-06","schema":"/modules/interfacemanager-impl/2016-04-06","namespace":"urn:opendaylight:genius:interfacemanager:impl","conformance-type":"import"},{"name":"opendaylight-legacy-entity-ownership-service-provider","revision":"2016-02-26","schema":"/modules/opendaylight-legacy-entity-ownership-service-provider/2016-02-26","namespace":"urn:opendaylight:params:xml:ns:yang:controller:config:legacy-entity-ownership-service-provider","conformance-type":"import"},{"name":"openflow-provider-impl","revision":"2014-03-26","schema":"/modules/openflow-provider-impl/2014-03-26","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:common:config:impl","conformance-type":"import"},{"name":"overlay","revision":"2015-01-05","schema":"/modules/overlay/2015-01-05","namespace":"urn:opendaylight:params:xml:ns:yang:overlay","conformance-type":"import"},{"name":"ovsdb","revision":"2015-01-05","schema":"/modules/ovsdb/2015-01-05","namespace":"urn:opendaylight:params:xml:ns:yang:ovsdb","conformance-type":"import"},{"name":"odl-interface-meta","revision":"2016-04-06","schema":"/modules/odl-interface-meta/2016-04-06","namespace":"urn:opendaylight:genius:interfacemanager:meta","conformance-type":"import"},{"name":"netconf-northbound-notification-impl","revision":"2015-08-07","schema":"/modules/netconf-northbound-notification-impl/2015-08-07","namespace":"urn:opendaylight:params:xml:ns:yang:controller:netconf:northbound:notification:impl","conformance-type":"import"},{"name":"neutron-subnets","revision":"2015-07-12","schema":"/modules/neutron-subnets/2015-07-12","namespace":"urn:opendaylight:neutron-subnets","conformance-type":"import"},{"name":"neutron","revision":"2015-07-12","schema":"/modules/neutron/2015-07-12","namespace":"urn:opendaylight:neutron","conformance-type":"import"},{"name":"neutron-portsecurity","revision":"2015-07-12","schema":"/modules/neutron-portsecurity/2015-07-12","namespace":"urn:opendaylight:neutron-portsecurity","conformance-type":"import"},{"name":"neutron-binding","revision":"2015-07-12","schema":"/modules/neutron-binding/2015-07-12","namespace":"urn:opendaylight:neutron-binding","conformance-type":"import"},{"name":"neutron-port-ext","revision":"2015-11-25","schema":"/modules/neutron-port-ext/2015-11-25","namespace":"urn:opendaylight:neutron-port-ext","conformance-type":"import"},{"name":"neutron-qos-ext","revision":"2016-06-13","schema":"/modules/neutron-qos-ext/2016-06-13","namespace":"urn:opendaylight:neutron-qos-ext","conformance-type":"import"},{"name":"neutron-provider-ext","revision":"2015-07-12","schema":"/modules/neutron-provider-ext/2015-07-12","namespace":"urn:opendaylight:neutron-provider-ext","conformance-type":"import"},{"name":"neutron-L3-ext","revision":"2015-07-12","schema":"/modules/neutron-L3-ext/2015-07-12","namespace":"urn:opendaylight:neutron-L3-ext","conformance-type":"import"},{"name":"subscribe-to-notification","revision":"2016-10-28","schema":"/modules/subscribe-to-notification/2016-10-28","namespace":"subscribe:to:notification","conformance-type":"import"},{"name":"instance-identifier-patch-module","revision":"2015-11-21","schema":"/modules/instance-identifier-patch-module/2015-11-21","namespace":"instance:identifier:patch:module","conformance-type":"import"},{"name":"openflow-configuration","revision":"2014-06-30","schema":"/modules/openflow-configuration/2014-06-30","namespace":"urn:opendaylight:openflow:config","conformance-type":"import"},{"name":"openflow-switch-connection-provider-impl","revision":"2014-03-28","schema":"/modules/openflow-switch-connection-provider-impl/2014-03-28","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:switch:connection:provider:impl","conformance-type":"import"},{"name":"openflow-switch-connection-config","revision":"2016-05-06","schema":"/modules/openflow-switch-connection-config/2016-05-06","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:switch:connection:config","conformance-type":"import"},{"name":"sal-role","revision":"2015-07-27","schema":"/modules/sal-role/2015-07-27","namespace":"urn:opendaylight:role:service","conformance-type":"import"},{"name":"opendaylight-flow-statistics","revision":"2013-08-19","schema":"/modules/opendaylight-flow-statistics/2013-08-19","namespace":"urn:opendaylight:flow:statistics","conformance-type":"import"},{"name":"opendaylight-direct-statistics","revision":"2016-05-11","schema":"/modules/opendaylight-direct-statistics/2016-05-11","namespace":"urn:opendaylight:direct:statistics","conformance-type":"import"},{"name":"openflowplugin-extension-general","revision":"2014-07-14","schema":"/modules/openflowplugin-extension-general/2014-07-14","namespace":"urn:opendaylight:openflowplugin:extension:general","conformance-type":"import"},{"name":"openflowplugin-extension-nicira-match","revision":"2014-07-14","schema":"/modules/openflowplugin-extension-nicira-match/2014-07-14","namespace":"urn:opendaylight:openflowplugin:extension:nicira:match","conformance-type":"import"},{"name":"openflowplugin-extension-nicira-action","revision":"2014-07-14","schema":"/modules/openflowplugin-extension-nicira-action/2014-07-14","namespace":"urn:opendaylight:openflowplugin:extension:nicira:action","conformance-type":"import"},{"name":"interface-service-bindings","revision":"2016-04-06","schema":"/modules/interface-service-bindings/2016-04-06","namespace":"urn:opendaylight:genius:interfacemanager:servicebinding","conformance-type":"import"},{"name":"openflow-protocol","revision":"2013-07-31","schema":"/modules/openflow-protocol/2013-07-31","namespace":"urn:opendaylight:openflow:protocol","conformance-type":"import"},{"name":"openflow-resync","revision":"2014-02-06","schema":"/modules/openflow-resync/2014-02-06","namespace":"urn:opendaylight:openflow:resync","conformance-type":"import"},{"name":"opendaylight-switch-features-extension","revision":"2014-02-06","schema":"/modules/opendaylight-switch-features-extension/2014-02-06","namespace":"urn:opendaylight:switch-features:extension","conformance-type":"import"},{"name":"openflow-augments","revision":"2015-02-25","schema":"/modules/openflow-augments/2015-02-25","namespace":"urn:opendaylight:openflow:augments","conformance-type":"import"},{"name":"openflow-approved-extensions","revision":"2016-08-02","schema":"/modules/openflow-approved-extensions/2016-08-02","namespace":"urn:opendaylight:openflow:approved:extensions","conformance-type":"import"},{"name":"experimenter-action","revision":"2014-03-06","schema":"/modules/experimenter-action/2014-03-06","namespace":"urn:ericsson:openflow:experimenter:action","conformance-type":"import"},{"name":"opendaylight-meter-statistics","revision":"2013-11-11","schema":"/modules/opendaylight-meter-statistics/2013-11-11","namespace":"urn:opendaylight:meter:statistics","conformance-type":"import"},{"name":"aaa-cert-rpc","revision":"2015-12-15","schema":"/modules/aaa-cert-rpc/2015-12-15","namespace":"urn:opendaylight:yang:aaa:cert:rpc","conformance-type":"import"},{"name":"openflow-provider","revision":"2015-03-31","schema":"/modules/openflow-provider/2015-03-31","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:api","conformance-type":"import"},{"name":"openflow-plugin-provider-impl","revision":"2015-03-27","schema":"/modules/openflow-plugin-provider-impl/2015-03-27","namespace":"urn:opendaylight:params:xml:ns:yang:config:openflow:plugin:impl","conformance-type":"import"},{"name":"sal-experimenter-message","revision":"2015-10-20","schema":"/modules/sal-experimenter-message/2015-10-20","namespace":"urn:opendaylight:experimenter-message:service","conformance-type":"import"}],"module-set-id":"3"},"ietf-restconf-monitoring:restconf-state":{"capabilities":{"capability":["urn:ietf:params:restconf:capability:depth:1.0","urn:ietf:params:restconf:capability:fields:1.0","urn:ietf:params:restconf:capability:filter:1.0","urn:ietf:params:restconf:capability:replay:1.0","urn:ietf:params:restconf:capability:with-defaults:1.0"]}},"opendaylight-inventory:nodes":{},"aliveness-monitor:monitor-profiles":{"monitor-profile":[{"id":1,"failure-threshold":2,"monitor-interval":120000,"protocol-type":"arp","monitor-window":4}]},"lock-manager:locks":{}}
\ No newline at end of file
--- /dev/null
+{"entity-owners:entity-owners":{"entity-type":[{"type":"bgp","entity":[{"id":"/general-entity:entity[general-entity:name='bgp']","candidate":[{"name":"member-1"}],"owner":"member-1"}]},{"type":"ovsdb-southbound-provider","entity":[{"id":"/general-entity:entity[general-entity:name='ovsdb-southbound-provider']","candidate":[{"name":"member-1"}],"owner":"member-1"}]},{"type":"iface","entity":[{"id":"/general-entity:entity[general-entity:name='iface']","candidate":[{"name":"member-1"}],"owner":"member-1"}]},{"type":"org.opendaylight.mdsal.ServiceEntityType","entity":[{"id":"/odl-general-entity:entity[odl-general-entity:name='KeyedInstanceIdentifier{targetType=interface org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.network.topology.topology.Node, path=[org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.NetworkTopology, org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.network.topology.Topology[key=TopologyKey [_topologyId=Uri [_value=topology-netconf]]], org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.network.topology.topology.Node[key=NodeKey [_nodeId=Uri [_value=CONTROLLER1]]]]}']","candidate":[{"name":"member-1"}],"owner":"member-1"},{"id":"/odl-general-entity:entity[odl-general-entity:name='KeyedInstanceIdentifier{targetType=interface org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.network.topology.topology.Node, path=[org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.NetworkTopology, org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.network.topology.Topology[key=TopologyKey [_topologyId=Uri [_value=topology-netconf]]], org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.network.topology.topology.Node[key=NodeKey [_nodeId=Uri [_value=CONTROLLER2]]]]}']","candidate":[{"name":"member-1"}],"owner":"member-1"}]},{"type":"org.opendaylight.mdsal.AsyncServiceCloseEntityType","entity":[{"id":"/odl-general-entity:entity[odl-general-entity:name='KeyedInstanceIdentifier{targetType=interface org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.network.topology.topology.Node, path=[org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.NetworkTopology, org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.network.topology.Topology[key=TopologyKey [_topologyId=Uri [_value=topology-netconf]]], org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.network.topology.topology.Node[key=NodeKey [_nodeId=Uri [_value=CONTROLLER1]]]]}']","candidate":[{"name":"member-1"}],"owner":"member-1"},{"id":"/odl-general-entity:entity[odl-general-entity:name='KeyedInstanceIdentifier{targetType=interface org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.network.topology.topology.Node, path=[org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.NetworkTopology, org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.network.topology.Topology[key=TopologyKey [_topologyId=Uri [_value=topology-netconf]]], org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.network.topology.topology.Node[key=NodeKey [_nodeId=Uri [_value=CONTROLLER2]]]]}']","candidate":[{"name":"member-1"}],"owner":"member-1"}]},{"type":"ovsdb-hwvtepsouthbound-provider","entity":[{"id":"/general-entity:entity[general-entity:name='ovsdb-hwvtepsouthbound-provider']","candidate":[{"name":"member-1"}],"owner":"member-1"}]},{"type":"arpmonitoring","entity":[{"id":"/general-entity:entity[general-entity:name='arpmonitoring']","candidate":[{"name":"member-1"}],"owner":"member-1"}]},{"type":"elan","entity":[{"id":"/general-entity:entity[general-entity:name='elan']","candidate":[{"name":"member-1"}],"owner":"member-1"}]},{"type":"netvirt-acl","entity":[{"id":"/general-entity:entity[general-entity:name='netvirt-acl']","candidate":[{"name":"member-1"}],"owner":"member-1"}]}]},"network-topology:network-topology":{"topology":[{"topology-id":"hwvtep:1"},{"topology-id":"flow:1"},{"topology-id":"ovsdb:1"},{"topology-id":"topology-netconf","node":[{"node-id":"CONTROLLER1","netconf-node-topology:clustered-connection-status":{"netconf-master-node":"akka.tcp://opendaylight-cluster-data@127.0.0.1:2550"},"netconf-node-topology:available-capabilities":{"available-capability":["(urn:opendaylight:genius:lockmanager:impl?revision=2016-04-06)lockmanager-impl","(urn:ericsson:experimenter:openflow:types?revision=2014-04-25)experimenter-flow-types","(urn:ietf:params:xml:ns:yang:ietf-inet-types?revision=2010-09-24)ietf-inet-types","(urn:opendaylight:params:xml:ns:yang:controller:sal:restconf:service?revision=2015-07-08)sal-restconf-service","(urn:opendaylight:genius:resourcemanager?revision=2016-06-22)resource-manager","(urn:opendaylight:meters:service?revision=2016-03-16)sal-meters-batch","(urn:opendaylight:params:xml:ns:yang:controller:threadpool?revision=2013-04-09)threadpool","(urn:opendaylight:params:xml:ns:yang:controller:md:sal:remote?revision=2014-01-14)sal-remote","(urn:opendaylight:netvirt:aclservice?revision=2016-06-08)aclservice","(urn:opendaylight:params:xml:ns:yang:openflowplugin:sm:control?revision=2015-08-12)statistics-manager-control","(urn:opendaylight:openflowplugin:extension:nicira:action?revision=2014-07-14)openflowplugin-extension-nicira-action","(urn:opendaylight:params:xml:ns:yang:controller:md:sal:core:spi:operational-dom-store?revision=2014-06-17)opendaylight-operational-dom-datastore","(urn:opendaylight:params:xml:ns:yang:controller:shutdown:impl?revision=2013-12-18)shutdown-impl","(urn:opendaylight:flows:service?revision=2016-03-14)sal-flows-batch","(urn:opendaylight:neutron-qos-ext?revision=2016-06-13)neutron-qos-ext","(urn:opendaylight:params:xml:ns:yang:aaa:credential-store?revision=2015-02-26)credential-store","(urn:ietf:params:xml:ns:yang:ietf-access-control-list?revision=2016-02-18)ietf-access-control-list","(urn:experimenter:matchExp?revision=2014-03-06)experimenter-match-type","(urn:TBD:params:xml:ns:yang:network-topology?revision=2013-10-21)network-topology","(urn:ericsson:neutron:ml3?revision=2014-09-30)neutron-ml3-services","(urn:opendaylight:params:xml:ns:yang:config:openflow:plugin:impl?revision=2015-03-27)openflow-plugin-provider-impl","(urn:opendaylight:params:xml:ns:yang:controller:netty:eventexecutor?revision=2013-11-12)netty-event-executor","(urn:opendaylight:params:xml:ns:yang:controller:threadpool:impl?revision=2013-04-05)threadpool-impl","(urn:ericsson:switch-features:notification?revision=2013-08-19)switch-features-notification","(urn:opendaylight:genius:interfacemanager:meta?revision=2016-04-06)odl-interface-meta","(urn:opendaylight:groups:service?revision=2016-03-15)sal-groups-batch","(urn:opendaylight:genius:alivenessmonitor?revision=2016-04-11)aliveness-monitor","(urn:opendaylight:flow:service?revision=2013-08-19)sal-flow","(urn:ietf:params:xml:ns:yang:ietf-netconf-monitoring?revision=2010-10-04)ietf-netconf-monitoring","(urn:opendaylight:queue:statistics?revision=2013-12-16)opendaylight-queue-statistics","(urn:opendaylight:model:topology:general?revision=2013-10-30)opendaylight-topology","(urn:ietf:params:xml:ns:yang:ietf-network-topology?revision=2015-06-08)ietf-network-topology","(urn:opendaylight:params:xml:ns:yang:controller:md:sal:cluster:admin?revision=2015-10-13)cluster-admin","(urn:opendaylight:neutron-extensions?revision=2016-06-17)neutron-extensions","(urn:opendaylight:params:xml:ns:yang:controller:config:concurrent-data-broker?revision=2014-11-24)odl-concurrent-data-broker-cfg","(urn:ietf:params:xml:ns:yang:ietf-yang-library?revision=2016-06-21)ietf-yang-library","(urn:opendaylight:netvirt:cloud-servicechain:state?revision=2017-05-11)cloud-service-chain-state","(urn:opendaylight:flow:transaction?revision=2015-03-04)flow-capable-transaction","(urn:opendaylight:neutron-attrs?revision=2015-07-12)neutron-attrs","(urn:ericsson:neutron:ml2?revision=2014-09-30)neutron-ml2-services","(urn:opendaylight:params:xml:ns:yang:controller:protocol:framework?revision=2014-03-13)protocol-framework","(urn:opendaylight:flow:types:port?revision=2013-09-25)opendaylight-port-types","(urn:opendaylight:params:xml:ns:yang:openflow:common:config?revision=2014-03-26)openflow-provider","(urn:opendaylight:neutron-L3-ext?revision=2015-07-12)neutron-L3-ext","(urn:opendaylight:netvirt:natservice:rpc?revision=2017-02-09)odl-nat-rpc","(urn:opendaylight:vendor:extension-resync-message?revision=2016-07-13)extension-resync-message","(urn:opendaylight:params:xml:ns:yang:controller:md:sal:clustering:entity-owners?revision=2015-08-04)entity-owners","(urn:opendaylight:neutron-sfc?revision=2016-05-11)neutron-sfc","(urn:opendaylight:genius:itm:config?revision=2016-04-06)itm-config","(urn:opendaylight:params:xml:ns:yang:controller:md:sal:core:spi:config-dom-store?revision=2014-06-17)opendaylight-config-dom-datastore","(urn:opendaylight:params:xml:ns:yang:openflowplugin:nx:config:impl?revision=2014-07-11)nicira-extension-impl","(urn:opendaylight:genius:interface:statistics?revision=2015-08-24)interface-statistics","(urn:opendaylight:neutron-hostconfig?revision=2015-07-12)neutron-hostconfig","(urn:TBD:params:xml:ns:yang:network:isis-topology?revision=2013-07-12)isis-topology","(urn:opendaylight:netvirt:vpn:rpc?revision=2016-02-01)vpn-rpc","(urn:opendaylight:netvirt:elan:statistics?revision=2015-08-24)elan-statistics","(urn:opendaylight:neutron-bgpvpns?revision=2015-09-03)neutron-bgpvpns","(urn:opendaylight:openflowplugin:extension:nicira:match?revision=2014-07-14)openflowplugin-extension-nicira-match","(urn:ericsson:experimenter:flow:types?revision=2014-04-22)experimenter-flow-types","(urn:opendaylight:params:xml:ns:yang:controller:md:sal:binding:v1:codec?revision=2016-07-14)opendaylight-md-sal-binding-v1-codec","(urn:ericsson:params:xml:ns:yang:ebgp?revision=2015-09-01)ebgp","(urn:opendaylight:node:error:service?revision=2014-04-10)node-error","(urn:ericsson:resync:rpcs:notification?revision=2014-02-07)resync-notification","(urn:ietf:params:xml:ns:yang:ospf-topology?revision=2013-07-12)ospf-topology","(urn:opendaylight:direct:statistics?revision=2016-05-11)opendaylight-direct-statistics","(urn:TBD:params:xml:ns:yang:network:ted?revision=2013-10-21)ted","(urn:opendaylight:openflowplugin:extension:resync?revision=2016-07-13)openflowplugin-extension-resync","(urn:opendaylight:netvirt:l3vpn?revision=2013-09-11)odl-l3vpn","(urn:opendaylight:params:xml:ns:yang:controller:netconf:topology?revision=2015-07-27)netconf-topology","(urn:opendaylight:vendor:extension-switchfeatures-message?revision=2016-07-13)extension-switchfeatures-message","(urn:opendaylight:params:xml:ns:yang:ovsdb?revision=2015-01-05)ovsdb","(urn:opendaylight:params:xml:ns:yang:config:openflow:experimenter-switchfeatures-provider?revision=2016-07-13)experimenter-switchfeatures-provider","(urn:opendaylight:yang:aaa:cert:mdsal?revision=2016-03-21)aaa-cert-mdsal","(urn:opendaylight:neutron-binding?revision=2015-07-12)neutron-binding","(urn:opendaylight:openflowplugin:experimenter:types?revision=2015-10-20)openflowplugin-experimenter-types","(urn:ietf:params:xml:ns:yang:ietf-interfaces?revision=2014-05-08)ietf-interfaces","(urn:opendaylight:params:xml:ns:yang:controller:md:sal:common?revision=2013-10-28)opendaylight-md-sal-common","(urn:opendaylight:params:xml:ns:yang:openflow:provider:config?revision=2016-05-10)openflow-provider-config","(urn:opendaylight:params:xml:ns:yang:controller:netty:timer?revision=2013-11-19)netty-timer","(urn:opendaylight:vendor:extension:resync:error:notification?revision=2016-02-07)resync-error-notification","(urn:opendaylight:params:xml:ns:yang:controller:inmemory-datastore-provider?revision=2014-06-17)opendaylight-inmemory-datastore-provider","(urn:opendaylight:genius:resourcemanager:impl?revision=2016-04-06)resourcemanager-impl","(urn:opendaylight:params:xml:ns:yang:netvirt:inter-vpn-link?revision=2016-03-11)inter-vpn-link","(urn:opendaylight:params:xml:ns:yang:controller:md:sal:connector:netconf?revision=2015-08-03)odl-sal-netconf-connector-cfg","(urn:ericsson:resync:start:notification?revision=2014-02-07)start-resync-download-notification","(urn:opendaylight:netvirt:cloud-servicechain:api?revision=2015-12-11)cloud-servicechain-api","(urn:opendaylight:netvirt:natservice?revision=2016-01-11)odl-nat","(urn:opendaylight:params:xml:ns:yang:md:sal:config:impl:cluster-singleton-service?revision=2016-07-18)cluster-singleton-service-impl","(urn:opendaylight:group:types?revision=2013-10-18)opendaylight-group-types","(urn:opendaylight:neutron-ports?revision=2015-07-12)neutron-ports","(urn:opendaylight:params:xml:ns:yang:controller:md:sal:binding:impl?revision=2013-10-28)opendaylight-sal-binding-broker-impl","(urn:opendaylight:genius:interfacemanager:servicebinding?revision=2016-04-06)interface-service-bindings","(urn:opendaylight:neutron-fwaas?revision=2015-07-12)neutron-fwaas","(urn:opendaylight:params:xml:ns:yang:controller:config:legacy-entity-ownership-service-provider?revision=2016-02-26)opendaylight-legacy-entity-ownership-service-provider","(urn:opendaylight:netvirt:dhcp?revision=2016-04-28)vpnservice-dhcp","(urn:opendaylight:netvirt:ipv6service:nd:packet?revision=2016-06-20)neighbor-discovery","(urn:opendaylight:params:xml:ns:yang:controller:netty?revision=2013-11-19)netty","(urn:opendaylight:neutron-subnets?revision=2015-07-12)neutron-subnets","(urn:ericsson:openflow:experimenter:action?revision=2014-03-06)experimenter-action","(urn:opendaylight:yang:extension:yang-ext?revision=2013-07-09)yang-ext","(urn:opendaylight:params:xml:ns:yang:openflowplugin:ofjava:nx:config?revision=2014-07-11)openflowjava-nx-config","(urn:opendaylight:service:barrier:common?revision=2016-03-15)barrier-common","(urn:ietf:params:xml:ns:yang:iana-if-type?revision=2014-05-08)iana-if-type","(urn:opendaylight:params:xml:ns:yang:controller:netconf:northbound:ssh?revision=2015-01-14)netconf-northbound-ssh","(urn:opendaylight:module:config?revision=2014-10-15)node-config","(urn:opendaylight:netvirt:aclservice-config?revision=2016-08-06)aclservice-config","(urn:opendaylight:params:xml:ns:yang:openflowplugin:ofjava:nx:api:config?revision=2014-07-11)openflowjava-nx-api-config","(urn:opendaylight:params:xml:ns:yang:openflow:common:config:impl?revision=2014-03-26)openflow-provider-impl","(urn:ietf:params:xml:ns:netconf:base:1.0?revision=2011-06-01)ietf-netconf","(urn:opendaylight:params:xml:ns:yang:ovsdb:hwvtep?revision=2015-09-01)hwvtep","(urn:opendaylight:params:xml:ns:yang:controller:threadpool:impl:scheduled?revision=2013-12-01)threadpool-impl-scheduled","(urn:opendaylight:genius:lockmanager?revision=2016-04-13)lock-manager","(urn:ericsson:switch-features:rpcs:notification?revision=2014-02-07)switch-features-extension","(urn:opendaylight:inventory?revision=2013-08-19)opendaylight-inventory","(urn:opendaylight:neutron-l2gateways?revision=2015-07-12)neutron-l2gateways","(urn:opendaylight:echo:service?revision=2015-03-05)sal-echo","(urn:opendaylight:neutron-secgroups?revision=2015-07-12)neutron-secgroups","(urn:opendaylight:params:xml:ns:yang:controller:md:sal:core:spi:entity-ownership-service?revision=2015-08-10)opendaylight-entity-ownership-service","(urn:opendaylight:neutron-metering?revision=2015-07-12)neutron-metering","(urn:opendaylight:params:xml:ns:yang:controller:threadpool:impl:fixed?revision=2013-12-01)threadpool-impl-fixed","(urn:opendaylight:table:service?revision=2013-10-26)sal-table","(urn:opendaylight:group:statistics?revision=2013-11-11)opendaylight-group-statistics","(urn:opendaylight:params:xml:ns:yang:openflow:api?revision=2015-03-31)openflow-provider","(urn:opendaylight:params:xml:ns:yang:controller:netconf:northbound:tcp?revision=2015-04-23)netconf-northbound-tcp","(urn:opendaylight:genius:mdsalutil?revision=2016-04-06)odl-mdsalutil","(urn:huawei:params:xml:ns:yang:l3vpn?revision=2014-08-15)l3vpn","(urn:opendaylight:openflowjava:extension-switchfeatures?revision=2016-07-13)openflowjava-extension-switchfeatures","(urn:opendaylight:service:batch:common?revision=2016-03-22)batch-common","(urn:opendaylight:params:xml:ns:yang:controller:netconf:topology:shared:schema:repository?revision=2015-07-27)shared-schema-repository","(urn:opendaylight:params:xml:ns:yang:openflowplugin:app:forwardingrules-manager:config?revision=2016-05-11)forwarding-rules-manager-config","(urn:opendaylight:action:types?revision=2013-11-12)opendaylight-action-types","(urn:opendaylight:genius:interfacemanager:impl?revision=2016-04-06)interfacemanager-impl","(urn:opendaylight:port:statistics?revision=2013-12-14)opendaylight-port-statistics","(urn:opendaylight:params:xml:ns:yang:controller:md:sal:core:general-entity?revision=2015-08-20)general-entity","(urn:opendaylight:params:xml:ns:yang:controller:config:netconf:auth?revision=2015-07-15)netconf-auth","(urn:opendaylight:netvirt:elan:config?revision=2015-07-10)elan-config","(urn:opendaylight:genius:idmanager?revision=2016-04-06)id-manager","(urn:opendaylight:netvirt:l3nexthop?revision=2015-04-09)l3nexthop","(urn:opendaylight:packet:service?revision=2013-07-09)packet-processing","(urn:opendaylight:netvirt:neutronvpn:config?revision=2016-08-06)neutronvpn-config","(urn:opendaylight:genius:arputil?revision=2016-04-06)odl-arputil","(urn:opendaylight:openflowjava:nx:match?revision=2014-04-21)nicira-match","(urn:opendaylight:table:types?revision=2013-10-26)opendaylight-table-types","(urn:TBD:params:xml:ns:yang:ospf-topology?revision=2013-10-21)ospf-topology","(urn:opendaylight:port:service?revision=2013-11-07)sal-port","(urn:opendaylight:neutron-trunks?revision=2017-01-18)neutron-trunks","(urn:opendaylight:params:xml:ns:yang:controller:md:sal:rest:connector?revision=2014-07-24)opendaylight-rest-connector","(urn:opendaylight:yang:aaa:cert?revision=2015-11-26)aaa-cert","urn:ietf:params:netconf:capability:notification:1.0","(urn:ietf:params:xml:ns:netmod:notification?revision=2008-07-14)nc-notifications","(urn:ietf:params:xml:ns:yang:ietf-netconf-notifications?revision=2012-02-06)ietf-netconf-notifications","(urn:opendaylight:neutron-portsecurity?revision=2015-07-12)neutron-portsecurity","(urn:opendaylight:openflow:oxm?revision=2015-02-25)openflow-extensible-match","(urn:opendaylight:neutron-sfc-flow-classifier?revision=2016-05-11)neutron-sfc-flow-classifier","(urn:opendaylight:neutron-networks?revision=2015-07-12)neutron-networks","(urn:opendaylight:params:xml:ns:yang:controller:shutdown?revision=2013-12-18)shutdown","(urn:opendaylight:neutron-types?revision=2016-05-17)neutron-types","(urn:opendaylight:experimenter-message:service?revision=2015-10-20)sal-experimenter-message","(urn:opendaylight:genius:mdsalutil:impl?revision=2016-04-06)mdsalutil-impl","(config:aaa:authn:netconf:plugin?revision=2015-07-15)aaa-authn-netconf-plugin","(urn:opendaylight:params:xml:ns:yang:controller:config:netconf:northbound?revision=2015-01-14)netconf-northbound","(urn:opendaylight:params:xml:ns:yang:controller:config:cluster-admin-provider?revision=2015-10-13)cluster-admin-provider","(urn:opendaylight:flow:table:statistics?revision=2013-12-15)opendaylight-flow-table-statistics","(urn:opendaylight:neutron-provider-ext?revision=2015-07-12)neutron-provider-ext","(urn:opendaylight:params:xml:ns:yang:controller:md:sal:dom?revision=2013-10-28)opendaylight-md-sal-dom","(urn:opendaylight:opendaylight-ipv6-arbitrary-bitmask-fields?revision=2016-02-24)opendaylight-ipv6-arbitrary-bitmask-fields","(urn:opendaylight:neutron?revision=2015-07-12)neutron","(urn:opendaylight:netconf-node-inventory?revision=2014-01-08)netconf-node-inventory","(urn:opendaylight:daexim-spi?revision=2016-08-16)data-export-import-spi","(urn:opendaylight:params:xml:ns:yang:controller:netty:threadgroup?revision=2013-11-07)threadgroup","(urn:opendaylight:genius:itm:op?revision=2016-04-06)itm-state","(urn:opendaylight:neutron-vpnaas?revision=2015-07-12)neutron-vpnaas","(urn:ietf:params:xml:ns:yang:ietf-restconf?revision=2017-01-26)ietf-restconf","(urn:opendaylight:params:xml:ns:yang:controller:config:remote-rpc-connector?revision=2014-07-07)remote-rpc-connector","(urn:opendaylight:netvirt:vpn:config?revision=2016-11-30)vpn-config","(urn:opendaylight:params:xml:ns:yang:topology-lldp-discovery:config?revision=2016-05-11)topology-lldp-discovery-config","(urn:ericsson:resync:output:notification?revision=2014-02-07)resync-output","(urn:opendaylight:params:xml:ns:yang:openflowplugin:extension:api?revision=2015-04-25)openflowplugin-extension-registry","(urn:opendaylight:openflowjava:nx:action?revision=2014-04-21)nicira-action","(urn:ietf:params:xml:ns:yang:rpc-context?revision=2013-06-17)rpc-context","(urn:opendaylight:params:xml:ns:yang:sdncconfig:impl?revision=2014-12-10)sdncconfig-impl","(urn:opendaylight:genius:arputil:impl?revision=2016-04-06)arputil-impl","(urn:cisco:params:xml:ns:yang:bgp?revision=2013-07-15)bgp","(urn:opendaylight:params:xml:ns:yang:controller:config:actor-system-provider:service?revision=2015-10-05)actor-system-provider-service","(urn:opendaylight:params:xml:ns:yang:controller:config:openflowplugin:nx:config?revision=2014-07-11)nicira-extension","(urn:opendaylight:params:xml:ns:yang:dhcpservice:api?revision=2015-07-10)dhcpservice-api","(subscribe:to:notification?revision=2016-10-28)subscribe-to-notification","(urn:opendaylight:flow:inventory?revision=2013-08-19)flow-node-inventory","(urn:ericsson:experimenter:action:types?revision=2014-02-28)experimenter-action-types","(urn:opendaylight:params:xml:ns:yang:openflow:applications:lldp-speaker?revision=2014-10-23)lldp-speaker","(urn:opendaylight:params:xml:ns:yang:controller:config:distributed-datastore-provider?revision=2014-06-12)distributed-datastore-provider","(urn:ietf:params:xml:ns:yang:ietf-yang-types?revision=2013-07-15)ietf-yang-types","(urn:opendaylight:model:statistics:types?revision=2013-09-25)opendaylight-statistics-types","(urn:TBD:params:xml:ns:yang:nt:l3-unicast-igp-topology?revision=2013-10-21)l3-unicast-igp-topology","(urn:opendaylight:params:xml:ns:yang:controller:md:sal:dom:impl?revision=2013-10-28)opendaylight-sal-dom-broker-impl","(urn:ietf:params:xml:ns:netconf:notification:1.0?revision=2008-07-14)notifications","(urn:opendaylight:neutron-provider?revision=2015-07-12)neutron-provider","(urn:opendaylight:vendor:extension:resync:output:notification?revision=2016-08-19)resync-output","(instance:identifier:patch:module?revision=2015-11-21)instance-identifier-patch-module","(urn:opendaylight:openflow:augments?revision=2015-02-25)openflow-augments","(urn:TBD:params:xml:ns:yang:network:isis-topology?revision=2013-10-21)isis-topology","(urn:opendaylight:daexim-internal?revision=2016-09-21)data-export-import-internal","(urn:opendaylight:arbitrary:bitmask:fields?revision=2016-01-30)opendaylight-arbitrary-bitmask-fields","(urn:opendaylight:netvirt:elan?revision=2015-06-02)elan","(urn:opendaylight:netvirt:elan:etree?revision=2016-06-14)etree","(urn:opendaylight:params:xml:ns:yang:controller:config:netconf?revision=2014-04-08)odl-netconf-cfg","(urn:opendaylight:neutron-lbaasv2?revision=2015-07-12)neutron-lbaasv2","(urn:opendaylight:genius:idmanager:impl?revision=2016-04-06)idmanager-impl","(urn:ericsson:reconciliation:service?revision=2015-08-04)forwardingrules-manager-reconciliation","(urn:opendaylight:flow:errors?revision=2013-11-16)flow-errors","(urn:opendaylight:openflow:resync?revision=2014-02-06)openflow-resync","(urn:opendaylight:params:xml:ns:yang:overlay?revision=2015-01-05)overlay","(urn:ietf:params:xml:ns:yang:ietf-inet-types?revision=2013-07-15)ietf-inet-types","(urn:opendaylight:genius:itm?revision=2016-04-06)itm","(urn:opendaylight:genius:interfacemanager?revision=2016-04-06)odl-interface","(urn:opendaylight:params:xml:ns:yang:openflow:switch:connection:provider:impl?revision=2014-03-28)openflow-switch-connection-provider-impl","(urn:opendaylight:params:xml:ns:yang:config:openflow:experimenter-resync-provider?revision=2016-07-13)experimenter-resync-provider","(urn:opendaylight:openflow:common:types?revision=2013-07-31)openflow-types","(urn:opendaylight:params:xml:ns:yang:controller:netconf:northbound:notification?revision=2015-08-06)netconf-northbound-notification","(urn:opendaylight:openflow:protocol?revision=2013-07-31)openflow-protocol","(urn:opendaylight:params:xml:ns:yang:dhcpservice:config?revision=2015-07-10)dhcpservice-config","(urn:opendaylight:params:xml:ns:yang:controller:config:actor-system-provider:impl?revision=2015-10-05)actor-system-provider-impl","(urn:opendaylight:yang:aaa:cert:rpc?revision=2015-12-15)aaa-cert-rpc","(urn:opendaylight:model:topology:inventory?revision=2013-10-30)opendaylight-topology-inventory","(urn:ietf:params:xml:ns:yang:ietf-yang-types?revision=2010-09-24)ietf-yang-types","(urn:opendaylight:genius:itm:rpcs?revision=2016-04-06)itm-rpc","urn:ietf:params:netconf:base:1.1","(urn:opendaylight:params:xml:ns:yang:controller:threadpool:impl:flexible?revision=2013-12-01)threadpool-impl-flexible","(urn:ietf:params:xml:ns:yang:ietf-restconf?revision=2013-10-19)ietf-restconf","(urn:opendaylight:netconf-node-topology?revision=2015-01-14)netconf-node-topology","(urn:opendaylight:meter:service?revision=2013-09-18)sal-meter","(urn:opendaylight:netvirt:fibmanager?revision=2015-03-30)odl-fib","(urn:opendaylight:netvirt:fib:rpc?revision=2016-01-21)fib-rpc","(urn:opendaylight:params:xml:ns:yang:controller:netconf:northbound:notification:impl?revision=2015-08-07)netconf-northbound-notification-impl","(urn:opendaylight:params:xml:ns:yang:openflow:switch:connection:config?revision=2016-05-06)openflow-switch-connection-config","(urn:ietf:params:xml:ns:yang:ietf-netconf-monitoring-extension?revision=2013-12-10)ietf-netconf-monitoring-extension","(urn:opendaylight:group:service?revision=2013-09-18)sal-group","urn:ietf:params:netconf:base:1.0","(urn:opendaylight:neutron-port-ext?revision=2015-11-25)neutron-port-ext","(urn:ietf:params:xml:ns:yang:ietf-network?revision=2015-06-08)ietf-network","(urn:opendaylight:openflow:config?revision=2014-06-30)openflow-configuration","urn:ietf:params:netconf:capability:exi:1.0","(urn:opendaylight:daexim?revision=2016-09-21)data-export-import","(urn:ietf:params:xml:ns:yang:iana-afn-safi?revision=2013-07-04)iana-afn-safi","(urn:opendaylight:genius:alivenessmonitor:impl?revision=2016-04-06)alivenessmonitor-impl","(urn:opendaylight:params:xml:ns:yang:openflow:applications:lldp-speaker:config?revision=2016-05-12)lldp-speaker-config","(urn:ietf:params:xml:ns:yang:ietf-restconf-monitoring?revision=2017-01-26)ietf-restconf-monitoring","(urn:opendaylight:genius:itm:impl?revision=2016-04-06)itm-impl","(urn:TBD:params:xml:ns:yang:network-topology?revision=2013-07-12)network-topology","(urn:opendaylight:openflowplugin:extension:switchfeatures?revision=2016-07-13)openflowplugin-extension-switchfeatures","(urn:opendaylight:neutron-constants?revision=2015-07-12)neutron-constants","(urn:opendaylight:openflow:common:instruction?revision=2013-07-31)openflow-instruction","(urn:opendaylight:params:xml:ns:yang:controller:config:netconf:northbound:impl?revision=2015-01-12)netconf-northbound-impl","(urn:opendaylight:flat-batch:service?revision=2016-03-21)sal-flat-batch","(urn:opendaylight:params:xml:ns:yang:md:sal:config:spi:cluster-singleton-service?revision=2016-07-18)cluster-singleton-service-spi","(urn:opendaylight:flow:types?revision=2013-10-26)opendaylight-flow-types","(urn:opendaylight:meter:statistics?revision=2013-11-11)opendaylight-meter-statistics","(urn:opendaylight:model:match:types?revision=2013-10-26)opendaylight-match-types","(urn:opendaylight:genius:interfacemanager:rpcs?revision=2016-04-06)odl-interface-rpc","(urn:opendaylight:flow:statistics?revision=2013-08-19)opendaylight-flow-statistics","(urn:opendaylight:experimenter-mp-message:service?revision=2015-10-20)sal-experimenter-mp-message","(urn:opendaylight:queue:service?revision=2015-03-05)sal-queue","(urn:opendaylight:openflow:system?revision=2013-09-27)system-notifications","(urn:opendaylight:openflow:common:action?revision=2015-02-03)openflow-action","(urn:opendaylight:openflowjava:extension-resync?revision=2016-07-13)openflowjava-extension-resync","(urn:opendaylight:neutron-qos?revision=2016-06-13)neutron-qos","(urn:opendaylight:params:xml:ns:yang:openflow:switch:connection:provider?revision=2014-03-28)openflow-switch-connection-provider","(urn:TBD:params:xml:ns:yang:network:ted?revision=2013-07-12)ted","(urn:opendaylight:role:service?revision=2015-07-27)sal-role","(urn:opendaylight:vendor:extension-switchfeatures:notification?revision=2016-08-19)switch-features-notification","(urn:opendaylight:params:xml:ns:yang:controller:config?revision=2013-04-05)config","(urn:opendaylight:openflow:approved:extensions?revision=2016-08-02)openflow-approved-extensions","(urn:sal:restconf:event:subscription?revision=2014-07-08)sal-remote-augment","(urn:opendaylight:openflowplugin:extension:general?revision=2014-07-14)openflowplugin-extension-general","(config:aaa:authn:encrypt:service:config?revision=2016-09-15)aaa-encrypt-service-config","(urn:opendaylight:params:xml:ns:yang:controller:md:sal:binding?revision=2013-10-28)opendaylight-md-sal-binding","(urn:opendaylight:switch-features:extension?revision=2014-02-06)opendaylight-switch-features-extension","(urn:opendaylight:params:xml:ns:yang:controller:md:sal:dom:pingpong?revision=2014-11-07)opendaylight-pingpong-broker","(urn:opendaylight:flow:topology:discovery?revision=2013-08-19)flow-topology-discovery","(urn:ericsson:experimenter:table:types?revision=2014-03-06)experimenter-table-types","(urn:TBD:params:xml:ns:yang:nt:l3-unicast-igp-topology?revision=2013-07-12)l3-unicast-igp-topology","(urn:ietf:params:xml:ns:yang:ietf-yang-library?revision=2016-04-09)ietf-yang-library","(urn:opendaylight:model:topology:view?revision=2013-10-30)opendaylight-topology-view","(urn:opendaylight:params:xml:ns:yang:controller:netconf:north:mapper?revision=2015-01-14)netconf-northbound-mapper","(urn:opendaylight:params:xml:ns:yang:controller:config:netconf:client:dispatcher?revision=2014-04-08)odl-netconfig-client-cfg","(urn:ietf:params:xml:ns:yang:ietf-packet-fields?revision=2016-02-18)ietf-packet-fields","(urn:ericsson:resync:error:notification?revision=2014-02-07)resync-error-notification","urn:ietf:params:netconf:capability:candidate:1.0","(urn:opendaylight:netvirt:neutronvpn?revision=2015-06-02)neutronvpn","(urn:opendaylight:meter:types?revision=2013-09-18)opendaylight-meter-types","(urn:opendaylight:flow:types:queue?revision=2013-09-25)opendaylight-queue-types","(urn:opendaylight:l2:types?revision=2013-08-27)opendaylight-l2-types","(urn:opendaylight:neutron-L3?revision=2015-07-12)neutron-L3","(urn:opendaylight:params:xml:ns:yang:mdsal:core:general-entity?revision=2015-09-30)odl-general-entity"]},"netconf-node-topology:host":"127.0.0.1","netconf-node-topology:unavailable-capabilities":{},"netconf-node-topology:connection-status":"connected","netconf-node-topology:port":1830},{"node-id":"CONTROLLER2","netconf-node-topology:clustered-connection-status":{"netconf-master-node":"akka.tcp://opendaylight-cluster-data@127.0.0.1:2550"},"netconf-node-topology:available-capabilities":{"available-capability":["(urn:opendaylight:genius:lockmanager:impl?revision=2016-04-06)lockmanager-impl","(urn:ericsson:experimenter:openflow:types?revision=2014-04-25)experimenter-flow-types","(urn:ietf:params:xml:ns:yang:ietf-inet-types?revision=2010-09-24)ietf-inet-types","(urn:opendaylight:params:xml:ns:yang:controller:sal:restconf:service?revision=2015-07-08)sal-restconf-service","(urn:opendaylight:genius:resourcemanager?revision=2016-06-22)resource-manager","(urn:opendaylight:meters:service?revision=2016-03-16)sal-meters-batch","(urn:opendaylight:params:xml:ns:yang:controller:threadpool?revision=2013-04-09)threadpool","(urn:opendaylight:params:xml:ns:yang:controller:md:sal:remote?revision=2014-01-14)sal-remote","(urn:opendaylight:netvirt:aclservice?revision=2016-06-08)aclservice","(urn:opendaylight:params:xml:ns:yang:openflowplugin:sm:control?revision=2015-08-12)statistics-manager-control","(urn:opendaylight:openflowplugin:extension:nicira:action?revision=2014-07-14)openflowplugin-extension-nicira-action","(urn:opendaylight:params:xml:ns:yang:controller:md:sal:core:spi:operational-dom-store?revision=2014-06-17)opendaylight-operational-dom-datastore","(urn:opendaylight:params:xml:ns:yang:controller:shutdown:impl?revision=2013-12-18)shutdown-impl","(urn:opendaylight:flows:service?revision=2016-03-14)sal-flows-batch","(urn:opendaylight:neutron-qos-ext?revision=2016-06-13)neutron-qos-ext","(urn:opendaylight:params:xml:ns:yang:aaa:credential-store?revision=2015-02-26)credential-store","(urn:ietf:params:xml:ns:yang:ietf-access-control-list?revision=2016-02-18)ietf-access-control-list","(urn:experimenter:matchExp?revision=2014-03-06)experimenter-match-type","(urn:TBD:params:xml:ns:yang:network-topology?revision=2013-10-21)network-topology","(urn:ericsson:neutron:ml3?revision=2014-09-30)neutron-ml3-services","(urn:opendaylight:params:xml:ns:yang:config:openflow:plugin:impl?revision=2015-03-27)openflow-plugin-provider-impl","(urn:opendaylight:params:xml:ns:yang:controller:netty:eventexecutor?revision=2013-11-12)netty-event-executor","(urn:opendaylight:params:xml:ns:yang:controller:threadpool:impl?revision=2013-04-05)threadpool-impl","(urn:ericsson:switch-features:notification?revision=2013-08-19)switch-features-notification","(urn:opendaylight:genius:interfacemanager:meta?revision=2016-04-06)odl-interface-meta","(urn:opendaylight:groups:service?revision=2016-03-15)sal-groups-batch","(urn:opendaylight:genius:alivenessmonitor?revision=2016-04-11)aliveness-monitor","(urn:opendaylight:flow:service?revision=2013-08-19)sal-flow","(urn:ietf:params:xml:ns:yang:ietf-netconf-monitoring?revision=2010-10-04)ietf-netconf-monitoring","(urn:opendaylight:queue:statistics?revision=2013-12-16)opendaylight-queue-statistics","(urn:opendaylight:model:topology:general?revision=2013-10-30)opendaylight-topology","(urn:ietf:params:xml:ns:yang:ietf-network-topology?revision=2015-06-08)ietf-network-topology","(urn:opendaylight:params:xml:ns:yang:controller:md:sal:cluster:admin?revision=2015-10-13)cluster-admin","(urn:opendaylight:neutron-extensions?revision=2016-06-17)neutron-extensions","(urn:opendaylight:params:xml:ns:yang:controller:config:concurrent-data-broker?revision=2014-11-24)odl-concurrent-data-broker-cfg","(urn:ietf:params:xml:ns:yang:ietf-yang-library?revision=2016-06-21)ietf-yang-library","(urn:opendaylight:netvirt:cloud-servicechain:state?revision=2017-05-11)cloud-service-chain-state","(urn:opendaylight:flow:transaction?revision=2015-03-04)flow-capable-transaction","(urn:opendaylight:neutron-attrs?revision=2015-07-12)neutron-attrs","(urn:ericsson:neutron:ml2?revision=2014-09-30)neutron-ml2-services","(urn:opendaylight:params:xml:ns:yang:controller:protocol:framework?revision=2014-03-13)protocol-framework","(urn:opendaylight:flow:types:port?revision=2013-09-25)opendaylight-port-types","(urn:opendaylight:params:xml:ns:yang:openflow:common:config?revision=2014-03-26)openflow-provider","(urn:opendaylight:neutron-L3-ext?revision=2015-07-12)neutron-L3-ext","(urn:opendaylight:netvirt:natservice:rpc?revision=2017-02-09)odl-nat-rpc","(urn:opendaylight:vendor:extension-resync-message?revision=2016-07-13)extension-resync-message","(urn:opendaylight:params:xml:ns:yang:controller:md:sal:clustering:entity-owners?revision=2015-08-04)entity-owners","(urn:opendaylight:neutron-sfc?revision=2016-05-11)neutron-sfc","(urn:opendaylight:genius:itm:config?revision=2016-04-06)itm-config","(urn:opendaylight:params:xml:ns:yang:controller:md:sal:core:spi:config-dom-store?revision=2014-06-17)opendaylight-config-dom-datastore","(urn:opendaylight:params:xml:ns:yang:openflowplugin:nx:config:impl?revision=2014-07-11)nicira-extension-impl","(urn:opendaylight:genius:interface:statistics?revision=2015-08-24)interface-statistics","(urn:opendaylight:neutron-hostconfig?revision=2015-07-12)neutron-hostconfig","(urn:TBD:params:xml:ns:yang:network:isis-topology?revision=2013-07-12)isis-topology","(urn:opendaylight:netvirt:vpn:rpc?revision=2016-02-01)vpn-rpc","(urn:opendaylight:netvirt:elan:statistics?revision=2015-08-24)elan-statistics","(urn:opendaylight:neutron-bgpvpns?revision=2015-09-03)neutron-bgpvpns","(urn:opendaylight:openflowplugin:extension:nicira:match?revision=2014-07-14)openflowplugin-extension-nicira-match","(urn:ericsson:experimenter:flow:types?revision=2014-04-22)experimenter-flow-types","(urn:opendaylight:params:xml:ns:yang:controller:md:sal:binding:v1:codec?revision=2016-07-14)opendaylight-md-sal-binding-v1-codec","(urn:ericsson:params:xml:ns:yang:ebgp?revision=2015-09-01)ebgp","(urn:opendaylight:node:error:service?revision=2014-04-10)node-error","(urn:ericsson:resync:rpcs:notification?revision=2014-02-07)resync-notification","(urn:ietf:params:xml:ns:yang:ospf-topology?revision=2013-07-12)ospf-topology","(urn:opendaylight:direct:statistics?revision=2016-05-11)opendaylight-direct-statistics","(urn:TBD:params:xml:ns:yang:network:ted?revision=2013-10-21)ted","(urn:opendaylight:openflowplugin:extension:resync?revision=2016-07-13)openflowplugin-extension-resync","(urn:opendaylight:netvirt:l3vpn?revision=2013-09-11)odl-l3vpn","(urn:opendaylight:params:xml:ns:yang:controller:netconf:topology?revision=2015-07-27)netconf-topology","(urn:opendaylight:vendor:extension-switchfeatures-message?revision=2016-07-13)extension-switchfeatures-message","(urn:opendaylight:params:xml:ns:yang:ovsdb?revision=2015-01-05)ovsdb","(urn:opendaylight:params:xml:ns:yang:config:openflow:experimenter-switchfeatures-provider?revision=2016-07-13)experimenter-switchfeatures-provider","(urn:opendaylight:yang:aaa:cert:mdsal?revision=2016-03-21)aaa-cert-mdsal","(urn:opendaylight:neutron-binding?revision=2015-07-12)neutron-binding","(urn:opendaylight:openflowplugin:experimenter:types?revision=2015-10-20)openflowplugin-experimenter-types","(urn:ietf:params:xml:ns:yang:ietf-interfaces?revision=2014-05-08)ietf-interfaces","(urn:opendaylight:params:xml:ns:yang:controller:md:sal:common?revision=2013-10-28)opendaylight-md-sal-common","(urn:opendaylight:params:xml:ns:yang:openflow:provider:config?revision=2016-05-10)openflow-provider-config","(urn:opendaylight:params:xml:ns:yang:controller:netty:timer?revision=2013-11-19)netty-timer","(urn:opendaylight:vendor:extension:resync:error:notification?revision=2016-02-07)resync-error-notification","(urn:opendaylight:params:xml:ns:yang:controller:inmemory-datastore-provider?revision=2014-06-17)opendaylight-inmemory-datastore-provider","(urn:opendaylight:genius:resourcemanager:impl?revision=2016-04-06)resourcemanager-impl","(urn:opendaylight:params:xml:ns:yang:netvirt:inter-vpn-link?revision=2016-03-11)inter-vpn-link","(urn:opendaylight:params:xml:ns:yang:controller:md:sal:connector:netconf?revision=2015-08-03)odl-sal-netconf-connector-cfg","(urn:ericsson:resync:start:notification?revision=2014-02-07)start-resync-download-notification","(urn:opendaylight:netvirt:cloud-servicechain:api?revision=2015-12-11)cloud-servicechain-api","(urn:opendaylight:netvirt:natservice?revision=2016-01-11)odl-nat","(urn:opendaylight:params:xml:ns:yang:md:sal:config:impl:cluster-singleton-service?revision=2016-07-18)cluster-singleton-service-impl","(urn:opendaylight:group:types?revision=2013-10-18)opendaylight-group-types","(urn:opendaylight:neutron-ports?revision=2015-07-12)neutron-ports","(urn:opendaylight:params:xml:ns:yang:controller:md:sal:binding:impl?revision=2013-10-28)opendaylight-sal-binding-broker-impl","(urn:opendaylight:genius:interfacemanager:servicebinding?revision=2016-04-06)interface-service-bindings","(urn:opendaylight:neutron-fwaas?revision=2015-07-12)neutron-fwaas","(urn:opendaylight:params:xml:ns:yang:controller:config:legacy-entity-ownership-service-provider?revision=2016-02-26)opendaylight-legacy-entity-ownership-service-provider","(urn:opendaylight:netvirt:dhcp?revision=2016-04-28)vpnservice-dhcp","(urn:opendaylight:netvirt:ipv6service:nd:packet?revision=2016-06-20)neighbor-discovery","(urn:opendaylight:params:xml:ns:yang:controller:netty?revision=2013-11-19)netty","(urn:opendaylight:neutron-subnets?revision=2015-07-12)neutron-subnets","(urn:ericsson:openflow:experimenter:action?revision=2014-03-06)experimenter-action","(urn:opendaylight:yang:extension:yang-ext?revision=2013-07-09)yang-ext","(urn:opendaylight:params:xml:ns:yang:openflowplugin:ofjava:nx:config?revision=2014-07-11)openflowjava-nx-config","(urn:opendaylight:service:barrier:common?revision=2016-03-15)barrier-common","(urn:ietf:params:xml:ns:yang:iana-if-type?revision=2014-05-08)iana-if-type","(urn:opendaylight:params:xml:ns:yang:controller:netconf:northbound:ssh?revision=2015-01-14)netconf-northbound-ssh","(urn:opendaylight:module:config?revision=2014-10-15)node-config","(urn:opendaylight:netvirt:aclservice-config?revision=2016-08-06)aclservice-config","(urn:opendaylight:params:xml:ns:yang:openflowplugin:ofjava:nx:api:config?revision=2014-07-11)openflowjava-nx-api-config","(urn:opendaylight:params:xml:ns:yang:openflow:common:config:impl?revision=2014-03-26)openflow-provider-impl","(urn:ietf:params:xml:ns:netconf:base:1.0?revision=2011-06-01)ietf-netconf","(urn:opendaylight:params:xml:ns:yang:ovsdb:hwvtep?revision=2015-09-01)hwvtep","(urn:opendaylight:params:xml:ns:yang:controller:threadpool:impl:scheduled?revision=2013-12-01)threadpool-impl-scheduled","(urn:opendaylight:genius:lockmanager?revision=2016-04-13)lock-manager","(urn:ericsson:switch-features:rpcs:notification?revision=2014-02-07)switch-features-extension","(urn:opendaylight:inventory?revision=2013-08-19)opendaylight-inventory","(urn:opendaylight:neutron-l2gateways?revision=2015-07-12)neutron-l2gateways","(urn:opendaylight:echo:service?revision=2015-03-05)sal-echo","(urn:opendaylight:neutron-secgroups?revision=2015-07-12)neutron-secgroups","(urn:opendaylight:params:xml:ns:yang:controller:md:sal:core:spi:entity-ownership-service?revision=2015-08-10)opendaylight-entity-ownership-service","(urn:opendaylight:neutron-metering?revision=2015-07-12)neutron-metering","(urn:opendaylight:params:xml:ns:yang:controller:threadpool:impl:fixed?revision=2013-12-01)threadpool-impl-fixed","(urn:opendaylight:table:service?revision=2013-10-26)sal-table","(urn:opendaylight:group:statistics?revision=2013-11-11)opendaylight-group-statistics","(urn:opendaylight:params:xml:ns:yang:openflow:api?revision=2015-03-31)openflow-provider","(urn:opendaylight:params:xml:ns:yang:controller:netconf:northbound:tcp?revision=2015-04-23)netconf-northbound-tcp","(urn:opendaylight:genius:mdsalutil?revision=2016-04-06)odl-mdsalutil","(urn:huawei:params:xml:ns:yang:l3vpn?revision=2014-08-15)l3vpn","(urn:opendaylight:openflowjava:extension-switchfeatures?revision=2016-07-13)openflowjava-extension-switchfeatures","(urn:opendaylight:service:batch:common?revision=2016-03-22)batch-common","(urn:opendaylight:params:xml:ns:yang:controller:netconf:topology:shared:schema:repository?revision=2015-07-27)shared-schema-repository","(urn:opendaylight:params:xml:ns:yang:openflowplugin:app:forwardingrules-manager:config?revision=2016-05-11)forwarding-rules-manager-config","(urn:opendaylight:action:types?revision=2013-11-12)opendaylight-action-types","(urn:opendaylight:genius:interfacemanager:impl?revision=2016-04-06)interfacemanager-impl","(urn:opendaylight:port:statistics?revision=2013-12-14)opendaylight-port-statistics","(urn:opendaylight:params:xml:ns:yang:controller:md:sal:core:general-entity?revision=2015-08-20)general-entity","(urn:opendaylight:params:xml:ns:yang:controller:config:netconf:auth?revision=2015-07-15)netconf-auth","(urn:opendaylight:netvirt:elan:config?revision=2015-07-10)elan-config","(urn:opendaylight:genius:idmanager?revision=2016-04-06)id-manager","(urn:opendaylight:netvirt:l3nexthop?revision=2015-04-09)l3nexthop","(urn:opendaylight:packet:service?revision=2013-07-09)packet-processing","(urn:opendaylight:netvirt:neutronvpn:config?revision=2016-08-06)neutronvpn-config","(urn:opendaylight:genius:arputil?revision=2016-04-06)odl-arputil","(urn:opendaylight:openflowjava:nx:match?revision=2014-04-21)nicira-match","(urn:opendaylight:table:types?revision=2013-10-26)opendaylight-table-types","(urn:TBD:params:xml:ns:yang:ospf-topology?revision=2013-10-21)ospf-topology","(urn:opendaylight:port:service?revision=2013-11-07)sal-port","(urn:opendaylight:neutron-trunks?revision=2017-01-18)neutron-trunks","(urn:opendaylight:params:xml:ns:yang:controller:md:sal:rest:connector?revision=2014-07-24)opendaylight-rest-connector","(urn:opendaylight:yang:aaa:cert?revision=2015-11-26)aaa-cert","urn:ietf:params:netconf:capability:notification:1.0","(urn:ietf:params:xml:ns:netmod:notification?revision=2008-07-14)nc-notifications","(urn:ietf:params:xml:ns:yang:ietf-netconf-notifications?revision=2012-02-06)ietf-netconf-notifications","(urn:opendaylight:neutron-portsecurity?revision=2015-07-12)neutron-portsecurity","(urn:opendaylight:openflow:oxm?revision=2015-02-25)openflow-extensible-match","(urn:opendaylight:neutron-sfc-flow-classifier?revision=2016-05-11)neutron-sfc-flow-classifier","(urn:opendaylight:neutron-networks?revision=2015-07-12)neutron-networks","(urn:opendaylight:params:xml:ns:yang:controller:shutdown?revision=2013-12-18)shutdown","(urn:opendaylight:neutron-types?revision=2016-05-17)neutron-types","(urn:opendaylight:experimenter-message:service?revision=2015-10-20)sal-experimenter-message","(urn:opendaylight:genius:mdsalutil:impl?revision=2016-04-06)mdsalutil-impl","(config:aaa:authn:netconf:plugin?revision=2015-07-15)aaa-authn-netconf-plugin","(urn:opendaylight:params:xml:ns:yang:controller:config:netconf:northbound?revision=2015-01-14)netconf-northbound","(urn:opendaylight:params:xml:ns:yang:controller:config:cluster-admin-provider?revision=2015-10-13)cluster-admin-provider","(urn:opendaylight:flow:table:statistics?revision=2013-12-15)opendaylight-flow-table-statistics","(urn:opendaylight:neutron-provider-ext?revision=2015-07-12)neutron-provider-ext","(urn:opendaylight:params:xml:ns:yang:controller:md:sal:dom?revision=2013-10-28)opendaylight-md-sal-dom","(urn:opendaylight:opendaylight-ipv6-arbitrary-bitmask-fields?revision=2016-02-24)opendaylight-ipv6-arbitrary-bitmask-fields","(urn:opendaylight:neutron?revision=2015-07-12)neutron","(urn:opendaylight:netconf-node-inventory?revision=2014-01-08)netconf-node-inventory","(urn:opendaylight:daexim-spi?revision=2016-08-16)data-export-import-spi","(urn:opendaylight:params:xml:ns:yang:controller:netty:threadgroup?revision=2013-11-07)threadgroup","(urn:opendaylight:genius:itm:op?revision=2016-04-06)itm-state","(urn:opendaylight:neutron-vpnaas?revision=2015-07-12)neutron-vpnaas","(urn:ietf:params:xml:ns:yang:ietf-restconf?revision=2017-01-26)ietf-restconf","(urn:opendaylight:params:xml:ns:yang:controller:config:remote-rpc-connector?revision=2014-07-07)remote-rpc-connector","(urn:opendaylight:netvirt:vpn:config?revision=2016-11-30)vpn-config","(urn:opendaylight:params:xml:ns:yang:topology-lldp-discovery:config?revision=2016-05-11)topology-lldp-discovery-config","(urn:ericsson:resync:output:notification?revision=2014-02-07)resync-output","(urn:opendaylight:params:xml:ns:yang:openflowplugin:extension:api?revision=2015-04-25)openflowplugin-extension-registry","(urn:opendaylight:openflowjava:nx:action?revision=2014-04-21)nicira-action","(urn:ietf:params:xml:ns:yang:rpc-context?revision=2013-06-17)rpc-context","(urn:opendaylight:params:xml:ns:yang:sdncconfig:impl?revision=2014-12-10)sdncconfig-impl","(urn:opendaylight:genius:arputil:impl?revision=2016-04-06)arputil-impl","(urn:cisco:params:xml:ns:yang:bgp?revision=2013-07-15)bgp","(urn:opendaylight:params:xml:ns:yang:controller:config:actor-system-provider:service?revision=2015-10-05)actor-system-provider-service","(urn:opendaylight:params:xml:ns:yang:controller:config:openflowplugin:nx:config?revision=2014-07-11)nicira-extension","(urn:opendaylight:params:xml:ns:yang:dhcpservice:api?revision=2015-07-10)dhcpservice-api","(subscribe:to:notification?revision=2016-10-28)subscribe-to-notification","(urn:opendaylight:flow:inventory?revision=2013-08-19)flow-node-inventory","(urn:ericsson:experimenter:action:types?revision=2014-02-28)experimenter-action-types","(urn:opendaylight:params:xml:ns:yang:openflow:applications:lldp-speaker?revision=2014-10-23)lldp-speaker","(urn:opendaylight:params:xml:ns:yang:controller:config:distributed-datastore-provider?revision=2014-06-12)distributed-datastore-provider","(urn:ietf:params:xml:ns:yang:ietf-yang-types?revision=2013-07-15)ietf-yang-types","(urn:opendaylight:model:statistics:types?revision=2013-09-25)opendaylight-statistics-types","(urn:TBD:params:xml:ns:yang:nt:l3-unicast-igp-topology?revision=2013-10-21)l3-unicast-igp-topology","(urn:opendaylight:params:xml:ns:yang:controller:md:sal:dom:impl?revision=2013-10-28)opendaylight-sal-dom-broker-impl","(urn:ietf:params:xml:ns:netconf:notification:1.0?revision=2008-07-14)notifications","(urn:opendaylight:neutron-provider?revision=2015-07-12)neutron-provider","(urn:opendaylight:vendor:extension:resync:output:notification?revision=2016-08-19)resync-output","(instance:identifier:patch:module?revision=2015-11-21)instance-identifier-patch-module","(urn:opendaylight:openflow:augments?revision=2015-02-25)openflow-augments","(urn:TBD:params:xml:ns:yang:network:isis-topology?revision=2013-10-21)isis-topology","(urn:opendaylight:daexim-internal?revision=2016-09-21)data-export-import-internal","(urn:opendaylight:arbitrary:bitmask:fields?revision=2016-01-30)opendaylight-arbitrary-bitmask-fields","(urn:opendaylight:netvirt:elan?revision=2015-06-02)elan","(urn:opendaylight:netvirt:elan:etree?revision=2016-06-14)etree","(urn:opendaylight:params:xml:ns:yang:controller:config:netconf?revision=2014-04-08)odl-netconf-cfg","(urn:opendaylight:neutron-lbaasv2?revision=2015-07-12)neutron-lbaasv2","(urn:opendaylight:genius:idmanager:impl?revision=2016-04-06)idmanager-impl","(urn:ericsson:reconciliation:service?revision=2015-08-04)forwardingrules-manager-reconciliation","(urn:opendaylight:flow:errors?revision=2013-11-16)flow-errors","(urn:opendaylight:openflow:resync?revision=2014-02-06)openflow-resync","(urn:opendaylight:params:xml:ns:yang:overlay?revision=2015-01-05)overlay","(urn:ietf:params:xml:ns:yang:ietf-inet-types?revision=2013-07-15)ietf-inet-types","(urn:opendaylight:genius:itm?revision=2016-04-06)itm","(urn:opendaylight:genius:interfacemanager?revision=2016-04-06)odl-interface","(urn:opendaylight:params:xml:ns:yang:openflow:switch:connection:provider:impl?revision=2014-03-28)openflow-switch-connection-provider-impl","(urn:opendaylight:params:xml:ns:yang:config:openflow:experimenter-resync-provider?revision=2016-07-13)experimenter-resync-provider","(urn:opendaylight:openflow:common:types?revision=2013-07-31)openflow-types","(urn:opendaylight:params:xml:ns:yang:controller:netconf:northbound:notification?revision=2015-08-06)netconf-northbound-notification","(urn:opendaylight:openflow:protocol?revision=2013-07-31)openflow-protocol","(urn:opendaylight:params:xml:ns:yang:dhcpservice:config?revision=2015-07-10)dhcpservice-config","(urn:opendaylight:params:xml:ns:yang:controller:config:actor-system-provider:impl?revision=2015-10-05)actor-system-provider-impl","(urn:opendaylight:yang:aaa:cert:rpc?revision=2015-12-15)aaa-cert-rpc","(urn:opendaylight:model:topology:inventory?revision=2013-10-30)opendaylight-topology-inventory","(urn:ietf:params:xml:ns:yang:ietf-yang-types?revision=2010-09-24)ietf-yang-types","(urn:opendaylight:genius:itm:rpcs?revision=2016-04-06)itm-rpc","urn:ietf:params:netconf:base:1.1","(urn:opendaylight:params:xml:ns:yang:controller:threadpool:impl:flexible?revision=2013-12-01)threadpool-impl-flexible","(urn:ietf:params:xml:ns:yang:ietf-restconf?revision=2013-10-19)ietf-restconf","(urn:opendaylight:netconf-node-topology?revision=2015-01-14)netconf-node-topology","(urn:opendaylight:meter:service?revision=2013-09-18)sal-meter","(urn:opendaylight:netvirt:fibmanager?revision=2015-03-30)odl-fib","(urn:opendaylight:netvirt:fib:rpc?revision=2016-01-21)fib-rpc","(urn:opendaylight:params:xml:ns:yang:controller:netconf:northbound:notification:impl?revision=2015-08-07)netconf-northbound-notification-impl","(urn:opendaylight:params:xml:ns:yang:openflow:switch:connection:config?revision=2016-05-06)openflow-switch-connection-config","(urn:ietf:params:xml:ns:yang:ietf-netconf-monitoring-extension?revision=2013-12-10)ietf-netconf-monitoring-extension","(urn:opendaylight:group:service?revision=2013-09-18)sal-group","urn:ietf:params:netconf:base:1.0","(urn:opendaylight:neutron-port-ext?revision=2015-11-25)neutron-port-ext","(urn:ietf:params:xml:ns:yang:ietf-network?revision=2015-06-08)ietf-network","(urn:opendaylight:openflow:config?revision=2014-06-30)openflow-configuration","urn:ietf:params:netconf:capability:exi:1.0","(urn:opendaylight:daexim?revision=2016-09-21)data-export-import","(urn:ietf:params:xml:ns:yang:iana-afn-safi?revision=2013-07-04)iana-afn-safi","(urn:opendaylight:genius:alivenessmonitor:impl?revision=2016-04-06)alivenessmonitor-impl","(urn:opendaylight:params:xml:ns:yang:openflow:applications:lldp-speaker:config?revision=2016-05-12)lldp-speaker-config","(urn:ietf:params:xml:ns:yang:ietf-restconf-monitoring?revision=2017-01-26)ietf-restconf-monitoring","(urn:opendaylight:genius:itm:impl?revision=2016-04-06)itm-impl","(urn:TBD:params:xml:ns:yang:network-topology?revision=2013-07-12)network-topology","(urn:opendaylight:openflowplugin:extension:switchfeatures?revision=2016-07-13)openflowplugin-extension-switchfeatures","(urn:opendaylight:neutron-constants?revision=2015-07-12)neutron-constants","(urn:opendaylight:openflow:common:instruction?revision=2013-07-31)openflow-instruction","(urn:opendaylight:params:xml:ns:yang:controller:config:netconf:northbound:impl?revision=2015-01-12)netconf-northbound-impl","(urn:opendaylight:flat-batch:service?revision=2016-03-21)sal-flat-batch","(urn:opendaylight:params:xml:ns:yang:md:sal:config:spi:cluster-singleton-service?revision=2016-07-18)cluster-singleton-service-spi","(urn:opendaylight:flow:types?revision=2013-10-26)opendaylight-flow-types","(urn:opendaylight:meter:statistics?revision=2013-11-11)opendaylight-meter-statistics","(urn:opendaylight:model:match:types?revision=2013-10-26)opendaylight-match-types","(urn:opendaylight:genius:interfacemanager:rpcs?revision=2016-04-06)odl-interface-rpc","(urn:opendaylight:flow:statistics?revision=2013-08-19)opendaylight-flow-statistics","(urn:opendaylight:experimenter-mp-message:service?revision=2015-10-20)sal-experimenter-mp-message","(urn:opendaylight:queue:service?revision=2015-03-05)sal-queue","(urn:opendaylight:openflow:system?revision=2013-09-27)system-notifications","(urn:opendaylight:openflow:common:action?revision=2015-02-03)openflow-action","(urn:opendaylight:openflowjava:extension-resync?revision=2016-07-13)openflowjava-extension-resync","(urn:opendaylight:neutron-qos?revision=2016-06-13)neutron-qos","(urn:opendaylight:params:xml:ns:yang:openflow:switch:connection:provider?revision=2014-03-28)openflow-switch-connection-provider","(urn:TBD:params:xml:ns:yang:network:ted?revision=2013-07-12)ted","(urn:opendaylight:role:service?revision=2015-07-27)sal-role","(urn:opendaylight:vendor:extension-switchfeatures:notification?revision=2016-08-19)switch-features-notification","(urn:opendaylight:params:xml:ns:yang:controller:config?revision=2013-04-05)config","(urn:opendaylight:openflow:approved:extensions?revision=2016-08-02)openflow-approved-extensions","(urn:sal:restconf:event:subscription?revision=2014-07-08)sal-remote-augment","(urn:opendaylight:openflowplugin:extension:general?revision=2014-07-14)openflowplugin-extension-general","(config:aaa:authn:encrypt:service:config?revision=2016-09-15)aaa-encrypt-service-config","(urn:opendaylight:params:xml:ns:yang:controller:md:sal:binding?revision=2013-10-28)opendaylight-md-sal-binding","(urn:opendaylight:switch-features:extension?revision=2014-02-06)opendaylight-switch-features-extension","(urn:opendaylight:params:xml:ns:yang:controller:md:sal:dom:pingpong?revision=2014-11-07)opendaylight-pingpong-broker","(urn:opendaylight:flow:topology:discovery?revision=2013-08-19)flow-topology-discovery","(urn:ericsson:experimenter:table:types?revision=2014-03-06)experimenter-table-types","(urn:TBD:params:xml:ns:yang:nt:l3-unicast-igp-topology?revision=2013-07-12)l3-unicast-igp-topology","(urn:ietf:params:xml:ns:yang:ietf-yang-library?revision=2016-04-09)ietf-yang-library","(urn:opendaylight:model:topology:view?revision=2013-10-30)opendaylight-topology-view","(urn:opendaylight:params:xml:ns:yang:controller:netconf:north:mapper?revision=2015-01-14)netconf-northbound-mapper","(urn:opendaylight:params:xml:ns:yang:controller:config:netconf:client:dispatcher?revision=2014-04-08)odl-netconfig-client-cfg","(urn:ietf:params:xml:ns:yang:ietf-packet-fields?revision=2016-02-18)ietf-packet-fields","(urn:ericsson:resync:error:notification?revision=2014-02-07)resync-error-notification","urn:ietf:params:netconf:capability:candidate:1.0","(urn:opendaylight:netvirt:neutronvpn?revision=2015-06-02)neutronvpn","(urn:opendaylight:meter:types?revision=2013-09-18)opendaylight-meter-types","(urn:opendaylight:flow:types:queue?revision=2013-09-25)opendaylight-queue-types","(urn:opendaylight:l2:types?revision=2013-08-27)opendaylight-l2-types","(urn:opendaylight:neutron-L3?revision=2015-07-12)neutron-L3","(urn:opendaylight:params:xml:ns:yang:mdsal:core:general-entity?revision=2015-09-30)odl-general-entity"]},"netconf-node-topology:host":"127.0.0.1","netconf-node-topology:unavailable-capabilities":{},"netconf-node-topology:connection-status":"connected","netconf-node-topology:port":1830}]},{"topology-id":"netvirt:1"}]},"ietf-yang-library:modules-state":{"module":[{"name":"entity-owners","revision":"2015-08-04","schema":"/modules/entity-owners/2015-08-04","namespace":"urn:opendaylight:params:xml:ns:yang:controller:md:sal:clustering:entity-owners","conformance-type":"import"},{"name":"opendaylight-md-sal-common","revision":"2013-10-28","schema":"/modules/opendaylight-md-sal-common/2013-10-28","namespace":"urn:opendaylight:params:xml:ns:yang:controller:md:sal:common","conformance-type":"import"},{"name":"ietf-restconf","revision":"2017-01-26","schema":"/modules/ietf-restconf/2017-01-26","namespace":"urn:ietf:params:xml:ns:yang:ietf-restconf","conformance-type":"import"},{"name":"ietf-yang-types","revision":"2010-09-24","schema":"/modules/ietf-yang-types/2010-09-24","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-types","conformance-type":"import"},{"name":"neutronvpn-config","revision":"2016-08-06","schema":"/modules/neutronvpn-config/2016-08-06","namespace":"urn:opendaylight:netvirt:neutronvpn:config","conformance-type":"import"},{"name":"batch-common","revision":"2016-03-22","schema":"/modules/batch-common/2016-03-22","namespace":"urn:opendaylight:service:batch:common","conformance-type":"import"},{"name":"iana-afn-safi","revision":"2013-07-04","schema":"/modules/iana-afn-safi/2013-07-04","namespace":"urn:ietf:params:xml:ns:yang:iana-afn-safi","conformance-type":"import"},{"name":"l3nexthop","revision":"2015-04-09","schema":"/modules/l3nexthop/2015-04-09","namespace":"urn:opendaylight:netvirt:l3nexthop","conformance-type":"import"},{"name":"dhcpservice-api","revision":"2015-07-10","schema":"/modules/dhcpservice-api/2015-07-10","namespace":"urn:opendaylight:params:xml:ns:yang:dhcpservice:api","conformance-type":"import"},{"name":"forwarding-rules-manager-config","revision":"2016-05-11","schema":"/modules/forwarding-rules-manager-config/2016-05-11","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:app:forwardingrules-manager:config","conformance-type":"import"},{"name":"general-entity","revision":"2015-08-20","schema":"/modules/general-entity/2015-08-20","namespace":"urn:opendaylight:params:xml:ns:yang:controller:md:sal:core:general-entity","conformance-type":"import"},{"name":"dhcpservice-config","revision":"2015-07-10","schema":"/modules/dhcpservice-config/2015-07-10","namespace":"urn:opendaylight:params:xml:ns:yang:dhcpservice:config","conformance-type":"import"},{"name":"aclservice-config","revision":"2016-08-06","schema":"/modules/aclservice-config/2016-08-06","namespace":"urn:opendaylight:netvirt:aclservice-config","conformance-type":"import"},{"name":"ietf-yang-types","revision":"2013-07-15","schema":"/modules/ietf-yang-types/2013-07-15","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-types","conformance-type":"import"},{"name":"flow-errors","revision":"2013-11-16","schema":"/modules/flow-errors/2013-11-16","namespace":"urn:opendaylight:flow:errors","conformance-type":"import"},{"name":"credential-store","revision":"2015-02-26","schema":"/modules/credential-store/2015-02-26","namespace":"urn:opendaylight:params:xml:ns:yang:aaa:credential-store","conformance-type":"import"},{"name":"rpc-context","revision":"2013-06-17","schema":"/modules/rpc-context/2013-06-17","namespace":"urn:ietf:params:xml:ns:yang:rpc-context","conformance-type":"import"},{"name":"opendaylight-queue-types","revision":"2013-09-25","schema":"/modules/opendaylight-queue-types/2013-09-25","namespace":"urn:opendaylight:flow:types:queue","conformance-type":"import"},{"name":"vpn-rpc","revision":"2016-02-01","schema":"/modules/vpn-rpc/2016-02-01","namespace":"urn:opendaylight:netvirt:vpn:rpc","conformance-type":"import"},{"name":"neutron-attrs","revision":"2015-07-12","schema":"/modules/neutron-attrs/2015-07-12","namespace":"urn:opendaylight:neutron-attrs","conformance-type":"import"},{"name":"neutron-vpnaas","revision":"2015-07-12","schema":"/modules/neutron-vpnaas/2015-07-12","namespace":"urn:opendaylight:neutron-vpnaas","conformance-type":"import"},{"name":"lldp-speaker","revision":"2014-10-23","schema":"/modules/lldp-speaker/2014-10-23","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:applications:lldp-speaker","conformance-type":"import"},{"name":"opendaylight-port-types","revision":"2013-09-25","schema":"/modules/opendaylight-port-types/2013-09-25","namespace":"urn:opendaylight:flow:types:port","conformance-type":"import"},{"name":"neutron-bgpvpns","revision":"2015-09-03","schema":"/modules/neutron-bgpvpns/2015-09-03","namespace":"urn:opendaylight:neutron-bgpvpns","conformance-type":"import"},{"name":"openflow-types","revision":"2013-07-31","schema":"/modules/openflow-types/2013-07-31","namespace":"urn:opendaylight:openflow:common:types","conformance-type":"import"},{"name":"notifications","revision":"2008-07-14","schema":"/modules/notifications/2008-07-14","namespace":"urn:ietf:params:xml:ns:netconf:notification:1.0","conformance-type":"import"},{"name":"openflow-provider-config","revision":"2016-05-10","schema":"/modules/openflow-provider-config/2016-05-10","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:provider:config","conformance-type":"import"},{"name":"yang-ext","revision":"2013-07-09","schema":"/modules/yang-ext/2013-07-09","namespace":"urn:opendaylight:yang:extension:yang-ext","conformance-type":"import"},{"name":"odl-fib","revision":"2015-03-30","schema":"/modules/odl-fib/2015-03-30","namespace":"urn:opendaylight:netvirt:fibmanager","conformance-type":"import"},{"name":"data-export-import","revision":"2016-09-21","schema":"/modules/data-export-import/2016-09-21","namespace":"urn:opendaylight:daexim","conformance-type":"import"},{"name":"data-export-import-internal","revision":"2016-09-21","schema":"/modules/data-export-import-internal/2016-09-21","namespace":"urn:opendaylight:daexim-internal","conformance-type":"import"},{"name":"cluster-admin","revision":"2015-10-13","schema":"/modules/cluster-admin/2015-10-13","namespace":"urn:opendaylight:params:xml:ns:yang:controller:md:sal:cluster:admin","conformance-type":"import"},{"name":"lldp-speaker-config","revision":"2016-05-12","schema":"/modules/lldp-speaker-config/2016-05-12","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:applications:lldp-speaker:config","conformance-type":"import"},{"name":"aaa-encrypt-service-config","revision":"2016-09-15","schema":"/modules/aaa-encrypt-service-config/2016-09-15","namespace":"config:aaa:authn:encrypt:service:config","conformance-type":"import"},{"name":"topology-lldp-discovery-config","revision":"2016-05-11","schema":"/modules/topology-lldp-discovery-config/2016-05-11","namespace":"urn:opendaylight:params:xml:ns:yang:topology-lldp-discovery:config","conformance-type":"import"},{"name":"barrier-common","revision":"2016-03-15","schema":"/modules/barrier-common/2016-03-15","namespace":"urn:opendaylight:service:barrier:common","conformance-type":"import"},{"name":"odl-general-entity","revision":"2015-09-30","schema":"/modules/odl-general-entity/2015-09-30","namespace":"urn:opendaylight:params:xml:ns:yang:mdsal:core:general-entity","conformance-type":"import"},{"name":"opendaylight-meter-types","revision":"2013-09-18","schema":"/modules/opendaylight-meter-types/2013-09-18","namespace":"urn:opendaylight:meter:types","conformance-type":"import"},{"name":"neutron-ml2-services","revision":"2014-09-30","schema":"/modules/neutron-ml2-services/2014-09-30","namespace":"urn:ericsson:neutron:ml2","conformance-type":"import"},{"name":"neutron-ml3-services","revision":"2014-09-30","schema":"/modules/neutron-ml3-services/2014-09-30","namespace":"urn:ericsson:neutron:ml3","conformance-type":"import"},{"name":"sal-remote","revision":"2014-01-14","schema":"/modules/sal-remote/2014-01-14","namespace":"urn:opendaylight:params:xml:ns:yang:controller:md:sal:remote","conformance-type":"import"},{"name":"sal-remote-augment","revision":"2014-07-08","schema":"/modules/sal-remote-augment/2014-07-08","namespace":"urn:sal:restconf:event:subscription","conformance-type":"import"},{"name":"lock-manager","revision":"2016-04-13","schema":"/modules/lock-manager/2016-04-13","namespace":"urn:opendaylight:genius:lockmanager","conformance-type":"import"},{"name":"opendaylight-statistics-types","revision":"2013-09-25","schema":"/modules/opendaylight-statistics-types/2013-09-25","namespace":"urn:opendaylight:model:statistics:types","conformance-type":"import"},{"name":"neutron-sfc","revision":"2016-05-11","schema":"/modules/neutron-sfc/2016-05-11","namespace":"urn:opendaylight:neutron-sfc","conformance-type":"import"},{"name":"aaa-cert","revision":"2015-11-26","schema":"/modules/aaa-cert/2015-11-26","namespace":"urn:opendaylight:yang:aaa:cert","conformance-type":"import"},{"name":"neutron-networks","revision":"2015-07-12","schema":"/modules/neutron-networks/2015-07-12","namespace":"urn:opendaylight:neutron-networks","conformance-type":"import"},{"name":"neutron-trunks","revision":"2017-01-18","schema":"/modules/neutron-trunks/2017-01-18","namespace":"urn:opendaylight:neutron-trunks","conformance-type":"import"},{"name":"neutron-hostconfig","revision":"2015-07-12","schema":"/modules/neutron-hostconfig/2015-07-12","namespace":"urn:opendaylight:neutron-hostconfig","conformance-type":"import"},{"name":"nc-notifications","revision":"2008-07-14","schema":"/modules/nc-notifications/2008-07-14","namespace":"urn:ietf:params:xml:ns:netmod:notification","conformance-type":"import"},{"name":"ietf-inet-types","revision":"2013-07-15","schema":"/modules/ietf-inet-types/2013-07-15","namespace":"urn:ietf:params:xml:ns:yang:ietf-inet-types","conformance-type":"import"},{"name":"neutron-types","revision":"2016-05-17","schema":"/modules/neutron-types/2016-05-17","namespace":"urn:opendaylight:neutron-types","conformance-type":"import"},{"name":"ebgp","revision":"2015-09-01","schema":"/modules/ebgp/2015-09-01","namespace":"urn:ericsson:params:xml:ns:yang:ebgp","conformance-type":"import"},{"name":"opendaylight-arbitrary-bitmask-fields","revision":"2016-01-30","schema":"/modules/opendaylight-arbitrary-bitmask-fields/2016-01-30","namespace":"urn:opendaylight:arbitrary:bitmask:fields","conformance-type":"import"},{"name":"ietf-restconf","revision":"2013-10-19","schema":"/modules/ietf-restconf/2013-10-19","namespace":"urn:ietf:params:xml:ns:yang:ietf-restconf","conformance-type":"import"},{"name":"opendaylight-inventory","revision":"2013-08-19","schema":"/modules/opendaylight-inventory/2013-08-19","namespace":"urn:opendaylight:inventory","conformance-type":"import"},{"name":"resync-output","revision":"2016-08-19","schema":"/modules/resync-output/2016-08-19","namespace":"urn:opendaylight:vendor:extension:resync:output:notification","conformance-type":"import"},{"name":"extension-resync-message","revision":"2016-07-13","schema":"/modules/extension-resync-message/2016-07-13","namespace":"urn:opendaylight:vendor:extension-resync-message","conformance-type":"import"},{"name":"neighbor-discovery","revision":"2016-06-20","schema":"/modules/neighbor-discovery/2016-06-20","namespace":"urn:opendaylight:netvirt:ipv6service:nd:packet","conformance-type":"import"},{"name":"odl-nat","revision":"2016-01-11","schema":"/modules/odl-nat/2016-01-11","namespace":"urn:opendaylight:netvirt:natservice","conformance-type":"import"},{"name":"aliveness-monitor","revision":"2016-04-11","schema":"/modules/aliveness-monitor/2016-04-11","namespace":"urn:opendaylight:genius:alivenessmonitor","conformance-type":"import"},{"name":"ietf-yang-library","revision":"2016-06-21","schema":"/modules/ietf-yang-library/2016-06-21","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-library","conformance-type":"import"},{"name":"odl-nat-rpc","revision":"2017-02-09","schema":"/modules/odl-nat-rpc/2017-02-09","namespace":"urn:opendaylight:netvirt:natservice:rpc","conformance-type":"import"},{"name":"start-resync-download-notification","revision":"2014-02-07","schema":"/modules/start-resync-download-notification/2014-02-07","namespace":"urn:ericsson:resync:start:notification","conformance-type":"import"},{"name":"ietf-netconf","revision":"2011-06-01","schema":"/modules/ietf-netconf/2011-06-01","feature":["rollback-on-error","xpath","validate","writable-running","confirmed-commit","startup","url","candidate"],"namespace":"urn:ietf:params:xml:ns:netconf:base:1.0","conformance-type":"import"},{"name":"neutron-provider","revision":"2015-07-12","schema":"/modules/neutron-provider/2015-07-12","namespace":"urn:opendaylight:neutron-provider","conformance-type":"import"},{"name":"sal-queue","revision":"2015-03-05","schema":"/modules/sal-queue/2015-03-05","namespace":"urn:opendaylight:queue:service","conformance-type":"import"},{"name":"openflowplugin-experimenter-types","revision":"2015-10-20","schema":"/modules/openflowplugin-experimenter-types/2015-10-20","namespace":"urn:opendaylight:openflowplugin:experimenter:types","conformance-type":"import"},{"name":"vpn-config","revision":"2016-11-30","schema":"/modules/vpn-config/2016-11-30","namespace":"urn:opendaylight:netvirt:vpn:config","conformance-type":"import"},{"name":"ietf-yang-library","revision":"2016-04-09","schema":"/modules/ietf-yang-library/2016-04-09","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-library","conformance-type":"import"},{"name":"network-topology","revision":"2013-07-12","schema":"/modules/network-topology/2013-07-12","namespace":"urn:TBD:params:xml:ns:yang:network-topology","conformance-type":"import"},{"name":"l3-unicast-igp-topology","revision":"2013-07-12","schema":"/modules/l3-unicast-igp-topology/2013-07-12","namespace":"urn:TBD:params:xml:ns:yang:nt:l3-unicast-igp-topology","conformance-type":"import"},{"name":"ietf-inet-types","revision":"2010-09-24","schema":"/modules/ietf-inet-types/2010-09-24","namespace":"urn:ietf:params:xml:ns:yang:ietf-inet-types","conformance-type":"import"},{"name":"switch-features-notification","revision":"2013-08-19","schema":"/modules/switch-features-notification/2013-08-19","namespace":"urn:ericsson:switch-features:notification","conformance-type":"import"},{"name":"id-manager","revision":"2016-04-06","schema":"/modules/id-manager/2016-04-06","namespace":"urn:opendaylight:genius:idmanager","conformance-type":"import"},{"name":"system-notifications","revision":"2013-09-27","schema":"/modules/system-notifications/2013-09-27","namespace":"urn:opendaylight:openflow:system","conformance-type":"import"},{"name":"ted","revision":"2013-07-12","schema":"/modules/ted/2013-07-12","namespace":"urn:TBD:params:xml:ns:yang:network:ted","conformance-type":"import"},{"name":"statistics-manager-control","revision":"2015-08-12","schema":"/modules/statistics-manager-control/2015-08-12","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:sm:control","conformance-type":"import"},{"name":"opendaylight-l2-types","revision":"2013-08-27","schema":"/modules/opendaylight-l2-types/2013-08-27","namespace":"urn:opendaylight:l2:types","conformance-type":"import"},{"name":"isis-topology","revision":"2013-07-12","schema":"/modules/isis-topology/2013-07-12","namespace":"urn:TBD:params:xml:ns:yang:network:isis-topology","conformance-type":"import"},{"name":"elan-config","revision":"2015-07-10","schema":"/modules/elan-config/2015-07-10","namespace":"urn:opendaylight:netvirt:elan:config","conformance-type":"import"},{"name":"experimenter-flow-types","revision":"2014-04-25","schema":"/modules/experimenter-flow-types/2014-04-25","namespace":"urn:ericsson:experimenter:openflow:types","conformance-type":"import"},{"name":"flow-capable-transaction","revision":"2015-03-04","schema":"/modules/flow-capable-transaction/2015-03-04","namespace":"urn:opendaylight:flow:transaction","conformance-type":"import"},{"name":"sal-port","revision":"2013-11-07","schema":"/modules/sal-port/2013-11-07","namespace":"urn:opendaylight:port:service","conformance-type":"import"},{"name":"forwardingrules-manager-reconciliation","revision":"2015-08-04","schema":"/modules/forwardingrules-manager-reconciliation/2015-08-04","namespace":"urn:ericsson:reconciliation:service","conformance-type":"import"},{"name":"node-config","revision":"2014-10-15","schema":"/modules/node-config/2014-10-15","namespace":"urn:opendaylight:module:config","conformance-type":"import"},{"name":"switch-features-extension","revision":"2014-02-07","schema":"/modules/switch-features-extension/2014-02-07","namespace":"urn:ericsson:switch-features:rpcs:notification","conformance-type":"import"},{"name":"config","revision":"2013-04-05","schema":"/modules/config/2013-04-05","namespace":"urn:opendaylight:params:xml:ns:yang:controller:config","conformance-type":"import"},{"name":"openflow-provider","revision":"2014-03-26","schema":"/modules/openflow-provider/2014-03-26","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:common:config","conformance-type":"import"},{"name":"openflowplugin-extension-registry","revision":"2015-04-25","schema":"/modules/openflowplugin-extension-registry/2015-04-25","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:extension:api","conformance-type":"import"},{"name":"netty","revision":"2013-11-19","schema":"/modules/netty/2013-11-19","namespace":"urn:opendaylight:params:xml:ns:yang:controller:netty","conformance-type":"import"},{"name":"shutdown","revision":"2013-12-18","schema":"/modules/shutdown/2013-12-18","namespace":"urn:opendaylight:params:xml:ns:yang:controller:shutdown","conformance-type":"import"},{"name":"netconf-northbound-mapper","revision":"2015-01-14","schema":"/modules/netconf-northbound-mapper/2015-01-14","namespace":"urn:opendaylight:params:xml:ns:yang:controller:netconf:north:mapper","conformance-type":"import"},{"name":"opendaylight-config-dom-datastore","revision":"2014-06-17","schema":"/modules/opendaylight-config-dom-datastore/2014-06-17","namespace":"urn:opendaylight:params:xml:ns:yang:controller:md:sal:core:spi:config-dom-store","conformance-type":"import"},{"name":"shutdown-impl","revision":"2013-12-18","schema":"/modules/shutdown-impl/2013-12-18","namespace":"urn:opendaylight:params:xml:ns:yang:controller:shutdown:impl","conformance-type":"import"},{"name":"opendaylight-operational-dom-datastore","revision":"2014-06-17","schema":"/modules/opendaylight-operational-dom-datastore/2014-06-17","namespace":"urn:opendaylight:params:xml:ns:yang:controller:md:sal:core:spi:operational-dom-store","conformance-type":"import"},{"name":"threadpool","revision":"2013-04-09","schema":"/modules/threadpool/2013-04-09","namespace":"urn:opendaylight:params:xml:ns:yang:controller:threadpool","conformance-type":"import"},{"name":"nicira-extension","revision":"2014-07-11","schema":"/modules/nicira-extension/2014-07-11","namespace":"urn:opendaylight:params:xml:ns:yang:controller:config:openflowplugin:nx:config","conformance-type":"import"},{"name":"threadpool-impl-scheduled","revision":"2013-12-01","schema":"/modules/threadpool-impl-scheduled/2013-12-01","namespace":"urn:opendaylight:params:xml:ns:yang:controller:threadpool:impl:scheduled","conformance-type":"import"},{"name":"netty-timer","revision":"2013-11-19","schema":"/modules/netty-timer/2013-11-19","namespace":"urn:opendaylight:params:xml:ns:yang:controller:netty:timer","conformance-type":"import"},{"name":"openflow-switch-connection-provider","revision":"2014-03-28","schema":"/modules/openflow-switch-connection-provider/2014-03-28","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:switch:connection:provider","conformance-type":"import"},{"name":"netconf-northbound","revision":"2015-01-14","schema":"/modules/netconf-northbound/2015-01-14","namespace":"urn:opendaylight:params:xml:ns:yang:controller:config:netconf:northbound","conformance-type":"import"},{"name":"netconf-northbound-impl","revision":"2015-01-12","schema":"/modules/netconf-northbound-impl/2015-01-12","namespace":"urn:opendaylight:params:xml:ns:yang:controller:config:netconf:northbound:impl","conformance-type":"import"},{"name":"threadpool-impl-fixed","revision":"2013-12-01","schema":"/modules/threadpool-impl-fixed/2013-12-01","namespace":"urn:opendaylight:params:xml:ns:yang:controller:threadpool:impl:fixed","conformance-type":"import"},{"name":"threadpool-impl-flexible","revision":"2013-12-01","schema":"/modules/threadpool-impl-flexible/2013-12-01","namespace":"urn:opendaylight:params:xml:ns:yang:controller:threadpool:impl:flexible","conformance-type":"import"},{"name":"netty-event-executor","revision":"2013-11-12","schema":"/modules/netty-event-executor/2013-11-12","namespace":"urn:opendaylight:params:xml:ns:yang:controller:netty:eventexecutor","conformance-type":"import"},{"name":"inter-vpn-link","revision":"2016-03-11","schema":"/modules/inter-vpn-link/2016-03-11","namespace":"urn:opendaylight:params:xml:ns:yang:netvirt:inter-vpn-link","conformance-type":"import"},{"name":"shared-schema-repository","revision":"2015-07-27","schema":"/modules/shared-schema-repository/2015-07-27","namespace":"urn:opendaylight:params:xml:ns:yang:controller:netconf:topology:shared:schema:repository","conformance-type":"import"},{"name":"resource-manager","revision":"2016-06-22","schema":"/modules/resource-manager/2016-06-22","namespace":"urn:opendaylight:genius:resourcemanager","conformance-type":"import"},{"name":"actor-system-provider-service","revision":"2015-10-05","schema":"/modules/actor-system-provider-service/2015-10-05","namespace":"urn:opendaylight:params:xml:ns:yang:controller:config:actor-system-provider:service","conformance-type":"import"},{"name":"actor-system-provider-impl","revision":"2015-10-05","schema":"/modules/actor-system-provider-impl/2015-10-05","namespace":"urn:opendaylight:params:xml:ns:yang:controller:config:actor-system-provider:impl","conformance-type":"import"},{"name":"protocol-framework","revision":"2014-03-13","schema":"/modules/protocol-framework/2014-03-13","namespace":"urn:opendaylight:params:xml:ns:yang:controller:protocol:framework","conformance-type":"import"},{"name":"ospf-topology","revision":"2013-07-12","schema":"/modules/ospf-topology/2013-07-12","namespace":"urn:ietf:params:xml:ns:yang:ospf-topology","conformance-type":"import"},{"name":"opendaylight-md-sal-binding-v1-codec","revision":"2016-07-14","schema":"/modules/opendaylight-md-sal-binding-v1-codec/2016-07-14","namespace":"urn:opendaylight:params:xml:ns:yang:controller:md:sal:binding:v1:codec","conformance-type":"import"},{"name":"threadpool-impl","revision":"2013-04-05","schema":"/modules/threadpool-impl/2013-04-05","namespace":"urn:opendaylight:params:xml:ns:yang:controller:threadpool:impl","conformance-type":"import"},{"name":"cluster-singleton-service-spi","revision":"2016-07-18","schema":"/modules/cluster-singleton-service-spi/2016-07-18","namespace":"urn:opendaylight:params:xml:ns:yang:md:sal:config:spi:cluster-singleton-service","conformance-type":"import"},{"name":"sal-restconf-service","revision":"2015-07-08","schema":"/modules/sal-restconf-service/2015-07-08","namespace":"urn:opendaylight:params:xml:ns:yang:controller:sal:restconf:service","conformance-type":"import"},{"name":"nicira-extension-impl","revision":"2014-07-11","schema":"/modules/nicira-extension-impl/2014-07-11","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:nx:config:impl","conformance-type":"import"},{"name":"extension-switchfeatures-message","revision":"2016-07-13","schema":"/modules/extension-switchfeatures-message/2016-07-13","namespace":"urn:opendaylight:vendor:extension-switchfeatures-message","conformance-type":"import"},{"name":"resync-output","revision":"2014-02-07","schema":"/modules/resync-output/2014-02-07","namespace":"urn:ericsson:resync:output:notification","conformance-type":"import"},{"name":"ietf-netconf-notifications","revision":"2012-02-06","schema":"/modules/ietf-netconf-notifications/2012-02-06","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-notifications","conformance-type":"import"},{"name":"opendaylight-md-sal-binding","revision":"2013-10-28","schema":"/modules/opendaylight-md-sal-binding/2013-10-28","namespace":"urn:opendaylight:params:xml:ns:yang:controller:md:sal:binding","conformance-type":"import"},{"name":"aaa-cert-mdsal","revision":"2016-03-21","schema":"/modules/aaa-cert-mdsal/2016-03-21","namespace":"urn:opendaylight:yang:aaa:cert:mdsal","conformance-type":"import"},{"name":"cluster-admin-provider","revision":"2015-10-13","schema":"/modules/cluster-admin-provider/2015-10-13","namespace":"urn:opendaylight:params:xml:ns:yang:controller:config:cluster-admin-provider","conformance-type":"import"},{"name":"lockmanager-impl","revision":"2016-04-06","schema":"/modules/lockmanager-impl/2016-04-06","namespace":"urn:opendaylight:genius:lockmanager:impl","conformance-type":"import"},{"name":"threadgroup","revision":"2013-11-07","schema":"/modules/threadgroup/2013-11-07","namespace":"urn:opendaylight:params:xml:ns:yang:controller:netty:threadgroup","conformance-type":"import"},{"name":"netconf-northbound-tcp","revision":"2015-04-23","schema":"/modules/netconf-northbound-tcp/2015-04-23","namespace":"urn:opendaylight:params:xml:ns:yang:controller:netconf:northbound:tcp","conformance-type":"import"},{"name":"odl-netconf-cfg","revision":"2014-04-08","schema":"/modules/odl-netconf-cfg/2014-04-08","namespace":"urn:opendaylight:params:xml:ns:yang:controller:config:netconf","conformance-type":"import"},{"name":"odl-netconfig-client-cfg","revision":"2014-04-08","schema":"/modules/odl-netconfig-client-cfg/2014-04-08","namespace":"urn:opendaylight:params:xml:ns:yang:controller:config:netconf:client:dispatcher","conformance-type":"import"},{"name":"opendaylight-port-statistics","revision":"2013-12-14","schema":"/modules/opendaylight-port-statistics/2013-12-14","namespace":"urn:opendaylight:port:statistics","conformance-type":"import"},{"name":"switch-features-notification","revision":"2016-08-19","schema":"/modules/switch-features-notification/2016-08-19","namespace":"urn:opendaylight:vendor:extension-switchfeatures:notification","conformance-type":"import"},{"name":"ted","revision":"2013-10-21","schema":"/modules/ted/2013-10-21","namespace":"urn:TBD:params:xml:ns:yang:network:ted","conformance-type":"import"},{"name":"ietf-netconf-monitoring","revision":"2010-10-04","schema":"/modules/ietf-netconf-monitoring/2010-10-04","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-monitoring","conformance-type":"import"},{"name":"ietf-netconf-monitoring-extension","revision":"2013-12-10","schema":"/modules/ietf-netconf-monitoring-extension/2013-12-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-monitoring-extension","conformance-type":"import"},{"name":"data-export-import-spi","revision":"2016-08-16","schema":"/modules/data-export-import-spi/2016-08-16","namespace":"urn:opendaylight:daexim-spi","conformance-type":"import"},{"name":"opendaylight-md-sal-dom","revision":"2013-10-28","schema":"/modules/opendaylight-md-sal-dom/2013-10-28","namespace":"urn:opendaylight:params:xml:ns:yang:controller:md:sal:dom","conformance-type":"import"},{"name":"opendaylight-inmemory-datastore-provider","revision":"2014-06-17","schema":"/modules/opendaylight-inmemory-datastore-provider/2014-06-17","namespace":"urn:opendaylight:params:xml:ns:yang:controller:inmemory-datastore-provider","conformance-type":"import"},{"name":"distributed-datastore-provider","revision":"2014-06-12","schema":"/modules/distributed-datastore-provider/2014-06-12","namespace":"urn:opendaylight:params:xml:ns:yang:controller:config:distributed-datastore-provider","conformance-type":"import"},{"name":"opendaylight-pingpong-broker","revision":"2014-11-07","schema":"/modules/opendaylight-pingpong-broker/2014-11-07","namespace":"urn:opendaylight:params:xml:ns:yang:controller:md:sal:dom:pingpong","conformance-type":"import"},{"name":"opendaylight-rest-connector","revision":"2014-07-24","schema":"/modules/opendaylight-rest-connector/2014-07-24","namespace":"urn:opendaylight:params:xml:ns:yang:controller:md:sal:rest:connector","conformance-type":"import"},{"name":"odl-sal-netconf-connector-cfg","revision":"2015-08-03","schema":"/modules/odl-sal-netconf-connector-cfg/2015-08-03","namespace":"urn:opendaylight:params:xml:ns:yang:controller:md:sal:connector:netconf","conformance-type":"import"},{"name":"netconf-topology","revision":"2015-07-27","schema":"/modules/netconf-topology/2015-07-27","namespace":"urn:opendaylight:params:xml:ns:yang:controller:netconf:topology","conformance-type":"import"},{"name":"opendaylight-sal-binding-broker-impl","revision":"2013-10-28","schema":"/modules/opendaylight-sal-binding-broker-impl/2013-10-28","namespace":"urn:opendaylight:params:xml:ns:yang:controller:md:sal:binding:impl","conformance-type":"import"},{"name":"sdncconfig-impl","revision":"2014-12-10","schema":"/modules/sdncconfig-impl/2014-12-10","namespace":"urn:opendaylight:params:xml:ns:yang:sdncconfig:impl","conformance-type":"import"},{"name":"experimenter-resync-provider","revision":"2016-07-13","schema":"/modules/experimenter-resync-provider/2016-07-13","namespace":"urn:opendaylight:params:xml:ns:yang:config:openflow:experimenter-resync-provider","conformance-type":"import"},{"name":"netconf-auth","revision":"2015-07-15","schema":"/modules/netconf-auth/2015-07-15","namespace":"urn:opendaylight:params:xml:ns:yang:controller:config:netconf:auth","conformance-type":"import"},{"name":"netconf-northbound-ssh","revision":"2015-01-14","schema":"/modules/netconf-northbound-ssh/2015-01-14","namespace":"urn:opendaylight:params:xml:ns:yang:controller:netconf:northbound:ssh","conformance-type":"import"},{"name":"aaa-authn-netconf-plugin","revision":"2015-07-15","schema":"/modules/aaa-authn-netconf-plugin/2015-07-15","namespace":"config:aaa:authn:netconf:plugin","conformance-type":"import"},{"name":"cloud-servicechain-api","revision":"2015-12-11","schema":"/modules/cloud-servicechain-api/2015-12-11","namespace":"urn:opendaylight:netvirt:cloud-servicechain:api","conformance-type":"import"},{"name":"network-topology","revision":"2013-10-21","schema":"/modules/network-topology/2013-10-21","namespace":"urn:TBD:params:xml:ns:yang:network-topology","conformance-type":"import"},{"name":"hwvtep","revision":"2015-09-01","schema":"/modules/hwvtep/2015-09-01","namespace":"urn:opendaylight:params:xml:ns:yang:ovsdb:hwvtep","conformance-type":"import"},{"name":"opendaylight-topology","revision":"2013-10-30","schema":"/modules/opendaylight-topology/2013-10-30","namespace":"urn:opendaylight:model:topology:general","conformance-type":"import"},{"name":"l3-unicast-igp-topology","revision":"2013-10-21","schema":"/modules/l3-unicast-igp-topology/2013-10-21","namespace":"urn:TBD:params:xml:ns:yang:nt:l3-unicast-igp-topology","conformance-type":"import"},{"name":"isis-topology","revision":"2013-10-21","schema":"/modules/isis-topology/2013-10-21","namespace":"urn:TBD:params:xml:ns:yang:network:isis-topology","conformance-type":"import"},{"name":"opendaylight-topology-view","revision":"2013-10-30","schema":"/modules/opendaylight-topology-view/2013-10-30","namespace":"urn:opendaylight:model:topology:view","conformance-type":"import"},{"name":"ospf-topology","revision":"2013-10-21","schema":"/modules/ospf-topology/2013-10-21","namespace":"urn:TBD:params:xml:ns:yang:ospf-topology","conformance-type":"import"},{"name":"opendaylight-topology-inventory","revision":"2013-10-30","schema":"/modules/opendaylight-topology-inventory/2013-10-30","namespace":"urn:opendaylight:model:topology:inventory","conformance-type":"import"},{"name":"resync-notification","revision":"2014-02-07","schema":"/modules/resync-notification/2014-02-07","namespace":"urn:ericsson:resync:rpcs:notification","conformance-type":"import"},{"name":"sal-experimenter-mp-message","revision":"2015-10-20","schema":"/modules/sal-experimenter-mp-message/2015-10-20","namespace":"urn:opendaylight:experimenter-mp-message:service","conformance-type":"import"},{"name":"netconf-node-inventory","revision":"2014-01-08","schema":"/modules/netconf-node-inventory/2014-01-08","namespace":"urn:opendaylight:netconf-node-inventory","conformance-type":"import"},{"name":"netconf-northbound-notification","revision":"2015-08-06","schema":"/modules/netconf-northbound-notification/2015-08-06","namespace":"urn:opendaylight:params:xml:ns:yang:controller:netconf:northbound:notification","conformance-type":"import"},{"name":"openflowjava-nx-api-config","revision":"2014-07-11","schema":"/modules/openflowjava-nx-api-config/2014-07-11","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:ofjava:nx:api:config","conformance-type":"import"},{"name":"openflowjava-nx-config","revision":"2014-07-11","schema":"/modules/openflowjava-nx-config/2014-07-11","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:ofjava:nx:config","conformance-type":"import"},{"name":"flow-topology-discovery","revision":"2013-08-19","schema":"/modules/flow-topology-discovery/2013-08-19","namespace":"urn:opendaylight:flow:topology:discovery","conformance-type":"import"},{"name":"openflow-extensible-match","revision":"2015-02-25","schema":"/modules/openflow-extensible-match/2015-02-25","namespace":"urn:opendaylight:openflow:oxm","conformance-type":"import"},{"name":"experimenter-match-type","revision":"2014-03-06","schema":"/modules/experimenter-match-type/2014-03-06","namespace":"urn:experimenter:matchExp","conformance-type":"import"},{"name":"openflow-action","revision":"2015-02-03","schema":"/modules/openflow-action/2015-02-03","namespace":"urn:opendaylight:openflow:common:action","conformance-type":"import"},{"name":"openflow-instruction","revision":"2013-07-31","schema":"/modules/openflow-instruction/2013-07-31","namespace":"urn:opendaylight:openflow:common:instruction","conformance-type":"import"},{"name":"nicira-action","revision":"2014-04-21","schema":"/modules/nicira-action/2014-04-21","namespace":"urn:opendaylight:openflowjava:nx:action","conformance-type":"import"},{"name":"nicira-match","revision":"2014-04-21","schema":"/modules/nicira-match/2014-04-21","namespace":"urn:opendaylight:openflowjava:nx:match","conformance-type":"import"},{"name":"odl-mdsalutil","revision":"2016-04-06","schema":"/modules/odl-mdsalutil/2016-04-06","namespace":"urn:opendaylight:genius:mdsalutil","conformance-type":"import"},{"name":"resourcemanager-impl","revision":"2016-04-06","schema":"/modules/resourcemanager-impl/2016-04-06","namespace":"urn:opendaylight:genius:resourcemanager:impl","conformance-type":"import"},{"name":"arputil-impl","revision":"2016-04-06","schema":"/modules/arputil-impl/2016-04-06","namespace":"urn:opendaylight:genius:arputil:impl","conformance-type":"import"},{"name":"resync-error-notification","revision":"2014-02-07","schema":"/modules/resync-error-notification/2014-02-07","namespace":"urn:ericsson:resync:error:notification","conformance-type":"import"},{"name":"sal-echo","revision":"2015-03-05","schema":"/modules/sal-echo/2015-03-05","namespace":"urn:opendaylight:echo:service","conformance-type":"import"},{"name":"remote-rpc-connector","revision":"2014-07-07","schema":"/modules/remote-rpc-connector/2014-07-07","namespace":"urn:opendaylight:params:xml:ns:yang:controller:config:remote-rpc-connector","conformance-type":"import"},{"name":"vpnservice-dhcp","revision":"2016-04-28","schema":"/modules/vpnservice-dhcp/2016-04-28","namespace":"urn:opendaylight:netvirt:dhcp","conformance-type":"import"},{"name":"opendaylight-ipv6-arbitrary-bitmask-fields","revision":"2016-02-24","schema":"/modules/opendaylight-ipv6-arbitrary-bitmask-fields/2016-02-24","namespace":"urn:opendaylight:opendaylight-ipv6-arbitrary-bitmask-fields","conformance-type":"import"},{"name":"opendaylight-match-types","revision":"2013-10-26","schema":"/modules/opendaylight-match-types/2013-10-26","namespace":"urn:opendaylight:model:match:types","conformance-type":"import"},{"name":"opendaylight-action-types","revision":"2013-11-12","schema":"/modules/opendaylight-action-types/2013-11-12","namespace":"urn:opendaylight:action:types","conformance-type":"import"},{"name":"experimenter-action-types","revision":"2014-02-28","schema":"/modules/experimenter-action-types/2014-02-28","namespace":"urn:ericsson:experimenter:action:types","conformance-type":"import"},{"name":"opendaylight-group-types","revision":"2013-10-18","schema":"/modules/opendaylight-group-types/2013-10-18","namespace":"urn:opendaylight:group:types","conformance-type":"import"},{"name":"sal-group","revision":"2013-09-18","schema":"/modules/sal-group/2013-09-18","namespace":"urn:opendaylight:group:service","conformance-type":"import"},{"name":"sal-groups-batch","revision":"2016-03-15","schema":"/modules/sal-groups-batch/2016-03-15","namespace":"urn:opendaylight:groups:service","conformance-type":"import"},{"name":"opendaylight-sal-dom-broker-impl","revision":"2013-10-28","schema":"/modules/opendaylight-sal-dom-broker-impl/2013-10-28","namespace":"urn:opendaylight:params:xml:ns:yang:controller:md:sal:dom:impl","conformance-type":"import"},{"name":"odl-concurrent-data-broker-cfg","revision":"2014-11-24","schema":"/modules/odl-concurrent-data-broker-cfg/2014-11-24","namespace":"urn:opendaylight:params:xml:ns:yang:controller:config:concurrent-data-broker","conformance-type":"import"},{"name":"mdsalutil-impl","revision":"2016-04-06","schema":"/modules/mdsalutil-impl/2016-04-06","namespace":"urn:opendaylight:genius:mdsalutil:impl","conformance-type":"import"},{"name":"ietf-network","revision":"2015-06-08","schema":"/modules/ietf-network/2015-06-08","namespace":"urn:ietf:params:xml:ns:yang:ietf-network","conformance-type":"import"},{"name":"ietf-network-topology","revision":"2015-06-08","schema":"/modules/ietf-network-topology/2015-06-08","namespace":"urn:ietf:params:xml:ns:yang:ietf-network-topology","conformance-type":"import"},{"name":"sal-meters-batch","revision":"2016-03-16","schema":"/modules/sal-meters-batch/2016-03-16","namespace":"urn:opendaylight:meters:service","conformance-type":"import"},{"name":"sal-meter","revision":"2013-09-18","schema":"/modules/sal-meter/2013-09-18","namespace":"urn:opendaylight:meter:service","conformance-type":"import"},{"name":"resync-error-notification","revision":"2016-02-07","schema":"/modules/resync-error-notification/2016-02-07","namespace":"urn:opendaylight:vendor:extension:resync:error:notification","conformance-type":"import"},{"name":"neutron-qos","revision":"2016-06-13","schema":"/modules/neutron-qos/2016-06-13","namespace":"urn:opendaylight:neutron-qos","conformance-type":"import"},{"name":"netconf-node-topology","revision":"2015-01-14","schema":"/modules/netconf-node-topology/2015-01-14","namespace":"urn:opendaylight:netconf-node-topology","conformance-type":"import"},{"name":"neutronvpn","revision":"2015-06-02","schema":"/modules/neutronvpn/2015-06-02","namespace":"urn:opendaylight:netvirt:neutronvpn","conformance-type":"import"},{"name":"ietf-restconf-monitoring","revision":"2017-01-26","schema":"/modules/ietf-restconf-monitoring/2017-01-26","namespace":"urn:ietf:params:xml:ns:yang:ietf-restconf-monitoring","conformance-type":"import"},{"name":"neutron-l2gateways","revision":"2015-07-12","schema":"/modules/neutron-l2gateways/2015-07-12","namespace":"urn:opendaylight:neutron-l2gateways","conformance-type":"import"},{"name":"opendaylight-flow-types","revision":"2013-10-26","schema":"/modules/opendaylight-flow-types/2013-10-26","namespace":"urn:opendaylight:flow:types","conformance-type":"import"},{"name":"fib-rpc","revision":"2016-01-21","schema":"/modules/fib-rpc/2016-01-21","namespace":"urn:opendaylight:netvirt:fib:rpc","conformance-type":"import"},{"name":"opendaylight-table-types","revision":"2013-10-26","schema":"/modules/opendaylight-table-types/2013-10-26","namespace":"urn:opendaylight:table:types","conformance-type":"import"},{"name":"experimenter-table-types","revision":"2014-03-06","schema":"/modules/experimenter-table-types/2014-03-06","namespace":"urn:ericsson:experimenter:table:types","conformance-type":"import"},{"name":"flow-node-inventory","revision":"2013-08-19","schema":"/modules/flow-node-inventory/2013-08-19","namespace":"urn:opendaylight:flow:inventory","conformance-type":"import"},{"name":"opendaylight-queue-statistics","revision":"2013-12-16","schema":"/modules/opendaylight-queue-statistics/2013-12-16","namespace":"urn:opendaylight:queue:statistics","conformance-type":"import"},{"name":"sal-flows-batch","revision":"2016-03-14","schema":"/modules/sal-flows-batch/2016-03-14","namespace":"urn:opendaylight:flows:service","conformance-type":"import"},{"name":"sal-table","revision":"2013-10-26","schema":"/modules/sal-table/2013-10-26","namespace":"urn:opendaylight:table:service","conformance-type":"import"},{"name":"packet-processing","revision":"2013-07-09","schema":"/modules/packet-processing/2013-07-09","namespace":"urn:opendaylight:packet:service","conformance-type":"import"},{"name":"experimenter-flow-types","revision":"2014-04-22","schema":"/modules/experimenter-flow-types/2014-04-22","namespace":"urn:ericsson:experimenter:flow:types","conformance-type":"import"},{"name":"sal-flat-batch","revision":"2016-03-21","schema":"/modules/sal-flat-batch/2016-03-21","namespace":"urn:opendaylight:flat-batch:service","conformance-type":"import"},{"name":"sal-flow","revision":"2013-08-19","schema":"/modules/sal-flow/2013-08-19","namespace":"urn:opendaylight:flow:service","conformance-type":"import"},{"name":"node-error","revision":"2014-04-10","schema":"/modules/node-error/2014-04-10","namespace":"urn:opendaylight:node:error:service","conformance-type":"import"},{"name":"opendaylight-group-statistics","revision":"2013-11-11","schema":"/modules/opendaylight-group-statistics/2013-11-11","namespace":"urn:opendaylight:group:statistics","conformance-type":"import"},{"name":"opendaylight-flow-table-statistics","revision":"2013-12-15","schema":"/modules/opendaylight-flow-table-statistics/2013-12-15","namespace":"urn:opendaylight:flow:table:statistics","conformance-type":"import"},{"name":"neutron-L3","revision":"2015-07-12","schema":"/modules/neutron-L3/2015-07-12","namespace":"urn:opendaylight:neutron-L3","conformance-type":"import"},{"name":"bgp","revision":"2013-07-15","schema":"/modules/bgp/2013-07-15","namespace":"urn:cisco:params:xml:ns:yang:bgp","conformance-type":"import"},{"name":"neutron-extensions","revision":"2016-06-17","schema":"/modules/neutron-extensions/2016-06-17","namespace":"urn:opendaylight:neutron-extensions","conformance-type":"import"},{"name":"neutron-constants","revision":"2015-07-12","schema":"/modules/neutron-constants/2015-07-12","namespace":"urn:opendaylight:neutron-constants","conformance-type":"import"},{"name":"neutron-fwaas","revision":"2015-07-12","schema":"/modules/neutron-fwaas/2015-07-12","namespace":"urn:opendaylight:neutron-fwaas","conformance-type":"import"},{"name":"neutron-ports","revision":"2015-07-12","schema":"/modules/neutron-ports/2015-07-12","namespace":"urn:opendaylight:neutron-ports","conformance-type":"import"},{"name":"neutron-metering","revision":"2015-07-12","schema":"/modules/neutron-metering/2015-07-12","namespace":"urn:opendaylight:neutron-metering","conformance-type":"import"},{"name":"neutron-sfc-flow-classifier","revision":"2016-05-11","schema":"/modules/neutron-sfc-flow-classifier/2016-05-11","namespace":"urn:opendaylight:neutron-sfc-flow-classifier","conformance-type":"import"},{"name":"neutron-lbaasv2","revision":"2015-07-12","schema":"/modules/neutron-lbaasv2/2015-07-12","namespace":"urn:opendaylight:neutron-lbaasv2","conformance-type":"import"},{"name":"neutron-secgroups","revision":"2015-07-12","schema":"/modules/neutron-secgroups/2015-07-12","namespace":"urn:opendaylight:neutron-secgroups","conformance-type":"import"},{"name":"idmanager-impl","revision":"2016-04-06","schema":"/modules/idmanager-impl/2016-04-06","namespace":"urn:opendaylight:genius:idmanager:impl","conformance-type":"import"},{"name":"ietf-interfaces","revision":"2014-05-08","schema":"/modules/ietf-interfaces/2014-05-08","feature":["pre-provisioning","arbitrary-names","if-mib"],"namespace":"urn:ietf:params:xml:ns:yang:ietf-interfaces","conformance-type":"import"},{"name":"l3vpn","revision":"2014-08-15","schema":"/modules/l3vpn/2014-08-15","namespace":"urn:huawei:params:xml:ns:yang:l3vpn","conformance-type":"import"},{"name":"ietf-packet-fields","revision":"2016-02-18","schema":"/modules/ietf-packet-fields/2016-02-18","namespace":"urn:ietf:params:xml:ns:yang:ietf-packet-fields","conformance-type":"import"},{"name":"elan","revision":"2015-06-02","schema":"/modules/elan/2015-06-02","namespace":"urn:opendaylight:netvirt:elan","conformance-type":"import"},{"name":"iana-if-type","revision":"2014-05-08","schema":"/modules/iana-if-type/2014-05-08","namespace":"urn:ietf:params:xml:ns:yang:iana-if-type","conformance-type":"import"},{"name":"odl-arputil","revision":"2016-04-06","schema":"/modules/odl-arputil/2016-04-06","namespace":"urn:opendaylight:genius:arputil","conformance-type":"import"},{"name":"etree","revision":"2016-06-14","schema":"/modules/etree/2016-06-14","namespace":"urn:opendaylight:netvirt:elan:etree","conformance-type":"import"},{"name":"ietf-access-control-list","revision":"2016-02-18","schema":"/modules/ietf-access-control-list/2016-02-18","namespace":"urn:ietf:params:xml:ns:yang:ietf-access-control-list","conformance-type":"import"},{"name":"aclservice","revision":"2016-06-08","schema":"/modules/aclservice/2016-06-08","namespace":"urn:opendaylight:netvirt:aclservice","conformance-type":"import"},{"name":"interface-statistics","revision":"2015-08-24","schema":"/modules/interface-statistics/2015-08-24","namespace":"urn:opendaylight:genius:interface:statistics","conformance-type":"import"},{"name":"cloud-service-chain-state","revision":"2017-05-11","schema":"/modules/cloud-service-chain-state/2017-05-11","namespace":"urn:opendaylight:netvirt:cloud-servicechain:state","conformance-type":"import"},{"name":"elan-statistics","revision":"2015-08-24","schema":"/modules/elan-statistics/2015-08-24","namespace":"urn:opendaylight:netvirt:elan:statistics","conformance-type":"import"},{"name":"odl-interface","revision":"2016-04-06","schema":"/modules/odl-interface/2016-04-06","namespace":"urn:opendaylight:genius:interfacemanager","conformance-type":"import"},{"name":"itm-config","revision":"2016-04-06","schema":"/modules/itm-config/2016-04-06","namespace":"urn:opendaylight:genius:itm:config","conformance-type":"import"},{"name":"itm","revision":"2016-04-06","schema":"/modules/itm/2016-04-06","namespace":"urn:opendaylight:genius:itm","conformance-type":"import"},{"name":"odl-l3vpn","revision":"2013-09-11","schema":"/modules/odl-l3vpn/2013-09-11","namespace":"urn:opendaylight:netvirt:l3vpn","conformance-type":"import"},{"name":"itm-state","revision":"2016-04-06","schema":"/modules/itm-state/2016-04-06","namespace":"urn:opendaylight:genius:itm:op","conformance-type":"import"},{"name":"odl-interface-rpc","revision":"2016-04-06","schema":"/modules/odl-interface-rpc/2016-04-06","namespace":"urn:opendaylight:genius:interfacemanager:rpcs","conformance-type":"import"},{"name":"itm-rpc","revision":"2016-04-06","schema":"/modules/itm-rpc/2016-04-06","namespace":"urn:opendaylight:genius:itm:rpcs","conformance-type":"import"},{"name":"itm-impl","revision":"2016-04-06","schema":"/modules/itm-impl/2016-04-06","namespace":"urn:opendaylight:genius:itm:impl","conformance-type":"import"},{"name":"alivenessmonitor-impl","revision":"2016-04-06","schema":"/modules/alivenessmonitor-impl/2016-04-06","namespace":"urn:opendaylight:genius:alivenessmonitor:impl","conformance-type":"import"},{"name":"cluster-singleton-service-impl","revision":"2016-07-18","schema":"/modules/cluster-singleton-service-impl/2016-07-18","namespace":"urn:opendaylight:params:xml:ns:yang:md:sal:config:impl:cluster-singleton-service","conformance-type":"import"},{"name":"experimenter-switchfeatures-provider","revision":"2016-07-13","schema":"/modules/experimenter-switchfeatures-provider/2016-07-13","namespace":"urn:opendaylight:params:xml:ns:yang:config:openflow:experimenter-switchfeatures-provider","conformance-type":"import"},{"name":"opendaylight-entity-ownership-service","revision":"2015-08-10","schema":"/modules/opendaylight-entity-ownership-service/2015-08-10","namespace":"urn:opendaylight:params:xml:ns:yang:controller:md:sal:core:spi:entity-ownership-service","conformance-type":"import"},{"name":"interfacemanager-impl","revision":"2016-04-06","schema":"/modules/interfacemanager-impl/2016-04-06","namespace":"urn:opendaylight:genius:interfacemanager:impl","conformance-type":"import"},{"name":"opendaylight-legacy-entity-ownership-service-provider","revision":"2016-02-26","schema":"/modules/opendaylight-legacy-entity-ownership-service-provider/2016-02-26","namespace":"urn:opendaylight:params:xml:ns:yang:controller:config:legacy-entity-ownership-service-provider","conformance-type":"import"},{"name":"openflow-provider-impl","revision":"2014-03-26","schema":"/modules/openflow-provider-impl/2014-03-26","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:common:config:impl","conformance-type":"import"},{"name":"overlay","revision":"2015-01-05","schema":"/modules/overlay/2015-01-05","namespace":"urn:opendaylight:params:xml:ns:yang:overlay","conformance-type":"import"},{"name":"ovsdb","revision":"2015-01-05","schema":"/modules/ovsdb/2015-01-05","namespace":"urn:opendaylight:params:xml:ns:yang:ovsdb","conformance-type":"import"},{"name":"odl-interface-meta","revision":"2016-04-06","schema":"/modules/odl-interface-meta/2016-04-06","namespace":"urn:opendaylight:genius:interfacemanager:meta","conformance-type":"import"},{"name":"netconf-northbound-notification-impl","revision":"2015-08-07","schema":"/modules/netconf-northbound-notification-impl/2015-08-07","namespace":"urn:opendaylight:params:xml:ns:yang:controller:netconf:northbound:notification:impl","conformance-type":"import"},{"name":"neutron-subnets","revision":"2015-07-12","schema":"/modules/neutron-subnets/2015-07-12","namespace":"urn:opendaylight:neutron-subnets","conformance-type":"import"},{"name":"neutron","revision":"2015-07-12","schema":"/modules/neutron/2015-07-12","namespace":"urn:opendaylight:neutron","conformance-type":"import"},{"name":"neutron-portsecurity","revision":"2015-07-12","schema":"/modules/neutron-portsecurity/2015-07-12","namespace":"urn:opendaylight:neutron-portsecurity","conformance-type":"import"},{"name":"neutron-binding","revision":"2015-07-12","schema":"/modules/neutron-binding/2015-07-12","namespace":"urn:opendaylight:neutron-binding","conformance-type":"import"},{"name":"neutron-port-ext","revision":"2015-11-25","schema":"/modules/neutron-port-ext/2015-11-25","namespace":"urn:opendaylight:neutron-port-ext","conformance-type":"import"},{"name":"neutron-qos-ext","revision":"2016-06-13","schema":"/modules/neutron-qos-ext/2016-06-13","namespace":"urn:opendaylight:neutron-qos-ext","conformance-type":"import"},{"name":"neutron-provider-ext","revision":"2015-07-12","schema":"/modules/neutron-provider-ext/2015-07-12","namespace":"urn:opendaylight:neutron-provider-ext","conformance-type":"import"},{"name":"neutron-L3-ext","revision":"2015-07-12","schema":"/modules/neutron-L3-ext/2015-07-12","namespace":"urn:opendaylight:neutron-L3-ext","conformance-type":"import"},{"name":"subscribe-to-notification","revision":"2016-10-28","schema":"/modules/subscribe-to-notification/2016-10-28","namespace":"subscribe:to:notification","conformance-type":"import"},{"name":"instance-identifier-patch-module","revision":"2015-11-21","schema":"/modules/instance-identifier-patch-module/2015-11-21","namespace":"instance:identifier:patch:module","conformance-type":"import"},{"name":"openflow-configuration","revision":"2014-06-30","schema":"/modules/openflow-configuration/2014-06-30","namespace":"urn:opendaylight:openflow:config","conformance-type":"import"},{"name":"openflow-switch-connection-provider-impl","revision":"2014-03-28","schema":"/modules/openflow-switch-connection-provider-impl/2014-03-28","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:switch:connection:provider:impl","conformance-type":"import"},{"name":"openflow-switch-connection-config","revision":"2016-05-06","schema":"/modules/openflow-switch-connection-config/2016-05-06","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:switch:connection:config","conformance-type":"import"},{"name":"sal-role","revision":"2015-07-27","schema":"/modules/sal-role/2015-07-27","namespace":"urn:opendaylight:role:service","conformance-type":"import"},{"name":"opendaylight-flow-statistics","revision":"2013-08-19","schema":"/modules/opendaylight-flow-statistics/2013-08-19","namespace":"urn:opendaylight:flow:statistics","conformance-type":"import"},{"name":"opendaylight-direct-statistics","revision":"2016-05-11","schema":"/modules/opendaylight-direct-statistics/2016-05-11","namespace":"urn:opendaylight:direct:statistics","conformance-type":"import"},{"name":"openflowplugin-extension-general","revision":"2014-07-14","schema":"/modules/openflowplugin-extension-general/2014-07-14","namespace":"urn:opendaylight:openflowplugin:extension:general","conformance-type":"import"},{"name":"openflowplugin-extension-nicira-match","revision":"2014-07-14","schema":"/modules/openflowplugin-extension-nicira-match/2014-07-14","namespace":"urn:opendaylight:openflowplugin:extension:nicira:match","conformance-type":"import"},{"name":"openflowplugin-extension-nicira-action","revision":"2014-07-14","schema":"/modules/openflowplugin-extension-nicira-action/2014-07-14","namespace":"urn:opendaylight:openflowplugin:extension:nicira:action","conformance-type":"import"},{"name":"interface-service-bindings","revision":"2016-04-06","schema":"/modules/interface-service-bindings/2016-04-06","namespace":"urn:opendaylight:genius:interfacemanager:servicebinding","conformance-type":"import"},{"name":"openflow-protocol","revision":"2013-07-31","schema":"/modules/openflow-protocol/2013-07-31","namespace":"urn:opendaylight:openflow:protocol","conformance-type":"import"},{"name":"openflowjava-extension-resync","revision":"2016-07-13","schema":"/modules/openflowjava-extension-resync/2016-07-13","namespace":"urn:opendaylight:openflowjava:extension-resync","conformance-type":"import"},{"name":"openflow-resync","revision":"2014-02-06","schema":"/modules/openflow-resync/2014-02-06","namespace":"urn:opendaylight:openflow:resync","conformance-type":"import"},{"name":"opendaylight-switch-features-extension","revision":"2014-02-06","schema":"/modules/opendaylight-switch-features-extension/2014-02-06","namespace":"urn:opendaylight:switch-features:extension","conformance-type":"import"},{"name":"openflowjava-extension-switchfeatures","revision":"2016-07-13","schema":"/modules/openflowjava-extension-switchfeatures/2016-07-13","namespace":"urn:opendaylight:openflowjava:extension-switchfeatures","conformance-type":"import"},{"name":"openflow-augments","revision":"2015-02-25","schema":"/modules/openflow-augments/2015-02-25","namespace":"urn:opendaylight:openflow:augments","conformance-type":"import"},{"name":"openflow-approved-extensions","revision":"2016-08-02","schema":"/modules/openflow-approved-extensions/2016-08-02","namespace":"urn:opendaylight:openflow:approved:extensions","conformance-type":"import"},{"name":"experimenter-action","revision":"2014-03-06","schema":"/modules/experimenter-action/2014-03-06","namespace":"urn:ericsson:openflow:experimenter:action","conformance-type":"import"},{"name":"opendaylight-meter-statistics","revision":"2013-11-11","schema":"/modules/opendaylight-meter-statistics/2013-11-11","namespace":"urn:opendaylight:meter:statistics","conformance-type":"import"},{"name":"aaa-cert-rpc","revision":"2015-12-15","schema":"/modules/aaa-cert-rpc/2015-12-15","namespace":"urn:opendaylight:yang:aaa:cert:rpc","conformance-type":"import"},{"name":"openflow-provider","revision":"2015-03-31","schema":"/modules/openflow-provider/2015-03-31","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:api","conformance-type":"import"},{"name":"openflow-plugin-provider-impl","revision":"2015-03-27","schema":"/modules/openflow-plugin-provider-impl/2015-03-27","namespace":"urn:opendaylight:params:xml:ns:yang:config:openflow:plugin:impl","conformance-type":"import"},{"name":"sal-experimenter-message","revision":"2015-10-20","schema":"/modules/sal-experimenter-message/2015-10-20","namespace":"urn:opendaylight:experimenter-message:service","conformance-type":"import"},{"name":"openflowplugin-extension-resync","revision":"2016-07-13","schema":"/modules/openflowplugin-extension-resync/2016-07-13","namespace":"urn:opendaylight:openflowplugin:extension:resync","conformance-type":"import"},{"name":"openflowplugin-extension-switchfeatures","revision":"2016-07-13","schema":"/modules/openflowplugin-extension-switchfeatures/2016-07-13","namespace":"urn:opendaylight:openflowplugin:extension:switchfeatures","conformance-type":"import"}],"module-set-id":"6"},"ietf-restconf-monitoring:restconf-state":{"capabilities":{"capability":["urn:ietf:params:restconf:capability:depth:1.0","urn:ietf:params:restconf:capability:fields:1.0","urn:ietf:params:restconf:capability:filter:1.0","urn:ietf:params:restconf:capability:replay:1.0","urn:ietf:params:restconf:capability:with-defaults:1.0"]}},"opendaylight-inventory:nodes":{},"aliveness-monitor:monitor-profiles":{"monitor-profile":[{"id":1,"failure-threshold":2,"monitor-interval":120000,"protocol-type":"arp","monitor-window":4}]},"lock-manager:locks":{}}
\ No newline at end of file
--- /dev/null
+[
+{"op":"remove","path":"/difference"}
+]
--- /dev/null
+[
+{"op":"add","path":"/difference","value":"yes this is the difference"},
+{"op":"remove","path":"/difference"}
+]
--- /dev/null
+{
+ "Name": "John",
+ "LastName1":
+ {
+ "lastName1":"ln1"
+ },
+ "LastName2":
+ {
+ "lastName2":"ln2"
+ }
+}
--- /dev/null
+{
+ "Name": "John",
+ "LastName1":
+ {
+ "lastName1":"ln1"
+ },
+ "difference": "yes this is the difference",
+ "LastName2":
+ {
+ "lastName2":"ln2"
+ }
+}
--- /dev/null
+{
+ "Name": "John",
+ "LastName2":
+ {
+ "lastName2":"ln2"
+ },
+ "LastName1":
+ {
+ "lastName1":"ln1"
+ }
+}
--- /dev/null
+*** Settings ***
+Documentation Test suite for B&R support library itself
+Suite Setup Run Keywords Init Suite ClusterManagement Setup
+Suite Teardown Delete All Sessions
+Test Setup Remove All Elements If Exist ${SERVICE_FUNCTIONS_URI}
+Library SSHLibrary
+Library Collections
+Library OperatingSystem
+Library RequestsLibrary
+Resource ../../../variables/Variables.robot
+Resource ../../../libraries/Utils.robot
+Resource ../../../libraries/TemplatedRequests.robot
+Resource ../../../libraries/BackupRestoreKeywords.robot
+
+*** Test Cases ***
+ConditionalBackupRestoreCheck keyword
+ [Documentation] Demostrates how the ConditionalBackupRestoreCheck keyword can be used together with the flag " -v BR_TESTING_ENABLED:false/true" in order to add backup-restore verification to existing testcases
+ Add Elements To URI From File ${SERVICE_FUNCTIONS_URI} ${SERVICE_FUNCTIONS_FILE}
+ ConditionalBackupRestoreCheck
+ ${body} OperatingSystem.Get File ${SERVICE_FUNCTIONS_FILE}
+ ${jsonbody} To Json ${body}
+ ${functions} Get From Dictionary ${jsonbody} service-functions
+ ${resp} RequestsLibrary.Get Request session ${SERVICE_FUNCTIONS_URI}
+ Should Contain ${ALLOWED_STATUS_CODES} ${resp.status_code}
+ ${result} To JSON ${resp.content}
+ ${function} Get From Dictionary ${result} service-functions
+ Lists Should be Equal ${function} ${functions}
+
+BackupRestoreCheck keyword
+ [Documentation] Demostrates how the BackupRestoreCheck keyword can be used in order to create specific testcases performing backup-restore verification
+ ${body} OperatingSystem.Get File ${SERVICE_FUNCTIONS_FILE}
+ Add Elements To URI From File ${SERVICE_FUNCTIONS_URI} ${SERVICE_FUNCTIONS_FILE}
+ Run Keyword And Expect Error * BackupRestoreCheck exclusionsOperationalBefore=../variables/backuprestore/json_prefilter.conf
+ ${resp} RequestsLibrary.Get Request session ${SERVICE_FUNCTIONS_URI}
+ Should Contain ${ALLOWED_STATUS_CODES} ${resp.status_code}
+ Remove All Elements At URI ${SERVICE_FUNCTIONS_URI}
+ ${resp} RequestsLibrary.Get Request session ${SERVICE_FUNCTIONS_URI}
+ Should Be Equal As Strings ${resp.status_code} 404
+
+*** Keywords ***
+Init Suite
+ [Documentation] Initialize session and ODL version specific variables
+ Create Session session http://${ODL_SYSTEM_IP}:${RESTCONFPORT} auth=${AUTH} headers=${HEADERS}
+ log ${ODL_STREAM}
+ Set Suite Variable ${VERSION_DIR} master
+ Set Suite Variable ${SERVICE_FUNCTIONS_URI} /restconf/config/service-function:service-functions/
+ Set Suite Variable ${SERVICE_FUNCTIONS_FILE} ${CURDIR}/../../../variables/sfc/${VERSION_DIR}/service-functions.json
+ Set Suite Variable ${SF_DPI102100_URI} /restconf/config/service-function:service-functions/service-function/dpi-102-100/
+ Set Suite Variable ${SF_DPI102100_FILE} ${CURDIR}/../../../variables/sfc/${VERSION_DIR}/sf_dpi_102_100.json
+ Set Suite Variable ${SF_DPL101_FILE} ${CURDIR}/../../../variables/sfc/${VERSION_DIR}/sf_dpl_101.json
--- /dev/null
+*** Settings ***
+Documentation Test suite for SFC Service Functions, Operates functions from Restconf APIs.
+Suite Setup Run Keywords Init Suite ClusterManagement Setup
+Suite Teardown Delete All Sessions
+Library SSHLibrary
+Library Collections
+Library OperatingSystem
+Library RequestsLibrary
+Library HttpLibrary.HTTP
+Resource ../../../variables/Variables.robot
+Resource ../../../libraries/Utils.robot
+Resource ../../../libraries/TemplatedRequests.robot
+Resource ../../../libraries/BackupRestoreKeywords.robot
+
+*** Test Cases ***
+Basic Environment Setup Tests
+ [Documentation] Prepare Basic Test Environment
+ Add Elements To URI From File ${SERVICE_FORWARDERS_URI} ${SERVICE_FORWARDERS_FILE}
+ Add Elements To URI From File ${SERVICE_NODES_URI} ${SERVICE_NODES_FILE}
+ Add Elements To URI From File ${SERVICE_FUNCTIONS_URI} ${SERVICE_FUNCTIONS_FILE}
+ Add Elements To URI From File ${SERVICE_CHAINS_URI} ${SERVICE_CHAINS_FILE}
+ Add Elements To URI From File ${SERVICE_FUNCTION_PATHS_URI} ${SERVICE_FUNCTION_PATHS_FILE}
+
+Create and Get Rendered Service Path
+ [Documentation] Create and Get Rendered Service Path Through RESTConf APIs
+ Post Elements To URI As JSON ${OPERATIONS_CREATE_RSP_URI} ${CREATE_RSP1_INPUT}
+ ${resp} RequestsLibrary.Get Request session ${OPERATIONAL_RSPS_URI}
+ Should Contain ${ALLOWED_STATUS_CODES} ${resp.status_code}
+ ${elements}= Create List SFC1-100-Path-1 "parent-service-function-path":"SFC1-100" "hop-number":0 "service-index":255 "hop-number":1
+ ... "service-index":254 "hop-number":2 "service-index":253
+ ConditionalBackupRestoreCheck
+ Check For Elements At URI ${OPERATIONAL_RSPS_URI} ${elements}
+ Post Elements To URI As JSON ${OPERATIONS_DELETE_RSP_URI} ${DELETE_RSP1_INPUT}
+
+Create Get Rendered Service Path Failure
+ [Documentation] Create and Get Rendered Service Path Through RESTConf APIs
+ Post Elements To URI As JSON ${OPERATIONS_CREATE_RSP_URI} ${CREATE_RSP1_INPUT}
+ ${resp} RequestsLibrary.Get Request session ${OPERATIONAL_RSPS_URI}
+ Should Contain ${ALLOWED_STATUS_CODES} ${resp.status_code}
+ ${elements}= Create List SFC1-100-Path-1 "parent-service-function-path":"SFC1-100" "hop-number":0 "service-index":255 "hop-number":1
+ ... "service-index":254 "hop-number":2 "service-index":253
+ ConditionalBackupRestoreCheck
+ Check For Elements At URI ${OPERATIONAL_RSPS_URI} ${elements}
+ Post Elements To URI As JSON ${OPERATIONS_DELETE_RSP_URI} ${DELETE_RSP1_INPUT}
+
+Clean Datastore After Tests
+ [Documentation] Clean All Items In Datastore After Tests
+ Remove All Elements If Exist ${SERVICE_FUNCTIONS_URI}
+ Remove All Elements If Exist ${SERVICE_FORWARDERS_URI}
+ Remove All Elements If Exist ${SERVICE_NODES_URI}
+ Remove All Elements If Exist ${SERVICE_CHAINS_URI}
+ Remove All Elements If Exist ${SERVICE_FUNCTION_PATHS_URI}
+
+*** Keywords ***
+Post Elements To URI As JSON
+ [Arguments] ${uri} ${data}
+ ${resp} RequestsLibrary.Post Request session ${uri} data=${data} headers=${headers}
+ Should Contain ${ALLOWED_STATUS_CODES} ${resp.status_code}
+
+Get JSON Elements From URI
+ [Arguments] ${uri}
+ ${resp} RequestsLibrary.Get Request session ${uri}
+ ${value} To Json ${resp.content}
+ [Return] ${value}
+
+Init Suite
+ [Documentation] Create session and initialize ODL version specific variables
+ Create Session session http://${ODL_SYSTEM_IP}:${RESTCONFPORT} auth=${AUTH} headers=${HEADERS}
+ log ${ODL_STREAM}
+ Set Suite Variable ${VERSION_DIR} master
+ Set Suite Variable ${SERVICE_FUNCTIONS_URI} /restconf/config/service-function:service-functions/
+ Set Suite Variable ${SERVICE_FUNCTIONS_FILE} ${CURDIR}/../../../variables/sfc/${VERSION_DIR}/service-functions.json
+ Set Suite Variable ${SERVICE_FORWARDERS_URI} /restconf/config/service-function-forwarder:service-function-forwarders/
+ Set Suite Variable ${SERVICE_FORWARDERS_FILE} ${CURDIR}/../../../variables/sfc/${VERSION_DIR}/service-function-forwarders.json
+ Set Suite Variable ${SERVICE_NODES_URI} /restconf/config/service-node:service-nodes/
+ Set Suite Variable ${SERVICE_NODES_FILE} ${CURDIR}/../../../variables/sfc/${VERSION_DIR}/service-nodes.json
+ Set Suite Variable ${SERVICE_CHAINS_URI} /restconf/config/service-function-chain:service-function-chains/
+ Set Suite Variable ${SERVICE_CHAINS_FILE} ${CURDIR}/../../../variables/sfc/${VERSION_DIR}/service-function-chains.json
+ Set Suite Variable ${SERVICE_FUNCTION_PATHS_URI} /restconf/config/service-function-path:service-function-paths/
+ Set Suite Variable ${SERVICE_FUNCTION_PATHS_FILE} ${CURDIR}/../../../variables/sfc/${VERSION_DIR}/service-function-paths.json
+ Set Suite Variable ${SERVICE_SCHED_TYPES_URI} /restconf/config/service-function-scheduler-type:service-function-scheduler-types/
+ Set Suite Variable ${SERVICE_SCHED_TYPE_URI_BASE} ${SERVICE_SCHED_TYPES_URI}service-function-scheduler-type/service-function-scheduler-type:
+ Set Suite Variable ${SERVICE_RANDOM_SCHED_TYPE_URI} ${SERVICE_SCHED_TYPE_URI_BASE}random
+ Set Suite Variable ${SERVICE_RANDOM_SCHED_TYPE_FILE} ${CURDIR}/../../../variables/sfc/${VERSION_DIR}/service-random-schedule-type.json
+ Set Suite Variable ${SERVICE_ROUNDROBIN_SCHED_TYPE_URI} ${SERVICE_SCHED_TYPE_URI_BASE}round-robin
+ Set Suite Variable ${SERVICE_ROUNDROBIN_SCHED_TYPE_FILE} ${CURDIR}/../../../variables/sfc/${VERSION_DIR}/service-roundrobin-schedule-type.json
+ Set Suite Variable ${SERVICE_LOADBALANCE_SCHED_TYPE_URI} ${SERVICE_SCHED_TYPE_URI_BASE}load-balance
+ Set Suite Variable ${SERVICE_LOADBALANCE_SCHED_TYPE_FILE} ${CURDIR}/../../../variables/sfc/${VERSION_DIR}/service-loadbalance-schedule-type.json
+ Set Suite Variable ${SERVICE_SHORTESTPATH_SCHED_TYPE_URI} ${SERVICE_SCHED_TYPE_URI_BASE}shortest-path
+ Set Suite Variable ${SERVICE_SHORTESTPATH_SCHED_TYPE_FILE} ${CURDIR}/../../../variables/sfc/${VERSION_DIR}/service-shortestpath-schedule-type.json
+ Set Suite Variable ${RENDERED_SERVICE_PATHS_URI} /restconf/config/rendered-service-path:rendered-service-paths/
+ Set Suite Variable ${OPERATIONAL_RSPS_URI} /restconf/operational/rendered-service-path:rendered-service-paths/
+ Set Suite Variable ${OPERATIONS_CREATE_RSP_URI} /restconf/operations/rendered-service-path:create-rendered-path/
+ Set Suite Variable ${OPERATIONS_DELETE_RSP_URI} /restconf/operations/rendered-service-path:delete-rendered-path
+ Set Suite Variable ${CREATE_RSP1_INPUT} {"input":{"parent-service-function-path":"SFC1-100","name":"SFC1-100-Path-1"}}
+ Set Suite Variable ${CREATE_RSP2_INPUT} {"input":{"parent-service-function-path":"SFC1-100","name":"SFC1-100-Path-2"}}
+ Set Suite Variable ${CREATE_RSP3_INPUT} {"input":{"parent-service-function-path":"SFC1-100","name":"SFC1-100-Path-3"}}
+ Set Suite Variable ${CREATE_RSP4_INPUT} {"input":{"parent-service-function-path":"SFC1-100","name":"SFC1-100-Path-4"}}
+ Set Suite Variable ${CREATE_RSP5_INPUT} {"input":{"parent-service-function-path":"SFC1-100","name":"SFC1-100-Path-5"}}
+ Set Suite Variable ${CREATE_RSP6_INPUT} {"input":{"parent-service-function-path":"SFC1-100","name":"SFC1-100-Path-6"}}
+ Set Suite Variable ${CREATE_RSP_FAILURE_INPUT} {"input":{"parent-service-function-path":"SFC1-empty","name":"SFC1-empty-Path-1"}}
+ Set Suite Variable ${DELETE_RSP1_INPUT} {"input":{"name":"SFC1-100-Path-1"}}
+ Set Suite Variable ${DELETE_RSP2_INPUT} {"input":{"name":"SFC1-100-Path-2"}}
+ Set Suite Variable ${DELETE_RSP3_INPUT} {"input":{"name":"SFC1-100-Path-3"}}
+ Set Suite Variable ${DELETE_RSP4_INPUT} {"input":{"name":"SFC1-100-Path-4"}}
+ Set Suite Variable ${DELETE_RSP5_INPUT} {"input":{"name":"SFC1-100-Path-5"}}
+ Set Suite Variable ${DELETE_RSP6_INPUT} {"input":{"name":"SFC1-100-Path-6"}}
--- /dev/null
+*** Settings ***
+Documentation Resource consisting purely of variable definitions useful for multiple project suites.
+
+*** Variables ***
+${EXP_DIR} /tmp/Export
+${EXP_DATA_FILE} odl_backup_config.json
+${EXP_OPER_FILE} odl_backup_operational.json
+${RELATIVE_BEFORE_BACKUP_DIR} beforeBackup
+${RELATIVE_AFTER_RESTORE_DIR} afterRestore
--- /dev/null
+$.ietf-yang-library:modules-state.module[?(@.name=='ietf-yang-types')]
--- /dev/null
+# This example will remove an existing entry in the operational model
+
+$.ietf-yang-library:modules-state.module[@.name is 'sfc-of-renderer']