blob: 08d606d729d3e5df2c58c67fd51c5ce7732261b6 [file] [log] [blame]
/*
*
* 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-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";
}
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";
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;
}
}
augment "/rw-project:project" {
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;
}
}
augment "/rw-project:project" {
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;
}
}
}
}
}
augment "/rw-project:project" {
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;
}
}
}
}
}
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;
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;
}
}
}
}
}
}
}