Adding initial test cases, include enumeration conversion, address review comments
Change-Id: I59a19f80289464c934ad16d2d2ce1c78a6ba6f2c
diff --git a/tests/utests/netconf/yang/xos-types.yang b/tests/utests/netconf/yang/xos-types.yang
new file mode 100644
index 0000000..289587a
--- /dev/null
+++ b/tests/utests/netconf/yang/xos-types.yang
@@ -0,0 +1,87 @@
+module xos-types {
+ namespace "urn:ietf:params:xml:ns:yang:xos-types";
+ prefix xtype;
+ yang-version 1.1;
+
+ import ietf-yang-types { prefix yang; }
+ import ietf-inet-types { prefix inet; }
+
+ organization
+ "Open Networking Lab (CORD) / Corenova Technologies";
+
+ contact
+ "Larry Peterson <llp@onlab.us>
+ Peter K. Lee <peter@corenova.com>";
+
+ description
+ "This module contains a collection of common models and types 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-12 {
+ description "Initial revision.";
+ }
+
+ /*
+ * Typedefs
+ */
+ 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 flow-identifier {
+ description "defines valid format for identifying a flow";
+ type yang:uuid;
+ }
+ typedef network-identifier {
+ description "defines valid format for identifying a network";
+ type yang:uuid;
+ }
+ typedef mac-address {
+ description "defines valid format for mac-address";
+ type yang:mac-address;
+ }
+ typedef bandwidth {
+ type uint32 {
+ range 1000000..max; // should be at least 1 Mbps?
+ }
+ units 'bps';
+ }
+ typedef vlan {
+ type uint16 { range 0..4095; }
+ }
+ typedef isolation {
+ type enumeration {
+ enum vm { description 'Virtual Machine'; }
+ enum lxc { description 'Container'; }
+ enum hybrid { description 'Container in Virtual Machine'; }
+ }
+ default 'vm';
+ }
+ typedef access-role {
+ type enumeration {
+ enum admin;
+ enum staff;
+ enum user;
+ }
+ default 'user';
+ }
+ typedef certificate {
+ description
+ "Captures a security certificate, should be improved for better validation";
+ type string {
+ length 0..1024;
+ }
+ }
+}