diff options
Diffstat (limited to 'docs/requirements/07-schemas.rst')
-rw-r--r-- | docs/requirements/07-schemas.rst | 306 |
1 files changed, 0 insertions, 306 deletions
diff --git a/docs/requirements/07-schemas.rst b/docs/requirements/07-schemas.rst deleted file mode 100644 index 64d87f3..0000000 --- a/docs/requirements/07-schemas.rst +++ /dev/null @@ -1,306 +0,0 @@ -ANNEX A: PROMISE YANG SCHEMA BASED ON YANGFORGE -=============================================== - -.. code:: - - module opnfv-promise { - namespace "urn:opnfv:promise"; - prefix promise; - - import complex-types { prefix ct; } - import iana-crypt-hash { prefix ianach; } - import ietf-inet-types { prefix inet; } - import ietf-yang-types { prefix yang; } - import opnfv-promise-vim { prefix vim; } - - feature multi-provider { - description ""; - } - - description - "OPNFV Promise Resource Reservation/Allocation controller module"; - - revision 2015-04-16 { - description "Initial revision."; - } - - revision 2015-08-06 { - description "Updated to incorporate YangForge framework"; - } - - grouping resource-capacity { - container capacity { - container quota { description 'Conceptual container that should be extended'; } - container usage { description 'Conceptual container that should be extended'; - config false; } - container reserved { description 'Conceptual container that should be extended'; - config false; } - container available { description 'Conceptual container that should be extended'; - config false; } - } - } - - grouping compute-capacity { - leaf cores { type number; } - leaf ram { type number; } - leaf instances { type number; } - } - - grouping networking-capacity { - leaf network { type number; } - leaf port { type number; } - leaf router { type number; } - leaf subnet { type number; } - leaf address { type number; } - } - - ct:complex-type ResourceReservation { - ct:extends vim:ResourceElement; - - description - "Contains the capacities of various resource services being reserved - along with any resource elements needed to be available at - the time of allocation(s)."; - - reference "OPNFV-PROMISE, Section 3.4.1"; - - leaf start { type yang:date-and-time; } - leaf end { type yang:date-and-time; } - leaf expiry { - description "Duration in seconds from start when unallocated reserved resources - will be released back into the pool"; - type number; units "seconds"; - } - leaf zone { type instance-identifier { ct:instance-type vim:AvailabilityZone; } } - container capacity { - uses vim:compute-capacity; - uses vim:networking-capcity; - uses vim:storage-capacity; - } - leaf-list resources { - description - "Reference to a collection of existing resource elements required by - this reservation. It can contain any instance derived from - ResourceElement, such as ServerInstances or even other - ResourceReservations. If the ResourceReservation request is - accepted, the ResourceElement(s) listed here will be placed - into 'protected' mode as to prevent accidental delete."; - type instance-identifier { - ct:instance-type vim:ResourceElement; - } - // following 'must' statement applies to each element - must "boolean(/provider/elements/*[@id=id])" { - error-message "One or more of the ResourceElement(s) does not exist in - the provider to be reserved"; - } - } - - leaf provider { - if-feature multi-provider; - config false; - - description - "Reference to a specified existing provider from which this reservation - will be drawn if used in the context of multi-provider - environment."; - type instance-identifier { - ct:instance-type vim:ResourceProvider; - require-instance true; - } - } - - container remaining { - config false; - description - "Provides visibility into total remaining capacity for this - reservation based on allocations that took effect utilizing - this reservation ID as a reference."; - - uses vim:compute-capacity; - uses vim:networking-capcity; - uses vim:storage-capacity; - } - - leaf-list allocations { - config false; - description - "Reference to a collection of consumed allocations referencing - this reservation."; - type instance-identifier { - ct:instance-type ResourceAllocation; - } - } - } - - ct:complex-type ResourceAllocation { - ct:extends vim:ResourceElement; - - description - "Contains a list of resources to be allocated with optional reference - to an existing reservation. - - If reservation is specified but this request is received prior - to reservation start timestamp, then it will be rejected unless - 'allocate-on-start' is set to true. 'allocate-on-start' allows - the allocation to be auto-initiated and scheduled to run in the - future. - - The 'priority' state indicates the classification for dealing - with resource starvation scenarios. Lower priority allocations - will be forcefully terminated to allow for higher priority - allocations to be fulfilled. - - Allocations without reference to an existing reservation will - receive the lowest priority."; - - reference "OPNFV-PROMISE, Section 3.4.3"; - - leaf reservation { - description "Reference to an existing reservation identifier"; - - type instance-identifier { - ct:instance-type ResourceReservation; - require-instance true; - } - } - - leaf allocate-on-start { - description - "If 'allocate-on-start' is set to true, the 'planned' allocations will - take effect automatically at the reservation 'start' date/time."; - type boolean; default false; - } - - ct:instance-list resources { - description "Contains list of new ResourceElements that will be allocated"; - ct:instance-type vim:ResourceElement; - } - - leaf priority { - description - "Reflects current priority level of the allocation according to classification rules"; - type number; - config false; - } - } - - // MAIN CONTAINER - container promise { - ct:instance-list providers { - description "Aggregate collection of all registered ResourceProvider instances"; - ct:instance-type vim:ResourceProvider; - config false; - - // augment compute container with capacity elements - augment "compute" { - uses resource-capacity { - augment "capacity/quota" { uses compute-capacity; } - augment "capacity/usage" { uses compute-capacity; } - augment "capacity/reserved" { uses compute-capacity; } - augment "capacity/available" { uses compute-capacity; } - } - } - - // augment networking container with capacity elements - augment "networking" { - uses resource-capacity { - if-feature has-networking-capacity; - augment "capacity/quota" { uses networking-capacity; } - augment "capacity/usage" { uses networking-capacity; } - augment "capacity/reserved" { uses networking-capacity; } - augment "capacity/available" { uses networking-capacity; } - } - } - - // track references to reservations for this resource provider - leaf-list reservations { - type instance-identifier { - ct:instance-type ResourceReservation; - } - } - } - - ct:instance-list reservations { - description "Aggregate collection of all registered ResourceReservation instances"; - ct:instance-type ResourceReservation; - } - - ct:instance-list allocations { - description "Aggregate collection of all active ResourceAllocation instances"; - ct:instance-type ResourceAllocation; - } - } - - rpc add-provider { - description "This operation allows you to register a new ResourceProvider - into promise management service"; - input { - leaf provider { - description "Select a specific resource provider"; - mandatory true; - type enumeration { - enum openstack; - enum hp; - enum rackspace; - enum amazon { - status planned; - } - enum joyent { - status planned; - } - enum azure { - status planned; - } - } - } - leaf username { - type string; - mandatory true; - } - leaf password { - type ianach:crypt-hash; - mandatory true; - } - leaf endpoint { - type inet:uri; - description "The target URL endpoint for the resource provider"; - mandatory true; - } - leaf region { - type string; - description "Optional specified regsion for the provider"; - } - } - output { - leaf id { - description "Unique identifier for the newly added provider found in /promise/providers"; - type instance-identifier { - ct:instance-type ResourceProvider; - } - } - leaf result { - type enumeration { - enum success; - enum error; - } - } - } - } - rpc remove-provider; - rpc list-providers; - - rpc check-capacity; - - rpc list-reservations; - rpc create-reservation; - rpc update-reservation; - rpc cancel-reservation; - - rpc list-allocations; - rpc create-allocation; - - notification reservation-event; - notification capacity-event; - notification allocation-event; - } - |