summaryrefslogtreecommitdiffstats
path: root/deprecated/source/index.yaml
diff options
context:
space:
mode:
Diffstat (limited to 'deprecated/source/index.yaml')
-rw-r--r--deprecated/source/index.yaml4120
1 files changed, 0 insertions, 4120 deletions
diff --git a/deprecated/source/index.yaml b/deprecated/source/index.yaml
deleted file mode 100644
index 071d685..0000000
--- a/deprecated/source/index.yaml
+++ /dev/null
@@ -1,4120 +0,0 @@
-synth: source
-name: opnfv-promise
-version: !<tag:yaml.org,2002:js/undefined> ''
-description: Resource Management for Virtualized Infrastructure
-license: Apache-2.0
-schema:
- module:
- opnfv-promise:
- namespace: 'urn:opnfv:promise'
- prefix: promise
- import:
- complex-types:
- prefix: ct
- ietf-yang-types:
- prefix: yang
- ietf-inet-types:
- prefix: inet
- access-control-models:
- prefix: acm
- nfv-infrastructure:
- prefix: nfvi
- description: OPNFV Promise Resource Reservation/Allocation controller module
- revision:
- '2015-10-05':
- description: Complete coverage of reservation related intents
- '2015-08-06':
- description: Updated to incorporate YangForge framework
- '2015-04-16':
- description: Initial revision.
- feature:
- reservation-service:
- description: 'When enabled, provides resource reservation service'
- multi-provider:
- description: 'When enabled, provides resource management across multiple providers'
- grouping:
- resource-utilization:
- container:
- capacity:
- container:
- total:
- description: Conceptual container that should be extended
- reserved:
- description: Conceptual container that should be extended
- config: false
- usage:
- description: Conceptual container that should be extended
- config: false
- available:
- description: Conceptual container that should be extended
- config: false
- temporal-resource-collection:
- description: Information model capturing resource-collection with start/end time window
- leaf:
- start:
- type: 'yang:date-and-time'
- end:
- type: 'yang:date-and-time'
- container:
- capacity:
- uses: {}
- leaf:
- cores:
- type: int16
- default: '0'
- ram:
- type: int32
- default: '0'
- units: MB
- instances:
- type: int16
- default: '0'
- networks:
- type: int16
- default: '0'
- ports:
- type: int16
- default: '0'
- routers:
- type: int16
- default: '0'
- subnets:
- type: int16
- default: '0'
- addresses:
- type: int32
- default: '0'
- gigabytes:
- type: int32
- default: '0'
- units: GB
- snapshots:
- type: int16
- default: '0'
- volumes:
- type: int16
- default: '0'
- leaf-list:
- elements:
- type:
- instance-identifier:
- 'ct:instance-type': 'nfvi:ResourceElement'
- require-instance: true
- resource-usage-request:
- description: |-
- Information model capturing available parameters to make a resource
- usage request.
- reference: 'OPNFV-PROMISE, Section 3.4.1'
- uses: {}
- leaf:
- zone:
- description: Optional identifier to an Availability Zone
- type:
- instance-identifier:
- 'ct:instance-type': 'nfvi:AvailabilityZone'
- start:
- type: 'yang:date-and-time'
- end:
- type: 'yang:date-and-time'
- container:
- capacity:
- uses: {}
- leaf:
- cores:
- type: int16
- default: '0'
- ram:
- type: int32
- default: '0'
- units: MB
- instances:
- type: int16
- default: '0'
- networks:
- type: int16
- default: '0'
- ports:
- type: int16
- default: '0'
- routers:
- type: int16
- default: '0'
- subnets:
- type: int16
- default: '0'
- addresses:
- type: int32
- default: '0'
- gigabytes:
- type: int32
- default: '0'
- units: GB
- snapshots:
- type: int16
- default: '0'
- volumes:
- type: int16
- default: '0'
- leaf-list:
- elements:
- type:
- instance-identifier:
- 'ct:instance-type': 'nfvi:ResourceElement'
- require-instance: true
- description: |-
- Reference to a list of 'pre-existing' resource elements that are
- required for fulfillment of the resource-usage-request.
-
- It can contain any instance derived from ResourceElement,
- such as ServerInstances or even other
- ResourceReservations. If the resource-usage-request is
- accepted, the ResourceElement(s) listed here will be placed
- into 'protected' mode as to prevent accidental removal.
-
- If any of these resource elements become 'unavailable' due to
- environmental or administrative activity, a notification will
- be issued informing of the issue.
- query-start-end-window:
- container:
- window:
- description: Matches entries that are within the specified start/end time window
- leaf:
- start:
- type: 'yang:date-and-time'
- end:
- type: 'yang:date-and-time'
- scope:
- type:
- enumeration:
- enum:
- exclusive:
- description: Matches entries that start AND end within the window
- value: 0
- inclusive:
- description: Matches entries that start OR end within the window
- value: 1
- default: inclusive
- query-resource-collection:
- uses: {}
- leaf-list:
- without:
- description: Excludes specified collection identifiers from the result
- type:
- instance-identifier:
- 'ct:instance-type': ResourceCollection
- leaf:
- show-utilization:
- type: boolean
- default: 'true'
- container:
- elements:
- leaf-list:
- some:
- description: Query for ResourceCollection(s) that contain some or more of these element(s)
- type:
- instance-identifier:
- 'ct:instance-type': 'nfvi:ResourceElement'
- every:
- description: Query for ResourceCollection(s) that contain all of these element(s)
- type:
- instance-identifier:
- 'ct:instance-type': 'nfvi:ResourceElement'
- window:
- description: Matches entries that are within the specified start/end time window
- leaf:
- start:
- type: 'yang:date-and-time'
- end:
- type: 'yang:date-and-time'
- scope:
- type:
- enumeration:
- enum:
- exclusive:
- description: Matches entries that start AND end within the window
- value: 0
- inclusive:
- description: Matches entries that start OR end within the window
- value: 1
- default: inclusive
- common-intent-output:
- leaf:
- result:
- type:
- enumeration:
- enum:
- ok:
- value: 0
- conflict:
- value: 1
- error:
- value: 2
- message:
- type: string
- utilization-output:
- list:
- utilization:
- key: timestamp
- leaf:
- timestamp:
- type: 'yang:date-and-time'
- count:
- type: int16
- container:
- capacity:
- uses: {}
- leaf:
- cores:
- type: int16
- default: '0'
- ram:
- type: int32
- default: '0'
- units: MB
- instances:
- type: int16
- default: '0'
- networks:
- type: int16
- default: '0'
- ports:
- type: int16
- default: '0'
- routers:
- type: int16
- default: '0'
- subnets:
- type: int16
- default: '0'
- addresses:
- type: int32
- default: '0'
- gigabytes:
- type: int32
- default: '0'
- units: GB
- snapshots:
- type: int16
- default: '0'
- volumes:
- type: int16
- default: '0'
- 'ct:complex-type':
- ResourceCollection:
- 'ct:extends': 'nfvi:ResourceContainer'
- 'ct:abstract': 'true'
- description: |-
- Describes an abstract ResourceCollection data model, which represents
- a grouping of capacity and elements available during a given
- window in time which must be extended by other resource
- collection related models
- leaf:
- start:
- type: 'yang:date-and-time'
- end:
- type: 'yang:date-and-time'
- active:
- config: false
- description: |-
- Provides current state of this record whether it is enabled and within
- specified start/end time
- type: boolean
- ResourcePool:
- 'ct:extends': ResourceCollection
- description: |-
- Describes an instance of an active ResourcePool record, which
- represents total available capacity and elements from a given
- source.
- leaf:
- source:
- type:
- instance-identifier:
- 'ct:instance-type': 'nfvi:ResourceContainer'
- require-instance: true
- mandatory: true
- refine:
- elements:
- must:
- 'boolean(/source/elements/*[@id=id])':
- error-message: One or more of the ResourceElement(s) does not exist in the provider to be reserved
- ResourceReservation:
- 'ct:extends': ResourceCollection
- description: |-
- Describes an instance of an accepted resource reservation request,
- created usually as a result of 'create-reservation' request.
-
- A ResourceReservation is a derived instance of a generic
- ResourceCollection which has additional parameters to map the
- pool(s) that were referenced to accept this reservation as well
- as to track allocations made referencing this reservation.
-
- Contains the capacities of various resource attributes being
- reserved along with any resource elements that are needed to be
- available at the time of allocation(s).
- reference: 'OPNFV-PROMISE, Section 3.4.1'
- leaf:
- created-on:
- type: 'yang:date-and-time'
- config: false
- modified-on:
- type: 'yang:date-and-time'
- config: false
- leaf-list:
- pools:
- config: false
- description: |-
- Provides list of one or more pools that were referenced for providing
- the requested resources for this reservation. This is an
- important parameter for informing how/where allocation
- requests can be issued using this reservation since it is
- likely that the total reserved resource capacity/elements are
- made availble from multiple sources.
- type:
- instance-identifier:
- 'ct:instance-type': ResourcePool
- require-instance: true
- allocations:
- config: false
- description: |-
- Reference to a collection of consumed allocations referencing
- this reservation.
- type:
- instance-identifier:
- 'ct:instance-type': ResourceAllocation
- 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: {}
- leaf:
- cores:
- type: int16
- default: '0'
- ram:
- type: int32
- default: '0'
- units: MB
- instances:
- type: int16
- default: '0'
- networks:
- type: int16
- default: '0'
- ports:
- type: int16
- default: '0'
- routers:
- type: int16
- default: '0'
- subnets:
- type: int16
- default: '0'
- addresses:
- type: int32
- default: '0'
- gigabytes:
- type: int32
- default: '0'
- units: GB
- snapshots:
- type: int16
- default: '0'
- volumes:
- type: int16
- default: '0'
- ResourceAllocation:
- 'ct:extends': ResourceCollection
- description: |-
- A ResourceAllocation record denotes consumption of resources from a
- referenced ResourcePool.
-
- It does not reflect an accepted request but is created to
- represent the actual state about the ResourcePool. It is
- created once the allocation(s) have successfully taken effect
- on the 'source' of the ResourcePool.
-
- 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 (optional)
- type:
- instance-identifier:
- 'ct:instance-type': ResourceReservation
- require-instance: true
- pool:
- description: Reference to an existing resource pool from which allocation is drawn
- type:
- instance-identifier:
- 'ct:instance-type': ResourcePool
- require-instance: true
- priority:
- config: false
- description: Reflects current priority level of the allocation according to classification rules
- type:
- enumeration:
- enum:
- high:
- value: 1
- normal:
- value: 2
- low:
- value: 3
- default: normal
- container:
- instance-ref:
- config: false
- description: Reference to actual instance identifier of the provider/server for this allocation
- leaf:
- provider:
- type:
- instance-identifier:
- 'ct:instance-type': ResourceProvider
- server:
- type: 'yang:uuid'
- ResourceFlavor:
- description: currently NOT an extension of ResourceElement.
- key: id
- leaf:
- id:
- type: string
- name:
- type: string
- disk:
- type: uint32
- units: GB
- default: '0'
- ram:
- type: uint32
- units: MB
- default: '0'
- vcpus:
- type: uint16
- default: '0'
- ResourceProvider:
- 'ct:extends': 'nfvi:ResourceContainer'
- leaf:
- token:
- type: string
- mandatory: true
- container:
- services:
- config: false
- container:
- compute:
- leaf:
- endpoint:
- type: 'inet:uri'
- 'ct:instance-list':
- flavors:
- 'ct:instance-type': ResourceFlavor
- leaf-list:
- pools:
- config: false
- description: Provides list of one or more pools that are referencing this provider.
- type:
- instance-identifier:
- 'ct:instance-type': ResourcePool
- require-instance: true
- container:
- promise:
- uses: {}
- 'ct:instance-list':
- providers:
- if-feature: multi-provider
- description: Aggregate collection of all registered ResourceProvider instances for Promise resource management service
- 'ct:instance-type': ResourceProvider
- status: unavailable
- pools:
- if-feature: reservation-service
- description: Aggregate collection of all ResourcePool instances
- 'ct:instance-type': ResourcePool
- status: unavailable
- reservations:
- if-feature: reservation-service
- description: Aggregate collection of all ResourceReservation instances
- 'ct:instance-type': ResourceReservation
- status: unavailable
- allocations:
- description: Aggregate collection of all ResourceAllocation instances
- 'ct:instance-type': ResourceAllocation
- container:
- policy:
- container:
- reservation:
- leaf:
- max-future-start-range:
- description: "Enforce reservation request 'start' time is within allowed range from now"
- type:
- uint16:
- range: 0..365
- units: days
- max-future-end-range:
- description: "Enforce reservation request 'end' time is within allowed range from now"
- type:
- uint16:
- range: 0..365
- units: days
- max-duration:
- description: Enforce reservation duration (end-start) does not exceed specified threshold
- type: uint16
- units: hours
- default: '8760'
- expiry:
- description: |-
- Duration in minutes from start when unallocated reserved resources
- will be released back into the pool
- type: uint32
- units: minutes
- capacity:
- container:
- total:
- description: Conceptual container that should be extended
- uses: {}
- leaf:
- cores:
- type: int16
- default: '0'
- ram:
- type: int32
- default: '0'
- units: MB
- instances:
- type: int16
- default: '0'
- networks:
- type: int16
- default: '0'
- ports:
- type: int16
- default: '0'
- routers:
- type: int16
- default: '0'
- subnets:
- type: int16
- default: '0'
- addresses:
- type: int32
- default: '0'
- gigabytes:
- type: int32
- default: '0'
- units: GB
- snapshots:
- type: int16
- default: '0'
- volumes:
- type: int16
- default: '0'
- reserved:
- description: Conceptual container that should be extended
- config: false
- uses: {}
- leaf:
- cores:
- type: int16
- default: '0'
- ram:
- type: int32
- default: '0'
- units: MB
- instances:
- type: int16
- default: '0'
- networks:
- type: int16
- default: '0'
- ports:
- type: int16
- default: '0'
- routers:
- type: int16
- default: '0'
- subnets:
- type: int16
- default: '0'
- addresses:
- type: int32
- default: '0'
- gigabytes:
- type: int32
- default: '0'
- units: GB
- snapshots:
- type: int16
- default: '0'
- volumes:
- type: int16
- default: '0'
- usage:
- description: Conceptual container that should be extended
- config: false
- uses: {}
- leaf:
- cores:
- type: int16
- default: '0'
- ram:
- type: int32
- default: '0'
- units: MB
- instances:
- type: int16
- default: '0'
- networks:
- type: int16
- default: '0'
- ports:
- type: int16
- default: '0'
- routers:
- type: int16
- default: '0'
- subnets:
- type: int16
- default: '0'
- addresses:
- type: int32
- default: '0'
- gigabytes:
- type: int32
- default: '0'
- units: GB
- snapshots:
- type: int16
- default: '0'
- volumes:
- type: int16
- default: '0'
- available:
- description: Conceptual container that should be extended
- config: false
- uses: {}
- leaf:
- cores:
- type: int16
- default: '0'
- ram:
- type: int32
- default: '0'
- units: MB
- instances:
- type: int16
- default: '0'
- networks:
- type: int16
- default: '0'
- ports:
- type: int16
- default: '0'
- routers:
- type: int16
- default: '0'
- subnets:
- type: int16
- default: '0'
- addresses:
- type: int32
- default: '0'
- gigabytes:
- type: int32
- default: '0'
- units: GB
- snapshots:
- type: int16
- default: '0'
- volumes:
- type: int16
- default: '0'
- rpc:
- create-reservation:
- if-feature: reservation-service
- description: Make a request to the reservation system to reserve resources
- input:
- uses: {}
- leaf:
- zone:
- description: Optional identifier to an Availability Zone
- type:
- instance-identifier:
- 'ct:instance-type': 'nfvi:AvailabilityZone'
- start:
- type: 'yang:date-and-time'
- end:
- type: 'yang:date-and-time'
- container:
- capacity:
- uses: {}
- leaf:
- cores:
- type: int16
- default: '0'
- ram:
- type: int32
- default: '0'
- units: MB
- instances:
- type: int16
- default: '0'
- networks:
- type: int16
- default: '0'
- ports:
- type: int16
- default: '0'
- routers:
- type: int16
- default: '0'
- subnets:
- type: int16
- default: '0'
- addresses:
- type: int32
- default: '0'
- gigabytes:
- type: int32
- default: '0'
- units: GB
- snapshots:
- type: int16
- default: '0'
- volumes:
- type: int16
- default: '0'
- leaf-list:
- elements:
- type:
- instance-identifier:
- 'ct:instance-type': 'nfvi:ResourceElement'
- require-instance: true
- description: |-
- Reference to a list of 'pre-existing' resource elements that are
- required for fulfillment of the resource-usage-request.
-
- It can contain any instance derived from ResourceElement,
- such as ServerInstances or even other
- ResourceReservations. If the resource-usage-request is
- accepted, the ResourceElement(s) listed here will be placed
- into 'protected' mode as to prevent accidental removal.
-
- If any of these resource elements become 'unavailable' due to
- environmental or administrative activity, a notification will
- be issued informing of the issue.
- output:
- leaf:
- reservation-id:
- type:
- instance-identifier:
- 'ct:instance-type': ResourceReservation
- result:
- type:
- enumeration:
- enum:
- ok:
- value: 0
- conflict:
- value: 1
- error:
- value: 2
- message:
- type: string
- status: unavailable
- update-reservation:
- description: Update reservation details for an existing reservation
- input:
- leaf:
- reservation-id:
- type:
- instance-identifier:
- 'ct:instance-type': ResourceReservation
- require-instance: true
- mandatory: true
- zone:
- description: Optional identifier to an Availability Zone
- type:
- instance-identifier:
- 'ct:instance-type': 'nfvi:AvailabilityZone'
- start:
- type: 'yang:date-and-time'
- end:
- type: 'yang:date-and-time'
- uses: {}
- container:
- capacity:
- uses: {}
- leaf:
- cores:
- type: int16
- default: '0'
- ram:
- type: int32
- default: '0'
- units: MB
- instances:
- type: int16
- default: '0'
- networks:
- type: int16
- default: '0'
- ports:
- type: int16
- default: '0'
- routers:
- type: int16
- default: '0'
- subnets:
- type: int16
- default: '0'
- addresses:
- type: int32
- default: '0'
- gigabytes:
- type: int32
- default: '0'
- units: GB
- snapshots:
- type: int16
- default: '0'
- volumes:
- type: int16
- default: '0'
- leaf-list:
- elements:
- type:
- instance-identifier:
- 'ct:instance-type': 'nfvi:ResourceElement'
- require-instance: true
- description: |-
- Reference to a list of 'pre-existing' resource elements that are
- required for fulfillment of the resource-usage-request.
-
- It can contain any instance derived from ResourceElement,
- such as ServerInstances or even other
- ResourceReservations. If the resource-usage-request is
- accepted, the ResourceElement(s) listed here will be placed
- into 'protected' mode as to prevent accidental removal.
-
- If any of these resource elements become 'unavailable' due to
- environmental or administrative activity, a notification will
- be issued informing of the issue.
- output:
- leaf:
- result:
- type:
- enumeration:
- enum:
- ok:
- value: 0
- conflict:
- value: 1
- error:
- value: 2
- message:
- type: string
- cancel-reservation:
- description: Cancel the reservation and be a good steward
- input:
- leaf:
- reservation-id:
- type:
- instance-identifier:
- 'ct:instance-type': ResourceReservation
- mandatory: true
- output:
- leaf:
- result:
- type:
- enumeration:
- enum:
- ok:
- value: 0
- conflict:
- value: 1
- error:
- value: 2
- message:
- type: string
- query-reservation:
- if-feature: reservation-service
- description: Query the reservation system to return matching reservation(s)
- input:
- leaf:
- zone:
- type:
- instance-identifier:
- 'ct:instance-type': 'nfvi:AvailabilityZone'
- show-utilization:
- type: boolean
- default: 'true'
- uses: {}
- leaf-list:
- without:
- description: Excludes specified collection identifiers from the result
- type:
- instance-identifier:
- 'ct:instance-type': ResourceCollection
- container:
- elements:
- leaf-list:
- some:
- description: Query for ResourceCollection(s) that contain some or more of these element(s)
- type:
- instance-identifier:
- 'ct:instance-type': 'nfvi:ResourceElement'
- every:
- description: Query for ResourceCollection(s) that contain all of these element(s)
- type:
- instance-identifier:
- 'ct:instance-type': 'nfvi:ResourceElement'
- window:
- description: Matches entries that are within the specified start/end time window
- leaf:
- start:
- type: 'yang:date-and-time'
- end:
- type: 'yang:date-and-time'
- scope:
- type:
- enumeration:
- enum:
- exclusive:
- description: Matches entries that start AND end within the window
- value: 0
- inclusive:
- description: Matches entries that start OR end within the window
- value: 1
- default: inclusive
- output:
- leaf-list:
- reservations:
- type:
- instance-identifier:
- 'ct:instance-type': ResourceReservation
- list:
- utilization:
- key: timestamp
- leaf:
- timestamp:
- type: 'yang:date-and-time'
- count:
- type: int16
- container:
- capacity:
- uses: {}
- leaf:
- cores:
- type: int16
- default: '0'
- ram:
- type: int32
- default: '0'
- units: MB
- instances:
- type: int16
- default: '0'
- networks:
- type: int16
- default: '0'
- ports:
- type: int16
- default: '0'
- routers:
- type: int16
- default: '0'
- subnets:
- type: int16
- default: '0'
- addresses:
- type: int32
- default: '0'
- gigabytes:
- type: int32
- default: '0'
- units: GB
- snapshots:
- type: int16
- default: '0'
- volumes:
- type: int16
- default: '0'
- status: unavailable
- increase-capacity:
- description: Increase total capacity for the reservation system between a window in time
- input:
- leaf:
- source:
- type:
- instance-identifier:
- 'ct:instance-type': 'nfvi:ResourceContainer'
- start:
- type: 'yang:date-and-time'
- end:
- type: 'yang:date-and-time'
- container:
- capacity:
- uses: {}
- leaf:
- cores:
- type: int16
- default: '0'
- ram:
- type: int32
- default: '0'
- units: MB
- instances:
- type: int16
- default: '0'
- networks:
- type: int16
- default: '0'
- ports:
- type: int16
- default: '0'
- routers:
- type: int16
- default: '0'
- subnets:
- type: int16
- default: '0'
- addresses:
- type: int32
- default: '0'
- gigabytes:
- type: int32
- default: '0'
- units: GB
- snapshots:
- type: int16
- default: '0'
- volumes:
- type: int16
- default: '0'
- leaf-list:
- elements:
- type:
- instance-identifier:
- 'ct:instance-type': 'nfvi:ResourceElement'
- require-instance: true
- output:
- leaf:
- pool-id:
- type:
- instance-identifier:
- 'ct:instance-type': ResourcePool
- result:
- type:
- enumeration:
- enum:
- ok:
- value: 0
- conflict:
- value: 1
- error:
- value: 2
- message:
- type: string
- decrease-capacity:
- description: Decrease total capacity for the reservation system between a window in time
- input:
- leaf:
- source:
- type:
- instance-identifier:
- 'ct:instance-type': 'nfvi:ResourceContainer'
- start:
- type: 'yang:date-and-time'
- end:
- type: 'yang:date-and-time'
- container:
- capacity:
- uses: {}
- leaf:
- cores:
- type: int16
- default: '0'
- ram:
- type: int32
- default: '0'
- units: MB
- instances:
- type: int16
- default: '0'
- networks:
- type: int16
- default: '0'
- ports:
- type: int16
- default: '0'
- routers:
- type: int16
- default: '0'
- subnets:
- type: int16
- default: '0'
- addresses:
- type: int32
- default: '0'
- gigabytes:
- type: int32
- default: '0'
- units: GB
- snapshots:
- type: int16
- default: '0'
- volumes:
- type: int16
- default: '0'
- leaf-list:
- elements:
- type:
- instance-identifier:
- 'ct:instance-type': 'nfvi:ResourceElement'
- require-instance: true
- output:
- leaf:
- pool-id:
- type:
- instance-identifier:
- 'ct:instance-type': ResourcePool
- result:
- type:
- enumeration:
- enum:
- ok:
- value: 0
- conflict:
- value: 1
- error:
- value: 2
- message:
- type: string
- query-capacity:
- description: Check available capacity information about a specified resource collection
- input:
- leaf:
- capacity:
- type:
- enumeration:
- enum:
- total:
- value: 0
- reserved:
- value: 1
- usage:
- value: 2
- available:
- value: 3
- default: available
- zone:
- type:
- instance-identifier:
- 'ct:instance-type': 'nfvi:AvailabilityZone'
- show-utilization:
- type: boolean
- default: 'true'
- uses: {}
- leaf-list:
- without:
- description: Excludes specified collection identifiers from the result
- type:
- instance-identifier:
- 'ct:instance-type': ResourceCollection
- container:
- elements:
- leaf-list:
- some:
- description: Query for ResourceCollection(s) that contain some or more of these element(s)
- type:
- instance-identifier:
- 'ct:instance-type': 'nfvi:ResourceElement'
- every:
- description: Query for ResourceCollection(s) that contain all of these element(s)
- type:
- instance-identifier:
- 'ct:instance-type': 'nfvi:ResourceElement'
- window:
- description: Matches entries that are within the specified start/end time window
- leaf:
- start:
- type: 'yang:date-and-time'
- end:
- type: 'yang:date-and-time'
- scope:
- type:
- enumeration:
- enum:
- exclusive:
- description: Matches entries that start AND end within the window
- value: 0
- inclusive:
- description: Matches entries that start OR end within the window
- value: 1
- default: inclusive
- output:
- leaf-list:
- collections:
- type:
- instance-identifier:
- 'ct:instance-type': ResourceCollection
- list:
- utilization:
- key: timestamp
- leaf:
- timestamp:
- type: 'yang:date-and-time'
- count:
- type: int16
- container:
- capacity:
- uses: {}
- leaf:
- cores:
- type: int16
- default: '0'
- ram:
- type: int32
- default: '0'
- units: MB
- instances:
- type: int16
- default: '0'
- networks:
- type: int16
- default: '0'
- ports:
- type: int16
- default: '0'
- routers:
- type: int16
- default: '0'
- subnets:
- type: int16
- default: '0'
- addresses:
- type: int32
- default: '0'
- gigabytes:
- type: int32
- default: '0'
- units: GB
- snapshots:
- type: int16
- default: '0'
- volumes:
- type: int16
- default: '0'
- create-instance:
- description: Create an instance of specified resource(s) utilizing capacity from the pool
- input:
- leaf:
- provider-id:
- if-feature: multi-provider
- type:
- instance-identifier:
- 'ct:instance-type': ResourceProvider
- require-instance: true
- status: unavailable
- name:
- type: string
- mandatory: true
- image:
- type:
- union:
- type:
- 'yang:uuid': null
- 'inet:uri': null
- mandatory: true
- flavor:
- type:
- union:
- type:
- 'yang:uuid': null
- 'inet:uri': null
- mandatory: true
- reservation-id:
- type:
- instance-identifier:
- 'ct:instance-type': ResourceReservation
- require-instance: true
- output:
- leaf:
- instance-id:
- type:
- instance-identifier:
- 'ct:instance-type': ResourceAllocation
- result:
- type:
- enumeration:
- enum:
- ok:
- value: 0
- conflict:
- value: 1
- error:
- value: 2
- message:
- type: string
- destroy-instance:
- description: Destroy an instance of resource utilization and release it back to the pool
- input:
- leaf:
- instance-id:
- type:
- instance-identifier:
- 'ct:instance-type': ResourceAllocation
- require-instance: true
- output:
- leaf:
- result:
- type:
- enumeration:
- enum:
- ok:
- value: 0
- conflict:
- value: 1
- error:
- value: 2
- message:
- type: string
- add-provider:
- description: Register a new resource provider into reservation system
- input:
- leaf:
- provider-type:
- description: Select a specific resource provider type
- mandatory: true
- type:
- enumeration:
- enum:
- openstack:
- value: 0
- hp:
- value: 1
- rackspace:
- value: 2
- amazon:
- status: planned
- value: 3
- joyent:
- status: planned
- value: 4
- azure:
- status: planned
- value: 5
- default: openstack
- strategy:
- type:
- enumeration:
- enum:
- oauth:
- value: 0
- keystone:
- value: 1
- default: keystone
- endpoint:
- type: 'inet:uri'
- description: The target endpoint for authentication
- mandatory: true
- default: 'http://localhost:5000/v2.0'
- username:
- type: string
- mandatory: true
- password:
- type: 'acm:password'
- mandatory: true
- uses: {}
- container:
- tenant:
- leaf:
- id:
- type: string
- name:
- type: string
- output:
- leaf:
- provider-id:
- type:
- instance-identifier:
- 'ct:instance-type': ResourceProvider
- result:
- type:
- enumeration:
- enum:
- ok:
- value: 0
- conflict:
- value: 1
- error:
- value: 2
- message:
- type: string
- notification:
- reservation-event: null
- capacity-event: null
- allocation-event: null
-dependencies:
- access-control-models:
- module:
- access-control-models:
- prefix: acm
- namespace: 'urn:opnfv:promise:acm'
- import:
- complex-types:
- prefix: ct
- ietf-yang-types:
- prefix: yang
- ietf-inet-types:
- prefix: inet
- typedef:
- password:
- type:
- string:
- length: 1..255
- grouping:
- access-credentials:
- leaf:
- strategy:
- type:
- enumeration:
- enum:
- oauth:
- value: 0
- keystone:
- value: 1
- default: oauth
- endpoint:
- type: 'inet:uri'
- description: The target endpoint for authentication
- mandatory: true
- username:
- type: string
- mandatory: true
- password:
- type: 'acm:password'
- mandatory: true
- 'ct:complex-type':
- Identity:
- 'ct:abstract': 'true'
- description: Identity represents an administrative access model entity
- key: id
- leaf:
- id:
- type: 'yang:uuid'
- mandatory: true
- name:
- type: string
- mandatory: true
- description:
- type: string
- enabled:
- type: boolean
- default: 'true'
- User:
- 'ct:extends': Identity
- leaf:
- credential:
- type: string
- mandatory: true
- domain:
- type:
- instance-identifier:
- 'ct:instance-type': Domain
- container:
- contact:
- leaf:
- fullName:
- type: string
- email:
- type: string
- leaf-list:
- groups:
- type:
- instance-identifer:
- 'ct:instance-type': Group
- Group:
- 'ct:extends': Identity
- leaf-list:
- users:
- type:
- instance-identifier:
- 'ct:instance-type': User
- leaf:
- domain:
- type:
- instance-identifier:
- 'ct:instance-type': Domain
- Domain:
- 'ct:extends': Identity
- description: |-
- Domain represent a distinct administrative domain across
- collection of users and groups.
- 'ct:instance-list':
- users:
- 'ct:instance-type': User
- groups:
- 'ct:instance-type': Group
- rpc:
- create-user: null
- remove-user: null
- create-group: null
- remove-group: null
- nfv-infrastructure:
- module:
- nfv-infrastructure:
- namespace: 'urn:opnfv:promise:nfv:infrastructure'
- prefix: nfvi
- import:
- access-control-models:
- prefix: acm
- ietf-inet-types:
- prefix: inet
- ietf-yang-types:
- prefix: yang
- complex-types:
- prefix: ct
- description: |-
- NFV Infrastructure Data Models with complex types and typed instance
- identifiers representing the various ResourceElements available
- in the infrastructure across compute, network, and storage.
- revision:
- '2015-10-13':
- description: Introduce capacity and element collection into NFVI models
- '2015-08-07':
- description: |-
- This YANG module is modeled using 'yangforge' which natively provides
- complex types and typed instance identifiers. This module
- provides various collections of resource management data models
- for instance based management
- identity:
- manager:
- description: used by specific modules implementing manager role for NFVI
- grouping:
- compute-capacity:
- leaf:
- cores:
- type: int16
- default: '0'
- ram:
- type: int32
- default: '0'
- units: MB
- instances:
- type: int16
- default: '0'
- network-capacity:
- leaf:
- networks:
- type: int16
- default: '0'
- ports:
- type: int16
- default: '0'
- routers:
- type: int16
- default: '0'
- subnets:
- type: int16
- default: '0'
- addresses:
- type: int32
- default: '0'
- storage-capacity:
- leaf:
- gigabytes:
- type: int32
- default: '0'
- units: GB
- snapshots:
- type: int16
- default: '0'
- volumes:
- type: int16
- default: '0'
- resource-capacity:
- uses: {}
- leaf:
- cores:
- type: int16
- default: '0'
- ram:
- type: int32
- default: '0'
- units: MB
- instances:
- type: int16
- default: '0'
- networks:
- type: int16
- default: '0'
- ports:
- type: int16
- default: '0'
- routers:
- type: int16
- default: '0'
- subnets:
- type: int16
- default: '0'
- addresses:
- type: int32
- default: '0'
- gigabytes:
- type: int32
- default: '0'
- units: GB
- snapshots:
- type: int16
- default: '0'
- volumes:
- type: int16
- default: '0'
- resource-collection:
- description: |-
- Information model capturing parameters for describing a collection of
- resource capacity and resource elements
- container:
- capacity:
- uses: {}
- leaf:
- cores:
- type: int16
- default: '0'
- ram:
- type: int32
- default: '0'
- units: MB
- instances:
- type: int16
- default: '0'
- networks:
- type: int16
- default: '0'
- ports:
- type: int16
- default: '0'
- routers:
- type: int16
- default: '0'
- subnets:
- type: int16
- default: '0'
- addresses:
- type: int32
- default: '0'
- gigabytes:
- type: int32
- default: '0'
- units: GB
- snapshots:
- type: int16
- default: '0'
- volumes:
- type: int16
- default: '0'
- leaf-list:
- elements:
- type:
- instance-identifier:
- 'ct:instance-type': 'nfvi:ResourceElement'
- require-instance: true
- resource-stack:
- description: |-
- Information model describing a NFVI resource stack comprising of
- various resource elements across compute, network, and storage
- 'ct:instance-list':
- hosts:
- 'ct:instance-type': 'nfvi:PhysicalHost'
- hypervisors:
- 'ct:instance-type': 'nfvi:Hypervisor'
- container:
- compute:
- description: Contains compute related resources
- 'ct:instance-list':
- servers:
- 'ct:instance-type': 'nfvi:ServerInstance'
- images:
- 'ct:instance-type': 'nfvi:VirtualMachineImage'
- flavors:
- 'ct:instance-type': 'nfvi:ComputeFlavor'
- network:
- description: Contains networking related resources
- 'ct:instance-list':
- networks:
- 'ct:instance-type': 'nfvi:Network'
- subnets:
- 'ct:instance-type': 'nfvi:SubNetwork'
- ports:
- 'ct:instance-type': 'nfvi:SwitchPort'
- 'ct:complex-type':
- ResourceElement:
- 'ct:abstract': 'true'
- key: id
- leaf:
- id:
- type: 'yang:uuid'
- mandatory: true
- name:
- type: string
- enabled:
- type: boolean
- default: 'true'
- protected:
- type: boolean
- default: 'false'
- owner:
- type:
- instance-identifier:
- 'ct:instance-type': 'acm:Identity'
- visibility:
- description: "Specify visibility level available from the perspective of 'owner'"
- type:
- enumeration:
- enum:
- public:
- value: 0
- domain:
- value: 1
- project:
- value: 2
- group:
- value: 3
- user:
- value: 4
- default: user
- leaf-list:
- tags:
- type: string
- members:
- description: Optionally share with explicit list of members of AccessIdentity complex-type
- type:
- instance-identifier:
- 'ct:instance-type': 'acm:Identity'
- ResourceInstance:
- 'ct:extends': ResourceElement
- 'ct:abstract': 'true'
- leaf:
- status:
- type:
- enumeration:
- enum:
- active:
- value: 0
- inactive:
- value: 1
- pending:
- value: 2
- progress:
- type:
- uint8:
- range: 0..100
- default: '0'
- ResourceContainer:
- 'ct:extends': ResourceInstance
- 'ct:abstract': 'true'
- description: |-
- An abstract resource instance which contains a collection of capacity
- and elements.
- container:
- capacity:
- uses: {}
- leaf:
- cores:
- type: int16
- default: '0'
- ram:
- type: int32
- default: '0'
- units: MB
- instances:
- type: int16
- default: '0'
- networks:
- type: int16
- default: '0'
- ports:
- type: int16
- default: '0'
- routers:
- type: int16
- default: '0'
- subnets:
- type: int16
- default: '0'
- addresses:
- type: int32
- default: '0'
- gigabytes:
- type: int32
- default: '0'
- units: GB
- snapshots:
- type: int16
- default: '0'
- volumes:
- type: int16
- default: '0'
- leaf-list:
- elements:
- type:
- instance-identifier:
- 'ct:instance-type': 'nfvi:ResourceElement'
- require-instance: true
- AvailabilityZone:
- 'ct:extends': ResourceElement
- PhysicalHost:
- 'ct:extends': ResourceElement
- leaf:
- type:
- type: string
- version:
- type: string
- cpu:
- type: uint8
- workload:
- type: uint8
- default: '0'
- uptime:
- type: string
- container:
- ram:
- leaf:
- total:
- type: uint32
- units: MB
- used:
- type: uint32
- units: MB
- free:
- type: uint32
- units: MB
- disk:
- leaf:
- total:
- type: uint32
- units: GB
- used:
- type: uint32
- units: GB
- free:
- type: uint32
- units: GB
- leaf-list:
- hypervisors:
- type:
- instance-identifier:
- 'ct:instance-type': Hypervisor
- Hypervisor:
- 'ct:extends': PhysicalHost
- leaf:
- host:
- type:
- instance-identifier:
- 'ct:instance-type': PhysicalHost
- mandatory: true
- container:
- vcpu:
- leaf:
- total:
- type: uint16
- used:
- type: uint16
- free:
- type: uint16
- leaf-list:
- servers:
- type:
- instance-identifier:
- 'ct:instance-type': ServerInstance
- ComputeElement:
- 'ct:extends': ResourceElement
- 'ct:abstract': 'true'
- container:
- constraint:
- leaf:
- disk:
- type: uint32
- units: GB
- default: '0'
- ram:
- type: uint32
- units: MB
- default: '0'
- vcpu:
- type: uint16
- default: '0'
- leaf-list:
- instances:
- description: State info about instances currently using this resource element
- type:
- instance-identifier:
- 'ct:instance-type': ResourceInstance
- config: false
- VirtualMachineImage:
- 'ct:extends': ComputeElement
- container:
- data:
- leaf:
- checksum:
- type: string
- mandatory: true
- size:
- type: uint32
- units: Bytes
- mandatory: true
- content:
- description: "should be a 'private' property so only direct access retrieves content"
- type: binary
- container:
- format:
- leaf:
- container:
- type:
- enumeration:
- enum:
- ami:
- value: 0
- ari:
- value: 1
- aki:
- value: 2
- bare:
- value: 3
- ovf:
- value: 4
- default: bare
- disk:
- type:
- enumeration:
- enum:
- ami:
- value: 0
- ari:
- value: 1
- aki:
- value: 2
- vhd:
- value: 3
- vmdk:
- value: 4
- raw:
- value: 5
- qcow2:
- value: 6
- vdi:
- value: 7
- iso:
- value: 8
- ComputeFlavor:
- 'ct:extends': ResourceElement
- leaf:
- disk:
- type: uint32
- units: GB
- default: '0'
- ram:
- type: uint32
- units: MB
- default: '0'
- vcpus:
- type: uint16
- default: '0'
- ServerInstance:
- 'ct:extends': ResourceInstance
- leaf:
- flavor:
- type:
- instance-identifier:
- 'ct:instance-type': ComputeFlavor
- mandatory: true
- image:
- type:
- instance-identifier:
- 'ct:instance-type': VirtualMachineImage
- mandatory: true
- host:
- type:
- instance-identifier:
- 'ct:instance-type': PhysicalHost
- leaf-list:
- connections:
- description: |-
- References to collection of NetworkingElement class objects such as
- Network, Subnet, Port, Router that this ServerInstance is
- connected with.
- type:
- instance-identifier:
- 'ct:instance-type': NetworkElement
- NetworkElement:
- 'ct:extends': ResourceElement
- 'ct:abstract': 'true'
- Network:
- 'ct:extends': NetworkElement
- leaf-list:
- subnets:
- type:
- instance-identifier:
- 'ct:instance-type': SubNetwork
- SubNetwork:
- 'ct:extends': NetworkElement
- leaf:
- network:
- type:
- instance-identifier:
- 'ct:instance-type': Network
- leaf-list:
- nameservers:
- type: string
- container:
- dhcp:
- leaf:
- enabled:
- type: boolean
- list:
- pools:
- leaf:
- start:
- type: 'inet:ip-address'
- end:
- type: 'inet:ip-address'
- SwitchPort:
- 'ct:extends': NetworkElement
- leaf:
- subnet:
- type:
- instance-identifier:
- 'ct:instance-type': SubNetwork
-extension:
- module:
- argument: name
- include: 0..n
- prefix: 0..1
- anyxml: 0..n
- augment: 0..n
- choice: 0..n
- contact: 0..1
- container: 0..n
- description: 0..1
- deviation: 0..n
- extension: 0..n
- feature: 0..n
- grouping: 0..n
- identity: 0..n
- import: 0..n
- leaf: 0..n
- leaf-list: 0..n
- list: 0..n
- namespace: 0..1
- notification: 0..n
- organization: 0..1
- reference: 0..1
- revision: 0..n
- rpc: 0..n
- typedef: 0..n
- uses: 0..n
- yang-version: 0..1
- preprocess: !<tag:yaml.org,2002:js/function> |-
- function (arg, params, ctx) {
- var changes, match, ref, synth, target;
- synth = this.require('data-synth');
- ref = params.augment;
- for (target in ref) {
- changes = ref[target];
- match = this.locate(ctx, target);
- if (match == null) {
- continue;
- }
- synth.copy(match, changes);
- }
- return delete this.source[params.prefix];
- }
- construct: !<tag:yaml.org,2002:js/function> |-
- function (arg, params, children, ctx, self) {
- return (self.origin.construct.apply(this, arguments)).merge({
- models: this.resolve('complex-type')
- });
- }
- complex-type: 0..n
- instance: 0..n
- instance-list: 0..n
- origin:
- argument: name
- include: 0..n
- prefix: 0..1
- anyxml: 0..n
- augment: 0..n
- choice: 0..n
- contact: 0..1
- container: 0..n
- description: 0..1
- deviation: 0..n
- extension: 0..n
- feature: 0..n
- grouping: 0..n
- identity: 0..n
- import: 0..n
- leaf: 0..n
- leaf-list: 0..n
- list: 0..n
- namespace: 0..1
- notification: 0..n
- organization: 0..1
- reference: 0..1
- revision: 0..n
- rpc: 0..n
- typedef: 0..n
- uses: 0..n
- yang-version: 0..1
- preprocess: !<tag:yaml.org,2002:js/function> |-
- function (arg, params, ctx) {
- var changes, match, ref, synth, target;
- synth = this.require('data-synth');
- ref = params.augment;
- for (target in ref) {
- changes = ref[target];
- match = this.locate(ctx, target);
- if (match == null) {
- continue;
- }
- synth.copy(match, changes);
- }
- return delete this.source[params.prefix];
- }
- construct: !<tag:yaml.org,2002:js/function> |-
- function (arg, params, children) {
- var k, m, modules, ref, synth, v;
- synth = this.require('data-synth');
- modules = {};
- ref = params["import"];
- for (k in ref) {
- v = ref[k];
- modules[k] = children[k];
- delete children[k];
- }
- m = (synth.Store(params, function() {
- return this.set({
- name: arg,
- modules: modules
- });
- })).bind(children);
- this.define('module', arg, m);
- return m;
- }
- prefix:
- argument: value
- preprocess: !<tag:yaml.org,2002:js/function> |-
- function (arg, params, ctx) {
- return this.source[arg] = this.source;
- }
- include:
- argument: module
- preprocess: !<tag:yaml.org,2002:js/function> |-
- function (arg, params, ctx) {
- var k, m, ref, ref1, ref2, results, v;
- m = this.preprocess(this.resolve('dependencies', arg));
- ref = m.extension;
- for (k in ref) {
- v = ref[k];
- this.define('extension', k, v);
- }
- ref1 = m.typedef;
- for (k in ref1) {
- v = ref1[k];
- this.define('typedef', k, v);
- }
- ref2 = m.schema;
- results = [];
- for (k in ref2) {
- v = ref2[k];
- results.push(ctx[k] = v);
- }
- return results;
- }
- revision-date: 0..1
- augment:
- anyxml: 0..n
- case: 0..n
- choice: 0..n
- container: 0..n
- description: 0..1
- if-feature: 0..n
- leaf: 0..n
- leaf-list: 0..n
- list: 0..n
- reference: 0..1
- status: 0..1
- uses: 0..n
- when: 0..1
- argument: target-node
- belongs-to:
- prefix: 1
- preprocess: !<tag:yaml.org,2002:js/function> |-
- function (arg, params, ctx) {
- return this.source[params.prefix] = this.source;
- }
- argument: module
- bit:
- description: 0..1
- reference: 0..1
- status: 0..1
- position: 0..1
- argument: name
- case:
- anyxml: 0..n
- choice: 0..n
- container: 0..n
- description: 0..1
- if-feature: 0..n
- leaf: 0..n
- leaf-list: 0..n
- list: 0..n
- reference: 0..1
- status: 0..1
- uses: 0..n
- when: 0..1
- argument: name
- choice:
- anyxml: 0..n
- case: 0..n
- config: 0..1
- container: 0..n
- default: 0..1
- description: 0..1
- if-feature: 0..n
- leaf: 0..n
- leaf-list: 0..n
- list: 0..n
- mandatory: 0..1
- reference: 0..1
- status: 0..1
- when: 0..1
- argument: condition
- config:
- preprocess: !<tag:yaml.org,2002:js/function> |-
- function (arg, p, ctx) {
- return ctx.config = arg === true || arg === 'true';
- }
- argument: value
- container:
- anyxml: 0..n
- choice: 0..n
- config: 0..1
- container: 0..n
- description: 0..1
- grouping: 0..n
- if-feature: 0..n
- leaf: 0..n
- leaf-list: 0..n
- list: 0..n
- must: 0..n
- presence: 0..1
- reference: 0..1
- status: 0..1
- typedef: 0..n
- uses: 0..n
- when: 0..1
- construct: !<tag:yaml.org,2002:js/function> |-
- function (arg, params, children) {
- var synth;
- synth = this.require('data-synth');
- return (synth.Object(params)).bind(children);
- }
- argument: name
- instance: 0..n
- instance-list: 0..n
- origin:
- anyxml: 0..n
- choice: 0..n
- config: 0..1
- container: 0..n
- description: 0..1
- grouping: 0..n
- if-feature: 0..n
- leaf: 0..n
- leaf-list: 0..n
- list: 0..n
- must: 0..n
- presence: 0..1
- reference: 0..1
- status: 0..1
- typedef: 0..n
- uses: 0..n
- when: 0..1
- construct: !<tag:yaml.org,2002:js/function> |-
- function (arg, params, children) {
- var synth;
- synth = this.require('data-synth');
- return (synth.Object(params)).bind(children);
- }
- argument: name
- deviate:
- config: 0..1
- default: 0..1
- mandatory: 0..1
- max-elements: 0..1
- min-elements: 0..1
- must: 0..n
- type: 0..1
- unique: 0..1
- units: 0..1
- argument: value
- deviation:
- description: 0..1
- deviate: 1..n
- reference: 0..1
- argument: target-node
- enum:
- description: 0..1
- reference: 0..1
- status: 0..1
- value: 0..1
- preprocess: !<tag:yaml.org,2002:js/function> |-
- function (arg, params, ctx) {
- if (params.value == null) {
- if (this.enumValue == null) {
- this.enumValue = 0;
- }
- params.value = this.enumValue++;
- } else {
- params.value = Number(params.value);
- this.enumValue = params.value + 1;
- }
- return ctx["enum"][arg] = params;
- }
- argument: name
- feature:
- description: 0..1
- if-feature: 0..n
- reference: 0..1
- status: 0..1
- preprocess: !<tag:yaml.org,2002:js/function> |-
- function (arg, params, ctx) {
- if (params.status === 'unavailable') {
- console.warn("feature " + arg + " is unavailable");
- if (typeof ctx.feature === 'object') {
- return delete ctx.feature[arg];
- } else {
- return delete ctx.feature;
- }
- }
- }
- construct: !<tag:yaml.org,2002:js/function> |-
- function (arg, params, children) {
- var feature;
- feature = this.resolve('feature', arg);
- return null;
- }
- argument: name
- grouping:
- anyxml: 0..n
- choice: 0..n
- container: 0..n
- description: 0..1
- grouping: 0..n
- leaf: 0..n
- leaf-list: 0..n
- list: 0..n
- reference: 0..1
- status: 0..1
- typedef: 0..n
- uses: 0..n
- preprocess: !<tag:yaml.org,2002:js/function> |-
- function (arg, params) {
- return this.define('grouping', arg, params);
- }
- argument: name
- instance: 0..n
- instance-list: 0..n
- origin:
- anyxml: 0..n
- choice: 0..n
- container: 0..n
- description: 0..1
- grouping: 0..n
- leaf: 0..n
- leaf-list: 0..n
- list: 0..n
- reference: 0..1
- status: 0..1
- typedef: 0..n
- uses: 0..n
- preprocess: !<tag:yaml.org,2002:js/function> |-
- function (arg, params) {
- return this.define('grouping', arg, params);
- }
- argument: name
- identity:
- base: 0..1
- description: 0..1
- reference: 0..1
- status: 0..1
- preprocess: !<tag:yaml.org,2002:js/function> |-
- function (arg, params) {
- return this.define('identity', arg, params);
- }
- argument: name
- if-feature:
- preprocess: !<tag:yaml.org,2002:js/function> |-
- function (arg, params, ctx) {
- if ((this.resolve('feature', arg)) == null) {
- return ctx.status = 'unavailable';
- }
- }
- argument: name
- import:
- prefix: 1
- revision-date: 0..1
- preprocess: !<tag:yaml.org,2002:js/function> |-
- function (arg, params, ctx) {
- var copy, k, m, original, ref, ref1, rev, schema, source, synth, v;
- synth = this.require('data-synth');
- schema = this.resolve('dependencies', arg, false);
- if (schema == null) {
- console.warn("no explicit dependency for " + arg + " defined, searching local filesystem");
- schema = this.parse("!yang " + arg + ".yang", this.source);
- if (schema != null) {
- this.define('dependencies', arg, schema);
- source = this.source.parent;
- while ((source.parent != null) && source.parent.name !== 'yangforge') {
- source = source.parent;
- }
- if (source.dependencies == null) {
- source.dependencies = {};
- }
- source.dependencies[arg] = schema;
- }
- }
- m = this.preprocess(schema);
- if (m == null) {
- throw this.error("unable to resolve '" + arg + "' in dependencies", 'import');
- }
- rev = params['revision-date'];
- if ((rev != null) && !(rev in m.revision)) {
- throw this.error("requested " + rev + " not available in " + arg, 'import');
- }
- ref = m.extension;
- for (k in ref) {
- v = ref[k];
- if (!(v.override === true)) {
- continue;
- }
- original = this.resolve('extension', k);
- copy = synth.copy({}, v);
- copy.origin = synth.copy({}, (ref1 = original.origin) != null ? ref1 : original);
- delete copy.override;
- this.define('extension', k, copy);
- }
- return this.source[params.prefix] = m;
- }
- construct: !<tag:yaml.org,2002:js/function> |-
- function (arg, params, children, ctx) {
- return this.compile(this.source[params.prefix], this.source);
- }
- argument: module
- input:
- anyxml: 0..n
- choice: 0..n
- container: 0..n
- grouping: 0..n
- leaf: 0..n
- leaf-list: 0..n
- list: 0..n
- typedef: 0..n
- uses: 0..n
- construct: !<tag:yaml.org,2002:js/function> |-
- function (arg, params, children) {
- var synth;
- synth = this.require('data-synth');
- return (synth.Object(params)).bind(children);
- }
- instance: 0..n
- instance-list: 0..n
- origin:
- anyxml: 0..n
- choice: 0..n
- container: 0..n
- grouping: 0..n
- leaf: 0..n
- leaf-list: 0..n
- list: 0..n
- typedef: 0..n
- uses: 0..n
- construct: !<tag:yaml.org,2002:js/function> |-
- function (arg, params, children) {
- var synth;
- synth = this.require('data-synth');
- return (synth.Object(params)).bind(children);
- }
- leaf:
- config: 0..1
- default: 0..1
- description: 0..1
- if-feature: 0..n
- mandatory: 0..1
- must: 0..n
- reference: 0..1
- status: 0..1
- type: 0..1
- units: 0..1
- when: 0..1
- construct: !<tag:yaml.org,2002:js/function> |-
- function (arg, params, children, ctx, self) {
- var synth;
- synth = this.require('data-synth');
- if (params.type['instance-identifier'] != null) {
- return synth.BelongsTo(params, function() {
- return this.set({
- model: children.type
- });
- });
- } else {
- return self.origin.construct.apply(this, arguments);
- }
- }
- argument: name
- origin:
- config: 0..1
- default: 0..1
- description: 0..1
- if-feature: 0..n
- mandatory: 0..1
- must: 0..n
- reference: 0..1
- status: 0..1
- type: 0..1
- units: 0..1
- when: 0..1
- construct: !<tag:yaml.org,2002:js/function> |-
- function (arg, params, children) {
- var synth;
- synth = this.require('data-synth');
- return synth.Property(params, function() {
- if (children.type != null) {
- return this.set({
- type: children.type
- });
- }
- });
- }
- argument: name
- leaf-list:
- config: 0..1
- description: 0..1
- if-feature: 0..n
- max-elements: 0..1
- min-elements: 0..1
- must: 0..n
- ordered-by: 0..1
- reference: 0..1
- status: 0..1
- type: 0..1
- units: 0..1
- when: 0..1
- construct: !<tag:yaml.org,2002:js/function> |-
- function (arg, params, children, ctx, self) {
- var synth;
- synth = this.require('data-synth');
- if (params.type['instance-identifier'] != null) {
- return synth.HasMany(params, function() {
- return this.set({
- model: children.type
- });
- });
- } else {
- return self.origin.construct.apply(this, arguments);
- }
- }
- argument: name
- origin:
- config: 0..1
- description: 0..1
- if-feature: 0..n
- max-elements: 0..1
- min-elements: 0..1
- must: 0..n
- ordered-by: 0..1
- reference: 0..1
- status: 0..1
- type: 0..1
- units: 0..1
- when: 0..1
- construct: !<tag:yaml.org,2002:js/function> |-
- function (arg, params, children) {
- var synth;
- synth = this.require('data-synth');
- return synth.List(params, function() {
- if (children.type != null) {
- return this.set({
- type: children.type
- });
- }
- });
- }
- argument: name
- list:
- anyxml: 0..n
- choice: 0..n
- config: 0..1
- container: 0..n
- description: 0..1
- grouping: 0..n
- if-feature: 0..n
- key: 0..1
- leaf: 0..n
- leaf-list: 0..n
- list: 0..n
- max-elements: 0..1
- min-elements: 0..1
- must: 0..n
- ordered-by: 0..1
- reference: 0..1
- status: 0..1
- typedef: 0..n
- unique: 0..1
- uses: 0..n
- when: 0..1
- construct: !<tag:yaml.org,2002:js/function> |-
- function (arg, params, children) {
- var item, synth;
- synth = this.require('data-synth');
- item = (synth.Object(null)).bind(children);
- return (synth.List(params)).set({
- type: item
- });
- }
- argument: name
- mandatory:
- preprocess: !<tag:yaml.org,2002:js/function> |-
- function (arg, p, ctx) {
- return ctx.mandatory = arg === true || arg === 'true';
- }
- argument: value
- max-elements:
- preprocess: !<tag:yaml.org,2002:js/function> |-
- function (arg, params, ctx) {
- if (arg !== 'unbounded') {
- return ctx['max-elements'] = Number(arg);
- }
- }
- argument: value
- min-elements:
- preprocess: !<tag:yaml.org,2002:js/function> |-
- function (arg, params, ctx) {
- return ctx['min-elements'] = Number(arg);
- }
- argument: value
- must:
- description: 0..1
- error-app-tag: 0..1
- error-message: 0..1
- reference: 0..1
- argument: condition
- notification:
- anyxml: 0..n
- choice: 0..n
- container: 0..n
- description: 0..1
- grouping: 0..n
- if-feature: 0..n
- leaf: 0..n
- leaf-list: 0..n
- list: 0..n
- reference: 0..1
- status: 0..1
- typedef: 0..n
- uses: 0..n
- preprocess: !<tag:yaml.org,2002:js/function> |-
- function (arg, params) {
- return this.define('notification', arg, params);
- }
- argument: event
- output:
- anyxml: 0..n
- choice: 0..n
- container: 0..n
- grouping: 0..n
- leaf: 0..n
- leaf-list: 0..n
- list: 0..n
- typedef: 0..n
- uses: 0..n
- construct: !<tag:yaml.org,2002:js/function> |-
- function (arg, params, children) {
- var synth;
- synth = this.require('data-synth');
- return (synth.Object(params)).bind(children);
- }
- instance: 0..n
- instance-list: 0..n
- origin:
- anyxml: 0..n
- choice: 0..n
- container: 0..n
- grouping: 0..n
- leaf: 0..n
- leaf-list: 0..n
- list: 0..n
- typedef: 0..n
- uses: 0..n
- construct: !<tag:yaml.org,2002:js/function> |-
- function (arg, params, children) {
- var synth;
- synth = this.require('data-synth');
- return (synth.Object(params)).bind(children);
- }
- path:
- preprocess: !<tag:yaml.org,2002:js/function> |-
- function (arg, params, ctx) {
- return ctx.path = arg.replace(/[_]/g, '.');
- }
- argument: value
- pattern:
- construct: !<tag:yaml.org,2002:js/function> |-
- function (arg, params, children, ctx) {
- if (ctx.patterns == null) {
- ctx.patterns = [];
- }
- return ctx.patterns.push(new RegExp(arg));
- }
- argument: value
- refine:
- default: 0..1
- description: 0..1
- reference: 0..1
- config: 0..1
- mandatory: 0..1
- presence: 0..1
- must: 0..n
- min-elements: 0..1
- max-elements: 0..1
- units: 0..1
- argument: target-node
- require-instance:
- preprocess: !<tag:yaml.org,2002:js/function> |-
- function (arg, params, ctx) {
- return ctx['require-instance'] = arg === true || arg === 'true';
- }
- argument: value
- revision:
- description: 0..1
- reference: 0..1
- preprocess: !<tag:yaml.org,2002:js/function> |-
- function (arg, params, ctx) {
- return this.define('revision', arg, params);
- }
- argument: date
- rpc:
- description: 0..1
- grouping: 0..n
- if-feature: 0..n
- input: 0..1
- output: 0..1
- reference: 0..1
- status: 0..1
- typedef: 0..n
- construct: !<tag:yaml.org,2002:js/function> |-
- function (arg, params, children) {
- var func, method, ref, ref1, request, response, synth;
- synth = this.require('data-synth');
- func = this.resolve('rpc', arg, false);
- if (func == null) {
- func = function(input, output, done) {
- return done("No control logic found for '" + arg + "' rpc operation");
- };
- }
- request = (ref = children.input) != null ? ref : synth.Meta;
- response = (ref1 = children.output) != null ? ref1 : synth.Meta;
- method = function(data, resolve, reject) {
- var e, error, input, output;
- if (typeof console.debug === "function") {
- console.debug("executing rpc " + arg + "...");
- }
- try {
- input = new request(data, this);
- output = new response(null, this);
- } catch (error) {
- e = error;
- return reject(e);
- }
- return func.call(this, input, output, function(e) {
- if (e == null) {
- return resolve(output);
- } else {
- return reject(e);
- }
- });
- };
- method.params = params;
- method.input = request;
- method.output = response;
- return method;
- }
- argument: name
- submodule:
- argument: name
- anyxml: 0..n
- augment: 0..n
- belongs-to: 0..1
- choice: 0..n
- contact: 0..1
- container: 0..n
- description: 0..1
- deviation: 0..n
- extension: 0..n
- feature: 0..n
- grouping: 0..n
- identity: 0..n
- import: 0..n
- include: 0..n
- leaf: 0..n
- leaf-list: 0..n
- list: 0..n
- notification: 0..n
- organization: 0..1
- reference: 0..1
- revision: 0..n
- rpc: 0..n
- typedef: 0..n
- uses: 0..n
- yang-version: 0..1
- preprocess: !<tag:yaml.org,2002:js/function> |-
- function (arg, params, ctx) {
- var k, v;
- for (k in params) {
- v = params[k];
- ctx[k] = v;
- }
- return delete ctx.submodule;
- }
- complex-type: 0..n
- instance: 0..n
- instance-list: 0..n
- origin:
- argument: name
- anyxml: 0..n
- augment: 0..n
- belongs-to: 0..1
- choice: 0..n
- contact: 0..1
- container: 0..n
- description: 0..1
- deviation: 0..n
- extension: 0..n
- feature: 0..n
- grouping: 0..n
- identity: 0..n
- import: 0..n
- include: 0..n
- leaf: 0..n
- leaf-list: 0..n
- list: 0..n
- notification: 0..n
- organization: 0..1
- reference: 0..1
- revision: 0..n
- rpc: 0..n
- typedef: 0..n
- uses: 0..n
- yang-version: 0..1
- preprocess: !<tag:yaml.org,2002:js/function> |-
- function (arg, params, ctx) {
- var k, v;
- for (k in params) {
- v = params[k];
- ctx[k] = v;
- }
- return delete ctx.submodule;
- }
- status:
- preprocess: !<tag:yaml.org,2002:js/function> |-
- function (arg, params, ctx) {
- return ctx.status != null ? ctx.status : ctx.status = arg;
- }
- argument: value
- type:
- base: 0..1
- bit: 0..n
- enum: 0..n
- fraction-digits: 0..1
- length: 0..1
- path: 0..1
- pattern: 0..n
- range: 0..1
- require-instance: 0..1
- type: 0..n
- preprocess: !<tag:yaml.org,2002:js/function> |-
- function (arg, params, ctx) {
- return delete this.enumValue;
- }
- construct: !<tag:yaml.org,2002:js/function> |-
- function (arg, params, children, ctx, self) {
- if (children.ctype != null) {
- ctx.type = children.ctype;
- return null;
- } else {
- return self.origin.construct.apply(this, arguments);
- }
- }
- argument: name
- instance-type: 0..1
- origin:
- base: 0..1
- bit: 0..n
- enum: 0..n
- fraction-digits: 0..1
- length: 0..1
- path: 0..1
- pattern: 0..n
- range: 0..1
- require-instance: 0..1
- type: 0..n
- preprocess: !<tag:yaml.org,2002:js/function> |-
- function (arg, params, ctx) {
- return delete this.enumValue;
- }
- construct: !<tag:yaml.org,2002:js/function> |-
- function (arg, params, children, ctx) {
- var key, mparams, ref, ref1, synth, typedef, value;
- synth = this.require('data-synth');
- typedef = this.resolve('typedef', arg);
- if (typedef == null) {
- throw this.error("unable to resolve typedef for " + arg);
- }
- switch (false) {
- case typedef.construct == null:
- ctx.type = typedef.construct(params, this, arguments.callee);
- break;
- case typeof typedef.type !== 'object':
- ref = typedef.type;
- for (key in ref) {
- value = ref[key];
- mparams = synth.copy({}, value);
- synth.copy(mparams, params);
- arguments.callee.call(this, key, mparams, children, ctx);
- }
- break;
- case typeof typedef.type !== 'string':
- arguments.callee.call(this, typedef.type, params, children, ctx);
- }
- if ((ref1 = ctx.type) != null) {
- ref1.toString = function() {
- return arg;
- };
- }
- return null;
- }
- argument: name
- typedef:
- default: 0..1
- description: 0..1
- units: 0..1
- type: 0..1
- reference: 0..1
- preprocess: !<tag:yaml.org,2002:js/function> |-
- function (arg, params) {
- return this.define('typedef', arg, params);
- }
- argument: name
- uses:
- augment: 0..n
- description: 0..1
- if-feature: 0..n
- refine: 0..n
- reference: 0..1
- status: 0..1
- when: 0..1
- preprocess: !<tag:yaml.org,2002:js/function> |-
- function (arg, params, ctx) {
- var changes, grouping, k, match, ref, ref1, synth, target, v;
- synth = this.require('data-synth');
- grouping = synth.copy({}, this.resolve('grouping', arg));
- delete grouping.description;
- delete grouping.reference;
- synth.copy(ctx, grouping);
- ref = params.refine;
- for (target in ref) {
- changes = ref[target];
- match = this.locate(ctx, target);
- if (match == null) {
- continue;
- }
- for (k in changes) {
- v = changes[k];
- match[k] = v;
- }
- }
- ref1 = params.augment;
- for (target in ref1) {
- changes = ref1[target];
- match = this.locate(ctx, target);
- if (match == null) {
- continue;
- }
- synth.copy(match, changes);
- }
- if (typeof ctx.uses === 'object') {
- return delete ctx.uses[arg];
- } else {
- return delete ctx.uses;
- }
- }
- argument: name
- when:
- description: 0..1
- reference: 0..1
- argument: condition
- anyxml: {}
- base:
- argument: name
- contact:
- argument:
- text:
- yin-element: 'true'
- default:
- argument: value
- description:
- argument:
- text:
- yin-element: 'true'
- error-app-tag:
- argument: value
- error-message:
- argument:
- value:
- yin-element: 'true'
- fraction-digits:
- argument: value
- key:
- argument: value
- length:
- argument: value
- namespace:
- argument: uri
- ordered-by:
- argument: value
- organization:
- argument:
- text:
- yin-element: 'true'
- position:
- argument: value
- presence:
- argument: value
- range:
- argument: value
- reference:
- argument:
- text:
- yin-element: 'true'
- revision-date:
- argument: date
- unique:
- argument: tag
- units:
- argument: value
- value:
- argument: value
- yang-version:
- argument: value
- yin-element:
- argument: value
-feature: !<tag:yaml.org,2002:js/undefined> ''
-keywords:
- - opnfv
- - promise
- - vim
- - nfvi
- - infrastructure
- - openstack
- - nbi
- - yangforge
- - resource
- - reservation
- - capacity
- - allocation
-rpc:
- create-reservation: !<tag:yaml.org,2002:js/function> |-
- function (input, output, done) {
- var reservation, reservations;
- reservation = this.create('ResourceReservation');
- reservations = this.access('promise.reservations');
- return reservation.invoke('update', input.get()).then(function(res) {
- return res.save().then(function() {
- reservations.push(res);
- output.set({
- result: 'ok',
- message: 'reservation request accepted'
- });
- output.set('reservation-id', res.id);
- return done();
- })["catch"](function(err) {
- output.set({
- result: 'error',
- message: err
- });
- return done();
- });
- })["catch"](function(err) {
- output.set({
- result: 'conflict',
- message: err
- });
- return done();
- });
- }
- query-reservation: !<tag:yaml.org,2002:js/function> |-
- function (input, output, done) {
- var query;
- query = input.get();
- query.capacity = 'reserved';
- return this.invoke('query-capacity', query).then(function(res) {
- output.set('reservations', res.get('collections'));
- output.set('utilization', res.get('utilization'));
- return done();
- })["catch"](function(e) {
- return done(e);
- });
- }
- update-reservation: !<tag:yaml.org,2002:js/function> |-
- function (input, output, done) {
- var reservation;
- if ((input.get('reservation-id')) == null) {
- output.set({
- result: 'error',
- message: "must provide 'reservation-id' parameter"
- });
- return done();
- }
- reservation = this.find('ResourceReservation', input.get('reservation-id'));
- if (reservation == null) {
- output.set({
- result: 'error',
- message: 'no reservation found for specified identifier'
- });
- return done();
- }
- return reservation.invoke('update', input.get()).then(function(res) {
- return res.save().then(function() {
- output.set({
- result: 'ok',
- message: 'reservation update successful'
- });
- return done();
- })["catch"](function(err) {
- output.set({
- result: 'error',
- message: err
- });
- return done();
- });
- })["catch"](function(err) {
- output.set({
- result: 'conflict',
- message: err
- });
- return done();
- });
- }
- cancel-reservation: !<tag:yaml.org,2002:js/function> |-
- function (input, output, done) {
- var reservation;
- reservation = this.find('ResourceReservation', input.get('reservation-id'));
- if (reservation == null) {
- output.set({
- result: 'error',
- message: 'no reservation found for specified identifier'
- });
- return done();
- }
- return reservation.destroy().then((function(_this) {
- return function() {
- (_this.access('promise.reservations')).remove(reservation.id);
- output.set('result', 'ok');
- output.set('message', 'reservation canceled');
- return done();
- };
- })(this))["catch"](function(e) {
- output.set('result', 'error');
- output.set('message', e);
- return done();
- });
- }
- query-capacity: !<tag:yaml.org,2002:js/function> |-
- function (input, output, done) {
- var collections, deltas, entry, k, last, matches, metric, timestamp, usages, v, window;
- window = input.get('window');
- metric = input.get('capacity');
- collections = (function() {
- switch (metric) {
- case 'total':
- return ['ResourcePool'];
- case 'reserved':
- return ['ResourceReservation'];
- case 'usage':
- return ['ResourceAllocation'];
- case 'available':
- return ['ResourcePool', 'ResourceReservation', 'ResourceAllocation'];
- }
- })();
- matches = collections.reduce(((function(_this) {
- return function(a, name) {
- var res;
- res = _this.find(name, {
- start: function(value) {
- return (window.end == null) || (new Date(value)) <= (new Date(window.end));
- },
- end: function(value) {
- return (window.start == null) || (new Date(value)) >= (new Date(window.start));
- },
- enabled: true
- });
- return a.concat.apply(a, res);
- };
- })(this)), []);
- if (window.scope === 'exclusive') {
- matches = matches.where({
- start: function(value) {
- return (window.start == null) || (new Date(value)) >= (new Date(window.start));
- },
- end: function(value) {
- return (window.end == null) || (new Date(value)) <= (new Date(window.end));
- }
- });
- }
- matches = matches.without({
- id: input.get('without')
- });
- if (metric === 'available') {
- matches = matches.without({
- reservation: function(v) {
- return v != null;
- }
- });
- }
- output.set('collections', matches);
- if ((input.get('show-utilization')) !== true) {
- return done();
- }
- deltas = matches.reduce((function(a, entry) {
- var b, base, base1, ekey, k, ref1, ref2, skey, v;
- b = entry.get();
- if (b.end == null) {
- b.end = 'infiniteT';
- }
- ref1 = [(b.start.split('T'))[0], (b.end.split('T'))[0]], skey = ref1[0], ekey = ref1[1];
- if (a[skey] == null) {
- a[skey] = {
- count: 0,
- capacity: {}
- };
- }
- if (a[ekey] == null) {
- a[ekey] = {
- count: 0,
- capacity: {}
- };
- }
- a[skey].count += 1;
- a[ekey].count -= 1;
- ref2 = b.capacity;
- for (k in ref2) {
- v = ref2[k];
- if (!(v != null)) {
- continue;
- }
- if ((base = a[skey].capacity)[k] == null) {
- base[k] = 0;
- }
- if ((base1 = a[ekey].capacity)[k] == null) {
- base1[k] = 0;
- }
- if (entry.name === 'ResourcePool') {
- a[skey].capacity[k] += v;
- a[ekey].capacity[k] -= v;
- } else {
- a[skey].capacity[k] -= v;
- a[ekey].capacity[k] += v;
- }
- }
- return a;
- }), {});
- last = {
- count: 0,
- capacity: {}
- };
- usages = (function() {
- var i, len, ref1, ref2, ref3, results;
- ref1 = Object.keys(deltas).sort();
- results = [];
- for (i = 0, len = ref1.length; i < len; i++) {
- timestamp = ref1[i];
- if (!(timestamp !== 'infinite')) {
- continue;
- }
- entry = deltas[timestamp];
- entry.timestamp = (new Date(timestamp)).toJSON();
- entry.count += last.count;
- ref2 = entry.capacity;
- for (k in ref2) {
- v = ref2[k];
- entry.capacity[k] += (ref3 = last.capacity[k]) != null ? ref3 : 0;
- }
- last = entry;
- results.push(entry);
- }
- return results;
- })();
- output.set('utilization', usages);
- return done();
- }
- increase-capacity: !<tag:yaml.org,2002:js/function> |-
- function (input, output, done) {
- var pool;
- pool = this.create('ResourcePool', input.get());
- return pool.save().then((function(_this) {
- return function(res) {
- (_this.access('promise.pools')).push(res);
- output.set({
- result: 'ok',
- message: 'capacity increase successful'
- });
- output.set('pool-id', res.id);
- return done();
- };
- })(this))["catch"](function(e) {
- output.set({
- result: 'error',
- message: e
- });
- return done();
- });
- }
- decrease-capacity: !<tag:yaml.org,2002:js/function> |-
- function (input, output, done) {
- var k, pool, ref1, request, v;
- request = input.get();
- ref1 = request.capacity;
- for (k in ref1) {
- v = ref1[k];
- request.capacity[k] = -v;
- }
- pool = this.create('ResourcePool', request);
- return pool.save().then((function(_this) {
- return function(res) {
- (_this.access('promise.pools')).push(res);
- output.set({
- result: 'ok',
- message: 'capacity decrease successful'
- });
- output.set('pool-id', res.id);
- return done();
- };
- })(this))["catch"](function(e) {
- output.set({
- result: 'error',
- message: e
- });
- return done();
- });
- }
- create-instance: !<tag:yaml.org,2002:js/function> |-
- function (input, output, done) {
- var available, flavor, k, pid, provider, required, reservation, rid, v;
- pid = input.get('provider-id');
- if (pid != null) {
- provider = this.find('ResourceProvider', pid);
- if (provider == null) {
- output.set({
- result: 'error',
- message: "no matching provider found for specified identifier: " + pid
- });
- return done();
- }
- } else {
- provider = (this.find('ResourceProvider'))[0];
- if (provider == null) {
- output.set({
- result: 'error',
- message: "no available provider found for create-instance"
- });
- return done();
- }
- }
- flavor = provider.access("services.compute.flavors." + (input.get('flavor')));
- if (flavor == null) {
- output.set({
- result: 'error',
- message: "no such flavor found for specified identifier: " + pid
- });
- return done();
- }
- required = {
- instances: 1,
- cores: flavor.get('vcpus'),
- ram: flavor.get('ram'),
- gigabytes: flavor.get('disk')
- };
- rid = input.get('reservation-id');
- if (rid != null) {
- reservation = this.find('ResourceReservation', rid);
- if (reservation == null) {
- output.set({
- result: 'error',
- message: 'no valid reservation found for specified identifier'
- });
- return done();
- }
- if ((reservation.get('active')) !== true) {
- output.set({
- result: 'error',
- message: "reservation is currently not active"
- });
- return done();
- }
- available = reservation.get('remaining');
- } else {
- available = this.get('promise.capacity.available');
- }
- for (k in required) {
- v = required[k];
- if ((v != null) && !!v) {
- if (!(available[k] >= v)) {
- output.set({
- result: 'conflict',
- message: "required " + k + "=" + v + " exceeds available " + available[k]
- });
- return done();
- }
- }
- }
- return this.create('ResourceAllocation', {
- reservation: rid,
- capacity: required
- }).save().then((function(_this) {
- return function(instance) {
- var request, url;
- url = provider.get('services.compute.endpoint');
- request = _this.parent.require('superagent');
- request.post(url + "/servers").send({
- server: {
- name: input.get('name'),
- imageRef: input.get('image'),
- flavorRef: input.get('flavor')
- }
- }).set('X-Auth-Token', provider.get('token')).set('Accept', 'application/json').end(function(err, res) {
- if ((err != null) || !res.ok) {
- instance.destroy();
- console.error(err);
- return done(res.error);
- }
- instance.set('instance-ref', {
- provider: provider,
- server: res.body.server.id
- });
- (_this.access('promise.allocations')).push(instance);
- output.set({
- result: 'ok',
- message: 'create-instance request accepted'
- });
- output.set('instance-id', instance.id);
- return done();
- });
- return instance;
- };
- })(this))["catch"](function(err) {
- output.set({
- result: 'error',
- mesage: err
- });
- return done();
- });
- }
- destroy-instance: !<tag:yaml.org,2002:js/function> |-
- function (input, output, done) {
- var instance;
- instance = this.find('ResourceAllocation', input.get('instance-id'));
- if (instance == null) {
- output.set({
- result: 'error',
- message: 'no allocation found for specified identifier'
- });
- return done();
- }
- return instance.destroy().then((function(_this) {
- return function() {
- var provider, ref, request, url;
- (_this.access('promise.allocations')).remove(instance.id);
- ref = instance.get('instance-ref');
- provider = _this.access("promise.providers." + ref.provider);
- url = provider.get('services.compute.endpoint');
- request = _this.parent.require('superagent');
- request["delete"](url + "/servers/" + ref.server).set('X-Auth-Token', provider.get('token')).set('Accept', 'application/json').end(function(err, res) {
- if ((err != null) || !res.ok) {
- console.error(err);
- return done(res.error);
- }
- output.set('result', 'ok');
- output.set('message', 'instance destroyed and resource released back to pool');
- return done();
- });
- return instance;
- };
- })(this))["catch"](function(e) {
- output.set('result', 'error');
- output.set('message', e);
- return done();
- });
- }
- add-provider: !<tag:yaml.org,2002:js/function> "function (input, output, done) {\n var app, payload, providers, request, url;\n app = this.parent;\n request = app.require('superagent');\n payload = (function() {\n switch (input.get('provider-type')) {\n case 'openstack':\n return {\n auth: {\n tenantId: input.get('tenant.id'),\n tenantName: input.get('tenant.name'),\n passwordCredentials: input.get('username', 'password')\n }\n };\n }\n })();\n if (payload == null) {\n return done('Sorry, only openstack supported at this time');\n }\n url = input.get('endpoint');\n switch (input.get('strategy')) {\n case 'keystone':\n case 'oauth':\n if (!/\\/tokens$/.test(url)) {\n url += '/tokens';\n }\n }\n providers = this.access('promise.providers');\n return request.post(url).send(payload).set('Accept', 'application/json').end((function(_this) {\n return function(err, res) {\n var access, provider, ref1, ref2, ref3;\n if ((err != null) || !res.ok) {\n return done(res.error);\n }\n access = res.body.access;\n provider = _this.create('ResourceProvider', {\n token: access != null ? (ref1 = access.token) != null ? ref1.id : void 0 : void 0,\n name: access != null ? (ref2 = access.token) != null ? (ref3 = ref2.tenant) != null ? ref3.name : void 0 : void 0 : void 0\n });\n return provider.invoke('update', access.serviceCatalog).then(function(res) {\n return res.save().then(function() {\n providers.push(res);\n output.set('result', 'ok');\n output.set('provider-id', res.id);\n return done();\n })[\"catch\"](function(err) {\n output.set('error', {\n message: err\n });\n return done();\n });\n })[\"catch\"](function(err) {\n output.set('error', {\n message: err\n });\n return done();\n });\n };\n })(this));\n }"
-typedef: !<tag:yaml.org,2002:js/undefined> ''
-complex-type:
- ResourceElement:
- id: !<tag:yaml.org,2002:js/function> |-
- function (prev) {
- return prev.set('default', function() {
- return this.uuid();
- });
- }
- ResourceCollection:
- id:
- - !<tag:yaml.org,2002:js/function> |-
- function (prev) {
- return prev.set('default', function() {
- return this.uuid();
- });
- }
- start:
- - !<tag:yaml.org,2002:js/function> |-
- function (prev) {
- return prev.set('default', function() {
- return (new Date).toJSON();
- });
- }
- active:
- - !<tag:yaml.org,2002:js/function> |-
- function (prev) {
- return this.computed((function() {
- var end, now, start;
- now = new Date;
- start = new Date(this.get('start'));
- end = (function() {
- switch (false) {
- case (this.get('end')) == null:
- return new Date(this.get('end'));
- default:
- return now;
- }
- }).call(this);
- return (this.get('enabled')) && ((start <= now && now <= end));
- }), {
- type: prev
- });
- }
- ResourceReservation:
- id:
- - !<tag:yaml.org,2002:js/function> |-
- function (prev) {
- return prev.set('default', function() {
- return this.uuid();
- });
- }
- start:
- - !<tag:yaml.org,2002:js/function> |-
- function (prev) {
- return prev.set('default', function() {
- return (new Date).toJSON();
- });
- }
- active:
- - !<tag:yaml.org,2002:js/function> |-
- function (prev) {
- return this.computed((function() {
- var end, now, start;
- now = new Date;
- start = new Date(this.get('start'));
- end = (function() {
- switch (false) {
- case (this.get('end')) == null:
- return new Date(this.get('end'));
- default:
- return now;
- }
- }).call(this);
- return (this.get('enabled')) && ((start <= now && now <= end));
- }), {
- type: prev
- });
- }
- end:
- - !<tag:yaml.org,2002:js/function> |-
- function (prev) {
- return prev.set('default', function() {
- var end, max;
- end = new Date(this.get('start'));
- max = this.parent.get('promise.policy.reservation.max-duration');
- if (max == null) {
- return;
- }
- end.setTime(end.getTime() + (max * 60 * 60 * 1000));
- return end.toJSON();
- });
- }
- allocations:
- - !<tag:yaml.org,2002:js/function> |-
- function (prev) {
- return this.computed((function() {
- var res;
- res = this.store.find('ResourceAllocation', {
- reservation: this.id
- });
- return res.map(function(x) {
- return x.get('id');
- });
- }), {
- type: 'array'
- });
- }
- remaining:
- - !<tag:yaml.org,2002:js/function> |-
- function (prev) {
- return this.computed((function() {
- var entry, i, k, len, records, total, usage, v;
- total = this.get('capacity');
- records = this.store.find('ResourceAllocation', {
- id: this.get('allocations'),
- active: true
- });
- for (i = 0, len = records.length; i < len; i++) {
- entry = records[i];
- usage = entry.get('capacity');
- for (k in usage) {
- v = usage[k];
- total[k] -= v;
- }
- }
- return total;
- }), {
- type: prev
- });
- }
- validate:
- - !<tag:yaml.org,2002:js/function> |-
- function (prev) {
- return function(value, resolve, reject) {
- var end, hasCapacity, k, now, ref, start, v;
- if (value == null) {
- value = {};
- }
- ref = value.capacity;
- for (k in ref) {
- v = ref[k];
- if ((v != null) && !!v) {
- hasCapacity = true;
- }
- }
- if ((!hasCapacity) && value.elements.length === 0) {
- return reject("unable to validate reservation record without anything being reserved");
- }
- now = new Date;
- if (value.start != null) {
- start = new Date(value.start);
- }
- if (value.end != null) {
- end = new Date(value.end);
- }
- if ((end != null) && end < now) {
- return reject("requested end time " + value.end + " cannot be in the past");
- }
- if ((start != null) && (end != null) && start > end) {
- retun(reject("requested start time must be earlier than end time"));
- }
- return resolve(this);
- };
- }
- update:
- - !<tag:yaml.org,2002:js/function> |-
- function (prev) {
- return function(req, resolve, reject) {
- if (req.start == null) {
- req.start = this.get('start');
- }
- if (req.end == null) {
- req.end = this.get('end');
- }
- return this.parent.invoke('query-capacity', {
- start: req.start,
- end: req.end,
- capacity: 'available',
- without: this.id
- }).then((function(_this) {
- return function(res) {
- var available, collections, end, entries, i, k, pools, ref, ref1, start, t1, t2, v, x;
- collections = res.get('collections');
- if (!(collections.length > 0)) {
- return reject('no resource capacity available during requested start/end time');
- }
- pools = collections.filter(function(e) {
- return /^ResourcePool/.test(e);
- });
- entries = res.get('utilization');
- start = new Date(req.start);
- end = new Date(req.end);
- for (x = i = 0, ref = entries.length - 1; 0 <= ref ? i <= ref : i >= ref; x = 0 <= ref ? ++i : --i) {
- t1 = new Date(entries[x].timestamp);
- if (!(t1 < end)) {
- break;
- }
- if (x < entries.length - 1) {
- t2 = new Date(entries[x + 1].timestamp);
- if (!(t2 > start)) {
- continue;
- }
- }
- available = entries[x].capacity;
- ref1 = req.capacity;
- for (k in ref1) {
- v = ref1[k];
- if ((v != null) && !!v) {
- if (!(available[k] >= v)) {
- return reject("requested " + k + "=" + v + " exceeds available " + available[k] + " between " + t1 + " and " + t2);
- }
- }
- }
- }
- _this.set(req);
- _this.set('pools', pools);
- return resolve(_this);
- };
- })(this))["catch"](function(err) {
- return reject(err);
- });
- };
- }
- save:
- - !<tag:yaml.org,2002:js/function> |-
- function (prev) {
- return function(resolve, reject) {
- return this.invoke('validate', this.get()).then(function(res) {
- var now;
- now = (new Date).toJSON();
- if ((res.get('created-on')) == null) {
- res.set('created-on', now);
- }
- res.set('modified-on', now);
- return resolve(res);
- })["catch"](function(e) {
- return reject(e);
- });
- };
- }
- ResourceAllocation:
- id:
- - !<tag:yaml.org,2002:js/function> |-
- function (prev) {
- return prev.set('default', function() {
- return this.uuid();
- });
- }
- start:
- - !<tag:yaml.org,2002:js/function> |-
- function (prev) {
- return prev.set('default', function() {
- return (new Date).toJSON();
- });
- }
- active:
- - !<tag:yaml.org,2002:js/function> |-
- function (prev) {
- return this.computed((function() {
- var end, now, start;
- now = new Date;
- start = new Date(this.get('start'));
- end = (function() {
- switch (false) {
- case (this.get('end')) == null:
- return new Date(this.get('end'));
- default:
- return now;
- }
- }).call(this);
- return (this.get('enabled')) && ((start <= now && now <= end));
- }), {
- type: prev
- });
- }
- priority:
- - !<tag:yaml.org,2002:js/function> |-
- function (prev) {
- return this.computed((function() {
- switch (false) {
- case !((this.get('reservation')) == null):
- return 3;
- case !!(this.get('active')):
- return 2;
- default:
- return 1;
- }
- }), {
- type: prev
- });
- }
- ResourcePool:
- id:
- - !<tag:yaml.org,2002:js/function> |-
- function (prev) {
- return prev.set('default', function() {
- return this.uuid();
- });
- }
- start:
- - !<tag:yaml.org,2002:js/function> |-
- function (prev) {
- return prev.set('default', function() {
- return (new Date).toJSON();
- });
- }
- active:
- - !<tag:yaml.org,2002:js/function> |-
- function (prev) {
- return this.computed((function() {
- var end, now, start;
- now = new Date;
- start = new Date(this.get('start'));
- end = (function() {
- switch (false) {
- case (this.get('end')) == null:
- return new Date(this.get('end'));
- default:
- return now;
- }
- }).call(this);
- return (this.get('enabled')) && ((start <= now && now <= end));
- }), {
- type: prev
- });
- }
- save:
- - !<tag:yaml.org,2002:js/function> |-
- function (prev) {
- return function(resolve, reject) {
- var hasCapacity, k, ref, v, value;
- value = this.get();
- ref = value.capacity;
- for (k in ref) {
- v = ref[k];
- if ((v != null) && !!v) {
- hasCapacity = true;
- }
- }
- if ((!hasCapacity) && value.elements.length === 0) {
- return reject("unable to save pool record without any capacity values");
- }
- return resolve(this);
- };
- }
- ResourceProvider:
- id:
- - !<tag:yaml.org,2002:js/function> |-
- function (prev) {
- return prev.set('default', function() {
- return this.uuid();
- });
- }
- token:
- - !<tag:yaml.org,2002:js/function> |-
- function (prev) {
- return prev.set('private', true);
- }
- pools:
- - !<tag:yaml.org,2002:js/function> |-
- function (prev) {
- return this.computed((function() {
- return (this.store.find('ResourcePool', {
- source: this.get('name')
- })).map(function(x) {
- return x.get('id');
- });
- }), {
- type: 'array'
- });
- }
- update:
- - !<tag:yaml.org,2002:js/function> |-
- function (prev) {
- return function(services, resolve, reject) {
- var request;
- if (services == null) {
- services = [];
- }
- if (!services.length) {
- return reject("unable to update provider without list of services");
- }
- request = this.store.parent.require('superagent');
- services.forEach((function(_this) {
- return function(service) {
- var url;
- switch (service.type) {
- case 'compute':
- url = service.endpoints[0].publicURL;
- _this.set('services.compute.endpoint', url);
- request.get(url + "/limits").set('X-Auth-Token', _this.get('token')).set('Accept', 'application/json').end(function(err, res) {
- var capacity, ref;
- if ((err != null) || !res.ok) {
- console.warn("request to discover capacity limits failed");
- return;
- }
- capacity = (ref = res.body.limits) != null ? ref.absolute : void 0;
- return (_this.access('capacity')).set({
- cores: capacity.maxTotalCores,
- ram: capacity.maxTotalRAMSize,
- instances: capacity.maxTotalInstances,
- addresses: capacity.maxTotalFloatingIps
- });
- });
- return request.get(url + "/flavors/detail").set('X-Auth-Token', _this.get('token')).set('Accept', 'application/json').end(function(err, res) {
- var er, error, flavors, ref;
- if ((err != null) || !res.ok) {
- console.warn("request to discover compute flavors failed");
- return;
- }
- flavors = res.body.flavors;
- try {
- flavors = flavors.map(function(x) {
- return {
- ResourceFlavor: x
- };
- });
- return (ref = _this.access('services.compute.flavors')).push.apply(ref, flavors);
- } catch (error) {
- er = error;
- return console.warn("failed to update flavors into the provider due to validation errors");
- }
- });
- }
- };
- })(this));
- return resolve(this);
- };
- }
- ResourceFlavor: !<tag:yaml.org,2002:js/undefined> ''
-pkgdir: /home/plee/hack/opnfv-promise
-module:
- opnfv-promise:
- promise.capacity.total:
- - !<tag:yaml.org,2002:js/function> |-
- function (prev) {
- return this.computed((function() {
- var combine;
- combine = function(a, b) {
- var k, ref, v;
- ref = b.capacity;
- for (k in ref) {
- v = ref[k];
- if (!(v != null)) {
- continue;
- }
- if (a[k] == null) {
- a[k] = 0;
- }
- a[k] += v;
- }
- return a;
- };
- return (this.parent.get('pools')).filter(function(entry) {
- return entry.active === true;
- }).reduce(combine, {});
- }), {
- type: prev
- });
- }
- promise.capacity.reserved:
- - !<tag:yaml.org,2002:js/function> |-
- function (prev) {
- return this.computed((function() {
- var combine;
- combine = function(a, b) {
- var k, ref, v;
- ref = b.remaining;
- for (k in ref) {
- v = ref[k];
- if (!(v != null)) {
- continue;
- }
- if (a[k] == null) {
- a[k] = 0;
- }
- a[k] += v;
- }
- return a;
- };
- return (this.parent.get('reservations')).filter(function(entry) {
- return entry.active === true;
- }).reduce(combine, {});
- }), {
- type: prev
- });
- }
- promise.capacity.usage:
- - !<tag:yaml.org,2002:js/function> |-
- function (prev) {
- return this.computed((function() {
- var combine;
- combine = function(a, b) {
- var k, ref, v;
- ref = b.capacity;
- for (k in ref) {
- v = ref[k];
- if (!(v != null)) {
- continue;
- }
- if (a[k] == null) {
- a[k] = 0;
- }
- a[k] += v;
- }
- return a;
- };
- return (this.parent.get('allocations')).filter(function(entry) {
- return entry.active === true;
- }).reduce(combine, {});
- }), {
- type: prev
- });
- }
- promise.capacity.available:
- - !<tag:yaml.org,2002:js/function> |-
- function (prev) {
- return this.computed((function() {
- var k, reserved, total, usage, v;
- total = this.get('total');
- reserved = this.get('reserved');
- usage = this.get('usage');
- for (k in total) {
- v = total[k];
- if (!(v != null)) {
- continue;
- }
- if (reserved[k] != null) {
- total[k] -= reserved[k];
- }
- if (usage[k] != null) {
- total[k] -= usage[k];
- }
- }
- return total;
- }), {
- type: prev
- });
- }
-config: !<tag:yaml.org,2002:js/undefined> ''