blob: 392322192437eb986f89b8c031e8ce6f1899decb [file] [log] [blame]
module xos-core-service {
namespace "urn:xos:core:service";
prefix xos-cs;
import complex-types { prefix ct; }
revision 2015-10-01 {
description "Initial revision.";
}
grouping service-attribute {
leaf name { type string { length 128; } }
leaf value { type string { length 1024; } }
leaf service {
type instance-identifier { ct:instance-type Service; require-instance true; }
}
}
grouping service-role {
leaf role {
type enumeration {
enum "admin";
//enum "Admin";
}
}
}
grouping common-model-attr {
leaf kind {
type string { length 30; }
default "generic";
}
leaf name { type string { length 255; } }
}
ct:complex-type ServiceElement {
ct:abstract true;
leaf enabled { type boolean; default true; }
}
ct:complex-type Service {
ct:extends ServiceElement;
leaf description {
type string { length 255; }
description "Description of Service";
}
leaf published { type boolean; default true; }
uses common-model-attr {
refine kind {
description "Kind of Service";
}
refine name {
description "Service Name";
}
}
}
ct:complex-type User {
ct:extends ServiceElement;
// TBD - should go to a separate xos-core-user module or such
}
ct:complex-type ServicePrivilege {
key "user-service-role";
leaf user {
type instance-identifier { ct:instance-type User; require-instance true; }
}
leaf service {
type instance-identifier { ct:instance-type Service; }
}
uses service-role;
}
ct:complex-type TenantRoot {
ct:extends ServiceElement;
description
"A tenantRoot is one of the things that can sit at the root of a chain
of tenancy. This object represents a node.";
uses common-model-attr;
}
ct:complex-type ContainerImage {
// TBD
}
ct:complex-type Tenancy {
ct:extends ServiceElement;
description
"A Tenancy describes relationship between a subscriber and a provider";
uses common-model-attr;
leaf provider { type instance-identifer { ct:instance-type Service; } }
leaf subscriber {
type instance-identifier {
ct:instance-type ServiceElement;
}
}
// adding stuff from TenantWithContainer here...
leaf creator { type instance-identifier { ct:instance-type User; } }
leaf image { type instance-identifier { ct:instance-type ContainerImage; } }
}
ct:complex-type Subscriber {
ct:extends TenantRoot;
refine kind { default "Subscriber"; }
}
ct:complex-type Provider {
ct:extends TenantRoot;
refine kind { default "Provider"; }
}
}