CORD-1026: protos and xprotos for core models
Change-Id: I6240cc224860a1e2e86f76eb1e0599973b062116
diff --git a/xos/genx/generator/uber b/xos/genx/generator/uber
index b60071b..1587c4b 100755
--- a/xos/genx/generator/uber
+++ b/xos/genx/generator/uber
@@ -52,21 +52,29 @@
current_buffer = []
for l in lines:
if (l.startswith('+++')):
- filename = l[4:]
- fil = open(filename,'w')
+ path = l[4:]
+
+ direc,filename = path.rsplit('/',1)
+ os.system('mkdir -p %s'%direc)
+
+ fil = open(path,'w')
buf = '\n'.join(current_buffer)
obuf = buf
+
+ """
for d in options.dict:
df = open(d).read()
d = json.loads(df)
pattern = re.compile(r'\b(' + '|'.join(d.keys()) + r')\b')
obuf = pattern.sub(lambda x: d[x.group()], buf)
+ """
+
fil.write(obuf)
fil.close()
- print 'Written to file %s'%filename
+ print 'Written to file %s'%path
current_buffer = []
else:
current_buffer.append(l)
diff --git a/xos/genx/protos/core/Slice.proto b/xos/genx/protos/core/Slice.proto
new file mode 100644
index 0000000..db788fe
--- /dev/null
+++ b/xos/genx/protos/core/Slice.proto
@@ -0,0 +1,20 @@
+
+message Slice {
+ required string name = 1 [ null = False, max_length = 80, content_type = "stripped", blank = False, help_text = "The Name of the Slice", modifier = required, db_index = False ];
+ required bool enabled = 2 [ null = False, default = True, blank = True, help_text = "Status for this Slice", modifier = required, db_index = False ];
+ required bool omf_friendly = 3 [ db_index = False, default = False, modifier = required, null = False, blank = True ];
+ required string description = 4 [ null = False, max_length = 1024, blank = True, help_text = "High level description of the slice and expected activities", modifier = required, db_index = False ];
+ required string slice_url = 5 [ null = False, max_length = 512, content_type = "url", blank = True, modifier = required, db_index = False ];
+ required int32 site = 6 [ null = False, blank = False, help_text = "The Site this Slice belongs to", model = Site, modifier = required, type = link, port = slices, db_index = True ];
+ required int32 max_instances = 7 [ db_index = False, default = 10, modifier = required, null = False, blank = False ];
+ optional int32 service = 8 [ null = True, blank = True, model = Service, modifier = optional, type = link, port = slices, db_index = True ];
+ optional string network = 9 [ null = True, choices = "((None, 'Default'), ('host', 'Host'), ('bridged', 'Bridged'), ('noauto', 'No Automatic Networks'))", max_length = 256, blank = True, modifier = optional, db_index = False ];
+ optional string exposed_ports = 10 [ db_index = False, max_length = 256, modifier = optional, null = True, blank = True ];
+ optional int32 serviceClass = 11 [ null = True, blank = True, model = ServiceClass, modifier = optional, type = link, port = slices, db_index = True ];
+ optional int32 creator = 12 [ null = True, blank = True, model = User, modifier = optional, type = link, port = slices, db_index = True ];
+ optional int32 default_flavor = 13 [ null = True, blank = True, model = Flavor, modifier = optional, type = link, port = slices, db_index = True ];
+ optional int32 default_image = 14 [ null = True, blank = True, model = Image, modifier = optional, type = link, port = slices, db_index = True ];
+ optional int32 default_node = 15 [ null = True, blank = True, model = Node, modifier = optional, type = link, port = slices, db_index = True ];
+ optional string mount_data_sets = 16 [ null = True, default = "GenBank", max_length = 256, content_type = "stripped", blank = True, modifier = optional, db_index = False ];
+ required string default_isolation = 17 [ null = False, default = "vm", choices = "(('vm', 'Virtual Machine'), ('container', 'Container'), ('container_vm', 'Container In VM'))", max_length = 30, blank = False, modifier = required, db_index = False ];
+}
\ No newline at end of file
diff --git a/xos/genx/protos/core/account.proto b/xos/genx/protos/core/account.proto
new file mode 100644
index 0000000..0a011be
--- /dev/null
+++ b/xos/genx/protos/core/account.proto
@@ -0,0 +1,4 @@
+
+message Account {
+ required int32 site = 1 [ null = False, blank = False, help_text = "Site for this account", model = Site, modifier = required, type = link, port = accounts, db_index = True ];
+}
\ No newline at end of file
diff --git a/xos/genx/protos/core/addresspool.proto b/xos/genx/protos/core/addresspool.proto
new file mode 100644
index 0000000..daf7f7c
--- /dev/null
+++ b/xos/genx/protos/core/addresspool.proto
@@ -0,0 +1,10 @@
+
+message AddressPool {
+ required string name = 1 [ db_index = False, max_length = 32, modifier = required, null = False, blank = False ];
+ optional string addresses = 2 [ db_index = False, modifier = optional, null = True, blank = True ];
+ optional string gateway_ip = 3 [ db_index = False, max_length = 32, modifier = optional, null = True, blank = False ];
+ optional string gateway_mac = 4 [ db_index = False, max_length = 32, modifier = optional, null = True, blank = False ];
+ optional string cidr = 5 [ db_index = False, max_length = 32, modifier = optional, null = True, blank = False ];
+ optional string inuse = 6 [ db_index = False, modifier = optional, null = True, blank = True ];
+ optional int32 service = 7 [ null = True, blank = True, model = Service, modifier = optional, type = link, port = addresspools, db_index = True ];
+}
\ No newline at end of file
diff --git a/xos/genx/protos/core/controller.proto b/xos/genx/protos/core/controller.proto
new file mode 100644
index 0000000..fabf0c1
--- /dev/null
+++ b/xos/genx/protos/core/controller.proto
@@ -0,0 +1,15 @@
+
+message Controller {
+ required string name = 1 [ null = False, max_length = 200, content_type = "stripped", blank = False, help_text = "Name of the Controller", modifier = required, db_index = False ];
+ required string backend_type = 2 [ null = False, max_length = 200, content_type = "stripped", blank = False, help_text = "Type of compute controller, e.g. EC2, OpenStack, or OpenStack version", modifier = required, db_index = False ];
+ required string version = 3 [ null = False, max_length = 200, content_type = "stripped", blank = False, help_text = "Controller version", modifier = required, db_index = False ];
+ optional string auth_url = 4 [ null = True, max_length = 200, content_type = "stripped", blank = True, help_text = "Auth url for the compute controller", modifier = optional, db_index = False ];
+ optional string admin_user = 5 [ null = True, max_length = 200, content_type = "stripped", blank = True, help_text = "Username of an admin user at this controller", modifier = optional, db_index = False ];
+ optional string admin_password = 6 [ null = True, max_length = 200, content_type = "stripped", blank = True, help_text = "Password of theadmin user at this controller", modifier = optional, db_index = False ];
+ optional string admin_tenant = 7 [ null = True, max_length = 200, content_type = "stripped", blank = True, help_text = "Name of the tenant the admin user belongs to", modifier = optional, db_index = False ];
+ optional string domain = 8 [ null = True, max_length = 200, content_type = "stripped", blank = True, help_text = "Name of the domain this controller belongs to", modifier = optional, db_index = False ];
+ optional string rabbit_host = 9 [ null = True, max_length = 200, content_type = "stripped", blank = True, help_text = "IP address of rabbitmq server at this controller", modifier = optional, db_index = False ];
+ optional string rabbit_user = 10 [ null = True, max_length = 200, content_type = "stripped", blank = True, help_text = "Username of rabbitmq server at this controller", modifier = optional, db_index = False ];
+ optional string rabbit_password = 11 [ null = True, max_length = 200, content_type = "stripped", blank = True, help_text = "Password of rabbitmq server at this controller", modifier = optional, db_index = False ];
+ required int32 deployment = 12 [ null = False, blank = False, model = Deployment, modifier = required, type = link, port = controllerdeployments, db_index = True ];
+}
\ No newline at end of file
diff --git a/xos/genx/protos/core/controllerdashboardview.proto b/xos/genx/protos/core/controllerdashboardview.proto
new file mode 100644
index 0000000..6791403
--- /dev/null
+++ b/xos/genx/protos/core/controllerdashboardview.proto
@@ -0,0 +1,7 @@
+
+message ControllerDashboardView {
+ required int32 controller = 1 [ null = False, blank = False, model = Controller, modifier = required, type = link, port = controllerdashboardviews, db_index = True ];
+ required int32 dashboardView = 2 [ null = False, blank = False, model = DashboardView, modifier = required, type = link, port = controllerdashboardviews, db_index = True ];
+ required bool enabled = 3 [ db_index = False, default = True, modifier = required, null = False, blank = True ];
+ required string url = 4 [ null = False, max_length = 1024, content_type = "stripped", blank = False, help_text = "URL of Dashboard", modifier = required, db_index = False ];
+}
\ No newline at end of file
diff --git a/xos/genx/protos/core/controllerimages.proto b/xos/genx/protos/core/controllerimages.proto
new file mode 100644
index 0000000..6539604
--- /dev/null
+++ b/xos/genx/protos/core/controllerimages.proto
@@ -0,0 +1,6 @@
+
+message ControllerImages {
+ required int32 image = 1 [ null = False, blank = False, model = Image, modifier = required, type = link, port = controllerimages, db_index = True ];
+ required int32 controller = 2 [ null = False, blank = False, model = Controller, modifier = required, type = link, port = controllerimages, db_index = True ];
+ optional string glance_image_id = 3 [ null = True, max_length = 200, content_type = "stripped", blank = True, help_text = "Glance image id", modifier = optional, db_index = False ];
+}
\ No newline at end of file
diff --git a/xos/genx/protos/core/controllernetwork.proto b/xos/genx/protos/core/controllernetwork.proto
new file mode 100644
index 0000000..151659f
--- /dev/null
+++ b/xos/genx/protos/core/controllernetwork.proto
@@ -0,0 +1,13 @@
+
+message ControllerNetwork {
+ required int32 network = 1 [ null = False, blank = False, model = Network, modifier = required, type = link, port = controllernetworks, db_index = True ];
+ required int32 controller = 2 [ null = False, blank = False, model = Controller, modifier = required, type = link, port = controllernetworks, db_index = True ];
+ required string subnet = 3 [ db_index = False, max_length = 32, modifier = required, null = False, blank = True ];
+ required string start_ip = 4 [ db_index = False, max_length = 32, modifier = required, null = False, blank = True ];
+ required string stop_ip = 5 [ db_index = False, max_length = 32, modifier = required, null = False, blank = True ];
+ optional string net_id = 6 [ null = True, max_length = 256, blank = True, help_text = "Neutron network", modifier = optional, db_index = False ];
+ optional string router_id = 7 [ null = True, max_length = 256, blank = True, help_text = "Neutron router id", modifier = optional, db_index = False ];
+ optional string subnet_id = 8 [ null = True, max_length = 256, blank = True, help_text = "Neutron subnet id", modifier = optional, db_index = False ];
+ optional string gateway = 9 [ db_index = False, max_length = 32, modifier = optional, null = True, blank = True ];
+ optional string segmentation_id = 10 [ db_index = False, max_length = 32, modifier = optional, null = True, blank = True ];
+}
\ No newline at end of file
diff --git a/xos/genx/protos/core/controllerrole.proto b/xos/genx/protos/core/controllerrole.proto
new file mode 100644
index 0000000..bd9bf13
--- /dev/null
+++ b/xos/genx/protos/core/controllerrole.proto
@@ -0,0 +1,4 @@
+
+message ControllerRole {
+ required string role = 1 [ null = False, choices = "(('admin', 'Admin'),)", 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/core/controllersite.proto b/xos/genx/protos/core/controllersite.proto
new file mode 100644
index 0000000..97f8ac3
--- /dev/null
+++ b/xos/genx/protos/core/controllersite.proto
@@ -0,0 +1,6 @@
+
+message ControllerSite {
+ required int32 site = 1 [ null = False, blank = False, model = Site, modifier = required, type = link, port = controllersite, db_index = True ];
+ optional int32 controller = 2 [ null = True, blank = True, model = Controller, modifier = optional, type = link, port = controllersite, db_index = True ];
+ optional string tenant_id = 3 [ null = True, max_length = 200, content_type = "stripped", blank = True, help_text = "Keystone tenant id", modifier = optional, db_index = True ];
+}
\ No newline at end of file
diff --git a/xos/genx/protos/core/controllersiteprivilege.proto b/xos/genx/protos/core/controllersiteprivilege.proto
new file mode 100644
index 0000000..6814fc7
--- /dev/null
+++ b/xos/genx/protos/core/controllersiteprivilege.proto
@@ -0,0 +1,6 @@
+
+message ControllerSitePrivilege {
+ required int32 controller = 1 [ null = False, blank = False, model = Controller, modifier = required, type = link, port = controllersiteprivileges, db_index = True ];
+ required int32 site_privilege = 2 [ null = False, blank = False, model = SitePrivilege, modifier = required, type = link, port = controllersiteprivileges, db_index = True ];
+ optional string role_id = 3 [ null = True, max_length = 200, content_type = "stripped", blank = True, help_text = "Keystone id", modifier = optional, db_index = True ];
+}
\ No newline at end of file
diff --git a/xos/genx/protos/core/controllerslice.proto b/xos/genx/protos/core/controllerslice.proto
new file mode 100644
index 0000000..16b7346
--- /dev/null
+++ b/xos/genx/protos/core/controllerslice.proto
@@ -0,0 +1,6 @@
+
+message ControllerSlice {
+ required int32 controller = 1 [ null = False, blank = False, model = Controller, modifier = required, type = link, port = controllerslices, db_index = True ];
+ required int32 slice = 2 [ null = False, blank = False, model = Slice, modifier = required, type = link, port = controllerslices, db_index = True ];
+ optional string tenant_id = 3 [ null = True, max_length = 200, content_type = "stripped", blank = True, help_text = "Keystone tenant id", modifier = optional, db_index = False ];
+}
\ No newline at end of file
diff --git a/xos/genx/protos/core/controllersliceprivilege.proto b/xos/genx/protos/core/controllersliceprivilege.proto
new file mode 100644
index 0000000..4dec7f2
--- /dev/null
+++ b/xos/genx/protos/core/controllersliceprivilege.proto
@@ -0,0 +1,6 @@
+
+message ControllerSlicePrivilege {
+ required int32 controller = 1 [ null = False, blank = False, model = Controller, modifier = required, type = link, port = controllersliceprivileges, db_index = True ];
+ required int32 slice_privilege = 2 [ null = False, blank = False, model = SlicePrivilege, modifier = required, type = link, port = controllersliceprivileges, db_index = True ];
+ optional string role_id = 3 [ null = True, max_length = 200, content_type = "stripped", blank = True, help_text = "Keystone id", modifier = optional, db_index = True ];
+}
\ No newline at end of file
diff --git a/xos/genx/protos/core/controlleruser.proto b/xos/genx/protos/core/controlleruser.proto
new file mode 100644
index 0000000..fdf4eca
--- /dev/null
+++ b/xos/genx/protos/core/controlleruser.proto
@@ -0,0 +1,6 @@
+
+message ControllerUser {
+ required int32 user = 1 [ null = False, blank = False, model = User, modifier = required, type = link, port = controllerusers, db_index = True ];
+ required int32 controller = 2 [ null = False, blank = False, model = Controller, modifier = required, type = link, port = controllersusers, db_index = True ];
+ optional string kuser_id = 3 [ null = True, max_length = 200, content_type = "stripped", blank = True, help_text = "Keystone user id", modifier = optional, db_index = False ];
+}
\ No newline at end of file
diff --git a/xos/genx/protos/core/dashboardview.proto b/xos/genx/protos/core/dashboardview.proto
new file mode 100644
index 0000000..097a31c
--- /dev/null
+++ b/xos/genx/protos/core/dashboardview.proto
@@ -0,0 +1,8 @@
+
+message DashboardView {
+ required string name = 1 [ null = False, max_length = 200, content_type = "stripped", blank = False, help_text = "Name of the View", modifier = required, db_index = False ];
+ required string url = 2 [ null = False, max_length = 1024, content_type = "stripped", blank = False, help_text = "URL of Dashboard", modifier = required, db_index = False ];
+ required bool enabled = 3 [ db_index = False, default = True, modifier = required, null = False, blank = True ];
+ required string icon = 4 [ null = False, default = "default-icon.png", max_length = 200, blank = False, help_text = "Icon for Dashboard", modifier = required, db_index = False ];
+ required string icon_active = 5 [ null = False, default = "default-icon-active.png", max_length = 200, blank = False, help_text = "Icon for active Dashboard", modifier = required, db_index = False ];
+}
\ No newline at end of file
diff --git a/xos/genx/protos/core/deployment.proto b/xos/genx/protos/core/deployment.proto
new file mode 100644
index 0000000..010c9c2
--- /dev/null
+++ b/xos/genx/protos/core/deployment.proto
@@ -0,0 +1,5 @@
+
+message Deployment {
+ required string name = 1 [ null = False, max_length = 200, content_type = "stripped", blank = False, help_text = "Name of the Deployment", modifier = required, db_index = False ];
+ required string accessControl = 2 [ null = False, default = "allow all", max_length = 200, blank = False, help_text = "Access control list that specifies which sites/users may use nodes in this deployment", modifier = required, db_index = False ];
+}
\ No newline at end of file
diff --git a/xos/genx/protos/core/deploymentprivilege.proto b/xos/genx/protos/core/deploymentprivilege.proto
new file mode 100644
index 0000000..9e030a5
--- /dev/null
+++ b/xos/genx/protos/core/deploymentprivilege.proto
@@ -0,0 +1,6 @@
+
+message DeploymentPrivilege {
+ required int32 user = 1 [ null = False, blank = False, model = User, modifier = required, type = link, port = deploymentprivileges, db_index = True ];
+ required int32 deployment = 2 [ null = False, blank = False, model = Deployment, modifier = required, type = link, port = deploymentprivileges, db_index = True ];
+ required int32 role = 3 [ null = False, blank = False, model = DeploymentRole, modifier = required, type = link, port = deploymentprivileges, db_index = True ];
+}
\ No newline at end of file
diff --git a/xos/genx/protos/core/deploymentrole.proto b/xos/genx/protos/core/deploymentrole.proto
new file mode 100644
index 0000000..378f207
--- /dev/null
+++ b/xos/genx/protos/core/deploymentrole.proto
@@ -0,0 +1,4 @@
+
+message DeploymentRole {
+ required string role = 1 [ null = False, choices = "(('admin', 'Admin'),)", 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/core/diag.proto b/xos/genx/protos/core/diag.proto
new file mode 100644
index 0000000..4d829ab
--- /dev/null
+++ b/xos/genx/protos/core/diag.proto
@@ -0,0 +1,4 @@
+
+message Diag {
+ required string name = 1 [ null = False, max_length = 200, content_type = "stripped", blank = False, help_text = "Name of the synchronizer", modifier = required, db_index = False ];
+}
\ No newline at end of file
diff --git a/xos/genx/protos/core/flavor.proto b/xos/genx/protos/core/flavor.proto
new file mode 100644
index 0000000..9c8c16e
--- /dev/null
+++ b/xos/genx/protos/core/flavor.proto
@@ -0,0 +1,8 @@
+
+message Flavor {
+ required string name = 1 [ null = False, max_length = 32, content_type = "stripped", blank = False, help_text = "name of this flavor, as displayed to users", modifier = required, db_index = False ];
+ optional string description = 2 [ null = True, max_length = 1024, content_type = "stripped", blank = True, modifier = optional, db_index = False ];
+ required string flavor = 3 [ null = False, max_length = 32, content_type = "stripped", blank = False, help_text = "flavor string used to configure deployments", modifier = required, db_index = False ];
+ required int32 order = 4 [ null = False, default = 0, blank = False, help_text = "used to order flavors when displayed in a list", modifier = required, db_index = False ];
+ required bool default = 5 [ null = False, default = False, blank = True, help_text = "make this a default flavor to use when creating new instances", modifier = required, db_index = False ];
+}
\ No newline at end of file
diff --git a/xos/genx/protos/core/image.proto b/xos/genx/protos/core/image.proto
new file mode 100644
index 0000000..b0e6b9e
--- /dev/null
+++ b/xos/genx/protos/core/image.proto
@@ -0,0 +1,9 @@
+
+message Image {
+ required string name = 1 [ null = False, max_length = 256, content_type = "stripped", blank = False, modifier = required, db_index = False ];
+ required string kind = 2 [ null = False, default = "vm", choices = "(('vm', 'Virtual Machine'), ('container', 'Container'))", max_length = 30, blank = False, modifier = required, db_index = False ];
+ required string disk_format = 3 [ null = False, max_length = 256, content_type = "stripped", blank = False, modifier = required, db_index = False ];
+ required string container_format = 4 [ null = False, max_length = 256, content_type = "stripped", blank = False, modifier = required, db_index = False ];
+ optional string path = 5 [ null = True, max_length = 256, content_type = "stripped", blank = True, help_text = "Path to image on local disk", modifier = optional, db_index = False ];
+ optional string tag = 6 [ null = True, max_length = 256, content_type = "stripped", blank = True, help_text = "For Docker Images, tag of image", modifier = optional, db_index = False ];
+}
\ No newline at end of file
diff --git a/xos/genx/protos/core/imagedeployments.proto b/xos/genx/protos/core/imagedeployments.proto
new file mode 100644
index 0000000..5cb9814
--- /dev/null
+++ b/xos/genx/protos/core/imagedeployments.proto
@@ -0,0 +1,5 @@
+
+message ImageDeployments {
+ required int32 image = 1 [ null = False, blank = False, model = Image, modifier = required, type = link, port = imagedeployments, db_index = True ];
+ required int32 deployment = 2 [ null = False, blank = False, model = Deployment, modifier = required, type = link, port = imagedeployments, db_index = True ];
+}
\ No newline at end of file
diff --git a/xos/genx/protos/core/instance.proto b/xos/genx/protos/core/instance.proto
new file mode 100644
index 0000000..0c2f215
--- /dev/null
+++ b/xos/genx/protos/core/instance.proto
@@ -0,0 +1,19 @@
+
+message Instance {
+ optional string instance_id = 1 [ null = True, max_length = 200, content_type = "stripped", blank = True, help_text = "Nova instance id", modifier = optional, db_index = False ];
+ optional string instance_uuid = 2 [ null = True, max_length = 200, content_type = "stripped", blank = True, help_text = "Nova instance uuid", modifier = optional, db_index = False ];
+ required string name = 3 [ null = False, max_length = 200, content_type = "stripped", blank = False, help_text = "Instance name", modifier = required, db_index = False ];
+ optional string instance_name = 4 [ null = True, max_length = 200, content_type = "stripped", blank = True, help_text = "OpenStack generated name", modifier = optional, db_index = False ];
+ optional string ip = 5 [ null = True, max_length = 39, content_type = "ip", blank = True, help_text = "Instance ip address", modifier = optional, db_index = False ];
+ required int32 image = 6 [ null = False, blank = False, model = Image, modifier = required, type = link, port = instances, db_index = True ];
+ optional int32 creator = 7 [ null = True, blank = True, model = User, modifier = optional, type = link, port = instances, db_index = True ];
+ required int32 slice = 8 [ null = False, blank = False, model = Slice, modifier = required, type = link, port = instances, db_index = True ];
+ required int32 deployment = 9 [ null = False, blank = False, model = Deployment, modifier = required, type = link, port = instance_deployment, db_index = True ];
+ required int32 node = 10 [ null = False, blank = False, model = Node, modifier = required, type = link, port = instances, db_index = True ];
+ required int32 numberCores = 11 [ null = False, default = 0, blank = False, help_text = "Number of cores for instance", modifier = required, db_index = False ];
+ required int32 flavor = 12 [ null = False, default = "get_default_flavor()", blank = False, help_text = "Flavor of this instance", model = Flavor, modifier = required, type = link, port = instance, db_index = True ];
+ optional string userData = 13 [ db_index = False, help_text = "user_data passed to instance during creation", modifier = optional, null = True, blank = True ];
+ required string isolation = 14 [ null = False, default = "vm", choices = "(('vm', 'Virtual Machine'), ('container', 'Container'), ('container_vm', 'Container In VM'))", max_length = 30, blank = False, modifier = required, db_index = False ];
+ optional string volumes = 15 [ db_index = False, help_text = "Comma-separated list of directories to expose to parent context", modifier = optional, null = True, blank = True ];
+ optional int32 parent = 16 [ null = True, blank = True, help_text = "Parent Instance for containers nested inside of VMs", model = Instance, modifier = optional, type = link, port = instance, db_index = True ];
+}
\ No newline at end of file
diff --git a/xos/genx/protos/core/invoice.proto b/xos/genx/protos/core/invoice.proto
new file mode 100644
index 0000000..9a10717
--- /dev/null
+++ b/xos/genx/protos/core/invoice.proto
@@ -0,0 +1,5 @@
+
+message Invoice {
+ required string date = 1 [ db_index = False, modifier = required, null = False, content_type = "date", blank = False ];
+ required int32 account = 2 [ null = False, blank = False, model = Account, modifier = required, type = link, port = invoices, db_index = True ];
+}
\ No newline at end of file
diff --git a/xos/genx/protos/core/library.proto b/xos/genx/protos/core/library.proto
new file mode 100644
index 0000000..67ed5c0
--- /dev/null
+++ b/xos/genx/protos/core/library.proto
@@ -0,0 +1,9 @@
+
+message Library {
+ required int32 xos = 1 [ null = False, default = "get_xos()", blank = False, help_text = "Pointer to XOS", model = XOS, modifier = required, type = link, port = loadable_modules, db_index = True ];
+ required string name = 2 [ null = False, max_length = 30, content_type = "stripped", blank = False, help_text = "Service Name", modifier = required, db_index = False ];
+ optional string base_url = 3 [ null = True, max_length = 1024, content_type = "stripped", blank = True, help_text = "Base URL, allows use of relative URLs for resources", modifier = optional, db_index = False ];
+ optional string version = 4 [ null = True, default = "1.0.0", max_length = 30, content_type = "stripped", blank = True, help_text = "Version of Service Controller", modifier = optional, db_index = False ];
+ optional string provides = 5 [ null = True, max_length = 254, content_type = "stripped", blank = True, help_text = "Comma-separated list of things provided", modifier = optional, db_index = False ];
+ optional string requires = 6 [ null = True, max_length = 254, content_type = "stripped", blank = True, help_text = "Comma-separated list of required Service Controllers", modifier = optional, db_index = False ];
+}
\ No newline at end of file
diff --git a/xos/genx/protos/core/loadablemodule.proto b/xos/genx/protos/core/loadablemodule.proto
new file mode 100644
index 0000000..892035f
--- /dev/null
+++ b/xos/genx/protos/core/loadablemodule.proto
@@ -0,0 +1,9 @@
+
+message LoadableModule {
+ required int32 xos = 1 [ null = False, default = "get_xos()", blank = False, help_text = "Pointer to XOS", model = XOS, modifier = required, type = link, port = loadable_modules, db_index = True ];
+ required string name = 2 [ null = False, max_length = 30, content_type = "stripped", blank = False, help_text = "Service Name", modifier = required, db_index = False ];
+ optional string base_url = 3 [ null = True, max_length = 1024, content_type = "stripped", blank = True, help_text = "Base URL, allows use of relative URLs for resources", modifier = optional, db_index = False ];
+ optional string version = 4 [ null = True, default = "1.0.0", max_length = 30, content_type = "stripped", blank = True, help_text = "Version of Service Controller", modifier = optional, db_index = False ];
+ optional string provides = 5 [ null = True, max_length = 254, content_type = "stripped", blank = True, help_text = "Comma-separated list of things provided", modifier = optional, db_index = False ];
+ optional string requires = 6 [ null = True, max_length = 254, content_type = "stripped", blank = True, help_text = "Comma-separated list of required Service Controllers", modifier = optional, db_index = False ];
+}
\ No newline at end of file
diff --git a/xos/genx/protos/core/loadablemoduleresource.proto b/xos/genx/protos/core/loadablemoduleresource.proto
new file mode 100644
index 0000000..ccef647
--- /dev/null
+++ b/xos/genx/protos/core/loadablemoduleresource.proto
@@ -0,0 +1,9 @@
+
+message LoadableModuleResource {
+ required int32 loadable_module = 1 [ null = False, blank = False, help_text = "The Loadable Module this resource is associated with", model = LoadableModule, modifier = required, type = link, port = loadable_module_resources, db_index = True ];
+ required string name = 2 [ null = False, max_length = 30, content_type = "stripped", blank = False, help_text = "Object Name", modifier = required, db_index = False ];
+ optional string subdirectory = 3 [ null = True, max_length = 1024, content_type = "stripped", blank = True, help_text = "optional subdirectory", modifier = optional, db_index = False ];
+ required string kind = 4 [ null = False, choices = "(('models', 'Models'), ('admin', 'Admin'), ('admin_template', 'Admin Template'), ('django_library', 'Django Library'), ('synchronizer', 'Synchronizer'), ('rest_service', 'REST API (service)'), ('rest_tenant', 'REST API (tenant)'), ('tosca_custom_types', 'Tosca Custom Types'), ('tosca_resource', 'Tosca Resource'), ('private_key', 'Private Key'), ('public_key', 'Public Key'), ('vendor_js', 'Vendor Javascript'))", max_length = 30, content_type = "stripped", blank = False, modifier = required, db_index = False ];
+ required string format = 5 [ null = False, choices = "(('python', 'Python'), ('manifest', 'Manifest'), ('docker', 'Docker Container'), ('yaml', 'YAML'), ('raw', 'raw'), ('javascript', 'Javascript'))", max_length = 30, content_type = "stripped", blank = False, modifier = required, db_index = False ];
+ optional string url = 6 [ null = True, max_length = 1024, content_type = "stripped", blank = True, help_text = "URL of resource", modifier = optional, db_index = False ];
+}
\ No newline at end of file
diff --git a/xos/genx/protos/core/network.proto b/xos/genx/protos/core/network.proto
new file mode 100644
index 0000000..facb4bd
--- /dev/null
+++ b/xos/genx/protos/core/network.proto
@@ -0,0 +1,20 @@
+
+message Network {
+ required string name = 1 [ db_index = False, max_length = 32, modifier = required, null = False, blank = False ];
+ required int32 template = 2 [ null = False, blank = False, model = NetworkTemplate, modifier = required, type = link, port = network, db_index = True ];
+ required string subnet = 3 [ db_index = False, max_length = 32, modifier = required, null = False, blank = True ];
+ required string start_ip = 4 [ db_index = False, max_length = 32, modifier = required, null = False, blank = True ];
+ required string end_ip = 5 [ db_index = False, max_length = 32, modifier = required, null = False, blank = True ];
+ optional string ports = 6 [ db_index = False, max_length = 1024, modifier = optional, null = True, blank = True ];
+ optional string labels = 7 [ db_index = False, max_length = 1024, modifier = optional, null = True, blank = True ];
+ required int32 owner = 8 [ null = False, blank = False, help_text = "Slice that owns control of this Network", model = Slice, modifier = required, type = link, port = ownedNetworks, db_index = True ];
+ required int32 guaranteed_bandwidth = 9 [ db_index = False, default = 0, modifier = required, null = False, blank = False ];
+ required bool permit_all_slices = 10 [ db_index = False, default = False, modifier = required, null = False, blank = True ];
+ optional string topology_parameters = 11 [ db_index = False, modifier = optional, null = True, blank = True ];
+ optional string controller_url = 12 [ db_index = False, max_length = 1024, modifier = optional, null = True, blank = True ];
+ optional string controller_parameters = 13 [ db_index = False, modifier = optional, null = True, blank = True ];
+ optional string network_id = 14 [ null = True, max_length = 256, blank = True, help_text = "Quantum network", modifier = optional, db_index = False ];
+ optional string router_id = 15 [ null = True, max_length = 256, blank = True, help_text = "Quantum router id", modifier = optional, db_index = False ];
+ optional string subnet_id = 16 [ null = True, max_length = 256, blank = True, help_text = "Quantum subnet id", modifier = optional, db_index = False ];
+ required bool autoconnect = 17 [ null = False, default = True, blank = True, help_text = "This network can be autoconnected to the slice that owns it", modifier = required, db_index = False ];
+}
\ No newline at end of file
diff --git a/xos/genx/protos/core/networkparameter.proto b/xos/genx/protos/core/networkparameter.proto
new file mode 100644
index 0000000..9394e75
--- /dev/null
+++ b/xos/genx/protos/core/networkparameter.proto
@@ -0,0 +1,7 @@
+
+message NetworkParameter {
+ required int32 parameter = 1 [ null = False, blank = False, help_text = "The type of the parameter", model = NetworkParameterType, modifier = required, type = link, port = networkparameters, db_index = True ];
+ required string value = 2 [ null = False, max_length = 1024, blank = False, help_text = "The value of this parameter", modifier = required, db_index = False ];
+ required int32 content_type = 3 [ null = False, blank = False, model = ContentType, modifier = required, type = link, port = networkparameter, db_index = True ];
+ required uint32 object_id = 4 [ db_index = False, modifier = required, null = False, blank = False ];
+}
\ No newline at end of file
diff --git a/xos/genx/protos/core/networkparametertype.proto b/xos/genx/protos/core/networkparametertype.proto
new file mode 100644
index 0000000..2f9e87b
--- /dev/null
+++ b/xos/genx/protos/core/networkparametertype.proto
@@ -0,0 +1,5 @@
+
+message NetworkParameterType {
+ required string name = 1 [ null = False, max_length = 128, blank = False, help_text = "The name of this parameter", modifier = required, db_index = True ];
+ required string description = 2 [ db_index = False, max_length = 1024, modifier = required, null = False, blank = False ];
+}
\ No newline at end of file
diff --git a/xos/genx/protos/core/networkslice.proto b/xos/genx/protos/core/networkslice.proto
new file mode 100644
index 0000000..fb697a7
--- /dev/null
+++ b/xos/genx/protos/core/networkslice.proto
@@ -0,0 +1,5 @@
+
+message NetworkSlice {
+ required int32 network = 1 [ null = False, blank = False, model = Network, modifier = required, type = link, port = networkslices, db_index = True ];
+ required int32 slice = 2 [ null = False, blank = False, model = Slice, modifier = required, type = link, port = networkslices, db_index = True ];
+}
\ No newline at end of file
diff --git a/xos/genx/protos/core/networktemplate.proto b/xos/genx/protos/core/networktemplate.proto
new file mode 100644
index 0000000..44eaddd
--- /dev/null
+++ b/xos/genx/protos/core/networktemplate.proto
@@ -0,0 +1,14 @@
+
+message NetworkTemplate {
+ required string name = 1 [ db_index = False, max_length = 32, modifier = required, null = False, blank = False ];
+ optional string description = 2 [ db_index = False, max_length = 1024, modifier = optional, null = True, blank = True ];
+ required int32 guaranteed_bandwidth = 3 [ db_index = False, default = 0, modifier = required, null = False, blank = False ];
+ required string visibility = 4 [ null = False, default = "private", choices = "(('public', 'public'), ('private', 'private'))", max_length = 30, blank = False, modifier = required, db_index = False ];
+ required string translation = 5 [ null = False, default = "none", choices = "(('none', 'none'), ('NAT', 'NAT'))", max_length = 30, blank = False, modifier = required, db_index = False ];
+ optional string access = 6 [ null = True, choices = "((None, 'None'), ('indirect', 'Indirect'), ('direct', 'Direct'))", max_length = 30, blank = True, help_text = "Advertise this network as a means for other slices to contact this slice", modifier = optional, db_index = False ];
+ optional string shared_network_name = 7 [ db_index = False, max_length = 30, modifier = optional, null = True, blank = True ];
+ optional string shared_network_id = 8 [ null = True, max_length = 256, blank = True, help_text = "Quantum network", modifier = optional, db_index = False ];
+ required string topology_kind = 9 [ null = False, default = "bigswitch", choices = "(('bigswitch', 'BigSwitch'), ('physical', 'Physical'), ('custom', 'Custom'))", max_length = 30, blank = False, modifier = required, db_index = False ];
+ optional string controller_kind = 10 [ null = True, choices = "((None, 'None'), ('onos', 'ONOS'), ('custom', 'Custom'))", max_length = 30, blank = True, modifier = optional, db_index = False ];
+ optional string vtn_kind = 11 [ null = True, default = "PRIVATE", choices = "(('PRIVATE', 'Private'), ('PUBLIC', 'Public'), ('MANAGEMENT_LOCAL', 'Management Local'), ('MANAGEMENT_HOST', 'Management Host'), ('VSG', 'VSG'), ('ACCESS_AGENT', 'Access Agent'))", max_length = 30, blank = True, modifier = optional, db_index = False ];
+}
\ No newline at end of file
diff --git a/xos/genx/protos/core/node.proto b/xos/genx/protos/core/node.proto
new file mode 100644
index 0000000..9db6515
--- /dev/null
+++ b/xos/genx/protos/core/node.proto
@@ -0,0 +1,6 @@
+
+message Node {
+ required string name = 1 [ null = False, max_length = 200, content_type = "stripped", blank = False, help_text = "Name of the Node", modifier = required, db_index = False ];
+ required int32 site_deployment = 2 [ null = False, blank = False, model = SiteDeployment, modifier = required, type = link, port = nodes, db_index = True ];
+ optional int32 site = 3 [ null = True, blank = True, model = Site, modifier = optional, type = link, port = nodes, db_index = True ];
+}
\ No newline at end of file
diff --git a/xos/genx/protos/core/nodelabel.proto b/xos/genx/protos/core/nodelabel.proto
new file mode 100644
index 0000000..4fdaa76
--- /dev/null
+++ b/xos/genx/protos/core/nodelabel.proto
@@ -0,0 +1,4 @@
+
+message NodeLabel {
+ required string name = 1 [ null = False, max_length = 200, content_type = "stripped", blank = False, help_text = "label name", modifier = required, db_index = False ];
+}
\ No newline at end of file
diff --git a/xos/genx/protos/core/port.proto b/xos/genx/protos/core/port.proto
new file mode 100644
index 0000000..b3a84b9
--- /dev/null
+++ b/xos/genx/protos/core/port.proto
@@ -0,0 +1,9 @@
+
+message Port {
+ required int32 network = 1 [ null = False, blank = False, model = Network, modifier = required, type = link, port = links, db_index = True ];
+ optional int32 instance = 2 [ null = True, blank = True, model = Instance, modifier = optional, type = link, port = ports, db_index = True ];
+ optional string ip = 3 [ null = True, max_length = 39, content_type = "ip", blank = True, help_text = "Instance ip address", modifier = optional, db_index = False ];
+ optional string port_id = 4 [ null = True, max_length = 256, blank = True, help_text = "Neutron port id", modifier = optional, db_index = False ];
+ optional string mac = 5 [ null = True, max_length = 256, blank = True, help_text = "MAC address associated with this port", modifier = optional, db_index = False ];
+ required bool xos_created = 6 [ db_index = False, default = False, modifier = required, null = False, blank = True ];
+}
\ No newline at end of file
diff --git a/xos/genx/protos/core/program.proto b/xos/genx/protos/core/program.proto
new file mode 100644
index 0000000..4f685fc
--- /dev/null
+++ b/xos/genx/protos/core/program.proto
@@ -0,0 +1,12 @@
+
+message Program {
+ required string name = 1 [ null = False, max_length = 30, content_type = "stripped", blank = False, help_text = "Service Name", modifier = required, db_index = False ];
+ optional string description = 2 [ null = True, max_length = 254, blank = True, help_text = "Description of Service", modifier = optional, db_index = False ];
+ required string kind = 3 [ null = False, choices = "(('tosca', 'Tosca'),)", max_length = 30, content_type = "stripped", blank = False, help_text = "Kind of service", modifier = required, db_index = False ];
+ optional string command = 4 [ null = True, choices = "(('run', 'Run'), ('destroy', 'Destroy'))", max_length = 30, content_type = "stripped", blank = True, help_text = "Command to run", modifier = optional, db_index = False ];
+ optional int32 owner = 5 [ null = True, blank = False, model = User, modifier = optional, type = link, port = programs, db_index = True ];
+ optional string contents = 6 [ db_index = False, help_text = "Contents of Program", modifier = optional, null = True, blank = True ];
+ optional string output = 7 [ db_index = False, help_text = "Output of Program", modifier = optional, null = True, blank = True ];
+ optional string messages = 8 [ db_index = False, help_text = "Debug messages", modifier = optional, null = True, blank = True ];
+ optional string status = 9 [ null = True, max_length = 30, blank = True, help_text = "Status of program", modifier = optional, db_index = False ];
+}
\ No newline at end of file
diff --git a/xos/genx/protos/core/project.proto b/xos/genx/protos/core/project.proto
new file mode 100644
index 0000000..b803895
--- /dev/null
+++ b/xos/genx/protos/core/project.proto
@@ -0,0 +1,4 @@
+
+message Project {
+ required string name = 1 [ null = False, max_length = 200, content_type = "stripped", blank = False, help_text = "Name of Project", modifier = required, db_index = False ];
+}
\ No newline at end of file
diff --git a/xos/genx/protos/core/reservation.proto b/xos/genx/protos/core/reservation.proto
new file mode 100644
index 0000000..8cc18d0
--- /dev/null
+++ b/xos/genx/protos/core/reservation.proto
@@ -0,0 +1,6 @@
+
+message Reservation {
+ required string startTime = 1 [ db_index = False, modifier = required, null = False, content_type = "date", blank = False ];
+ required int32 slice = 2 [ null = False, blank = False, model = Slice, modifier = required, type = link, port = reservations, db_index = True ];
+ required int32 duration = 3 [ db_index = False, default = 1, modifier = required, null = False, blank = False ];
+}
\ No newline at end of file
diff --git a/xos/genx/protos/core/reservedresource.proto b/xos/genx/protos/core/reservedresource.proto
new file mode 100644
index 0000000..33bcf08
--- /dev/null
+++ b/xos/genx/protos/core/reservedresource.proto
@@ -0,0 +1,7 @@
+
+message ReservedResource {
+ required int32 instance = 1 [ null = False, blank = False, model = Instance, modifier = required, type = link, port = reservedresources, db_index = True ];
+ required int32 resource = 2 [ null = False, blank = False, model = ServiceResource, modifier = required, type = link, port = reservedresources, db_index = True ];
+ required int32 quantity = 3 [ db_index = False, default = 1, modifier = required, null = False, blank = False ];
+ required int32 reservationSet = 4 [ null = False, blank = False, model = Reservation, modifier = required, type = link, port = reservedresources, db_index = True ];
+}
\ No newline at end of file
diff --git a/xos/genx/protos/core/role.proto b/xos/genx/protos/core/role.proto
new file mode 100644
index 0000000..ae3539a
--- /dev/null
+++ b/xos/genx/protos/core/role.proto
@@ -0,0 +1,7 @@
+
+message Role {
+ required string role_type = 1 [ null = False, max_length = 80, content_type = "stripped", blank = False, modifier = required, db_index = False ];
+ optional string role = 2 [ null = True, max_length = 80, content_type = "stripped", blank = True, modifier = optional, db_index = False ];
+ required string description = 3 [ null = False, max_length = 120, content_type = "stripped", blank = False, modifier = required, db_index = False ];
+ required int32 content_type = 4 [ null = False, blank = False, model = ContentType, modifier = required, type = link, port = role, db_index = True ];
+}
\ No newline at end of file
diff --git a/xos/genx/protos/core/router.proto b/xos/genx/protos/core/router.proto
new file mode 100644
index 0000000..8e93565
--- /dev/null
+++ b/xos/genx/protos/core/router.proto
@@ -0,0 +1,5 @@
+
+message Router {
+ required string name = 1 [ db_index = False, max_length = 32, modifier = required, null = False, blank = False ];
+ required int32 owner = 2 [ null = False, blank = False, model = Slice, modifier = required, type = link, port = routers, db_index = True ];
+}
\ No newline at end of file
diff --git a/xos/genx/protos/core/service.proto b/xos/genx/protos/core/service.proto
new file mode 100644
index 0000000..b20e9b1
--- /dev/null
+++ b/xos/genx/protos/core/service.proto
@@ -0,0 +1,16 @@
+
+message Service {
+ 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/core/serviceattribute.proto b/xos/genx/protos/core/serviceattribute.proto
new file mode 100644
index 0000000..097e365
--- /dev/null
+++ b/xos/genx/protos/core/serviceattribute.proto
@@ -0,0 +1,6 @@
+
+message ServiceAttribute {
+ required string name = 1 [ null = False, max_length = 128, blank = False, help_text = "Attribute Name", modifier = required, db_index = False ];
+ required string value = 2 [ db_index = False, help_text = "Attribute Value", modifier = required, null = False, blank = False ];
+ required int32 service = 3 [ null = False, blank = False, help_text = "The Service this attribute is associated with", model = Service, modifier = required, type = link, port = serviceattributes, db_index = True ];
+}
\ No newline at end of file
diff --git a/xos/genx/protos/core/serviceclass.proto b/xos/genx/protos/core/serviceclass.proto
new file mode 100644
index 0000000..0061c37
--- /dev/null
+++ b/xos/genx/protos/core/serviceclass.proto
@@ -0,0 +1,9 @@
+
+message ServiceClass {
+ required string name = 1 [ null = False, max_length = 32, content_type = "stripped", blank = False, modifier = required, db_index = False ];
+ required string description = 2 [ null = False, max_length = 255, content_type = "stripped", blank = False, modifier = required, db_index = False ];
+ required int32 commitment = 3 [ db_index = False, default = 365, modifier = required, null = False, blank = False ];
+ required int32 membershipFee = 4 [ db_index = False, default = 0, modifier = required, null = False, blank = False ];
+ required int32 membershipFeeMonths = 5 [ db_index = False, default = 12, modifier = required, null = False, blank = False ];
+ required bool upgradeRequiresApproval = 6 [ db_index = False, default = False, modifier = required, null = False, blank = True ];
+}
\ No newline at end of file
diff --git a/xos/genx/protos/core/servicecontroller.proto b/xos/genx/protos/core/servicecontroller.proto
new file mode 100644
index 0000000..4070c1e
--- /dev/null
+++ b/xos/genx/protos/core/servicecontroller.proto
@@ -0,0 +1,15 @@
+
+message ServiceController {
+ required int32 xos = 1 [ null = False, default = "get_xos()", blank = False, help_text = "Pointer to XOS", model = XOS, modifier = required, type = link, port = loadable_modules, db_index = True ];
+ required string name = 2 [ null = False, max_length = 30, content_type = "stripped", blank = False, help_text = "Service Name", modifier = required, db_index = False ];
+ optional string base_url = 3 [ null = True, max_length = 1024, content_type = "stripped", blank = True, help_text = "Base URL, allows use of relative URLs for resources", modifier = optional, db_index = False ];
+ optional string version = 4 [ null = True, default = "1.0.0", max_length = 30, content_type = "stripped", blank = True, help_text = "Version of Service Controller", modifier = optional, db_index = False ];
+ optional string provides = 5 [ null = True, max_length = 254, content_type = "stripped", blank = True, help_text = "Comma-separated list of things provided", modifier = optional, db_index = False ];
+ optional string requires = 6 [ null = True, max_length = 254, content_type = "stripped", blank = True, help_text = "Comma-separated list of required Service Controllers", modifier = optional, db_index = False ];
+ optional string synchronizer_run = 7 [ null = True, max_length = 1024, content_type = "stripped", blank = True, help_text = "synchronizer run command", modifier = optional, db_index = False ];
+ optional string synchronizer_config = 8 [ null = True, max_length = 1024, content_type = "stripped", blank = True, help_text = "synchronizer config file", modifier = optional, db_index = False ];
+ optional string image = 9 [ null = True, max_length = 200, content_type = "stripped", blank = True, help_text = "docker image name", modifier = optional, db_index = False ];
+ required bool no_start = 10 [ null = False, default = False, blank = True, help_text = "Do not start the Synchronizer", modifier = required, db_index = False ];
+ required bool no_build = 11 [ null = False, default = False, blank = True, help_text = "Do not build the Synchronizer container", modifier = required, db_index = False ];
+ required bool no_deploy = 12 [ null = False, default = False, blank = True, help_text = "Do not add synchronizer container to onboarding-docker-compose", modifier = required, db_index = False ];
+}
\ No newline at end of file
diff --git a/xos/genx/protos/core/servicedependency.proto b/xos/genx/protos/core/servicedependency.proto
new file mode 100644
index 0000000..97c0c89
--- /dev/null
+++ b/xos/genx/protos/core/servicedependency.proto
@@ -0,0 +1,14 @@
+
+message ServiceDependency {
+ 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 ];
+}
\ No newline at end of file
diff --git a/xos/genx/protos/core/servicemonitoringagentinfo.proto b/xos/genx/protos/core/servicemonitoringagentinfo.proto
new file mode 100644
index 0000000..9fbe098
--- /dev/null
+++ b/xos/genx/protos/core/servicemonitoringagentinfo.proto
@@ -0,0 +1,6 @@
+
+message ServiceMonitoringAgentInfo {
+ required string name = 1 [ null = False, max_length = 128, blank = False, help_text = "Monitoring Agent Name", modifier = required, db_index = False ];
+ optional int32 service = 2 [ null = True, blank = True, help_text = "The Service this attribute is associated with", model = Service, modifier = optional, type = link, port = servicemonitoringagents, db_index = True ];
+ required string target_uri = 3 [ db_index = False, help_text = "Monitoring collector URI to be used by agents to publish the data", modifier = required, null = False, blank = False ];
+}
\ No newline at end of file
diff --git a/xos/genx/protos/core/serviceprivilege.proto b/xos/genx/protos/core/serviceprivilege.proto
new file mode 100644
index 0000000..08dba9c
--- /dev/null
+++ b/xos/genx/protos/core/serviceprivilege.proto
@@ -0,0 +1,6 @@
+
+message ServicePrivilege {
+ required int32 user = 1 [ null = False, blank = False, model = User, modifier = required, type = link, port = serviceprivileges, db_index = True ];
+ required int32 service = 2 [ null = False, blank = False, model = Service, modifier = required, type = link, port = serviceprivileges, db_index = True ];
+ required int32 role = 3 [ null = False, blank = False, model = ServiceRole, modifier = required, type = link, port = serviceprivileges, db_index = True ];
+}
\ No newline at end of file
diff --git a/xos/genx/protos/core/serviceresource.proto b/xos/genx/protos/core/serviceresource.proto
new file mode 100644
index 0000000..bf72a56
--- /dev/null
+++ b/xos/genx/protos/core/serviceresource.proto
@@ -0,0 +1,12 @@
+
+message ServiceResource {
+ required int32 serviceClass = 1 [ null = False, blank = False, model = ServiceClass, modifier = required, type = link, port = serviceresources, db_index = True ];
+ required string name = 2 [ null = False, max_length = 32, content_type = "stripped", blank = False, modifier = required, db_index = False ];
+ required int32 maxUnitsDeployment = 3 [ db_index = False, default = 1, modifier = required, null = False, blank = False ];
+ required int32 maxUnitsNode = 4 [ db_index = False, default = 1, modifier = required, null = False, blank = False ];
+ required int32 maxDuration = 5 [ db_index = False, default = 1, modifier = required, null = False, blank = False ];
+ required int32 bucketInRate = 6 [ db_index = False, default = 0, modifier = required, null = False, blank = False ];
+ required int32 bucketMaxSize = 7 [ db_index = False, default = 0, modifier = required, null = False, blank = False ];
+ required int32 cost = 8 [ db_index = False, default = 0, modifier = required, null = False, blank = False ];
+ required bool calendarReservable = 9 [ db_index = False, default = True, modifier = required, null = False, blank = True ];
+}
\ No newline at end of file
diff --git a/xos/genx/protos/core/servicerole.proto b/xos/genx/protos/core/servicerole.proto
new file mode 100644
index 0000000..0ed7c7e
--- /dev/null
+++ b/xos/genx/protos/core/servicerole.proto
@@ -0,0 +1,4 @@
+
+message ServiceRole {
+ required string role = 1 [ null = False, choices = "(('admin', 'Admin'),)", 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/core/site.proto b/xos/genx/protos/core/site.proto
new file mode 100644
index 0000000..7583135
--- /dev/null
+++ b/xos/genx/protos/core/site.proto
@@ -0,0 +1,13 @@
+
+message Site {
+ required string name = 1 [ null = False, max_length = 200, content_type = "stripped", blank = False, help_text = "Name for this Site", modifier = required, db_index = False ];
+ optional string site_url = 2 [ null = True, max_length = 512, content_type = "url", blank = True, help_text = "Site's Home URL Page", modifier = optional, db_index = False ];
+ required bool enabled = 3 [ null = False, default = True, blank = True, help_text = "Status for this Site", modifier = required, db_index = False ];
+ required bool hosts_nodes = 4 [ null = False, default = True, blank = True, help_text = "Indicates whether or not the site host nodes", modifier = required, db_index = False ];
+ required bool hosts_users = 5 [ null = False, default = True, blank = True, help_text = "Indicates whether or not the site manages user accounts", modifier = required, db_index = False ];
+ optional float longitude = 6 [ db_index = False, modifier = optional, null = True, blank = True ];
+ optional float latitude = 7 [ db_index = False, modifier = optional, null = True, blank = True ];
+ required string login_base = 8 [ null = False, max_length = 50, content_type = "stripped", blank = False, help_text = "Prefix for Slices associated with this Site", modifier = required, db_index = False ];
+ required bool is_public = 9 [ null = False, default = True, blank = True, help_text = "Indicates the visibility of this site to other members", modifier = required, db_index = False ];
+ required string abbreviated_name = 10 [ null = False, max_length = 80, content_type = "stripped", blank = False, modifier = required, db_index = False ];
+}
\ No newline at end of file
diff --git a/xos/genx/protos/core/sitecredential.proto b/xos/genx/protos/core/sitecredential.proto
new file mode 100644
index 0000000..a23858e
--- /dev/null
+++ b/xos/genx/protos/core/sitecredential.proto
@@ -0,0 +1,7 @@
+
+message SiteCredential {
+ required int32 site = 1 [ null = False, blank = False, help_text = "The User this credential is associated with", model = Site, modifier = required, type = link, port = sitecredentials, db_index = True ];
+ required string name = 2 [ null = False, max_length = 128, blank = False, help_text = "The credential type, e.g. ec2", modifier = required, db_index = True ];
+ required string key_id = 3 [ null = False, max_length = 1024, content_type = "stripped", blank = False, help_text = "The backend id of this credential", modifier = required, db_index = False ];
+ required string enc_value = 4 [ null = False, max_length = 1024, blank = False, help_text = "The key value of this credential", modifier = required, db_index = False ];
+}
\ No newline at end of file
diff --git a/xos/genx/protos/core/sitedeployment.proto b/xos/genx/protos/core/sitedeployment.proto
new file mode 100644
index 0000000..8bbdb9c
--- /dev/null
+++ b/xos/genx/protos/core/sitedeployment.proto
@@ -0,0 +1,7 @@
+
+message SiteDeployment {
+ required int32 site = 1 [ null = False, blank = False, model = Site, modifier = required, type = link, port = sitedeployments, db_index = True ];
+ required int32 deployment = 2 [ null = False, blank = False, model = Deployment, modifier = required, type = link, port = sitedeployments, db_index = True ];
+ optional int32 controller = 3 [ null = True, blank = True, model = Controller, modifier = optional, type = link, port = sitedeployments, db_index = True ];
+ optional string availability_zone = 4 [ null = True, max_length = 200, content_type = "stripped", blank = True, help_text = "OpenStack availability zone", modifier = optional, db_index = False ];
+}
\ No newline at end of file
diff --git a/xos/genx/protos/core/siteprivilege.proto b/xos/genx/protos/core/siteprivilege.proto
new file mode 100644
index 0000000..03fe82f
--- /dev/null
+++ b/xos/genx/protos/core/siteprivilege.proto
@@ -0,0 +1,6 @@
+
+message SitePrivilege {
+ required int32 user = 1 [ null = False, blank = False, model = User, modifier = required, type = link, port = siteprivileges, db_index = True ];
+ required int32 site = 2 [ null = False, blank = False, model = Site, modifier = required, type = link, port = siteprivileges, db_index = True ];
+ required int32 role = 3 [ null = False, blank = False, model = SiteRole, modifier = required, type = link, port = siteprivileges, db_index = True ];
+}
\ No newline at end of file
diff --git a/xos/genx/protos/core/siterole.proto b/xos/genx/protos/core/siterole.proto
new file mode 100644
index 0000000..b302d4c
--- /dev/null
+++ b/xos/genx/protos/core/siterole.proto
@@ -0,0 +1,4 @@
+
+message SiteRole {
+ required string role = 1 [ null = False, choices = "(('admin', 'Admin'), ('pi', 'PI'), ('tech', 'Tech'), ('billing', 'Billing'))", 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/core/slicecredential.proto b/xos/genx/protos/core/slicecredential.proto
new file mode 100644
index 0000000..cf3207f
--- /dev/null
+++ b/xos/genx/protos/core/slicecredential.proto
@@ -0,0 +1,7 @@
+
+message SliceCredential {
+ required int32 slice = 1 [ null = False, blank = False, help_text = "The User this credential is associated with", model = Slice, modifier = required, type = link, port = slicecredentials, db_index = True ];
+ required string name = 2 [ null = False, max_length = 128, blank = False, help_text = "The credential type, e.g. ec2", modifier = required, db_index = True ];
+ required string key_id = 3 [ null = False, max_length = 1024, content_type = "stripped", blank = False, help_text = "The backend id of this credential", modifier = required, db_index = False ];
+ required string enc_value = 4 [ null = False, max_length = 1024, blank = False, help_text = "The key value of this credential", modifier = required, db_index = False ];
+}
\ No newline at end of file
diff --git a/xos/genx/protos/core/sliceprivilege.proto b/xos/genx/protos/core/sliceprivilege.proto
new file mode 100644
index 0000000..53783e5
--- /dev/null
+++ b/xos/genx/protos/core/sliceprivilege.proto
@@ -0,0 +1,6 @@
+
+message SlicePrivilege {
+ required int32 user = 1 [ null = False, blank = False, model = User, modifier = required, type = link, port = sliceprivileges, db_index = True ];
+ required int32 slice = 2 [ null = False, blank = False, model = Slice, modifier = required, type = link, port = sliceprivileges, db_index = True ];
+ required int32 role = 3 [ null = False, blank = False, model = SliceRole, modifier = required, type = link, port = sliceprivileges, db_index = True ];
+}
\ No newline at end of file
diff --git a/xos/genx/protos/core/slicerole.proto b/xos/genx/protos/core/slicerole.proto
new file mode 100644
index 0000000..a76300c
--- /dev/null
+++ b/xos/genx/protos/core/slicerole.proto
@@ -0,0 +1,4 @@
+
+message SliceRole {
+ required string role = 1 [ null = False, choices = "(('admin', 'Admin'), ('default', 'Default'))", 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/core/slicetag.proto b/xos/genx/protos/core/slicetag.proto
new file mode 100644
index 0000000..cc6efdf
--- /dev/null
+++ b/xos/genx/protos/core/slicetag.proto
@@ -0,0 +1,6 @@
+
+message SliceTag {
+ required int32 slice = 1 [ null = False, blank = False, model = Slice, modifier = required, type = link, port = slicetags, db_index = True ];
+ required string name = 2 [ null = False, choices = "(('privatekey', 'Private Key'), ('publickey', 'Public Key'))", max_length = 30, content_type = "stripped", blank = False, help_text = "The name of this tag", modifier = required, db_index = False ];
+ required string value = 3 [ null = False, max_length = 1024, content_type = "stripped", blank = False, help_text = "The value of this tag", modifier = required, db_index = False ];
+}
\ No newline at end of file
diff --git a/xos/genx/protos/core/tag.proto b/xos/genx/protos/core/tag.proto
new file mode 100644
index 0000000..6b89473
--- /dev/null
+++ b/xos/genx/protos/core/tag.proto
@@ -0,0 +1,8 @@
+
+message Tag {
+ required int32 service = 1 [ null = False, blank = False, help_text = "The Service this Tag is associated with", model = Service, modifier = required, type = link, port = tags, db_index = True ];
+ required string name = 2 [ null = False, max_length = 128, blank = False, help_text = "The name of this tag", modifier = required, db_index = True ];
+ required string value = 3 [ null = False, max_length = 1024, content_type = "stripped", blank = False, help_text = "The value of this tag", modifier = required, db_index = False ];
+ required int32 content_type = 4 [ null = False, blank = False, model = ContentType, modifier = required, type = link, port = tag, db_index = True ];
+ required uint32 object_id = 5 [ db_index = False, modifier = required, null = False, blank = False ];
+}
\ No newline at end of file
diff --git a/xos/genx/protos/core/tenant.proto b/xos/genx/protos/core/tenant.proto
new file mode 100644
index 0000000..2c19a73
--- /dev/null
+++ b/xos/genx/protos/core/tenant.proto
@@ -0,0 +1,14 @@
+
+message Tenant {
+ 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 ];
+}
\ No newline at end of file
diff --git a/xos/genx/protos/core/tenantattribute.proto b/xos/genx/protos/core/tenantattribute.proto
new file mode 100644
index 0000000..9487cef
--- /dev/null
+++ b/xos/genx/protos/core/tenantattribute.proto
@@ -0,0 +1,6 @@
+
+message TenantAttribute {
+ required string name = 1 [ null = False, max_length = 128, blank = False, help_text = "Attribute Name", modifier = required, db_index = False ];
+ required string value = 2 [ db_index = False, help_text = "Attribute Value", modifier = required, null = False, blank = False ];
+ required int32 tenant = 3 [ null = False, blank = False, help_text = "The Tenant this attribute is associated with", model = Tenant, modifier = required, type = link, port = tenantattributes, db_index = True ];
+}
\ No newline at end of file
diff --git a/xos/genx/protos/core/tenantprivilege.proto b/xos/genx/protos/core/tenantprivilege.proto
new file mode 100644
index 0000000..5cb62d1
--- /dev/null
+++ b/xos/genx/protos/core/tenantprivilege.proto
@@ -0,0 +1,6 @@
+
+message TenantPrivilege {
+ required int32 user = 1 [ null = False, blank = False, model = User, modifier = required, type = link, port = tenantprivileges, db_index = True ];
+ required int32 tenant = 2 [ null = False, blank = False, model = Tenant, modifier = required, type = link, port = tenantprivileges, db_index = True ];
+ required int32 role = 3 [ null = False, blank = False, model = TenantRole, modifier = required, type = link, port = tenantprivileges, db_index = True ];
+}
\ No newline at end of file
diff --git a/xos/genx/protos/core/tenantrole.proto b/xos/genx/protos/core/tenantrole.proto
new file mode 100644
index 0000000..ddbadd8
--- /dev/null
+++ b/xos/genx/protos/core/tenantrole.proto
@@ -0,0 +1,4 @@
+
+message TenantRole {
+ required string role = 1 [ null = False, choices = "(('admin', 'Admin'), ('access', 'Access'))", 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/core/tenantroot.proto b/xos/genx/protos/core/tenantroot.proto
new file mode 100644
index 0000000..eb36bee
--- /dev/null
+++ b/xos/genx/protos/core/tenantroot.proto
@@ -0,0 +1,7 @@
+
+message TenantRoot {
+ 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 ];
+}
\ No newline at end of file
diff --git a/xos/genx/protos/core/tenantrootprivilege.proto b/xos/genx/protos/core/tenantrootprivilege.proto
new file mode 100644
index 0000000..f226ead
--- /dev/null
+++ b/xos/genx/protos/core/tenantrootprivilege.proto
@@ -0,0 +1,6 @@
+
+message TenantRootPrivilege {
+ required int32 user = 1 [ null = False, blank = False, model = User, modifier = required, type = link, port = tenant_root_privileges, db_index = True ];
+ required int32 tenant_root = 2 [ null = False, blank = False, model = TenantRoot, modifier = required, type = link, port = tenant_root_privileges, db_index = True ];
+ required int32 role = 3 [ null = False, blank = False, model = TenantRootRole, modifier = required, type = link, port = tenant_root_privileges, db_index = True ];
+}
\ No newline at end of file
diff --git a/xos/genx/protos/core/tenantrootrole.proto b/xos/genx/protos/core/tenantrootrole.proto
new file mode 100644
index 0000000..eee9755
--- /dev/null
+++ b/xos/genx/protos/core/tenantrootrole.proto
@@ -0,0 +1,4 @@
+
+message TenantRootRole {
+ required string role = 1 [ null = False, choices = "(('admin', 'Admin'), ('access', 'Access'))", 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/core/usableobject.proto b/xos/genx/protos/core/usableobject.proto
new file mode 100644
index 0000000..8cde567
--- /dev/null
+++ b/xos/genx/protos/core/usableobject.proto
@@ -0,0 +1,4 @@
+
+message UsableObject {
+ required string name = 1 [ null = False, max_length = 1024, content_type = "stripped", blank = False, modifier = required, db_index = False ];
+}
\ No newline at end of file
diff --git a/xos/genx/protos/core/user.proto b/xos/genx/protos/core/user.proto
new file mode 100644
index 0000000..201751b
--- /dev/null
+++ b/xos/genx/protos/core/user.proto
@@ -0,0 +1,21 @@
+
+message User {
+ required string password = 1 [ db_index = False, max_length = 128, modifier = required, null = False, blank = False ];
+ optional string last_login = 2 [ db_index = False, modifier = optional, null = True, content_type = "date", blank = True ];
+ required string email = 3 [ db_index = True, max_length = 255, modifier = required, null = False, blank = False ];
+ required string username = 4 [ null = False, default = "Something", max_length = 255, content_type = "stripped", blank = False, modifier = required, db_index = False ];
+ required string firstname = 5 [ null = False, max_length = 200, content_type = "stripped", blank = False, help_text = "person's given name", modifier = required, db_index = False ];
+ required string lastname = 6 [ null = False, max_length = 200, content_type = "stripped", blank = False, help_text = "person's surname", modifier = required, db_index = False ];
+ optional string phone = 7 [ null = True, max_length = 100, content_type = "stripped", blank = True, help_text = "phone number contact", modifier = optional, db_index = False ];
+ optional string user_url = 8 [ null = True, max_length = 200, content_type = "url", blank = True, modifier = optional, db_index = False ];
+ required int32 site = 9 [ null = False, blank = False, help_text = "Site this user will be homed too", model = Site, modifier = required, type = link, port = users, db_index = True ];
+ optional string public_key = 10 [ null = True, max_length = 1024, blank = True, help_text = "Public key string", modifier = optional, db_index = False ];
+ required bool is_active = 11 [ db_index = False, default = True, modifier = required, null = False, blank = True ];
+ required bool is_admin = 12 [ db_index = False, default = False, modifier = required, null = False, blank = True ];
+ required bool is_staff = 13 [ db_index = False, default = True, modifier = required, null = False, blank = True ];
+ required bool is_readonly = 14 [ db_index = False, default = False, modifier = required, null = False, blank = True ];
+ required bool is_registering = 15 [ db_index = False, default = False, modifier = required, null = False, blank = True ];
+ required bool is_appuser = 16 [ db_index = False, default = False, modifier = required, null = False, blank = True ];
+ optional string login_page = 17 [ null = True, max_length = 200, content_type = "stripped", blank = True, help_text = "send this user to a specific page on login", modifier = optional, db_index = False ];
+ required string timezone = 18 [ null = False, default = "America/New_York", choices = "[('Pacific/Midway', '(GMT-1100) Pacific/Midway'), ('Pacific/Niue', '(GMT-1100) Pacific/Niue'), ('Pacific/Pago_Pago', '(GMT-1100) Pacific/Pago_Pago'), ('Pacific/Honolulu', '(GMT-1000) Pacific/Honolulu'), ('Pacific/Johnston', '(GMT-1000) Pacific/Johnston'), ('Pacific/Rarotonga', '(GMT-1000) Pacific/Rarotonga'), ('Pacific/Tahiti', '(GMT-1000) Pacific/Tahiti'), ('US/Hawaii', '(GMT-1000) US/Hawaii'), ('Pacific/Marquesas', '(GMT-0930) Pacific/Marquesas'), ('America/Adak', '(GMT-0900) America/Adak'), ('Pacific/Gambier', '(GMT-0900) Pacific/Gambier'), ('America/Anchorage', '(GMT-0800) America/Anchorage'), ('America/Juneau', '(GMT-0800) America/Juneau'), ('America/Metlakatla', '(GMT-0800) America/Metlakatla'), ('America/Nome', '(GMT-0800) America/Nome'), ('America/Sitka', '(GMT-0800) America/Sitka'), ('America/Yakutat', '(GMT-0800) America/Yakutat'), ('Pacific/Pitcairn', '(GMT-0800) Pacific/Pitcairn'), ('US/Alaska', '(GMT-0800) US/Alaska'), ('America/Chihuahua', '(GMT-0700) America/Chihuahua'), ('America/Creston', '(GMT-0700) America/Creston'), ('America/Dawson', '(GMT-0700) America/Dawson'), ('America/Dawson_Creek', '(GMT-0700) America/Dawson_Creek'), ('America/Fort_Nelson', '(GMT-0700) America/Fort_Nelson'), ('America/Hermosillo', '(GMT-0700) America/Hermosillo'), ('America/Los_Angeles', '(GMT-0700) America/Los_Angeles'), ('America/Mazatlan', '(GMT-0700) America/Mazatlan'), ('America/Phoenix', '(GMT-0700) America/Phoenix'), ('America/Tijuana', '(GMT-0700) America/Tijuana'), ('America/Vancouver', '(GMT-0700) America/Vancouver'), ('America/Whitehorse', '(GMT-0700) America/Whitehorse'), ('Canada/Pacific', '(GMT-0700) Canada/Pacific'), ('US/Arizona', '(GMT-0700) US/Arizona'), ('US/Pacific', '(GMT-0700) US/Pacific'), ('America/Bahia_Banderas', '(GMT-0600) America/Bahia_Banderas'), ('America/Belize', '(GMT-0600) America/Belize'), ('America/Boise', '(GMT-0600) America/Boise'), ('America/Cambridge_Bay', '(GMT-0600) America/Cambridge_Bay'), ('America/Costa_Rica', '(GMT-0600) America/Costa_Rica'), ('America/Denver', '(GMT-0600) America/Denver'), ('America/Edmonton', '(GMT-0600) America/Edmonton'), ('America/El_Salvador', '(GMT-0600) America/El_Salvador'), ('America/Guatemala', '(GMT-0600) America/Guatemala'), ('America/Inuvik', '(GMT-0600) America/Inuvik'), ('America/Managua', '(GMT-0600) America/Managua'), ('America/Merida', '(GMT-0600) America/Merida'), ('America/Mexico_City', '(GMT-0600) America/Mexico_City'), ('America/Monterrey', '(GMT-0600) America/Monterrey'), ('America/Ojinaga', '(GMT-0600) America/Ojinaga'), ('America/Regina', '(GMT-0600) America/Regina'), ('America/Swift_Current', '(GMT-0600) America/Swift_Current'), ('America/Tegucigalpa', '(GMT-0600) America/Tegucigalpa'), ('America/Yellowknife', '(GMT-0600) America/Yellowknife'), ('Canada/Mountain', '(GMT-0600) Canada/Mountain'), ('Pacific/Galapagos', '(GMT-0600) Pacific/Galapagos'), ('US/Mountain', '(GMT-0600) US/Mountain'), ('America/Atikokan', '(GMT-0500) America/Atikokan'), ('America/Bogota', '(GMT-0500) America/Bogota'), ('America/Cancun', '(GMT-0500) America/Cancun'), ('America/Cayman', '(GMT-0500) America/Cayman'), ('America/Chicago', '(GMT-0500) America/Chicago'), ('America/Eirunepe', '(GMT-0500) America/Eirunepe'), ('America/Guayaquil', '(GMT-0500) America/Guayaquil'), ('America/Indiana/Knox', '(GMT-0500) America/Indiana/Knox'), ('America/Indiana/Tell_City', '(GMT-0500) America/Indiana/Tell_City'), ('America/Jamaica', '(GMT-0500) America/Jamaica'), ('America/Lima', '(GMT-0500) America/Lima'), ('America/Matamoros', '(GMT-0500) America/Matamoros'), ('America/Menominee', '(GMT-0500) America/Menominee'), ('America/North_Dakota/Beulah', '(GMT-0500) America/North_Dakota/Beulah'), ('America/North_Dakota/Center', '(GMT-0500) America/North_Dakota/Center'), ('America/North_Dakota/New_Salem', '(GMT-0500) America/North_Dakota/New_Salem'), ('America/Panama', '(GMT-0500) America/Panama'), ('America/Port-au-Prince', '(GMT-0500) America/Port-au-Prince'), ('America/Rainy_River', '(GMT-0500) America/Rainy_River'), ('America/Rankin_Inlet', '(GMT-0500) America/Rankin_Inlet'), ('America/Resolute', '(GMT-0500) America/Resolute'), ('America/Rio_Branco', '(GMT-0500) America/Rio_Branco'), ('America/Winnipeg', '(GMT-0500) America/Winnipeg'), ('Canada/Central', '(GMT-0500) Canada/Central'), ('Pacific/Easter', '(GMT-0500) Pacific/Easter'), ('US/Central', '(GMT-0500) US/Central'), ('America/Anguilla', '(GMT-0400) America/Anguilla'), ('America/Antigua', '(GMT-0400) America/Antigua'), ('America/Aruba', '(GMT-0400) America/Aruba'), ('America/Asuncion', '(GMT-0400) America/Asuncion'), ('America/Barbados', '(GMT-0400) America/Barbados'), ('America/Blanc-Sablon', '(GMT-0400) America/Blanc-Sablon'), ('America/Boa_Vista', '(GMT-0400) America/Boa_Vista'), ('America/Campo_Grande', '(GMT-0400) America/Campo_Grande'), ('America/Caracas', '(GMT-0400) America/Caracas'), ('America/Cuiaba', '(GMT-0400) America/Cuiaba'), ('America/Curacao', '(GMT-0400) America/Curacao'), ('America/Detroit', '(GMT-0400) America/Detroit'), ('America/Dominica', '(GMT-0400) America/Dominica'), ('America/Grand_Turk', '(GMT-0400) America/Grand_Turk'), ('America/Grenada', '(GMT-0400) America/Grenada'), ('America/Guadeloupe', '(GMT-0400) America/Guadeloupe'), ('America/Guyana', '(GMT-0400) America/Guyana'), ('America/Havana', '(GMT-0400) America/Havana'), ('America/Indiana/Indianapolis', '(GMT-0400) America/Indiana/Indianapolis'), ('America/Indiana/Marengo', '(GMT-0400) America/Indiana/Marengo'), ('America/Indiana/Petersburg', '(GMT-0400) America/Indiana/Petersburg'), ('America/Indiana/Vevay', '(GMT-0400) America/Indiana/Vevay'), ('America/Indiana/Vincennes', '(GMT-0400) America/Indiana/Vincennes'), ('America/Indiana/Winamac', '(GMT-0400) America/Indiana/Winamac'), ('America/Iqaluit', '(GMT-0400) America/Iqaluit'), ('America/Kentucky/Louisville', '(GMT-0400) America/Kentucky/Louisville'), ('America/Kentucky/Monticello', '(GMT-0400) America/Kentucky/Monticello'), ('America/Kralendijk', '(GMT-0400) America/Kralendijk'), ('America/La_Paz', '(GMT-0400) America/La_Paz'), ('America/Lower_Princes', '(GMT-0400) America/Lower_Princes'), ('America/Manaus', '(GMT-0400) America/Manaus'), ('America/Marigot', '(GMT-0400) America/Marigot'), ('America/Martinique', '(GMT-0400) America/Martinique'), ('America/Montserrat', '(GMT-0400) America/Montserrat'), ('America/Nassau', '(GMT-0400) America/Nassau'), ('America/New_York', '(GMT-0400) America/New_York'), ('America/Nipigon', '(GMT-0400) America/Nipigon'), ('America/Pangnirtung', '(GMT-0400) America/Pangnirtung'), ('America/Port_of_Spain', '(GMT-0400) America/Port_of_Spain'), ('America/Porto_Velho', '(GMT-0400) America/Porto_Velho'), ('America/Puerto_Rico', '(GMT-0400) America/Puerto_Rico'), ('America/Santo_Domingo', '(GMT-0400) America/Santo_Domingo'), ('America/St_Barthelemy', '(GMT-0400) America/St_Barthelemy'), ('America/St_Kitts', '(GMT-0400) America/St_Kitts'), ('America/St_Lucia', '(GMT-0400) America/St_Lucia'), ('America/St_Thomas', '(GMT-0400) America/St_Thomas'), ('America/St_Vincent', '(GMT-0400) America/St_Vincent'), ('America/Thunder_Bay', '(GMT-0400) America/Thunder_Bay'), ('America/Toronto', '(GMT-0400) America/Toronto'), ('America/Tortola', '(GMT-0400) America/Tortola'), ('Canada/Eastern', '(GMT-0400) Canada/Eastern'), ('US/Eastern', '(GMT-0400) US/Eastern'), ('America/Araguaina', '(GMT-0300) America/Araguaina'), ('America/Argentina/Buenos_Aires', '(GMT-0300) America/Argentina/Buenos_Aires'), ('America/Argentina/Catamarca', '(GMT-0300) America/Argentina/Catamarca'), ('America/Argentina/Cordoba', '(GMT-0300) America/Argentina/Cordoba'), ('America/Argentina/Jujuy', '(GMT-0300) America/Argentina/Jujuy'), ('America/Argentina/La_Rioja', '(GMT-0300) America/Argentina/La_Rioja'), ('America/Argentina/Mendoza', '(GMT-0300) America/Argentina/Mendoza'), ('America/Argentina/Rio_Gallegos', '(GMT-0300) America/Argentina/Rio_Gallegos'), ('America/Argentina/Salta', '(GMT-0300) America/Argentina/Salta'), ('America/Argentina/San_Juan', '(GMT-0300) America/Argentina/San_Juan'), ('America/Argentina/San_Luis', '(GMT-0300) America/Argentina/San_Luis'), ('America/Argentina/Tucuman', '(GMT-0300) America/Argentina/Tucuman'), ('America/Argentina/Ushuaia', '(GMT-0300) America/Argentina/Ushuaia'), ('America/Bahia', '(GMT-0300) America/Bahia'), ('America/Belem', '(GMT-0300) America/Belem'), ('America/Cayenne', '(GMT-0300) America/Cayenne'), ('America/Fortaleza', '(GMT-0300) America/Fortaleza'), ('America/Glace_Bay', '(GMT-0300) America/Glace_Bay'), ('America/Goose_Bay', '(GMT-0300) America/Goose_Bay'), ('America/Halifax', '(GMT-0300) America/Halifax'), ('America/Maceio', '(GMT-0300) America/Maceio'), ('America/Moncton', '(GMT-0300) America/Moncton'), ('America/Montevideo', '(GMT-0300) America/Montevideo'), ('America/Paramaribo', '(GMT-0300) America/Paramaribo'), ('America/Recife', '(GMT-0300) America/Recife'), ('America/Santarem', '(GMT-0300) America/Santarem'), ('America/Santiago', '(GMT-0300) America/Santiago'), ('America/Sao_Paulo', '(GMT-0300) America/Sao_Paulo'), ('America/Thule', '(GMT-0300) America/Thule'), ('Antarctica/Palmer', '(GMT-0300) Antarctica/Palmer'), ('Antarctica/Rothera', '(GMT-0300) Antarctica/Rothera'), ('Atlantic/Bermuda', '(GMT-0300) Atlantic/Bermuda'), ('Atlantic/Stanley', '(GMT-0300) Atlantic/Stanley'), ('Canada/Atlantic', '(GMT-0300) Canada/Atlantic'), ('America/St_Johns', '(GMT-0230) America/St_Johns'), ('Canada/Newfoundland', '(GMT-0230) Canada/Newfoundland'), ('America/Godthab', '(GMT-0200) America/Godthab'), ('America/Miquelon', '(GMT-0200) America/Miquelon'), ('America/Noronha', '(GMT-0200) America/Noronha'), ('Atlantic/South_Georgia', '(GMT-0200) Atlantic/South_Georgia'), ('Atlantic/Cape_Verde', '(GMT-0100) Atlantic/Cape_Verde'), ('Africa/Abidjan', '(GMT+0000) Africa/Abidjan'), ('Africa/Accra', '(GMT+0000) Africa/Accra'), ('Africa/Bamako', '(GMT+0000) Africa/Bamako'), ('Africa/Banjul', '(GMT+0000) Africa/Banjul'), ('Africa/Bissau', '(GMT+0000) Africa/Bissau'), ('Africa/Conakry', '(GMT+0000) Africa/Conakry'), ('Africa/Dakar', '(GMT+0000) Africa/Dakar'), ('Africa/Freetown', '(GMT+0000) Africa/Freetown'), ('Africa/Lome', '(GMT+0000) Africa/Lome'), ('Africa/Monrovia', '(GMT+0000) Africa/Monrovia'), ('Africa/Nouakchott', '(GMT+0000) Africa/Nouakchott'), ('Africa/Ouagadougou', '(GMT+0000) Africa/Ouagadougou'), ('Africa/Sao_Tome', '(GMT+0000) Africa/Sao_Tome'), ('America/Danmarkshavn', '(GMT+0000) America/Danmarkshavn'), ('America/Scoresbysund', '(GMT+0000) America/Scoresbysund'), ('Atlantic/Azores', '(GMT+0000) Atlantic/Azores'), ('Atlantic/Reykjavik', '(GMT+0000) Atlantic/Reykjavik'), ('Atlantic/St_Helena', '(GMT+0000) Atlantic/St_Helena'), ('GMT', '(GMT+0000) GMT'), ('UTC', '(GMT+0000) UTC'), ('Africa/Algiers', '(GMT+0100) Africa/Algiers'), ('Africa/Bangui', '(GMT+0100) Africa/Bangui'), ('Africa/Brazzaville', '(GMT+0100) Africa/Brazzaville'), ('Africa/Casablanca', '(GMT+0100) Africa/Casablanca'), ('Africa/Douala', '(GMT+0100) Africa/Douala'), ('Africa/El_Aaiun', '(GMT+0100) Africa/El_Aaiun'), ('Africa/Kinshasa', '(GMT+0100) Africa/Kinshasa'), ('Africa/Lagos', '(GMT+0100) Africa/Lagos'), ('Africa/Libreville', '(GMT+0100) Africa/Libreville'), ('Africa/Luanda', '(GMT+0100) Africa/Luanda'), ('Africa/Malabo', '(GMT+0100) Africa/Malabo'), ('Africa/Ndjamena', '(GMT+0100) Africa/Ndjamena'), ('Africa/Niamey', '(GMT+0100) Africa/Niamey'), ('Africa/Porto-Novo', '(GMT+0100) Africa/Porto-Novo'), ('Africa/Tunis', '(GMT+0100) Africa/Tunis'), ('Atlantic/Canary', '(GMT+0100) Atlantic/Canary'), ('Atlantic/Faroe', '(GMT+0100) Atlantic/Faroe'), ('Atlantic/Madeira', '(GMT+0100) Atlantic/Madeira'), ('Europe/Dublin', '(GMT+0100) Europe/Dublin'), ('Europe/Guernsey', '(GMT+0100) Europe/Guernsey'), ('Europe/Isle_of_Man', '(GMT+0100) Europe/Isle_of_Man'), ('Europe/Jersey', '(GMT+0100) Europe/Jersey'), ('Europe/Lisbon', '(GMT+0100) Europe/Lisbon'), ('Europe/London', '(GMT+0100) Europe/London'), ('Africa/Blantyre', '(GMT+0200) Africa/Blantyre'), ('Africa/Bujumbura', '(GMT+0200) Africa/Bujumbura'), ('Africa/Cairo', '(GMT+0200) Africa/Cairo'), ('Africa/Ceuta', '(GMT+0200) Africa/Ceuta'), ('Africa/Gaborone', '(GMT+0200) Africa/Gaborone'), ('Africa/Harare', '(GMT+0200) Africa/Harare'), ('Africa/Johannesburg', '(GMT+0200) Africa/Johannesburg'), ('Africa/Kigali', '(GMT+0200) Africa/Kigali'), ('Africa/Lubumbashi', '(GMT+0200) Africa/Lubumbashi'), ('Africa/Lusaka', '(GMT+0200) Africa/Lusaka'), ('Africa/Maputo', '(GMT+0200) Africa/Maputo'), ('Africa/Maseru', '(GMT+0200) Africa/Maseru'), ('Africa/Mbabane', '(GMT+0200) Africa/Mbabane'), ('Africa/Tripoli', '(GMT+0200) Africa/Tripoli'), ('Africa/Windhoek', '(GMT+0200) Africa/Windhoek'), ('Antarctica/Troll', '(GMT+0200) Antarctica/Troll'), ('Arctic/Longyearbyen', '(GMT+0200) Arctic/Longyearbyen'), ('Asia/Amman', '(GMT+0200) Asia/Amman'), ('Asia/Damascus', '(GMT+0200) Asia/Damascus'), ('Europe/Amsterdam', '(GMT+0200) Europe/Amsterdam'), ('Europe/Andorra', '(GMT+0200) Europe/Andorra'), ('Europe/Belgrade', '(GMT+0200) Europe/Belgrade'), ('Europe/Berlin', '(GMT+0200) Europe/Berlin'), ('Europe/Bratislava', '(GMT+0200) Europe/Bratislava'), ('Europe/Brussels', '(GMT+0200) Europe/Brussels'), ('Europe/Budapest', '(GMT+0200) Europe/Budapest'), ('Europe/Busingen', '(GMT+0200) Europe/Busingen'), ('Europe/Copenhagen', '(GMT+0200) Europe/Copenhagen'), ('Europe/Gibraltar', '(GMT+0200) Europe/Gibraltar'), ('Europe/Kaliningrad', '(GMT+0200) Europe/Kaliningrad'), ('Europe/Ljubljana', '(GMT+0200) Europe/Ljubljana'), ('Europe/Luxembourg', '(GMT+0200) Europe/Luxembourg'), ('Europe/Madrid', '(GMT+0200) Europe/Madrid'), ('Europe/Malta', '(GMT+0200) Europe/Malta'), ('Europe/Monaco', '(GMT+0200) Europe/Monaco'), ('Europe/Oslo', '(GMT+0200) Europe/Oslo'), ('Europe/Paris', '(GMT+0200) Europe/Paris'), ('Europe/Podgorica', '(GMT+0200) Europe/Podgorica'), ('Europe/Prague', '(GMT+0200) Europe/Prague'), ('Europe/Rome', '(GMT+0200) Europe/Rome'), ('Europe/San_Marino', '(GMT+0200) Europe/San_Marino'), ('Europe/Sarajevo', '(GMT+0200) Europe/Sarajevo'), ('Europe/Skopje', '(GMT+0200) Europe/Skopje'), ('Europe/Stockholm', '(GMT+0200) Europe/Stockholm'), ('Europe/Tirane', '(GMT+0200) Europe/Tirane'), ('Europe/Vaduz', '(GMT+0200) Europe/Vaduz'), ('Europe/Vatican', '(GMT+0200) Europe/Vatican'), ('Europe/Vienna', '(GMT+0200) Europe/Vienna'), ('Europe/Warsaw', '(GMT+0200) Europe/Warsaw'), ('Europe/Zagreb', '(GMT+0200) Europe/Zagreb'), ('Europe/Zurich', '(GMT+0200) Europe/Zurich'), ('Africa/Addis_Ababa', '(GMT+0300) Africa/Addis_Ababa'), ('Africa/Asmara', '(GMT+0300) Africa/Asmara'), ('Africa/Dar_es_Salaam', '(GMT+0300) Africa/Dar_es_Salaam'), ('Africa/Djibouti', '(GMT+0300) Africa/Djibouti'), ('Africa/Juba', '(GMT+0300) Africa/Juba'), ('Africa/Kampala', '(GMT+0300) Africa/Kampala'), ('Africa/Khartoum', '(GMT+0300) Africa/Khartoum'), ('Africa/Mogadishu', '(GMT+0300) Africa/Mogadishu'), ('Africa/Nairobi', '(GMT+0300) Africa/Nairobi'), ('Antarctica/Syowa', '(GMT+0300) Antarctica/Syowa'), ('Asia/Aden', '(GMT+0300) Asia/Aden'), ('Asia/Baghdad', '(GMT+0300) Asia/Baghdad'), ('Asia/Bahrain', '(GMT+0300) Asia/Bahrain'), ('Asia/Beirut', '(GMT+0300) Asia/Beirut'), ('Asia/Gaza', '(GMT+0300) Asia/Gaza'), ('Asia/Hebron', '(GMT+0300) Asia/Hebron'), ('Asia/Jerusalem', '(GMT+0300) Asia/Jerusalem'), ('Asia/Kuwait', '(GMT+0300) Asia/Kuwait'), ('Asia/Nicosia', '(GMT+0300) Asia/Nicosia'), ('Asia/Qatar', '(GMT+0300) Asia/Qatar'), ('Asia/Riyadh', '(GMT+0300) Asia/Riyadh'), ('Europe/Athens', '(GMT+0300) Europe/Athens'), ('Europe/Bucharest', '(GMT+0300) Europe/Bucharest'), ('Europe/Chisinau', '(GMT+0300) Europe/Chisinau'), ('Europe/Helsinki', '(GMT+0300) Europe/Helsinki'), ('Europe/Istanbul', '(GMT+0300) Europe/Istanbul'), ('Europe/Kiev', '(GMT+0300) Europe/Kiev'), ('Europe/Kirov', '(GMT+0300) Europe/Kirov'), ('Europe/Mariehamn', '(GMT+0300) Europe/Mariehamn'), ('Europe/Minsk', '(GMT+0300) Europe/Minsk'), ('Europe/Moscow', '(GMT+0300) Europe/Moscow'), ('Europe/Riga', '(GMT+0300) Europe/Riga'), ('Europe/Simferopol', '(GMT+0300) Europe/Simferopol'), ('Europe/Sofia', '(GMT+0300) Europe/Sofia'), ('Europe/Tallinn', '(GMT+0300) Europe/Tallinn'), ('Europe/Uzhgorod', '(GMT+0300) Europe/Uzhgorod'), ('Europe/Vilnius', '(GMT+0300) Europe/Vilnius'), ('Europe/Volgograd', '(GMT+0300) Europe/Volgograd'), ('Europe/Zaporozhye', '(GMT+0300) Europe/Zaporozhye'), ('Indian/Antananarivo', '(GMT+0300) Indian/Antananarivo'), ('Indian/Comoro', '(GMT+0300) Indian/Comoro'), ('Indian/Mayotte', '(GMT+0300) Indian/Mayotte'), ('Asia/Baku', '(GMT+0400) Asia/Baku'), ('Asia/Dubai', '(GMT+0400) Asia/Dubai'), ('Asia/Muscat', '(GMT+0400) Asia/Muscat'), ('Asia/Tbilisi', '(GMT+0400) Asia/Tbilisi'), ('Asia/Yerevan', '(GMT+0400) Asia/Yerevan'), ('Europe/Astrakhan', '(GMT+0400) Europe/Astrakhan'), ('Europe/Samara', '(GMT+0400) Europe/Samara'), ('Europe/Ulyanovsk', '(GMT+0400) Europe/Ulyanovsk'), ('Indian/Mahe', '(GMT+0400) Indian/Mahe'), ('Indian/Mauritius', '(GMT+0400) Indian/Mauritius'), ('Indian/Reunion', '(GMT+0400) Indian/Reunion'), ('Asia/Kabul', '(GMT+0430) Asia/Kabul'), ('Asia/Tehran', '(GMT+0430) Asia/Tehran'), ('Antarctica/Mawson', '(GMT+0500) Antarctica/Mawson'), ('Asia/Aqtau', '(GMT+0500) Asia/Aqtau'), ('Asia/Aqtobe', '(GMT+0500) Asia/Aqtobe'), ('Asia/Ashgabat', '(GMT+0500) Asia/Ashgabat'), ('Asia/Dushanbe', '(GMT+0500) Asia/Dushanbe'), ('Asia/Karachi', '(GMT+0500) Asia/Karachi'), ('Asia/Oral', '(GMT+0500) Asia/Oral'), ('Asia/Samarkand', '(GMT+0500) Asia/Samarkand'), ('Asia/Tashkent', '(GMT+0500) Asia/Tashkent'), ('Asia/Yekaterinburg', '(GMT+0500) Asia/Yekaterinburg'), ('Indian/Kerguelen', '(GMT+0500) Indian/Kerguelen'), ('Indian/Maldives', '(GMT+0500) Indian/Maldives'), ('Asia/Colombo', '(GMT+0530) Asia/Colombo'), ('Asia/Kolkata', '(GMT+0530) Asia/Kolkata'), ('Asia/Kathmandu', '(GMT+0545) Asia/Kathmandu'), ('Antarctica/Vostok', '(GMT+0600) Antarctica/Vostok'), ('Asia/Almaty', '(GMT+0600) Asia/Almaty'), ('Asia/Bishkek', '(GMT+0600) Asia/Bishkek'), ('Asia/Dhaka', '(GMT+0600) Asia/Dhaka'), ('Asia/Omsk', '(GMT+0600) Asia/Omsk'), ('Asia/Qyzylorda', '(GMT+0600) Asia/Qyzylorda'), ('Asia/Thimphu', '(GMT+0600) Asia/Thimphu'), ('Asia/Urumqi', '(GMT+0600) Asia/Urumqi'), ('Indian/Chagos', '(GMT+0600) Indian/Chagos'), ('Asia/Rangoon', '(GMT+0630) Asia/Rangoon'), ('Indian/Cocos', '(GMT+0630) Indian/Cocos'), ('Antarctica/Davis', '(GMT+0700) Antarctica/Davis'), ('Asia/Bangkok', '(GMT+0700) Asia/Bangkok'), ('Asia/Barnaul', '(GMT+0700) Asia/Barnaul'), ('Asia/Ho_Chi_Minh', '(GMT+0700) Asia/Ho_Chi_Minh'), ('Asia/Jakarta', '(GMT+0700) Asia/Jakarta'), ('Asia/Krasnoyarsk', '(GMT+0700) Asia/Krasnoyarsk'), ('Asia/Novokuznetsk', '(GMT+0700) Asia/Novokuznetsk'), ('Asia/Novosibirsk', '(GMT+0700) Asia/Novosibirsk'), ('Asia/Phnom_Penh', '(GMT+0700) Asia/Phnom_Penh'), ('Asia/Pontianak', '(GMT+0700) Asia/Pontianak'), ('Asia/Tomsk', '(GMT+0700) Asia/Tomsk'), ('Asia/Vientiane', '(GMT+0700) Asia/Vientiane'), ('Indian/Christmas', '(GMT+0700) Indian/Christmas'), ('Antarctica/Casey', '(GMT+0800) Antarctica/Casey'), ('Asia/Brunei', '(GMT+0800) Asia/Brunei'), ('Asia/Hong_Kong', '(GMT+0800) Asia/Hong_Kong'), ('Asia/Hovd', '(GMT+0800) Asia/Hovd'), ('Asia/Irkutsk', '(GMT+0800) Asia/Irkutsk'), ('Asia/Kuala_Lumpur', '(GMT+0800) Asia/Kuala_Lumpur'), ('Asia/Kuching', '(GMT+0800) Asia/Kuching'), ('Asia/Macau', '(GMT+0800) Asia/Macau'), ('Asia/Makassar', '(GMT+0800) Asia/Makassar'), ('Asia/Manila', '(GMT+0800) Asia/Manila'), ('Asia/Shanghai', '(GMT+0800) Asia/Shanghai'), ('Asia/Singapore', '(GMT+0800) Asia/Singapore'), ('Asia/Taipei', '(GMT+0800) Asia/Taipei'), ('Australia/Perth', '(GMT+0800) Australia/Perth'), ('Asia/Pyongyang', '(GMT+0830) Asia/Pyongyang'), ('Australia/Eucla', '(GMT+0845) Australia/Eucla'), ('Asia/Chita', '(GMT+0900) Asia/Chita'), ('Asia/Choibalsan', '(GMT+0900) Asia/Choibalsan'), ('Asia/Dili', '(GMT+0900) Asia/Dili'), ('Asia/Jayapura', '(GMT+0900) Asia/Jayapura'), ('Asia/Khandyga', '(GMT+0900) Asia/Khandyga'), ('Asia/Seoul', '(GMT+0900) Asia/Seoul'), ('Asia/Tokyo', '(GMT+0900) Asia/Tokyo'), ('Asia/Ulaanbaatar', '(GMT+0900) Asia/Ulaanbaatar'), ('Asia/Yakutsk', '(GMT+0900) Asia/Yakutsk'), ('Pacific/Palau', '(GMT+0900) Pacific/Palau'), ('Australia/Darwin', '(GMT+0930) Australia/Darwin'), ('Antarctica/DumontDUrville', '(GMT+1000) Antarctica/DumontDUrville'), ('Asia/Ust-Nera', '(GMT+1000) Asia/Ust-Nera'), ('Asia/Vladivostok', '(GMT+1000) Asia/Vladivostok'), ('Australia/Brisbane', '(GMT+1000) Australia/Brisbane'), ('Australia/Lindeman', '(GMT+1000) Australia/Lindeman'), ('Pacific/Chuuk', '(GMT+1000) Pacific/Chuuk'), ('Pacific/Guam', '(GMT+1000) Pacific/Guam'), ('Pacific/Port_Moresby', '(GMT+1000) Pacific/Port_Moresby'), ('Pacific/Saipan', '(GMT+1000) Pacific/Saipan'), ('Australia/Adelaide', '(GMT+1030) Australia/Adelaide'), ('Australia/Broken_Hill', '(GMT+1030) Australia/Broken_Hill'), ('Antarctica/Macquarie', '(GMT+1100) Antarctica/Macquarie'), ('Asia/Magadan', '(GMT+1100) Asia/Magadan'), ('Asia/Sakhalin', '(GMT+1100) Asia/Sakhalin'), ('Asia/Srednekolymsk', '(GMT+1100) Asia/Srednekolymsk'), ('Australia/Currie', '(GMT+1100) Australia/Currie'), ('Australia/Hobart', '(GMT+1100) Australia/Hobart'), ('Australia/Lord_Howe', '(GMT+1100) Australia/Lord_Howe'), ('Australia/Melbourne', '(GMT+1100) Australia/Melbourne'), ('Australia/Sydney', '(GMT+1100) Australia/Sydney'), ('Pacific/Bougainville', '(GMT+1100) Pacific/Bougainville'), ('Pacific/Efate', '(GMT+1100) Pacific/Efate'), ('Pacific/Guadalcanal', '(GMT+1100) Pacific/Guadalcanal'), ('Pacific/Kosrae', '(GMT+1100) Pacific/Kosrae'), ('Pacific/Norfolk', '(GMT+1100) Pacific/Norfolk'), ('Pacific/Noumea', '(GMT+1100) Pacific/Noumea'), ('Pacific/Pohnpei', '(GMT+1100) Pacific/Pohnpei'), ('Asia/Anadyr', '(GMT+1200) Asia/Anadyr'), ('Asia/Kamchatka', '(GMT+1200) Asia/Kamchatka'), ('Pacific/Fiji', '(GMT+1200) Pacific/Fiji'), ('Pacific/Funafuti', '(GMT+1200) Pacific/Funafuti'), ('Pacific/Kwajalein', '(GMT+1200) Pacific/Kwajalein'), ('Pacific/Majuro', '(GMT+1200) Pacific/Majuro'), ('Pacific/Nauru', '(GMT+1200) Pacific/Nauru'), ('Pacific/Tarawa', '(GMT+1200) Pacific/Tarawa'), ('Pacific/Wake', '(GMT+1200) Pacific/Wake'), ('Pacific/Wallis', '(GMT+1200) Pacific/Wallis'), ('Antarctica/McMurdo', '(GMT+1300) Antarctica/McMurdo'), ('Pacific/Auckland', '(GMT+1300) Pacific/Auckland'), ('Pacific/Enderbury', '(GMT+1300) Pacific/Enderbury'), ('Pacific/Fakaofo', '(GMT+1300) Pacific/Fakaofo'), ('Pacific/Tongatapu', '(GMT+1300) Pacific/Tongatapu'), ('Pacific/Chatham', '(GMT+1345) Pacific/Chatham'), ('Pacific/Apia', '(GMT+1400) Pacific/Apia'), ('Pacific/Kiritimati', '(GMT+1400) Pacific/Kiritimati')]", max_length = 100, blank = False, modifier = required, db_index = False ];
+}
\ No newline at end of file
diff --git a/xos/genx/protos/core/usercredential.proto b/xos/genx/protos/core/usercredential.proto
new file mode 100644
index 0000000..5aa414f
--- /dev/null
+++ b/xos/genx/protos/core/usercredential.proto
@@ -0,0 +1,7 @@
+
+message UserCredential {
+ required int32 user = 1 [ null = False, blank = False, help_text = "The User this credential is associated with", model = User, modifier = required, type = link, port = usercredentials, db_index = True ];
+ required string name = 2 [ null = False, max_length = 128, blank = False, help_text = "The credential type, e.g. ec2", modifier = required, db_index = True ];
+ required string key_id = 3 [ null = False, max_length = 1024, content_type = "stripped", blank = False, help_text = "The backend id of this credential", modifier = required, db_index = False ];
+ required string enc_value = 4 [ null = False, max_length = 1024, blank = False, help_text = "The key value of this credential", modifier = required, db_index = False ];
+}
\ No newline at end of file
diff --git a/xos/genx/protos/core/userdashboardview.proto b/xos/genx/protos/core/userdashboardview.proto
new file mode 100644
index 0000000..ddc8b63
--- /dev/null
+++ b/xos/genx/protos/core/userdashboardview.proto
@@ -0,0 +1,6 @@
+
+message UserDashboardView {
+ required int32 user = 1 [ null = False, blank = False, model = User, modifier = required, type = link, port = userdashboardviews, db_index = True ];
+ required int32 dashboardView = 2 [ null = False, blank = False, model = DashboardView, modifier = required, type = link, port = userdashboardviews, db_index = True ];
+ required int32 order = 3 [ db_index = False, default = 0, modifier = required, null = False, blank = False ];
+}
\ No newline at end of file
diff --git a/xos/genx/protos/core/xos.proto b/xos/genx/protos/core/xos.proto
new file mode 100644
index 0000000..0eda556
--- /dev/null
+++ b/xos/genx/protos/core/xos.proto
@@ -0,0 +1,14 @@
+
+message XOS {
+ required string name = 1 [ null = False, default = "XOS", max_length = 200, content_type = "stripped", blank = False, help_text = "Name of XOS", modifier = required, db_index = False ];
+ required int32 ui_port = 2 [ null = False, default = 80, blank = False, help_text = "Port for XOS UI", modifier = required, db_index = False ];
+ required int32 bootstrap_ui_port = 3 [ null = False, default = 81, blank = False, help_text = "Port for XOS Bootstrap UI", modifier = required, db_index = False ];
+ required string db_container_name = 4 [ null = False, default = "xos_db", max_length = 200, content_type = "stripped", blank = False, help_text = "name of XOS db container", modifier = required, db_index = False ];
+ required string redis_container_name = 5 [ null = False, default = "", max_length = 200, content_type = "stripped", blank = True, help_text = "name of XOS redis container", modifier = required, db_index = False ];
+ required string docker_project_name = 6 [ null = False, max_length = 200, content_type = "stripped", blank = False, help_text = "docker project name", modifier = required, db_index = False ];
+ required bool enable_build = 7 [ null = False, default = True, blank = True, help_text = "True if Onboarding Synchronizer should build XOS as necessary", modifier = required, db_index = False ];
+ required bool frontend_only = 8 [ null = False, default = False, blank = True, help_text = "If True, XOS will not start synchronizer containers", modifier = required, db_index = False ];
+ required string source_ui_image = 9 [ null = False, default = "xosproject/xos", max_length = 200, content_type = "stripped", blank = False, modifier = required, db_index = False ];
+ optional string extra_hosts = 10 [ null = True, max_length = 1024, content_type = "stripped", blank = True, help_text = "list of hostname mappings that will be passed to docker-compose", modifier = optional, db_index = False ];
+ required bool no_start = 11 [ null = False, default = False, blank = True, help_text = "Do not start the XOS UI inside of the UI docker container", modifier = required, db_index = False ];
+}
\ No newline at end of file
diff --git a/xos/genx/protos/core/xoscomponent.proto b/xos/genx/protos/core/xoscomponent.proto
new file mode 100644
index 0000000..996b282
--- /dev/null
+++ b/xos/genx/protos/core/xoscomponent.proto
@@ -0,0 +1,14 @@
+
+message XOSComponent {
+ required int32 xos = 1 [ null = False, default = "get_xos()", blank = False, help_text = "Pointer to XOS", model = XOS, modifier = required, type = link, port = loadable_modules, db_index = True ];
+ required string name = 2 [ null = False, max_length = 30, content_type = "stripped", blank = False, help_text = "Service Name", modifier = required, db_index = False ];
+ optional string base_url = 3 [ null = True, max_length = 1024, content_type = "stripped", blank = True, help_text = "Base URL, allows use of relative URLs for resources", modifier = optional, db_index = False ];
+ optional string version = 4 [ null = True, default = "1.0.0", max_length = 30, content_type = "stripped", blank = True, help_text = "Version of Service Controller", modifier = optional, db_index = False ];
+ optional string provides = 5 [ null = True, max_length = 254, content_type = "stripped", blank = True, help_text = "Comma-separated list of things provided", modifier = optional, db_index = False ];
+ optional string requires = 6 [ null = True, max_length = 254, content_type = "stripped", blank = True, help_text = "Comma-separated list of required Service Controllers", modifier = optional, db_index = False ];
+ required string image = 7 [ null = False, max_length = 200, content_type = "stripped", blank = False, help_text = "docker image name", modifier = required, db_index = False ];
+ optional string command = 8 [ null = True, max_length = 1024, content_type = "stripped", blank = True, help_text = "docker run command", modifier = optional, db_index = False ];
+ optional string ports = 9 [ null = True, max_length = 200, content_type = "stripped", blank = True, help_text = "port binding", modifier = optional, db_index = False ];
+ optional string extra = 10 [ null = True, max_length = 200, content_type = "stripped", blank = True, help_text = "extra information needed by containers", modifier = optional, db_index = False ];
+ required bool no_start = 11 [ null = False, default = False, blank = True, help_text = "Do not start the Component", modifier = required, db_index = False ];
+}
\ No newline at end of file
diff --git a/xos/genx/protos/core/xoscomponentlink.proto b/xos/genx/protos/core/xoscomponentlink.proto
new file mode 100644
index 0000000..847df34
--- /dev/null
+++ b/xos/genx/protos/core/xoscomponentlink.proto
@@ -0,0 +1,7 @@
+
+message XOSComponentLink {
+ required int32 component = 1 [ null = False, blank = False, help_text = "The Component object for this Link", model = XOSComponent, modifier = required, type = link, port = links, db_index = True ];
+ required string container = 2 [ null = False, max_length = 200, content_type = "stripped", blank = False, help_text = "container to link", modifier = required, db_index = False ];
+ required string alias = 3 [ null = False, max_length = 200, content_type = "stripped", blank = False, help_text = "alias for the link", modifier = required, db_index = False ];
+ required string kind = 4 [ null = False, default = "internal", choices = "(('internal', 'Internal'), ('external', 'External'))", max_length = 20, blank = False, modifier = required, db_index = False ];
+}
\ No newline at end of file
diff --git a/xos/genx/protos/core/xoscomponentvolume.proto b/xos/genx/protos/core/xoscomponentvolume.proto
new file mode 100644
index 0000000..d3075e9
--- /dev/null
+++ b/xos/genx/protos/core/xoscomponentvolume.proto
@@ -0,0 +1,8 @@
+
+message XOSComponentVolume {
+ required int32 component = 1 [ null = False, blank = False, help_text = "The Component object for this Volume", model = XOSComponent, modifier = required, type = link, port = volumes, db_index = True ];
+ required string name = 2 [ null = False, max_length = 300, content_type = "stripped", blank = False, help_text = "Volume Name", modifier = required, db_index = False ];
+ required string container_path = 3 [ null = False, max_length = 1024, content_type = "stripped", blank = False, help_text = "Path of Volume in Container", modifier = required, db_index = False ];
+ required string host_path = 4 [ null = False, max_length = 1024, content_type = "stripped", blank = False, help_text = "Path of Volume in Host", modifier = required, db_index = False ];
+ required bool read_only = 5 [ null = False, default = False, blank = True, help_text = "True if mount read-only", modifier = required, db_index = False ];
+}
\ No newline at end of file
diff --git a/xos/genx/protos/core/xoscomponentvolumecontainer.proto b/xos/genx/protos/core/xoscomponentvolumecontainer.proto
new file mode 100644
index 0000000..c983894
--- /dev/null
+++ b/xos/genx/protos/core/xoscomponentvolumecontainer.proto
@@ -0,0 +1,6 @@
+
+message XOSComponentVolumeContainer {
+ required int32 component = 1 [ null = False, blank = False, help_text = "The Component object for this VolumeContainer", model = XOSComponent, modifier = required, type = link, port = volumecontainers, db_index = True ];
+ required string name = 2 [ null = False, max_length = 300, content_type = "stripped", blank = False, help_text = "Volume Name", modifier = required, db_index = False ];
+ required string container = 3 [ null = False, max_length = 300, content_type = "stripped", blank = False, help_text = "Volume Name", modifier = required, db_index = False ];
+}
\ No newline at end of file
diff --git a/xos/genx/protos/core/xosguiextension.proto b/xos/genx/protos/core/xosguiextension.proto
new file mode 100644
index 0000000..3efe212
--- /dev/null
+++ b/xos/genx/protos/core/xosguiextension.proto
@@ -0,0 +1,5 @@
+
+message XOSGuiExtension {
+ required string name = 1 [ null = False, max_length = 200, content_type = "stripped", blank = False, help_text = "Name of the GUI Extensions", modifier = required, db_index = False ];
+ required string files = 2 [ null = False, max_length = 1024, content_type = "stripped", blank = False, help_text = "List of comma separated file composing the view", modifier = required, db_index = False ];
+}
\ No newline at end of file
diff --git a/xos/genx/protos/core/xosvolume.proto b/xos/genx/protos/core/xosvolume.proto
new file mode 100644
index 0000000..659c548
--- /dev/null
+++ b/xos/genx/protos/core/xosvolume.proto
@@ -0,0 +1,7 @@
+
+message XOSVolume {
+ required int32 xos = 1 [ null = False, blank = False, help_text = "The XOS object for this Volume", model = XOS, modifier = required, type = link, port = volumes, db_index = True ];
+ required string container_path = 2 [ null = False, max_length = 1024, content_type = "stripped", blank = False, help_text = "Path of Volume in Container", modifier = required, db_index = False ];
+ required string host_path = 3 [ null = False, max_length = 1024, content_type = "stripped", blank = False, help_text = "Path of Volume in Host", modifier = required, db_index = False ];
+ required bool read_only = 4 [ null = False, default = False, blank = True, help_text = "True if mount read-only", modifier = required, db_index = False ];
+}
\ No newline at end of file
diff --git a/xos/genx/targets/proto.xtarget b/xos/genx/targets/proto.xtarget
index 9a168ca..c11c0e8 100644
--- a/xos/genx/targets/proto.xtarget
+++ b/xos/genx/targets/proto.xtarget
@@ -3,9 +3,6 @@
{%- for f in m.fields %}
{{ f.modifier }} {{f.type}} {{f.name}} = {{ f.id }}{% if f.options %} [{% for k,v in f.options.iteritems() %} {{ k }} = {{ v}}{% if not loop.last %},{% endif %} {% endfor %}]{% endif %};
{%- endfor %}
-
- {%- for l in m.links %}
- {{ l.link_type }}
- {%- endfor %}
}
++++ protos/{{ m.name | lower }}.proto
{% endfor %}
diff --git a/xos/genx/xprotos/core/account.xproto b/xos/genx/xprotos/core/account.xproto
new file mode 100644
index 0000000..641d7c5
--- /dev/null
+++ b/xos/genx/xprotos/core/account.xproto
@@ -0,0 +1,5 @@
+
+
+message Account {
+ required manytoone site->Site:accounts = 1 [help_text = "Site for this account", null = False, db_index = True, blank = False];
+}
diff --git a/xos/genx/xprotos/core/addresspool.xproto b/xos/genx/xprotos/core/addresspool.xproto
new file mode 100644
index 0000000..7ada9d4
--- /dev/null
+++ b/xos/genx/xprotos/core/addresspool.xproto
@@ -0,0 +1,11 @@
+
+
+message AddressPool {
+ required string name = 1 [db_index = False, max_length = 32, null = False, blank = False];
+ optional string addresses = 2 [db_index = False, null = True, blank = True];
+ optional string gateway_ip = 3 [db_index = False, max_length = 32, null = True, blank = False];
+ optional string gateway_mac = 4 [db_index = False, max_length = 32, null = True, blank = False];
+ optional string cidr = 5 [db_index = False, max_length = 32, null = True, blank = False];
+ optional string inuse = 6 [db_index = False, null = True, blank = True];
+ optional manytoone service->Service:addresspools = 7 [db_index = True, null = True, blank = True];
+}
diff --git a/xos/genx/xprotos/core/charge.xproto b/xos/genx/xprotos/core/charge.xproto
new file mode 100644
index 0000000..96afeec
--- /dev/null
+++ b/xos/genx/xprotos/core/charge.xproto
@@ -0,0 +1,13 @@
+
+
+message Charge {
+ required manytoone account->Account:charges = 1 [db_index = True, null = False, blank = False];
+ optional manytoone slice->Slice:charges = 2 [db_index = True, null = True, blank = True];
+ required string kind = 3 [default = "besteffort", choices = "(('besteffort', 'besteffort'), ('reservation', 'reservation'), ('monthlyfee', 'monthlyfee'))", max_length = 30, content_type = "stripped", blank = False, null = False, db_index = False];
+ required string state = 4 [default = "pending", choices = "(('pending', 'pending'), ('invoiced', 'invoiced'))", max_length = 30, content_type = "stripped", blank = False, null = False, db_index = False];
+ required string date = 5 [db_index = False, null = False, content_type = "date", blank = False];
+ required manytoone object->UsableObject:charge = 6 [db_index = True, null = False, blank = False];
+ required float amount = 7 [default = 0.0, null = False, db_index = False, blank = False];
+ required float coreHours = 8 [default = 0.0, null = False, db_index = False, blank = False];
+ optional manytoone invoice->Invoice:charges = 9 [db_index = True, null = True, blank = True];
+}
diff --git a/xos/genx/xprotos/core/controller.xproto b/xos/genx/xprotos/core/controller.xproto
new file mode 100644
index 0000000..c6d3638
--- /dev/null
+++ b/xos/genx/xprotos/core/controller.xproto
@@ -0,0 +1,16 @@
+
+
+message Controller {
+ required string name = 1 [max_length = 200, content_type = "stripped", blank = False, help_text = "Name of the Controller", null = False, db_index = False];
+ required string backend_type = 2 [max_length = 200, content_type = "stripped", blank = False, help_text = "Type of compute controller, e.g. EC2, OpenStack, or OpenStack version", null = False, db_index = False];
+ required string version = 3 [max_length = 200, content_type = "stripped", blank = False, help_text = "Controller version", null = False, db_index = False];
+ optional string auth_url = 4 [max_length = 200, content_type = "stripped", blank = True, help_text = "Auth url for the compute controller", null = True, db_index = False];
+ optional string admin_user = 5 [max_length = 200, content_type = "stripped", blank = True, help_text = "Username of an admin user at this controller", null = True, db_index = False];
+ optional string admin_password = 6 [max_length = 200, content_type = "stripped", blank = True, help_text = "Password of theadmin user at this controller", null = True, db_index = False];
+ optional string admin_tenant = 7 [max_length = 200, content_type = "stripped", blank = True, help_text = "Name of the tenant the admin user belongs to", null = True, db_index = False];
+ optional string domain = 8 [max_length = 200, content_type = "stripped", blank = True, help_text = "Name of the domain this controller belongs to", null = True, db_index = False];
+ optional string rabbit_host = 9 [max_length = 200, content_type = "stripped", blank = True, help_text = "IP address of rabbitmq server at this controller", null = True, db_index = False];
+ optional string rabbit_user = 10 [max_length = 200, content_type = "stripped", blank = True, help_text = "Username of rabbitmq server at this controller", null = True, db_index = False];
+ optional string rabbit_password = 11 [max_length = 200, content_type = "stripped", blank = True, help_text = "Password of rabbitmq server at this controller", null = True, db_index = False];
+ required manytoone deployment->Deployment:controllerdeployments = 12 [db_index = True, null = False, blank = False];
+}
diff --git a/xos/genx/xprotos/core/controllerdashboardview.xproto b/xos/genx/xprotos/core/controllerdashboardview.xproto
new file mode 100644
index 0000000..9b8afd2
--- /dev/null
+++ b/xos/genx/xprotos/core/controllerdashboardview.xproto
@@ -0,0 +1,8 @@
+
+
+message ControllerDashboardView {
+ required manytoone controller->Controller:controllerdashboardviews = 1 [db_index = True, null = False, blank = False];
+ required manytoone dashboardView->DashboardView:controllerdashboardviews = 2 [db_index = True, null = False, blank = False];
+ required bool enabled = 3 [default = True, null = False, db_index = False, blank = True];
+ required string url = 4 [max_length = 1024, content_type = "stripped", blank = False, help_text = "URL of Dashboard", null = False, db_index = False];
+}
diff --git a/xos/genx/xprotos/core/controllerimages.xproto b/xos/genx/xprotos/core/controllerimages.xproto
new file mode 100644
index 0000000..ecd750b
--- /dev/null
+++ b/xos/genx/xprotos/core/controllerimages.xproto
@@ -0,0 +1,7 @@
+
+
+message ControllerImages {
+ required manytoone image->Image:controllerimages = 1 [db_index = True, null = False, blank = False];
+ required manytoone controller->Controller:controllerimages = 2 [db_index = True, null = False, blank = False];
+ optional string glance_image_id = 3 [max_length = 200, content_type = "stripped", blank = True, help_text = "Glance image id", null = True, db_index = False];
+}
diff --git a/xos/genx/xprotos/core/controllernetwork.xproto b/xos/genx/xprotos/core/controllernetwork.xproto
new file mode 100644
index 0000000..a09cb56
--- /dev/null
+++ b/xos/genx/xprotos/core/controllernetwork.xproto
@@ -0,0 +1,14 @@
+
+
+message ControllerNetwork {
+ required manytoone network->Network:controllernetworks = 1 [db_index = True, null = False, blank = False];
+ required manytoone controller->Controller:controllernetworks = 2 [db_index = True, null = False, blank = False];
+ required string subnet = 3 [db_index = False, max_length = 32, null = False, blank = True];
+ required string start_ip = 4 [db_index = False, max_length = 32, null = False, blank = True];
+ required string stop_ip = 5 [db_index = False, max_length = 32, null = False, blank = True];
+ optional string net_id = 6 [help_text = "Neutron network", max_length = 256, null = True, db_index = False, blank = True];
+ optional string router_id = 7 [help_text = "Neutron router id", max_length = 256, null = True, db_index = False, blank = True];
+ optional string subnet_id = 8 [help_text = "Neutron subnet id", max_length = 256, null = True, db_index = False, blank = True];
+ optional string gateway = 9 [db_index = False, max_length = 32, null = True, blank = True];
+ optional string segmentation_id = 10 [db_index = False, max_length = 32, null = True, blank = True];
+}
diff --git a/xos/genx/xprotos/core/controllerrole.xproto b/xos/genx/xprotos/core/controllerrole.xproto
new file mode 100644
index 0000000..b6cc629
--- /dev/null
+++ b/xos/genx/xprotos/core/controllerrole.xproto
@@ -0,0 +1,5 @@
+
+
+message ControllerRole {
+ required string role = 1 [choices = "(('admin', 'Admin'),)", max_length = 30, content_type = "stripped", blank = False, null = False, db_index = False];
+}
diff --git a/xos/genx/xprotos/core/controllersite.xproto b/xos/genx/xprotos/core/controllersite.xproto
new file mode 100644
index 0000000..b016012
--- /dev/null
+++ b/xos/genx/xprotos/core/controllersite.xproto
@@ -0,0 +1,7 @@
+
+
+message ControllerSite {
+ required manytoone site->Site:controllersite = 1 [db_index = True, null = False, blank = False];
+ optional manytoone controller->Controller:controllersite = 2 [db_index = True, null = True, blank = True];
+ optional string tenant_id = 3 [max_length = 200, content_type = "stripped", blank = True, help_text = "Keystone tenant id", null = True, db_index = True];
+}
diff --git a/xos/genx/xprotos/core/controllersiteprivilege.xproto b/xos/genx/xprotos/core/controllersiteprivilege.xproto
new file mode 100644
index 0000000..e1741e9
--- /dev/null
+++ b/xos/genx/xprotos/core/controllersiteprivilege.xproto
@@ -0,0 +1,7 @@
+
+
+message ControllerSitePrivilege {
+ required manytoone controller->Controller:controllersiteprivileges = 1 [db_index = True, null = False, blank = False];
+ required manytoone site_privilege->SitePrivilege:controllersiteprivileges = 2 [db_index = True, null = False, blank = False];
+ optional string role_id = 3 [max_length = 200, content_type = "stripped", blank = True, help_text = "Keystone id", null = True, db_index = True];
+}
diff --git a/xos/genx/xprotos/core/controllerslice.xproto b/xos/genx/xprotos/core/controllerslice.xproto
new file mode 100644
index 0000000..9df1311
--- /dev/null
+++ b/xos/genx/xprotos/core/controllerslice.xproto
@@ -0,0 +1,7 @@
+
+
+message ControllerSlice {
+ required manytoone controller->Controller:controllerslices = 1 [db_index = True, null = False, blank = False];
+ required manytoone slice->Slice:controllerslices = 2 [db_index = True, null = False, blank = False];
+ optional string tenant_id = 3 [max_length = 200, content_type = "stripped", blank = True, help_text = "Keystone tenant id", null = True, db_index = False];
+}
diff --git a/xos/genx/xprotos/core/controllersliceprivilege.xproto b/xos/genx/xprotos/core/controllersliceprivilege.xproto
new file mode 100644
index 0000000..711e522
--- /dev/null
+++ b/xos/genx/xprotos/core/controllersliceprivilege.xproto
@@ -0,0 +1,7 @@
+
+
+message ControllerSlicePrivilege {
+ required manytoone controller->Controller:controllersliceprivileges = 1 [db_index = True, null = False, blank = False];
+ required manytoone slice_privilege->SlicePrivilege:controllersliceprivileges = 2 [db_index = True, null = False, blank = False];
+ optional string role_id = 3 [max_length = 200, content_type = "stripped", blank = True, help_text = "Keystone id", null = True, db_index = True];
+}
diff --git a/xos/genx/xprotos/core/controlleruser.xproto b/xos/genx/xprotos/core/controlleruser.xproto
new file mode 100644
index 0000000..49f4c99
--- /dev/null
+++ b/xos/genx/xprotos/core/controlleruser.xproto
@@ -0,0 +1,7 @@
+
+
+message ControllerUser {
+ required manytoone user->User:controllerusers = 1 [db_index = True, null = False, blank = False];
+ required manytoone controller->Controller:controllersusers = 2 [db_index = True, null = False, blank = False];
+ optional string kuser_id = 3 [max_length = 200, content_type = "stripped", blank = True, help_text = "Keystone user id", null = True, db_index = False];
+}
diff --git a/xos/genx/xprotos/core/dashboardview.xproto b/xos/genx/xprotos/core/dashboardview.xproto
new file mode 100644
index 0000000..93b1bf7
--- /dev/null
+++ b/xos/genx/xprotos/core/dashboardview.xproto
@@ -0,0 +1,9 @@
+
+
+message DashboardView {
+ required string name = 1 [max_length = 200, content_type = "stripped", blank = False, help_text = "Name of the View", null = False, db_index = False];
+ required string url = 2 [max_length = 1024, content_type = "stripped", blank = False, help_text = "URL of Dashboard", null = False, db_index = False];
+ required bool enabled = 3 [default = True, null = False, db_index = False, blank = True];
+ required string icon = 4 [default = "default-icon.png", max_length = 200, blank = False, help_text = "Icon for Dashboard", null = False, db_index = False];
+ required string icon_active = 5 [default = "default-icon-active.png", max_length = 200, blank = False, help_text = "Icon for active Dashboard", null = False, db_index = False];
+}
diff --git a/xos/genx/xprotos/core/deployment.xproto b/xos/genx/xprotos/core/deployment.xproto
new file mode 100644
index 0000000..85a0aa8
--- /dev/null
+++ b/xos/genx/xprotos/core/deployment.xproto
@@ -0,0 +1,6 @@
+
+
+message Deployment {
+ required string name = 1 [max_length = 200, content_type = "stripped", blank = False, help_text = "Name of the Deployment", null = False, db_index = False];
+ required string accessControl = 2 [default = "allow all", max_length = 200, blank = False, help_text = "Access control list that specifies which sites/users may use nodes in this deployment", null = False, db_index = False];
+}
diff --git a/xos/genx/xprotos/core/deploymentprivilege.xproto b/xos/genx/xprotos/core/deploymentprivilege.xproto
new file mode 100644
index 0000000..034cc55
--- /dev/null
+++ b/xos/genx/xprotos/core/deploymentprivilege.xproto
@@ -0,0 +1,7 @@
+
+
+message DeploymentPrivilege {
+ required manytoone user->User:deploymentprivileges = 1 [db_index = True, null = False, blank = False];
+ required manytoone deployment->Deployment:deploymentprivileges = 2 [db_index = True, null = False, blank = False];
+ required manytoone role->DeploymentRole:deploymentprivileges = 3 [db_index = True, null = False, blank = False];
+}
diff --git a/xos/genx/xprotos/core/deploymentrole.xproto b/xos/genx/xprotos/core/deploymentrole.xproto
new file mode 100644
index 0000000..34f3970
--- /dev/null
+++ b/xos/genx/xprotos/core/deploymentrole.xproto
@@ -0,0 +1,5 @@
+
+
+message DeploymentRole {
+ required string role = 1 [choices = "(('admin', 'Admin'),)", max_length = 30, content_type = "stripped", blank = False, null = False, db_index = False];
+}
diff --git a/xos/genx/xprotos/core/diag.xproto b/xos/genx/xprotos/core/diag.xproto
new file mode 100644
index 0000000..3570e78
--- /dev/null
+++ b/xos/genx/xprotos/core/diag.xproto
@@ -0,0 +1,5 @@
+
+
+message Diag {
+ required string name = 1 [max_length = 200, content_type = "stripped", blank = False, help_text = "Name of the synchronizer", null = False, db_index = False];
+}
diff --git a/xos/genx/xprotos/core/flavor.xproto b/xos/genx/xprotos/core/flavor.xproto
new file mode 100644
index 0000000..cf524ec
--- /dev/null
+++ b/xos/genx/xprotos/core/flavor.xproto
@@ -0,0 +1,9 @@
+
+
+message Flavor {
+ required string name = 1 [max_length = 32, content_type = "stripped", blank = False, help_text = "name of this flavor, as displayed to users", null = False, db_index = False];
+ optional string description = 2 [db_index = False, max_length = 1024, null = True, content_type = "stripped", blank = True];
+ required string flavor = 3 [max_length = 32, content_type = "stripped", blank = False, help_text = "flavor string used to configure deployments", null = False, db_index = False];
+ required int32 order = 4 [help_text = "used to order flavors when displayed in a list", default = 0, null = False, db_index = False, blank = False];
+ required bool default = 5 [help_text = "make this a default flavor to use when creating new instances", default = False, null = False, db_index = False, blank = True];
+}
diff --git a/xos/genx/xprotos/core/image.xproto b/xos/genx/xprotos/core/image.xproto
new file mode 100644
index 0000000..a25d5c7
--- /dev/null
+++ b/xos/genx/xprotos/core/image.xproto
@@ -0,0 +1,10 @@
+
+
+message Image {
+ required string name = 1 [db_index = False, max_length = 256, null = False, content_type = "stripped", blank = False];
+ required string kind = 2 [default = "vm", choices = "(('vm', 'Virtual Machine'), ('container', 'Container'))", max_length = 30, blank = False, null = False, db_index = False];
+ required string disk_format = 3 [db_index = False, max_length = 256, null = False, content_type = "stripped", blank = False];
+ required string container_format = 4 [db_index = False, max_length = 256, null = False, content_type = "stripped", blank = False];
+ optional string path = 5 [max_length = 256, content_type = "stripped", blank = True, help_text = "Path to image on local disk", null = True, db_index = False];
+ optional string tag = 6 [max_length = 256, content_type = "stripped", blank = True, help_text = "For Docker Images, tag of image", null = True, db_index = False];
+}
diff --git a/xos/genx/xprotos/core/imagedeployments.xproto b/xos/genx/xprotos/core/imagedeployments.xproto
new file mode 100644
index 0000000..48b4e0e
--- /dev/null
+++ b/xos/genx/xprotos/core/imagedeployments.xproto
@@ -0,0 +1,6 @@
+
+
+message ImageDeployments {
+ required manytoone image->Image:imagedeployments = 1 [db_index = True, null = False, blank = False];
+ required manytoone deployment->Deployment:imagedeployments = 2 [db_index = True, null = False, blank = False];
+}
diff --git a/xos/genx/xprotos/core/instance.xproto b/xos/genx/xprotos/core/instance.xproto
new file mode 100644
index 0000000..9dbf715
--- /dev/null
+++ b/xos/genx/xprotos/core/instance.xproto
@@ -0,0 +1,20 @@
+
+
+message Instance {
+ optional string instance_id = 1 [max_length = 200, content_type = "stripped", blank = True, help_text = "Nova instance id", null = True, db_index = False];
+ optional string instance_uuid = 2 [max_length = 200, content_type = "stripped", blank = True, help_text = "Nova instance uuid", null = True, db_index = False];
+ required string name = 3 [max_length = 200, content_type = "stripped", blank = False, help_text = "Instance name", null = False, db_index = False];
+ optional string instance_name = 4 [max_length = 200, content_type = "stripped", blank = True, help_text = "OpenStack generated name", null = True, db_index = False];
+ optional string ip = 5 [max_length = 39, content_type = "ip", blank = True, help_text = "Instance ip address", null = True, db_index = False];
+ required manytoone image->Image:instances = 6 [db_index = True, null = False, blank = False];
+ optional manytoone creator->User:instances = 7 [db_index = True, null = True, blank = True];
+ required manytoone slice->Slice:instances = 8 [db_index = True, null = False, blank = False];
+ required manytoone deployment->Deployment:instance_deployment = 9 [db_index = True, null = False, blank = False];
+ required manytoone node->Node:instances = 10 [db_index = True, null = False, blank = False];
+ required int32 numberCores = 11 [help_text = "Number of cores for instance", default = 0, null = False, db_index = False, blank = False];
+ required manytoone flavor->Flavor:instance = 12 [help_text = "Flavor of this instance", default = "get_default_flavor()", null = False, db_index = True, blank = False];
+ optional string userData = 13 [help_text = "user_data passed to instance during creation", null = True, db_index = False, blank = True];
+ required string isolation = 14 [default = "vm", choices = "(('vm', 'Virtual Machine'), ('container', 'Container'), ('container_vm', 'Container In VM'))", max_length = 30, blank = False, null = False, db_index = False];
+ optional string volumes = 15 [help_text = "Comma-separated list of directories to expose to parent context", null = True, db_index = False, blank = True];
+ optional manytoone parent->Instance:instance = 16 [help_text = "Parent Instance for containers nested inside of VMs", null = True, db_index = True, blank = True];
+}
diff --git a/xos/genx/xprotos/core/invoice.xproto b/xos/genx/xprotos/core/invoice.xproto
new file mode 100644
index 0000000..fb9b886
--- /dev/null
+++ b/xos/genx/xprotos/core/invoice.xproto
@@ -0,0 +1,6 @@
+
+
+message Invoice {
+ required string date = 1 [db_index = False, null = False, content_type = "date", blank = False];
+ required manytoone account->Account:invoices = 2 [db_index = True, null = False, blank = False];
+}
diff --git a/xos/genx/xprotos/core/library.xproto b/xos/genx/xprotos/core/library.xproto
new file mode 100644
index 0000000..00b7f34
--- /dev/null
+++ b/xos/genx/xprotos/core/library.xproto
@@ -0,0 +1,10 @@
+
+
+message Library {
+ required manytoone xos->XOS:loadable_modules = 1 [help_text = "Pointer to XOS", default = "get_xos()", null = False, db_index = True, blank = False];
+ required string name = 2 [max_length = 30, content_type = "stripped", blank = False, help_text = "Service Name", null = False, db_index = False];
+ optional string base_url = 3 [max_length = 1024, content_type = "stripped", blank = True, help_text = "Base URL, allows use of relative URLs for resources", null = True, db_index = False];
+ optional string version = 4 [default = "1.0.0", max_length = 30, content_type = "stripped", blank = True, help_text = "Version of Service Controller", null = True, db_index = False];
+ optional string provides = 5 [max_length = 254, content_type = "stripped", blank = True, help_text = "Comma-separated list of things provided", null = True, db_index = False];
+ optional string requires = 6 [max_length = 254, content_type = "stripped", blank = True, help_text = "Comma-separated list of required Service Controllers", null = True, db_index = False];
+}
diff --git a/xos/genx/xprotos/core/loadablemodule.xproto b/xos/genx/xprotos/core/loadablemodule.xproto
new file mode 100644
index 0000000..79fa8bd
--- /dev/null
+++ b/xos/genx/xprotos/core/loadablemodule.xproto
@@ -0,0 +1,10 @@
+
+
+message LoadableModule {
+ required manytoone xos->XOS:loadable_modules = 1 [help_text = "Pointer to XOS", default = "get_xos()", null = False, db_index = True, blank = False];
+ required string name = 2 [max_length = 30, content_type = "stripped", blank = False, help_text = "Service Name", null = False, db_index = False];
+ optional string base_url = 3 [max_length = 1024, content_type = "stripped", blank = True, help_text = "Base URL, allows use of relative URLs for resources", null = True, db_index = False];
+ optional string version = 4 [default = "1.0.0", max_length = 30, content_type = "stripped", blank = True, help_text = "Version of Service Controller", null = True, db_index = False];
+ optional string provides = 5 [max_length = 254, content_type = "stripped", blank = True, help_text = "Comma-separated list of things provided", null = True, db_index = False];
+ optional string requires = 6 [max_length = 254, content_type = "stripped", blank = True, help_text = "Comma-separated list of required Service Controllers", null = True, db_index = False];
+}
diff --git a/xos/genx/xprotos/core/loadablemoduleresource.xproto b/xos/genx/xprotos/core/loadablemoduleresource.xproto
new file mode 100644
index 0000000..fabc4af
--- /dev/null
+++ b/xos/genx/xprotos/core/loadablemoduleresource.xproto
@@ -0,0 +1,10 @@
+
+
+message LoadableModuleResource {
+ required manytoone loadable_module->LoadableModule:loadable_module_resources = 1 [help_text = "The Loadable Module this resource is associated with", null = False, db_index = True, blank = False];
+ required string name = 2 [max_length = 30, content_type = "stripped", blank = False, help_text = "Object Name", null = False, db_index = False];
+ optional string subdirectory = 3 [max_length = 1024, content_type = "stripped", blank = True, help_text = "optional subdirectory", null = True, db_index = False];
+ required string kind = 4 [choices = "(('models', 'Models'), ('admin', 'Admin'), ('admin_template', 'Admin Template'), ('django_library', 'Django Library'), ('synchronizer', 'Synchronizer'), ('rest_service', 'REST API (service)'), ('rest_tenant', 'REST API (tenant)'), ('tosca_custom_types', 'Tosca Custom Types'), ('tosca_resource', 'Tosca Resource'), ('private_key', 'Private Key'), ('public_key', 'Public Key'), ('vendor_js', 'Vendor Javascript'))", max_length = 30, content_type = "stripped", blank = False, null = False, db_index = False];
+ required string format = 5 [choices = "(('python', 'Python'), ('manifest', 'Manifest'), ('docker', 'Docker Container'), ('yaml', 'YAML'), ('raw', 'raw'), ('javascript', 'Javascript'))", max_length = 30, content_type = "stripped", blank = False, null = False, db_index = False];
+ optional string url = 6 [max_length = 1024, content_type = "stripped", blank = True, help_text = "URL of resource", null = True, db_index = False];
+}
diff --git a/xos/genx/xprotos/core/network.xproto b/xos/genx/xprotos/core/network.xproto
new file mode 100644
index 0000000..7eb3bcf
--- /dev/null
+++ b/xos/genx/xprotos/core/network.xproto
@@ -0,0 +1,21 @@
+
+
+message Network {
+ required string name = 1 [db_index = False, max_length = 32, null = False, blank = False];
+ required manytoone template->NetworkTemplate:network = 2 [db_index = True, null = False, blank = False];
+ required string subnet = 3 [db_index = False, max_length = 32, null = False, blank = True];
+ required string start_ip = 4 [db_index = False, max_length = 32, null = False, blank = True];
+ required string end_ip = 5 [db_index = False, max_length = 32, null = False, blank = True];
+ optional string ports = 6 [db_index = False, max_length = 1024, null = True, blank = True];
+ optional string labels = 7 [db_index = False, max_length = 1024, null = True, blank = True];
+ required manytoone owner->Slice:ownedNetworks = 8 [help_text = "Slice that owns control of this Network", null = False, db_index = True, blank = False];
+ required int32 guaranteed_bandwidth = 9 [default = 0, null = False, db_index = False, blank = False];
+ required bool permit_all_slices = 10 [default = False, null = False, db_index = False, blank = True];
+ optional string topology_parameters = 11 [db_index = False, null = True, blank = True];
+ optional string controller_url = 12 [db_index = False, max_length = 1024, null = True, blank = True];
+ optional string controller_parameters = 13 [db_index = False, null = True, blank = True];
+ optional string network_id = 14 [help_text = "Quantum network", max_length = 256, null = True, db_index = False, blank = True];
+ optional string router_id = 15 [help_text = "Quantum router id", max_length = 256, null = True, db_index = False, blank = True];
+ optional string subnet_id = 16 [help_text = "Quantum subnet id", max_length = 256, null = True, db_index = False, blank = True];
+ required bool autoconnect = 17 [help_text = "This network can be autoconnected to the slice that owns it", default = True, null = False, db_index = False, blank = True];
+}
diff --git a/xos/genx/xprotos/core/networkparameter.xproto b/xos/genx/xprotos/core/networkparameter.xproto
new file mode 100644
index 0000000..407ad03
--- /dev/null
+++ b/xos/genx/xprotos/core/networkparameter.xproto
@@ -0,0 +1,8 @@
+
+
+message NetworkParameter {
+ required manytoone parameter->NetworkParameterType:networkparameters = 1 [help_text = "The type of the parameter", null = False, db_index = True, blank = False];
+ required string value = 2 [help_text = "The value of this parameter", max_length = 1024, null = False, db_index = False, blank = False];
+ required manytoone content_type->ContentType:networkparameter = 3 [db_index = True, null = False, blank = False];
+ required uint32 object_id = 4 [db_index = False, null = False, blank = False];
+}
diff --git a/xos/genx/xprotos/core/networkparametertype.xproto b/xos/genx/xprotos/core/networkparametertype.xproto
new file mode 100644
index 0000000..2126749
--- /dev/null
+++ b/xos/genx/xprotos/core/networkparametertype.xproto
@@ -0,0 +1,6 @@
+
+
+message NetworkParameterType {
+ required string name = 1 [help_text = "The name of this parameter", max_length = 128, null = False, db_index = True, blank = False];
+ required string description = 2 [db_index = False, max_length = 1024, null = False, blank = False];
+}
diff --git a/xos/genx/xprotos/core/networkslice.xproto b/xos/genx/xprotos/core/networkslice.xproto
new file mode 100644
index 0000000..3d76ccf
--- /dev/null
+++ b/xos/genx/xprotos/core/networkslice.xproto
@@ -0,0 +1,6 @@
+
+
+message NetworkSlice {
+ required manytoone network->Network:networkslices = 1 [db_index = True, null = False, blank = False];
+ required manytoone slice->Slice:networkslices = 2 [db_index = True, null = False, blank = False];
+}
diff --git a/xos/genx/xprotos/core/networktemplate.xproto b/xos/genx/xprotos/core/networktemplate.xproto
new file mode 100644
index 0000000..2881598
--- /dev/null
+++ b/xos/genx/xprotos/core/networktemplate.xproto
@@ -0,0 +1,15 @@
+
+
+message NetworkTemplate {
+ required string name = 1 [db_index = False, max_length = 32, null = False, blank = False];
+ optional string description = 2 [db_index = False, max_length = 1024, null = True, blank = True];
+ required int32 guaranteed_bandwidth = 3 [default = 0, null = False, db_index = False, blank = False];
+ required string visibility = 4 [default = "private", choices = "(('public', 'public'), ('private', 'private'))", max_length = 30, blank = False, null = False, db_index = False];
+ required string translation = 5 [default = "none", choices = "(('none', 'none'), ('NAT', 'NAT'))", max_length = 30, blank = False, null = False, db_index = False];
+ optional string access = 6 [choices = "((None, 'None'), ('indirect', 'Indirect'), ('direct', 'Direct'))", max_length = 30, blank = True, help_text = "Advertise this network as a means for other slices to contact this slice", null = True, db_index = False];
+ optional string shared_network_name = 7 [db_index = False, max_length = 30, null = True, blank = True];
+ optional string shared_network_id = 8 [help_text = "Quantum network", max_length = 256, null = True, db_index = False, blank = True];
+ required string topology_kind = 9 [default = "bigswitch", choices = "(('bigswitch', 'BigSwitch'), ('physical', 'Physical'), ('custom', 'Custom'))", max_length = 30, blank = False, null = False, db_index = False];
+ optional string controller_kind = 10 [blank = True, max_length = 30, null = True, db_index = False, choices = "((None, 'None'), ('onos', 'ONOS'), ('custom', 'Custom'))"];
+ optional string vtn_kind = 11 [default = "PRIVATE", choices = "(('PRIVATE', 'Private'), ('PUBLIC', 'Public'), ('MANAGEMENT_LOCAL', 'Management Local'), ('MANAGEMENT_HOST', 'Management Host'), ('VSG', 'VSG'), ('ACCESS_AGENT', 'Access Agent'))", max_length = 30, blank = True, null = True, db_index = False];
+}
diff --git a/xos/genx/xprotos/core/node.xproto b/xos/genx/xprotos/core/node.xproto
new file mode 100644
index 0000000..de2f393
--- /dev/null
+++ b/xos/genx/xprotos/core/node.xproto
@@ -0,0 +1,7 @@
+
+
+message Node {
+ required string name = 1 [max_length = 200, content_type = "stripped", blank = False, help_text = "Name of the Node", null = False, db_index = False];
+ required manytoone site_deployment->SiteDeployment:nodes = 2 [db_index = True, null = False, blank = False];
+ optional manytoone site->Site:nodes = 3 [db_index = True, null = True, blank = True];
+}
diff --git a/xos/genx/xprotos/core/nodelabel.xproto b/xos/genx/xprotos/core/nodelabel.xproto
new file mode 100644
index 0000000..7b01be6
--- /dev/null
+++ b/xos/genx/xprotos/core/nodelabel.xproto
@@ -0,0 +1,5 @@
+
+
+message NodeLabel {
+ required string name = 1 [max_length = 200, content_type = "stripped", blank = False, help_text = "label name", null = False, db_index = False];
+}
diff --git a/xos/genx/xprotos/core/payment.xproto b/xos/genx/xprotos/core/payment.xproto
new file mode 100644
index 0000000..28229a9
--- /dev/null
+++ b/xos/genx/xprotos/core/payment.xproto
@@ -0,0 +1,7 @@
+
+
+message Payment {
+ required manytoone account->Account:payments = 1 [db_index = True, null = False, blank = False];
+ required float amount = 2 [default = 0.0, null = False, db_index = False, blank = False];
+ required string date = 3 [default = "now()", null = False, db_index = False, content_type = "date", blank = False];
+}
diff --git a/xos/genx/xprotos/core/port.xproto b/xos/genx/xprotos/core/port.xproto
new file mode 100644
index 0000000..c07f41f
--- /dev/null
+++ b/xos/genx/xprotos/core/port.xproto
@@ -0,0 +1,10 @@
+
+
+message Port {
+ required manytoone network->Network:links = 1 [db_index = True, null = False, blank = False];
+ optional manytoone instance->Instance:ports = 2 [db_index = True, null = True, blank = True];
+ optional string ip = 3 [max_length = 39, content_type = "ip", blank = True, help_text = "Instance ip address", null = True, db_index = False];
+ optional string port_id = 4 [help_text = "Neutron port id", max_length = 256, null = True, db_index = False, blank = True];
+ optional string mac = 5 [help_text = "MAC address associated with this port", max_length = 256, null = True, db_index = False, blank = True];
+ required bool xos_created = 6 [default = False, null = False, db_index = False, blank = True];
+}
diff --git a/xos/genx/xprotos/core/program.xproto b/xos/genx/xprotos/core/program.xproto
new file mode 100644
index 0000000..5ae442a
--- /dev/null
+++ b/xos/genx/xprotos/core/program.xproto
@@ -0,0 +1,13 @@
+
+
+message Program {
+ required string name = 1 [max_length = 30, content_type = "stripped", blank = False, help_text = "Service Name", null = False, db_index = False];
+ optional string description = 2 [help_text = "Description of Service", max_length = 254, null = True, db_index = False, blank = True];
+ required string kind = 3 [choices = "(('tosca', 'Tosca'),)", max_length = 30, content_type = "stripped", blank = False, help_text = "Kind of service", null = False, db_index = False];
+ optional string command = 4 [choices = "(('run', 'Run'), ('destroy', 'Destroy'))", max_length = 30, content_type = "stripped", blank = True, help_text = "Command to run", null = True, db_index = False];
+ optional manytoone owner->User:programs = 5 [db_index = True, null = True, blank = False];
+ optional string contents = 6 [help_text = "Contents of Program", null = True, db_index = False, blank = True];
+ optional string output = 7 [help_text = "Output of Program", null = True, db_index = False, blank = True];
+ optional string messages = 8 [help_text = "Debug messages", null = True, db_index = False, blank = True];
+ optional string status = 9 [help_text = "Status of program", max_length = 30, null = True, db_index = False, blank = True];
+}
diff --git a/xos/genx/xprotos/core/project.xproto b/xos/genx/xprotos/core/project.xproto
new file mode 100644
index 0000000..10bc249
--- /dev/null
+++ b/xos/genx/xprotos/core/project.xproto
@@ -0,0 +1,5 @@
+
+
+message Project {
+ required string name = 1 [max_length = 200, content_type = "stripped", blank = False, help_text = "Name of Project", null = False, db_index = False];
+}
diff --git a/xos/genx/xprotos/core/protos.tar.gz b/xos/genx/xprotos/core/protos.tar.gz
new file mode 100644
index 0000000..31a3880
--- /dev/null
+++ b/xos/genx/xprotos/core/protos.tar.gz
Binary files differ
diff --git a/xos/genx/xprotos/core/reservation.xproto b/xos/genx/xprotos/core/reservation.xproto
new file mode 100644
index 0000000..8a02ee5
--- /dev/null
+++ b/xos/genx/xprotos/core/reservation.xproto
@@ -0,0 +1,7 @@
+
+
+message Reservation {
+ required string startTime = 1 [db_index = False, null = False, content_type = "date", blank = False];
+ required manytoone slice->Slice:reservations = 2 [db_index = True, null = False, blank = False];
+ required int32 duration = 3 [default = 1, null = False, db_index = False, blank = False];
+}
diff --git a/xos/genx/xprotos/core/reservedresource.xproto b/xos/genx/xprotos/core/reservedresource.xproto
new file mode 100644
index 0000000..78146b3
--- /dev/null
+++ b/xos/genx/xprotos/core/reservedresource.xproto
@@ -0,0 +1,8 @@
+
+
+message ReservedResource {
+ required manytoone instance->Instance:reservedresources = 1 [db_index = True, null = False, blank = False];
+ required manytoone resource->ServiceResource:reservedresources = 2 [db_index = True, null = False, blank = False];
+ required int32 quantity = 3 [default = 1, null = False, db_index = False, blank = False];
+ required manytoone reservationSet->Reservation:reservedresources = 4 [db_index = True, null = False, blank = False];
+}
diff --git a/xos/genx/xprotos/core/role.xproto b/xos/genx/xprotos/core/role.xproto
new file mode 100644
index 0000000..55a4ad1
--- /dev/null
+++ b/xos/genx/xprotos/core/role.xproto
@@ -0,0 +1,8 @@
+
+
+message Role {
+ required string role_type = 1 [db_index = False, max_length = 80, null = False, content_type = "stripped", blank = False];
+ optional string role = 2 [db_index = False, max_length = 80, null = True, content_type = "stripped", blank = True];
+ required string description = 3 [db_index = False, max_length = 120, null = False, content_type = "stripped", blank = False];
+ required manytoone content_type->ContentType:role = 4 [db_index = True, null = False, blank = False];
+}
diff --git a/xos/genx/xprotos/core/router.xproto b/xos/genx/xprotos/core/router.xproto
new file mode 100644
index 0000000..7ca796b
--- /dev/null
+++ b/xos/genx/xprotos/core/router.xproto
@@ -0,0 +1,6 @@
+
+
+message Router {
+ required string name = 1 [db_index = False, max_length = 32, null = False, blank = False];
+ required manytoone owner->Slice:routers = 2 [db_index = True, null = False, blank = False];
+}
diff --git a/xos/genx/xprotos/core/service.xproto b/xos/genx/xprotos/core/service.xproto
new file mode 100644
index 0000000..13a18f1
--- /dev/null
+++ b/xos/genx/xprotos/core/service.xproto
@@ -0,0 +1,17 @@
+
+
+message Service {
+ 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/core/serviceattribute.xproto b/xos/genx/xprotos/core/serviceattribute.xproto
new file mode 100644
index 0000000..5465c62
--- /dev/null
+++ b/xos/genx/xprotos/core/serviceattribute.xproto
@@ -0,0 +1,7 @@
+
+
+message ServiceAttribute {
+ required string name = 1 [help_text = "Attribute Name", max_length = 128, null = False, db_index = False, blank = False];
+ required string value = 2 [help_text = "Attribute Value", null = False, db_index = False, blank = False];
+ required manytoone service->Service:serviceattributes = 3 [help_text = "The Service this attribute is associated with", null = False, db_index = True, blank = False];
+}
diff --git a/xos/genx/xprotos/core/serviceclass.xproto b/xos/genx/xprotos/core/serviceclass.xproto
new file mode 100644
index 0000000..8b665dd
--- /dev/null
+++ b/xos/genx/xprotos/core/serviceclass.xproto
@@ -0,0 +1,10 @@
+
+
+message ServiceClass {
+ required string name = 1 [db_index = False, max_length = 32, null = False, content_type = "stripped", blank = False];
+ required string description = 2 [db_index = False, max_length = 255, null = False, content_type = "stripped", blank = False];
+ required int32 commitment = 3 [default = 365, null = False, db_index = False, blank = False];
+ required int32 membershipFee = 4 [default = 0, null = False, db_index = False, blank = False];
+ required int32 membershipFeeMonths = 5 [default = 12, null = False, db_index = False, blank = False];
+ required bool upgradeRequiresApproval = 6 [default = False, null = False, db_index = False, blank = True];
+}
diff --git a/xos/genx/xprotos/core/servicecontroller.xproto b/xos/genx/xprotos/core/servicecontroller.xproto
new file mode 100644
index 0000000..41cb54d
--- /dev/null
+++ b/xos/genx/xprotos/core/servicecontroller.xproto
@@ -0,0 +1,16 @@
+
+
+message ServiceController {
+ required manytoone xos->XOS:loadable_modules = 1 [help_text = "Pointer to XOS", default = "get_xos()", null = False, db_index = True, blank = False];
+ required string name = 2 [max_length = 30, content_type = "stripped", blank = False, help_text = "Service Name", null = False, db_index = False];
+ optional string base_url = 3 [max_length = 1024, content_type = "stripped", blank = True, help_text = "Base URL, allows use of relative URLs for resources", null = True, db_index = False];
+ optional string version = 4 [default = "1.0.0", max_length = 30, content_type = "stripped", blank = True, help_text = "Version of Service Controller", null = True, db_index = False];
+ optional string provides = 5 [max_length = 254, content_type = "stripped", blank = True, help_text = "Comma-separated list of things provided", null = True, db_index = False];
+ optional string requires = 6 [max_length = 254, content_type = "stripped", blank = True, help_text = "Comma-separated list of required Service Controllers", null = True, db_index = False];
+ optional string synchronizer_run = 7 [max_length = 1024, content_type = "stripped", blank = True, help_text = "synchronizer run command", null = True, db_index = False];
+ optional string synchronizer_config = 8 [max_length = 1024, content_type = "stripped", blank = True, help_text = "synchronizer config file", null = True, db_index = False];
+ optional string image = 9 [max_length = 200, content_type = "stripped", blank = True, help_text = "docker image name", null = True, db_index = False];
+ required bool no_start = 10 [help_text = "Do not start the Synchronizer", default = False, null = False, db_index = False, blank = True];
+ required bool no_build = 11 [help_text = "Do not build the Synchronizer container", default = False, null = False, db_index = False, blank = True];
+ required bool no_deploy = 12 [help_text = "Do not add synchronizer container to onboarding-docker-compose", default = False, null = False, db_index = False, blank = True];
+}
diff --git a/xos/genx/xprotos/core/servicedependency.xproto b/xos/genx/xprotos/core/servicedependency.xproto
new file mode 100644
index 0000000..07a170f
--- /dev/null
+++ b/xos/genx/xprotos/core/servicedependency.xproto
@@ -0,0 +1,15 @@
+
+
+message ServiceDependency {
+ 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];
+}
diff --git a/xos/genx/xprotos/core/servicemonitoringagentinfo.xproto b/xos/genx/xprotos/core/servicemonitoringagentinfo.xproto
new file mode 100644
index 0000000..0636419
--- /dev/null
+++ b/xos/genx/xprotos/core/servicemonitoringagentinfo.xproto
@@ -0,0 +1,7 @@
+
+
+message ServiceMonitoringAgentInfo {
+ required string name = 1 [help_text = "Monitoring Agent Name", max_length = 128, null = False, db_index = False, blank = False];
+ optional manytoone service->Service:servicemonitoringagents = 2 [help_text = "The Service this attribute is associated with", null = True, db_index = True, blank = True];
+ required string target_uri = 3 [help_text = "Monitoring collector URI to be used by agents to publish the data", null = False, db_index = False, blank = False];
+}
diff --git a/xos/genx/xprotos/core/serviceprivilege.xproto b/xos/genx/xprotos/core/serviceprivilege.xproto
new file mode 100644
index 0000000..a6b130b
--- /dev/null
+++ b/xos/genx/xprotos/core/serviceprivilege.xproto
@@ -0,0 +1,7 @@
+
+
+message ServicePrivilege {
+ required manytoone user->User:serviceprivileges = 1 [db_index = True, null = False, blank = False];
+ required manytoone service->Service:serviceprivileges = 2 [db_index = True, null = False, blank = False];
+ required manytoone role->ServiceRole:serviceprivileges = 3 [db_index = True, null = False, blank = False];
+}
diff --git a/xos/genx/xprotos/core/serviceresource.xproto b/xos/genx/xprotos/core/serviceresource.xproto
new file mode 100644
index 0000000..fbd662b
--- /dev/null
+++ b/xos/genx/xprotos/core/serviceresource.xproto
@@ -0,0 +1,13 @@
+
+
+message ServiceResource {
+ required manytoone serviceClass->ServiceClass:serviceresources = 1 [db_index = True, null = False, blank = False];
+ required string name = 2 [db_index = False, max_length = 32, null = False, content_type = "stripped", blank = False];
+ required int32 maxUnitsDeployment = 3 [default = 1, null = False, db_index = False, blank = False];
+ required int32 maxUnitsNode = 4 [default = 1, null = False, db_index = False, blank = False];
+ required int32 maxDuration = 5 [default = 1, null = False, db_index = False, blank = False];
+ required int32 bucketInRate = 6 [default = 0, null = False, db_index = False, blank = False];
+ required int32 bucketMaxSize = 7 [default = 0, null = False, db_index = False, blank = False];
+ required int32 cost = 8 [default = 0, null = False, db_index = False, blank = False];
+ required bool calendarReservable = 9 [default = True, null = False, db_index = False, blank = True];
+}
diff --git a/xos/genx/xprotos/core/servicerole.xproto b/xos/genx/xprotos/core/servicerole.xproto
new file mode 100644
index 0000000..92cb5d4
--- /dev/null
+++ b/xos/genx/xprotos/core/servicerole.xproto
@@ -0,0 +1,5 @@
+
+
+message ServiceRole {
+ required string role = 1 [choices = "(('admin', 'Admin'),)", max_length = 30, content_type = "stripped", blank = False, null = False, db_index = False];
+}
diff --git a/xos/genx/xprotos/core/site.xproto b/xos/genx/xprotos/core/site.xproto
new file mode 100644
index 0000000..e525ce2
--- /dev/null
+++ b/xos/genx/xprotos/core/site.xproto
@@ -0,0 +1,14 @@
+
+
+message Site {
+ required string name = 1 [max_length = 200, content_type = "stripped", blank = False, help_text = "Name for this Site", null = False, db_index = False];
+ optional string site_url = 2 [max_length = 512, content_type = "url", blank = True, help_text = "Site's Home URL Page", null = True, db_index = False];
+ required bool enabled = 3 [help_text = "Status for this Site", default = True, null = False, db_index = False, blank = True];
+ required bool hosts_nodes = 4 [help_text = "Indicates whether or not the site host nodes", default = True, null = False, db_index = False, blank = True];
+ required bool hosts_users = 5 [help_text = "Indicates whether or not the site manages user accounts", default = True, null = False, db_index = False, blank = True];
+ optional float longitude = 6 [db_index = False, null = True, blank = True];
+ optional float latitude = 7 [db_index = False, null = True, blank = True];
+ required string login_base = 8 [max_length = 50, content_type = "stripped", blank = False, help_text = "Prefix for Slices associated with this Site", null = False, db_index = False];
+ required bool is_public = 9 [help_text = "Indicates the visibility of this site to other members", default = True, null = False, db_index = False, blank = True];
+ required string abbreviated_name = 10 [db_index = False, max_length = 80, null = False, content_type = "stripped", blank = False];
+}
diff --git a/xos/genx/xprotos/core/sitecredential.xproto b/xos/genx/xprotos/core/sitecredential.xproto
new file mode 100644
index 0000000..44d74f3
--- /dev/null
+++ b/xos/genx/xprotos/core/sitecredential.xproto
@@ -0,0 +1,8 @@
+
+
+message SiteCredential {
+ required manytoone site->Site:sitecredentials = 1 [help_text = "The User this credential is associated with", null = False, db_index = True, blank = False];
+ required string name = 2 [help_text = "The credential type, e.g. ec2", max_length = 128, null = False, db_index = True, blank = False];
+ required string key_id = 3 [max_length = 1024, content_type = "stripped", blank = False, help_text = "The backend id of this credential", null = False, db_index = False];
+ required string enc_value = 4 [help_text = "The key value of this credential", max_length = 1024, null = False, db_index = False, blank = False];
+}
diff --git a/xos/genx/xprotos/core/sitedeployment.xproto b/xos/genx/xprotos/core/sitedeployment.xproto
new file mode 100644
index 0000000..532b042
--- /dev/null
+++ b/xos/genx/xprotos/core/sitedeployment.xproto
@@ -0,0 +1,8 @@
+
+
+message SiteDeployment {
+ required manytoone site->Site:sitedeployments = 1 [db_index = True, null = False, blank = False];
+ required manytoone deployment->Deployment:sitedeployments = 2 [db_index = True, null = False, blank = False];
+ optional manytoone controller->Controller:sitedeployments = 3 [db_index = True, null = True, blank = True];
+ optional string availability_zone = 4 [max_length = 200, content_type = "stripped", blank = True, help_text = "OpenStack availability zone", null = True, db_index = False];
+}
diff --git a/xos/genx/xprotos/core/siteprivilege.xproto b/xos/genx/xprotos/core/siteprivilege.xproto
new file mode 100644
index 0000000..4812f38
--- /dev/null
+++ b/xos/genx/xprotos/core/siteprivilege.xproto
@@ -0,0 +1,7 @@
+
+
+message SitePrivilege {
+ required manytoone user->User:siteprivileges = 1 [db_index = True, null = False, blank = False];
+ required manytoone site->Site:siteprivileges = 2 [db_index = True, null = False, blank = False];
+ required manytoone role->SiteRole:siteprivileges = 3 [db_index = True, null = False, blank = False];
+}
diff --git a/xos/genx/xprotos/core/siterole.xproto b/xos/genx/xprotos/core/siterole.xproto
new file mode 100644
index 0000000..1558503
--- /dev/null
+++ b/xos/genx/xprotos/core/siterole.xproto
@@ -0,0 +1,5 @@
+
+
+message SiteRole {
+ required string role = 1 [choices = "(('admin', 'Admin'), ('pi', 'PI'), ('tech', 'Tech'), ('billing', 'Billing'))", max_length = 30, content_type = "stripped", blank = False, null = False, db_index = False];
+}
diff --git a/xos/genx/xprotos/core/slice.xproto b/xos/genx/xprotos/core/slice.xproto
new file mode 100644
index 0000000..06bcdb0
--- /dev/null
+++ b/xos/genx/xprotos/core/slice.xproto
@@ -0,0 +1,21 @@
+
+
+message Slice {
+ required string name = 1 [max_length = 80, content_type = "stripped", blank = False, help_text = "The Name of the Slice", null = False, db_index = False];
+ required bool enabled = 2 [help_text = "Status for this Slice", default = True, null = False, db_index = False, blank = True];
+ required bool omf_friendly = 3 [default = False, null = False, db_index = False, blank = True];
+ required string description = 4 [help_text = "High level description of the slice and expected activities", max_length = 1024, null = False, db_index = False, blank = True];
+ required string slice_url = 5 [db_index = False, max_length = 512, null = False, content_type = "url", blank = True];
+ required manytoone site->Site:slices = 6 [help_text = "The Site this Slice belongs to", null = False, db_index = True, blank = False];
+ required int32 max_instances = 7 [default = 10, null = False, db_index = False, blank = False];
+ optional manytoone service->Service:slices = 8 [db_index = True, null = True, blank = True];
+ optional string network = 9 [blank = True, max_length = 256, null = True, db_index = False, choices = "((None, 'Default'), ('host', 'Host'), ('bridged', 'Bridged'), ('noauto', 'No Automatic Networks'))"];
+ optional string exposed_ports = 10 [db_index = False, max_length = 256, null = True, blank = True];
+ optional manytoone serviceClass->ServiceClass:slices = 11 [db_index = True, null = True, blank = True];
+ optional manytoone creator->User:slices = 12 [db_index = True, null = True, blank = True];
+ optional manytoone default_flavor->Flavor:slices = 13 [db_index = True, null = True, blank = True];
+ optional manytoone default_image->Image:slices = 14 [db_index = True, null = True, blank = True];
+ optional manytoone default_node->Node:slices = 15 [db_index = True, null = True, blank = True];
+ optional string mount_data_sets = 16 [default = "GenBank", max_length = 256, content_type = "stripped", blank = True, null = True, db_index = False];
+ required string default_isolation = 17 [default = "vm", choices = "(('vm', 'Virtual Machine'), ('container', 'Container'), ('container_vm', 'Container In VM'))", max_length = 30, blank = False, null = False, db_index = False];
+}
diff --git a/xos/genx/xprotos/core/slicecredential.xproto b/xos/genx/xprotos/core/slicecredential.xproto
new file mode 100644
index 0000000..31ce074
--- /dev/null
+++ b/xos/genx/xprotos/core/slicecredential.xproto
@@ -0,0 +1,8 @@
+
+
+message SliceCredential {
+ required manytoone slice->Slice:slicecredentials = 1 [help_text = "The User this credential is associated with", null = False, db_index = True, blank = False];
+ required string name = 2 [help_text = "The credential type, e.g. ec2", max_length = 128, null = False, db_index = True, blank = False];
+ required string key_id = 3 [max_length = 1024, content_type = "stripped", blank = False, help_text = "The backend id of this credential", null = False, db_index = False];
+ required string enc_value = 4 [help_text = "The key value of this credential", max_length = 1024, null = False, db_index = False, blank = False];
+}
diff --git a/xos/genx/xprotos/core/sliceprivilege.xproto b/xos/genx/xprotos/core/sliceprivilege.xproto
new file mode 100644
index 0000000..4189a1a
--- /dev/null
+++ b/xos/genx/xprotos/core/sliceprivilege.xproto
@@ -0,0 +1,7 @@
+
+
+message SlicePrivilege {
+ required manytoone user->User:sliceprivileges = 1 [db_index = True, null = False, blank = False];
+ required manytoone slice->Slice:sliceprivileges = 2 [db_index = True, null = False, blank = False];
+ required manytoone role->SliceRole:sliceprivileges = 3 [db_index = True, null = False, blank = False];
+}
diff --git a/xos/genx/xprotos/core/slicerole.xproto b/xos/genx/xprotos/core/slicerole.xproto
new file mode 100644
index 0000000..7a9d941
--- /dev/null
+++ b/xos/genx/xprotos/core/slicerole.xproto
@@ -0,0 +1,5 @@
+
+
+message SliceRole {
+ required string role = 1 [choices = "(('admin', 'Admin'), ('default', 'Default'))", max_length = 30, content_type = "stripped", blank = False, null = False, db_index = False];
+}
diff --git a/xos/genx/xprotos/core/slicetag.xproto b/xos/genx/xprotos/core/slicetag.xproto
new file mode 100644
index 0000000..60ce38b
--- /dev/null
+++ b/xos/genx/xprotos/core/slicetag.xproto
@@ -0,0 +1,7 @@
+
+
+message SliceTag {
+ required manytoone slice->Slice:slicetags = 1 [db_index = True, null = False, blank = False];
+ required string name = 2 [choices = "(('privatekey', 'Private Key'), ('publickey', 'Public Key'))", max_length = 30, content_type = "stripped", blank = False, help_text = "The name of this tag", null = False, db_index = False];
+ required string value = 3 [max_length = 1024, content_type = "stripped", blank = False, help_text = "The value of this tag", null = False, db_index = False];
+}
diff --git a/xos/genx/xprotos/core/tag.xproto b/xos/genx/xprotos/core/tag.xproto
new file mode 100644
index 0000000..088c32d
--- /dev/null
+++ b/xos/genx/xprotos/core/tag.xproto
@@ -0,0 +1,9 @@
+
+
+message Tag {
+ required manytoone service->Service:tags = 1 [help_text = "The Service this Tag is associated with", null = False, db_index = True, blank = False];
+ required string name = 2 [help_text = "The name of this tag", max_length = 128, null = False, db_index = True, blank = False];
+ required string value = 3 [max_length = 1024, content_type = "stripped", blank = False, help_text = "The value of this tag", null = False, db_index = False];
+ required manytoone content_type->ContentType:tag = 4 [db_index = True, null = False, blank = False];
+ required uint32 object_id = 5 [db_index = False, null = False, blank = False];
+}
diff --git a/xos/genx/xprotos/core/tenant.xproto b/xos/genx/xprotos/core/tenant.xproto
new file mode 100644
index 0000000..daa9da9
--- /dev/null
+++ b/xos/genx/xprotos/core/tenant.xproto
@@ -0,0 +1,15 @@
+
+
+message Tenant {
+ 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];
+}
diff --git a/xos/genx/xprotos/core/tenantattribute.xproto b/xos/genx/xprotos/core/tenantattribute.xproto
new file mode 100644
index 0000000..a71a783
--- /dev/null
+++ b/xos/genx/xprotos/core/tenantattribute.xproto
@@ -0,0 +1,7 @@
+
+
+message TenantAttribute {
+ required string name = 1 [help_text = "Attribute Name", max_length = 128, null = False, db_index = False, blank = False];
+ required string value = 2 [help_text = "Attribute Value", null = False, db_index = False, blank = False];
+ required manytoone tenant->Tenant:tenantattributes = 3 [help_text = "The Tenant this attribute is associated with", null = False, db_index = True, blank = False];
+}
diff --git a/xos/genx/xprotos/core/tenantprivilege.xproto b/xos/genx/xprotos/core/tenantprivilege.xproto
new file mode 100644
index 0000000..af15f33
--- /dev/null
+++ b/xos/genx/xprotos/core/tenantprivilege.xproto
@@ -0,0 +1,7 @@
+
+
+message TenantPrivilege {
+ required manytoone user->User:tenantprivileges = 1 [db_index = True, null = False, blank = False];
+ required manytoone tenant->Tenant:tenantprivileges = 2 [db_index = True, null = False, blank = False];
+ required manytoone role->TenantRole:tenantprivileges = 3 [db_index = True, null = False, blank = False];
+}
diff --git a/xos/genx/xprotos/core/tenantrole.xproto b/xos/genx/xprotos/core/tenantrole.xproto
new file mode 100644
index 0000000..bb427a9
--- /dev/null
+++ b/xos/genx/xprotos/core/tenantrole.xproto
@@ -0,0 +1,5 @@
+
+
+message TenantRole {
+ required string role = 1 [choices = "(('admin', 'Admin'), ('access', 'Access'))", max_length = 30, content_type = "stripped", blank = False, null = False, db_index = False];
+}
diff --git a/xos/genx/xprotos/core/tenantroot.xproto b/xos/genx/xprotos/core/tenantroot.xproto
new file mode 100644
index 0000000..eab7052
--- /dev/null
+++ b/xos/genx/xprotos/core/tenantroot.xproto
@@ -0,0 +1,8 @@
+
+
+message TenantRoot {
+ 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];
+}
diff --git a/xos/genx/xprotos/core/tenantrootprivilege.xproto b/xos/genx/xprotos/core/tenantrootprivilege.xproto
new file mode 100644
index 0000000..baf419a
--- /dev/null
+++ b/xos/genx/xprotos/core/tenantrootprivilege.xproto
@@ -0,0 +1,7 @@
+
+
+message TenantRootPrivilege {
+ required manytoone user->User:tenant_root_privileges = 1 [db_index = True, null = False, blank = False];
+ required manytoone tenant_root->TenantRoot:tenant_root_privileges = 2 [db_index = True, null = False, blank = False];
+ required manytoone role->TenantRootRole:tenant_root_privileges = 3 [db_index = True, null = False, blank = False];
+}
diff --git a/xos/genx/xprotos/core/tenantrootrole.xproto b/xos/genx/xprotos/core/tenantrootrole.xproto
new file mode 100644
index 0000000..26798ab
--- /dev/null
+++ b/xos/genx/xprotos/core/tenantrootrole.xproto
@@ -0,0 +1,5 @@
+
+
+message TenantRootRole {
+ required string role = 1 [choices = "(('admin', 'Admin'), ('access', 'Access'))", max_length = 30, content_type = "stripped", blank = False, null = False, db_index = False];
+}
diff --git a/xos/genx/xprotos/core/tenantwithcontainer.xproto b/xos/genx/xprotos/core/tenantwithcontainer.xproto
new file mode 100644
index 0000000..78312d6
--- /dev/null
+++ b/xos/genx/xprotos/core/tenantwithcontainer.xproto
@@ -0,0 +1,19 @@
+
+
+message TenantWithContainer {
+ 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];
+}
diff --git a/xos/genx/xprotos/core/usableobject.xproto b/xos/genx/xprotos/core/usableobject.xproto
new file mode 100644
index 0000000..6bff808
--- /dev/null
+++ b/xos/genx/xprotos/core/usableobject.xproto
@@ -0,0 +1,5 @@
+
+
+message UsableObject {
+ required string name = 1 [db_index = False, max_length = 1024, null = False, content_type = "stripped", blank = False];
+}
diff --git a/xos/genx/xprotos/core/user.xproto b/xos/genx/xprotos/core/user.xproto
new file mode 100644
index 0000000..006b67c
--- /dev/null
+++ b/xos/genx/xprotos/core/user.xproto
@@ -0,0 +1,22 @@
+
+
+message User {
+ required string password = 1 [db_index = False, max_length = 128, null = False, blank = False];
+ optional string last_login = 2 [db_index = False, null = True, content_type = "date", blank = True];
+ required string email = 3 [db_index = True, max_length = 255, null = False, blank = False];
+ required string username = 4 [default = "Something", max_length = 255, content_type = "stripped", blank = False, null = False, db_index = False];
+ required string firstname = 5 [max_length = 200, content_type = "stripped", blank = False, help_text = "person's given name", null = False, db_index = False];
+ required string lastname = 6 [max_length = 200, content_type = "stripped", blank = False, help_text = "person's surname", null = False, db_index = False];
+ optional string phone = 7 [max_length = 100, content_type = "stripped", blank = True, help_text = "phone number contact", null = True, db_index = False];
+ optional string user_url = 8 [db_index = False, max_length = 200, null = True, content_type = "url", blank = True];
+ required manytoone site->Site:users = 9 [help_text = "Site this user will be homed too", null = False, db_index = True, blank = False];
+ optional string public_key = 10 [help_text = "Public key string", max_length = 1024, null = True, db_index = False, blank = True];
+ required bool is_active = 11 [default = True, null = False, db_index = False, blank = True];
+ required bool is_admin = 12 [default = False, null = False, db_index = False, blank = True];
+ required bool is_staff = 13 [default = True, null = False, db_index = False, blank = True];
+ required bool is_readonly = 14 [default = False, null = False, db_index = False, blank = True];
+ required bool is_registering = 15 [default = False, null = False, db_index = False, blank = True];
+ required bool is_appuser = 16 [default = False, null = False, db_index = False, blank = True];
+ optional string login_page = 17 [max_length = 200, content_type = "stripped", blank = True, help_text = "send this user to a specific page on login", null = True, db_index = False];
+ required string timezone = 18 [default = "America/New_York", choices = "[('Pacific/Midway', '(GMT-1100) Pacific/Midway'), ('Pacific/Niue', '(GMT-1100) Pacific/Niue'), ('Pacific/Pago_Pago', '(GMT-1100) Pacific/Pago_Pago'), ('Pacific/Honolulu', '(GMT-1000) Pacific/Honolulu'), ('Pacific/Johnston', '(GMT-1000) Pacific/Johnston'), ('Pacific/Rarotonga', '(GMT-1000) Pacific/Rarotonga'), ('Pacific/Tahiti', '(GMT-1000) Pacific/Tahiti'), ('US/Hawaii', '(GMT-1000) US/Hawaii'), ('Pacific/Marquesas', '(GMT-0930) Pacific/Marquesas'), ('America/Adak', '(GMT-0900) America/Adak'), ('Pacific/Gambier', '(GMT-0900) Pacific/Gambier'), ('America/Anchorage', '(GMT-0800) America/Anchorage'), ('America/Juneau', '(GMT-0800) America/Juneau'), ('America/Metlakatla', '(GMT-0800) America/Metlakatla'), ('America/Nome', '(GMT-0800) America/Nome'), ('America/Sitka', '(GMT-0800) America/Sitka'), ('America/Yakutat', '(GMT-0800) America/Yakutat'), ('Pacific/Pitcairn', '(GMT-0800) Pacific/Pitcairn'), ('US/Alaska', '(GMT-0800) US/Alaska'), ('America/Chihuahua', '(GMT-0700) America/Chihuahua'), ('America/Creston', '(GMT-0700) America/Creston'), ('America/Dawson', '(GMT-0700) America/Dawson'), ('America/Dawson_Creek', '(GMT-0700) America/Dawson_Creek'), ('America/Fort_Nelson', '(GMT-0700) America/Fort_Nelson'), ('America/Hermosillo', '(GMT-0700) America/Hermosillo'), ('America/Los_Angeles', '(GMT-0700) America/Los_Angeles'), ('America/Mazatlan', '(GMT-0700) America/Mazatlan'), ('America/Phoenix', '(GMT-0700) America/Phoenix'), ('America/Tijuana', '(GMT-0700) America/Tijuana'), ('America/Vancouver', '(GMT-0700) America/Vancouver'), ('America/Whitehorse', '(GMT-0700) America/Whitehorse'), ('Canada/Pacific', '(GMT-0700) Canada/Pacific'), ('US/Arizona', '(GMT-0700) US/Arizona'), ('US/Pacific', '(GMT-0700) US/Pacific'), ('America/Bahia_Banderas', '(GMT-0600) America/Bahia_Banderas'), ('America/Belize', '(GMT-0600) America/Belize'), ('America/Boise', '(GMT-0600) America/Boise'), ('America/Cambridge_Bay', '(GMT-0600) America/Cambridge_Bay'), ('America/Costa_Rica', '(GMT-0600) America/Costa_Rica'), ('America/Denver', '(GMT-0600) America/Denver'), ('America/Edmonton', '(GMT-0600) America/Edmonton'), ('America/El_Salvador', '(GMT-0600) America/El_Salvador'), ('America/Guatemala', '(GMT-0600) America/Guatemala'), ('America/Inuvik', '(GMT-0600) America/Inuvik'), ('America/Managua', '(GMT-0600) America/Managua'), ('America/Merida', '(GMT-0600) America/Merida'), ('America/Mexico_City', '(GMT-0600) America/Mexico_City'), ('America/Monterrey', '(GMT-0600) America/Monterrey'), ('America/Ojinaga', '(GMT-0600) America/Ojinaga'), ('America/Regina', '(GMT-0600) America/Regina'), ('America/Swift_Current', '(GMT-0600) America/Swift_Current'), ('America/Tegucigalpa', '(GMT-0600) America/Tegucigalpa'), ('America/Yellowknife', '(GMT-0600) America/Yellowknife'), ('Canada/Mountain', '(GMT-0600) Canada/Mountain'), ('Pacific/Galapagos', '(GMT-0600) Pacific/Galapagos'), ('US/Mountain', '(GMT-0600) US/Mountain'), ('America/Atikokan', '(GMT-0500) America/Atikokan'), ('America/Bogota', '(GMT-0500) America/Bogota'), ('America/Cancun', '(GMT-0500) America/Cancun'), ('America/Cayman', '(GMT-0500) America/Cayman'), ('America/Chicago', '(GMT-0500) America/Chicago'), ('America/Eirunepe', '(GMT-0500) America/Eirunepe'), ('America/Guayaquil', '(GMT-0500) America/Guayaquil'), ('America/Indiana/Knox', '(GMT-0500) America/Indiana/Knox'), ('America/Indiana/Tell_City', '(GMT-0500) America/Indiana/Tell_City'), ('America/Jamaica', '(GMT-0500) America/Jamaica'), ('America/Lima', '(GMT-0500) America/Lima'), ('America/Matamoros', '(GMT-0500) America/Matamoros'), ('America/Menominee', '(GMT-0500) America/Menominee'), ('America/North_Dakota/Beulah', '(GMT-0500) America/North_Dakota/Beulah'), ('America/North_Dakota/Center', '(GMT-0500) America/North_Dakota/Center'), ('America/North_Dakota/New_Salem', '(GMT-0500) America/North_Dakota/New_Salem'), ('America/Panama', '(GMT-0500) America/Panama'), ('America/Port-au-Prince', '(GMT-0500) America/Port-au-Prince'), ('America/Rainy_River', '(GMT-0500) America/Rainy_River'), ('America/Rankin_Inlet', '(GMT-0500) America/Rankin_Inlet'), ('America/Resolute', '(GMT-0500) America/Resolute'), ('America/Rio_Branco', '(GMT-0500) America/Rio_Branco'), ('America/Winnipeg', '(GMT-0500) America/Winnipeg'), ('Canada/Central', '(GMT-0500) Canada/Central'), ('Pacific/Easter', '(GMT-0500) Pacific/Easter'), ('US/Central', '(GMT-0500) US/Central'), ('America/Anguilla', '(GMT-0400) America/Anguilla'), ('America/Antigua', '(GMT-0400) America/Antigua'), ('America/Aruba', '(GMT-0400) America/Aruba'), ('America/Asuncion', '(GMT-0400) America/Asuncion'), ('America/Barbados', '(GMT-0400) America/Barbados'), ('America/Blanc-Sablon', '(GMT-0400) America/Blanc-Sablon'), ('America/Boa_Vista', '(GMT-0400) America/Boa_Vista'), ('America/Campo_Grande', '(GMT-0400) America/Campo_Grande'), ('America/Caracas', '(GMT-0400) America/Caracas'), ('America/Cuiaba', '(GMT-0400) America/Cuiaba'), ('America/Curacao', '(GMT-0400) America/Curacao'), ('America/Detroit', '(GMT-0400) America/Detroit'), ('America/Dominica', '(GMT-0400) America/Dominica'), ('America/Grand_Turk', '(GMT-0400) America/Grand_Turk'), ('America/Grenada', '(GMT-0400) America/Grenada'), ('America/Guadeloupe', '(GMT-0400) America/Guadeloupe'), ('America/Guyana', '(GMT-0400) America/Guyana'), ('America/Havana', '(GMT-0400) America/Havana'), ('America/Indiana/Indianapolis', '(GMT-0400) America/Indiana/Indianapolis'), ('America/Indiana/Marengo', '(GMT-0400) America/Indiana/Marengo'), ('America/Indiana/Petersburg', '(GMT-0400) America/Indiana/Petersburg'), ('America/Indiana/Vevay', '(GMT-0400) America/Indiana/Vevay'), ('America/Indiana/Vincennes', '(GMT-0400) America/Indiana/Vincennes'), ('America/Indiana/Winamac', '(GMT-0400) America/Indiana/Winamac'), ('America/Iqaluit', '(GMT-0400) America/Iqaluit'), ('America/Kentucky/Louisville', '(GMT-0400) America/Kentucky/Louisville'), ('America/Kentucky/Monticello', '(GMT-0400) America/Kentucky/Monticello'), ('America/Kralendijk', '(GMT-0400) America/Kralendijk'), ('America/La_Paz', '(GMT-0400) America/La_Paz'), ('America/Lower_Princes', '(GMT-0400) America/Lower_Princes'), ('America/Manaus', '(GMT-0400) America/Manaus'), ('America/Marigot', '(GMT-0400) America/Marigot'), ('America/Martinique', '(GMT-0400) America/Martinique'), ('America/Montserrat', '(GMT-0400) America/Montserrat'), ('America/Nassau', '(GMT-0400) America/Nassau'), ('America/New_York', '(GMT-0400) America/New_York'), ('America/Nipigon', '(GMT-0400) America/Nipigon'), ('America/Pangnirtung', '(GMT-0400) America/Pangnirtung'), ('America/Port_of_Spain', '(GMT-0400) America/Port_of_Spain'), ('America/Porto_Velho', '(GMT-0400) America/Porto_Velho'), ('America/Puerto_Rico', '(GMT-0400) America/Puerto_Rico'), ('America/Santo_Domingo', '(GMT-0400) America/Santo_Domingo'), ('America/St_Barthelemy', '(GMT-0400) America/St_Barthelemy'), ('America/St_Kitts', '(GMT-0400) America/St_Kitts'), ('America/St_Lucia', '(GMT-0400) America/St_Lucia'), ('America/St_Thomas', '(GMT-0400) America/St_Thomas'), ('America/St_Vincent', '(GMT-0400) America/St_Vincent'), ('America/Thunder_Bay', '(GMT-0400) America/Thunder_Bay'), ('America/Toronto', '(GMT-0400) America/Toronto'), ('America/Tortola', '(GMT-0400) America/Tortola'), ('Canada/Eastern', '(GMT-0400) Canada/Eastern'), ('US/Eastern', '(GMT-0400) US/Eastern'), ('America/Araguaina', '(GMT-0300) America/Araguaina'), ('America/Argentina/Buenos_Aires', '(GMT-0300) America/Argentina/Buenos_Aires'), ('America/Argentina/Catamarca', '(GMT-0300) America/Argentina/Catamarca'), ('America/Argentina/Cordoba', '(GMT-0300) America/Argentina/Cordoba'), ('America/Argentina/Jujuy', '(GMT-0300) America/Argentina/Jujuy'), ('America/Argentina/La_Rioja', '(GMT-0300) America/Argentina/La_Rioja'), ('America/Argentina/Mendoza', '(GMT-0300) America/Argentina/Mendoza'), ('America/Argentina/Rio_Gallegos', '(GMT-0300) America/Argentina/Rio_Gallegos'), ('America/Argentina/Salta', '(GMT-0300) America/Argentina/Salta'), ('America/Argentina/San_Juan', '(GMT-0300) America/Argentina/San_Juan'), ('America/Argentina/San_Luis', '(GMT-0300) America/Argentina/San_Luis'), ('America/Argentina/Tucuman', '(GMT-0300) America/Argentina/Tucuman'), ('America/Argentina/Ushuaia', '(GMT-0300) America/Argentina/Ushuaia'), ('America/Bahia', '(GMT-0300) America/Bahia'), ('America/Belem', '(GMT-0300) America/Belem'), ('America/Cayenne', '(GMT-0300) America/Cayenne'), ('America/Fortaleza', '(GMT-0300) America/Fortaleza'), ('America/Glace_Bay', '(GMT-0300) America/Glace_Bay'), ('America/Goose_Bay', '(GMT-0300) America/Goose_Bay'), ('America/Halifax', '(GMT-0300) America/Halifax'), ('America/Maceio', '(GMT-0300) America/Maceio'), ('America/Moncton', '(GMT-0300) America/Moncton'), ('America/Montevideo', '(GMT-0300) America/Montevideo'), ('America/Paramaribo', '(GMT-0300) America/Paramaribo'), ('America/Recife', '(GMT-0300) America/Recife'), ('America/Santarem', '(GMT-0300) America/Santarem'), ('America/Santiago', '(GMT-0300) America/Santiago'), ('America/Sao_Paulo', '(GMT-0300) America/Sao_Paulo'), ('America/Thule', '(GMT-0300) America/Thule'), ('Antarctica/Palmer', '(GMT-0300) Antarctica/Palmer'), ('Antarctica/Rothera', '(GMT-0300) Antarctica/Rothera'), ('Atlantic/Bermuda', '(GMT-0300) Atlantic/Bermuda'), ('Atlantic/Stanley', '(GMT-0300) Atlantic/Stanley'), ('Canada/Atlantic', '(GMT-0300) Canada/Atlantic'), ('America/St_Johns', '(GMT-0230) America/St_Johns'), ('Canada/Newfoundland', '(GMT-0230) Canada/Newfoundland'), ('America/Godthab', '(GMT-0200) America/Godthab'), ('America/Miquelon', '(GMT-0200) America/Miquelon'), ('America/Noronha', '(GMT-0200) America/Noronha'), ('Atlantic/South_Georgia', '(GMT-0200) Atlantic/South_Georgia'), ('Atlantic/Cape_Verde', '(GMT-0100) Atlantic/Cape_Verde'), ('Africa/Abidjan', '(GMT+0000) Africa/Abidjan'), ('Africa/Accra', '(GMT+0000) Africa/Accra'), ('Africa/Bamako', '(GMT+0000) Africa/Bamako'), ('Africa/Banjul', '(GMT+0000) Africa/Banjul'), ('Africa/Bissau', '(GMT+0000) Africa/Bissau'), ('Africa/Conakry', '(GMT+0000) Africa/Conakry'), ('Africa/Dakar', '(GMT+0000) Africa/Dakar'), ('Africa/Freetown', '(GMT+0000) Africa/Freetown'), ('Africa/Lome', '(GMT+0000) Africa/Lome'), ('Africa/Monrovia', '(GMT+0000) Africa/Monrovia'), ('Africa/Nouakchott', '(GMT+0000) Africa/Nouakchott'), ('Africa/Ouagadougou', '(GMT+0000) Africa/Ouagadougou'), ('Africa/Sao_Tome', '(GMT+0000) Africa/Sao_Tome'), ('America/Danmarkshavn', '(GMT+0000) America/Danmarkshavn'), ('America/Scoresbysund', '(GMT+0000) America/Scoresbysund'), ('Atlantic/Azores', '(GMT+0000) Atlantic/Azores'), ('Atlantic/Reykjavik', '(GMT+0000) Atlantic/Reykjavik'), ('Atlantic/St_Helena', '(GMT+0000) Atlantic/St_Helena'), ('GMT', '(GMT+0000) GMT'), ('UTC', '(GMT+0000) UTC'), ('Africa/Algiers', '(GMT+0100) Africa/Algiers'), ('Africa/Bangui', '(GMT+0100) Africa/Bangui'), ('Africa/Brazzaville', '(GMT+0100) Africa/Brazzaville'), ('Africa/Casablanca', '(GMT+0100) Africa/Casablanca'), ('Africa/Douala', '(GMT+0100) Africa/Douala'), ('Africa/El_Aaiun', '(GMT+0100) Africa/El_Aaiun'), ('Africa/Kinshasa', '(GMT+0100) Africa/Kinshasa'), ('Africa/Lagos', '(GMT+0100) Africa/Lagos'), ('Africa/Libreville', '(GMT+0100) Africa/Libreville'), ('Africa/Luanda', '(GMT+0100) Africa/Luanda'), ('Africa/Malabo', '(GMT+0100) Africa/Malabo'), ('Africa/Ndjamena', '(GMT+0100) Africa/Ndjamena'), ('Africa/Niamey', '(GMT+0100) Africa/Niamey'), ('Africa/Porto-Novo', '(GMT+0100) Africa/Porto-Novo'), ('Africa/Tunis', '(GMT+0100) Africa/Tunis'), ('Atlantic/Canary', '(GMT+0100) Atlantic/Canary'), ('Atlantic/Faroe', '(GMT+0100) Atlantic/Faroe'), ('Atlantic/Madeira', '(GMT+0100) Atlantic/Madeira'), ('Europe/Dublin', '(GMT+0100) Europe/Dublin'), ('Europe/Guernsey', '(GMT+0100) Europe/Guernsey'), ('Europe/Isle_of_Man', '(GMT+0100) Europe/Isle_of_Man'), ('Europe/Jersey', '(GMT+0100) Europe/Jersey'), ('Europe/Lisbon', '(GMT+0100) Europe/Lisbon'), ('Europe/London', '(GMT+0100) Europe/London'), ('Africa/Blantyre', '(GMT+0200) Africa/Blantyre'), ('Africa/Bujumbura', '(GMT+0200) Africa/Bujumbura'), ('Africa/Cairo', '(GMT+0200) Africa/Cairo'), ('Africa/Ceuta', '(GMT+0200) Africa/Ceuta'), ('Africa/Gaborone', '(GMT+0200) Africa/Gaborone'), ('Africa/Harare', '(GMT+0200) Africa/Harare'), ('Africa/Johannesburg', '(GMT+0200) Africa/Johannesburg'), ('Africa/Kigali', '(GMT+0200) Africa/Kigali'), ('Africa/Lubumbashi', '(GMT+0200) Africa/Lubumbashi'), ('Africa/Lusaka', '(GMT+0200) Africa/Lusaka'), ('Africa/Maputo', '(GMT+0200) Africa/Maputo'), ('Africa/Maseru', '(GMT+0200) Africa/Maseru'), ('Africa/Mbabane', '(GMT+0200) Africa/Mbabane'), ('Africa/Tripoli', '(GMT+0200) Africa/Tripoli'), ('Africa/Windhoek', '(GMT+0200) Africa/Windhoek'), ('Antarctica/Troll', '(GMT+0200) Antarctica/Troll'), ('Arctic/Longyearbyen', '(GMT+0200) Arctic/Longyearbyen'), ('Asia/Amman', '(GMT+0200) Asia/Amman'), ('Asia/Damascus', '(GMT+0200) Asia/Damascus'), ('Europe/Amsterdam', '(GMT+0200) Europe/Amsterdam'), ('Europe/Andorra', '(GMT+0200) Europe/Andorra'), ('Europe/Belgrade', '(GMT+0200) Europe/Belgrade'), ('Europe/Berlin', '(GMT+0200) Europe/Berlin'), ('Europe/Bratislava', '(GMT+0200) Europe/Bratislava'), ('Europe/Brussels', '(GMT+0200) Europe/Brussels'), ('Europe/Budapest', '(GMT+0200) Europe/Budapest'), ('Europe/Busingen', '(GMT+0200) Europe/Busingen'), ('Europe/Copenhagen', '(GMT+0200) Europe/Copenhagen'), ('Europe/Gibraltar', '(GMT+0200) Europe/Gibraltar'), ('Europe/Kaliningrad', '(GMT+0200) Europe/Kaliningrad'), ('Europe/Ljubljana', '(GMT+0200) Europe/Ljubljana'), ('Europe/Luxembourg', '(GMT+0200) Europe/Luxembourg'), ('Europe/Madrid', '(GMT+0200) Europe/Madrid'), ('Europe/Malta', '(GMT+0200) Europe/Malta'), ('Europe/Monaco', '(GMT+0200) Europe/Monaco'), ('Europe/Oslo', '(GMT+0200) Europe/Oslo'), ('Europe/Paris', '(GMT+0200) Europe/Paris'), ('Europe/Podgorica', '(GMT+0200) Europe/Podgorica'), ('Europe/Prague', '(GMT+0200) Europe/Prague'), ('Europe/Rome', '(GMT+0200) Europe/Rome'), ('Europe/San_Marino', '(GMT+0200) Europe/San_Marino'), ('Europe/Sarajevo', '(GMT+0200) Europe/Sarajevo'), ('Europe/Skopje', '(GMT+0200) Europe/Skopje'), ('Europe/Stockholm', '(GMT+0200) Europe/Stockholm'), ('Europe/Tirane', '(GMT+0200) Europe/Tirane'), ('Europe/Vaduz', '(GMT+0200) Europe/Vaduz'), ('Europe/Vatican', '(GMT+0200) Europe/Vatican'), ('Europe/Vienna', '(GMT+0200) Europe/Vienna'), ('Europe/Warsaw', '(GMT+0200) Europe/Warsaw'), ('Europe/Zagreb', '(GMT+0200) Europe/Zagreb'), ('Europe/Zurich', '(GMT+0200) Europe/Zurich'), ('Africa/Addis_Ababa', '(GMT+0300) Africa/Addis_Ababa'), ('Africa/Asmara', '(GMT+0300) Africa/Asmara'), ('Africa/Dar_es_Salaam', '(GMT+0300) Africa/Dar_es_Salaam'), ('Africa/Djibouti', '(GMT+0300) Africa/Djibouti'), ('Africa/Juba', '(GMT+0300) Africa/Juba'), ('Africa/Kampala', '(GMT+0300) Africa/Kampala'), ('Africa/Khartoum', '(GMT+0300) Africa/Khartoum'), ('Africa/Mogadishu', '(GMT+0300) Africa/Mogadishu'), ('Africa/Nairobi', '(GMT+0300) Africa/Nairobi'), ('Antarctica/Syowa', '(GMT+0300) Antarctica/Syowa'), ('Asia/Aden', '(GMT+0300) Asia/Aden'), ('Asia/Baghdad', '(GMT+0300) Asia/Baghdad'), ('Asia/Bahrain', '(GMT+0300) Asia/Bahrain'), ('Asia/Beirut', '(GMT+0300) Asia/Beirut'), ('Asia/Gaza', '(GMT+0300) Asia/Gaza'), ('Asia/Hebron', '(GMT+0300) Asia/Hebron'), ('Asia/Jerusalem', '(GMT+0300) Asia/Jerusalem'), ('Asia/Kuwait', '(GMT+0300) Asia/Kuwait'), ('Asia/Nicosia', '(GMT+0300) Asia/Nicosia'), ('Asia/Qatar', '(GMT+0300) Asia/Qatar'), ('Asia/Riyadh', '(GMT+0300) Asia/Riyadh'), ('Europe/Athens', '(GMT+0300) Europe/Athens'), ('Europe/Bucharest', '(GMT+0300) Europe/Bucharest'), ('Europe/Chisinau', '(GMT+0300) Europe/Chisinau'), ('Europe/Helsinki', '(GMT+0300) Europe/Helsinki'), ('Europe/Istanbul', '(GMT+0300) Europe/Istanbul'), ('Europe/Kiev', '(GMT+0300) Europe/Kiev'), ('Europe/Kirov', '(GMT+0300) Europe/Kirov'), ('Europe/Mariehamn', '(GMT+0300) Europe/Mariehamn'), ('Europe/Minsk', '(GMT+0300) Europe/Minsk'), ('Europe/Moscow', '(GMT+0300) Europe/Moscow'), ('Europe/Riga', '(GMT+0300) Europe/Riga'), ('Europe/Simferopol', '(GMT+0300) Europe/Simferopol'), ('Europe/Sofia', '(GMT+0300) Europe/Sofia'), ('Europe/Tallinn', '(GMT+0300) Europe/Tallinn'), ('Europe/Uzhgorod', '(GMT+0300) Europe/Uzhgorod'), ('Europe/Vilnius', '(GMT+0300) Europe/Vilnius'), ('Europe/Volgograd', '(GMT+0300) Europe/Volgograd'), ('Europe/Zaporozhye', '(GMT+0300) Europe/Zaporozhye'), ('Indian/Antananarivo', '(GMT+0300) Indian/Antananarivo'), ('Indian/Comoro', '(GMT+0300) Indian/Comoro'), ('Indian/Mayotte', '(GMT+0300) Indian/Mayotte'), ('Asia/Baku', '(GMT+0400) Asia/Baku'), ('Asia/Dubai', '(GMT+0400) Asia/Dubai'), ('Asia/Muscat', '(GMT+0400) Asia/Muscat'), ('Asia/Tbilisi', '(GMT+0400) Asia/Tbilisi'), ('Asia/Yerevan', '(GMT+0400) Asia/Yerevan'), ('Europe/Astrakhan', '(GMT+0400) Europe/Astrakhan'), ('Europe/Samara', '(GMT+0400) Europe/Samara'), ('Europe/Ulyanovsk', '(GMT+0400) Europe/Ulyanovsk'), ('Indian/Mahe', '(GMT+0400) Indian/Mahe'), ('Indian/Mauritius', '(GMT+0400) Indian/Mauritius'), ('Indian/Reunion', '(GMT+0400) Indian/Reunion'), ('Asia/Kabul', '(GMT+0430) Asia/Kabul'), ('Asia/Tehran', '(GMT+0430) Asia/Tehran'), ('Antarctica/Mawson', '(GMT+0500) Antarctica/Mawson'), ('Asia/Aqtau', '(GMT+0500) Asia/Aqtau'), ('Asia/Aqtobe', '(GMT+0500) Asia/Aqtobe'), ('Asia/Ashgabat', '(GMT+0500) Asia/Ashgabat'), ('Asia/Dushanbe', '(GMT+0500) Asia/Dushanbe'), ('Asia/Karachi', '(GMT+0500) Asia/Karachi'), ('Asia/Oral', '(GMT+0500) Asia/Oral'), ('Asia/Samarkand', '(GMT+0500) Asia/Samarkand'), ('Asia/Tashkent', '(GMT+0500) Asia/Tashkent'), ('Asia/Yekaterinburg', '(GMT+0500) Asia/Yekaterinburg'), ('Indian/Kerguelen', '(GMT+0500) Indian/Kerguelen'), ('Indian/Maldives', '(GMT+0500) Indian/Maldives'), ('Asia/Colombo', '(GMT+0530) Asia/Colombo'), ('Asia/Kolkata', '(GMT+0530) Asia/Kolkata'), ('Asia/Kathmandu', '(GMT+0545) Asia/Kathmandu'), ('Antarctica/Vostok', '(GMT+0600) Antarctica/Vostok'), ('Asia/Almaty', '(GMT+0600) Asia/Almaty'), ('Asia/Bishkek', '(GMT+0600) Asia/Bishkek'), ('Asia/Dhaka', '(GMT+0600) Asia/Dhaka'), ('Asia/Omsk', '(GMT+0600) Asia/Omsk'), ('Asia/Qyzylorda', '(GMT+0600) Asia/Qyzylorda'), ('Asia/Thimphu', '(GMT+0600) Asia/Thimphu'), ('Asia/Urumqi', '(GMT+0600) Asia/Urumqi'), ('Indian/Chagos', '(GMT+0600) Indian/Chagos'), ('Asia/Rangoon', '(GMT+0630) Asia/Rangoon'), ('Indian/Cocos', '(GMT+0630) Indian/Cocos'), ('Antarctica/Davis', '(GMT+0700) Antarctica/Davis'), ('Asia/Bangkok', '(GMT+0700) Asia/Bangkok'), ('Asia/Barnaul', '(GMT+0700) Asia/Barnaul'), ('Asia/Ho_Chi_Minh', '(GMT+0700) Asia/Ho_Chi_Minh'), ('Asia/Jakarta', '(GMT+0700) Asia/Jakarta'), ('Asia/Krasnoyarsk', '(GMT+0700) Asia/Krasnoyarsk'), ('Asia/Novokuznetsk', '(GMT+0700) Asia/Novokuznetsk'), ('Asia/Novosibirsk', '(GMT+0700) Asia/Novosibirsk'), ('Asia/Phnom_Penh', '(GMT+0700) Asia/Phnom_Penh'), ('Asia/Pontianak', '(GMT+0700) Asia/Pontianak'), ('Asia/Tomsk', '(GMT+0700) Asia/Tomsk'), ('Asia/Vientiane', '(GMT+0700) Asia/Vientiane'), ('Indian/Christmas', '(GMT+0700) Indian/Christmas'), ('Antarctica/Casey', '(GMT+0800) Antarctica/Casey'), ('Asia/Brunei', '(GMT+0800) Asia/Brunei'), ('Asia/Hong_Kong', '(GMT+0800) Asia/Hong_Kong'), ('Asia/Hovd', '(GMT+0800) Asia/Hovd'), ('Asia/Irkutsk', '(GMT+0800) Asia/Irkutsk'), ('Asia/Kuala_Lumpur', '(GMT+0800) Asia/Kuala_Lumpur'), ('Asia/Kuching', '(GMT+0800) Asia/Kuching'), ('Asia/Macau', '(GMT+0800) Asia/Macau'), ('Asia/Makassar', '(GMT+0800) Asia/Makassar'), ('Asia/Manila', '(GMT+0800) Asia/Manila'), ('Asia/Shanghai', '(GMT+0800) Asia/Shanghai'), ('Asia/Singapore', '(GMT+0800) Asia/Singapore'), ('Asia/Taipei', '(GMT+0800) Asia/Taipei'), ('Australia/Perth', '(GMT+0800) Australia/Perth'), ('Asia/Pyongyang', '(GMT+0830) Asia/Pyongyang'), ('Australia/Eucla', '(GMT+0845) Australia/Eucla'), ('Asia/Chita', '(GMT+0900) Asia/Chita'), ('Asia/Choibalsan', '(GMT+0900) Asia/Choibalsan'), ('Asia/Dili', '(GMT+0900) Asia/Dili'), ('Asia/Jayapura', '(GMT+0900) Asia/Jayapura'), ('Asia/Khandyga', '(GMT+0900) Asia/Khandyga'), ('Asia/Seoul', '(GMT+0900) Asia/Seoul'), ('Asia/Tokyo', '(GMT+0900) Asia/Tokyo'), ('Asia/Ulaanbaatar', '(GMT+0900) Asia/Ulaanbaatar'), ('Asia/Yakutsk', '(GMT+0900) Asia/Yakutsk'), ('Pacific/Palau', '(GMT+0900) Pacific/Palau'), ('Australia/Darwin', '(GMT+0930) Australia/Darwin'), ('Antarctica/DumontDUrville', '(GMT+1000) Antarctica/DumontDUrville'), ('Asia/Ust-Nera', '(GMT+1000) Asia/Ust-Nera'), ('Asia/Vladivostok', '(GMT+1000) Asia/Vladivostok'), ('Australia/Brisbane', '(GMT+1000) Australia/Brisbane'), ('Australia/Lindeman', '(GMT+1000) Australia/Lindeman'), ('Pacific/Chuuk', '(GMT+1000) Pacific/Chuuk'), ('Pacific/Guam', '(GMT+1000) Pacific/Guam'), ('Pacific/Port_Moresby', '(GMT+1000) Pacific/Port_Moresby'), ('Pacific/Saipan', '(GMT+1000) Pacific/Saipan'), ('Australia/Adelaide', '(GMT+1030) Australia/Adelaide'), ('Australia/Broken_Hill', '(GMT+1030) Australia/Broken_Hill'), ('Antarctica/Macquarie', '(GMT+1100) Antarctica/Macquarie'), ('Asia/Magadan', '(GMT+1100) Asia/Magadan'), ('Asia/Sakhalin', '(GMT+1100) Asia/Sakhalin'), ('Asia/Srednekolymsk', '(GMT+1100) Asia/Srednekolymsk'), ('Australia/Currie', '(GMT+1100) Australia/Currie'), ('Australia/Hobart', '(GMT+1100) Australia/Hobart'), ('Australia/Lord_Howe', '(GMT+1100) Australia/Lord_Howe'), ('Australia/Melbourne', '(GMT+1100) Australia/Melbourne'), ('Australia/Sydney', '(GMT+1100) Australia/Sydney'), ('Pacific/Bougainville', '(GMT+1100) Pacific/Bougainville'), ('Pacific/Efate', '(GMT+1100) Pacific/Efate'), ('Pacific/Guadalcanal', '(GMT+1100) Pacific/Guadalcanal'), ('Pacific/Kosrae', '(GMT+1100) Pacific/Kosrae'), ('Pacific/Norfolk', '(GMT+1100) Pacific/Norfolk'), ('Pacific/Noumea', '(GMT+1100) Pacific/Noumea'), ('Pacific/Pohnpei', '(GMT+1100) Pacific/Pohnpei'), ('Asia/Anadyr', '(GMT+1200) Asia/Anadyr'), ('Asia/Kamchatka', '(GMT+1200) Asia/Kamchatka'), ('Pacific/Fiji', '(GMT+1200) Pacific/Fiji'), ('Pacific/Funafuti', '(GMT+1200) Pacific/Funafuti'), ('Pacific/Kwajalein', '(GMT+1200) Pacific/Kwajalein'), ('Pacific/Majuro', '(GMT+1200) Pacific/Majuro'), ('Pacific/Nauru', '(GMT+1200) Pacific/Nauru'), ('Pacific/Tarawa', '(GMT+1200) Pacific/Tarawa'), ('Pacific/Wake', '(GMT+1200) Pacific/Wake'), ('Pacific/Wallis', '(GMT+1200) Pacific/Wallis'), ('Antarctica/McMurdo', '(GMT+1300) Antarctica/McMurdo'), ('Pacific/Auckland', '(GMT+1300) Pacific/Auckland'), ('Pacific/Enderbury', '(GMT+1300) Pacific/Enderbury'), ('Pacific/Fakaofo', '(GMT+1300) Pacific/Fakaofo'), ('Pacific/Tongatapu', '(GMT+1300) Pacific/Tongatapu'), ('Pacific/Chatham', '(GMT+1345) Pacific/Chatham'), ('Pacific/Apia', '(GMT+1400) Pacific/Apia'), ('Pacific/Kiritimati', '(GMT+1400) Pacific/Kiritimati')]", max_length = 100, blank = False, null = False, db_index = False];
+}
diff --git a/xos/genx/xprotos/core/usercredential.xproto b/xos/genx/xprotos/core/usercredential.xproto
new file mode 100644
index 0000000..21dd1a3
--- /dev/null
+++ b/xos/genx/xprotos/core/usercredential.xproto
@@ -0,0 +1,8 @@
+
+
+message UserCredential {
+ required manytoone user->User:usercredentials = 1 [help_text = "The User this credential is associated with", null = False, db_index = True, blank = False];
+ required string name = 2 [help_text = "The credential type, e.g. ec2", max_length = 128, null = False, db_index = True, blank = False];
+ required string key_id = 3 [max_length = 1024, content_type = "stripped", blank = False, help_text = "The backend id of this credential", null = False, db_index = False];
+ required string enc_value = 4 [help_text = "The key value of this credential", max_length = 1024, null = False, db_index = False, blank = False];
+}
diff --git a/xos/genx/xprotos/core/userdashboardview.xproto b/xos/genx/xprotos/core/userdashboardview.xproto
new file mode 100644
index 0000000..65a4a96
--- /dev/null
+++ b/xos/genx/xprotos/core/userdashboardview.xproto
@@ -0,0 +1,7 @@
+
+
+message UserDashboardView {
+ required manytoone user->User:userdashboardviews = 1 [db_index = True, null = False, blank = False];
+ required manytoone dashboardView->DashboardView:userdashboardviews = 2 [db_index = True, null = False, blank = False];
+ required int32 order = 3 [default = 0, null = False, db_index = False, blank = False];
+}
diff --git a/xos/genx/xprotos/core/xos.xproto b/xos/genx/xprotos/core/xos.xproto
new file mode 100644
index 0000000..409c513
--- /dev/null
+++ b/xos/genx/xprotos/core/xos.xproto
@@ -0,0 +1,15 @@
+
+
+message XOS {
+ required string name = 1 [default = "XOS", max_length = 200, content_type = "stripped", blank = False, help_text = "Name of XOS", null = False, db_index = False];
+ required int32 ui_port = 2 [help_text = "Port for XOS UI", default = 80, null = False, db_index = False, blank = False];
+ required int32 bootstrap_ui_port = 3 [help_text = "Port for XOS Bootstrap UI", default = 81, null = False, db_index = False, blank = False];
+ required string db_container_name = 4 [default = "xos_db", max_length = 200, content_type = "stripped", blank = False, help_text = "name of XOS db container", null = False, db_index = False];
+ required string redis_container_name = 5 [default = "", max_length = 200, content_type = "stripped", blank = True, help_text = "name of XOS redis container", null = False, db_index = False];
+ required string docker_project_name = 6 [max_length = 200, content_type = "stripped", blank = False, help_text = "docker project name", null = False, db_index = False];
+ required bool enable_build = 7 [help_text = "True if Onboarding Synchronizer should build XOS as necessary", default = True, null = False, db_index = False, blank = True];
+ required bool frontend_only = 8 [help_text = "If True, XOS will not start synchronizer containers", default = False, null = False, db_index = False, blank = True];
+ required string source_ui_image = 9 [default = "xosproject/xos", max_length = 200, content_type = "stripped", blank = False, null = False, db_index = False];
+ optional string extra_hosts = 10 [max_length = 1024, content_type = "stripped", blank = True, help_text = "list of hostname mappings that will be passed to docker-compose", null = True, db_index = False];
+ required bool no_start = 11 [help_text = "Do not start the XOS UI inside of the UI docker container", default = False, null = False, db_index = False, blank = True];
+}
diff --git a/xos/genx/xprotos/core/xoscomponent.xproto b/xos/genx/xprotos/core/xoscomponent.xproto
new file mode 100644
index 0000000..eb0aefd
--- /dev/null
+++ b/xos/genx/xprotos/core/xoscomponent.xproto
@@ -0,0 +1,15 @@
+
+
+message XOSComponent {
+ required manytoone xos->XOS:loadable_modules = 1 [help_text = "Pointer to XOS", default = "get_xos()", null = False, db_index = True, blank = False];
+ required string name = 2 [max_length = 30, content_type = "stripped", blank = False, help_text = "Service Name", null = False, db_index = False];
+ optional string base_url = 3 [max_length = 1024, content_type = "stripped", blank = True, help_text = "Base URL, allows use of relative URLs for resources", null = True, db_index = False];
+ optional string version = 4 [default = "1.0.0", max_length = 30, content_type = "stripped", blank = True, help_text = "Version of Service Controller", null = True, db_index = False];
+ optional string provides = 5 [max_length = 254, content_type = "stripped", blank = True, help_text = "Comma-separated list of things provided", null = True, db_index = False];
+ optional string requires = 6 [max_length = 254, content_type = "stripped", blank = True, help_text = "Comma-separated list of required Service Controllers", null = True, db_index = False];
+ required string image = 7 [max_length = 200, content_type = "stripped", blank = False, help_text = "docker image name", null = False, db_index = False];
+ optional string command = 8 [max_length = 1024, content_type = "stripped", blank = True, help_text = "docker run command", null = True, db_index = False];
+ optional string ports = 9 [max_length = 200, content_type = "stripped", blank = True, help_text = "port binding", null = True, db_index = False];
+ optional string extra = 10 [max_length = 200, content_type = "stripped", blank = True, help_text = "extra information needed by containers", null = True, db_index = False];
+ required bool no_start = 11 [help_text = "Do not start the Component", default = False, null = False, db_index = False, blank = True];
+}
diff --git a/xos/genx/xprotos/core/xoscomponentlink.xproto b/xos/genx/xprotos/core/xoscomponentlink.xproto
new file mode 100644
index 0000000..9e3b8db
--- /dev/null
+++ b/xos/genx/xprotos/core/xoscomponentlink.xproto
@@ -0,0 +1,8 @@
+
+
+message XOSComponentLink {
+ required manytoone component->XOSComponent:links = 1 [help_text = "The Component object for this Link", null = False, db_index = True, blank = False];
+ required string container = 2 [max_length = 200, content_type = "stripped", blank = False, help_text = "container to link", null = False, db_index = False];
+ required string alias = 3 [max_length = 200, content_type = "stripped", blank = False, help_text = "alias for the link", null = False, db_index = False];
+ required string kind = 4 [default = "internal", choices = "(('internal', 'Internal'), ('external', 'External'))", max_length = 20, blank = False, null = False, db_index = False];
+}
diff --git a/xos/genx/xprotos/core/xoscomponentvolume.xproto b/xos/genx/xprotos/core/xoscomponentvolume.xproto
new file mode 100644
index 0000000..9ed9af1
--- /dev/null
+++ b/xos/genx/xprotos/core/xoscomponentvolume.xproto
@@ -0,0 +1,9 @@
+
+
+message XOSComponentVolume {
+ required manytoone component->XOSComponent:volumes = 1 [help_text = "The Component object for this Volume", null = False, db_index = True, blank = False];
+ required string name = 2 [max_length = 300, content_type = "stripped", blank = False, help_text = "Volume Name", null = False, db_index = False];
+ required string container_path = 3 [max_length = 1024, content_type = "stripped", blank = False, help_text = "Path of Volume in Container", null = False, db_index = False];
+ required string host_path = 4 [max_length = 1024, content_type = "stripped", blank = False, help_text = "Path of Volume in Host", null = False, db_index = False];
+ required bool read_only = 5 [help_text = "True if mount read-only", default = False, null = False, db_index = False, blank = True];
+}
diff --git a/xos/genx/xprotos/core/xoscomponentvolumecontainer.xproto b/xos/genx/xprotos/core/xoscomponentvolumecontainer.xproto
new file mode 100644
index 0000000..acf36a8
--- /dev/null
+++ b/xos/genx/xprotos/core/xoscomponentvolumecontainer.xproto
@@ -0,0 +1,7 @@
+
+
+message XOSComponentVolumeContainer {
+ required manytoone component->XOSComponent:volumecontainers = 1 [help_text = "The Component object for this VolumeContainer", null = False, db_index = True, blank = False];
+ required string name = 2 [max_length = 300, content_type = "stripped", blank = False, help_text = "Volume Name", null = False, db_index = False];
+ required string container = 3 [max_length = 300, content_type = "stripped", blank = False, help_text = "Volume Name", null = False, db_index = False];
+}
diff --git a/xos/genx/xprotos/core/xosguiextension.xproto b/xos/genx/xprotos/core/xosguiextension.xproto
new file mode 100644
index 0000000..d15cf64
--- /dev/null
+++ b/xos/genx/xprotos/core/xosguiextension.xproto
@@ -0,0 +1,6 @@
+
+
+message XOSGuiExtension {
+ required string name = 1 [max_length = 200, content_type = "stripped", blank = False, help_text = "Name of the GUI Extensions", null = False, db_index = False];
+ required string files = 2 [max_length = 1024, content_type = "stripped", blank = False, help_text = "List of comma separated file composing the view", null = False, db_index = False];
+}
diff --git a/xos/genx/xprotos/core/xosvolume.xproto b/xos/genx/xprotos/core/xosvolume.xproto
new file mode 100644
index 0000000..1449549
--- /dev/null
+++ b/xos/genx/xprotos/core/xosvolume.xproto
@@ -0,0 +1,8 @@
+
+
+message XOSVolume {
+ required manytoone xos->XOS:volumes = 1 [help_text = "The XOS object for this Volume", null = False, db_index = True, blank = False];
+ required string container_path = 2 [max_length = 1024, content_type = "stripped", blank = False, help_text = "Path of Volume in Container", null = False, db_index = False];
+ required string host_path = 3 [max_length = 1024, content_type = "stripped", blank = False, help_text = "Path of Volume in Host", null = False, db_index = False];
+ required bool read_only = 4 [help_text = "True if mount read-only", default = False, null = False, db_index = False, blank = True];
+}