290 likes | 420 Views
TOSCA Normative Types Proposal. Internal Working Draft v0.3 Submitter: Matt Rutkowski. NodeType. <NodeType name=" xs:NCName " target Namespace= " xs:anyURI "? abstract=" yes| no "? final="ye s| no "? > <Tags> <Tag name=" xs:string " value=" xs:string "/> + </Tags> ?
E N D
TOSCA Normative Types Proposal Internal Working Draft v0.3 Submitter: Matt Rutkowski
NodeType <NodeType name="xs:NCName" targetNamespace="xs:anyURI"? abstract="yes|no"?final="yes|no"?> <Tags> <Tag name="xs:string" value="xs:string"/> + </Tags> ? <DerivedFrom typeRef="xs:QName"/> ? <PropertiesDefinition element="xs:QName"? type="xs:QName"?/> ? <RequirementDefinitions> <RequirementDefinition name="xs:string" requirementType="xs:QName" lowerBound="xs:integer"? upperBound="xs:integer | xs:string"?> <Constraints> <Constraint constraintType="xs:anyURI"> constraint type specific content </Constraint> + </Constraints> ? </RequirementDefinition> + </RequirementDefinitions> ? <CapabilityDefinitions> <CapabilityDefinition name="xs:string" capabilityType="xs:QName" lowerBound="xs:integer"? upperBound="xs:integer | xs:string"?> <Constraints> <Constraint constraintType="xs:anyURI"> constraint type specific content </Constraint> + </Constraints> ? </CapabilityDefinition> + </CapabilityDefinitions> <InstanceStates> <InstanceState state="xs:anyURI"> + </InstanceStates> ? <Interfaces> <Interface name="xs:NCName | xs:anyURI"> <Operation name="xs:NCName"> <InputParameters> <InputParameter name="xs:string" type="xs:string" required="yes|no"?/> + </InputParameters> ? <OutputParameters> <OutputParameter name="xs:string" type="xs:string" required="yes|no"?/> + </OutputParameters> ? </Operation> + </Interface> + </Interfaces> ? </NodeType>
<none>: RootNodeType – Part 1 Definition The fundamental type that all TOSCA NodeTypes derive from. Note: If lifecycle operations are sequential (i.e. rely upon script completion) then perhaps allowing operations for “transitional” states do not make sense.
RootNodeType: Tier Definition A tier is a topological concept used to describe sets of nodes (or sub-topologies) that can be deployed and managed as a single logical processing element with specific scalability, availability and other group-wise semantics while supporting a specific kind of application processing (sometimes referred to as “roles”). Tiers that support the same kind of application processing are substitutable. The application processing capability of a tier is a function of the kinds of application components which are hosted by its constituent compute elements. The tier’s scaling discipline defines how and when the capacity of the tier is adjusted.
RootNodeType: Compute (formerly Server) Definition An instantiated compute resource that encapsulates both CPU and Memory. Ideally, this would support a “built-in” host OS (or platform API), as many typical / common use cases assume one.
RootNodeType: OperatingSystem (Optionally merge as a property of VM) Definition TBD – This is typically a guest OS. Ideally, if indeed for 99% of use cases it is simply an OSType and version would like to flatten this conceptually as properties on Server/VM
RootNodeType: WebServer Definition TBD – Ideally, would like to move towards an “Application Runtime” (indicates additive APIs / language to the OS) since that is its primary purpose.
RootNodeType: WebApplication Definition TBD – “Web” is unecessary, any “Application” with exported endpoints is valid, perhaps just use “Application”
RootNodeType: DBMS Definition TBD
RootNodeType: Database Definition TBD
RootNodeType: Storage Definition TBD
RootNodeType: Network Definition TBD
Composite Node Types (Need mechanism for compositing)
RootNodeType: ApplicationRuntime (Composite Runtime Environment) Definition Implies a WebServer + one or more LangaugeRuntimes (e.g. PHP, Java, etc.)?
RelationshipType <RelationshipType name="xs:NCName" targetNamespace="xs:anyURI"? abstract="yes|no"? final="yes|no"?> + <Tags> <Tag name="xs:string" value="xs:string"/> + </Tags> ? <DerivedFrom typeRef="xs:QName"/> ? <PropertiesDefinition element="xs:QName"? type="xs:QName"?/> ? <InstanceStates> <InstanceState state="xs:anyURI"> + </InstanceStates> ? <SourceInterfaces> <Interface name="xs:NCName | xs:anyURI"> ... </Interface> + </SourceInterfaces> ? <TargetInterfaces> <Interface name="xs:NCName | xs:anyURI"> ... </Interface> + </TargetInterfaces> ? <ValidSource typeRef="xs:QName"/> ? <ValidTarget typeRef="xs:QName"/> ? <AbstractOperations> <Operation/> + </AbstractOperations> </RelationshipType>
<none>: RootRelationshipType Definition The fundamental type that all TOSCA RelationshipTypes derive from.
RootRelationshipType: HostedOn • Definition • Relationship that indicates a node can “host” or contain another node of a specified type. For example: • aDatabase node is “hostedOn” a DBMS (Database Management System) node • a WebServer node is “hostedOn” a n OperatingSystem node.
RootRelationshipType: ConnectsTo • Definition • Relationship that indicates a node can “connect” to another node of a specified type. For example: • A WebApplication node “connectsTo” a Database node. Known Subclasses IPEndpointRequreiment, HTTPEndpointRequirement, IPEndpointCapability, HTTPEndpointCapability Can we not flatten??? Using properties such as “protocol” (or protocol list?)
RootRelationshipType: DependsOn • Definition • Relationship that indicates a node is “dependent” on another node of a specified type. For example: • A PHP runtime “dependsOn”an Apache web server
Advanced Scenarios: “ScalableSugarCRM Web Application” Scalability DBTier Service Template WebTier Service Template ApacheLB LoadBalancer • “Tier” Node Types convey scalability • The “Web Application Tier” is declared Scalablewith upper bounds “n” instances • Note: the “Database Tier” remains a single instance • A Load Balancer node is added to the previous template to route requests among “Web Application Tier” instances • Both tiers are packaged into their own service templates permitting Substitution SugarCRMApp Web Application SugarCRM Database Database Apache WebServer MySQL DBMS ApacheLinuxOS Operating System MySqlLinuxOS Operating System ApacheVM Server MySqlVM Server 1 1..n DBTier Tier WebTier ScalableTier The range of instances would be a property of the “Tier” Node Type Components grouped into composable service templates.