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"; } | |
} | |
} |