/* * * Copyright 2016-2017 RIFT.IO Inc * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ module rw-resource-mgr { namespace "http://riftio.com/ns/riftware-1.0/rw-resource-mgr"; prefix "rw-resource-mgr"; import rw-cli-ext { prefix "rwcli"; } import rw-yang-types { prefix "rwt"; } import rw-cloud { prefix "rw-cloud"; } import rwcal { prefix "rwcal"; } import ietf-yang-types { prefix "yang"; } import mano-types { prefix "manotypes"; } import rw-project { prefix "rw-project"; } import rw-project-mano { prefix "rw-project-mano"; } revision 2017-02-08 { description "Update model to support projects."; } revision 2015-10-16 { description "Initial revision."; } grouping resource-pool-info { leaf name { description "Name of the resource pool"; type string; //mandatory true; } leaf resource-type { description "Type of resource"; type enumeration { enum compute; enum network; } } leaf pool-type { description "Type of pool"; type enumeration { enum static; enum dynamic; } default "static"; } leaf max-size { description "Maximum size to which a dynamic resource pool can grow"; type uint32; } } augment "/rw-project:project" { container resource-mgr-config { description "Data model for configuration of resource-mgr"; config true; container management-domain { leaf name { description "The management domain name this launchpad is associated with."; type string; //mandatory true; } } container resource-pools { description "Resource Pool configuration"; list cloud-account { key "name"; leaf name { description "Resource pool for the configured cloud account"; type leafref { path "../../../../rw-cloud:cloud/rw-cloud:account/rw-cloud:name"; } } } } } } grouping resource-state { leaf resource-state { type enumeration { enum inactive; enum active; enum pending; enum failed; } } leaf resource-errors { description "Error message details in case of failed resource state"; type string; } } augment "/rw-project:project" { container resource-mgmt { description "Resource management "; config false; container vdu-event { description "Events for VDU Management"; list vdu-event-data { key "event-id"; leaf event-id { description "Identifier associated with the VDU transaction"; type yang:uuid; } leaf cloud-account { description "The cloud account to use for this resource request"; type leafref { path "../../../../rw-cloud:cloud/rw-cloud:account/rw-cloud:name"; } } container request-info { description "Information about required resource"; uses rwcal:vdu-create-params; } container resource-info { description "Information about allocated resource"; leaf pool-name { type string; } uses resource-state; uses rwcal:vdu-info-params; } } } container vlink-event { description "Events for Virtual Link management"; list vlink-event-data { key "event-id"; leaf event-id { description "Identifier associated with the Virtual Link transaction"; type yang:uuid; } leaf cloud-account { description "The cloud account to use for this resource request"; type leafref { path "../../../../rw-cloud:cloud/rw-cloud:account/rw-cloud:name"; } } container request-info { description "Information about required resource"; uses rwcal:virtual-link-create-params; } container resource-info { leaf pool-name { type string; } uses resource-state; uses rwcal:virtual-link-info-params; } } } } } augment "/rw-project:project" { container resource-pool-records { description "Resource Pool Records"; config false; list cloud-account { key "name"; leaf name { description "The configured cloud account's pool records."; type leafref { path "../../../rw-cloud:cloud/rw-cloud:account/rw-cloud:name"; } } list records { key "name"; uses resource-pool-info; leaf pool-status { type enumeration { enum unknown; enum locked; enum unlocked; } } leaf total-resources { type uint32; } leaf free-resources { type uint32; } leaf allocated-resources { type uint32; } } } } } augment "/rw-project:project" { container resource-mgr-data { description "Resource Manager operational data"; config false; container pool-record { description "Resource Pool record"; list cloud { key "name"; max-elements 16; leaf name { description "The configured cloud account's pool records."; type leafref { path "../../../../rw-cloud:cloud/rw-cloud:account/rw-cloud:name"; } } list records { key "name"; uses resource-pool-info; list free-vdu-list { key vdu-id; uses rwcal:vdu-info-params; } list in-use-vdu-list { key vdu-id; uses rwcal:vdu-info-params; } list free-vlink-list { key virtual-link-id; uses rwcal:virtual-link-info-params; } list in-use-vlink-list { key virtual-link-id; uses rwcal:virtual-link-info-params; } } } } } } augment "/rw-project:project/resource-mgmt/vdu-event/vdu-event-data/request-info/vm-flavor" { uses manotypes:vm-flavor-name; } }