Fixing Blueprint Typo's and docs
[ccsdk/cds.git] / ms / blueprintsprocessor / modules / blueprints / blueprint-core / src / main / kotlin / org / onap / ccsdk / cds / controllerblueprints / core / data / BluePrintModel.kt
1 /*
2  * Copyright © 2017-2018 AT&T Intellectual Property.
3  * Modifications Copyright © 2018-2019 IBM.
4  *
5  * Licensed under the Apache License, Version 2.0 (the "License");
6  * you may not use this file except in compliance with the License.
7  * You may obtain a copy of the License at
8  *
9  *     http://www.apache.org/licenses/LICENSE-2.0
10  *
11  * Unless required by applicable law or agreed to in writing, software
12  * distributed under the License is distributed on an "AS IS" BASIS,
13  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14  * See the License for the specific language governing permissions and
15  * limitations under the License.
16  */
17 @file:Suppress("unused")
18
19 package org.onap.ccsdk.cds.controllerblueprints.core.data
20
21 import com.fasterxml.jackson.annotation.JsonIgnore
22 import com.fasterxml.jackson.annotation.JsonProperty
23 import com.fasterxml.jackson.annotation.JsonPropertyOrder
24 import com.fasterxml.jackson.databind.JsonNode
25 import io.swagger.annotations.ApiModelProperty
26 import org.onap.ccsdk.cds.controllerblueprints.core.BluePrintConstants
27 import org.onap.ccsdk.cds.controllerblueprints.core.asJsonType
28
29 /**
30  *
31  *
32  * @author Brinda Santh
33  */
34 open class EntityType {
35
36     @get:JsonIgnore
37     var id: String? = null
38     var description: String? = null
39     var version: String = "1.0.0"
40     var metadata: MutableMap<String, String>? = null
41
42     @get:JsonProperty("derived_from")
43     lateinit var derivedFrom: String
44     var attributes: MutableMap<String, AttributeDefinition>? = null
45     var properties: MutableMap<String, PropertyDefinition>? = null
46 }
47
48 /*
49  5.3.2 tosca.datatypes.Credential
50  The Credential type is a complex TOSCA data Type used when describing
51  authorization credentials used to access network accessible resources.
52  */
53 class Credential {
54
55     @get:JsonIgnore
56     var id: String? = null
57     var protocol: String? = null
58
59     @get:JsonProperty("token_type")
60     lateinit var tokenType: String
61     lateinit var token: String
62     var keys: MutableMap<String, String>? = null
63     lateinit var user: String
64 }
65
66 /*
67 3.5.2 Constraint clause
68 A constraint clause defines an operation along with one or more compatible values that can be used to define a constraint on a property or parameter’s allowed values when it is defined in a TOSCA Service Template or one of its entities.
69  */
70 class ConstraintClause {
71
72     var equal: JsonNode? = null
73
74     @get:JsonProperty("greater_than")
75     var greaterThan: JsonNode? = null
76
77     @get:JsonProperty("greater_or_equal")
78     var greaterOrEqual: JsonNode? = null
79
80     @get:JsonProperty("less_than")
81     var lessThan: JsonNode? = null
82
83     @get:JsonProperty("less_or_equal")
84     var lessOrEqual: JsonNode? = null
85
86     @get:JsonProperty("in_range")
87     var inRange: MutableList<JsonNode>? = null
88
89     @get:JsonProperty("valid_values")
90     var validValues: MutableList<JsonNode>? = null
91     var length: JsonNode? = null
92
93     @get:JsonProperty("min_length")
94     var minLength: JsonNode? = null
95
96     @get:JsonProperty("max_length")
97     var maxLength: JsonNode? = null
98     var pattern: String? = null
99     var schema: String? = null
100 }
101
102 /*
103 3.5.4 Node Filter definition
104 A node filter definition defines criteria for selection of a TOSCA Node Template based upon the template’s property values, capabilities and capability properties.
105  */
106
107 class NodeFilterDefinition {
108
109     var properties: MutableMap<String, PropertyDefinition>? = null
110     var capabilities: MutableList<String>? = null
111 }
112
113 /*
114 3.5.5 Repository definition
115  A repository definition defines a named external repository which contains deployment
116  and implementation artifacts that are referenced within the TOSCA Service Template.
117 */
118 class RepositoryDefinition {
119
120     @get:JsonIgnore
121     var id: String? = null
122     var description: String? = null
123     lateinit var url: String
124     var credential: Credential? = null
125 }
126
127 /*
128 3.5.6 Artifact definition
129 An artifact definition defines a named, typed file that can be associated with Node Type
130 or Node Template and used by orchestration engine to facilitate deployment and implementation of interface operations.
131  */
132 class ArtifactDefinition {
133
134     @get:JsonIgnore
135     var id: String? = null
136     lateinit var type: String
137     lateinit var file: String
138     var repository: String? = null
139     var description: String? = null
140
141     @get:JsonProperty("deploy_Path")
142     var deployPath: String? = null
143     var properties: MutableMap<String, JsonNode>? = null
144 }
145
146 /*
147 3.5.7 Import definition
148 An import definition is used within a TOSCA Service Template to locate and uniquely name
149 another TOSCA Service Template file which has type and template definitions to be imported (included)
150 and referenced within another Service Template.
151  */
152 class ImportDefinition {
153
154     @get:JsonIgnore
155     var id: String? = null
156     lateinit var file: String
157     var repository: String? = null
158
159     @get:JsonProperty("namespace_uri")
160     var namespaceUri: String? = null
161
162     @get:JsonProperty("namespace_prefix")
163     var namespacePrefix: String? = null
164 }
165
166 /*
167 3.5.8 Property definition A property definition defines a named, typed value and related data that can be associated with an
168 entity defined in this specification (e.g., Node Types, Relationship Types, Capability Types, etc.).
169 Properties are used by template authors to provide input values to TOSCA entities which indicate their “desired state” when they are
170 instantiated. The value of a property can be retrieved using the get_property function within TOSCA Service Templates.
171  */
172 class PropertyDefinition {
173
174     @get:JsonIgnore
175     var id: String? = null
176     var description: String? = null
177     var required: Boolean? = null
178     lateinit var type: String
179
180     @get:JsonProperty("input-param")
181     var inputparam: Boolean? = null
182
183     @get:JsonProperty("default")
184     var defaultValue: JsonNode? = null
185     var status: String? = null
186     var constraints: MutableList<ConstraintClause>? = null
187
188     @get:JsonProperty("entry_schema")
189     var entrySchema: EntrySchema? = null
190
191     @get:JsonProperty("external-schema")
192     var externalSchema: String? = null
193     var metadata: MutableMap<String, String>? = null
194
195     // Mainly used in Workflow Outputs
196     @get:ApiModelProperty(notes = "Property Value, It may be Expression or Json type values")
197     var value: JsonNode? = null
198 }
199
200 /*
201 3.5.10 Attribute definition
202
203 An attribute definition defines a named, typed value that can be associated with an entity defined in this
204 specification (e.g., a Node, Relationship or Capability Type).  Specifically, it is used to expose the
205 “actual state” of some property of a TOSCA entity after it has been deployed and instantiated
206 (as set by the TOSCA orchestrator). Attribute values can be retrieved via the get_attribute function
207 from the instance model and used as values to other entities within TOSCA Service Templates.
208  */
209
210 class AttributeDefinition {
211
212     @get:JsonIgnore
213     var id: String? = null
214     var description: String? = null
215     var required: Boolean? = null
216     lateinit var type: String
217
218     @JsonProperty("default")
219     var defaultValue: JsonNode? = null
220     var status: String? = null
221     var constraints: MutableList<ConstraintClause>? = null
222
223     @JsonProperty("entry_schema")
224     var entrySchema: EntrySchema? = null
225
226     // Mainly used in DSL definitions
227     @get:ApiModelProperty(notes = "Attribute Value, It may be Expression or Json type values")
228     var value: JsonNode? = null
229 }
230
231 /*
232 3.5.13 Operation definition
233 An operation definition defines a named function or procedure that can be bound to an implementation artifact (e.g., a script).
234  */
235 class OperationDefinition {
236
237     @get:JsonIgnore
238     var id: String? = null
239     var description: String? = null
240     var implementation: Implementation? = null
241     var inputs: MutableMap<String, PropertyDefinition>? = null
242     var outputs: MutableMap<String, PropertyDefinition>? = null
243 }
244
245 class Implementation {
246
247     var primary: String? = null
248     var dependencies: MutableList<String>? = null
249
250     @get:JsonProperty("operation_host")
251     var operationHost: String = BluePrintConstants.PROPERTY_SELF
252
253     // Timeout value in seconds
254     var timeout: Int = 180
255     var lock: LockAssignment? = null
256 }
257
258 class LockAssignment {
259
260     lateinit var key: JsonNode
261     var acquireTimeout: JsonNode = Integer(180).asJsonType()
262 }
263
264 /*
265 3.5.14 Interface definition
266 An interface definition defines a named interface that can be associated with a Node or Relationship Type
267  */
268 class InterfaceDefinition {
269
270     @get:JsonIgnore
271     var id: String? = null
272     var type: String? = null
273     var operations: MutableMap<String, OperationDefinition>? = null
274     var inputs: MutableMap<String, PropertyDefinition>? = null
275 }
276
277 /*
278 3.5.15 Event Filter definition
279 An event filter definition defines criteria for selection of an attribute, for the purpose of monitoring it, within a TOSCA entity, or one its capabilities.
280  */
281 class EventFilterDefinition {
282
283     @get:JsonIgnore
284     var id: String? = null
285     lateinit var node: String
286     var requirement: String? = null
287     var capability: String? = null
288 }
289
290 /*
291 3.5.16 Trigger definition TODO
292 A trigger definition defines the event, condition and action that is used to “trigger” a policy it is associated with.
293  */
294 class TriggerDefinition {
295
296     @get:JsonIgnore
297     var id: String? = null
298     var description: String? = null
299
300     @get:JsonProperty("event_type")
301     lateinit var eventType: String
302
303     @get:JsonProperty("target_filter")
304     var targetFilter: EventFilterDefinition? = null
305     var condition: ConditionClause? = null
306     var constraint: ConditionClause? = null
307     var method: String? = null
308     lateinit var action: String
309 }
310
311 /*
312     3.5.17 Workflow activity definition
313     A workflow activity defines an operation to be performed in a TOSCA workflow. Activities allows to:
314     · Delegate the workflow for a node expected to be provided         by the orchestrator
315     · Set the state of a node
316     · Call an operation        defined on a TOSCA interface of a node, relationship or group
317     · Inline another workflow defined in the topology (to allow reusability)
318  */
319 class Activity {
320
321     var delegate: String? = null
322
323     @get:JsonProperty("set_state")
324     var setState: String? = null
325
326     @get:JsonProperty("call_operation")
327     var callOperation: String? = null
328     var inlines: ArrayList<String>? = null
329 }
330
331 /*
332 3.5.20 Workflow precondition definition
333 A workflow condition can be used as a filter or precondition to check if a workflow can be processed or not based on the state of the instances of a TOSCA topology deployment. When not met, the workflow will not be triggered.
334  */
335 class PreConditionDefinition {
336
337     @get:JsonIgnore
338     var id: String? = null
339     lateinit var target: String
340
341     @get:JsonProperty("target_relationship")
342     lateinit var targetRelationship: String
343     lateinit var condition: ArrayList<ConditionClause>
344 }
345
346 /*
347 3.5.21 Workflow step definition
348 A workflow step allows to define one or multiple sequenced activities in a workflow and how they are connected to other steps in the workflow. They are the building blocks of a declarative workflow.
349  */
350 class Step {
351
352     @get:JsonIgnore
353     var id: String? = null
354     var description: String? = null
355     var target: String? = null
356
357     @JsonProperty("target_relationship")
358     var targetRelationship: String? = null
359
360     @JsonProperty("operation_host")
361     var operationHost: String? = null
362     var activities: ArrayList<Activity>? = null
363
364     @get:JsonProperty("on_success")
365     var onSuccess: ArrayList<String>? = null
366
367     @get:JsonProperty("on_failure")
368     var onFailure: ArrayList<String>? = null
369 }
370
371 /*
372 3.6.2 Capability definition
373 A capability definition defines a named, typed set of data that can be associated with Node Type or Node Template to describe a transparent capability or feature of the software component the node describes.
374  */
375
376 class CapabilityDefinition {
377
378     @get:JsonIgnore
379     var id: String? = null
380     lateinit var type: String
381     var description: String? = null
382     var properties: MutableMap<String, PropertyDefinition>? = null
383
384     @get:JsonProperty("valid_source_types")
385     var validSourceTypes: MutableList<String>? = null
386     var occurrences: MutableList<Any>? = null
387 }
388
389 /*
390 3.6.3 Requirement definition
391 The Requirement definition describes a named requirement (dependencies) of a TOSCA Node Type or Node template which needs to be fulfilled by a matching Capability definition declared by another TOSCA modelable entity.  The requirement definition may itself include the specific name of the fulfilling entity (explicitly) or provide an abstract type, along with additional filtering characteristics, that a TOSCA orchestrator can use to fulfill the capability at runtime (implicitly).
392  */
393 class RequirementDefinition {
394
395     @get:JsonIgnore
396     var id: String? = null
397     var description: String? = null
398     var capability: String? = null
399     var node: String? = null
400     var relationship: String? = null
401     var occurrences: MutableList<Any>? = null
402 }
403
404 /*
405 3.6.4 Artifact Type
406 An Artifact Type is a reusable entity that defines the type of one or more files that are used to define implementation or deployment artifacts that are referenced by nodes or relationships on their operations.
407  */
408 class ArtifactType : EntityType() {
409
410     @get:JsonProperty("mime_type")
411     var mimeType: String? = null
412
413     @get:JsonProperty("file_ext")
414     var fileExt: MutableList<String>? = null
415 }
416
417 /*
418 3.6.6 Data Type
419 A Data Type definition defines the schema for new named datatypes in TOSCA.
420  */
421
422 class DataType : EntityType() {
423
424     var constraints: MutableList<ConstraintClause>? = null
425 }
426
427 /*
428 3.6.9 Node Type
429 A Node Type is a reusable entity that defines the type of one or more Node Templates. As such, a Node Type defines the structure of observable properties via a Properties Definition, the Requirements and Capabilities of the node as well as its supported interfaces.
430
431  */
432
433 class NodeType : EntityType() {
434
435     var capabilities: MutableMap<String, CapabilityDefinition>? = null
436     var requirements: MutableMap<String, RequirementDefinition>? = null
437     var interfaces: MutableMap<String, InterfaceDefinition>? = null
438     var artifacts: MutableMap<String, ArtifactDefinition>? = null
439 }
440
441 /*
442 3.6.8 Requirement Type
443 A Requirement Type is a reusable entity that describes a kind of requirement that a Node Type can declare to expose.
444 The TOSCA Simple Profile seeks to simplify the need for declaring specific Requirement Types
445 from nodes and instead rely upon nodes declaring their features sets using TOSCA Capability Types
446 along with a named Feature notation.
447  */
448
449 class RequirementType : EntityType() {
450
451     var requirements: MutableMap<String, RequirementDefinition>? = null
452     var capabilities: MutableMap<String, CapabilityDefinition>? = null
453     var interfaces: MutableMap<String, InterfaceDefinition>? = null
454     var artifacts: MutableMap<String, ArtifactDefinition>? = null
455 }
456
457 /*
458 3.6.10 Relationship Type
459 A Relationship Type is a reusable entity that defines the type of one or more relationships between Node Types or Node Templates.
460 */
461
462 class RelationshipType : EntityType() {
463
464     var interfaces: MutableMap<String, InterfaceDefinition>? = null
465
466     @get:JsonProperty("valid_target_types")
467     var validTargetTypes: MutableList<String>? = null
468 }
469
470 /*
471 3.6.11 Group Type
472 A Group Type defines logical grouping types for nodes, typically for different management purposes.
473 Groups can effectively be viewed as logical nodes that are not part of the physical deployment topology
474  of an application, yet can have capabilities and the ability to attach policies and interfaces
475  that can be applied (depending on the group type) to its member nodes.
476  */
477
478 class GroupType : EntityType() {
479
480     var members: MutableList<String>? = null
481     var requirements: ArrayList<RequirementDefinition>? = null
482     var capabilities: MutableMap<String, CapabilityDefinition>? = null
483     var interfaces: MutableMap<String, InterfaceDefinition>? = null
484 }
485
486 /*
487     3.6.12 Policy Type
488     A Policy Type defines a type of requirement that affects or governs an application or service’s
489     topology at some stage of its lifecycle, but is not explicitly part of the topology itself
490     (i.e., it does not prevent the application or service from being deployed or run if it did not exist).
491  */
492 class PolicyType : EntityType() {
493
494     lateinit var targets: MutableList<String>
495 }
496
497 /*
498 3.7.1 Capability assignment
499 A capability assignment allows node template authors to assign values to properties and attributes for a named capability definition that is part of a Node Template’s type definition.
500  */
501 class CapabilityAssignment {
502
503     @get:JsonIgnore
504     var id: String? = null
505     var attributes: MutableMap<String, JsonNode>? = null
506     var properties: MutableMap<String, JsonNode>? = null
507 }
508
509 /*
510 3.7.4 Relationship Template
511 A Relationship Template specifies the occurrence of a manageable relationship between node templates as part of an application’s topology model that is defined in a TOSCA Service Template.  A Relationship template is an instance of a specified Relationship Type and can provide customized properties, constraints or operations which override the defaults provided by its Relationship Type and its implementations.
512  */
513 class GroupDefinition {
514
515     @get:JsonIgnore
516     var id: String? = null
517     lateinit var type: String
518     var description: String? = null
519     var metadata: MutableMap<String, String>? = null
520     var properties: MutableMap<String, JsonNode>? = null
521     var members = ArrayList<String>()
522     var interfaces: MutableMap<String, InterfaceDefinition>? = null
523 }
524
525 /*
526 3.7.6 Policy definition
527 A policy definition defines a policy that can be associated with a TOSCA topology or top-level entity definition (e.g., group definition, node template, etc.).
528  */
529 class PolicyDefinition {
530
531     @get:JsonIgnore
532     var id: String? = null
533     lateinit var type: String
534     var description: String? = null
535     var metadata: MutableMap<String, String>? = null
536     var properties: MutableMap<String, JsonNode>? = null
537     var targets: MutableList<String>? = null
538 }
539
540 /*
541 3.8 Topology Template definition
542 This section defines the topology template of a cloud application. The main ingredients of the topology template are node templates representing components of the application and relationship templates representing links between the components. These elements are defined in the nested node_templates section and the nested relationship_templates sections, respectively.  Furthermore, a topology template allows for defining input parameters, output parameters as well as grouping of node templates.
543  */
544 class TopologyTemplate {
545
546     @get:JsonIgnore
547     var id: String? = null
548     var description: String? = null
549     var inputs: MutableMap<String, PropertyDefinition>? = null
550
551     @get:JsonProperty("node_templates")
552     var nodeTemplates: MutableMap<String, NodeTemplate>? = null
553
554     @get:JsonProperty("relationship_templates")
555     var relationshipTemplates: MutableMap<String, RelationshipTemplate>? = null
556     var policies: MutableMap<String, PolicyDefinition>? = null
557     var outputs: MutableMap<String, PropertyDefinition>? = null
558
559     @get:JsonProperty("substitution_mappings")
560     var substitutionMappings: Any? = null
561     var workflows: MutableMap<String, Workflow>? = null
562 }
563
564 class SubstitutionMapping {
565
566     @get:JsonProperty("node_type")
567     lateinit var nodeType: String
568     lateinit var capabilities: ArrayList<String>
569     lateinit var requirements: ArrayList<String>
570 }
571
572 class EntrySchema {
573
574     lateinit var type: String
575     var constraints: MutableList<ConstraintClause>? = null
576 }
577
578 class InterfaceAssignment {
579
580     @get:JsonIgnore
581     var id: String? = null
582     var operations: MutableMap<String, OperationAssignment>? = null
583     var inputs: MutableMap<String, JsonNode>? = null
584 }
585
586 /*
587 3.7.3 Node Template
588 A Node Template specifies the occurrence of a manageable software component as part of an application’s topology model which is defined in a TOSCA Service Template.  A Node template is an instance of a specified Node Type and can provide customized properties, constraints or operations which override the defaults provided by its Node Type and its implementations.
589  */
590
591 open class NodeTemplate {
592
593     @get:JsonIgnore
594     var id: String? = null
595     var description: String? = null
596     lateinit var type: String
597     var metadata: MutableMap<String, String>? = null
598     var directives: MutableList<String>? = null
599
600     // @get:JsonSerialize(using = PropertyDefinitionValueSerializer::class)
601     var properties: MutableMap<String, JsonNode>? = null
602     var attributes: MutableMap<String, JsonNode>? = null
603     var capabilities: MutableMap<String, CapabilityAssignment>? = null
604     var requirements: MutableMap<String, RequirementAssignment>? = null
605     var interfaces: MutableMap<String, InterfaceAssignment>? = null
606     var artifacts: MutableMap<String, ArtifactDefinition>? = null
607
608     @get:JsonProperty("node_filter")
609     var nodeFilter: NodeFilterDefinition? = null
610     var copy: String? = null
611 }
612
613 class OperationAssignment {
614
615     @get:JsonIgnore
616     var id: String? = null
617     var description: String? = null
618     var implementation: Implementation? = null
619     var inputs: MutableMap<String, JsonNode>? = null
620     var outputs: MutableMap<String, JsonNode>? = null
621 }
622
623 /*
624 3.7.4 Relationship Template
625 A Relationship Template specifies the occurrence of a manageable relationship between node templates as part of an application’s topology model that is defined in a TOSCA Service Template.  A Relationship template is an instance of a specified Relationship Type and can provide customized properties, constraints or operations which override the defaults provided by its Relationship Type and its implementations.
626  */
627
628 class RelationshipTemplate {
629
630     @get:JsonIgnore
631     var id: String? = null
632     lateinit var type: String
633     var description: String? = null
634     var metadata: MutableMap<String, String>? = null
635     var properties: MutableMap<String, JsonNode>? = null
636     var attributes: MutableMap<String, JsonNode>? = null
637     var interfaces: MutableMap<String, InterfaceDefinition>? = null
638     var copy: String? = null
639 }
640
641 /*
642 3.7.2 Requirement assignment
643 A Requirement assignment allows template authors to provide either concrete names of TOSCA templates or provide abstract selection criteria for providers to use to find matching TOSCA templates that are used to fulfill a named requirement’s declared TOSCA Node Type.
644  */
645
646 class RequirementAssignment {
647
648     @get:JsonIgnore
649     var id: String? = null
650     var capability: String? = null
651     var node: String? = null
652
653     // Relationship Type or Relationship Template
654     var relationship: String? = null
655 }
656
657 class Workflow {
658
659     @get:JsonIgnore
660     var id: String? = null
661     var description: String? = null
662     var steps: MutableMap<String, Step>? = null
663     var preconditions: ArrayList<PreConditionDefinition>? = null
664     var inputs: MutableMap<String, PropertyDefinition>? = null
665     var outputs: MutableMap<String, PropertyDefinition>? = null
666 }
667
668 class ConditionClause {
669
670     var and: ArrayList<MutableMap<String, Any>>? = null
671     var or: ArrayList<MutableMap<String, Any>>? = null
672
673     @get:JsonProperty("assert")
674     var assertConditions: ArrayList<MutableMap<String, Any>>? = null
675 }
676
677 /*
678 3.9 Service Template definition
679 A TOSCA Service Template (YAML) document contains element definitions of building blocks for cloud application, or complete models of cloud applications. This section describes the top-level structural elements (TOSCA keynames) along with their grammars, which are allowed to appear in a TOSCA Service Template document.
680  */
681
682 @JsonPropertyOrder(
683     value = [
684         "toscaDefinitionsVersion", "description", "metadata", "imports", "dsl_definitions",
685         "topologyTemplate"
686     ]
687 )
688 class ServiceTemplate : Cloneable {
689
690     @get:JsonIgnore
691     var id: String? = null
692
693     @get:JsonProperty("tosca_definitions_version")
694     var toscaDefinitionsVersion: String = "controller_blueprint_1_0_0"
695     var metadata: MutableMap<String, String>? = null
696     var description: String? = null
697
698     @get:JsonProperty("dsl_definitions")
699     var dslDefinitions: MutableMap<String, JsonNode>? = null
700     var repositories: MutableMap<String, RepositoryDefinition>? = null
701     var imports: MutableList<ImportDefinition>? = null
702
703     @get:JsonProperty("artifact_types")
704     var artifactTypes: MutableMap<String, ArtifactType>? = null
705
706     @get:JsonProperty("data_types")
707     var dataTypes: MutableMap<String, DataType>? = null
708
709     @get:JsonProperty("relationship_types")
710     var relationshipTypes: MutableMap<String, RelationshipType>? = null
711
712     @get:JsonProperty("node_types")
713     var nodeTypes: MutableMap<String, NodeType>? = null
714
715     @get:JsonProperty("policy_types")
716     var policyTypes: MutableMap<String, PolicyType>? = null
717
718     @get:JsonProperty("topology_template")
719     var topologyTemplate: TopologyTemplate? = null
720
721     public override fun clone(): ServiceTemplate {
722         return super.clone() as ServiceTemplate
723     }
724 }
725
726 class ToscaMetaData {
727
728     lateinit var toscaMetaFileVersion: String
729     lateinit var csarVersion: String
730     lateinit var createdBy: String
731     lateinit var entityDefinitions: String
732     lateinit var templateName: String
733     lateinit var templateVersion: String
734     lateinit var templateTags: String
735     var templateType: String = BluePrintConstants.BLUEPRINT_TYPE_DEFAULT
736 }