CORD-1023: Generate protos and xprotos for services

Change-Id: Ied46d63437e0290f947e652c3392e51647bbadf5
diff --git a/xos/genx/protos/services/accessagent.proto b/xos/genx/protos/services/accessagent.proto
new file mode 100644
index 0000000..8ffc493
--- /dev/null
+++ b/xos/genx/protos/services/accessagent.proto
@@ -0,0 +1,6 @@
+
+message AccessAgent {
+  required string name = 1 [ null = False,  max_length = 254,  blank = False,  help_text = "name of agent",  modifier = required,  db_index = False ];
+  required int32 volt_service = 2 [ null = False,  blank = False,  model = VOLTService,  modifier = required,  type = link,  port = access_agents,  db_index = True ];
+  optional string mac = 3 [ null = True,  max_length = 32,  blank = True,  help_text = "MAC Address or Access Agent",  modifier = optional,  db_index = False ];
+}
\ No newline at end of file
diff --git a/xos/genx/protos/services/accessdevice.proto b/xos/genx/protos/services/accessdevice.proto
new file mode 100644
index 0000000..b2b7caa
--- /dev/null
+++ b/xos/genx/protos/services/accessdevice.proto
@@ -0,0 +1,6 @@
+
+message AccessDevice {
+  required int32 volt_device = 1 [ null = False,  blank = False,  model = VOLTDevice,  modifier = required,  type = link,  port = access_devices,  db_index = True ];
+  optional int32 uplink = 2 [ db_index = False,  modifier = optional,  null = True,  blank = True ];
+  optional int32 vlan = 3 [ db_index = False,  modifier = optional,  null = True,  blank = True ];
+}
\ No newline at end of file
diff --git a/xos/genx/protos/services/agentportmapping.proto b/xos/genx/protos/services/agentportmapping.proto
new file mode 100644
index 0000000..fbbba9d
--- /dev/null
+++ b/xos/genx/protos/services/agentportmapping.proto
@@ -0,0 +1,6 @@
+
+message AgentPortMapping {
+  required int32 access_agent = 1 [ null = False,  blank = False,  model = AccessAgent,  modifier = required,  type = link,  port = port_mappings,  db_index = True ];
+  optional string mac = 2 [ null = True,  max_length = 32,  blank = True,  help_text = "MAC Address",  modifier = optional,  db_index = False ];
+  optional string port = 3 [ null = True,  max_length = 32,  blank = True,  help_text = "Openflow port ID",  modifier = optional,  db_index = False ];
+}
\ No newline at end of file
diff --git a/xos/genx/protos/services/cordsubscriberroot.proto b/xos/genx/protos/services/cordsubscriberroot.proto
new file mode 100644
index 0000000..8fa0603
--- /dev/null
+++ b/xos/genx/protos/services/cordsubscriberroot.proto
@@ -0,0 +1,18 @@
+
+message CordSubscriberRoot {
+  required string kind = 1 [ null = False,  default = "generic",  max_length = 30,  content_type = "stripped",  blank = False,  modifier = required,  db_index = False ];
+  optional string name = 2 [ null = True,  max_length = 255,  content_type = "stripped",  blank = True,  help_text = "name",  modifier = optional,  db_index = False ];
+  optional string service_specific_attribute = 3 [ db_index = False,  modifier = optional,  null = True,  blank = True ];
+  optional string service_specific_id = 4 [ null = True,  max_length = 30,  content_type = "stripped",  blank = True,  modifier = optional,  db_index = False ];
+  required bool firewall_enable = 5 [ db_index = False,  default = False,  modifier = required,  null = False,  blank = True ];
+  optional string firewall_rules = 6 [ db_index = False,  default = "accept all anywhere anywhere",  modifier = optional,  null = True,  blank = True ];
+  required bool url_filter_enable = 7 [ db_index = False,  default = False,  modifier = required,  null = False,  blank = True ];
+  optional string url_filter_rules = 8 [ db_index = False,  default = "allow all",  modifier = optional,  null = True,  blank = True ];
+  required string url_filter_level = 9 [ null = False,  default = "PG",  max_length = 30,  content_type = "stripped",  blank = False,  modifier = required,  db_index = False ];
+  required bool cdn_enable = 10 [ db_index = False,  default = False,  modifier = required,  null = False,  blank = True ];
+  required bool is_demo_user = 11 [ db_index = False,  default = False,  modifier = required,  null = False,  blank = True ];
+  required int32 uplink_speed = 12 [ db_index = False,  default = 1000000000,  modifier = required,  null = False,  blank = False ];
+  required int32 downlink_speed = 13 [ db_index = False,  default = 1000000000,  modifier = required,  null = False,  blank = False ];
+  required bool enable_uverse = 14 [ db_index = False,  default = True,  modifier = required,  null = False,  blank = True ];
+  required string status = 15 [ null = False,  default = "enabled",  choices = "(('enabled', 'Enabled'), ('suspended', 'Suspended'), ('delinquent', 'Delinquent'), ('copyrightviolation', 'Copyright Violation'))",  max_length = 30,  content_type = "stripped",  blank = False,  modifier = required,  db_index = False ];
+}
\ No newline at end of file
diff --git a/xos/genx/protos/services/exampleservice.proto b/xos/genx/protos/services/exampleservice.proto
new file mode 100644
index 0000000..20368c9
--- /dev/null
+++ b/xos/genx/protos/services/exampleservice.proto
@@ -0,0 +1,17 @@
+
+message ExampleService {
+  optional string description = 1 [ null = True,  max_length = 254,  blank = True,  help_text = "Description of Service",  modifier = optional,  db_index = False ];
+  required bool enabled = 2 [ db_index = False,  default = True,  modifier = required,  null = False,  blank = True ];
+  required string kind = 3 [ null = False,  default = "generic",  max_length = 30,  content_type = "stripped",  blank = False,  help_text = "Kind of service",  modifier = required,  db_index = False ];
+  required string name = 4 [ null = False,  max_length = 30,  content_type = "stripped",  blank = False,  help_text = "Service Name",  modifier = required,  db_index = False ];
+  optional string versionNumber = 5 [ null = True,  max_length = 30,  content_type = "stripped",  blank = True,  help_text = "Version of Service Definition",  modifier = optional,  db_index = False ];
+  required bool published = 6 [ db_index = False,  default = True,  modifier = required,  null = False,  blank = True ];
+  optional string view_url = 7 [ null = True,  max_length = 1024,  content_type = "stripped",  blank = True,  modifier = optional,  db_index = False ];
+  optional string icon_url = 8 [ null = True,  max_length = 1024,  content_type = "stripped",  blank = True,  modifier = optional,  db_index = False ];
+  optional string public_key = 9 [ null = True,  max_length = 1024,  blank = True,  help_text = "Public key string",  modifier = optional,  db_index = False ];
+  optional string private_key_fn = 10 [ null = True,  max_length = 1024,  content_type = "stripped",  blank = True,  modifier = optional,  db_index = False ];
+  optional string service_specific_id = 11 [ null = True,  max_length = 30,  content_type = "stripped",  blank = True,  modifier = optional,  db_index = False ];
+  optional string service_specific_attribute = 12 [ db_index = False,  modifier = optional,  null = True,  blank = True ];
+  optional int32 controller = 13 [ null = True,  blank = True,  help_text = "The Service Controller this Service uses",  model = ServiceController,  modifier = optional,  type = link,  port = services,  db_index = True ];
+  required string service_message = 14 [ null = False,  max_length = 254,  blank = False,  help_text = "Service Message to Display",  modifier = required,  db_index = False ];
+}
\ No newline at end of file
diff --git a/xos/genx/protos/services/fabricservice.proto b/xos/genx/protos/services/fabricservice.proto
new file mode 100644
index 0000000..d1187a4
--- /dev/null
+++ b/xos/genx/protos/services/fabricservice.proto
@@ -0,0 +1,17 @@
+
+message FabricService {
+  optional string description = 1 [ null = True,  max_length = 254,  blank = True,  help_text = "Description of Service",  modifier = optional,  db_index = False ];
+  required bool enabled = 2 [ db_index = False,  default = True,  modifier = required,  null = False,  blank = True ];
+  required string kind = 3 [ null = False,  default = "generic",  max_length = 30,  content_type = "stripped",  blank = False,  help_text = "Kind of service",  modifier = required,  db_index = False ];
+  required string name = 4 [ null = False,  max_length = 30,  content_type = "stripped",  blank = False,  help_text = "Service Name",  modifier = required,  db_index = False ];
+  optional string versionNumber = 5 [ null = True,  max_length = 30,  content_type = "stripped",  blank = True,  help_text = "Version of Service Definition",  modifier = optional,  db_index = False ];
+  required bool published = 6 [ db_index = False,  default = True,  modifier = required,  null = False,  blank = True ];
+  optional string view_url = 7 [ null = True,  max_length = 1024,  content_type = "stripped",  blank = True,  modifier = optional,  db_index = False ];
+  optional string icon_url = 8 [ null = True,  max_length = 1024,  content_type = "stripped",  blank = True,  modifier = optional,  db_index = False ];
+  optional string public_key = 9 [ null = True,  max_length = 1024,  blank = True,  help_text = "Public key string",  modifier = optional,  db_index = False ];
+  optional string private_key_fn = 10 [ null = True,  max_length = 1024,  content_type = "stripped",  blank = True,  modifier = optional,  db_index = False ];
+  optional string service_specific_id = 11 [ null = True,  max_length = 30,  content_type = "stripped",  blank = True,  modifier = optional,  db_index = False ];
+  optional string service_specific_attribute = 12 [ db_index = False,  modifier = optional,  null = True,  blank = True ];
+  optional int32 controller = 13 [ null = True,  blank = True,  help_text = "The Service Controller this Service uses",  model = ServiceController,  modifier = optional,  type = link,  port = services,  db_index = True ];
+  required bool autoconfig = 14 [ null = False,  default = True,  blank = True,  help_text = "Autoconfigure the fabric",  modifier = required,  db_index = False ];
+}
\ No newline at end of file
diff --git a/xos/genx/protos/services/onosapp.proto b/xos/genx/protos/services/onosapp.proto
new file mode 100644
index 0000000..66bd612
--- /dev/null
+++ b/xos/genx/protos/services/onosapp.proto
@@ -0,0 +1,17 @@
+
+message ONOSApp {
+  optional string name = 1 [ null = True,  max_length = 200,  content_type = "stripped",  blank = True,  modifier = optional,  db_index = False ];
+  required string kind = 2 [ null = False,  default = "generic",  max_length = 30,  content_type = "stripped",  blank = False,  modifier = required,  db_index = False ];
+  required int32 provider_service = 3 [ null = False,  blank = False,  model = Service,  modifier = required,  type = link,  port = provided_tenants,  db_index = True ];
+  optional int32 subscriber_service = 4 [ null = True,  blank = True,  model = Service,  modifier = optional,  type = link,  port = subscribed_tenants,  db_index = True ];
+  optional int32 subscriber_tenant = 5 [ null = True,  blank = True,  model = Tenant,  modifier = optional,  type = link,  port = subscribed_tenants,  db_index = True ];
+  optional int32 subscriber_user = 6 [ null = True,  blank = True,  model = User,  modifier = optional,  type = link,  port = subscribed_tenants,  db_index = True ];
+  optional int32 subscriber_root = 7 [ null = True,  blank = True,  model = TenantRoot,  modifier = optional,  type = link,  port = subscribed_tenants,  db_index = True ];
+  optional int32 subscriber_network = 8 [ null = True,  blank = True,  model = Network,  modifier = optional,  type = link,  port = subscribed_tenants,  db_index = True ];
+  optional string service_specific_id = 9 [ null = True,  max_length = 30,  content_type = "stripped",  blank = True,  modifier = optional,  db_index = False ];
+  optional string service_specific_attribute = 10 [ db_index = False,  modifier = optional,  null = True,  blank = True ];
+  required string connect_method = 11 [ null = False,  default = "na",  choices = "(('public', 'Public'), ('private', 'Private'), ('private-unidirectional', 'Private Unidirectional'), ('na', 'Not Applicable'))",  max_length = 30,  blank = False,  modifier = required,  db_index = False ];
+  optional string install_dependencies = 12 [ db_index = False,  modifier = optional,  null = True,  blank = True ];
+  optional string dependencies = 13 [ db_index = False,  modifier = optional,  null = True,  blank = True ];
+  optional int32 creator = 14 [ null = True,  blank = True,  model = User,  modifier = optional,  type = link,  port = onos_apps,  db_index = True ];
+}
\ No newline at end of file
diff --git a/xos/genx/protos/services/onosservice.proto b/xos/genx/protos/services/onosservice.proto
new file mode 100644
index 0000000..04b476b
--- /dev/null
+++ b/xos/genx/protos/services/onosservice.proto
@@ -0,0 +1,20 @@
+
+message ONOSService {
+  optional string description = 1 [ null = True,  max_length = 254,  blank = True,  help_text = "Description of Service",  modifier = optional,  db_index = False ];
+  required bool enabled = 2 [ db_index = False,  default = True,  modifier = required,  null = False,  blank = True ];
+  required string kind = 3 [ null = False,  default = "generic",  max_length = 30,  content_type = "stripped",  blank = False,  help_text = "Kind of service",  modifier = required,  db_index = False ];
+  required string name = 4 [ null = False,  max_length = 30,  content_type = "stripped",  blank = False,  help_text = "Service Name",  modifier = required,  db_index = False ];
+  optional string versionNumber = 5 [ null = True,  max_length = 30,  content_type = "stripped",  blank = True,  help_text = "Version of Service Definition",  modifier = optional,  db_index = False ];
+  required bool published = 6 [ db_index = False,  default = True,  modifier = required,  null = False,  blank = True ];
+  optional string view_url = 7 [ null = True,  max_length = 1024,  content_type = "stripped",  blank = True,  modifier = optional,  db_index = False ];
+  optional string icon_url = 8 [ null = True,  max_length = 1024,  content_type = "stripped",  blank = True,  modifier = optional,  db_index = False ];
+  optional string public_key = 9 [ null = True,  max_length = 1024,  blank = True,  help_text = "Public key string",  modifier = optional,  db_index = False ];
+  optional string private_key_fn = 10 [ null = True,  max_length = 1024,  content_type = "stripped",  blank = True,  modifier = optional,  db_index = False ];
+  optional string service_specific_id = 11 [ null = True,  max_length = 30,  content_type = "stripped",  blank = True,  modifier = optional,  db_index = False ];
+  optional string service_specific_attribute = 12 [ db_index = False,  modifier = optional,  null = True,  blank = True ];
+  optional int32 controller = 13 [ null = True,  blank = True,  help_text = "The Service Controller this Service uses",  model = ServiceController,  modifier = optional,  type = link,  port = services,  db_index = True ];
+  optional string rest_hostname = 14 [ null = True,  max_length = 255,  content_type = "stripped",  blank = True,  modifier = optional,  db_index = False ];
+  required int32 rest_port = 15 [ db_index = False,  default = 8181,  modifier = required,  null = False,  blank = False ];
+  required bool no_container = 16 [ db_index = False,  default = False,  modifier = required,  null = False,  blank = True ];
+  optional string node_key = 17 [ null = True,  max_length = 1024,  content_type = "stripped",  blank = True,  modifier = optional,  db_index = False ];
+}
\ No newline at end of file
diff --git a/xos/genx/protos/services/voltdevice.proto b/xos/genx/protos/services/voltdevice.proto
new file mode 100644
index 0000000..45b85d9
--- /dev/null
+++ b/xos/genx/protos/services/voltdevice.proto
@@ -0,0 +1,8 @@
+
+message VOLTDevice {
+  required string name = 1 [ null = False,  max_length = 254,  blank = False,  help_text = "name of device",  modifier = required,  db_index = False ];
+  required int32 volt_service = 2 [ null = False,  blank = False,  model = VOLTService,  modifier = required,  type = link,  port = volt_devices,  db_index = True ];
+  optional string openflow_id = 3 [ null = True,  max_length = 254,  blank = True,  help_text = "OpenFlow ID",  modifier = optional,  db_index = False ];
+  optional string driver = 4 [ null = True,  max_length = 254,  blank = True,  help_text = "driver",  modifier = optional,  db_index = False ];
+  optional int32 access_agent = 5 [ null = True,  blank = True,  model = AccessAgent,  modifier = optional,  type = link,  port = volt_devices,  db_index = True ];
+}
\ No newline at end of file
diff --git a/xos/genx/protos/services/voltservice.proto b/xos/genx/protos/services/voltservice.proto
new file mode 100644
index 0000000..2d353b3
--- /dev/null
+++ b/xos/genx/protos/services/voltservice.proto
@@ -0,0 +1,16 @@
+
+message VOLTService {
+  optional string description = 1 [ null = True,  max_length = 254,  blank = True,  help_text = "Description of Service",  modifier = optional,  db_index = False ];
+  required bool enabled = 2 [ db_index = False,  default = True,  modifier = required,  null = False,  blank = True ];
+  required string kind = 3 [ null = False,  default = "generic",  max_length = 30,  content_type = "stripped",  blank = False,  help_text = "Kind of service",  modifier = required,  db_index = False ];
+  required string name = 4 [ null = False,  max_length = 30,  content_type = "stripped",  blank = False,  help_text = "Service Name",  modifier = required,  db_index = False ];
+  optional string versionNumber = 5 [ null = True,  max_length = 30,  content_type = "stripped",  blank = True,  help_text = "Version of Service Definition",  modifier = optional,  db_index = False ];
+  required bool published = 6 [ db_index = False,  default = True,  modifier = required,  null = False,  blank = True ];
+  optional string view_url = 7 [ null = True,  max_length = 1024,  content_type = "stripped",  blank = True,  modifier = optional,  db_index = False ];
+  optional string icon_url = 8 [ null = True,  max_length = 1024,  content_type = "stripped",  blank = True,  modifier = optional,  db_index = False ];
+  optional string public_key = 9 [ null = True,  max_length = 1024,  blank = True,  help_text = "Public key string",  modifier = optional,  db_index = False ];
+  optional string private_key_fn = 10 [ null = True,  max_length = 1024,  content_type = "stripped",  blank = True,  modifier = optional,  db_index = False ];
+  optional string service_specific_id = 11 [ null = True,  max_length = 30,  content_type = "stripped",  blank = True,  modifier = optional,  db_index = False ];
+  optional string service_specific_attribute = 12 [ db_index = False,  modifier = optional,  null = True,  blank = True ];
+  optional int32 controller = 13 [ null = True,  blank = True,  help_text = "The Service Controller this Service uses",  model = ServiceController,  modifier = optional,  type = link,  port = services,  db_index = True ];
+}
\ No newline at end of file
diff --git a/xos/genx/protos/services/volttenant.proto b/xos/genx/protos/services/volttenant.proto
new file mode 100644
index 0000000..afbe64a
--- /dev/null
+++ b/xos/genx/protos/services/volttenant.proto
@@ -0,0 +1,17 @@
+
+message VOLTTenant {
+  optional string name = 1 [ null = True,  max_length = 200,  content_type = "stripped",  blank = True,  modifier = optional,  db_index = False ];
+  required string kind = 2 [ null = False,  default = "generic",  max_length = 30,  content_type = "stripped",  blank = False,  modifier = required,  db_index = False ];
+  required int32 provider_service = 3 [ null = False,  blank = False,  model = Service,  modifier = required,  type = link,  port = provided_tenants,  db_index = True ];
+  optional int32 subscriber_service = 4 [ null = True,  blank = True,  model = Service,  modifier = optional,  type = link,  port = subscribed_tenants,  db_index = True ];
+  optional int32 subscriber_tenant = 5 [ null = True,  blank = True,  model = Tenant,  modifier = optional,  type = link,  port = subscribed_tenants,  db_index = True ];
+  optional int32 subscriber_user = 6 [ null = True,  blank = True,  model = User,  modifier = optional,  type = link,  port = subscribed_tenants,  db_index = True ];
+  optional int32 subscriber_root = 7 [ null = True,  blank = True,  model = TenantRoot,  modifier = optional,  type = link,  port = subscribed_tenants,  db_index = True ];
+  optional int32 subscriber_network = 8 [ null = True,  blank = True,  model = Network,  modifier = optional,  type = link,  port = subscribed_tenants,  db_index = True ];
+  optional string service_specific_id = 9 [ null = True,  max_length = 30,  content_type = "stripped",  blank = True,  modifier = optional,  db_index = False ];
+  optional string service_specific_attribute = 10 [ db_index = False,  modifier = optional,  null = True,  blank = True ];
+  required string connect_method = 11 [ null = False,  default = "na",  choices = "(('public', 'Public'), ('private', 'Private'), ('private-unidirectional', 'Private Unidirectional'), ('na', 'Not Applicable'))",  max_length = 30,  blank = False,  modifier = required,  db_index = False ];
+  optional int32 s_tag = 12 [ db_index = False,  help_text = "s-tag",  modifier = optional,  null = True,  blank = True ];
+  optional int32 c_tag = 13 [ db_index = False,  help_text = "c-tag",  modifier = optional,  null = True,  blank = True ];
+  optional int32 creator = 14 [ null = True,  blank = True,  model = User,  modifier = optional,  type = link,  port = created_volts,  db_index = True ];
+}
\ No newline at end of file
diff --git a/xos/genx/protos/services/vrouterapp.proto b/xos/genx/protos/services/vrouterapp.proto
new file mode 100644
index 0000000..ed4c22a
--- /dev/null
+++ b/xos/genx/protos/services/vrouterapp.proto
@@ -0,0 +1,7 @@
+
+message VRouterApp {
+  required int32 vrouter_service = 1 [ null = False,  blank = False,  model = VRouterService,  modifier = required,  type = link,  port = apps,  db_index = True ];
+  required string name = 2 [ null = False,  max_length = 50,  blank = False,  help_text = "application name",  modifier = required,  db_index = False ];
+  required string control_plane_connect_point = 3 [ null = False,  max_length = 21,  blank = False,  help_text = "port identifier in ONOS",  modifier = required,  db_index = False ];
+  required bool ospf_enabled = 4 [ null = False,  default = True,  blank = True,  help_text = "ospf enabled",  modifier = required,  db_index = False ];
+}
\ No newline at end of file
diff --git a/xos/genx/protos/services/vrouterdevice.proto b/xos/genx/protos/services/vrouterdevice.proto
new file mode 100644
index 0000000..1771282
--- /dev/null
+++ b/xos/genx/protos/services/vrouterdevice.proto
@@ -0,0 +1,8 @@
+
+message VRouterDevice {
+  optional string name = 1 [ null = True,  max_length = 20,  blank = True,  help_text = "device friendly name",  modifier = optional,  db_index = False ];
+  required string openflow_id = 2 [ null = False,  max_length = 20,  blank = False,  help_text = "device identifier in ONOS",  modifier = required,  db_index = False ];
+  required string config_key = 3 [ null = False,  default = "basic",  max_length = 32,  blank = False,  help_text = "configuration key",  modifier = required,  db_index = False ];
+  required string driver = 4 [ null = False,  max_length = 32,  blank = False,  help_text = "driver type",  modifier = required,  db_index = False ];
+  required int32 vrouter_service = 5 [ null = False,  blank = False,  model = VRouterService,  modifier = required,  type = link,  port = devices,  db_index = True ];
+}
\ No newline at end of file
diff --git a/xos/genx/protos/services/vrouterinterface.proto b/xos/genx/protos/services/vrouterinterface.proto
new file mode 100644
index 0000000..31a20f7
--- /dev/null
+++ b/xos/genx/protos/services/vrouterinterface.proto
@@ -0,0 +1,7 @@
+
+message VRouterInterface {
+  required int32 vrouter_port = 1 [ null = False,  blank = False,  model = VRouterPort,  modifier = required,  type = link,  port = interfaces,  db_index = True ];
+  required string name = 2 [ null = False,  max_length = 10,  blank = False,  help_text = "interface name",  modifier = required,  db_index = False ];
+  required string mac = 3 [ null = False,  max_length = 17,  blank = False,  help_text = "interface mac",  modifier = required,  db_index = False ];
+  optional string vlan = 4 [ null = True,  max_length = 10,  blank = True,  help_text = "interface vlan id",  modifier = optional,  db_index = False ];
+}
\ No newline at end of file
diff --git a/xos/genx/protos/services/vrouterip.proto b/xos/genx/protos/services/vrouterip.proto
new file mode 100644
index 0000000..749731e
--- /dev/null
+++ b/xos/genx/protos/services/vrouterip.proto
@@ -0,0 +1,6 @@
+
+message VRouterIp {
+  optional string name = 1 [ null = True,  max_length = 20,  blank = True,  help_text = "ip friendly name",  modifier = optional,  db_index = False ];
+  required int32 vrouter_interface = 2 [ null = False,  blank = False,  model = VRouterInterface,  modifier = required,  type = link,  port = ips,  db_index = True ];
+  required string ip = 3 [ null = False,  max_length = 19,  blank = False,  help_text = "interface ips",  modifier = required,  db_index = False ];
+}
\ No newline at end of file
diff --git a/xos/genx/protos/services/vrouterport.proto b/xos/genx/protos/services/vrouterport.proto
new file mode 100644
index 0000000..9d1e723
--- /dev/null
+++ b/xos/genx/protos/services/vrouterport.proto
@@ -0,0 +1,7 @@
+
+message VRouterPort {
+  optional string name = 1 [ null = True,  max_length = 20,  blank = True,  help_text = "port friendly name",  modifier = optional,  db_index = False ];
+  required string openflow_id = 2 [ null = False,  max_length = 21,  blank = False,  help_text = "port identifier in ONOS",  modifier = required,  db_index = False ];
+  required int32 vrouter_device = 3 [ null = False,  blank = False,  model = VRouterDevice,  modifier = required,  type = link,  port = ports,  db_index = True ];
+  required int32 vrouter_service = 4 [ null = False,  blank = False,  model = VRouterService,  modifier = required,  type = link,  port = device_ports,  db_index = True ];
+}
\ No newline at end of file
diff --git a/xos/genx/protos/services/vrouterservice.proto b/xos/genx/protos/services/vrouterservice.proto
new file mode 100644
index 0000000..af5e3b4
--- /dev/null
+++ b/xos/genx/protos/services/vrouterservice.proto
@@ -0,0 +1,20 @@
+
+message VRouterService {
+  optional string description = 1 [ null = True,  max_length = 254,  blank = True,  help_text = "Description of Service",  modifier = optional,  db_index = False ];
+  required bool enabled = 2 [ db_index = False,  default = True,  modifier = required,  null = False,  blank = True ];
+  required string kind = 3 [ null = False,  default = "generic",  max_length = 30,  content_type = "stripped",  blank = False,  help_text = "Kind of service",  modifier = required,  db_index = False ];
+  required string name = 4 [ null = False,  max_length = 30,  content_type = "stripped",  blank = False,  help_text = "Service Name",  modifier = required,  db_index = False ];
+  optional string versionNumber = 5 [ null = True,  max_length = 30,  content_type = "stripped",  blank = True,  help_text = "Version of Service Definition",  modifier = optional,  db_index = False ];
+  required bool published = 6 [ db_index = False,  default = True,  modifier = required,  null = False,  blank = True ];
+  optional string view_url = 7 [ null = True,  max_length = 1024,  content_type = "stripped",  blank = True,  modifier = optional,  db_index = False ];
+  optional string icon_url = 8 [ null = True,  max_length = 1024,  content_type = "stripped",  blank = True,  modifier = optional,  db_index = False ];
+  optional string public_key = 9 [ null = True,  max_length = 1024,  blank = True,  help_text = "Public key string",  modifier = optional,  db_index = False ];
+  optional string private_key_fn = 10 [ null = True,  max_length = 1024,  content_type = "stripped",  blank = True,  modifier = optional,  db_index = False ];
+  optional string service_specific_id = 11 [ null = True,  max_length = 30,  content_type = "stripped",  blank = True,  modifier = optional,  db_index = False ];
+  optional string service_specific_attribute = 12 [ db_index = False,  modifier = optional,  null = True,  blank = True ];
+  optional int32 controller = 13 [ null = True,  blank = True,  help_text = "The Service Controller this Service uses",  model = ServiceController,  modifier = optional,  type = link,  port = services,  db_index = True ];
+  optional string rest_hostname = 14 [ null = True,  max_length = 255,  content_type = "stripped",  blank = True,  modifier = optional,  db_index = False ];
+  required int32 rest_port = 15 [ db_index = False,  default = 8181,  modifier = required,  null = False,  blank = False ];
+  required string rest_user = 16 [ null = False,  default = "onos",  max_length = 255,  content_type = "stripped",  blank = False,  modifier = required,  db_index = False ];
+  required string rest_pass = 17 [ null = False,  default = "rocks",  max_length = 255,  content_type = "stripped",  blank = False,  modifier = required,  db_index = False ];
+}
\ No newline at end of file
diff --git a/xos/genx/protos/services/vroutertenant.proto b/xos/genx/protos/services/vroutertenant.proto
new file mode 100644
index 0000000..580af29
--- /dev/null
+++ b/xos/genx/protos/services/vroutertenant.proto
@@ -0,0 +1,17 @@
+
+message VRouterTenant {
+  optional string name = 1 [ null = True,  max_length = 200,  content_type = "stripped",  blank = True,  modifier = optional,  db_index = False ];
+  required string kind = 2 [ null = False,  default = "generic",  max_length = 30,  content_type = "stripped",  blank = False,  modifier = required,  db_index = False ];
+  required int32 provider_service = 3 [ null = False,  blank = False,  model = Service,  modifier = required,  type = link,  port = provided_tenants,  db_index = True ];
+  optional int32 subscriber_service = 4 [ null = True,  blank = True,  model = Service,  modifier = optional,  type = link,  port = subscribed_tenants,  db_index = True ];
+  optional int32 subscriber_tenant = 5 [ null = True,  blank = True,  model = Tenant,  modifier = optional,  type = link,  port = subscribed_tenants,  db_index = True ];
+  optional int32 subscriber_user = 6 [ null = True,  blank = True,  model = User,  modifier = optional,  type = link,  port = subscribed_tenants,  db_index = True ];
+  optional int32 subscriber_root = 7 [ null = True,  blank = True,  model = TenantRoot,  modifier = optional,  type = link,  port = subscribed_tenants,  db_index = True ];
+  optional int32 subscriber_network = 8 [ null = True,  blank = True,  model = Network,  modifier = optional,  type = link,  port = subscribed_tenants,  db_index = True ];
+  optional string service_specific_id = 9 [ null = True,  max_length = 30,  content_type = "stripped",  blank = True,  modifier = optional,  db_index = False ];
+  optional string service_specific_attribute = 10 [ db_index = False,  modifier = optional,  null = True,  blank = True ];
+  required string connect_method = 11 [ null = False,  default = "na",  choices = "(('public', 'Public'), ('private', 'Private'), ('private-unidirectional', 'Private Unidirectional'), ('na', 'Not Applicable'))",  max_length = 30,  blank = False,  modifier = required,  db_index = False ];
+  optional string public_ip = 12 [ null = True,  max_length = 30,  content_type = "stripped",  blank = True,  modifier = optional,  db_index = False ];
+  optional string public_mac = 13 [ null = True,  max_length = 30,  content_type = "stripped",  blank = True,  modifier = optional,  db_index = False ];
+  optional int32 address_pool = 14 [ null = True,  blank = True,  model = AddressPool,  modifier = optional,  type = link,  port = vrouter_tenants,  db_index = True ];
+}
\ No newline at end of file
diff --git a/xos/genx/protos/services/vsgservice.proto b/xos/genx/protos/services/vsgservice.proto
new file mode 100644
index 0000000..1bf25f0
--- /dev/null
+++ b/xos/genx/protos/services/vsgservice.proto
@@ -0,0 +1,21 @@
+
+message VSGService {
+  optional string description = 1 [ null = True,  max_length = 254,  blank = True,  help_text = "Description of Service",  modifier = optional,  db_index = False ];
+  required bool enabled = 2 [ db_index = False,  default = True,  modifier = required,  null = False,  blank = True ];
+  required string kind = 3 [ null = False,  default = "generic",  max_length = 30,  content_type = "stripped",  blank = False,  help_text = "Kind of service",  modifier = required,  db_index = False ];
+  required string name = 4 [ null = False,  max_length = 30,  content_type = "stripped",  blank = False,  help_text = "Service Name",  modifier = required,  db_index = False ];
+  optional string versionNumber = 5 [ null = True,  max_length = 30,  content_type = "stripped",  blank = True,  help_text = "Version of Service Definition",  modifier = optional,  db_index = False ];
+  required bool published = 6 [ db_index = False,  default = True,  modifier = required,  null = False,  blank = True ];
+  optional string view_url = 7 [ null = True,  max_length = 1024,  content_type = "stripped",  blank = True,  modifier = optional,  db_index = False ];
+  optional string icon_url = 8 [ null = True,  max_length = 1024,  content_type = "stripped",  blank = True,  modifier = optional,  db_index = False ];
+  optional string public_key = 9 [ null = True,  max_length = 1024,  blank = True,  help_text = "Public key string",  modifier = optional,  db_index = False ];
+  optional string private_key_fn = 10 [ null = True,  max_length = 1024,  content_type = "stripped",  blank = True,  modifier = optional,  db_index = False ];
+  optional string service_specific_id = 11 [ null = True,  max_length = 30,  content_type = "stripped",  blank = True,  modifier = optional,  db_index = False ];
+  optional string service_specific_attribute = 12 [ db_index = False,  modifier = optional,  null = True,  blank = True ];
+  optional int32 controller = 13 [ null = True,  blank = True,  help_text = "The Service Controller this Service uses",  model = ServiceController,  modifier = optional,  type = link,  port = services,  db_index = True ];
+  optional string url_filter_kind = 14 [ null = True,  choices = "((None, 'None'), ('safebrowsing', 'Safe Browsing'), ('answerx', 'AnswerX'))",  max_length = 30,  content_type = "stripped",  blank = True,  modifier = optional,  db_index = False ];
+  required string dns_servers = 15 [ null = False,  default = "8.8.8.8",  max_length = 255,  content_type = "stripped",  blank = False,  modifier = required,  db_index = False ];
+  optional string node_label = 16 [ null = True,  max_length = 30,  content_type = "stripped",  blank = True,  modifier = optional,  db_index = False ];
+  required string docker_image_name = 17 [ null = False,  default = "docker.io/xosproject/vsg",  max_length = 255,  content_type = "stripped",  blank = False,  modifier = required,  db_index = False ];
+  required bool docker_insecure_registry = 18 [ db_index = False,  default = False,  modifier = required,  null = False,  blank = True ];
+}
\ No newline at end of file
diff --git a/xos/genx/protos/services/vtnservice.proto b/xos/genx/protos/services/vtnservice.proto
new file mode 100644
index 0000000..5a2e41a
--- /dev/null
+++ b/xos/genx/protos/services/vtnservice.proto
@@ -0,0 +1,28 @@
+
+message VTNService {
+  optional string description = 1 [ null = True,  max_length = 254,  blank = True,  help_text = "Description of Service",  modifier = optional,  db_index = False ];
+  required bool enabled = 2 [ db_index = False,  default = True,  modifier = required,  null = False,  blank = True ];
+  required string kind = 3 [ null = False,  default = "generic",  max_length = 30,  content_type = "stripped",  blank = False,  help_text = "Kind of service",  modifier = required,  db_index = False ];
+  required string name = 4 [ null = False,  max_length = 30,  content_type = "stripped",  blank = False,  help_text = "Service Name",  modifier = required,  db_index = False ];
+  optional string versionNumber = 5 [ null = True,  max_length = 30,  content_type = "stripped",  blank = True,  help_text = "Version of Service Definition",  modifier = optional,  db_index = False ];
+  required bool published = 6 [ db_index = False,  default = True,  modifier = required,  null = False,  blank = True ];
+  optional string view_url = 7 [ null = True,  max_length = 1024,  content_type = "stripped",  blank = True,  modifier = optional,  db_index = False ];
+  optional string icon_url = 8 [ null = True,  max_length = 1024,  content_type = "stripped",  blank = True,  modifier = optional,  db_index = False ];
+  optional string public_key = 9 [ null = True,  max_length = 1024,  blank = True,  help_text = "Public key string",  modifier = optional,  db_index = False ];
+  optional string private_key_fn = 10 [ null = True,  max_length = 1024,  content_type = "stripped",  blank = True,  modifier = optional,  db_index = False ];
+  optional string service_specific_id = 11 [ null = True,  max_length = 30,  content_type = "stripped",  blank = True,  modifier = optional,  db_index = False ];
+  optional string service_specific_attribute = 12 [ db_index = False,  modifier = optional,  null = True,  blank = True ];
+  optional int32 controller = 13 [ null = True,  blank = True,  help_text = "The Service Controller this Service uses",  model = ServiceController,  modifier = optional,  type = link,  port = services,  db_index = True ];
+  required string privateGatewayMac = 14 [ null = False,  default = "00:00:00:00:00:01",  max_length = 30,  content_type = "stripped",  blank = False,  modifier = required,  db_index = False ];
+  required string localManagementIp = 15 [ null = False,  default = "172.27.0.1/24",  max_length = 30,  content_type = "stripped",  blank = False,  modifier = required,  db_index = False ];
+  required int32 ovsdbPort = 16 [ db_index = False,  default = 6641,  modifier = required,  null = False,  blank = False ];
+  required int32 sshPort = 17 [ db_index = False,  default = 22,  modifier = required,  null = False,  blank = False ];
+  required string sshUser = 18 [ null = False,  default = "root",  max_length = 30,  content_type = "stripped",  blank = False,  modifier = required,  db_index = False ];
+  required string sshKeyFile = 19 [ null = False,  default = "/root/node_key",  max_length = 1024,  content_type = "stripped",  blank = False,  modifier = required,  db_index = False ];
+  required int32 mgmtSubnetBits = 20 [ db_index = False,  default = 24,  modifier = required,  null = False,  blank = False ];
+  required string xosEndpoint = 21 [ null = False,  default = "http://xos/",  max_length = 1024,  content_type = "stripped",  blank = False,  modifier = required,  db_index = False ];
+  required string xosUser = 22 [ null = False,  default = "padmin@vicci.org",  max_length = 255,  content_type = "stripped",  blank = False,  modifier = required,  db_index = False ];
+  required string xosPassword = 23 [ null = False,  default = "letmein",  max_length = 255,  content_type = "stripped",  blank = False,  modifier = required,  db_index = False ];
+  required int32 vtnAPIVersion = 24 [ db_index = False,  default = 1,  modifier = required,  null = False,  blank = False ];
+  required string controllerPort = 25 [ null = False,  default = "onos-cord:6653",  max_length = 255,  content_type = "stripped",  blank = False,  modifier = required,  db_index = False ];
+}
\ No newline at end of file
diff --git a/xos/genx/protos/services/vtrservice.proto b/xos/genx/protos/services/vtrservice.proto
new file mode 100644
index 0000000..0ad6a1d
--- /dev/null
+++ b/xos/genx/protos/services/vtrservice.proto
@@ -0,0 +1,16 @@
+
+message VTRService {
+  optional string description = 1 [ null = True,  max_length = 254,  blank = True,  help_text = "Description of Service",  modifier = optional,  db_index = False ];
+  required bool enabled = 2 [ db_index = False,  default = True,  modifier = required,  null = False,  blank = True ];
+  required string kind = 3 [ null = False,  default = "generic",  max_length = 30,  content_type = "stripped",  blank = False,  help_text = "Kind of service",  modifier = required,  db_index = False ];
+  required string name = 4 [ null = False,  max_length = 30,  content_type = "stripped",  blank = False,  help_text = "Service Name",  modifier = required,  db_index = False ];
+  optional string versionNumber = 5 [ null = True,  max_length = 30,  content_type = "stripped",  blank = True,  help_text = "Version of Service Definition",  modifier = optional,  db_index = False ];
+  required bool published = 6 [ db_index = False,  default = True,  modifier = required,  null = False,  blank = True ];
+  optional string view_url = 7 [ null = True,  max_length = 1024,  content_type = "stripped",  blank = True,  modifier = optional,  db_index = False ];
+  optional string icon_url = 8 [ null = True,  max_length = 1024,  content_type = "stripped",  blank = True,  modifier = optional,  db_index = False ];
+  optional string public_key = 9 [ null = True,  max_length = 1024,  blank = True,  help_text = "Public key string",  modifier = optional,  db_index = False ];
+  optional string private_key_fn = 10 [ null = True,  max_length = 1024,  content_type = "stripped",  blank = True,  modifier = optional,  db_index = False ];
+  optional string service_specific_id = 11 [ null = True,  max_length = 30,  content_type = "stripped",  blank = True,  modifier = optional,  db_index = False ];
+  optional string service_specific_attribute = 12 [ db_index = False,  modifier = optional,  null = True,  blank = True ];
+  optional int32 controller = 13 [ null = True,  blank = True,  help_text = "The Service Controller this Service uses",  model = ServiceController,  modifier = optional,  type = link,  port = services,  db_index = True ];
+}
\ No newline at end of file
diff --git a/xos/genx/protos/services/vtrtenant.proto b/xos/genx/protos/services/vtrtenant.proto
new file mode 100644
index 0000000..54d6e60
--- /dev/null
+++ b/xos/genx/protos/services/vtrtenant.proto
@@ -0,0 +1,21 @@
+
+message VTRTenant {
+  optional string name = 1 [ null = True,  max_length = 200,  content_type = "stripped",  blank = True,  modifier = optional,  db_index = False ];
+  required string kind = 2 [ null = False,  default = "generic",  max_length = 30,  content_type = "stripped",  blank = False,  modifier = required,  db_index = False ];
+  required int32 provider_service = 3 [ null = False,  blank = False,  model = Service,  modifier = required,  type = link,  port = provided_tenants,  db_index = True ];
+  optional int32 subscriber_service = 4 [ null = True,  blank = True,  model = Service,  modifier = optional,  type = link,  port = subscribed_tenants,  db_index = True ];
+  optional int32 subscriber_tenant = 5 [ null = True,  blank = True,  model = Tenant,  modifier = optional,  type = link,  port = subscribed_tenants,  db_index = True ];
+  optional int32 subscriber_user = 6 [ null = True,  blank = True,  model = User,  modifier = optional,  type = link,  port = subscribed_tenants,  db_index = True ];
+  optional int32 subscriber_root = 7 [ null = True,  blank = True,  model = TenantRoot,  modifier = optional,  type = link,  port = subscribed_tenants,  db_index = True ];
+  optional int32 subscriber_network = 8 [ null = True,  blank = True,  model = Network,  modifier = optional,  type = link,  port = subscribed_tenants,  db_index = True ];
+  optional string service_specific_id = 9 [ null = True,  max_length = 30,  content_type = "stripped",  blank = True,  modifier = optional,  db_index = False ];
+  optional string service_specific_attribute = 10 [ db_index = False,  modifier = optional,  null = True,  blank = True ];
+  required string connect_method = 11 [ null = False,  default = "na",  choices = "(('public', 'Public'), ('private', 'Private'), ('private-unidirectional', 'Private Unidirectional'), ('na', 'Not Applicable'))",  max_length = 30,  blank = False,  modifier = required,  db_index = False ];
+  required string test = 12 [ null = False,  choices = "(('ping', 'Ping'), ('traceroute', 'Trace Route'), ('tcpdump', 'Tcp Dump'))",  max_length = 30,  content_type = "stripped",  blank = False,  help_text = "type of test",  modifier = required,  db_index = False ];
+  required string scope = 13 [ null = False,  choices = "(('container', 'Container'), ('vm', 'VM'))",  max_length = 30,  content_type = "stripped",  blank = False,  help_text = "scope of test",  modifier = required,  db_index = False ];
+  optional string argument = 14 [ null = True,  max_length = 40,  content_type = "stripped",  blank = True,  modifier = optional,  db_index = False ];
+  optional string result = 15 [ db_index = False,  modifier = optional,  null = True,  blank = True ];
+  optional string result_code = 16 [ null = True,  max_length = 32,  content_type = "stripped",  blank = True,  modifier = optional,  db_index = False ];
+  required int32 target_type = 17 [ null = False,  blank = False,  model = ContentType,  modifier = required,  type = link,  port = vtrtenant,  db_index = True ];
+  required uint32 target_id = 18 [ db_index = False,  modifier = required,  null = False,  blank = False ];
+}
\ No newline at end of file
diff --git a/xos/genx/xprotos/services.exampleservice/exampleservice.xproto b/xos/genx/xprotos/services.exampleservice/exampleservice.xproto
new file mode 100644
index 0000000..373022c
--- /dev/null
+++ b/xos/genx/xprotos/services.exampleservice/exampleservice.xproto
@@ -0,0 +1,18 @@
+
+
+message ExampleService {
+     optional string description = 1 [help_text = "Description of Service", max_length = 254, null = True, db_index = False, blank = True];
+     required bool enabled = 2 [default = True, null = False, db_index = False, blank = True];
+     required string kind = 3 [default = "generic", max_length = 30, content_type = "stripped", blank = False, help_text = "Kind of service", null = False, db_index = False];
+     required string name = 4 [max_length = 30, content_type = "stripped", blank = False, help_text = "Service Name", null = False, db_index = False];
+     optional string versionNumber = 5 [max_length = 30, content_type = "stripped", blank = True, help_text = "Version of Service Definition", null = True, db_index = False];
+     required bool published = 6 [default = True, null = False, db_index = False, blank = True];
+     optional string view_url = 7 [db_index = False, max_length = 1024, null = True, content_type = "stripped", blank = True];
+     optional string icon_url = 8 [db_index = False, max_length = 1024, null = True, content_type = "stripped", blank = True];
+     optional string public_key = 9 [help_text = "Public key string", max_length = 1024, null = True, db_index = False, blank = True];
+     optional string private_key_fn = 10 [db_index = False, max_length = 1024, null = True, content_type = "stripped", blank = True];
+     optional string service_specific_id = 11 [db_index = False, max_length = 30, null = True, content_type = "stripped", blank = True];
+     optional string service_specific_attribute = 12 [db_index = False, null = True, blank = True];
+     optional manytoone controller->ServiceController:services = 13 [help_text = "The Service Controller this Service uses", null = True, db_index = True, blank = True];
+     required string service_message = 14 [help_text = "Service Message to Display", max_length = 254, null = False, db_index = False, blank = False];
+}
diff --git a/xos/genx/xprotos/services.exampleservice/exampletenant.xproto b/xos/genx/xprotos/services.exampleservice/exampletenant.xproto
new file mode 100644
index 0000000..85404ee
--- /dev/null
+++ b/xos/genx/xprotos/services.exampleservice/exampletenant.xproto
@@ -0,0 +1,20 @@
+
+
+message ExampleTenant {
+     optional string name = 1 [db_index = False, max_length = 200, null = True, content_type = "stripped", blank = True];
+     required string kind = 2 [default = "generic", max_length = 30, content_type = "stripped", blank = False, null = False, db_index = False];
+     required manytoone provider_service->Service:provided_tenants = 3 [db_index = True, null = False, blank = False];
+     optional manytoone subscriber_service->Service:subscribed_tenants = 4 [db_index = True, null = True, blank = True];
+     optional manytoone subscriber_tenant->Tenant:subscribed_tenants = 5 [db_index = True, null = True, blank = True];
+     optional manytoone subscriber_user->User:subscribed_tenants = 6 [db_index = True, null = True, blank = True];
+     optional manytoone subscriber_root->TenantRoot:subscribed_tenants = 7 [db_index = True, null = True, blank = True];
+     optional manytoone subscriber_network->Network:subscribed_tenants = 8 [db_index = True, null = True, blank = True];
+     optional string service_specific_id = 9 [db_index = False, max_length = 30, null = True, content_type = "stripped", blank = True];
+     optional string service_specific_attribute = 10 [db_index = False, null = True, blank = True];
+     required string connect_method = 11 [default = "na", choices = "(('public', 'Public'), ('private', 'Private'), ('private-unidirectional', 'Private Unidirectional'), ('na', 'Not Applicable'))", max_length = 30, blank = False, null = False, db_index = False];
+     optional manytoone instance->Instance:+ = 12 [help_text = "Instance used by this Tenant", null = True, db_index = True, blank = True];
+     optional manytoone creator->User:+ = 13 [help_text = "Creator of this Tenant", null = True, db_index = True, blank = True];
+     optional string external_hostname = 14 [max_length = 30, content_type = "stripped", blank = True, help_text = "External host name", null = True, db_index = False];
+     optional string external_container = 15 [max_length = 30, content_type = "stripped", blank = True, help_text = "External host name", null = True, db_index = False];
+     required string tenant_message = 16 [help_text = "Tenant Message to Display", max_length = 254, null = False, db_index = False, blank = False];
+}
diff --git a/xos/genx/xprotos/services.fabric/fabricservice.xproto b/xos/genx/xprotos/services.fabric/fabricservice.xproto
new file mode 100644
index 0000000..662d7ea
--- /dev/null
+++ b/xos/genx/xprotos/services.fabric/fabricservice.xproto
@@ -0,0 +1,18 @@
+
+
+message FabricService {
+     optional string description = 1 [help_text = "Description of Service", max_length = 254, null = True, db_index = False, blank = True];
+     required bool enabled = 2 [default = True, null = False, db_index = False, blank = True];
+     required string kind = 3 [default = "generic", max_length = 30, content_type = "stripped", blank = False, help_text = "Kind of service", null = False, db_index = False];
+     required string name = 4 [max_length = 30, content_type = "stripped", blank = False, help_text = "Service Name", null = False, db_index = False];
+     optional string versionNumber = 5 [max_length = 30, content_type = "stripped", blank = True, help_text = "Version of Service Definition", null = True, db_index = False];
+     required bool published = 6 [default = True, null = False, db_index = False, blank = True];
+     optional string view_url = 7 [db_index = False, max_length = 1024, null = True, content_type = "stripped", blank = True];
+     optional string icon_url = 8 [db_index = False, max_length = 1024, null = True, content_type = "stripped", blank = True];
+     optional string public_key = 9 [help_text = "Public key string", max_length = 1024, null = True, db_index = False, blank = True];
+     optional string private_key_fn = 10 [db_index = False, max_length = 1024, null = True, content_type = "stripped", blank = True];
+     optional string service_specific_id = 11 [db_index = False, max_length = 30, null = True, content_type = "stripped", blank = True];
+     optional string service_specific_attribute = 12 [db_index = False, null = True, blank = True];
+     optional manytoone controller->ServiceController:services = 13 [help_text = "The Service Controller this Service uses", null = True, db_index = True, blank = True];
+     required bool autoconfig = 14 [help_text = "Autoconfigure the fabric", default = True, null = False, db_index = False, blank = True];
+}
diff --git a/xos/genx/xprotos/services.onos/onosapp.xproto b/xos/genx/xprotos/services.onos/onosapp.xproto
new file mode 100644
index 0000000..91af3c8
--- /dev/null
+++ b/xos/genx/xprotos/services.onos/onosapp.xproto
@@ -0,0 +1,18 @@
+
+
+message ONOSApp {
+     optional string name = 1 [db_index = False, max_length = 200, null = True, content_type = "stripped", blank = True];
+     required string kind = 2 [default = "generic", max_length = 30, content_type = "stripped", blank = False, null = False, db_index = False];
+     required manytoone provider_service->Service:provided_tenants = 3 [db_index = True, null = False, blank = False];
+     optional manytoone subscriber_service->Service:subscribed_tenants = 4 [db_index = True, null = True, blank = True];
+     optional manytoone subscriber_tenant->Tenant:subscribed_tenants = 5 [db_index = True, null = True, blank = True];
+     optional manytoone subscriber_user->User:subscribed_tenants = 6 [db_index = True, null = True, blank = True];
+     optional manytoone subscriber_root->TenantRoot:subscribed_tenants = 7 [db_index = True, null = True, blank = True];
+     optional manytoone subscriber_network->Network:subscribed_tenants = 8 [db_index = True, null = True, blank = True];
+     optional string service_specific_id = 9 [db_index = False, max_length = 30, null = True, content_type = "stripped", blank = True];
+     optional string service_specific_attribute = 10 [db_index = False, null = True, blank = True];
+     required string connect_method = 11 [default = "na", choices = "(('public', 'Public'), ('private', 'Private'), ('private-unidirectional', 'Private Unidirectional'), ('na', 'Not Applicable'))", max_length = 30, blank = False, null = False, db_index = False];
+     optional string install_dependencies = 12 [db_index = False, null = True, blank = True];
+     optional string dependencies = 13 [db_index = False, null = True, blank = True];
+     optional manytoone creator->User:onos_apps = 14 [db_index = True, null = True, blank = True];
+}
diff --git a/xos/genx/xprotos/services.onos/onosservice.xproto b/xos/genx/xprotos/services.onos/onosservice.xproto
new file mode 100644
index 0000000..0de950e
--- /dev/null
+++ b/xos/genx/xprotos/services.onos/onosservice.xproto
@@ -0,0 +1,21 @@
+
+
+message ONOSService {
+     optional string description = 1 [help_text = "Description of Service", max_length = 254, null = True, db_index = False, blank = True];
+     required bool enabled = 2 [default = True, null = False, db_index = False, blank = True];
+     required string kind = 3 [default = "generic", max_length = 30, content_type = "stripped", blank = False, help_text = "Kind of service", null = False, db_index = False];
+     required string name = 4 [max_length = 30, content_type = "stripped", blank = False, help_text = "Service Name", null = False, db_index = False];
+     optional string versionNumber = 5 [max_length = 30, content_type = "stripped", blank = True, help_text = "Version of Service Definition", null = True, db_index = False];
+     required bool published = 6 [default = True, null = False, db_index = False, blank = True];
+     optional string view_url = 7 [db_index = False, max_length = 1024, null = True, content_type = "stripped", blank = True];
+     optional string icon_url = 8 [db_index = False, max_length = 1024, null = True, content_type = "stripped", blank = True];
+     optional string public_key = 9 [help_text = "Public key string", max_length = 1024, null = True, db_index = False, blank = True];
+     optional string private_key_fn = 10 [db_index = False, max_length = 1024, null = True, content_type = "stripped", blank = True];
+     optional string service_specific_id = 11 [db_index = False, max_length = 30, null = True, content_type = "stripped", blank = True];
+     optional string service_specific_attribute = 12 [db_index = False, null = True, blank = True];
+     optional manytoone controller->ServiceController:services = 13 [help_text = "The Service Controller this Service uses", null = True, db_index = True, blank = True];
+     optional string rest_hostname = 14 [db_index = False, max_length = 255, null = True, content_type = "stripped", blank = True];
+     required int32 rest_port = 15 [default = 8181, null = False, db_index = False, blank = False];
+     required bool no_container = 16 [default = False, null = False, db_index = False, blank = True];
+     optional string node_key = 17 [db_index = False, max_length = 1024, null = True, content_type = "stripped", blank = True];
+}
diff --git a/xos/genx/xprotos/services.volt/accessagent.xproto b/xos/genx/xprotos/services.volt/accessagent.xproto
new file mode 100644
index 0000000..d97622a
--- /dev/null
+++ b/xos/genx/xprotos/services.volt/accessagent.xproto
@@ -0,0 +1,7 @@
+
+
+message AccessAgent {
+     required string name = 1 [help_text = "name of agent", max_length = 254, null = False, db_index = False, blank = False];
+     required manytoone volt_service->VOLTService:access_agents = 2 [db_index = True, null = False, blank = False];
+     optional string mac = 3 [help_text = "MAC Address or Access Agent", max_length = 32, null = True, db_index = False, blank = True];
+}
diff --git a/xos/genx/xprotos/services.volt/accessdevice.xproto b/xos/genx/xprotos/services.volt/accessdevice.xproto
new file mode 100644
index 0000000..73242dd
--- /dev/null
+++ b/xos/genx/xprotos/services.volt/accessdevice.xproto
@@ -0,0 +1,7 @@
+
+
+message AccessDevice {
+     required manytoone volt_device->VOLTDevice:access_devices = 1 [db_index = True, null = False, blank = False];
+     optional int32 uplink = 2 [db_index = False, null = True, blank = True];
+     optional int32 vlan = 3 [db_index = False, null = True, blank = True];
+}
diff --git a/xos/genx/xprotos/services.volt/agentportmapping.xproto b/xos/genx/xprotos/services.volt/agentportmapping.xproto
new file mode 100644
index 0000000..f62ed9a
--- /dev/null
+++ b/xos/genx/xprotos/services.volt/agentportmapping.xproto
@@ -0,0 +1,7 @@
+
+
+message AgentPortMapping {
+     required manytoone access_agent->AccessAgent:port_mappings = 1 [db_index = True, null = False, blank = False];
+     optional string mac = 2 [help_text = "MAC Address", max_length = 32, null = True, db_index = False, blank = True];
+     optional string port = 3 [help_text = "Openflow port ID", max_length = 32, null = True, db_index = False, blank = True];
+}
diff --git a/xos/genx/xprotos/services.volt/cordsubscriberroot.xproto b/xos/genx/xprotos/services.volt/cordsubscriberroot.xproto
new file mode 100644
index 0000000..b344f62
--- /dev/null
+++ b/xos/genx/xprotos/services.volt/cordsubscriberroot.xproto
@@ -0,0 +1,19 @@
+
+
+message CordSubscriberRoot {
+     required string kind = 1 [default = "generic", max_length = 30, content_type = "stripped", blank = False, null = False, db_index = False];
+     optional string name = 2 [max_length = 255, content_type = "stripped", blank = True, help_text = "name", null = True, db_index = False];
+     optional string service_specific_attribute = 3 [db_index = False, null = True, blank = True];
+     optional string service_specific_id = 4 [db_index = False, max_length = 30, null = True, content_type = "stripped", blank = True];
+     required bool firewall_enable = 5 [default = False, null = False, db_index = False, blank = True];
+     optional string firewall_rules = 6 [default = "accept all anywhere anywhere", null = True, db_index = False, blank = True];
+     required bool url_filter_enable = 7 [default = False, null = False, db_index = False, blank = True];
+     optional string url_filter_rules = 8 [default = "allow all", null = True, db_index = False, blank = True];
+     required string url_filter_level = 9 [default = "PG", max_length = 30, content_type = "stripped", blank = False, null = False, db_index = False];
+     required bool cdn_enable = 10 [default = False, null = False, db_index = False, blank = True];
+     required bool is_demo_user = 11 [default = False, null = False, db_index = False, blank = True];
+     required int32 uplink_speed = 12 [default = 1000000000, null = False, db_index = False, blank = False];
+     required int32 downlink_speed = 13 [default = 1000000000, null = False, db_index = False, blank = False];
+     required bool enable_uverse = 14 [default = True, null = False, db_index = False, blank = True];
+     required string status = 15 [default = "enabled", choices = "(('enabled', 'Enabled'), ('suspended', 'Suspended'), ('delinquent', 'Delinquent'), ('copyrightviolation', 'Copyright Violation'))", max_length = 30, content_type = "stripped", blank = False, null = False, db_index = False];
+}
diff --git a/xos/genx/xprotos/services.volt/voltdevice.xproto b/xos/genx/xprotos/services.volt/voltdevice.xproto
new file mode 100644
index 0000000..ea15204
--- /dev/null
+++ b/xos/genx/xprotos/services.volt/voltdevice.xproto
@@ -0,0 +1,9 @@
+
+
+message VOLTDevice {
+     required string name = 1 [help_text = "name of device", max_length = 254, null = False, db_index = False, blank = False];
+     required manytoone volt_service->VOLTService:volt_devices = 2 [db_index = True, null = False, blank = False];
+     optional string openflow_id = 3 [help_text = "OpenFlow ID", max_length = 254, null = True, db_index = False, blank = True];
+     optional string driver = 4 [help_text = "driver", max_length = 254, null = True, db_index = False, blank = True];
+     optional manytoone access_agent->AccessAgent:volt_devices = 5 [db_index = True, null = True, blank = True];
+}
diff --git a/xos/genx/xprotos/services.volt/voltservice.xproto b/xos/genx/xprotos/services.volt/voltservice.xproto
new file mode 100644
index 0000000..51a362f
--- /dev/null
+++ b/xos/genx/xprotos/services.volt/voltservice.xproto
@@ -0,0 +1,17 @@
+
+
+message VOLTService {
+     optional string description = 1 [help_text = "Description of Service", max_length = 254, null = True, db_index = False, blank = True];
+     required bool enabled = 2 [default = True, null = False, db_index = False, blank = True];
+     required string kind = 3 [default = "generic", max_length = 30, content_type = "stripped", blank = False, help_text = "Kind of service", null = False, db_index = False];
+     required string name = 4 [max_length = 30, content_type = "stripped", blank = False, help_text = "Service Name", null = False, db_index = False];
+     optional string versionNumber = 5 [max_length = 30, content_type = "stripped", blank = True, help_text = "Version of Service Definition", null = True, db_index = False];
+     required bool published = 6 [default = True, null = False, db_index = False, blank = True];
+     optional string view_url = 7 [db_index = False, max_length = 1024, null = True, content_type = "stripped", blank = True];
+     optional string icon_url = 8 [db_index = False, max_length = 1024, null = True, content_type = "stripped", blank = True];
+     optional string public_key = 9 [help_text = "Public key string", max_length = 1024, null = True, db_index = False, blank = True];
+     optional string private_key_fn = 10 [db_index = False, max_length = 1024, null = True, content_type = "stripped", blank = True];
+     optional string service_specific_id = 11 [db_index = False, max_length = 30, null = True, content_type = "stripped", blank = True];
+     optional string service_specific_attribute = 12 [db_index = False, null = True, blank = True];
+     optional manytoone controller->ServiceController:services = 13 [help_text = "The Service Controller this Service uses", null = True, db_index = True, blank = True];
+}
diff --git a/xos/genx/xprotos/services.volt/volttenant.xproto b/xos/genx/xprotos/services.volt/volttenant.xproto
new file mode 100644
index 0000000..543f132
--- /dev/null
+++ b/xos/genx/xprotos/services.volt/volttenant.xproto
@@ -0,0 +1,18 @@
+
+
+message VOLTTenant {
+     optional string name = 1 [db_index = False, max_length = 200, null = True, content_type = "stripped", blank = True];
+     required string kind = 2 [default = "generic", max_length = 30, content_type = "stripped", blank = False, null = False, db_index = False];
+     required manytoone provider_service->Service:provided_tenants = 3 [db_index = True, null = False, blank = False];
+     optional manytoone subscriber_service->Service:subscribed_tenants = 4 [db_index = True, null = True, blank = True];
+     optional manytoone subscriber_tenant->Tenant:subscribed_tenants = 5 [db_index = True, null = True, blank = True];
+     optional manytoone subscriber_user->User:subscribed_tenants = 6 [db_index = True, null = True, blank = True];
+     optional manytoone subscriber_root->TenantRoot:subscribed_tenants = 7 [db_index = True, null = True, blank = True];
+     optional manytoone subscriber_network->Network:subscribed_tenants = 8 [db_index = True, null = True, blank = True];
+     optional string service_specific_id = 9 [db_index = False, max_length = 30, null = True, content_type = "stripped", blank = True];
+     optional string service_specific_attribute = 10 [db_index = False, null = True, blank = True];
+     required string connect_method = 11 [default = "na", choices = "(('public', 'Public'), ('private', 'Private'), ('private-unidirectional', 'Private Unidirectional'), ('na', 'Not Applicable'))", max_length = 30, blank = False, null = False, db_index = False];
+     optional int32 s_tag = 12 [help_text = "s-tag", null = True, db_index = False, blank = True];
+     optional int32 c_tag = 13 [help_text = "c-tag", null = True, db_index = False, blank = True];
+     optional manytoone creator->User:created_volts = 14 [db_index = True, null = True, blank = True];
+}
diff --git a/xos/genx/xprotos/services.volt/vrouterservice.xproto b/xos/genx/xprotos/services.volt/vrouterservice.xproto
new file mode 100644
index 0000000..ce77671
--- /dev/null
+++ b/xos/genx/xprotos/services.volt/vrouterservice.xproto
@@ -0,0 +1,21 @@
+
+
+message VRouterService {
+     optional string description = 1 [help_text = "Description of Service", max_length = 254, null = True, db_index = False, blank = True];
+     required bool enabled = 2 [default = True, null = False, db_index = False, blank = True];
+     required string kind = 3 [default = "generic", max_length = 30, content_type = "stripped", blank = False, help_text = "Kind of service", null = False, db_index = False];
+     required string name = 4 [max_length = 30, content_type = "stripped", blank = False, help_text = "Service Name", null = False, db_index = False];
+     optional string versionNumber = 5 [max_length = 30, content_type = "stripped", blank = True, help_text = "Version of Service Definition", null = True, db_index = False];
+     required bool published = 6 [default = True, null = False, db_index = False, blank = True];
+     optional string view_url = 7 [db_index = False, max_length = 1024, null = True, content_type = "stripped", blank = True];
+     optional string icon_url = 8 [db_index = False, max_length = 1024, null = True, content_type = "stripped", blank = True];
+     optional string public_key = 9 [help_text = "Public key string", max_length = 1024, null = True, db_index = False, blank = True];
+     optional string private_key_fn = 10 [db_index = False, max_length = 1024, null = True, content_type = "stripped", blank = True];
+     optional string service_specific_id = 11 [db_index = False, max_length = 30, null = True, content_type = "stripped", blank = True];
+     optional string service_specific_attribute = 12 [db_index = False, null = True, blank = True];
+     optional manytoone controller->ServiceController:services = 13 [help_text = "The Service Controller this Service uses", null = True, db_index = True, blank = True];
+     optional string rest_hostname = 14 [db_index = False, max_length = 255, null = True, content_type = "stripped", blank = True];
+     required int32 rest_port = 15 [default = 8181, null = False, db_index = False, blank = False];
+     required string rest_user = 16 [default = "onos", max_length = 255, content_type = "stripped", blank = False, null = False, db_index = False];
+     required string rest_pass = 17 [default = "rocks", max_length = 255, content_type = "stripped", blank = False, null = False, db_index = False];
+}
diff --git a/xos/genx/xprotos/services.volt/vroutertenant.xproto b/xos/genx/xprotos/services.volt/vroutertenant.xproto
new file mode 100644
index 0000000..2189d51
--- /dev/null
+++ b/xos/genx/xprotos/services.volt/vroutertenant.xproto
@@ -0,0 +1,18 @@
+
+
+message VRouterTenant {
+     optional string name = 1 [db_index = False, max_length = 200, null = True, content_type = "stripped", blank = True];
+     required string kind = 2 [default = "generic", max_length = 30, content_type = "stripped", blank = False, null = False, db_index = False];
+     required manytoone provider_service->Service:provided_tenants = 3 [db_index = True, null = False, blank = False];
+     optional manytoone subscriber_service->Service:subscribed_tenants = 4 [db_index = True, null = True, blank = True];
+     optional manytoone subscriber_tenant->Tenant:subscribed_tenants = 5 [db_index = True, null = True, blank = True];
+     optional manytoone subscriber_user->User:subscribed_tenants = 6 [db_index = True, null = True, blank = True];
+     optional manytoone subscriber_root->TenantRoot:subscribed_tenants = 7 [db_index = True, null = True, blank = True];
+     optional manytoone subscriber_network->Network:subscribed_tenants = 8 [db_index = True, null = True, blank = True];
+     optional string service_specific_id = 9 [db_index = False, max_length = 30, null = True, content_type = "stripped", blank = True];
+     optional string service_specific_attribute = 10 [db_index = False, null = True, blank = True];
+     required string connect_method = 11 [default = "na", choices = "(('public', 'Public'), ('private', 'Private'), ('private-unidirectional', 'Private Unidirectional'), ('na', 'Not Applicable'))", max_length = 30, blank = False, null = False, db_index = False];
+     optional string public_ip = 12 [db_index = False, max_length = 30, null = True, content_type = "stripped", blank = True];
+     optional string public_mac = 13 [db_index = False, max_length = 30, null = True, content_type = "stripped", blank = True];
+     optional manytoone address_pool->AddressPool:vrouter_tenants = 14 [db_index = True, null = True, blank = True];
+}
diff --git a/xos/genx/xprotos/services.vrouter/vrouterapp.xproto b/xos/genx/xprotos/services.vrouter/vrouterapp.xproto
new file mode 100644
index 0000000..d1d9ca8
--- /dev/null
+++ b/xos/genx/xprotos/services.vrouter/vrouterapp.xproto
@@ -0,0 +1,8 @@
+
+
+message VRouterApp {
+     required manytoone vrouter_service->VRouterService:apps = 1 [db_index = True, null = False, blank = False];
+     required string name = 2 [help_text = "application name", max_length = 50, null = False, db_index = False, blank = False];
+     required string control_plane_connect_point = 3 [help_text = "port identifier in ONOS", max_length = 21, null = False, db_index = False, blank = False];
+     required bool ospf_enabled = 4 [help_text = "ospf enabled", default = True, null = False, db_index = False, blank = True];
+}
diff --git a/xos/genx/xprotos/services.vrouter/vrouterdevice.xproto b/xos/genx/xprotos/services.vrouter/vrouterdevice.xproto
new file mode 100644
index 0000000..d4b1fcd
--- /dev/null
+++ b/xos/genx/xprotos/services.vrouter/vrouterdevice.xproto
@@ -0,0 +1,9 @@
+
+
+message VRouterDevice {
+     optional string name = 1 [help_text = "device friendly name", max_length = 20, null = True, db_index = False, blank = True];
+     required string openflow_id = 2 [help_text = "device identifier in ONOS", max_length = 20, null = False, db_index = False, blank = False];
+     required string config_key = 3 [default = "basic", max_length = 32, blank = False, help_text = "configuration key", null = False, db_index = False];
+     required string driver = 4 [help_text = "driver type", max_length = 32, null = False, db_index = False, blank = False];
+     required manytoone vrouter_service->VRouterService:devices = 5 [db_index = True, null = False, blank = False];
+}
diff --git a/xos/genx/xprotos/services.vrouter/vrouterinterface.xproto b/xos/genx/xprotos/services.vrouter/vrouterinterface.xproto
new file mode 100644
index 0000000..54e9786
--- /dev/null
+++ b/xos/genx/xprotos/services.vrouter/vrouterinterface.xproto
@@ -0,0 +1,8 @@
+
+
+message VRouterInterface {
+     required manytoone vrouter_port->VRouterPort:interfaces = 1 [db_index = True, null = False, blank = False];
+     required string name = 2 [help_text = "interface name", max_length = 10, null = False, db_index = False, blank = False];
+     required string mac = 3 [help_text = "interface mac", max_length = 17, null = False, db_index = False, blank = False];
+     optional string vlan = 4 [help_text = "interface vlan id", max_length = 10, null = True, db_index = False, blank = True];
+}
diff --git a/xos/genx/xprotos/services.vrouter/vrouterip.xproto b/xos/genx/xprotos/services.vrouter/vrouterip.xproto
new file mode 100644
index 0000000..2e8536e
--- /dev/null
+++ b/xos/genx/xprotos/services.vrouter/vrouterip.xproto
@@ -0,0 +1,7 @@
+
+
+message VRouterIp {
+     optional string name = 1 [help_text = "ip friendly name", max_length = 20, null = True, db_index = False, blank = True];
+     required manytoone vrouter_interface->VRouterInterface:ips = 2 [db_index = True, null = False, blank = False];
+     required string ip = 3 [help_text = "interface ips", max_length = 19, null = False, db_index = False, blank = False];
+}
diff --git a/xos/genx/xprotos/services.vrouter/vrouterport.xproto b/xos/genx/xprotos/services.vrouter/vrouterport.xproto
new file mode 100644
index 0000000..038e3ce
--- /dev/null
+++ b/xos/genx/xprotos/services.vrouter/vrouterport.xproto
@@ -0,0 +1,8 @@
+
+
+message VRouterPort {
+     optional string name = 1 [help_text = "port friendly name", max_length = 20, null = True, db_index = False, blank = True];
+     required string openflow_id = 2 [help_text = "port identifier in ONOS", max_length = 21, null = False, db_index = False, blank = False];
+     required manytoone vrouter_device->VRouterDevice:ports = 3 [db_index = True, null = False, blank = False];
+     required manytoone vrouter_service->VRouterService:device_ports = 4 [db_index = True, null = False, blank = False];
+}
diff --git a/xos/genx/xprotos/services.vrouter/vrouterservice.xproto b/xos/genx/xprotos/services.vrouter/vrouterservice.xproto
new file mode 100644
index 0000000..ce77671
--- /dev/null
+++ b/xos/genx/xprotos/services.vrouter/vrouterservice.xproto
@@ -0,0 +1,21 @@
+
+
+message VRouterService {
+     optional string description = 1 [help_text = "Description of Service", max_length = 254, null = True, db_index = False, blank = True];
+     required bool enabled = 2 [default = True, null = False, db_index = False, blank = True];
+     required string kind = 3 [default = "generic", max_length = 30, content_type = "stripped", blank = False, help_text = "Kind of service", null = False, db_index = False];
+     required string name = 4 [max_length = 30, content_type = "stripped", blank = False, help_text = "Service Name", null = False, db_index = False];
+     optional string versionNumber = 5 [max_length = 30, content_type = "stripped", blank = True, help_text = "Version of Service Definition", null = True, db_index = False];
+     required bool published = 6 [default = True, null = False, db_index = False, blank = True];
+     optional string view_url = 7 [db_index = False, max_length = 1024, null = True, content_type = "stripped", blank = True];
+     optional string icon_url = 8 [db_index = False, max_length = 1024, null = True, content_type = "stripped", blank = True];
+     optional string public_key = 9 [help_text = "Public key string", max_length = 1024, null = True, db_index = False, blank = True];
+     optional string private_key_fn = 10 [db_index = False, max_length = 1024, null = True, content_type = "stripped", blank = True];
+     optional string service_specific_id = 11 [db_index = False, max_length = 30, null = True, content_type = "stripped", blank = True];
+     optional string service_specific_attribute = 12 [db_index = False, null = True, blank = True];
+     optional manytoone controller->ServiceController:services = 13 [help_text = "The Service Controller this Service uses", null = True, db_index = True, blank = True];
+     optional string rest_hostname = 14 [db_index = False, max_length = 255, null = True, content_type = "stripped", blank = True];
+     required int32 rest_port = 15 [default = 8181, null = False, db_index = False, blank = False];
+     required string rest_user = 16 [default = "onos", max_length = 255, content_type = "stripped", blank = False, null = False, db_index = False];
+     required string rest_pass = 17 [default = "rocks", max_length = 255, content_type = "stripped", blank = False, null = False, db_index = False];
+}
diff --git a/xos/genx/xprotos/services.vrouter/vroutertenant.xproto b/xos/genx/xprotos/services.vrouter/vroutertenant.xproto
new file mode 100644
index 0000000..2189d51
--- /dev/null
+++ b/xos/genx/xprotos/services.vrouter/vroutertenant.xproto
@@ -0,0 +1,18 @@
+
+
+message VRouterTenant {
+     optional string name = 1 [db_index = False, max_length = 200, null = True, content_type = "stripped", blank = True];
+     required string kind = 2 [default = "generic", max_length = 30, content_type = "stripped", blank = False, null = False, db_index = False];
+     required manytoone provider_service->Service:provided_tenants = 3 [db_index = True, null = False, blank = False];
+     optional manytoone subscriber_service->Service:subscribed_tenants = 4 [db_index = True, null = True, blank = True];
+     optional manytoone subscriber_tenant->Tenant:subscribed_tenants = 5 [db_index = True, null = True, blank = True];
+     optional manytoone subscriber_user->User:subscribed_tenants = 6 [db_index = True, null = True, blank = True];
+     optional manytoone subscriber_root->TenantRoot:subscribed_tenants = 7 [db_index = True, null = True, blank = True];
+     optional manytoone subscriber_network->Network:subscribed_tenants = 8 [db_index = True, null = True, blank = True];
+     optional string service_specific_id = 9 [db_index = False, max_length = 30, null = True, content_type = "stripped", blank = True];
+     optional string service_specific_attribute = 10 [db_index = False, null = True, blank = True];
+     required string connect_method = 11 [default = "na", choices = "(('public', 'Public'), ('private', 'Private'), ('private-unidirectional', 'Private Unidirectional'), ('na', 'Not Applicable'))", max_length = 30, blank = False, null = False, db_index = False];
+     optional string public_ip = 12 [db_index = False, max_length = 30, null = True, content_type = "stripped", blank = True];
+     optional string public_mac = 13 [db_index = False, max_length = 30, null = True, content_type = "stripped", blank = True];
+     optional manytoone address_pool->AddressPool:vrouter_tenants = 14 [db_index = True, null = True, blank = True];
+}
diff --git a/xos/genx/xprotos/services.vsg/vrouterservice.xproto b/xos/genx/xprotos/services.vsg/vrouterservice.xproto
new file mode 100644
index 0000000..ce77671
--- /dev/null
+++ b/xos/genx/xprotos/services.vsg/vrouterservice.xproto
@@ -0,0 +1,21 @@
+
+
+message VRouterService {
+     optional string description = 1 [help_text = "Description of Service", max_length = 254, null = True, db_index = False, blank = True];
+     required bool enabled = 2 [default = True, null = False, db_index = False, blank = True];
+     required string kind = 3 [default = "generic", max_length = 30, content_type = "stripped", blank = False, help_text = "Kind of service", null = False, db_index = False];
+     required string name = 4 [max_length = 30, content_type = "stripped", blank = False, help_text = "Service Name", null = False, db_index = False];
+     optional string versionNumber = 5 [max_length = 30, content_type = "stripped", blank = True, help_text = "Version of Service Definition", null = True, db_index = False];
+     required bool published = 6 [default = True, null = False, db_index = False, blank = True];
+     optional string view_url = 7 [db_index = False, max_length = 1024, null = True, content_type = "stripped", blank = True];
+     optional string icon_url = 8 [db_index = False, max_length = 1024, null = True, content_type = "stripped", blank = True];
+     optional string public_key = 9 [help_text = "Public key string", max_length = 1024, null = True, db_index = False, blank = True];
+     optional string private_key_fn = 10 [db_index = False, max_length = 1024, null = True, content_type = "stripped", blank = True];
+     optional string service_specific_id = 11 [db_index = False, max_length = 30, null = True, content_type = "stripped", blank = True];
+     optional string service_specific_attribute = 12 [db_index = False, null = True, blank = True];
+     optional manytoone controller->ServiceController:services = 13 [help_text = "The Service Controller this Service uses", null = True, db_index = True, blank = True];
+     optional string rest_hostname = 14 [db_index = False, max_length = 255, null = True, content_type = "stripped", blank = True];
+     required int32 rest_port = 15 [default = 8181, null = False, db_index = False, blank = False];
+     required string rest_user = 16 [default = "onos", max_length = 255, content_type = "stripped", blank = False, null = False, db_index = False];
+     required string rest_pass = 17 [default = "rocks", max_length = 255, content_type = "stripped", blank = False, null = False, db_index = False];
+}
diff --git a/xos/genx/xprotos/services.vsg/vroutertenant.xproto b/xos/genx/xprotos/services.vsg/vroutertenant.xproto
new file mode 100644
index 0000000..2189d51
--- /dev/null
+++ b/xos/genx/xprotos/services.vsg/vroutertenant.xproto
@@ -0,0 +1,18 @@
+
+
+message VRouterTenant {
+     optional string name = 1 [db_index = False, max_length = 200, null = True, content_type = "stripped", blank = True];
+     required string kind = 2 [default = "generic", max_length = 30, content_type = "stripped", blank = False, null = False, db_index = False];
+     required manytoone provider_service->Service:provided_tenants = 3 [db_index = True, null = False, blank = False];
+     optional manytoone subscriber_service->Service:subscribed_tenants = 4 [db_index = True, null = True, blank = True];
+     optional manytoone subscriber_tenant->Tenant:subscribed_tenants = 5 [db_index = True, null = True, blank = True];
+     optional manytoone subscriber_user->User:subscribed_tenants = 6 [db_index = True, null = True, blank = True];
+     optional manytoone subscriber_root->TenantRoot:subscribed_tenants = 7 [db_index = True, null = True, blank = True];
+     optional manytoone subscriber_network->Network:subscribed_tenants = 8 [db_index = True, null = True, blank = True];
+     optional string service_specific_id = 9 [db_index = False, max_length = 30, null = True, content_type = "stripped", blank = True];
+     optional string service_specific_attribute = 10 [db_index = False, null = True, blank = True];
+     required string connect_method = 11 [default = "na", choices = "(('public', 'Public'), ('private', 'Private'), ('private-unidirectional', 'Private Unidirectional'), ('na', 'Not Applicable'))", max_length = 30, blank = False, null = False, db_index = False];
+     optional string public_ip = 12 [db_index = False, max_length = 30, null = True, content_type = "stripped", blank = True];
+     optional string public_mac = 13 [db_index = False, max_length = 30, null = True, content_type = "stripped", blank = True];
+     optional manytoone address_pool->AddressPool:vrouter_tenants = 14 [db_index = True, null = True, blank = True];
+}
diff --git a/xos/genx/xprotos/services.vsg/vsgservice.xproto b/xos/genx/xprotos/services.vsg/vsgservice.xproto
new file mode 100644
index 0000000..77d5fc9
--- /dev/null
+++ b/xos/genx/xprotos/services.vsg/vsgservice.xproto
@@ -0,0 +1,22 @@
+
+
+message VSGService {
+     optional string description = 1 [help_text = "Description of Service", max_length = 254, null = True, db_index = False, blank = True];
+     required bool enabled = 2 [default = True, null = False, db_index = False, blank = True];
+     required string kind = 3 [default = "generic", max_length = 30, content_type = "stripped", blank = False, help_text = "Kind of service", null = False, db_index = False];
+     required string name = 4 [max_length = 30, content_type = "stripped", blank = False, help_text = "Service Name", null = False, db_index = False];
+     optional string versionNumber = 5 [max_length = 30, content_type = "stripped", blank = True, help_text = "Version of Service Definition", null = True, db_index = False];
+     required bool published = 6 [default = True, null = False, db_index = False, blank = True];
+     optional string view_url = 7 [db_index = False, max_length = 1024, null = True, content_type = "stripped", blank = True];
+     optional string icon_url = 8 [db_index = False, max_length = 1024, null = True, content_type = "stripped", blank = True];
+     optional string public_key = 9 [help_text = "Public key string", max_length = 1024, null = True, db_index = False, blank = True];
+     optional string private_key_fn = 10 [db_index = False, max_length = 1024, null = True, content_type = "stripped", blank = True];
+     optional string service_specific_id = 11 [db_index = False, max_length = 30, null = True, content_type = "stripped", blank = True];
+     optional string service_specific_attribute = 12 [db_index = False, null = True, blank = True];
+     optional manytoone controller->ServiceController:services = 13 [help_text = "The Service Controller this Service uses", null = True, db_index = True, blank = True];
+     optional string url_filter_kind = 14 [choices = "((None, 'None'), ('safebrowsing', 'Safe Browsing'), ('answerx', 'AnswerX'))", max_length = 30, content_type = "stripped", blank = True, null = True, db_index = False];
+     required string dns_servers = 15 [default = "8.8.8.8", max_length = 255, content_type = "stripped", blank = False, null = False, db_index = False];
+     optional string node_label = 16 [db_index = False, max_length = 30, null = True, content_type = "stripped", blank = True];
+     required string docker_image_name = 17 [default = "docker.io/xosproject/vsg", max_length = 255, content_type = "stripped", blank = False, null = False, db_index = False];
+     required bool docker_insecure_registry = 18 [default = False, null = False, db_index = False, blank = True];
+}
diff --git a/xos/genx/xprotos/services.vsg/vsgtenant.xproto b/xos/genx/xprotos/services.vsg/vsgtenant.xproto
new file mode 100644
index 0000000..b89ef82
--- /dev/null
+++ b/xos/genx/xprotos/services.vsg/vsgtenant.xproto
@@ -0,0 +1,20 @@
+
+
+message VSGTenant {
+     optional string name = 1 [db_index = False, max_length = 200, null = True, content_type = "stripped", blank = True];
+     required string kind = 2 [default = "generic", max_length = 30, content_type = "stripped", blank = False, null = False, db_index = False];
+     required manytoone provider_service->Service:provided_tenants = 3 [db_index = True, null = False, blank = False];
+     optional manytoone subscriber_service->Service:subscribed_tenants = 4 [db_index = True, null = True, blank = True];
+     optional manytoone subscriber_tenant->Tenant:subscribed_tenants = 5 [db_index = True, null = True, blank = True];
+     optional manytoone subscriber_user->User:subscribed_tenants = 6 [db_index = True, null = True, blank = True];
+     optional manytoone subscriber_root->TenantRoot:subscribed_tenants = 7 [db_index = True, null = True, blank = True];
+     optional manytoone subscriber_network->Network:subscribed_tenants = 8 [db_index = True, null = True, blank = True];
+     optional string service_specific_id = 9 [db_index = False, max_length = 30, null = True, content_type = "stripped", blank = True];
+     optional string service_specific_attribute = 10 [db_index = False, null = True, blank = True];
+     required string connect_method = 11 [default = "na", choices = "(('public', 'Public'), ('private', 'Private'), ('private-unidirectional', 'Private Unidirectional'), ('na', 'Not Applicable'))", max_length = 30, blank = False, null = False, db_index = False];
+     optional manytoone instance->Instance:+ = 12 [help_text = "Instance used by this Tenant", null = True, db_index = True, blank = True];
+     optional manytoone creator->User:+ = 13 [help_text = "Creator of this Tenant", null = True, db_index = True, blank = True];
+     optional string external_hostname = 14 [max_length = 30, content_type = "stripped", blank = True, help_text = "External host name", null = True, db_index = False];
+     optional string external_container = 15 [max_length = 30, content_type = "stripped", blank = True, help_text = "External host name", null = True, db_index = False];
+     optional string last_ansible_hash = 16 [db_index = False, max_length = 128, null = True, content_type = "stripped", blank = True];
+}
diff --git a/xos/genx/xprotos/services.vtn/vtnservice.xproto b/xos/genx/xprotos/services.vtn/vtnservice.xproto
new file mode 100644
index 0000000..8510583
--- /dev/null
+++ b/xos/genx/xprotos/services.vtn/vtnservice.xproto
@@ -0,0 +1,29 @@
+
+
+message VTNService {
+     optional string description = 1 [help_text = "Description of Service", max_length = 254, null = True, db_index = False, blank = True];
+     required bool enabled = 2 [default = True, null = False, db_index = False, blank = True];
+     required string kind = 3 [default = "generic", max_length = 30, content_type = "stripped", blank = False, help_text = "Kind of service", null = False, db_index = False];
+     required string name = 4 [max_length = 30, content_type = "stripped", blank = False, help_text = "Service Name", null = False, db_index = False];
+     optional string versionNumber = 5 [max_length = 30, content_type = "stripped", blank = True, help_text = "Version of Service Definition", null = True, db_index = False];
+     required bool published = 6 [default = True, null = False, db_index = False, blank = True];
+     optional string view_url = 7 [db_index = False, max_length = 1024, null = True, content_type = "stripped", blank = True];
+     optional string icon_url = 8 [db_index = False, max_length = 1024, null = True, content_type = "stripped", blank = True];
+     optional string public_key = 9 [help_text = "Public key string", max_length = 1024, null = True, db_index = False, blank = True];
+     optional string private_key_fn = 10 [db_index = False, max_length = 1024, null = True, content_type = "stripped", blank = True];
+     optional string service_specific_id = 11 [db_index = False, max_length = 30, null = True, content_type = "stripped", blank = True];
+     optional string service_specific_attribute = 12 [db_index = False, null = True, blank = True];
+     optional manytoone controller->ServiceController:services = 13 [help_text = "The Service Controller this Service uses", null = True, db_index = True, blank = True];
+     required string privateGatewayMac = 14 [default = "00:00:00:00:00:01", max_length = 30, content_type = "stripped", blank = False, null = False, db_index = False];
+     required string localManagementIp = 15 [default = "172.27.0.1/24", max_length = 30, content_type = "stripped", blank = False, null = False, db_index = False];
+     required int32 ovsdbPort = 16 [default = 6641, null = False, db_index = False, blank = False];
+     required int32 sshPort = 17 [default = 22, null = False, db_index = False, blank = False];
+     required string sshUser = 18 [default = "root", max_length = 30, content_type = "stripped", blank = False, null = False, db_index = False];
+     required string sshKeyFile = 19 [default = "/root/node_key", max_length = 1024, content_type = "stripped", blank = False, null = False, db_index = False];
+     required int32 mgmtSubnetBits = 20 [default = 24, null = False, db_index = False, blank = False];
+     required string xosEndpoint = 21 [default = "http://xos/", max_length = 1024, content_type = "stripped", blank = False, null = False, db_index = False];
+     required string xosUser = 22 [default = "padmin@vicci.org", max_length = 255, content_type = "stripped", blank = False, null = False, db_index = False];
+     required string xosPassword = 23 [default = "letmein", max_length = 255, content_type = "stripped", blank = False, null = False, db_index = False];
+     required int32 vtnAPIVersion = 24 [default = 1, null = False, db_index = False, blank = False];
+     required string controllerPort = 25 [default = "onos-cord:6653", max_length = 255, content_type = "stripped", blank = False, null = False, db_index = False];
+}
diff --git a/xos/genx/xprotos/services.vtr/cordsubscriberroot.xproto b/xos/genx/xprotos/services.vtr/cordsubscriberroot.xproto
new file mode 100644
index 0000000..b344f62
--- /dev/null
+++ b/xos/genx/xprotos/services.vtr/cordsubscriberroot.xproto
@@ -0,0 +1,19 @@
+
+
+message CordSubscriberRoot {
+     required string kind = 1 [default = "generic", max_length = 30, content_type = "stripped", blank = False, null = False, db_index = False];
+     optional string name = 2 [max_length = 255, content_type = "stripped", blank = True, help_text = "name", null = True, db_index = False];
+     optional string service_specific_attribute = 3 [db_index = False, null = True, blank = True];
+     optional string service_specific_id = 4 [db_index = False, max_length = 30, null = True, content_type = "stripped", blank = True];
+     required bool firewall_enable = 5 [default = False, null = False, db_index = False, blank = True];
+     optional string firewall_rules = 6 [default = "accept all anywhere anywhere", null = True, db_index = False, blank = True];
+     required bool url_filter_enable = 7 [default = False, null = False, db_index = False, blank = True];
+     optional string url_filter_rules = 8 [default = "allow all", null = True, db_index = False, blank = True];
+     required string url_filter_level = 9 [default = "PG", max_length = 30, content_type = "stripped", blank = False, null = False, db_index = False];
+     required bool cdn_enable = 10 [default = False, null = False, db_index = False, blank = True];
+     required bool is_demo_user = 11 [default = False, null = False, db_index = False, blank = True];
+     required int32 uplink_speed = 12 [default = 1000000000, null = False, db_index = False, blank = False];
+     required int32 downlink_speed = 13 [default = 1000000000, null = False, db_index = False, blank = False];
+     required bool enable_uverse = 14 [default = True, null = False, db_index = False, blank = True];
+     required string status = 15 [default = "enabled", choices = "(('enabled', 'Enabled'), ('suspended', 'Suspended'), ('delinquent', 'Delinquent'), ('copyrightviolation', 'Copyright Violation'))", max_length = 30, content_type = "stripped", blank = False, null = False, db_index = False];
+}
diff --git a/xos/genx/xprotos/services.vtr/vtrservice.xproto b/xos/genx/xprotos/services.vtr/vtrservice.xproto
new file mode 100644
index 0000000..9b218e9
--- /dev/null
+++ b/xos/genx/xprotos/services.vtr/vtrservice.xproto
@@ -0,0 +1,17 @@
+
+
+message VTRService {
+     optional string description = 1 [help_text = "Description of Service", max_length = 254, null = True, db_index = False, blank = True];
+     required bool enabled = 2 [default = True, null = False, db_index = False, blank = True];
+     required string kind = 3 [default = "generic", max_length = 30, content_type = "stripped", blank = False, help_text = "Kind of service", null = False, db_index = False];
+     required string name = 4 [max_length = 30, content_type = "stripped", blank = False, help_text = "Service Name", null = False, db_index = False];
+     optional string versionNumber = 5 [max_length = 30, content_type = "stripped", blank = True, help_text = "Version of Service Definition", null = True, db_index = False];
+     required bool published = 6 [default = True, null = False, db_index = False, blank = True];
+     optional string view_url = 7 [db_index = False, max_length = 1024, null = True, content_type = "stripped", blank = True];
+     optional string icon_url = 8 [db_index = False, max_length = 1024, null = True, content_type = "stripped", blank = True];
+     optional string public_key = 9 [help_text = "Public key string", max_length = 1024, null = True, db_index = False, blank = True];
+     optional string private_key_fn = 10 [db_index = False, max_length = 1024, null = True, content_type = "stripped", blank = True];
+     optional string service_specific_id = 11 [db_index = False, max_length = 30, null = True, content_type = "stripped", blank = True];
+     optional string service_specific_attribute = 12 [db_index = False, null = True, blank = True];
+     optional manytoone controller->ServiceController:services = 13 [help_text = "The Service Controller this Service uses", null = True, db_index = True, blank = True];
+}
diff --git a/xos/genx/xprotos/services.vtr/vtrtenant.xproto b/xos/genx/xprotos/services.vtr/vtrtenant.xproto
new file mode 100644
index 0000000..ed418b7
--- /dev/null
+++ b/xos/genx/xprotos/services.vtr/vtrtenant.xproto
@@ -0,0 +1,22 @@
+
+
+message VTRTenant {
+     optional string name = 1 [db_index = False, max_length = 200, null = True, content_type = "stripped", blank = True];
+     required string kind = 2 [default = "generic", max_length = 30, content_type = "stripped", blank = False, null = False, db_index = False];
+     required manytoone provider_service->Service:provided_tenants = 3 [db_index = True, null = False, blank = False];
+     optional manytoone subscriber_service->Service:subscribed_tenants = 4 [db_index = True, null = True, blank = True];
+     optional manytoone subscriber_tenant->Tenant:subscribed_tenants = 5 [db_index = True, null = True, blank = True];
+     optional manytoone subscriber_user->User:subscribed_tenants = 6 [db_index = True, null = True, blank = True];
+     optional manytoone subscriber_root->TenantRoot:subscribed_tenants = 7 [db_index = True, null = True, blank = True];
+     optional manytoone subscriber_network->Network:subscribed_tenants = 8 [db_index = True, null = True, blank = True];
+     optional string service_specific_id = 9 [db_index = False, max_length = 30, null = True, content_type = "stripped", blank = True];
+     optional string service_specific_attribute = 10 [db_index = False, null = True, blank = True];
+     required string connect_method = 11 [default = "na", choices = "(('public', 'Public'), ('private', 'Private'), ('private-unidirectional', 'Private Unidirectional'), ('na', 'Not Applicable'))", max_length = 30, blank = False, null = False, db_index = False];
+     required string test = 12 [choices = "(('ping', 'Ping'), ('traceroute', 'Trace Route'), ('tcpdump', 'Tcp Dump'))", max_length = 30, content_type = "stripped", blank = False, help_text = "type of test", null = False, db_index = False];
+     required string scope = 13 [choices = "(('container', 'Container'), ('vm', 'VM'))", max_length = 30, content_type = "stripped", blank = False, help_text = "scope of test", null = False, db_index = False];
+     optional string argument = 14 [db_index = False, max_length = 40, null = True, content_type = "stripped", blank = True];
+     optional string result = 15 [db_index = False, null = True, blank = True];
+     optional string result_code = 16 [db_index = False, max_length = 32, null = True, content_type = "stripped", blank = True];
+     required manytoone target_type->ContentType:vtrtenant = 17 [db_index = True, null = False, blank = False];
+     required uint32 target_id = 18 [db_index = False, null = False, blank = False];
+}