blob: 5fb0e279bbb70871932b7b73ae37f6fbe04db6fb (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
|
tosca_definitions_version: cloudify_dsl_1_3
imports:
- http://www.getcloudify.org/spec/cloudify/3.4/types.yaml
plugins:
docker:
executor: 'central_deployment_agent'
package_name: dockerplugin
package_version: 2.3.0
node_types:
# The DockerContainerForComponents node type is to be used for DCAE service components that
# are to be run in a Docker container. This node type goes beyond that of a ordinary Docker
# plugin where it has DCAE platform specific functionality:
#
# * Generation of the service component name
# * Managing of service component configuration information
#
# The Docker run command arguments are intentionally not visible. This node type is
# not intended to be a generic all-purpose Docker container thing. This should be thought
# to be an interface to how Docker containers are to be run in the rework context.
dcae.nodes.DockerContainerForComponents:
derived_from: cloudify.nodes.Root
properties:
service_component_type:
type: string
description: Service component type of the application being run in the container
service_id:
type: string
description: Unique id for this DCAE service instance this component belongs to
location_id:
type: string
description: Location id of where to run the container
service_component_name_override:
type: string
description: >
Manually override and set the name for this Docker container node. If this
is set, then the name will not be auto-generated. Platform services are the
specific use cases for using this parameter because they have static
names for example the CDAP broker.
default: Null
application_config:
default: {}
description: >
Application configuration for this Docker component. The data strcture is
expected to be a complex map (native YAML) and to be constructed and filled
by the creator of the blueprint.
docker_config:
default: {}
description: >
This is what is the auxilary portion of the component spec that contains things
like healthcheck definitions for the Docker component. Health checks are
optional.
image:
type: string
description: Full uri of the Docker image
interfaces:
cloudify.interfaces.lifecycle:
create:
# Generate service component name and populate config into Consul
implementation: docker.dockerplugin.create_for_components
start:
# Create Docker container and start
implementation: docker.dockerplugin.create_and_start_container_for_components
stop:
# Stop and remove Docker container
implementation: docker.dockerplugin.stop_and_remove_container
delete:
# Delete configuration from Consul
implementation: docker.dockerplugin.cleanup_discovery
# This node type is intended for DCAE service components that use DMaaP and must use the
# DMaaP plugin.
dcae.nodes.DockerContainerForComponentsUsingDmaap:
derived_from: dcae.nodes.DockerContainerForComponents
properties:
streams_publishes:
description: >
List of DMaaP streams used for publishing.
Message router items look like:
name: topic00
location: mtc5
client_role: XXXX
type: message_router
Data router items look like:
name: feed00
location: mtc5
type: data_router
This information is forwarded to the dmaap plugin to provision
default: []
streams_subscribes:
description: >
List of DMaaP streams used for subscribing.
Message router items look like:
name: topic00
location: mtc5
client_role: XXXX
type: message_router
Data router items look like:
name: feed00
location: mtc5
type: data_router
username: king
password: 123456
route: some-path
scheme: https
Note that username and password is optional. If not provided or null then the
plugin will generate them.
default: []
interfaces:
cloudify.interfaces.lifecycle:
create:
# Generate service component name and populate config into Consul
implementation: docker.dockerplugin.create_for_components_with_streams
start:
# Create Docker container and start
implementation: docker.dockerplugin.create_and_start_container_for_components_with_streams
# DockerContainerForPlatforms is intended for DCAE platform services. Unlike the components,
# platform services have well-known names and well-known ports.
dcae.nodes.DockerContainerForPlatforms:
derived_from: cloudify.nodes.Root
properties:
name:
description: >
Container name used to register with Consul
application_config:
default: {}
description: >
Application configuration for this Docker component. The data strcture is
expected to be a complex map (native YAML) and to be constructed and filled
by the creator of the blueprint.
docker_config:
default: {}
description: >
This is what is the auxilary portion of the component spec that contains things
like healthcheck definitions for the Docker component. Health checks are
optional.
image:
type: string
description: Full uri of the Docker image
host_port:
type: integer
description: >
Network port that the platform service is expecting to expose on the host
default: 0
container_port:
type: integer
description: >
Network port that the platform service exposes in the container
default: 0
interfaces:
cloudify.interfaces.lifecycle:
create:
# Populate config into Consul
implementation: docker.dockerplugin.create_for_platforms
start:
# Create Docker container and start
implementation: docker.dockerplugin.create_and_start_container_for_platforms
stop:
# Stop and remove Docker container
implementation: docker.dockerplugin.stop_and_remove_container
delete:
# Delete configuration from Consul
implementation: docker.dockerplugin.cleanup_discovery
# DockerContainer is intended to be more of an all-purpose Docker container node
# for non-componentized applications.
dcae.nodes.DockerContainer:
derived_from: cloudify.nodes.Root
properties:
name:
type: string
description: Name of the Docker container to be given
image:
type: string
description: Full uri of the Docker image
interfaces:
cloudify.interfaces.lifecycle:
start:
# Create Docker container and start
implementation: docker.dockerplugin.create_and_start_container
stop:
# Stop and remove Docker container
implementation: docker.dockerplugin.stop_and_remove_container
# TODO: Revisit using Docker swarm
# The DockerSwarm node type provides the connection information of an available Docker swarm
# cluster to be used to run Docker containers given search contraints like location.
# This node type is not responsible for instantiating and managing the Docker swarm clusters.
# The DockerHost node is responsible for selecting a pre-existing Docker host to run
# Docker containers on. It is not responsible for instantiating new Docker hosts or expanding
# more resources.
dcae.nodes.SelectedDockerHost:
derived_from: cloudify.nodes.Root
properties:
location_id:
type: string
description: Location id of the Docker host to use
# REVIEW: This field should really be optional but because there's no functionality
# that provides the dynamic solution sought after yet, it has been promoted to be
# required.
docker_host_override:
type: string
description: Docker hostname here is used as a manual override
interfaces:
cloudify.interfaces.lifecycle:
create:
# Provide the Docker host to use for containers
implementation: docker.dockerplugin.select_docker_host
delete:
implementation: docker.dockerplugin.unselect_docker_host
|