introduce cord-service-volt.yang and cord-service-vsg.yang. complete re-rendering of the underyling service/tenancy associations. need to review further with team.
diff --git a/schema/xos-core.yang b/schema/xos-core.yang
index 44a702c..1137c28 100644
--- a/schema/xos-core.yang
+++ b/schema/xos-core.yang
@@ -35,8 +35,8 @@
}
identity kind;
- identity generic { base kind; }
- identity subscriber { base kind; }
+ identity generic { base kind; }
+ identity service { base kind; }
typedef unique-identifier {
description "defines valid formats for external reference id";
@@ -46,14 +46,23 @@
type inet:uri;
}
}
+ typedef bandwidth {
+ type uint32 {
+ range 1000000..max; // should be at least 1 Mbps?
+ }
+ units 'bps';
+ }
+ typedef vlan {
+ type uint16 { range 0..4095; }
+ }
- grouping xos-attribute {
+ grouping attribute-pair {
leaf name { type string { length 0..128; } }
leaf value { type string; }
// don't need pointer back to service
}
- grouping xos-sync-record {
+ grouping sync-record {
description "Synchronizer-specific properties for model records";
leaf created { type yang:date-and-time; }
@@ -100,25 +109,18 @@
}
}
- grouping xos-base {
+ grouping base-common {
leaf id {
type unique-identifier;
mandatory true;
}
- leaf kind {
- type identityref {
- base kind;
- }
- default generic;
- }
leaf name {
type string {
length 0..255;
}
}
-
list attribute {
- uses xos-attribute;
+ uses attribute-pair;
key name;
status deprecated;
reference "XOS: service-specific-attribute";
@@ -129,15 +131,14 @@
mandatory true;
status deprecated;
}
-
container record {
if-feature synchronizer;
- uses xos-sync-record;
+ uses sync-record;
}
}
grouping tenant-root {
- uses xos-base {
+ uses base-common {
refine 'name' {
description "Specify name of the TenantRoot";
}
@@ -167,11 +168,17 @@
}
grouping service {
- uses xos-base {
+ uses base-common {
refine 'name' {
description "Name of the Service";
}
}
+ leaf kind {
+ type identityref {
+ base kind;
+ }
+ default generic;
+ }
leaf description {
type string {
length 0..254;
@@ -197,6 +204,22 @@
leaf public { type string { length 0..1024; } }
leaf private { type string { length 0..1024; } }
}
+ list provider {
+ description
+ "Each entry represents a provider of the service. Each unique service
+ should augment this block with service specific attributes.";
+ key id;
+ uses xos:provider;
+ }
+ list subscriber {
+ description
+ "Each entry represents a subscriber of the service. Each unique service
+ should augment this block with service specific attributes.";
+ key id;
+ uses xos:subscriber;
+ notification subscriber-added;
+ notification subscriber-deleted;
+ }
// TOOD: need to better understand relationship between Service and Slice
action scale {
@@ -207,7 +230,7 @@
}
grouping tenancy {
- uses xos-base;
+ uses base-common;
choice provider {
description "only one type of provider node is valid.";