Skip to content

Commit

Permalink
UML class diagram for TOSCA Simple Profile in YAML v1.0
Browse files Browse the repository at this point in the history
Signed-off-by: kleinech <kleinech.github@gmail.com>
  • Loading branch information
kleinech committed May 2, 2017
1 parent 74a39b1 commit 160f563
Show file tree
Hide file tree
Showing 2 changed files with 342 additions and 0 deletions.
Binary file not shown.
@@ -0,0 +1,342 @@
/*******************************************************************************
* Copyright (c) 2017 University of Stuttgart.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* and the Apache License 2.0 which both accompany this distribution,
* and are available at http://www.eclipse.org/legal/epl-v10.html
* and http://www.apache.org/licenses/LICENSE-2.0
*
* Contributors:
* Christoph Kleine - initial API and implementation
*******************************************************************************/
This model describes the data model specified for TOSCA Simple Profile in
YAML version 1.0.
Specififcation: http://docs.oasis-open.org/tosca/TOSCA-Simple-Profile-YAML/v1.0/TOSCA-Simple-Profile-YAML-v1.0.html

@startuml

skinparam class {
BackgroundColor White
ArrowColor Black
BorderColor Black
LegendBackgroundColor White
}

skinparam stereotypeCBackgroundColor LightGray

skinparam noteBackgroundColor White
skinparam noteBorderColor Black


'required for SVG
skinparam defaultFontName sans-serif

Title <size:33>TOSCA Simple Profile in YAML Version 1.0 as UML class diagram. This is not an official OASIS document. No warranty. (c) University of Stuttgart. Dual-licensed under EPL and ASLv2. Version 2017-05-02.

'*************************************************************
' Specification classes
'*************************************************************
class tServiceTemplate {
+String tosca_definition_version
String description
Map<String,String> metadata
Map<String,ObjectValue> dsl_definition
}
tServiceTemplate *-- "*" tRepositoryDefinition
tServiceTemplate *-- "*" tImportDefinition
tServiceTemplate *-- "*" tArtifactType
tServiceTemplate *-- "*" tDataType
tServiceTemplate *-- "*" tCapabilityType
tServiceTemplate *-- "*" tInterfaceType
tServiceTemplate *-- "*" tRelationshipType
tServiceTemplate *-- "*" tNodeType
tServiceTemplate *-- "*" tGroupType
tServiceTemplate *-- "*" tPolicyType
tServiceTemplate *-- "0..1" tTopologyTemplateDefinition

'*************************************************************
' Definition classes
'*************************************************************
class tRepositoryDefinition {
String description
+String url
}
tRepositoryDefinition *-- "0..1" toscaDatatypesCredential

class tImportDefinition {
String file
String namespace_uri
String namespace_prefix
}
tImportDefinition *-- "0..1" tRepositoryDefinition : repository

class tPropertyDefinition {
String description
Boolean required
ObjectValue default
StatusValue status
}
tPropertyDefinition --> tDataType : type
tPropertyDefinition *-- "*" tConstraintClause : constraints
tPropertyDefinition *-- "0..1" tEntrySchema : entry_schema

class tAttributeDefinition {
String description
ANY default
StatusValue status
}
tAttributeDefinition --> tDataType : type
tAttributeDefinition *-- "0..1" tEntrySchema : entry_schema

class tOperationDefinition {
String description
}
tOperationDefinition *-- "*" tPropertyDefinition : inputs
tOperationDefinition *-- "*" tPropertyAssignment : inputs
tOperationDefinition *-- "0..1" toscaArtifactImplementation : implementation
tOperationDefinition *-- "0..1" toscaArtifactImplementation : implementation.primary
tOperationDefinition *-- "*" tArtifactDefinition : implementation.dependencies

class tInterfaceDefinition {

}
tInterfaceDefinition --> tInterfaceType : type
tInterfaceDefinition *-- "*" tPropertyAssignment : inputs
tInterfaceDefinition *-- "*" tPropertyDefinition : inputs
tInterfaceDefinition *-- "*" tOperationDefinition

class tRequirementDefinition {
String Description
List<String> occurrences
}
tRequirementDefinition *-- "1" tCapabilityType : capability
tRequirementDefinition *-- "0..1" tNodeType : node
tRequirementDefinition *-- "0..1" tRelationshipType : relationship
tRequirementDefinition *-- "0..1" tRelationshipType : relationship.type
tRequirementDefinition *-- "*" tRelationshipType : relationship.interfaces

class tCapabilityDefinition {
String description
List<String> occurrences
List<String> valid_source_types
}
tCapabilityDefinition --> tCapabilityType : type
tCapabilityDefinition *-- tPropertyDefinition : properties
tCapabilityDefinition *-- tAttributeDefinition : attributes

class tArtifactDefinition {
String description
+String file
String deploy_path
}
tArtifactDefinition --> tArtifactType : type
tArtifactDefinition *-- "0..1" tRepositoryDefinition : repository

class tGroupDefinition {
String description
List<String> members
}
tGroupDefinition --> tGroupType : type
tGroupDefinition *-- "*" tPropertyAssignment : properties
tGroupDefinition *-- "*" tInterfaceDefinition : interfaces

class tPolicyDefinition {
String description
}
tPolicyDefinition --> tPolicyType : type
tPolicyDefinition *-- "*" tPropertyAssignment : properties
tPolicyDefinition *-- "*" tNodeTemplate : targets
tPolicyDefinition *-- "*" tGroupDefinition : targets

tPropertyDefinition <|-- tParameterDefinition : extends
class tParameterDefinition {
ObjectValue value
}
tParameterDefinition --> tDataType : type

'*************************************************************
' Type classes
'*************************************************************
class tEntityType {
String description
Version version
}
tEntityType --> "0..1" tEntityType : derived_from
tEntityType *-- "*" tPropertyDefinition

tEntityType <|-- tArtifactType
class tArtifactType {
String mime_type
List<String> file_ext
}

tEntityType <|-- tDataType
class tDataType {
}
tDataType *-- "*" tConstraintClause : constraints

tEntityType <|-- tCapabilityType
class tCapabilityType {
List<String> valid_source_types
}
tCapabilityType *-- "*" tAttributeDefinition : attributes

tEntityType <|-- tInterfaceType
class tInterfaceType {
}
tInterfaceType *-- "*" tOperationDefinition

tEntityType <|-- tRelationshipType
class tRelationshipType {
List<String> valid_target_types
}
tRelationshipType *-- "*" tAttributeDefinition : attributes
tRelationshipType *-- "*" tInterfaceDefinition : interfaces

tEntityType <|-- tNodeType
class tNodeType {
}
tNodeType *-- "*" tAttributeDefinition : attributes
tNodeType *-- "*" tRequirementDefinition : requirements
tNodeType *-- "*" tCapabilityDefinition : capabilities
tNodeType *-- "*" tInterfaceDefinition : interfaces
tNodeType *-- "*" tArtifactDefinition : artifacts

tEntityType <|-- tGroupType
class tGroupType {
}
tGroupType *-- "*" tNodeType : members
tGroupType *-- "*" tInterfaceDefinition : interfaces

tEntityType <|-- tPolicyType
class tPolicyType {
}
tPolicyType *-- "*" tNodeType : targets
tPolicyType *-- "*" tGroupType : targets

'*************************************************************
' Template classes
'*************************************************************

class tTopologyTemplateDefinition {
String description
}
tTopologyTemplateDefinition *-- "*" tParameterDefinition : inputs
tTopologyTemplateDefinition *-- "*" tNodeTemplate : node_templates
tTopologyTemplateDefinition *-- "*" tRelationshipTemplate : relationship_templates
tTopologyTemplateDefinition *-- "*" tGroupDefinition : groups
tTopologyTemplateDefinition *-- "*" tPolicyDefinition : policies
tTopologyTemplateDefinition *-- "*" tParameterDefinition : outputs
tTopologyTemplateDefinition *-- "*" tSubstitutionMapping : substitution_mappings

class tNodeTemplate {
String description
String directives
String copy
}
tNodeTemplate --> tNodeType : type
tNodeTemplate *-- "*" tPropertyAssignment : properties
tNodeTemplate *-- "*" tAttributeAssignment : attributes
tNodeTemplate *-- "*" tRequirementAssignment : requirements
tNodeTemplate *-- "*" tCapabilityAssignment : capabilities
tNodeTemplate *-- "*" tInterfaceDefinition : interfaces
tNodeTemplate *-- "*" tArtifactDefinition : artifacts
tNodeTemplate *-- "0..1" tNodeFilterDefinition : node_filter

class tRelationshipTemplate {
String description
String copy
}
tRelationshipTemplate --> tRelationshipType : type
tRelationshipTemplate *-- "*" tPropertyAssignment : properties
tRelationshipTemplate *-- "*" tAttributeAssignment : attributes
tRelationshipTemplate *-- "*" tInterfaceDefinition : interfaces

'*************************************************************
' Assignment classes
'*************************************************************
class tPropertyAssignment {
ObjectValue value
}

class tAttributeAssignment {
String description
ObjectValue value
}

class tRequirementAssignment {
List<String> occurrences
}
tRequirementAssignment *-- "0..1" tCapabilityDefinition : capability
tRequirementAssignment *-- "0..1" tCapabilityType : capability
tRequirementAssignment *-- "0..1" tNodeTemplate : node
tRequirementAssignment *-- "0..1" tNodeType : node
tRequirementAssignment *-- "0..1" tRelationshipTemplate : relationship
tRequirementAssignment *-- "0..1" tRelationshipType : relationship
tRequirementAssignment *-- "0..1" tNodeFilterDefinition : node_filter
tRequirementAssignment --> tRelationshipType : type
tRequirementAssignment *-- "*" tInterfaceDefinition : properties


class tCapabilityAssignment {

}
tCapabilityAssignment *-- "*" tPropertyAssignment : properties
tCapabilityAssignment *-- "*" tAttributeAssignment : attributes

'*************************************************************
' Other classes
'*************************************************************
class tConstraintClause {
ObjectValue equal
ObjectValue greater_or_equal
ObjectValue less_than
List<ObjectValue> in_range
List<ObjectValue> valid_values
ObjectValue length
ObjectValue min_length
ObjectValue max_length
ObjectValue pattern
}

class tNodeFilterDefinition {

}
tNodeFilterDefinition *-- "*" tPropertyFilterDefinition : properties
tNodeFilterDefinition *-- "*" tCapabilityDefinition : capabilities
tNodeFilterDefinition *-- "*" tCapabilityType : capabilities

class tPropertyFilterDefinition {

}
tPropertyFilterDefinition *-- "*" tConstraintClause

class tSubstitutionMapping {
}
tSubstitutionMapping --> tNodeType : node_type
tSubstitutionMapping *-- "*" tCapabilityDefinition : capabilities
tSubstitutionMapping *-- "*" tRequirementDefinition : requirements

class tEntrySchema {
String description
}
tEntrySchema --> tDataType : type
tEntrySchema *-- "*" tConstraintClause : constraints

'*************************************************************
' Default data types
'*************************************************************
class toscaDatatypesCredential {
String protocol
String token_type
String token
MapOfStrings keys
String user
}

class toscaArtifactImplementation {

}

@enduml

0 comments on commit 160f563

Please sign in to comment.