X-Git-Url: https://osm.etsi.org/gitweb/?a=blobdiff_plain;f=models%2Fplugins%2Fyang%2Fnsd.yang;h=80b01a82bcc85ed2d92655ccd630246f34f64234;hb=refs%2Fchanges%2F50%2F1450%2F1;hp=2b48ee7dbf33ca3c01821c9a41e3da01753093f9;hpb=f49375710db1acf3cd74c8651d098b7a08e8d0b2;p=osm%2FSO.git diff --git a/models/plugins/yang/nsd.yang b/models/plugins/yang/nsd.yang index 2b48ee7d..80b01a82 100644 --- a/models/plugins/yang/nsd.yang +++ b/models/plugins/yang/nsd.yang @@ -23,763 +23,65 @@ module nsd namespace "urn:ietf:params:xml:ns:yang:nfvo:nsd"; prefix "nsd"; - import rw-pb-ext { - prefix "rwpb"; - } - - import vld { - prefix "vld"; - } - - import vnfd { - prefix "vnfd"; - } - - import ietf-inet-types { - prefix "inet"; - } - import ietf-yang-types { prefix "yang"; } - import mano-types { - prefix "manotypes"; - } - - import rw-project { - prefix "rw-project"; - } - - revision 2017-02-08 { - description - "Update model to support projects."; - } - - revision 2014-10-27 { - description - "Initial revision. This YANG file defines - the Network Service Descriptor (NSD)"; - reference - "Derived from earlier versions of base YANG files"; - } - - typedef scaling-trigger { - type enumeration { - enum pre-scale-in { - value 1; - } - enum post-scale-in { - value 2; - } - enum pre-scale-out { - value 3; - } - enum post-scale-out { - value 4; - } - } - } - - typedef scaling-policy-type { - type enumeration { - enum manual { - value 1; - } - enum automatic { - value 2; - } - } - } - - typedef scaling-criteria-operation { - type enumeration { - enum AND { - value 1; - } - enum OR { - value 2; - } - } - } - - grouping primitive-parameter { - leaf name { - description - "Name of the parameter."; - type string; - } - - leaf data-type { - description - "Data type associated with the name."; - type manotypes:parameter-data-type; - } - - leaf mandatory { - description "Is this field mandatory"; - type boolean; - default false; - } - - leaf default-value { - description "The default value for this field"; - type string; - } - - leaf parameter-pool { - description "NSD Parameter pool name to use for this paramter"; - type string; - } - } - - grouping nsd-descriptor-common { - leaf id { - description "Identifier for the NSD."; - type string; - } - - leaf name { - description "NSD name."; - mandatory true; - type string; - } - - leaf short-name { - description "NSD short name."; - type string; - } - - leaf vendor { - description "Vendor of the NSD."; - type string; - } - - leaf logo { - description - "File path for the vendor specific logo. For example icons/mylogo.png. - The logo should be part of the network service"; - type string; - } - - leaf description { - description "Description of the NSD."; - type string; - } - - leaf version { - description "Version of the NSD"; - type string; - } - - list connection-point { - description - "List for external connection points. - Each NS has one or more external connection - points. As the name implies that external - connection points are used for connecting - the NS to other NS or to external networks. - Each NS exposes these connection points to - the orchestrator. The orchestrator can - construct network service chains by - connecting the connection points between - different NS."; - - key "name"; - leaf name { - description - "Name of the NS connection point."; - type string; - } - - leaf type { - description - "Type of the connection point."; - type manotypes:connection-point-type; - } - } - - list scaling-group-descriptor { - description - "scaling group descriptor within this network service. - The scaling group defines a group of VNFs, - and the ratio of VNFs in the network service - that is used as target for scaling action"; - - key "name"; - - leaf name { - description "Name of this scaling group."; - type string; - } - - list scaling-policy { - - key "name"; - - leaf name { - description - "Name of the scaling policy"; - type string; - } - - leaf scaling-type { - description - "Type of scaling"; - type scaling-policy-type; - } - - leaf enabled { - description - "Specifies if the scaling policy can be applied"; - type boolean; - default true; - } - - leaf scale-in-operation-type { - description - "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; - default AND; - } - - leaf scale-out-operation-type { - description - "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; - default OR; - } - - leaf threshold-time { - description - "The duration for which the criteria must hold true"; - type uint32; - mandatory true; - } - - leaf cooldown-time { - description - "The duration after a scaling-in/scaling-out action has been - triggered, for which there will be no further optional"; - type uint32; - mandatory true; - } - - list scaling-criteria { - description - "list of conditions to be met for generating scaling - requests"; - key "name"; - - leaf name { - type string; - } - - leaf scale-in-threshold { - description - "Value below which scale-in requests are generated"; - type uint64; - } - - leaf scale-out-threshold { - description - "Value above which scale-out requests are generated"; - type uint64; - } - - leaf ns-monitoring-param-ref { - description - "Reference to the NS level monitoring parameter - that is aggregated"; - type leafref { - path "../../../../monitoring-param/id"; - } - } - } - } - - list vnfd-member { - description "List of VNFs in this scaling group"; - key "member-vnf-index-ref"; - - leaf member-vnf-index-ref { - description "member VNF index of this member VNF"; - type leafref { - path "../../../constituent-vnfd/member-vnf-index"; - } - } - - leaf count { - description - "count of this member VNF within this scaling group. - The count allows to define the number of instances - when a scaling action targets this scaling group"; - type uint32; - default 1; - } - } - - leaf min-instance-count { - description - "Minimum instances of the scaling group which are allowed. - These instances are created by default when the network service - is instantiated."; - type uint32; - default 0; - } - - leaf max-instance-count { - description - "Maximum instances of this scaling group that are allowed - in a single network service. The network service scaling - will fail, when the number of service group instances - exceed the max-instance-count specified."; - type uint32; - default 10; - } - - list scaling-config-action { - description "List of scaling config actions"; - key "trigger"; - - leaf trigger { - description "scaling trigger"; - type scaling-trigger; - } - - leaf ns-config-primitive-name-ref { - description "Reference to the NS config name primitive"; - type leafref { - path "../../../service-primitive/name"; - } - } - } - } - - - list vnffgd { - description - "List of VNF Forwarding Graph Descriptors (VNFFGD)."; - - key "id"; - - leaf id { - description - "Identifier for the VNFFGD."; - type string; - } - - leaf name { - description - "VNFFGD name."; - type string; - } - - leaf short-name { - description - "Short name for VNFFGD for 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; - } - - 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; - } - - list vnfd-connection-point-ref { - description - "A list of references to connection points."; - key "member-vnf-index-ref"; - - leaf member-vnf-index-ref { - description "Reference to member-vnf within constituent-vnfds"; - type leafref { - path "../../../../constituent-vnfd/member-vnf-index"; - } - } - - leaf order { - type uint8; - description - "A number that denotes the order of a VNF in a chain"; - } - - 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 - 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 resovled this will switched to use - leafref"; - 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 - 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 resovled 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; - } - } - } //rsp - - list classifier { - description - "List of classifier rules."; - - 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"; - } - } - - leaf member-vnf-index-ref { - description "Reference to member-vnf within constituent-vnfds"; - 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 - 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 resovled this will switched to use - leafref"; - 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 - 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 resovled 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; - } - - 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; - - uses manotypes:ns-service-primitive; - - list initial-config-primitive { - rwpb:msg-new NsdInitialConfigPrimitive; - description - "Initial set of configuration primitives for NSD."; - key "seq"; - - uses manotypes:initial-config; - } - - uses manotypes:input-parameter-xpath; - - list parameter-pool { - description - "Pool of parameter values which must be - pulled from during configuration"; - key "name"; - - leaf name { - description - "Name of the configuration value pool"; - type string; - } - - container range { - description - "Create a range of values to populate the pool with"; - - leaf start-value { - description - "Generated pool values start at this value"; - type uint32; - mandatory true; - } - - leaf end-value { - description - "Generated pool values stop at this value"; - type uint32; - mandatory true; - } - } - } - - list key-pair { - key "name"; - description "Used to configure the list of public keys to be injected as part - of ns instantiation"; - - leaf name { - description "Name of this key pair"; - type string; - } - - leaf key { - description "Key associated with this key pair"; - type string; - } - } - - list user { - key "name"; - description "List of users to be added through cloud-config"; - - leaf name { - description "Name of the user "; - type string; - } - - leaf user-info { - description "The user name's real name"; - type string; - } - - list key-pair { - key "name"; - description "Used to configure the list of public keys to be injected as part - of ns instantiation"; - - leaf name { - description "Name of this key pair"; - type string; - } - - leaf key { - description "Key associated with this key pair"; - type string; - } - } - } - } - - grouping nsd-vld-common { - /* Still having issues modelling this, - see the comments under vnfd-connection-point-ref - */ - description - "List of Virtual Link Descriptors."; - - leaf id { - description - "Identifier for the VLD."; - type string; - } - - leaf name { - description - "Virtual Link Descriptor (VLD) name."; - type string; - } - - leaf short-name { - description - "Short name for VLD for UI"; - type string; - } - - leaf vendor { - description "Provider of the VLD."; - type string; - } + import vnfd { + prefix "vnfd"; + } - leaf description { - description "Description of the VLD."; - type string; - } + import nsd-base { + prefix "nsd-base"; + } - leaf version { - description "Version of the VLD"; - type string; - } + import mano-types { + prefix "manotypes"; + } - leaf type { - type manotypes:virtual-link-type; - } + revision 2017-02-28 { + description + "Update model to support projects."; + } - leaf root-bandwidth { - description - "For ELAN this is the aggregate bandwidth."; - type uint64; - } + revision 2014-10-27 { + description + "Initial revision. This YANG file defines + the Network Service Descriptor (NSD)"; + reference + "Derived from earlier versions of base YANG files"; + } - leaf leaf-bandwidth { + grouping nsd-constituent-vnfd { + list constituent-vnfd { description - "For ELAN this is the bandwidth of branches."; - type uint64; - } - - // replicate for pnfd container here - uses manotypes:provider-network; - - leaf mgmt-network { - description "Flag indicating whether this network is a VIM management network"; - type boolean; - default false; - } + "List of VNFDs that are part of this + network service."; - choice init-params { - description "Extra parameters for VLD instantiation"; + key "member-vnf-index"; - 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 member-vnf-index { + description + "Identifier/index for the VNFD. This separate id + is required to ensure that multiple VNFs can be + part of single NS"; + type uint64; } - case vim-network-profile { - leaf ip-profile-ref { - description "Named reference to IP-profile object"; - type string; + leaf vnfd-id-ref { + description + "Identifier for the VNFD."; + type leafref { + path "/vnfd:vnfd-catalog/vnfd:vnfd/vnfd:id"; } } + leaf start-by-default { + description + "VNFD is started as part of the NS instantiation"; + type boolean; + default true; + } } } @@ -788,7 +90,7 @@ module nsd key "id"; - uses nsd-vld-common; + uses nsd-base:nsd-vld-common; list vnfd-connection-point-ref { description @@ -806,9 +108,9 @@ module nsd 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 + ../../constituent-vnfd + + [id = current()/../id-ref] + + /vnfd-id-ref 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. @@ -820,7 +122,7 @@ module nsd leaf vnfd-connection-point-ref { description "A reference to a connection point name"; type leafref { - path "../../../../../vnfd:vnfd-catalog/vnfd:vnfd" + + path "/vnfd:vnfd-catalog/vnfd:vnfd" + "[vnfd:id = current()/../vnfd-id-ref]/" + "vnfd:connection-point/vnfd:name"; } @@ -829,120 +131,22 @@ module nsd } } - grouping nsr-nsd-vld { - list vld { - - key "id"; - - uses nsd-vld-common; - - list vnfd-connection-point-ref { - description - "A list of references to connection points."; - key "member-vnf-index-ref vnfd-connection-point-ref"; - - leaf member-vnf-index-ref { - description "Reference to member-vnf within constituent-vnfds"; - // TODO (Philip): Fix this - // type leafref { - // path "../../../constituent-vnfd/member-vnf-index"; - // } - type uint64; - } - - 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 - 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 resovled this will switched to use - leafref"; - type string; - } - - leaf vnfd-connection-point-ref { - description "A reference to a connection point name"; - // TODO (Philip): Fix this - // type leafref { - // path "../../../../../../vnfd:vnfd-catalog/vnfd:vnfd" + - // "[vnfd:id = current()/../vnfd-id-ref]/" + - // "vnfd:connection-point/vnfd:name"; - // } - type string; - } - } - } - } - - grouping nsd-constituent-vnfd { - list constituent-vnfd { + grouping nsd-vnf-dependency { + list vnf-dependency { description - "List of VNFDs that are part of this - network service."; - - key "member-vnf-index"; - - leaf member-vnf-index { - description - "Identifier/index for the VNFD. This separate id - is required to ensure that multiple VNFs can be - part of single NS"; - type uint64; - } - - leaf vnfd-id-ref { - description - "Identifier for the VNFD."; + "List of VNF dependencies."; + key vnf-source-ref; + leaf vnf-source-ref { type leafref { - path "../../../../vnfd:vnfd-catalog/vnfd:vnfd/vnfd:id"; + path "/vnfd:vnfd-catalog/vnfd:vnfd/vnfd:id"; } } - - leaf start-by-default { - description - "VNFD is started as part of the NS instantiation"; - type boolean; - default true; - } - } - } - - grouping nsr-nsd-constituent-vnfd { - list constituent-vnfd { - description - "List of VNFDs that are part of this - network service."; - - key "member-vnf-index"; - - leaf member-vnf-index { - description - "Identifier/index for the VNFD. This separate id - is required to ensure that multiple VNFs can be - part of single NS"; - type uint64; - } - - leaf vnfd-id-ref { - description - "Identifier for the VNFD."; - // TODO (Philip): Fix this - // type leafref { - // path "../../../../../vnfd:vnfd-catalog/vnfd:vnfd/vnfd:id"; - // } - type string; - } - - leaf start-by-default { + leaf vnf-depends-on-ref { description - "VNFD is started as part of the NS instantiation"; - type boolean; - default true; + "Reference to VNF that sorce VNF depends."; + type leafref { + path "/vnfd:vnfd-catalog/vnfd:vnfd/vnfd:id"; + } } } } @@ -971,112 +175,19 @@ module nsd description "Identifier for the VNFD."; type leafref { - path "../../../../../vnfd:vnfd-catalog/vnfd:vnfd/vnfd:id"; + path "/vnfd:vnfd-catalog/vnfd:vnfd/vnfd:id"; } } } } } - grouping nsr-nsd-placement-groups { - list placement-groups { - description "List of placement groups at NS level"; - - key "name"; - uses manotypes:placement-group-info; - - list member-vnfd { - description - "List of VNFDs that are part of this placement group"; - - key "member-vnf-index-ref"; - - leaf member-vnf-index-ref { - description "member VNF index of this member VNF"; - // TODO (Philip): Fix this - // type leafref { - // path "../../../constituent-vnfd/member-vnf-index"; - // } - type uint64; - } - - leaf vnfd-id-ref { - description - "Identifier for the VNFD."; - // TODO (Philip): Fix this - // type leafref { - // path "../../../../../../vnfd:vnfd-catalog/vnfd:vnfd/vnfd:id"; - // } - type string; - } - } - } - } - - grouping nsd-vnf-dependency { - list vnf-dependency { - description - "List of VNF dependencies."; - key vnf-source-ref; - leaf vnf-source-ref { - type leafref { - path "../../../../vnfd:vnfd-catalog/vnfd:vnfd/vnfd:id"; - } - } - leaf vnf-depends-on-ref { - description - "Reference to VNF that sorce VNF depends."; - type leafref { - path "../../../../vnfd:vnfd-catalog/vnfd:vnfd/vnfd:id"; - } - } - } - } - - grouping nsr-nsd-vnf-dependency { - list vnf-dependency { - description - "List of VNF dependencies."; - key vnf-source-ref; - leaf vnf-source-ref { - type leafref { - path "../../../../../vnfd:vnfd-catalog/vnfd:vnfd/vnfd:id"; - } - } - leaf vnf-depends-on-ref { - description - "Reference to VNF that sorce VNF depends."; - type leafref { - path "../../../../../vnfd:vnfd-catalog/vnfd:vnfd/vnfd:id"; - } - } - } - } - - grouping monitoring-param-common { - // list monitoring-param { - description - "List of monitoring parameters from VNF's that should be - propogated up into NSR"; - leaf id { - type string; - } - - leaf name { - type string; - } - - uses manotypes:monitoring-param-value; - uses manotypes:monitoring-param-ui-data; - uses manotypes:monitoring-param-aggregation; - } - grouping nsd-monitoring-param { list monitoring-param { - key "id"; + key id; - uses monitoring-param-common; + uses nsd-base:monitoring-param-common; list vnfd-monitoring-param { description "A list of VNFD monitoring params"; @@ -1101,84 +212,39 @@ module nsd leaf vnfd-monitoring-param-ref { description "A reference to the VNFD monitoring param"; type leafref { - path "../../../../../vnfd:vnfd-catalog/vnfd:vnfd" + path "/vnfd:vnfd-catalog/vnfd:vnfd" + "[vnfd:id = current()/../vnfd-id-ref]" + "/vnfd:monitoring-param/vnfd:id"; } } - leaf-list member-vnf-index-ref { + leaf member-vnf-index-ref { description "Optional reference to member-vnf within constituent-vnfds"; - type uint64; - } - } - } - } - - grouping nsr-nsd-monitoring-param { - list monitoring-param { - key "id"; - - uses monitoring-param-common; - - list vnfd-monitoring-param { - description "A list of VNFD monitoring params"; - key "vnfd-id-ref vnfd-monitoring-param-ref"; - - 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 - 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"; - - type yang:uuid; - } - - leaf vnfd-monitoring-param-ref { - description "A reference to the VNFD monitoring param"; type leafref { - path "../../../../../../vnfd:vnfd-catalog/vnfd:vnfd" - + "[vnfd:id = current()/../vnfd-id-ref]" - + "/vnfd:monitoring-param/vnfd:id"; + path "../../../constituent-vnfd/member-vnf-index"; } } - - leaf-list member-vnf-index-ref { - description - "Optional reference to member-vnf within constituent-vnfds"; - type uint64; - } } } } + container nsd-catalog { - augment "/rw-project:project" { - container nsd-catalog { + list nsd { + key id; - list nsd { - key "id"; + uses nsd-base:nsd-descriptor-common; - uses nsd-descriptor-common; + uses nsd-vld; - uses nsd-vld; + uses nsd-constituent-vnfd; - uses nsd-constituent-vnfd; + uses nsd-placement-groups; - uses nsd-placement-groups; + uses nsd-vnf-dependency; - uses nsd-vnf-dependency; - - uses nsd-monitoring-param; - } + uses nsd-monitoring-param; } } }