| |
| /* |
| * |
| * Copyright 2016-2017 RIFT.IO Inc |
| * |
| * Licensed under the Apache License, Version 2.0 (the "License"); |
| * you may not use this file except in compliance with the License. |
| * You may obtain a copy of the License at |
| * |
| * http://www.apache.org/licenses/LICENSE-2.0 |
| * |
| * Unless required by applicable law or agreed to in writing, software |
| * distributed under the License is distributed on an "AS IS" BASIS, |
| * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| * See the License for the specific language governing permissions and |
| * limitations under the License. |
| * |
| * |
| */ |
| |
| module nsr |
| { |
| namespace "urn:etsi:osm:yang:nsr"; |
| prefix "nsr"; |
| |
| import vlr { |
| prefix "vlr"; |
| } |
| |
| import nsd-base { |
| prefix "nsd-base"; |
| } |
| |
| import project-nsd { |
| prefix "project-nsd"; |
| } |
| |
| import project-vnfd { |
| prefix "project-vnfd"; |
| } |
| |
| import vnfr { |
| prefix "vnfr"; |
| } |
| |
| import ietf-inet-types { |
| prefix "inet"; |
| } |
| |
| import ietf-yang-types { |
| prefix "yang"; |
| } |
| |
| import mano-types { |
| prefix "manotypes"; |
| } |
| |
| import osm-project { |
| prefix "osm-project"; |
| } |
| |
| revision 2017-02-08 { |
| description |
| "Update model to support projects."; |
| } |
| |
| revision 2015-09-10 { |
| description |
| "Initial revision. This YANG file defines |
| the Network Service Record (NSR)"; |
| reference |
| "Derived from earlier versions of base YANG files"; |
| } |
| |
| typedef vnffgr-operational-status { |
| type enumeration { |
| enum init; |
| enum running; |
| enum terminate; |
| enum terminated; |
| enum failed; |
| } |
| } |
| |
| typedef ns-operational-status { |
| type enumeration { |
| enum init; |
| enum vl-init-phase; |
| enum vnf-init-phase; |
| enum running; |
| enum terminate; |
| enum vnf-terminate-phase; |
| enum vl-terminate-phase; |
| enum terminated; |
| enum failed; |
| enum scaling-out; |
| enum scaling-in; |
| enum vl-instantiate; |
| enum vl-terminate; |
| } |
| } |
| |
| typedef config-states { |
| type enumeration { |
| enum init; |
| enum configuring; |
| enum config_not_needed; |
| enum configured; |
| enum failed; |
| enum terminate; |
| } |
| } |
| |
| typedef trigger-type { |
| type enumeration { |
| enum ns-primitive; |
| enum vnf-primitive; |
| } |
| } |
| |
| grouping cloud-config { |
| description "List of cloud config parameters"; |
| |
| list ssh-authorized-key { |
| key "key-pair-ref"; |
| |
| description "List of authorized ssh keys as part of cloud-config"; |
| |
| leaf key-pair-ref { |
| description "A reference to the key pair entry in the global key pair table"; |
| type leafref { |
| path "../../../../key-pair/name"; |
| } |
| } |
| } |
| list user { |
| 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 user-info { |
| description "The user name's real name"; |
| type string; |
| } |
| list ssh-authorized-key { |
| key "key-pair-ref"; |
| |
| description "Used to configure the list of public keys to be injected as part |
| of ns instantiation"; |
| |
| leaf key-pair-ref { |
| description "A reference to the key pair entry in the global key pair table"; |
| type leafref { |
| path "../../../../../key-pair/name"; |
| } |
| } |
| } |
| } |
| } |
| |
| augment "/osm-project:project" { |
| 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 event-config-primitive { |
| leaf seq { |
| description |
| "Sequence number for the config primitive."; |
| type uint64; |
| } |
| |
| leaf name { |
| description |
| "Name of the primitive."; |
| type string; |
| mandatory true; |
| } |
| |
| leaf user-defined-script { |
| description |
| "A user defined script."; |
| type string; |
| } |
| |
| list parameter { |
| key "name"; |
| leaf name { |
| type string; |
| } |
| |
| leaf value { |
| type string; |
| } |
| } |
| } |
| |
| augment "/osm-project:project" { |
| container ns-instance-config { |
| |
| list nsr { |
| key "id"; |
| unique "name"; |
| |
| leaf schema-version { |
| description "Schema version for the NSR. If unspecified, it assumes v3.0"; |
| type string; |
| default "v3.0"; |
| } |
| |
| leaf id { |
| description "Identifier for the NSR."; |
| type yang:uuid; |
| } |
| |
| leaf name { |
| description "NSR name."; |
| type string; |
| } |
| |
| leaf short-name { |
| description "NSR short name."; |
| type string; |
| } |
| |
| leaf description { |
| description "NSR description."; |
| type string; |
| } |
| |
| leaf admin-status { |
| description |
| "This is the administrative status of the NS instance"; |
| |
| type enumeration { |
| enum ENABLED; |
| enum DISABLED; |
| } |
| } |
| |
| container nsd { |
| description "NS descriptor used to instantiate this NS"; |
| |
| uses nsd-base:nsd-descriptor-common; |
| |
| uses project-nsd:nsr-nsd-vld; |
| |
| uses project-nsd:nsr-nsd-constituent-vnfd; |
| |
| uses project-nsd:nsr-nsd-placement-groups; |
| |
| uses project-nsd:nsr-nsd-vnf-dependency; |
| |
| uses project-nsd:nsr-nsd-monitoring-param; |
| } |
| uses ns-instance-config-params; |
| } |
| } |
| } |
| |
| grouping ns-instance-config-params-common { |
| uses manotypes:input-parameter; |
| |
| list scaling-group { |
| description "List of ns scaling group instances"; |
| key "scaling-group-name-ref"; |
| |
| leaf scaling-group-name-ref { |
| description "name of the scaling group |
| leafref path ../nsd/scaling-group-descriptor/name"; |
| type string; |
| } |
| |
| list instance { |
| description "The instance of the scaling group"; |
| key "id"; |
| leaf id { |
| description "Scaling group instance uuid"; |
| type uint16; |
| } |
| } |
| } |
| |
| list nsd-placement-group-maps { |
| description |
| "Mapping from mano-placement groups construct from NSD to cloud |
| platform placement group construct"; |
| |
| key "placement-group-ref"; |
| |
| leaf placement-group-ref { |
| description |
| "Reference for NSD placement group"; |
| // type leafref { |
| // path "../../nsd/placement-groups/name"; |
| // } |
| type string; |
| } |
| uses manotypes:placement-group-input; |
| } |
| } |
| |
| grouping ns-instance-config-params { |
| uses ns-instance-config-params-common; |
| |
| list vnfd-placement-group-maps { |
| description |
| "Mapping from mano-placement groups construct from VNFD to cloud |
| platform placement group construct"; |
| |
| key "placement-group-ref vnfd-id-ref"; |
| |
| leaf vnfd-id-ref { |
| description |
| "A reference to a vnfd. This is a |
| leafref to path: |
| ../../../../project-nsd:constituent-vnfd |
| + [id = current()/../id-ref] |
| + /project-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 placement-group-ref { |
| description |
| "A reference to VNFD placement group"; |
| type leafref { |
| path "../../../../project-vnfd:vnfd-catalog/project-vnfd:vnfd[project-vnfd:id = " + |
| "current()/../vnfd-id-ref]/project-vnfd:placement-groups/project-vnfd:name"; |
| } |
| } |
| |
| uses manotypes:placement-group-input; |
| } |
| |
| uses cloud-config; |
| } |
| |
| grouping vnffgr { |
| |
| list vnffgr { |
| key "id"; |
| |
| leaf id { |
| description "Identifier for the VNFFGR."; |
| type yang:uuid; |
| } |
| |
| leaf vnffgd-id-ref { |
| description "VNFFG descriptor id reference"; |
| type leafref { |
| path "../../../../ns-instance-config/nsr" |
| + "[id=current()/../../ns-instance-config-ref]" |
| + "/nsd/vnffgd/id"; |
| } |
| } |
| |
| leaf vnffgd-name-ref { |
| description "VNFFG descriptor name reference"; |
| type leafref { |
| path "../../../../ns-instance-config/nsr" |
| + "[id=current()/../../ns-instance-config-ref]" |
| + "/nsd/vnffgd" |
| + "[id=current()/../vnffgd-id-ref]" |
| + "/name"; |
| } |
| } |
| |
| leaf sdn-account { |
| description |
| "The SDN account to use when requesting resources for |
| this vnffgr"; |
| type string; |
| } |
| |
| leaf cloud-account { |
| description "Cloud Account in which NSR is instantiated"; |
| type string; |
| } |
| |
| leaf operational-status { |
| description |
| "The operational status of the VNFFGR instance |
| init : The VNFFGR has just started. |
| running : The VNFFGR is in running state. |
| terminate : The VNFFGR is being terminated. |
| terminated : The VNFFGR is in the terminated state. |
| failed : The VNFFGR instantiation failed |
| "; |
| type vnffgr-operational-status; |
| } |
| |
| list rsp { |
| key "id"; |
| |
| leaf id { |
| description |
| "Identifier for the RSP."; |
| type yang:uuid; |
| } |
| |
| leaf name { |
| description |
| "Name for the RSP"; |
| type string; |
| } |
| |
| leaf rsp-id { |
| description |
| "Returned Identifier for the RSP."; |
| type yang:uuid; |
| } |
| |
| leaf vnffgd-rsp-id-ref { |
| description |
| "Identifier for the VNFFG Descriptor RSP reference"; |
| type leafref { |
| path "../../../../../ns-instance-config/nsr" |
| + "[id=current()/../../../ns-instance-config-ref]" |
| + "/nsd/vnffgd" |
| + "[id=current()/../../vnffgd-id-ref]" |
| + "/rsp/id"; |
| } |
| } |
| |
| leaf vnffgd-rsp-name-ref { |
| description |
| "Name for the VNFFG Descriptor RSP reference"; |
| type leafref { |
| path "../../../../../ns-instance-config/nsr" |
| + "[id=current()/../../../ns-instance-config-ref]" |
| + "/nsd/vnffgd" |
| + "[id=current()/../../vnffgd-id-ref]" |
| + "/rsp" |
| + "[id=current()/../vnffgd-rsp-id-ref]" |
| + "/name"; |
| } |
| } |
| |
| leaf classifier-name { |
| type string; |
| } |
| |
| leaf path-id { |
| description |
| "Unique Identifier for the service path"; |
| type uint32; |
| } |
| |
| list vnfr-connection-point-ref { |
| key "hop-number"; |
| leaf hop-number { |
| description |
| "Monotonically increasing number to show service path hop |
| order"; |
| type uint8; |
| } |
| leaf service-function-type { |
| description |
| "Type of Service Function. |
| NOTE: This needs to map with Service Function Type in ODL to |
| support VNFFG. Service Function Type is mandatory param in ODL |
| SFC. This is temporarily set to string for ease of use"; |
| type string; |
| } |
| |
| leaf member-vnf-index-ref { |
| type string; |
| } |
| leaf vnfd-id-ref { |
| description |
| "Reference to VNF Descriptor Id"; |
| type string; |
| } |
| leaf vnfr-id-ref { |
| description |
| "A reference to a vnfr id"; |
| type leafref { |
| path "../../../../../../vnfr:vnfr-catalog/vnfr:vnfr/vnfr:id"; |
| } |
| } |
| leaf vnfr-name-ref { |
| description |
| "A reference to a vnfr name"; |
| type leafref { |
| path "../../../../../../vnfr:vnfr-catalog/vnfr:vnfr/vnfr:name"; |
| } |
| } |
| leaf vnfr-ingress-connection-point-ref { |
| description |
| "A reference to a vnfr connection point."; |
| type leafref { |
| path "../../../../../../vnfr:vnfr-catalog/vnfr:vnfr" |
| + "[vnfr:id = current()/../vnfr-id-ref]" |
| + "/vnfr:connection-point/vnfr:name"; |
| } |
| } |
| leaf vnfr-egress-connection-point-ref { |
| description |
| "A reference to a vnfr connection point."; |
| type leafref { |
| path "../../../../../../vnfr:vnfr-catalog/vnfr:vnfr" |
| + "[vnfr:id = current()/../vnfr-id-ref]" |
| + "/vnfr:connection-point/vnfr:name"; |
| } |
| } |
| leaf service-index { |
| description |
| "Location within the service path"; |
| type uint8; |
| } |
| container connection-point-params { |
| leaf mgmt-address { |
| type inet:ip-address; |
| } |
| leaf name { |
| type string; |
| } |
| leaf port-id { |
| type string; |
| } |
| leaf vm-id { |
| type string; |
| } |
| leaf address { |
| type inet:ip-address; |
| } |
| leaf port { |
| type inet:port-number; |
| } |
| } |
| |
| container service-function-forwarder { |
| leaf name { |
| description |
| "Service Function Forwarder name"; |
| type string; |
| } |
| leaf ip-address { |
| description |
| "Data Plane IP Address of the SFF"; |
| type inet:ip-address; |
| } |
| leaf port { |
| description |
| "Data Plane Port of the SFF"; |
| type inet:port-number; |
| } |
| } |
| } |
| } |
| |
| list classifier { |
| key "id"; |
| |
| leaf id { |
| description |
| "Identifier for the classifier rule."; |
| type yang:uuid; |
| } |
| leaf name { |
| description |
| "Name of the classifier."; |
| type string; |
| } |
| leaf-list classifier-id { |
| description |
| "Returned Identifier for the classifier rule."; |
| type yang:uuid; |
| } |
| leaf rsp-id-ref { |
| description |
| "A reference to the RSP."; |
| type leafref { |
| path "../../rsp/id"; |
| } |
| } |
| leaf rsp-name { |
| description |
| "Name for the RSP"; |
| type string; |
| } |
| leaf vnfr-id-ref { |
| description |
| "A reference to a vnfr id"; |
| type leafref { |
| path "../../../../../vnfr:vnfr-catalog/vnfr:vnfr/vnfr:id"; |
| } |
| } |
| leaf vnfr-name-ref { |
| description |
| "A reference to a vnfr name"; |
| type leafref { |
| path "../../../../../vnfr:vnfr-catalog/vnfr:vnfr/vnfr:name"; |
| } |
| } |
| leaf vnfr-connection-point-ref { |
| description |
| "A reference to a vnfr connection point."; |
| type leafref { |
| path "../../../../../vnfr:vnfr-catalog/vnfr:vnfr" |
| + "[vnfr:id = current()/../vnfr-id-ref]" |
| + "/vnfr:connection-point/vnfr:name"; |
| } |
| } |
| leaf port-id { |
| type string; |
| } |
| leaf vm-id { |
| type string; |
| } |
| leaf ip-address { |
| type string; |
| } |
| leaf sff-name { |
| type string; |
| } |
| } |
| } |
| } |
| |
| augment "/osm-project:project" { |
| container ns-instance-opdata { |
| config false; |
| |
| list nsr { |
| key "ns-instance-config-ref"; |
| |
| leaf ns-instance-config-ref { |
| type leafref { |
| path "../../../ns-instance-config/nsr/id"; |
| } |
| // type yang:uuid; |
| } |
| |
| leaf name-ref { |
| description "Network service name reference"; |
| type leafref { |
| path "../../../ns-instance-config/nsr" + |
| "[id=current()/../ns-instance-config-ref]" + |
| "/name"; |
| } |
| } |
| |
| leaf nsd-ref { |
| description "Network service descriptor id reference"; |
| type leafref { |
| path "../../../ns-instance-config/nsr" |
| + "[id=current()/../ns-instance-config-ref]" |
| + "/nsd/id"; |
| } |
| } |
| |
| leaf nsd-name-ref { |
| description "Network service descriptor name reference"; |
| type leafref { |
| path "../../../ns-instance-config/nsr" |
| + "[id=current()/../ns-instance-config-ref]" |
| + "/nsd/name"; |
| } |
| } |
| |
| leaf create-time { |
| description |
| "Creation timestamp of this Network Service. |
| The timestamp is expressed as seconds |
| since unix epoch - 1970-01-01T00:00:00Z"; |
| |
| type uint32; |
| } |
| |
| leaf uptime { |
| description |
| "Active period of this Network Service. |
| Uptime is expressed in seconds"; |
| |
| type uint32; |
| } |
| |
| 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 vlr { |
| key "vlr-ref"; |
| leaf vlr-ref { |
| description |
| "Reference to a VLR record in the VLR catalog"; |
| type leafref { |
| path "../../../../vlr:vlr-catalog/vlr:vlr/vlr:id"; |
| } |
| } |
| |
| |
| list vnfr-connection-point-ref { |
| description |
| "A list of references to connection points."; |
| key "vnfr-id"; |
| |
| leaf vnfr-id { |
| description "A reference to a vnfr"; |
| type leafref { |
| path "../../../../../vnfr:vnfr-catalog/vnfr:vnfr/vnfr:id"; |
| } |
| } |
| |
| leaf connection-point { |
| description |
| "A reference to a connection point name in a vnfr"; |
| type leafref { |
| path "../../../../../vnfr:vnfr-catalog/vnfr:vnfr" |
| + "[vnfr:id = current()/../vnfr-id]" |
| + "/vnfr:connection-point/vnfr:name"; |
| } |
| } |
| } |
| } |
| |
| list constituent-vnfr-ref { |
| description |
| "List of VNFRs that are part of this |
| network service."; |
| key "vnfr-id"; |
| |
| leaf vnfr-id { |
| description |
| "Reference to the VNFR id |
| This should be a leafref to /vnfr:vnfr-catalog/vnfr:vnfr/vnfr:id |
| But due to confd bug (RIFT-9451), changing to string."; |
| type string; |
| } |
| } |
| |
| list scaling-group-record { |
| description "List of scaling group records"; |
| key "scaling-group-name-ref"; |
| |
| leaf scaling-group-name-ref { |
| description "name of the scaling group"; |
| type leafref { |
| path "../../../../ns-instance-config/nsr" |
| + "[id=current()/../../ns-instance-config-ref]" |
| + "/nsd/scaling-group-descriptor/name"; |
| } |
| } |
| |
| list instance { |
| description "Reference to scaling group instance record"; |
| key "instance-id"; |
| leaf instance-id { |
| description "Scaling group instance id"; |
| type uint16; |
| } |
| |
| leaf is-default { |
| description "Flag indicating whether this instance was part of |
| default scaling group (and thus undeletable)"; |
| type boolean; |
| } |
| |
| leaf op-status { |
| description |
| "The operational status of the NS instance |
| init : The scaling group has just started. |
| vnf-init-phase : The VNFs in the scaling group are being instantiated. |
| running : The scaling group is in running state. |
| terminate : The scaling group is being terminated. |
| vnf-terminate-phase : The VNFs in the scaling group are being terminated. |
| terminated : The scaling group is in the terminated state. |
| failed : The scaling group instantiation failed. |
| "; |
| |
| type enumeration { |
| enum init; |
| enum vnf-init-phase; |
| enum running; |
| enum terminate; |
| enum vnf-terminate-phase; |
| enum terminated; |
| enum failed; |
| } |
| } |
| |
| leaf config-status { |
| description |
| "The configuration status of the scaling group instance |
| configuring : At least one of the VNFs in this scaling group instance |
| is in configuring state |
| configured : All the VNFs in this scaling group instance are |
| configured or config-not-needed state |
| failed : Configuring this scaling group instance failed |
| "; |
| type config-states; |
| } |
| |
| leaf error-msg { |
| description |
| "Reason for failure in configuration of this scaling instance"; |
| type string; |
| } |
| |
| leaf create-time { |
| description |
| "Creation timestamp of this scaling group record. |
| The timestamp is expressed as seconds |
| since unix epoch - 1970-01-01T00:00:00Z"; |
| |
| type uint32; |
| } |
| |
| leaf-list vnfrs { |
| description "Reference to VNFR within the scale instance"; |
| type leafref { |
| path "../../../constituent-vnfr-ref/vnfr-id"; |
| } |
| } |
| } |
| } |
| |
| uses vnffgr; |
| |
| leaf operational-status { |
| description |
| "The operational status of the NS instance |
| init : The network service has just started. |
| vl-init-phase : The VLs in the NS are being instantiated. |
| vnf-init-phase : The VNFs in the NS are being instantiated. |
| running : The NS is in running state. |
| terminate : The NS is being terminated. |
| vnf-terminate-phase : The NS is terminating the VNFs in the NS. |
| vl-terminate-phase : The NS is terminating the VLs in the NS. |
| terminated : The NS is in the terminated state. |
| failed : The NS instantiation failed. |
| scaling-out : The NS is scaling out |
| scaling-in : The NS is scaling in |
| vl-instantiate : The NS is initiating a new VL |
| vl-terminate : The NS is terminating a VL |
| "; |
| |
| type ns-operational-status; |
| } |
| |
| container ns-configuration { |
| uses manotypes:vca-configuration; |
| } |
| |
| leaf config-status { |
| description |
| "The configuration status of the NS instance |
| configuring: At least one of the VNFs in this instance is in configuring state |
| configured: All the VNFs in this NS instance are configured or config-not-needed state |
| "; |
| type config-states; |
| } |
| |
| list monitoring-param { |
| description |
| "List of NS level params."; |
| key "id"; |
| |
| uses manotypes:monitoring-param-value; |
| uses manotypes:monitoring-param-ui-data; |
| uses manotypes:monitoring-param-aggregation; |
| |
| leaf id { |
| type string; |
| } |
| |
| leaf name { |
| type string; |
| } |
| |
| leaf nsd-mon-param-ref { |
| description "Reference to the NSD monitoring param descriptor |
| that produced this result"; |
| // TODO: Fix leafref |
| type leafref { |
| path "../../../../project-nsd:nsd-catalog/project-nsd:nsd" + |
| "[project-nsd:id = current()/../../nsd-ref]" + |
| "/project-nsd:monitoring-param/project-nsd:id"; |
| } |
| } |
| |
| list vnfr-mon-param-ref { |
| description "A list of VNFR monitoring params associated with this monp"; |
| key "vnfr-id-ref vnfr-mon-param-ref"; |
| |
| leaf vnfr-id-ref { |
| description |
| "A reference to a vnfr. This is a |
| leafref to path: |
| /vnfr:vnfr-catalog/vnfr:vnfr/vnfr:id"; |
| |
| type yang:uuid; |
| } |
| |
| leaf vnfr-mon-param-ref { |
| description "A reference to the VNFR monitoring param"; |
| type leafref { |
| path "../../../../../vnfr:vnfr-catalog/vnfr:vnfr" |
| + "[vnfr:id = current()/../vnfr-id-ref]" |
| + "/vnfr:monitoring-param/vnfr:id"; |
| } |
| } |
| } |
| } |
| |
| list config-agent-job { |
| key "job-id"; |
| |
| leaf job-id { |
| description "config agent job Identifier for the NS."; |
| type uint64; |
| } |
| |
| leaf job-name { |
| description "Config agent job name"; |
| type string; |
| } |
| |
| leaf job-status { |
| description |
| "Job status to be set based on each VNF primitive execution, |
| pending - if at least one VNF is in pending state |
| and remaining VNFs are in success state. |
| Success - if all VNF executions are in success state |
| failure - if one of the VNF executions is failure"; |
| type enumeration { |
| enum pending; |
| enum success; |
| enum failure; |
| } |
| } |
| |
| leaf triggered-by { |
| description "The primitive is triggered from NS or VNF level"; |
| type trigger-type; |
| } |
| |
| leaf create-time { |
| description |
| "Creation timestamp of this Config Agent Job. |
| The timestamp is expressed as seconds |
| since unix epoch - 1970-01-01T00:00:00Z"; |
| |
| type uint32; |
| } |
| |
| leaf job-status-details { |
| description "Config agent job status details, in case of errors"; |
| type string; |
| } |
| |
| uses manotypes:primitive-parameter-value; |
| |
| list parameter-group { |
| description |
| "List of NS Primitive parameter groups"; |
| key "name"; |
| leaf name { |
| description |
| "Name of the parameter."; |
| type string; |
| } |
| |
| uses manotypes:primitive-parameter-value; |
| } |
| |
| list vnfr { |
| key "id"; |
| leaf id { |
| description "Identifier for the VNFR."; |
| type yang:uuid; |
| } |
| leaf vnf-job-status { |
| description |
| "Job status to be set based on each VNF primitive execution, |
| pending - if at least one primitive is in pending state |
| and remaining primitives are in success state. |
| Success - if all primitive executions are in success state |
| failure - if one of the primitive executions is failure"; |
| type enumeration { |
| enum pending; |
| enum success; |
| enum failure; |
| } |
| } |
| |
| list primitive { |
| key "name"; |
| leaf name { |
| description "the name of the primitive"; |
| type string; |
| } |
| |
| uses manotypes:primitive-parameter-value; |
| |
| leaf execution-id { |
| description "Execution id of the primitive"; |
| type string; |
| } |
| leaf execution-status { |
| description "status of the Execution"; |
| type enumeration { |
| enum pending; |
| enum success; |
| enum failure; |
| } |
| } |
| leaf execution-error-details { |
| description "Error details if execution-status is failure"; |
| type string; |
| } |
| } |
| } |
| } |
| } |
| } |
| } |
| |
| grouping rpc-common { |
| uses manotypes:rpc-project-name; |
| |
| leaf nsr_id_ref { |
| description "Reference to NSR ID ref"; |
| type leafref { |
| path "/osm-project:project[osm-project:name=current()/.." + |
| "/nsr:project-name]/nsr:ns-instance-config/nsr:nsr/nsr:id"; |
| } |
| mandatory true; |
| } |
| } |
| |
| rpc get-ns-config-primitive-values { |
| description "Get the config primitive parameter values"; |
| |
| input { |
| leaf name { |
| description "Name of the NS config primitive group"; |
| mandatory true; |
| type string; |
| } |
| |
| uses rpc-common; |
| } |
| |
| output { |
| list ns-parameter { |
| description "Automatically generated parameter"; |
| key "name"; |
| |
| leaf name { |
| description "Parameter name which should be pulled from a parameter pool"; |
| type string; |
| } |
| leaf value { |
| description "Automatically generated value"; |
| type string; |
| } |
| } |
| |
| list ns-parameter-group { |
| description "Automatically generated parameters in parameter group"; |
| key "name"; |
| leaf name { |
| description "Parameter group name"; |
| type string; |
| } |
| list parameter { |
| description "Automatically generated group parameter"; |
| key "name"; |
| |
| leaf name { |
| description "Parameter name which should be pulled from a parameter pool"; |
| type string; |
| } |
| leaf value { |
| description "Automatically generated value"; |
| type string; |
| } |
| } |
| } |
| |
| list vnf-primitive-group { |
| description |
| "List of service primitives grouped by VNF."; |
| |
| key "member-vnf-index-ref"; |
| leaf member-vnf-index-ref { |
| description |
| "Reference to member-vnf within constituent-vnfds"; |
| type string; |
| } |
| |
| leaf vnfd-id-ref { |
| description |
| "A reference to a vnfd. This is a |
| leafref to path: |
| ../../../../project-nsd:constituent-vnfd |
| + [project-nsd:id = current()/../project-nsd:id-ref] |
| + /project-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 string; |
| } |
| |
| list primitive { |
| key "index"; |
| leaf index { |
| description "Index of this primitive"; |
| type uint32; |
| } |
| |
| leaf name { |
| description "Name of the primitive associated with a value pool"; |
| type string; |
| } |
| |
| list parameter { |
| description "Automatically generated parameter"; |
| key "name"; |
| |
| leaf name { |
| description "Parameter name which should be pulled from a parameter pool"; |
| type string; |
| } |
| leaf value { |
| description "Automatically generated value"; |
| type string; |
| } |
| } |
| } |
| } |
| } |
| } |
| |
| rpc exec-ns-config-primitive { |
| description "Executes a NS config primitive or script"; |
| |
| input { |
| leaf name { |
| description "Name of the primitive"; |
| type string; |
| } |
| |
| uses rpc-common; |
| |
| leaf triggered-by { |
| description "The primitive is triggered from NS or VNF level"; |
| type trigger-type; |
| default ns-primitive; |
| } |
| |
| uses manotypes:primitive-parameter-value; |
| |
| list parameter-group { |
| description |
| "List of NS Primitive parameter groups"; |
| key "name"; |
| leaf name { |
| description |
| "Name of the parameter."; |
| type string; |
| } |
| |
| uses manotypes:primitive-parameter-value; |
| } |
| |
| list vnf-list { |
| description |
| "List of VNFs whose primitives are being set."; |
| key "member_vnf_index_ref"; |
| |
| leaf member_vnf_index_ref { |
| description "Member VNF index"; |
| type uint64; |
| } |
| |
| leaf vnfr-id-ref { |
| description |
| "A reference to a vnfr. This is a |
| leafref to path"; |
| type yang:uuid; |
| } |
| |
| list vnf-primitive { |
| description |
| "List of service primitives supported by the |
| configuration agent for this VNF."; |
| key "index"; |
| |
| leaf index { |
| description |
| "index of the service primitive."; |
| type uint32; |
| } |
| leaf name { |
| description |
| "Name of the service primitive."; |
| type string; |
| } |
| |
| uses manotypes:primitive-parameter-value; |
| } |
| } |
| leaf user-defined-script { |
| description |
| "A user defined script."; |
| type string; |
| } |
| } |
| output { |
| leaf job-id { |
| description "Job identifier for this RPC"; |
| type uint64; |
| } |
| |
| leaf name { |
| description "Name of the service primitive"; |
| type string; |
| } |
| |
| uses rpc-common; |
| |
| leaf triggered-by { |
| description "The primitive is triggered from NS or VNF level"; |
| type trigger-type; |
| } |
| |
| leaf create-time { |
| description |
| "Creation timestamp of this config agent JOB. |
| The timestamp is expressed as seconds |
| since unix epoch - 1970-01-01T00:00:00Z"; |
| |
| type uint32; |
| } |
| |
| leaf job-status-details { |
| description "Job status details, in case of any errors"; |
| type string; |
| } |
| |
| uses manotypes:primitive-parameter-value; |
| |
| list parameter-group { |
| description |
| "List of NS Primitive parameter groups"; |
| key "name"; |
| leaf name { |
| description |
| "Name of the parameter."; |
| type string; |
| } |
| |
| uses manotypes:primitive-parameter-value; |
| } |
| |
| list vnf-out-list { |
| description |
| "List of VNFs whose primitives were set."; |
| key "member_vnf_index_ref"; |
| |
| leaf member_vnf_index_ref { |
| description "Member VNF index"; |
| type uint64; |
| } |
| leaf vnfr-id-ref { |
| description |
| "A reference to a vnfr. This is a |
| leafref to path"; |
| type yang:uuid; |
| } |
| |
| list vnf-out-primitive { |
| description |
| "List of service primitives supported by the |
| configuration agent for this VNF."; |
| key "index"; |
| |
| leaf index { |
| description |
| "index of the service primitive."; |
| type uint32; |
| } |
| |
| leaf name { |
| description |
| "Name of the service primitive."; |
| type string; |
| } |
| |
| uses manotypes:primitive-parameter-value; |
| |
| leaf execution-id { |
| description "Execution id of this primitive"; |
| type string; |
| } |
| |
| leaf execution-status { |
| description "Status of the execution of this primitive"; |
| type string; |
| } |
| |
| leaf execution-error-details { |
| description "Error details if execution-status is failed"; |
| type string; |
| } |
| } |
| } |
| } |
| } |
| |
| rpc exec-scale-in { |
| description "Executes scale out request"; |
| |
| input { |
| uses rpc-common; |
| |
| leaf scaling-group-name-ref { |
| description "name of the scaling group"; |
| type leafref { |
| path "/osm-project:project[osm-project:name=current()/.." + |
| "/nsr:project-name]/nsr:ns-instance-config/nsr:nsr" + |
| "[nsr:id=current()/../nsr:nsr_id_ref]/nsr:nsd" + |
| "/nsr:scaling-group-descriptor/nsr:name"; |
| } |
| mandatory true; |
| } |
| |
| leaf instance-id { |
| description "id of the scaling group"; |
| type leafref { |
| path "/osm-project:project[osm-project:name=current()/.." + |
| "/nsr:project-name]/nsr:ns-instance-config/nsr:nsr" + |
| "[nsr:id=current()/../nsr:nsr_id_ref]" + |
| "/nsr:scaling-group[nsr:scaling-group-name-ref=current()/.." + |
| "/nsr:scaling-group-name-ref]/nsr:instance/nsr:id"; |
| } |
| mandatory true; |
| } |
| |
| |
| } |
| output { |
| leaf instance-id { |
| description "id of the scaling group"; |
| type uint64; |
| } |
| } |
| } |
| |
| rpc exec-scale-out { |
| description "Executes scale out request"; |
| |
| input { |
| uses rpc-common; |
| |
| leaf scaling-group-name-ref { |
| description "name of the scaling group"; |
| type leafref { |
| path "/osm-project:project[osm-project:name=current()/.." + |
| "/nsr:project-name]/nsr:ns-instance-config/nsr:nsr" + |
| "[nsr:id=current()/../nsr:nsr_id_ref]/nsr:nsd" + |
| "/nsr:scaling-group-descriptor/nsr:name"; |
| } |
| mandatory true; |
| } |
| |
| leaf instance-id { |
| description "id of the scaling group"; |
| type uint64; |
| } |
| } |
| |
| output { |
| leaf instance-id { |
| description "id of the scaling group"; |
| type uint64; |
| } |
| } |
| } |
| |
| rpc start-network-service { |
| description "Start the network service"; |
| input { |
| leaf name { |
| mandatory true; |
| description "Name of the Network Service"; |
| type string; |
| } |
| |
| uses manotypes:rpc-project-name; |
| |
| leaf nsd_id_ref { |
| description "Reference to NSD ID ref"; |
| type leafref { |
| path "/osm-project:project[osm-project:name=current()/.." + |
| "/project-name]/project-nsd:nsd-catalog/project-nsd:nsd/project-nsd:id"; |
| } |
| } |
| uses ns-instance-config-params-common; |
| |
| list vnfd-placement-group-maps { |
| description |
| "Mapping from mano-placement groups construct from VNFD to cloud |
| platform placement group construct"; |
| |
| key "placement-group-ref vnfd-id-ref"; |
| |
| leaf vnfd-id-ref { |
| description |
| "A reference to a vnfd. This is a |
| leafref to path: |
| ../../../../project-nsd:constituent-vnfd |
| + [id = current()/../project-nsd:id-ref] |
| + /project-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 yang:uuid; |
| } |
| |
| leaf placement-group-ref { |
| description |
| "A reference to VNFD placement group"; |
| type leafref { |
| path "/osm-project:project[osm-project:name=current()/" + |
| "../../project-name]/project-vnfd:vnfd-catalog/project-vnfd:vnfd[project-vnfd:id = " + |
| "current()/../vnfd-id-ref]/project-vnfd:placement-groups/project-vnfd:name"; |
| } |
| } |
| |
| uses manotypes:placement-group-input; |
| |
| list ssh-authorized-key { |
| key "key-pair-ref"; |
| |
| description "List of authorized ssh keys as part of cloud-config"; |
| |
| leaf key-pair-ref { |
| description "A reference to the key pair entry in the global key pair table"; |
| type leafref { |
| path "/osm-project:project[osm-project:name=current()/../../../" + |
| "project-name]/key-pair/name"; |
| } |
| } |
| } |
| |
| 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 ssh-authorized-key { |
| key "key-pair-ref"; |
| |
| description "Used to configure the list of public keys to be injected as part |
| of ns instantiation"; |
| |
| leaf key-pair-ref { |
| description "A reference to the key pair entry in the global key pair table"; |
| type leafref { |
| path "/osm-project:project[osm-project:name=current()/" + |
| "../../../../project-name]/key-pair/name"; |
| } |
| } |
| } |
| } |
| } |
| } |
| |
| output { |
| leaf nsr-id { |
| description "Automatically generated parameter"; |
| type yang:uuid; |
| } |
| } |
| } |
| } |