option app_label = "core";

// use thi policy to allow access to admins only
policy admin_policy < ctx.user.is_admin >

message XOSBase {
     option skip_init = True;
     option custom_header = "xosbase_header";
     option abstract = True;
     option custom_python=True;

     // field 1 is reserved for "id"
     required string created = 2 [content_type = "date", auto_now_add = True, bookkeeping_state = True, help_text = "Time this model was created"];
     required string updated = 3 [default = "now()", content_type = "date", bookkeeping_state = True, help_text = "Time this model was changed by a non-synchronizer"];
     optional string enacted = 4 [content_type = "date", blank = True, default = None, bookkeeping_state = True, help_text = "When synced, set to the timestamp of the data that was synced"];
     optional string policed = 5 [content_type = "date", blank = True, default = None, bookkeeping_state = True, help_text = "When policed, set to the timestamp of the data that was policed"];
     optional string backend_register = 6 [default = "{}", max_length = 1024, feedback_state = True];
     required bool backend_need_delete = 7 [default = False, bookkeeping_state = True];
     required bool backend_need_reap = 8 [default = False, bookkeeping_state = True];
     required string backend_status = 9 [default = "Provisioning in progress", max_length = 1024, feedback_state = True];
     required int32 backend_code = 10 [default = 0, feedback_state = True];
     required bool deleted = 11 [default = False, bookkeeping_state = True];
     required bool write_protect = 12 [default = False, bookkeeping_state = True];
     required bool lazy_blocked = 13 [default = False, bookkeeping_state = True];
     required bool no_sync = 14 [default = False, bookkeeping_state = True];
     required bool no_policy = 15 [default = False, bookkeeping_state = True];
     optional string policy_status = 16 [default = "Policy in process", max_length = 1024, feedback_state = True];
     optional int32 policy_code = 17 [default = 0, feedback_state = True];
     required string leaf_model_name = 18 [max_length = 1024, bookkeeping_state = True, help_text = "The most specialized model in this chain of inheritance, often defined by a service developer"];
     required bool backend_need_delete_policy = 19 [default = False, bookkeeping_state = True, help_text = "True if delete model_policy must be run before object can be reaped"];
     required bool xos_managed = 20 [default = True, help_text = "True if xos is responsible for creating/deleting this object", gui_hidden = True];
     optional string backend_handle = 21 [max_length = 1024, feedback_state = True, blank=True, help_text = "Handle used by the backend to track this object", gui_hidden = True];
     optional string changed_by_step = 22 [content_type = "date", blank = True, default = None, bookkeeping_state = True, gui_hidden = True, help_text = "Time this model was changed by a sync step"];
     optional string changed_by_policy = 23 [content_type = "date", blank = True, default = None, bookkeeping_state = True, gui_hidden = True, help_text = "Time this model was changed by a model policy"];
}

// The calling user represents the user being accessed, or is a site admin.
policy user_policy <
         ctx.user.is_admin
         | ctx.user.id = obj.id
         | (exists Privilege:
             Privilege.accessor_id = ctx.user.id
             & Privilege.accessor_type = "User"
             & Privilege.permission = "role:admin"
             & Privilege.object_type = "Site"
             & Privilege.object_id = ctx.user.site.id) >

message User::user_policy (AbstractBaseUser,PlModelMixIn) {
     option skip_django = True;
     option description = "An XOS User";

     // field 1 is reserved for "id"
     required string email = 2 [db_index = True, max_length = 256, blank = False, tosca_key=True];
     required string username = 3 [default = "Something", max_length = 256, content_type = "stripped", blank = False, db_index = False];
     required string password = 4 [default = "Something", max_length = 256, blank = False, db_index = False];
     optional string last_login = 5 [db_index = False, content_type = "date", blank = True];
     required string firstname = 6 [max_length = 200, content_type = "stripped", blank = False, help_text = "person's given name", db_index = False];
     required string lastname = 7 [max_length = 200, content_type = "stripped", blank = False, help_text = "person's surname", db_index = False];
     optional string phone = 8 [max_length = 100, content_type = "stripped", blank = True, help_text = "phone number contact", db_index = False];
     optional string user_url = 9 [db_index = False, max_length = 200, content_type = "url", blank = True];
     required manytoone site->Site:users = 10:1001 [help_text = "Site this user will be homed too", db_index = True, blank = False];
     optional string public_key = 11 [help_text = "Public key string", db_index = False, blank = True, text = True];
     required bool is_active = 12 [default = True, db_index = False];
     required bool is_admin = 13 [default = False, db_index = False];
     required bool is_staff = 14 [default = True, db_index = False];
     required bool is_readonly = 15 [default = False, db_index = False];
     required bool is_registering = 16 [default = False, db_index = False];
     required bool is_appuser = 17 [default = False, db_index = False];
     optional string login_page = 18 [max_length = 200, content_type = "stripped", blank = True, help_text = "send this user to a specific page on login", db_index = False];
     required string created = 19 [content_type = "date", auto_now_add = True, help_text = "Time this model was created", bookkeeping_state = True];
     required string updated = 20 [default = "now()", content_type = "date", help_text = "Time this model was changed by a non-synchronizer"];
     optional string enacted = 21 [content_type = "date", blank = True, default = None, help_text = "When synced, set to the timestamp of the data that was synced"];
     optional string policed = 22 [content_type = "date", blank = True, default = None, help_text = "When policed, set to the timestamp of the data that was policed"];
     required string backend_status = 23 [default = "Provisioning in progress", max_length = 1024, content_type = "stripped", blank = False, db_index = False];
     required int32 backend_code = 24 [default = 0];
     required bool backend_need_delete = 25 [default = False, db_index = False];
     required bool backend_need_reap = 26 [default = False, db_index = False];
     required bool deleted = 27 [default = False, db_index = False];
     required bool write_protect = 28 [default = False, db_index = False];
     required bool lazy_blocked = 29 [default = False, db_index = False];
     required bool no_sync = 30 [default = False, db_index = False];
     required bool no_policy = 31 [default = False, db_index = False];
     required string timezone = 32 [default = "America/New_York", max_length = 100, blank = False, db_index = False];
     optional string policy_status = 33 [default = "0 - Policy in process", max_length = 1024];
     optional int32 policy_code = 34 [default = 0];
     required string leaf_model_name = 35 [max_length = 1024, help_text = "The most specialized model in this chain of inheritance, often defined by a service developer", bookkeeping_state = True];
     required bool backend_need_delete_policy = 36 [default = False, help_text = "True if delete model_policy must be run before object can be reaped"];
     required bool xos_managed = 37 [default = True, help_text = "True if xos is responsible for creating/deleting this object", gui_hidden = True];
     optional string backend_handle = 38 [max_length = 1024, feedback_state = True, blank=True, help_text = "Handle used by the backend to track this object", gui_hidden = True];
     optional string changed_by_step = 39 [content_type = "date", blank = True, default = None, gui_hidden = True, help_text = "Time this model was changed by a sync step"];
     optional string changed_by_policy = 40 [content_type = "date", blank = True, default = None, gui_hidden = True, help_text = "Time this model was changed by a model policy"];
}

// A user may give a permission that he has to another user
policy grant_policy < ctx.user.is_admin
                      | exists Privilege:Privilege.object_type = obj.object_type
                        & Privilege.object_id = obj.object_id
                        & Privilege.accessor_type = "User"
                        & Privilege.accessor_id = ctx.user.id
                        & Privilege.permission = "role:admin" >

message Privilege::grant_policy (XOSBase) {
     required int32 accessor_id = 1 [blank=False];
     required string accessor_type = 2 [max_length=1024, blank = False];
     required int32 object_id = 4 [blank=False];
     required string object_type = 5 [max_length=1024, blank = False];
     required string permission = 6 [default = "all", max_length=1024, tosca_key=True];
     required string granted = 7 [content_type = "date", auto_now_add = True, max_length=1024];
     optional string expires = 8 [content_type = "date", max_length=1024];
}

message AddressPool (XOSBase) {
     option custom_python=True;
     required string name = 1 [db_index = False, max_length = 32, blank = False, unique = True, help_text="Name of this AddressPool"];
     optional string addresses = 2 [db_index = False, blank = True, text = True, help_text="Space-separated list of available addresses"];
     required string gateway_ip = 3 [max_length = 32, help_text="Gateway IP address for this AddressPool"];
     required string gateway_mac = 4 [max_length = 32, help_text="Gateway MAC address for this AddressPool"];
     required string cidr = 5 [max_length = 32, help_text="Subnet for this AddressPool"];
     optional string inuse = 6 [db_index = False, blank = True, text = True, help_text="Space-separated list of inuse addresses"];
     optional manytoone service->Service:addresspools = 7:1001 [db_index = True, blank = True, help_text="Service this AddressPool belongs to"];
}

message BackupFile (XOSBase) {
    required string name = 1 [
        help_text = "human-readable name of this backup file",
        max_length = 256];
    required string uri = 2 [
        help_text = "location of the backup file",
        max_length = 1024];
    optional string checksum = 3 [
        help_text = "checksum of backup file, formatted as algorithm:hash",
        max_length = 1024];
    // status:
    //    retrieved - file has been retrieved from URI
    //    sent - file has been sent to URI
    //    inprogress - file transfer is in progress
    optional string status = 4 [
        help_text = "status of file transfer",
        choices = "(('retrieved', 'retrieved'), ('sent', 'sent'), ('inprogress', 'inprogress'))",
        feedback_state = True,
        max_length = 32];
    optional string backend_filename = 5 [
        help_text = "for internal use, local filename",
        feedback_state = True,
        max_length = 1024];
}

message BackupOperation (XOSBase) {
    option custom_python=True;

    // `file` is required for restores.
    // `file` is optional for backups. If file is unspecified then XOS will create a backup file using
    // a default mechanism.
    optional manytoone file->BackupFile:operations = 1:1001 [
        help_text = "File to backup to or restore from"];
    required string component = 2 [
        help_text = "component that this operation applies to",
        // XOS is currently the only allowed component
        choices = "(('xos', 'XOS'), )",
        default = "xos",
        max_length = 32];
    required string operation = 3 [
        help_text = "operation to perform",
        choices = "(('create', 'create'), ('restore', 'restore'), ('verify', 'verify'))",
        max_length = 32];
    optional string status = 4 [
        help_text = "status of operation",
        choices = "(('created', 'created'), ('restored', 'restored'), ('failed', 'failed'), ('inprogress', 'in progress'), ('orphaned', 'orphaned'))",
        feedback_state = True,
        max_length = 32];
    optional string error_msg = 5 [
        help_text = "error message from backup processor, if status is failure",
        feedback_state = True,
        max_length = 4096];
    // `effective_date` may be different from `XOSBase.enacted` if a synchronizer is performing
    // an operation on an external component. `XOSBase.enacted` is always set to the time the
    // model is saved, which could differ from the time the backup or restore completed by
    // a short time.
    optional string effective_date = 6 [
        help_text = "the time and date the operation was completed",
        content_type = "date",
        feedback_state = True];
    optional string uuid = 7 [
        help_text = "unique identifer of this request",
        bookkeeping_state = True,
        max_length = 80];
}

message ComputeServiceInstance (ServiceInstance) {
     required manytoone slice->Slice:computeserviceinstances = 1:1001 [db_index = True, blank = False, help_text = "Slice that controls this ServiceInstance"];
     required manytoone image->Image:computeserviceinstances = 2:1001 [db_index = True, blank = False, help_text = "Image used to instantiate this ServiceInstance"];
}

// Everyone has read access
// For write access, you have to be a site_admin

policy site_policy <
         ctx.user.is_admin
         | (ctx.write_access -> exists Privilege: Privilege.object_type = "Site" & Privilege.object_id = obj.id & Privilege.accessor_id = ctx.user.id & Privilege.permission = "role:admin") >

// If you can access (read or write) the site, you can also access its slices
// Otherwise, you need an explicit privilege on the Slice (admin for write access)
// or admin privilege on the associated site.
policy slice_policy <
         ctx.user.is_admin
         | (*site_policy(site)
         & (ctx.user = obj.creator
               | (exists Privilege:
                     Privilege.accessor_id = ctx.user.id
                     & Privilege.accessor_type = "User"
                     & Privilege.object_type = "Slice"
                     & Privilege.object_id = obj.id
                     & (ctx.write_access -> Privilege.permission = "role:admin"))
             )
             |
              (exists Privilege:
                 Privilege.accessor_id = ctx.user.id
                 & Privilege.accessor_type = "User"
                 & Privilege.object_type = "Slice"
                 & Privilege.object_id = obj.id)
             | (exists Privilege:
                 Privilege.accessor_id = ctx.user.id
                 & Privilege.accessor_type = "User"
                 & Privilege.object_type = "Site"
                 & Privilege.object_id = obj.site.id
                 & Privilege.permission = "role:admin")
                ) >


message Flavor (XOSBase) {
     required string name = 1 [max_length = 32, content_type = "stripped", blank = False, help_text = "name of this flavor, as displayed to users", db_index = False, unique = True];
     optional string description = 2 [db_index = False, max_length = 1024, content_type = "stripped"];
     required string flavor = 3 [max_length = 32, content_type = "stripped", help_text = "flavor string used to configure deployments"];
}


message Image (XOSBase) {
     required string name = 1 [db_index = False, max_length = 256, content_type = "stripped", blank = False, unique_with = "tag"];
     required string kind = 2 [default = "vm", choices = "(('vm', 'Virtual Machine'), ('container', 'Container'))", max_length = 30, blank = False, db_index = False];
     optional string disk_format = 3 [db_index = False, max_length = 256, content_type = "stripped", blank = True];
     optional string container_format = 4 [db_index = False, max_length = 256, content_type = "stripped", blank = True];
     optional string path = 5 [max_length = 256, content_type = "stripped", blank = True, help_text = "Path to image on local disk", db_index = False];
     optional string tag = 6 [max_length = 256, content_type = "stripped", blank = True, help_text = "For Docker Images, tag of image", db_index = False];
}

policy network_policy < *slice_policy(owner) >

message Network::network_policy (XOSBase) {
     required string name = 1 [db_index = False, max_length = 32, blank = False, unique = True];
     required manytoone template->NetworkTemplate:network = 2:1001 [db_index = True, blank = False];
     optional string subnet = 3 [max_length = 32];
     optional string start_ip = 4 [max_length = 32];
     optional string end_ip = 5 [max_length = 32];
     optional string ports = 6 [max_length = 1024];
     optional string labels = 7 [max_length = 1024];
     required manytoone owner->Slice:ownedNetworks = 8:1004 [help_text = "Slice that owns control of this Network", db_index = True, blank = False];
     required bool permit_all_slices = 10 [default = False, db_index = False];
     required bool autoconnect = 17 [help_text = "This network can be autoconnected to the slice that owns it", default = True, db_index = False];
     optional manytomany permitted_slices->Slice/Network_permitted_slices:availableNetworks = 18:1005 [];
}


message NetworkParameter (XOSBase) {
     required manytoone parameter->NetworkParameterType:networkparameters = 1:1001 [help_text = "The type of the parameter", db_index = True, blank = False];
     required string value = 2 [help_text = "The value of this parameter", max_length = 1024, db_index = False, blank = False];
     required string content_type = 4 [max_length = 1024, content_type = "stripped", blank = False, help_text = "Content type id linked to this network parameter", db_index = False];
     required uint32 object_id = 5 [db_index = False, blank = False, help_text = "Object linked to this NetworkParameter"];
}


message NetworkParameterType (XOSBase) {
     required string name = 1 [help_text = "The name of this parameter", max_length = 128, db_index = True, blank = False, unique = True];
     optional string description = 2 [max_length = 1024];
}

policy network_slice_validator < (obj.slice in obj.network.permitted_slices.all()) | (obj.slice = obj.network.owner) | obj.network.permit_all_slices >
policy network_slice_policy < *slice_policy(slice) & *network_policy(network) >

message NetworkSlice::network_slice_policy (XOSBase) {
     option validators = "network_slice_validator:Slice {obj.slice.name} is not allowed to connect to networks {obj.network}";
     required manytoone network->Network:networkslices = 1:1002 [db_index = True, blank = False, unique_with = "slice", tosca_key=True];
     required manytoone slice->Slice:networkslices = 2:1006 [db_index = True, blank = False, tosca_key=True];
}

message NetworkTemplate (XOSBase) {
     required string name = 1 [db_index = False, max_length = 32, blank = False, unique = True];
     optional string description = 2 [max_length = 1024];
     required string visibility = 4 [default = "private", choices = "(('public', 'public'), ('private', 'private'))", max_length = 30, blank = False, db_index = False];
     required string translation = 5 [default = "none", choices = "(('none', 'none'), ('NAT', 'NAT'))", max_length = 30, blank = 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", db_index = False];
     optional string shared_network_name = 7 [db_index = False, max_length = 30, blank = True];
     optional string shared_network_id = 8 [help_text = "Quantum network", max_length = 256, db_index = False, blank = True];
     required string topology_kind = 9 [default = "bigswitch", choices = "(('bigswitch', 'BigSwitch'), ('physical', 'Physical'), ('custom', 'Custom'))", max_length = 30, blank = False, db_index = False];
     optional string controller_kind = 10 [blank = True, max_length = 30, 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'), ('FLAT', 'Flat'))", max_length = 30, blank = True, db_index = False];
}

message Node (XOSBase) {
     required string name = 1 [max_length = 200, content_type = "stripped", blank = False, help_text = "Name of the Node", db_index = False, unique = True];
     optional string bridgeId = 3 [max_length = 200, content_type = "stripped", blank = True, help_text = "Bridge Id", db_index = False];
     optional string dataPlaneIntf = 4 [max_length = 200, content_type = "stripped", blank = True, help_text = "Dataplane Interface", db_index = False];
     optional string dataPlaneIp = 5 [max_length = 200, content_type = "stripped", blank = True, help_text = "Dataplane Ip", db_index = False];
     optional string hostManagementIface = 6 [max_length = 200, content_type = "stripped", blank = True, help_text = "Host Management Interface", db_index = False];
     required manytoone site->Site:nodes = 7:1006 [db_index = True, blank = False, default=get_first_site];
}
message NodeLabel (XOSBase) {
     option custom_python=True;
     required string name = 1 [max_length = 200, content_type = "stripped", blank = False, help_text = "label name", db_index = False, unique = True];
     optional manytomany node->Node/NodeLabel_node:nodelabels = 2:1002 [];
}

policy port_policy < *network_policy(network) >

message Port::port_policy (XOSBase) {
     required manytoone network->Network:links = 1:1003 [db_index = True, blank = False, unique_with = "service_instance", help_text = "Network bound to this port"];
     optional string ip = 3 [max_length = 39, content_type = "ip", blank = True, help_text = "Instance ip address", db_index = False];
     optional string port_id = 4 [help_text = "Neutron port id", max_length = 256, db_index = False, blank = True];
     optional string mac = 5 [help_text = "MAC address associated with this port", max_length = 256, db_index = False, blank = True];
     required bool xos_created = 6 [default = False];
     optional manytoone service_instance->ServiceInstance:ports = 7:1001 [db_index = True, blank = True, help_text = "ServiceInstance bound to this port"];
}

message Principal (XOSBase) {
     required string name = 1 [max_length = 128, db_index = True, blank = False, help_text = "The name of this principal"];
     required manytoone trust_domain->TrustDomain:principals = 2:1001 [db_index = True, blank = False, help_text = "Trust domain this principal resides in"];
}

message Role (XOSBase) {
     required string role_type = 1 [db_index = False, max_length = 80, content_type = "stripped", blank = False];
     optional string role = 2 [db_index = False, max_length = 80, content_type = "stripped", blank = True];
     optional string description = 3 [max_length = 120, content_type = "stripped"];
}

policy service_policy <ctx.user.is_admin | exists Privilege: Privilege.accessor_id = ctx.user.id & Privilege.accessor_type = "User" & Privilege.object_type = "Service" & Privilege.object_id = obj.id >

message Service (XOSBase,AttributeMixin) {
     option description = "A service managed by XOS";
     option custom_python=True;

     optional string description = 1 [
         help_text = "Description of Service",
         text = True];
     required bool enabled = 2 [
         help_text = "Whether or not service is Enabled",
         default = True,
         gui_hidden = True];
     required string kind = 3 [
         help_text = "Kind of service",
         choices="(('generic', 'Generic'), ('data', 'Data Plane'), ('control', 'Control Plane'), ('oss', 'OSS'))",
         content_type = "stripped",
         default = "generic",
         max_length = 30];
     required string name = 4 [
         help_text = "Unique name of service",
         content_type = "stripped",
         max_length = 30,
         unique = True];
     optional string versionNumber = 5 [
         help_text = "Version of Service Definition",
         content_type = "stripped",
         max_length = 30];
     required bool published = 6 [
         help_text = "True if this service should be published in XOS",
         default = True,
         gui_hidden = True]; // deprecated?
     optional string icon_url = 8 [
         content_type = "stripped",
         gui_hidden = True,
         max_length = 1024]; // deprecated?
     optional string public_key = 9 [
         help_text = "Public key string",
         gui_hidden = True,
         text = True]; // likely only used by VM-based services. deprecated?
     optional string private_key_fn = 10 [
         help_text = "Filename of private key file, located within core container",
         content_type = "stripped",
         gui_hidden = True,
         max_length = 4096]; // likely only used by VM-based services. deprecated?
     optional string service_specific_id = 11 [
         help_text = "Service-specific identifier, opaque to XOS core",
         content_type = "stripped",
         max_length = 30];
     optional string service_specific_attribute = 12 [
         help_text = "Service-specific string attribute, opaque to XOS core",
         gui_hidden = True,
         text = True];
     optional manytoone site->Site:service = 13:1012 [
         help_text = "The Site this Service belongs to",
         db_index = True];

}

message ServicePort (XOSBase) {
     option description = "Exposes a port in a service outside of the pod, implementation depends on Compute Service";

     required string name = 1 [
         help_text = "Unique service port name",
         max_length = 128];
     required int32 external_port = 2 [
         help_text = "external port number"];
     required int32 internal_port = 3 [
         help_text = "internal port number"];
     required string protocol = 4 [
         help_text = "Protocol",
         default="TCP",
         max_length = 32];
     required manytoone service->Service:serviceports = 5:1002 [
         help_text = "The Service this ServicePort is associated with",
         db_index = True];
}

message ServiceAttribute (XOSBase) {
     option description = "An (key, value) attribute associated with a Service";

     required string name = 1 [
         help_text = "Attribute Name",
         max_length = 128,
         unique_with="service"];
     required string value = 2 [
         help_text = "Attribute Value",
         text = True];
     required manytoone service->Service:serviceattributes = 3:1003 [
         help_text = "The Service this attribute is associated with",
         db_index = True];
}


message ServiceDependency (XOSBase) {
     option description = "A dependency relation between a provider and a subscriber service";

     required manytoone provider_service->Service:provided_dependencies = 1:1004 [
         help_text = "The service that provides this dependency",
         db_index = True,
         tosca_key=True];
     required manytoone subscriber_service->Service:subscribed_dependencies = 2:1005 [
         help_text = "The services that subscribes to this dependency",
         db_index=True,
         tosca_key=True];
     required string connect_method = 3 [
         help_text = "method to connect the two services",
         choices = "(('none', 'None'), ('private', 'Private'), ('public', 'Public'))",
         default="none",
         max_length = 30];
}


message Site::site_policy (XOSBase) {
     required string name = 1 [max_length = 200, content_type = "stripped", blank = False, help_text = "Name for this Site", db_index = False, unique = True];
     optional string site_url = 2 [max_length = 512, content_type = "url", blank = True, help_text = "Site's Home URL Page", db_index = False];
     required bool enabled = 3 [help_text = "Status for this Site", default = True];
     required bool hosts_nodes = 4 [help_text = "Indicates whether or not the site host nodes", default = True];
     required bool hosts_users = 5 [help_text = "Indicates whether or not the site manages user accounts", default = True];
     optional float longitude = 6 [db_index = False, blank = True];
     optional float latitude = 7 [db_index = False, blank = True];
     required string login_base = 8 [max_length = 50, content_type = "stripped", blank = False, help_text = "Prefix for Slices associated with this Site", db_index = False];
     required bool is_public = 9 [help_text = "Indicates the visibility of this site to other members", default = True];
     required string abbreviated_name = 10 [db_index = False, max_length = 80, content_type = "stripped", blank = False];
}

policy slice_name_no_spaces < {{ ' ' not in obj.name }} >
policy slice_has_creator < obj.creator >

message Slice::slice_policy (XOSBase) {
     option validators = "slice_name_no_spaces:Slice name contains spaces, slice_has_creator:Slice has no creator";
     option plural = "Slices";
     option custom_python=True;

     required string name = 1 [max_length = 80, content_type = "stripped", blank = False, help_text = "The Name of the Slice", db_index = False, unique = True];
     required bool enabled = 2 [help_text = "Status for this Slice", default = True];
     optional string description = 4 [help_text = "High level description of the slice and expected activities", text = True];
     required manytoone site->Site:slices = 6:1005 [help_text = "The Site this Slice belongs to", db_index = True, blank = False];
     required int32 max_instances = 7 [default = 10, db_index = False, blank = False];
     optional manytoone service->Service:slices = 8:1006 [db_index = True, blank = True];
     optional string network = 9 [blank = True, max_length = 256, 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, blank = True];
     optional manytoone creator->User:slices = 12:1004 [db_index = True];
     optional manytoone default_flavor->Flavor:slices = 13:1002 [db_index = True, blank = True];
     optional manytoone default_image->Image:slices = 14:1005 [db_index = True, blank = True];
     optional manytoone default_node->Node:slices = 15:1003 [db_index = True, blank = True];
     optional string mount_data_sets = 16 [default = "GenBank", max_length = 256, content_type = "stripped", blank = 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, db_index = False];
     optional manytoone trust_domain->TrustDomain:slices = 18:1002 [db_index = True, help_text = "Trust domain this slice resides in"];
     optional manytoone principal->Principal:slices = 19:1001 [db_index = True, help_text = "Principal this slice may use to interact with other components"];
     optional int32 controller_replica_count = 20 [default = 0, help_text = "Replica count, controller-dependent"];
     optional string controller_kind = 21 [max_length = 256, content_type = "stripped", blank = True, help_text = "Type of controller, vim-dependent", db_index = False];
}


policy tag_policy < ctx.user.is_admin >

message Tag::tag_policy (XOSBase) {
     required manytoone service->Service:tags = 1:1007 [help_text = "The Service this Tag is associated with", db_index = True, blank = False];
     required string name = 2 [help_text = "The name of this tag", max_length = 128, db_index = True, blank = False];
     required string value = 3 [max_length = 1024, content_type = "stripped", blank = False, help_text = "The value of this tag", db_index = False];
     required string content_type = 4 [max_length = 1024, content_type = "stripped", blank = False, help_text = "Content type id linked to this tag", db_index = False];
     required uint32 object_id = 5 [db_index = False, blank = False, help_text = "Object linked to this tag"];
}

message InterfaceType (XOSBase) {
     option description = "Defines an InterfaceType that may be used by Services to connect ServiceInstances";

     required string name = 1 [
         help_text = "Name of this interface type",
         content_type = "stripped",
         max_length = 200,
         unique_with = "direction"];
     required string direction = 2 [
         help_text = "Direction, either in or out",
         choices = "(('in', 'In'), ('out', 'Out'))",
         content_type = "stripped",
         max_length = 30];
}

message ServiceInterface (XOSBase) {
     option description = "Describes the type of connection attached to a ServiceInstanceLink";

     required manytoone service->Service:service_interfaces = 1:1008 [
         help_text = "Service that this ServiceInterface is associated with",
         db_index = True,
         tosca_key=True];
     required manytoone interface_type->InterfaceType:service_interfaces = 2:1001 [
         help_text = "Interface type that describes this interface",
         db_index = True,
         tosca_key=True];
}

message ServiceInstance (XOSBase, AttributeMixin) {
     option description = "A portion of a service broken up into a tenant-sized piece";
     option custom_python=True;

     optional string name = 1 [
         help_text = "Name of ServiceInstance",
         content_type = "stripped",
         max_length = 200];
     required manytoone owner->Service:service_instances = 2:1009 [
         help_text = "The Service that owns this ServiceInstance",
         db_index = True];
     optional string service_specific_id = 3 [
         help_text = "Service-specific identifier, opaque to the XOS core",
         content_type = "stripped",
         gui_hidden = True,
         max_length = 30];
     optional string service_specific_attribute = 10 [
         help_text = "Service-specific text attribute, opaque to the XOS core",
         gui_hidden = True,
         text = True];
     optional uint32 link_deleted_count = 11 [
         help_text = "Incremented each time a provided_link is deleted from this ServiceInstance",
         default = 0,
         gui_hidden = True];
     optional manytoone master_serviceinstance->ServiceInstance:child_serviceinstances = 12:1002 [
         help_text = "The master service instance that set this service instance up",
         gui_hidden = True];
}

message ServiceInstanceLink (XOSBase) {
     option description = "A link in a chain between two ServiceInstances";
     option custom_python=True;

     required manytoone provider_service_instance->ServiceInstance:provided_links = 1:1003 [
         help_text = "Eastbound serviceinstance of this link",
         db_index = True,
         tosca_key=True];
     optional manytoone provider_service_interface->ServiceInterface:provided_links = 2:1004 [
         help_text = "Interface descrption of the eastbound linkage point",
         db_index = True];
     optional manytoone subscriber_service_instance->ServiceInstance:subscribed_links = 3:1005 [
         help_text = "Westbound ServiceInstance of this link",
         db_index = True];
     optional manytoone subscriber_service->Service:subscribed_links = 4:1010 [
         help_text = "Interface description of the westbound linkage point",
         db_index = True,
         tosca_key_one_of = subscriber_service_instance];
     optional manytoone subscriber_network->Network:subscribed_links = 5:1004 [
         help_text = "Alternative to subscriber_service_instance, if a Network model is the subscriber instead of a ServiceInstance",
         db_index = True,
         tosca_key_one_of=subscriber_service_instance];
}

message ServiceInstanceAttribute (XOSBase) {
     option description = "A (key, value) attribute associated with a ServiceInstance";

     required string name = 1 [
         help_text = "Attribute Name",
         max_length = 128,
         unique_with = "service_instance"];
     required string value = 2 [
         help_text = "Attribute Value",
         text = True];
     required manytoone service_instance->ServiceInstance:service_instance_attributes = 3:1006 [
         help_text = "The Tenant this attribute is associated with",
         db_index = True];
}

message TrustDomain (XOSBase) {
     required string name = 1 [max_length = 256, db_index = True, blank = False, help_text = "Name of this trust domain"];
     required manytoone owner->Service:owned_trust_domains = 2:1011 [db_index = True, blank = False, help_text = "Service partioned by this trust domain"];
}

message XOSCore (XOSBase) {
     option singular="XOSCore";
     option plural="XOSCores";
     required string name = 1 [default = "XOS", max_length = 200, content_type = "stripped", blank = False, help_text = "Name of XOS", db_index = False, unique = True];
}

message XOSGuiExtension::admin_policy (XOSBase) {
     option verbose_name="XOS GUI Extension";
     option description="This model holds the instruction to load an extension in the GUI";
     // option no_sync = True;
     // option no_policy = True;

     required string name = 1 [max_length = 200, content_type = "stripped", blank = False, help_text = "Name of the GUI Extensions", db_index = False, unique = True];
     required string files = 2 [max_length = 1024, content_type = "stripped", blank = False, help_text = "List of comma separated file composing the view", db_index = False];
}

message ServiceGraphConstraint (XOSBase) {
    option verbose_name="Graph Constraint";
    option description="Define the position of the nodes in the service graph";
    required string constraints = 1 [max_length = 1024, content_type = "stripped", help_text = "A composite array defining service positions in the graph, eg [volt, vsg, [address_manager, vrouter]]", tosca_key=True];
    optional int32 priority = 2 [help_text = "The priority of the constraint, the one with highest priority will be used", default=0];
}

