From 18f191d706d7b260d75a4a1f04245f6901fe654a Mon Sep 17 00:00:00 2001 From: Marek Gradzki Date: Wed, 20 Jul 2016 09:48:14 +0200 Subject: HONEYCOMB-118: extend classifer model to support node names. * configuration write is supported (updates local cache with relative node mapping) * operational read is supported only for nodes with existing relative node mapping * ACL support (using vpp-classfier or ietf-acl model) is not affected by the patch (tables/sessions for access controll refer to neighbour nodes as packet-handling-action, not vpp-node-name) Change-Id: Ice0c846803cc7e8960c3571fd2a13ed46ba53702 Signed-off-by: Marek Gradzki --- .../vpp/classifier/rev150603/VppNodeBuilder.java | 2 +- v3po/api/src/main/yang/vpp-classifier-context.yang | 68 ++++++++++++++++++++++ v3po/api/src/main/yang/vpp-classifier.yang | 15 ++++- 3 files changed, 81 insertions(+), 4 deletions(-) create mode 100644 v3po/api/src/main/yang/vpp-classifier-context.yang (limited to 'v3po/api') diff --git a/v3po/api/src/main/java/org/opendaylight/yang/gen/v1/urn/opendaylight/params/xml/ns/yang/vpp/classifier/rev150603/VppNodeBuilder.java b/v3po/api/src/main/java/org/opendaylight/yang/gen/v1/urn/opendaylight/params/xml/ns/yang/vpp/classifier/rev150603/VppNodeBuilder.java index dd37bbe84..4ae04d48f 100644 --- a/v3po/api/src/main/java/org/opendaylight/yang/gen/v1/urn/opendaylight/params/xml/ns/yang/vpp/classifier/rev150603/VppNodeBuilder.java +++ b/v3po/api/src/main/java/org/opendaylight/yang/gen/v1/urn/opendaylight/params/xml/ns/yang/vpp/classifier/rev150603/VppNodeBuilder.java @@ -18,7 +18,7 @@ public class VppNodeBuilder { } else if (PacketHandlingAction.Permit.toString().equalsIgnoreCase(defaultValue)) { return new VppNode(PacketHandlingAction.Permit); } else { - throw new IllegalArgumentException(String.format("Could not parse VppNode: %s", defaultValue)); + return new VppNode(new VppNodeName(defaultValue)); } } diff --git a/v3po/api/src/main/yang/vpp-classifier-context.yang b/v3po/api/src/main/yang/vpp-classifier-context.yang new file mode 100644 index 000000000..01eae862d --- /dev/null +++ b/v3po/api/src/main/yang/vpp-classifier-context.yang @@ -0,0 +1,68 @@ +module vpp-classifier-context { + yang-version 1; + namespace "urn:opendaylight:params:xml:ns:yang:vpp:classifier"; + prefix "vpp-classifier-context"; + + description + "This module contains vpp classfier metadata definition"; + + revision "2016-09-09" { + description + "Initial revision."; + } + + container vpp-classifier-context { + + config "false"; + + description + "Classify tables and sessions contain relative node indexes. Management agent like Honeycomb, + needs to use node names instead (indexes might change after vpp restart). + VPP does not provide relative index to node name conversion (https://jira.fd.io/browse/VPP-219), + also finding base node that is needed to perform the conversion + is not allways possible (https://jira.fd.io/browse/VPP-220). + + Therefore Honeycomb needs to provide relative node to index mapping. + "; + + list classify-table-context { + key "name"; + unique "index"; + + leaf name { + type string; + description + "Name of the classify table."; + } + + leaf index { + type int32; + description + "Classify table index used by VPP."; + } + + leaf classifier-node-name { + type string; + description + "Name of VPP node the table is defined for."; + } + + list node-context { + key "name"; + unique "index"; + + leaf name { + type string; + description + "Name of vpp node (neighbour of classifier-node-name)"; + } + + leaf index { + type int32; + description + "Inted of the vpp node relative to classifier-node-name"; + } + } + } + } +} \ No newline at end of file diff --git a/v3po/api/src/main/yang/vpp-classifier.yang b/v3po/api/src/main/yang/vpp-classifier.yang index 46bff2074..8bf939933 100644 --- a/v3po/api/src/main/yang/vpp-classifier.yang +++ b/v3po/api/src/main/yang/vpp-classifier.yang @@ -38,14 +38,18 @@ module vpp-classifier { } } + typedef vpp-node-name { + type string; + } + typedef vpp-node { type union { - // FIXME: enable after VPP-203 is fixed - // type string; // name of vpp-node neighbour, TODO: base node also needs to be defined type packet-handling-action; + type vpp-node-name; } description - "Defines VPP node reference using relative node name or packet handling action."; + "Defines VPP node reference using packet handling action or relative node name + (if definition in terms of packet handling action is not possible)."; } typedef opaque-index { @@ -85,6 +89,11 @@ module vpp-classifier { description "Defines classify table attributes that are mapped to classify_add_del_table message parameters."; + leaf classifier-node { + type vpp-node-name; + description + "Name of VPP node the table is defined for."; + } leaf nbuckets { mandatory true; type uint32; -- cgit 1.2.3-korg