Adding initial test cases, include enumeration conversion, address review comments
Change-Id: I59a19f80289464c934ad16d2d2ce1c78a6ba6f2c
diff --git a/tests/utests/netconf/yang/xos-topology.yang b/tests/utests/netconf/yang/xos-topology.yang
new file mode 100644
index 0000000..469cb84
--- /dev/null
+++ b/tests/utests/netconf/yang/xos-topology.yang
@@ -0,0 +1,224 @@
+module xos-topology {
+ namespace "urn:ietf:params:xml:ns:yang:xos-topology";
+ prefix xtop;
+ yang-version 1.1;
+
+ import ietf-yang-types { prefix yang; }
+ import ietf-inet-types { prefix inet; }
+ import yang-meta-types { prefix meta; }
+ import xos-controller { prefix xos; }
+ import xos-types { prefix xtype; }
+
+ organization
+ "Open Networking Lab (XOS) / Corenova Technologies";
+
+ contact
+ "Larry Peterson <llp@onlab.us>
+ Peter K. Lee <peter@corenova.com>";
+
+ description
+ "This module contains a collection of Topology models for XOS.
+
+ Copyright (c) 2016 ON.LAB and the persons identified as authors of
+ the code. All rights reserved.
+
+ Redistribution and use in source and binary forms, with or without
+ modification, is permitted pursuant to, and subject to the license
+ terms of the Apache License, Version 2.0 which accompanies this
+ distribution, and is available at
+ (http://www.apache.org/licenses/LICENSE-2.0).";
+
+ revision 2016-09-13 {
+ description "Initial revision.";
+ }
+
+ grouping deployment {
+ uses xos:provider {
+ refine "name" { description "Name of the deployment"; }
+ }
+ leaf-list sites {
+ config false;
+ type leafref {
+ path "/xos:core/site/id";
+ }
+ }
+ leaf-list templates {
+ type leafref {
+ path "/xos:core/template/id";
+ }
+ }
+ }
+ grouping site {
+ uses xos:provider {
+ refine "name" { description "Name of the site"; }
+ }
+ leaf site-url {
+ description "A URL describing the purpose of this site";
+ type inet:uri;
+ }
+ container location {
+ leaf geoposition {
+ type string; // what is this data format?
+ }
+ leaf longitude {
+ type decimal64;
+ }
+ leaf latitude {
+ type decimal64;
+ }
+ }
+ leaf is-public {
+ type boolean;
+ }
+ leaf login-base {
+ type string;
+ }
+ leaf deployment {
+ type leafref {
+ path "/xos:core/deployment/id";
+ }
+ }
+ leaf-list nodes {
+ config false;
+ type leafref {
+ path "/xos:core/node/id";
+ }
+ }
+ leaf-list users {
+ config false;
+ type leafref {
+ path "/xos:core/user/id";
+ }
+ }
+ leaf hosts-nodes {
+ config false;
+ type boolean;
+ }
+ leaf hosts-users {
+ config false;
+ type boolean;
+ }
+ container synchronizer {
+ if-feature xos:synchronizer;
+ leaf availability-zone {
+ type string;
+ }
+ }
+ }
+ grouping node {
+ uses xos:tenant;
+ leaf site {
+ type leafref {
+ path "/xos:core/site/id";
+ }
+ }
+ leaf deployment {
+ config false;
+ type leafref {
+ path "/xos:core/deployment/id";
+ }
+ }
+ }
+ grouping user {
+ uses xos:tenant {
+ refine 'name' {
+ config false;
+ description "Name of the user";
+ }
+ }
+ leaf firstname {
+ type meta:person-name;
+ }
+ leaf lastname {
+ type meta:person-name;
+ }
+ leaf email {
+ type meta:email-address;
+ }
+ leaf phone {
+ type meta:phone-number;
+ }
+ leaf timezone {
+ type meta:timezone;
+ }
+ leaf site {
+ type leafref {
+ path "/xos:core/site/id";
+ }
+ }
+ container credential {
+ leaf username {
+ type yang:yang-identifier;
+ }
+ leaf password {
+ type meta:password;
+ }
+ leaf role {
+ type xtype:access-role;
+ }
+ leaf public-key {
+ type string;
+ }
+ leaf login-page {
+ type inet:uri;
+ }
+ leaf last-login {
+ config false;
+ type yang:date-and-time;
+ }
+ }
+ }
+ grouping network-template {
+ uses xos:tenant;
+ leaf guaranteed-bandwidth {
+ type uint32;
+ }
+ leaf visibility {
+ type string;
+ }
+ leaf translation {
+ type string;
+ }
+ leaf access {
+ type string;
+ }
+ leaf shared-network-name {
+ type string;
+ }
+ leaf shared-network-id {
+ type string;
+ }
+ leaf topology-kind {
+ type string;
+ }
+ leaf controller-kind {
+ type string;
+ }
+ }
+
+ /*
+ * Augmentations to XOS core
+ */
+ augment "/xos:core" {
+ list template {
+ key id;
+ uses xtop:network-template;
+ }
+ list deployment {
+ key id;
+ uses xtop:deployment;
+ }
+ list site {
+ key id;
+ uses xtop:site;
+ }
+ list node {
+ key id;
+ uses xtop:node;
+ }
+ list user {
+ key id;
+ uses xtop:user;
+ }
+ }
+}