diff options
Diffstat (limited to 'requirements/resource_management/07-schemas.rst')
-rw-r--r-- | requirements/resource_management/07-schemas.rst | 195 |
1 files changed, 195 insertions, 0 deletions
diff --git a/requirements/resource_management/07-schemas.rst b/requirements/resource_management/07-schemas.rst new file mode 100644 index 0000000..3887cc7 --- /dev/null +++ b/requirements/resource_management/07-schemas.rst @@ -0,0 +1,195 @@ +Promise YANG Schemas based on StormForge +---------------------------------------- + +Promise Schema +^^^^^^^^^^^^^^ + +.. code:: + + module opnfv-promise { + namespace "urn:opnfv:vim:promise"; + prefix prom; + + import opnfv-promise-models { prefix opm; } + import complex-types { prefix ct; } + + description + "OPNFV Promise Resource Reservation/Allocation controller module"; + + revision 2015-04-16 { + description + "Initial revision."; + } + + // MAIN CONTAINER + + container promise { + ct:instance-list reservations { + description + "Aggregate collection of all registered ResourceReservation + instances"; + ct:instance-type opm:ResourceReservation; + } + } + + rpc list-reservations; + rpc create-reservation; + rpc cancel-reservation; + + notification reservation-event; + notification capacity-event; + notification allocation-event; + } + +OPNFV Promise YANG Schema +^^^^^^^^^^^^^^^^^^^^^^^^^ + +.. code:: + + module opnfv-promise-models { + prefix opm; + + import storm-common-models { prefix scm; } + import complex-types { prefix ct; } + + feature resource-reservation; + + ct:complex-type ResourceReservation { + ct:extends scm: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 ct:date-and-time; } + leaf end { type ct: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 scm:AvailabilityZone; } + } + container capacity { + uses scm:compute-capacity; + uses scm:networking-capcity; + uses scm: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 scm: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 scm: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 scm:compute-capacity; + uses scm:networking-capcity; + uses scm: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 scm: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 scm:ResourceElement; + } + + leaf priority { + description + "Reflects current priority level of the allocation according to + classification rules"; + type number; + config false; + } + } + } + +.. -* |