--- /dev/null
+
+/*
+ *
+ * Copyright 2016 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-pb-ext {
+ prefix "rwpb";
+ }
+
+ import rw-cli-ext {
+ prefix "rwcli";
+ }
+
+ import rw-yang-types {
+ prefix "rwt";
+ }
+
+ import rw-cloud {
+ prefix "rwcloud";
+ }
+
+ import rwcal {
+ prefix "rwcal";
+ }
+
+ import ietf-yang-types {
+ prefix "yang";
+ }
+
+ import mano-types {
+ prefix "manotypes";
+ }
+
+ revision 2015-10-16 {
+ description
+ "Initial revision.";
+ }
+
+ grouping resource-pool-info {
+ leaf name {
+ description "Name of the resource pool";
+ rwpb:field-inline "true";
+ rwpb:field-string-max 64;
+ 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;
+ }
+
+ }
+
+ container resource-mgr-config {
+ description "Data model for configuration of resource-mgr";
+ rwpb:msg-new ResourceManagerConfig;
+ config true;
+
+ container management-domain {
+ leaf name {
+ description "The management domain name this launchpad is associated with.";
+ rwpb:field-inline "true";
+ rwpb:field-string-max 64;
+ type string;
+ //mandatory true;
+ }
+ }
+
+ container resource-pools {
+ description "Resource Pool configuration";
+ rwpb:msg-new ResourcePools;
+ list cloud-account {
+ key "name";
+ leaf name {
+ description
+ "Resource pool for the configured cloud account";
+ type leafref {
+ path "/rwcloud:cloud/rwcloud:account/rwcloud: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;
+ }
+ }
+
+ container resource-mgmt {
+ description "Resource management ";
+ config false;
+
+ container vdu-event {
+ description "Events for VDU Management";
+ rwpb:msg-new VDUEvent;
+
+ list vdu-event-data {
+ rwpb:msg-new VDUEventData;
+ 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 "/rwcloud:cloud/rwcloud:account/rwcloud: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";
+ rwpb:msg-new VirtualLinkEvent;
+
+ list vlink-event-data {
+ rwpb:msg-new VirtualLinkEventData;
+
+ 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 "/rwcloud:cloud/rwcloud:account/rwcloud: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;
+ }
+ }
+ }
+ }
+
+
+ container resource-pool-records {
+ description "Resource Pool Records";
+ rwpb:msg-new ResourcePoolRecords;
+ config false;
+
+ list cloud-account {
+ key "name";
+ leaf name {
+ description
+ "The configured cloud account's pool records.";
+ type leafref {
+ path "/rwcloud:cloud/rwcloud:account/rwcloud:name";
+ }
+ }
+
+ list records {
+ rwpb:msg-new ResourceRecordInfo;
+ 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;
+ }
+ }
+ }
+ }
+
+
+ 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;
+ rwpb:msg-new "ResmgrCloudPoolRecords";
+ leaf name {
+ description
+ "The configured cloud account's pool records.";
+ type leafref {
+ path "/rwcloud:cloud/rwcloud:account/rwcloud: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;
+ }
+ }
+ }
+ }
+ }
+}