module nsd-base
{
- namespace "http://riftio.com/ns/riftware-1.0/nsd-base";
+ namespace "urn:etsi:osm:yang:nsd-base";
prefix "nsd-base";
- import rw-pb-ext {
- prefix "rwpb";
- }
-
import ietf-inet-types {
prefix "inet";
}
prefix "manotypes";
}
+ import vnfd {
+ prefix "vnfd";
+ }
+
revision 2017-02-28 {
description
"Initial revision. This YANG file defines
}
}
- typedef scaling-policy-type {
- type enumeration {
- enum manual {
- value 1;
- }
- enum automatic {
- value 2;
- }
- }
- }
-
typedef scaling-criteria-operation {
type enumeration {
enum AND {
description "NSD parameter pool name to use for this parameter";
type string;
}
- }
+ } // primitive-parameter
grouping nsd-descriptor-common {
leaf id {
different NS.";
key "name";
- leaf name {
- description
- "Name of the NS connection point.";
- type string;
- }
+ uses nsd-connection-point-common;
leaf type {
description
"Type of the connection point.";
type manotypes:connection-point-type;
}
+
+ choice connection {
+ description "Logical connection of the CP to a VLD or to a VNF CP";
+
+ case vld-ref {
+
+ leaf vld-id-ref {
+ description
+ "ID reference to a VLD in the NS";
+ type leafref {
+ path "../../vld/id";
+ }
+ }
+
+ }
+
+ case vnfd-connection-point-ref {
+
+ leaf member-vnf-index-ref {
+ description "Reference to member-vnf within constituent-vnfd";
+ type leafref {
+ path "../../constituent-vnfd/member-vnf-index";
+ }
+ }
+
+ leaf vnfd-id-ref {
+ description
+ "A reference to a vnfd. This is a leafref to path:
+ ../../nsd:constituent-vnfd
+ + [nsd:id = current()/../nsd:id-ref]
+ + /nsd:vnfd-id-ref";
+ type leafref {
+ path "../../constituent-vnfd" +
+ "[member-vnf-index = current()/../member-vnf-index-ref]" +
+ "/vnfd-id-ref";
+ }
+ }
+
+ leaf vnfd-connection-point-ref {
+ description
+ "A reference to a connection point name
+ in a vnfd. This is a leafref to path:
+ /vnfd:vnfd-catalog/vnfd:vnfd
+ + [vnfd:id = current()/../nsd:vnfd-id-ref]
+ + /vnfd:connection-point/vnfd:name";
+ type leafref {
+ path "/vnfd:vnfd-catalog/vnfd:vnfd" +
+ "[vnfd:id = current()/../vnfd-id-ref]" +
+ "/vnfd:connection-point/vnfd:name";
+ }
+ }
+
+ }
+
+ }
+
}
list scaling-group-descriptor {
leaf scaling-type {
description
"Type of scaling";
- type scaling-policy-type;
+ type manotypes:scaling-policy-type;
}
leaf enabled {
"Operation to be applied to check between scaling criterias to
check if the scale in threshold condition has been met.
Defaults to AND";
- type scaling-criteria-operation;
+ type manotypes:scaling-criteria-operation;
default AND;
}
"Operation to be applied to check between scaling criterias to
check if the scale out threshold condition has been met.
Defauls to OR";
- type scaling-criteria-operation;
+ type manotypes:scaling-criteria-operation;
default OR;
}
type uint64;
}
+ leaf scale-in-relational-operation {
+ description
+ "The relational operator used to compare the monitoring param
+ against the scale-in-threshold.";
+ type manotypes:relational-operation-type;
+ default LE;
+ }
+
leaf scale-out-threshold {
description
"Value above which scale-out requests are generated";
type uint64;
}
+ leaf scale-out-relational-operation {
+ description
+ "The relational operator used to compare the monitoring param
+ against the scale-out-threshold.";
+ type manotypes:relational-operation-type;
+ default GE;
+ }
+
leaf ns-monitoring-param-ref {
description
"Reference to the NS level monitoring parameter
leaf trigger {
description "scaling trigger";
- type scaling-trigger;
+ type manotypes:scaling-trigger;
}
- leaf ns-service-primitive-name-ref {
- description "Reference to the NS service primitive";
+ leaf ns-config-primitive-name-ref {
+ description "Reference to the NS primitive";
type leafref {
- path "../../../service-primitive/name";
+ path "../../../ns-configuration/config-primitive/name";
}
}
}
key "id";
- leaf id {
- description
- "Identifier for the VNFFGD.";
- type string;
- }
-
- leaf name {
- description
- "VNFFGD name.";
- type string;
- }
-
- leaf short-name {
- description
- "Short name to appear as label in the UI";
- type string;
- }
-
- leaf vendor {
- description "Provider of the VNFFGD.";
- type string;
- }
-
- leaf description {
- description "Description of the VNFFGD.";
- type string;
- }
-
- leaf version {
- description "Version of the VNFFGD";
- type string;
- }
+ uses fgd-common;
list rsp {
description
"List of Rendered Service Paths (RSP).";
-
key "id";
- leaf id {
- description
- "Identifier for the RSP.";
- type string;
- }
-
- leaf name {
- description
- "RSP name.";
- type string;
- }
+ uses rsp-common;
- list vnfd-connection-point-ref {
+ list vnfd-connection-point-ref { // not common
description
"A list of references to connection points.";
key "member-vnf-index-ref";
+ [nsd:id = current()/../nsd:id-ref]
+ /nsd:vnfd-id-ref";
- type leafref {
+ type leafref {
path "../../../../constituent-vnfd" +
- "[member-vnf-index = current()/../member-vnf-index-ref]" +
- "/vnfd-id-ref";
- }
- }
+ "[member-vnf-index = current()/../member-vnf-index-ref]" +
+ "/vnfd-id-ref";
+ }
+ }
- leaf vnfd-connection-point-ref {
+ leaf vnfd-ingress-connection-point-ref {
+ description
+ "A reference to a connection point name
+ in a vnfd. This is a leafref to path:
+ /vnfd:vnfd-catalog/vnfd:vnfd
+ + [vnfd:id = current()/../nsd:vnfd-id-ref]
+ + /vnfd:connection-point/vnfd:name
+ NOTE: An issue with confd is preventing the
+ use of xpath. Seems to be an issue with leafref
+ to leafref, whose target is in a different module.
+ Once that is resolved this will switched to use
+ leafref";
+ // TODO: Keeping as string as this needs to be
+ // diffenent lvel based of if it is nsd-catalog or
+ // in nsr.
+ // type leafref {
+ // path "../../../../../../vnfd:vnfd-catalog/vnfd:vnfd" +
+ // "[vnfd:id = current()/../vnfd-id-ref]/" +
+ // "vnfd:connection-point/vnfd:name";
+ // }
+ type string;
+ }
+
+ leaf vnfd-egress-connection-point-ref {
description
"A reference to a connection point name
in a vnfd. This is a leafref to path:
key "id";
- leaf id {
- description
- "Identifier for the classifier rule.";
- type string;
- }
-
- leaf name {
- description
- "Name of the classifier.";
- type string;
- }
-
- leaf rsp-id-ref {
- description
- "A reference to the RSP.";
- type leafref {
- path "../../rsp/id";
- }
- }
+ uses classifier-common;
leaf member-vnf-index-ref {
description "Reference to member-vnf within constituent-vnfds";
// }
type string;
}
-
- list match-attributes {
- description
- "List of match attributes.";
-
- key "id";
-
- leaf id {
- description
- "Identifier for the classifier match attribute rule.";
- type string;
- }
-
- leaf ip-proto {
- description
- "IP Protocol.";
- type uint8;
- }
-
- leaf source-ip-address {
- description
- "Source IP address.";
- type inet:ip-address;
- }
-
- leaf destination-ip-address {
- description
- "Destination IP address.";
- type inet:ip-address;
- }
-
- leaf source-port {
- description
- "Source port number.";
- type inet:port-number;
- }
-
- leaf destination-port {
- description
- "Destination port number.";
- type inet:port-number;
- }
- //TODO: Add more match criteria
- } //match-attributes
} // classifier
+
} // vnffgd
uses manotypes:ip-profile-list;
- list initial-service-primitive {
- rwpb:msg-new NsdInitialServicePrimitive;
+ container ns-configuration {
description
- "Initial set of service primitives for NSD.";
- key "seq";
+ "Information about NS configuration.";
- uses manotypes:event-config;
- }
-
- list terminate-service-primitive {
- rwpb:msg-new NsdTerminateServicePrimitive;
- description
- "Set of service primitives during
- termination for NSD.";
- key "seq";
-
- uses manotypes:event-config;
+ uses manotypes:vca-configuration;
}
uses manotypes:input-parameter-xpath;
}
}
}
- }
+ } // nsd-descriptor-common
grouping nsd-vld-common {
/* Still having issues modelling this,
see the comments under vnfd-connection-point-ref
+
+ IMPORTANT: Change description fields
*/
+ uses vld-common;
+
+ choice init-params {
+ description "Extra parameters for VLD instantiation";
+
+ case vim-network-ref {
+ leaf vim-network-name {
+ description
+ "Name of network in VIM account. This is used to indicate
+ pre-provisioned network name in cloud account.";
+ type string;
+ }
+ }
+
+ case vim-network-profile {
+ leaf ip-profile-ref {
+ description "Named reference to IP-profile object";
+ type leafref {
+ path "../../ip-profiles/name";
+ }
+ }
+ }
+
+ }
+ } // nsd-vld-common
+
+ grouping nsd-connection-point-common {
+ description "NSD connection point base";
+ //IMPORTANT: Change description fields
+ leaf name {
+ description
+ "Name of the connection point.";
+ type string;
+ }
+
+ leaf floating-ip-required {
+ description
+ "Boolean parameter to indicate whether the CP must be exposed.
+ A public IP address will be allocated to this CP if exposed is true.
+ The default is false meaning a floating IP address is not required.
+ It must be explicitly asked for a floating IP address to be allocated.";
+ type boolean;
+ }
+ } // nsd-connection-point-common
+
+ grouping vld-common {
description
"List of Virtual Link Descriptors.";
type boolean;
default false;
}
+ } // vld-common
- leaf ipv4-nat-pool-name{
+ grouping fgd-common {
+
+ leaf id {
+ description
+ "Identifier for the FGD.";
type string;
- description "IPV4 nat pool name";
}
- choice init-params {
- description "Extra parameters for VLD instantiation";
+ leaf name {
+ description
+ "FGD name.";
+ type string;
+ }
- case vim-network-ref {
- leaf vim-network-name {
- description
- "Name of network in VIM account. This is used to indicate
- pre-provisioned network name in cloud account.";
- type string;
- }
+ leaf short-name {
+ description
+ "Short name to appear as label in the UI";
+ type string;
+ }
+
+ leaf vendor {
+ description "Provider of the FGD.";
+ type string;
+ }
+
+ leaf description {
+ description "Description of the FGD.";
+ type string;
+ }
+
+ leaf version {
+ description "Version of the FGD";
+ type string;
+ }
+ } // fgd-common
+
+ grouping rsp-common {
+
+ leaf id {
+ description
+ "Identifier for the RSP.";
+ type string;
+ }
+
+ leaf name {
+ description
+ "RSP name.";
+ type string;
+ }
+
+ } // rsp-common
+
+ grouping classifier-common {
+
+ leaf id {
+ description
+ "Identifier for the classifier rule.";
+ type string;
+ }
+
+ leaf name {
+ description
+ "Name of the classifier.";
+ type string;
+ }
+
+ leaf rsp-id-ref {
+ description
+ "A reference to the RSP.";
+ type leafref {
+ path "../../rsp/id";
}
+ }
- case vim-network-profile {
- leaf ip-profile-ref {
- description "Named reference to IP-profile object";
- type leafref {
- path "../../ip-profiles/name";
- }
- }
+ list match-attributes {
+ description
+ "List of match attributes.";
+
+ key "id";
+
+ leaf id {
+ description
+ "Identifier for the classifier match attribute rule.";
+ type string;
}
- }
- }
+ leaf ip-proto {
+ description
+ "IP Protocol.";
+ type uint8;
+ }
+
+ leaf source-ip-address {
+ description
+ "Source IP address.";
+ type inet:ip-address;
+ }
+
+ leaf destination-ip-address {
+ description
+ "Destination IP address.";
+ type inet:ip-address;
+ }
+
+ leaf source-port {
+ description
+ "Source port number.";
+ type inet:port-number;
+ }
+
+ leaf destination-port {
+ description
+ "Destination port number.";
+ type inet:port-number;
+ }
+ //TODO: Add more match criteria
+ } //match-attributes
+ } // classifier-common
grouping monitoring-param-common {
description
uses manotypes:monitoring-param-value;
uses manotypes:monitoring-param-ui-data;
uses manotypes:monitoring-param-aggregation;
- }
+ } // monitoring-param-common
}