From /config/modules/module[name='hash-map-data-store']/instance[name='hash-map-data-store']
To /modules/module[type=hash-map-data-store][name=hash-map-data-store']
Affected netconf operations: get-config, edit-config.
Backwards compatibility with previous xpath version is preserved.
Change-Id: Ic7c8057811001dbec34115b3745ce42bae790a45
Signed-off-by: Maros Marsalek <mmarsale@cisco.com>
public static ServiceInstance fromString(String instanceId) {
instanceId = instanceId.trim();
Matcher matcher = p.matcher(instanceId);
+ if(matcher.matches() == false) {
+ matcher = pDeprecated.matcher(instanceId);
+ }
+
Preconditions.checkArgument(matcher.matches(), "Unexpected format for provider, expected " + p.toString()
- + " but was " + instanceId);
+ + " or " + pDeprecated.toString() + " but was " + instanceId);
+
String factoryName = matcher.group(1);
String instanceName = matcher.group(2);
return new ServiceInstance(factoryName, instanceName);
return instanceName;
}
- private static final String blueprint = "/" + XmlNetconfConstants.CONFIG_KEY + "/"
+ private static final String blueprint = "/"
+ XmlNetconfConstants.MODULES_KEY + "/" + XmlNetconfConstants.MODULE_KEY + "["
- + XmlNetconfConstants.NAME_KEY + "='%s']/" + XmlNetconfConstants.INSTANCE_KEY + "["
+ + XmlNetconfConstants.TYPE_KEY + "='%s']["
+ XmlNetconfConstants.NAME_KEY + "='%s']";
- private static final String blueprintR = "/" + XmlNetconfConstants.CONFIG_KEY + "/"
+ // TODO unify with xpath in RuntimeRpc
+
+ // Previous version of xpath, needs to be supported for backwards compatibility (persisted configs by config-persister)
+ private static final String blueprintRDeprecated = "/" + XmlNetconfConstants.CONFIG_KEY + "/"
+ XmlNetconfConstants.MODULES_KEY + "/" + XmlNetconfConstants.MODULE_KEY + "\\["
+ XmlNetconfConstants.NAME_KEY + "='%s'\\]/" + XmlNetconfConstants.INSTANCE_KEY + "\\["
+ XmlNetconfConstants.NAME_KEY + "='%s'\\]";
+ private static final String blueprintR = "/"
+ + XmlNetconfConstants.MODULES_KEY + "/" + XmlNetconfConstants.MODULE_KEY + "\\["
+ + XmlNetconfConstants.TYPE_KEY + "='%s'\\]\\["
+ + XmlNetconfConstants.NAME_KEY + "='%s'\\]";
+
+ private static final Pattern pDeprecated = Pattern.compile(String.format(blueprintRDeprecated, "(.+)", "(.+)"));
private static final Pattern p = Pattern.compile(String.format(blueprintR, "(.+)", "(.+)"));
@Override
// check after edit
commit();
Element response = getConfigRunning();
+ System.err.println(XmlUtil.toString(response));
checkBinaryLeafEdited(response);
checkTypeConfigAttribute(response);
<testing-dep>
<type xmlns:prefix="urn:opendaylight:params:xml:ns:yang:controller:test">prefix:testing</type>
- <name>ref_dep</name>
+ <name>ref_dep_2</name>
</testing-dep>
</module>
</modules>
<type xmlns:prefix="urn:opendaylight:params:xml:ns:yang:controller:test">prefix:testing</type>
<instance>
<name>ref_dep</name>
- <provider>/config/modules/module[name='impl-dep']/instance[name='dep']
+ <provider>/modules/module[type='impl-dep'][name='dep']
</provider>
</instance>
<instance>
</instance>
<instance>
<name>ref_test1</name>
- <provider>/config/modules/module[name='impl-netconf']/instance[name='test1']
+ <provider>
+ /modules/module[type='impl-netconf'][name='test1']
</provider>
</instance>
</service>
<type xmlns:prefix="urn:opendaylight:params:xml:ns:yang:controller:test">prefix:testing</type>
<instance>
<name>ref_dep</name>
- <provider>/config/modules/module[name='impl-dep']/instance[name='dep']
+ <provider>/modules/module[type='impl-dep'][name='dep']
</provider>
</instance>
<instance>
<name>ref_dep_2</name>
- <provider>/config/modules/module[name='impl-dep']/instance[name='dep2']
+ <provider>/modules/module[type='impl-dep'][name='dep2']
</provider>
</instance>
<instance>
<name>ref_test1</name>
- <provider>/config/modules/module[name='impl-netconf']/instance[name='test1']
+ <provider>
+ /modules/module[type='impl-netconf'][name='test1']
</provider>
</instance>
</service>
<type xmlns:prefix="urn:opendaylight:params:xml:ns:yang:controller:test">prefix:testing</type>
<instance>
<name>ref_dep</name>
- <provider>/config/modules/module[name='impl-dep']/instance[name='dep']
+ <provider>/modules/module[type='impl-dep'][name='dep']
</provider>
</instance>
<instance>
<name>ref_dep_2</name>
- <provider>/config/modules/module[name='impl-dep']/instance[name='dep2']
+ <provider>/modules/module[type='impl-dep'][name='dep2']
</provider>
</instance>
<instance>
<name>ref_test1</name>
- <provider>/config/modules/module[name='impl-netconf']/instance[name='test1']
+ <provider>
+ /modules/module[type='impl-netconf'][name='test1']
</provider>
</instance>
</service>
<type xmlns:prefix="urn:opendaylight:params:xml:ns:yang:controller:test">prefix:testing</type>
<instance>
<name>ref_dep</name>
- <provider>/config/modules/module[name='impl-dep']/instance[name='dep']
+ <provider>/modules/module[type='impl-dep'][name='dep']
</provider>
</instance>
<instance>
<name>ref_dep_2</name>
- <provider>/config/modules/module[name='impl-dep']/instance[name='dep2']
+ <provider>/modules/module[type='impl-dep'][name='dep2']
</provider>
</instance>
<instance>
<name>ref_test1</name>
- <provider>/config/modules/module[name='impl-netconf']/instance[name='test1']
+ <provider>
+ /modules/module[type='impl-netconf'][name='test1']
</provider>
</instance>
</service>
<type xmlns:prefix="urn:opendaylight:params:xml:ns:yang:controller:test">prefix:testing</type>
<instance>
<name>ref_dep</name>
- <provider>/config/modules/module[name='impl-dep']/instance[name='dep']
+ <provider>/modules/module[type='impl-dep'][name='dep']
</provider>
</instance>
<instance>
<name>ref_dep_2</name>
- <provider>/config/modules/module[name='impl-dep']/instance[name='dep2']
+ <provider>/modules/module[type='impl-dep'][name='dep2']
</provider>
</instance>
<instance>
<name>ref_test1</name>
- <provider>/config/modules/module[name='impl-netconf']/instance[name='test1']
+ <provider>
+ /modules/module[type='impl-netconf'][name='test1']
</provider>
</instance>
</service>
<type xmlns:prefix="urn:opendaylight:params:xml:ns:yang:controller:test">prefix:testing</type>
<instance>
<name>ref_dep</name>
- <provider>/config/modules/module[name='impl-dep']/instance[name='dep']
+ <provider>/modules/module[type='impl-dep'][name='dep']
</provider>
</instance>
<instance>
<name>ref_dep_2</name>
- <provider>/config/modules/module[name='impl-dep']/instance[name='dep2']
+ <provider>/modules/module[type='impl-dep'][name='dep2']
</provider>
</instance>
<instance>
<name>ref_test1</name>
- <provider>/config/modules/module[name='impl-netconf']/instance[name='test1']
+ <provider>
+ /modules/module[type='impl-netconf'][name='test1']
</provider>
</instance>
</service>
<type xmlns:prefix="urn:opendaylight:params:xml:ns:yang:controller:test">prefix:testing</type>
<instance>
<name>ref_dep</name>
- <provider>/config/modules/module[name='impl-dep']/instance[name='dep']
+ <provider>/modules/module[type='impl-dep'][name='dep']
</provider>
</instance>
</service>
<type xmlns:prefix="urn:opendaylight:params:xml:ns:yang:controller:test">prefix:testing</type>
<instance>
<name>ref_dep</name>
- <provider>/config/modules/module[name='impl-dep']/instance[name='dep']
+ <provider>/modules/module[type='impl-dep'][name='dep']
</provider>
</instance>
</service>
<instance>
<name>ref_dep</name>
- <provider>/config/modules/module[name='impl-dep']/instance[name='dep']
+ <provider>/modules/module[type='impl-dep'][name='dep']
</provider>
</instance>
</service>
<instance>
<name>ref_dep</name>
<unknownAttribute>error</unknownAttribute>
- <provider>/config/modules/module[name='impl-dep']/instance[name='dep']
+ <provider>/modules/module[type='impl-dep'][name='dep']
</provider>
</instance>
</service>
<type xmlns:prefix="urn:opendaylight:params:xml:ns:yang:controller:test">prefix:testing</type>
<instance>
<name>ref_dep</name>
- <provider>/config/modules/module[name='impl-dep']/instance[name='dep']
+ <provider>/modules/module[type='impl-dep'][name='dep']
</provider>
</instance>
</service>
<type xmlns:prefix="urn:opendaylight:params:xml:ns:yang:controller:test">prefix:testing</type>
<instance>
<name>ref_dep</name>
- <provider>/config/modules/module[name='impl-dep']/instance[name='dep']
+ <provider>/modules/module[type='impl-dep'][name='dep']
</provider>
</instance>
<instance>
<name>ref_dep_2</name>
- <provider>/config/modules/module[name='impl-dep']/instance[name='dep2']
+ <provider>/modules/module[type='impl-dep'][name='dep2']
</provider>
</instance>
<instance>
<name>ref_test1</name>
- <provider>/config/modules/module[name='impl-netconf']/instance[name='test1']
+ <provider>
+ /modules/module[type='impl-netconf'][name='test1']
</provider>
</instance>
</service>
<type xmlns:prefix="urn:opendaylight:params:xml:ns:yang:controller:test">prefix:testing</type>
<instance>
<name>ref_dep</name>
- <provider>/config/modules/module[name='impl-dep']/instance[name='dep']
+ <provider>/modules/module[type='impl-dep'][name='dep']
</provider>
</instance>
<instance>
<name>ref_dep_2</name>
- <provider>/config/modules/module[name='impl-dep']/instance[name='dep2']
+ <provider>/modules/module[type='impl-dep'][name='dep2']
</provider>
</instance>
<instance>
<name>ref_test1</name>
- <provider>/config/modules/module[name='impl-netconf']/instance[name='test1']
+ <provider>
+ /modules/module[type='impl-netconf'][name='test1']
</provider>
</instance>
</service>