X-Git-Url: https://osm.etsi.org/gitweb/?a=blobdiff_plain;f=models%2Fplugins%2Fyang%2Fvnfr.yang;h=2678c500c8753ae026231f7d8576594186d05060;hb=a3bb91f092d378448cb870eccd45d43865de143c;hp=69d56913e94809ef321b85827b58b9a85066c102;hpb=f8b1c530725ad1c0f49868575a567627c879c4af;p=osm%2FSO.git diff --git a/models/plugins/yang/vnfr.yang b/models/plugins/yang/vnfr.yang index 69d56913..2678c500 100644 --- a/models/plugins/yang/vnfr.yang +++ b/models/plugins/yang/vnfr.yang @@ -1,7 +1,7 @@ /* * - * Copyright 2016 RIFT.IO Inc + * 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. @@ -31,12 +31,12 @@ module vnfr prefix "rwpb"; } - import vnfd { - prefix "vnfd"; + import vnfd-base { + prefix "vnfd-base"; } - import nsd { - prefix "nsd"; + import project-nsd { + prefix "project-nsd"; } import vlr { @@ -51,6 +51,19 @@ module vnfr prefix "inet"; } + import rw-project { + prefix "rw-project"; + } + + import rw-cloud { + prefix "rw-cloud"; + } + + revision 2017-02-28 { + description + "Update model to support projects."; + } + revision 2015-09-10 { description "Initial revision. This YANG file defines @@ -133,118 +146,119 @@ module vnfr } } - container vnfr-catalog { - config false; - list vnfr { - description + augment "/rw-project:project" { + container vnfr-catalog { + config false; + list vnfr { + description "Virtual Network Function Record (VNFR)."; - key "id"; - unique "name"; + key "id"; + unique "name"; - leaf id { - description "Identifier for the VNFR."; - type yang:uuid; - } + leaf id { + description "Identifier for the VNFR."; + type yang:uuid; + } - leaf nsr-id-ref { - description + leaf nsr-id-ref { + description "NS instance identifier. This is a leafref /nsr:ns-instance-config/nsr:nsr/nsr:id"; - type yang:uuid; - } + type yang:uuid; + } - leaf member-vnf-index-ref { - description "Reference to member VNF index in Network service."; - type leafref { - path "/nsd:nsd-catalog/nsd:nsd/nsd:constituent-vnfd/nsd:member-vnf-index"; + leaf member-vnf-index-ref { + description "Reference to member VNF index in Network service."; + type leafref { + path "../../../project-nsd:nsd-catalog/project-nsd:nsd/project-nsd:constituent-vnfd/project-nsd:member-vnf-index"; + } } - } - leaf dashboard-url { - description "Dashboard URL"; - type inet:uri; - } + leaf dashboard-url { + description "Dashboard URL"; + type inet:uri; + } - leaf name { - description "VNFR name."; - type string; - } + leaf name { + description "VNFR name."; + type string; + } - leaf short-name { - description "VNFR short name."; - type string; - } + leaf short-name { + description "VNFR short name."; + type string; + } - leaf vendor { - description "Vendor of the VNFR."; - type string; - } + leaf vendor { + description "Vendor of the VNFR."; + type string; + } - leaf description { - description "Description of the VNFR."; - type string; - } + leaf description { + description "Description of the VNFR."; + type string; + } - leaf version { - description "Version of the VNFR"; - type string; - } + leaf version { + description "Version of the VNFR"; + type string; + } - leaf create-time { - description - "Creation timestamp of this Virtual Network + leaf create-time { + description + "Creation timestamp of this Virtual Network Function. The timestamp is expressed as seconds since unix epoch - 1970-01-01T00:00:00Z"; - type uint32; - } + type uint32; + } - leaf uptime { - description - "Active period of this Virtual Network Function. + leaf uptime { + description + "Active period of this Virtual Network Function. Uptime is expressed in seconds"; - type uint32; - } + type uint32; + } - container vnfd { - description "VNF descriptor used to instantiate this VNF"; - uses vnfd:vnfd-descriptor; - } + container vnfd { + description "VNF descriptor used to instantiate this VNF"; + uses vnfd-base:vnfd-descriptor; + } - // Use parameters provided here to configure this VNF - uses manotypes:vnf-configuration; + // Use parameters provided here to configure this VNF + uses manotypes:vnf-configuration; - // Mainly used by Mon-params & dashboard url - container mgmt-interface { - leaf ip-address { - type inet:ip-address; - } - leaf port { - type inet:port-number; + // Mainly used by Mon-params & dashboard url + container mgmt-interface { + leaf ip-address { + type inet:ip-address; + } + leaf port { + type inet:port-number; + } } - } - list internal-vlr { - key "vlr-ref"; + list internal-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"; + leaf vlr-ref { + description "Reference to a VLR record in the VLR catalog"; + type leafref { + path "../../../../vlr:vlr-catalog/vlr:vlr/vlr:id"; + } } - } - leaf-list internal-connection-point-ref { - type leafref { - path "../../vdur/internal-connection-point/id"; + leaf-list internal-connection-point-ref { + type leafref { + path "../../vdur/internal-connection-point/id"; + } } } - } - list connection-point { - key "name"; - description + list connection-point { + key "name"; + description "List for external connection points. Each VNF has one or more external connection points. As the name implies that external connection points are used for @@ -255,120 +269,129 @@ module vnfr different VNFs. The NFVO will use VLDs and VNFFGs at the network service level to construct network services."; - uses vnfd:common-connection-point; + uses vnfd-base:common-connection-point; - leaf vlr-ref { - description + leaf vlr-ref { + description "Reference to the VLR associated with this connection point"; - type leafref { - path "/vlr:vlr-catalog/vlr:vlr/vlr:id"; + type leafref { + path "../../../../vlr:vlr-catalog/vlr:vlr/vlr:id"; + } } - } - leaf ip-address { - description + leaf ip-address { + description "IP address assigned to the external connection point"; - type inet:ip-address; - } - leaf mac-address { - description + type inet:ip-address; + } + leaf mac-address { + description "MAC address assigned to the external connection point"; - // type inet:mac-address; - type string; - } - leaf connection-point-id { - rwpb:field-inline "true"; - rwpb:field-string-max 64; - type string; + // type inet:mac-address; + type string; + } + leaf connection-point-id { + rwpb:field-inline "true"; + rwpb:field-string-max 64; + type string; + } } - } - list vdur { - description "List of Virtual Deployment Units"; - key "id"; - unique "name"; + list vdur { + description "List of Virtual Deployment Units"; + key "id"; + unique "name"; - leaf id { - description "Unique id for the VDU"; - type yang:uuid; - } + leaf id { + description "Unique id for the VDU"; + type yang:uuid; + } - leaf name { - description "name of the instantiated VDUR"; - type string; - } + leaf name { + description "name of the instantiated VDUR"; + type string; + } - leaf vdu-id-ref { - type leafref { - path "../../vnfd/vdu/id"; + leaf unique-short-name { + description "Short Unique name of the VDU + This will be of the format NSR name-ShortnedString-VDUname + NSR name and VDU name shall be constrained to 10 characters"; + rwpb:field-inline "true"; + rwpb:field-string-max 64; + type string; } - } - leaf vim-id { - description "Allocated VM resource id"; - type string; - } + leaf vdu-id-ref { + type leafref { + path "../../vnfd/vdu/id"; + } + } - leaf flavor-id { - description "VIM assigned flavor id"; - type string; - } + leaf vim-id { + description "Allocated VM resource id"; + type string; + } - leaf image-id { - description "VIM assigned image id"; - type string; - } + leaf flavor-id { + description "VIM assigned flavor id"; + type string; + } - leaf management-ip { - description "Management IP address"; - type inet:ip-address; - } + leaf image-id { + description "VIM assigned image id"; + type string; + } - leaf vm-management-ip { - description "VM Private Management IP address"; - type inet:ip-address; - } + leaf management-ip { + description "Management IP address"; + type inet:ip-address; + } - leaf console-url { - description "Console URL for this VDU, if available"; - type inet:uri; - } + leaf vm-management-ip { + description "VM Private Management IP address"; + type inet:ip-address; + } - uses manotypes:vm-flavor; - uses manotypes:guest-epa; - uses manotypes:vswitch-epa; - uses manotypes:hypervisor-epa; - uses manotypes:host-epa; + leaf console-url { + description "Console URL for this VDU, if available"; + type inet:uri; + } - uses manotypes:custom-boot-data; + uses manotypes:vm-flavor; + uses manotypes:guest-epa; + uses manotypes:vswitch-epa; + uses manotypes:hypervisor-epa; + uses manotypes:host-epa; - list volumes { - key "name"; + uses manotypes:supplemental-boot-data; - leaf name { - description "Name of the disk-volumes, e.g. vda, vdb etc"; - type string; - } + list volumes { + key "name"; - leaf volume-id { - description "VIM assigned volume id"; - type string; - } + leaf name { + description "Name of the disk-volumes, e.g. vda, vdb etc"; + type string; + } - uses manotypes:volume-info; - } + leaf volume-id { + description "VIM assigned volume id"; + type string; + } - list alarms { - description + uses manotypes:volume-info; + } + + list alarms { + description "A list of the alarms that have been created for this VDU"; - key "alarm-id"; - uses manotypes:alarm; - } + key "alarm-id"; + uses manotypes:alarm; + } - list internal-connection-point { - key "id"; - description + list internal-connection-point { + key "id"; + description "List for internal connection points. Each VNFC has zero or more internal connection points. Internal connection points are used for connecting @@ -376,67 +399,67 @@ module vnfr has only one VNFC, it may not have any internal connection points."; - uses vnfd:common-connection-point; + uses vnfd-base:common-connection-point; - leaf ip-address { - description + leaf ip-address { + description "IP address assigned to the internal connection point"; - type inet:ip-address; - } - leaf mac-address { - description + type inet:ip-address; + } + leaf mac-address { + description "MAC address assigned to the internal connection point"; - // type inet:mac-address; - type string; + // type inet:mac-address; + type string; + } } - } - list internal-interface { - description + list internal-interface { + description "List of internal interfaces for the VNF"; - key name; + key name; - leaf name { - description + leaf name { + description "Name of internal interface. Note that this name has only local significance to the VDU."; - type string; - } + type string; + } - leaf vdur-internal-connection-point-ref { - type leafref { - path "../../internal-connection-point/id"; + leaf vdur-internal-connection-point-ref { + type leafref { + path "../../internal-connection-point/id"; + } } + uses virtual-interface; } - uses virtual-interface; - } - list external-interface { - description + list external-interface { + description "List of external interfaces for the VNF. The external interfaces enable sending traffic to and from VNF."; - key name; + key name; - leaf name { - description + leaf name { + description "Name of the external interface. Note that this name has only local significance."; - type string; - } + type string; + } - leaf vnfd-connection-point-ref { - description - "Name of the external connection point."; - type leafref { - path "../../../connection-point/name"; + leaf vnfd-connection-point-ref { + description + "Name of the external connection point."; + type leafref { + path "../../../connection-point/name"; + } } + uses virtual-interface; } - uses virtual-interface; - } - leaf operational-status { - description - "The operational status of the VDU + leaf operational-status { + description + "The operational status of the VDU init : The VDU has just started. vm-init-phase : The VDUs in the VNF is being created in VIM. vm-alloc-pending : The VM alloc is pending in VIM @@ -447,26 +470,26 @@ module vnfr failed : The VDU instantiation failed. "; - type enumeration { - rwpb:enum-type "VduOperationalStatus"; - enum init; - enum vm-init-phase; - enum vm-alloc-pending; - enum running; - enum terminate; - enum vl-terminate-phase; - enum terminated; - enum failed; + type enumeration { + rwpb:enum-type "VduOperationalStatus"; + enum init; + enum vm-init-phase; + enum vm-alloc-pending; + enum running; + enum terminate; + enum vl-terminate-phase; + enum terminated; + enum failed; + } } + uses placement-group-info; } - uses placement-group-info; - } - uses manotypes:monitoring-param; + uses manotypes:monitoring-param; - leaf operational-status { - description - "The operational status of the VNFR instance + leaf operational-status { + description + "The operational status of the VNFR instance init : The VNF has just started. vl-init-phase : The internal VLs in the VNF are being instantiated. vm-init-phase : The VMs for VDUs in the VNF are being instantiated. @@ -478,51 +501,57 @@ module vnfr failed : The VNF instantiation failed "; - type enumeration { - rwpb:enum-type "VnfrOperationalStatus"; - enum init; - enum vl-init-phase; - enum vm-init-phase; - enum running; - enum terminate; - enum vm-terminate-phase; - enum vl-terminate-phase; - enum terminated; - enum failed; + type enumeration { + rwpb:enum-type "VnfrOperationalStatus"; + enum init; + enum vl-init-phase; + enum vm-init-phase; + enum running; + enum terminate; + enum vm-terminate-phase; + enum vl-terminate-phase; + enum terminated; + enum failed; + } } - } - leaf config-status { - description - "The configuration status of the NS instance + 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 enumeration { - enum configuring { - value 1; - } - enum configured { - value 2; - } - enum failed { - value 3; - } - enum config-not-needed { - value 4; + type enumeration { + enum configuring { + value 1; + } + enum configured { + value 2; + } + enum failed { + value 3; + } + enum config-not-needed { + value 4; + } } } + uses placement-group-info; } - uses placement-group-info; } } rpc create-alarm { description "Create an alert for a running VDU"; input { + uses manotypes:rpc-project-name; + leaf cloud-account { mandatory true; - type string; + type leafref { + path "/rw-project:project[rw-project:name=current()/../project-name]" + + "/rw-cloud:cloud/rw-cloud:account/rw-cloud:name"; + } } leaf vdur-id { @@ -545,9 +574,14 @@ module vnfr rpc destroy-alarm { description "Destroy an alert that is associated with a running VDU"; input { + uses manotypes:rpc-project-name; + leaf cloud-account { mandatory true; - type string; + type leafref { + path "/rw-project:project[rw-project:name=current()/../project-name]" + + "/rw-cloud:cloud/rw-cloud:account/rw-cloud:name"; + } } leaf alarm-id {