fixes #7. I'm preserving all the typedefs inside xos-types for now but I don't think they're necessary. The intent of YANG typedef system is to define distinct forms of type for reusability but since all these typedefs are of the 'unique-identifier' type, they are largely redundant.
diff --git a/schema/xos-core.yang b/schema/xos-core.yang
index 1c8de53..2bce2cf 100644
--- a/schema/xos-core.yang
+++ b/schema/xos-core.yang
@@ -3,6 +3,10 @@
prefix xos;
yang-version 1.1;
+ import ietf-yang-types { prefix yang; }
+ import ietf-inet-types { prefix inet; }
+ import xos-types { prefix xtype; }
+
organization
"Open Networking Lab (XOS) / Corenova Technologies";
@@ -26,10 +30,6 @@
description "Initial revision.";
}
- import ietf-yang-types { prefix yang; }
- import ietf-inet-types { prefix inet; }
- import xos-types { prefix xos; }
-
feature synchronizer {
description
"Enables configuration synchronization to the distributed store.";
@@ -39,24 +39,6 @@
identity generic { base kind; }
identity service { base kind; }
- typedef unique-identifier {
- description "defines valid formats for external reference id";
- type union {
- type uint32 { range 1..max; }
- type yang:uuid;
- 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 attribute-pair {
leaf name { type string { length 0..128; } }
leaf value { type string; }
@@ -112,7 +94,7 @@
grouping base-common {
leaf id {
- type unique-identifier;
+ type xtype:unique-identifier;
mandatory true;
}
leaf name {
@@ -128,7 +110,7 @@
description "backwards-compatible attribute association";
}
leaf service-specific-id {
- type unique-identifier;
+ type xtype:unique-identifier;
mandatory true;
status deprecated;
}
@@ -164,9 +146,6 @@
}
// seems we should have interesting attributes specific to provider?
}
- grouping slice {
- // TBD
- }
grouping service {
uses base-common {
refine 'name' {
@@ -284,7 +263,7 @@
leaf slice-url {
description "A URL describing the purpose of this slice";
- type xos.refs.url-field;
+ type xtype:url-field;
// blank true;
}
@@ -295,7 +274,7 @@
leaf service {
description "The service that runs in this slice";
- type xos.refs.service;
+ type xtype:service;
}
leaf network {
@@ -309,42 +288,45 @@
}
leaf service-class {
- type xos.refs.service-class;
- status deprecated;
+ type xtype:service-class;
+ status deprecated;
}
leaf creator {
- type xos.refs.user;
+ type xtype:user;
}
leaf default-flavor {
- type xos.refs.flavor;
+ type xtype:flavor;
}
leaf default-image {
- type xos.refs.image;
+ type xtype:image;
}
leaf default-node {
- type xos.refs.node;
+ type xtype:node;
}
leaf mount-data-sets {
- type string;
- default "GenBank";
- length 0..256;
+ type string {
+ length 0..256;
+ }
+ default "GenBank";
}
leaf default_isolation {
- type string;
- default "vm";
- length 0..30;
+ type string {
+ length 0..30;
+ }
+ default "vm";
}
leaf-list tags {
- type leafref {
- path "/tag[id = current()/../id]/id";
- }
+ // below leafref is not valid since there is no /tag
+ type leafref {
+ path "/tag[id = current()/../id]/id";
+ }
}
}