vFW and vDNS support added to azure-plugin
[multicloud/azure.git] / azure / aria / aria-extension-cloudify / src / aria / examples / clearwater / types / clearwater.yaml
1 # Licensed to the Apache Software Foundation (ASF) under one or more
2 # contributor license agreements.  See the NOTICE file distributed with
3 # this work for additional information regarding copyright ownership.
4 # The ASF licenses this file to You under the Apache License, Version 2.0
5 # (the "License"); you may not use this file except in compliance with
6 # the License.  You may obtain a copy of the License at
7 #
8 #     http://www.apache.org/licenses/LICENSE-2.0
9 #
10 # Unless required by applicable law or agreed to in writing, software
11 # distributed under the License is distributed on an "AS IS" BASIS,
12 # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 # See the License for the specific language governing permissions and
14 # limitations under the License.
15
16 imports:
17   - ims.yaml
18   - smtp.yaml
19   - cassandra.yaml
20
21 dsl_definitions:
22
23   clearwater_operation_dependencies: &CLEARWATER_OPERATION_DEPENDENCIES
24     - "ssh.user > { get_property: [ HOST, host, ssh.user ] }"
25     - "ssh.password > { get_property: [ HOST, host, ssh.password ] }"
26     - "ssh.address > { get_attribute: [ HOST, public_address ] }"
27     - "ssh.use_sudo > true"
28
29 policy_types:
30
31   clearwater.Configuration:
32     derived_from: tosca.policies.Root
33     properties:
34       zone:
35         description: >-
36           The domain name for SIP addresses, for example if its "example.com" then a SIP address
37           could be "6505550243@example.com".
38         type: string
39       geographically_redundant:
40         description: >-
41           Enable a geographically redundant deployment.
42         
43           See: http://clearwater.readthedocs.io/en/stable/Geographic_redundancy.html
44         type: boolean
45         default: false
46       site_name:
47         description: >-
48           Used by geographically redundant deployments.
49         type: string
50         required: false
51       secret:
52         description: >-
53           Used for registration via Ellis.
54         type: string
55
56 capability_types:
57
58   clearwater.Container:
59     description: >-
60       Clearwater container capability.
61     derived_from: tosca.capabilities.Container
62     properties:
63       hostname:
64         type: string
65       ssh.user:
66         type: string
67       ssh.password:
68         type: string
69       max_log_directory_size:
70         type: scalar-unit.size
71         default: 0 B # 0 means no max size
72       reduce_cassandra_mem_usage:
73         type: boolean
74         default: false
75
76   # http://clearwater.readthedocs.io/en/stable/Clearwater_IP_Port_Usage.html
77
78   # SIP endpoints
79
80   clearwater.Endpoint.SIP.Upstream:
81     derived_from: tosca.capabilities.Endpoint
82     properties:
83       protocol: # override
84         type: string
85         default: sip
86       port: # override
87         type: tosca.datatypes.network.PortDef
88         default: 5052
89
90   clearwater.Endpoint.SIP.Upstream.Secure:
91     derived_from: tosca.capabilities.Endpoint
92     properties:
93       protocol: # override
94         type: string
95         default: sip
96       port: # override
97         type: tosca.datatypes.network.PortDef
98         default: 5054
99       secure: # override
100         type: boolean
101         default: true
102
103   clearwater.Endpoint.SIP.Proxy:
104     derived_from: tosca.capabilities.Endpoint
105     properties:
106       protocol: # override
107         type: string
108         default: sip
109       port: # override
110         type: tosca.datatypes.network.PortDef
111         default: 5058
112
113   clearwater.Endpoint.SIP.Public:
114     derived_from: tosca.capabilities.Endpoint.Public
115     properties:
116       protocol: # override
117         type: string
118         default: sip
119       port: # override
120         type: tosca.datatypes.network.PortDef
121         default: 5060
122
123   clearwater.Endpoint.SIP.Public.Secure:
124     derived_from: tosca.capabilities.Endpoint.Public
125     properties:
126       protocol: # override
127         type: string
128         default: sip
129       port: # override
130         type: tosca.datatypes.network.PortDef
131         default: 5062
132       secure: # override
133         type: boolean
134         default: true
135
136   # STUN endpoints
137
138   clearwater.Endpoint.STUN:
139     derived_from: tosca.capabilities.Endpoint
140     properties:
141       protocol: # override
142         type: string
143         default: stun
144       port: # override
145         type: tosca.datatypes.network.PortDef
146         default: 3478
147
148   # Diameter endpoints
149
150   clearwater.Endpoint.Diameter.HSS:
151     description: >-
152       In shared_config: hs_listen_port
153     derived_from: tosca.capabilities.Endpoint
154     properties:
155       protocol: # override
156         type: string
157         default: diameter
158       port: # override
159         type: tosca.datatypes.network.PortDef
160         default: 3868
161
162   clearwater.Endpoint.Diameter.CTF:
163     description: >-
164       In shared_config: ralf_listen_port
165     derived_from: tosca.capabilities.Endpoint
166     properties:
167       protocol: # override
168         type: string
169         default: diameter
170       port: # override
171         type: tosca.datatypes.network.PortDef
172         default: 3869
173
174   # Management endpoints
175
176   clearwater.Endpoint.Management.Homer:
177     derived_from: ims.interfaces.HTTP
178     properties:
179       port: # override
180         type: tosca.datatypes.network.PortDef
181         default: 7888
182
183   clearwater.Endpoint.Management.Homestead:
184     derived_from: ims.interfaces.HTTP
185     properties:
186       port: # override
187         type: tosca.datatypes.network.PortDef
188         default: 8888
189
190   clearwater.Endpoint.Management.Homestead.Provisioning:
191     description: >-
192       In shared_config: homestead_provisioning_port
193     derived_from: ims.interfaces.HTTP
194     properties:
195       port: # override
196         type: tosca.datatypes.network.PortDef
197         default: 8889
198
199   clearwater.Endpoint.Management.Sprout:
200     derived_from: ims.interfaces.HTTP
201     properties:
202       port: # override
203         type: tosca.datatypes.network.PortDef
204         default: 9886
205
206   clearwater.Endpoint.Management.Ralf:
207     derived_from: ims.interfaces.HTTP
208     properties:
209       port: # override
210         type: tosca.datatypes.network.PortDef
211         default: 9888 # note: some documentation shows 10888
212
213   # Web endpoints
214
215   clearwater.Endpoint.Public.Web:
216     derived_from: tosca.capabilities.Endpoint.Public
217     properties:
218       protocol: # override
219         type: string
220         default: http
221       port: # override
222         type: tosca.datatypes.network.PortDef
223         default: 80
224       url_path: # override
225         type: string
226         default: /
227
228   clearwater.Endpoint.Public.Web.Secure:
229     derived_from: tosca.capabilities.Endpoint.Public
230     properties:
231       protocol: # override
232         type: string
233         default: https
234       port: # override
235         type: tosca.datatypes.network.PortDef
236         default: 443
237       secure: # override
238         type: boolean
239         default: true
240       url_path: # override
241         type: string
242         default: /        
243
244   # Other endpoints
245
246   clearwater.Endpoint.Chronos:
247     derived_from: tosca.capabilities.Endpoint
248     properties:
249       port: # override
250         type: tosca.datatypes.network.PortDef
251         default: 7253
252
253   clearwater.Endpoint.Memcached:
254     derived_from: tosca.capabilities.Endpoint
255     properties:
256       port: # override
257         type: tosca.datatypes.network.PortDef
258         default: 11211
259
260   clearwater.Endpoint.Astaire:
261     derived_from: tosca.capabilities.Endpoint
262     properties:
263       port: # override
264         type: tosca.datatypes.network.PortDef
265         default: 11311
266
267 data_types:
268
269   clearwater.Number:
270     derived_from: string
271     constraints:
272       - pattern: '^\d{10}$'
273
274 node_types:
275
276   # http://clearwater.readthedocs.io/en/stable/Clearwater_Architecture.html
277
278   clearwater.SoftwareComponent:
279     description: >-
280       Clearwater software components must be installed in a Clearwater-capable compute node.
281     derived_from: tosca.nodes.SoftwareComponent
282     requirements:
283       - host: # override
284           capability: clearwater.Container
285           relationship: tosca.relationships.HostedOn
286
287   clearwater.Bono:
288     description: >-
289       Clearwater edge proxy.
290
291       The Bono nodes form a horizontally scalable SIP edge proxy providing both a SIP IMS Gm
292       compliant interface and a WebRTC interface to clients. Client connections are load balanced
293       across the nodes. The Bono node provides the anchor point for the client's connection to the
294       Clearwater system, including support for various NAT traversal mechanisms. A client is
295       therefore anchored to a particular Bono node for the duration of its registration, but can
296       move to another Bono node if the connection or client fails.
297
298       Clients can connect to Bono using SIP/UDP or SIP/TCP. Bono supports any WebRTC client that
299       performs call setup signaling using SIP over WebSocket.
300
301       Alternatively, Clearwater can be deployed with a third party P-CSCF or Session Border
302       Controller implementing P-CSCF. In this case Bono nodes are not required.
303     derived_from: clearwater.SoftwareComponent
304     capabilities:
305       p-cscf: ims.functions.P-CSCF
306       gm: ims.interfaces.Gm
307       sip_endpoint: clearwater.Endpoint.SIP.Public
308       sip_secure_endpoint: clearwater.Endpoint.SIP.Public.Secure
309       sip_proxy: clearwater.Endpoint.SIP.Proxy # open to Sprout
310       stun_endoint: clearwater.Endpoint.STUN
311     requirements:
312       - sip_downstream:
313           capability: clearwater.Endpoint.SIP.Upstream
314           occurrences: [ 0, UNBOUNDED ]       
315       - sip_secure_downstream:
316           capability: clearwater.Endpoint.SIP.Upstream.Secure
317           occurrences: [ 0, UNBOUNDED ]       
318       - ralf: # for billable events
319           capability: clearwater.Endpoint.Management.Ralf
320           occurrences: [ 0, 1 ]       
321     interfaces:
322       Standard:
323         type: tosca.interfaces.node.lifecycle.Standard
324         create:
325           implementation:
326             primary: scripts/bono/create.sh
327             dependencies: *CLEARWATER_OPERATION_DEPENDENCIES
328         delete:
329           implementation:
330             primary: scripts/bono/delete.sh
331             dependencies: *CLEARWATER_OPERATION_DEPENDENCIES
332
333   clearwater.Sprout:
334     description: >-
335       Clearwater SIP router.
336
337       The Sprout nodes act as a horizontally scalable, combined SIP registrar and authoritative
338       routing proxy, and handle client authentication and the ISC interface to application servers.
339       The Sprout nodes also contain the in-built MMTEL application server. SIP transactions are load
340       balanced across the Sprout cluster, so there is no long-lived association between a client and
341       a particular Sprout node. Sprout does not store any long-lived data itself and instead uses
342       web service interfaces to Homestead and Homer to retrieve HSS configuration such as
343       authentication data/user profiles and MMTEL service settings APIs to Vellum for storing
344       subscriber registration data and for running timers.
345
346       Sprout is where the bulk of the I-CSCF and S-CSCF function resides, with the remainder
347       provided by Dime (and backed by the long-lived data stores on Vellum).            
348     derived_from: clearwater.SoftwareComponent
349     capabilities:
350       sip_endpoint: clearwater.Endpoint.SIP.Upstream # open to Bono
351       sip_secure_endpoint: clearwater.Endpoint.SIP.Upstream.Secure # open to Bono
352       management_endpoint: clearwater.Endpoint.Management.Sprout
353       memento:
354         type: tosca.capabilities.Container
355         valid_source_types: [ clearwater.Memento ]
356     requirements:
357 # cyclical: see ARIA-327
358 #      - sip_upstream:
359 #          capability: clearwater.Endpoint.SIP.Proxy      
360 #          occurrences: [ 0, UNBOUNDED ]       
361       - homer: # for subscriber profiles
362           capability: clearwater.Endpoint.Management.Homer
363       - ralf: # for billable events
364           capability: clearwater.Endpoint.Management.Ralf
365           occurrences: [ 0, 1 ]       
366       - chronos:
367           capability: clearwater.Endpoint.Chronos
368           node: clearwater.Vellum
369       - astaire:
370           capability: clearwater.Endpoint.Astaire
371           node: clearwater.Vellum
372     interfaces:
373       Standard:
374         type: tosca.interfaces.node.lifecycle.Standard
375         create:
376           implementation:
377             primary: scripts/sprout/create.sh
378             dependencies: *CLEARWATER_OPERATION_DEPENDENCIES
379         delete:
380           implementation:
381             primary: scripts/sprout/delete.sh
382             dependencies: *CLEARWATER_OPERATION_DEPENDENCIES
383
384   clearwater.Memento:
385     derived_from: tosca.nodes.Root
386     capabilities:
387       sip-as: ims.functions.SIP-AS
388       web_secure_endpoint: clearwater.Endpoint.Public.Web.Secure
389     requirements:
390       - host:
391           capability: tosca.capabilities.Container
392           node: clearwater.Sprout
393       - cassandra_thrift:
394           capability: cassandra.Endpoint.Thrift
395           node: clearwater.Vellum
396     interfaces:
397       Standard:
398         type: tosca.interfaces.node.lifecycle.Standard
399         create:
400           implementation:
401             primary: scripts/memento/create.sh
402             dependencies: *CLEARWATER_OPERATION_DEPENDENCIES
403         delete:
404           implementation:
405             primary: scripts/memento/delete.sh
406             dependencies: *CLEARWATER_OPERATION_DEPENDENCIES
407
408   clearwater.Dime:
409     description: >-
410       Clearwater Diameter gateway.
411
412       Dime nodes run Clearwater's Homestead and Ralf components.
413     derived_from: clearwater.SoftwareComponent
414     capabilities:
415       host:
416          type: tosca.capabilities.Container
417          valid_source_types: [ clearwater.DimeSoftwareComponent ]
418     interfaces:
419       Standard:
420         type: tosca.interfaces.node.lifecycle.Standard
421         create:
422           implementation:
423             primary: scripts/dime/create.sh
424             dependencies: *CLEARWATER_OPERATION_DEPENDENCIES
425         delete:
426           implementation:
427             primary: scripts/dime/delete.sh
428             dependencies: *CLEARWATER_OPERATION_DEPENDENCIES
429
430   clearwater.DimeSoftwareComponent:
431     description: >-
432       Base type for Dime software components.
433     derived_from: clearwater.SoftwareComponent
434     requirements:
435       - host: # override
436           capability: tosca.capabilities.Container
437           node: clearwater.Dime
438
439   clearwater.Homestead:
440     description: >-
441       Clearwater HSS cache.
442
443       Homestead provides a web services interface to Sprout for retrieving authentication
444       credentials and user profile information. It can either master the data (in which case it
445       exposes a web services provisioning interface) or can pull the data from an IMS compliant HSS
446       over the Cx interface. The Homestead nodes themselves are stateless - the mastered / cached
447       subscriber data is all stored on Vellum (via Cassandra's Thrift interface).
448
449       In the IMS architecture, the HSS mirror function is considered to be part of the I-CSCF and
450       S-CSCF components, so in Clearwater I-CSCF and S-CSCF function is implemented with a
451       combination of Sprout and Dime clusters.
452     derived_from: clearwater.DimeSoftwareComponent
453     capabilities:
454       hss: ims.functions.HSS
455       cx: ims.interfaces.Cx
456       diameter_endpoint: clearwater.Endpoint.Diameter.HSS
457       management_endpoint: clearwater.Endpoint.Management.Homestead # open to Ellis
458       provisioning_management_endpoint: clearwater.Endpoint.Management.Homestead.Provisioning # open to Ellis
459     requirements:
460       - cassandra_thrift:
461           capability: cassandra.Endpoint.Thrift
462           node: clearwater.Vellum
463     interfaces:
464       Standard:
465         type: tosca.interfaces.node.lifecycle.Standard
466         create:
467           implementation:
468             primary: scripts/homestead/create.sh
469             dependencies: *CLEARWATER_OPERATION_DEPENDENCIES
470         delete:
471           implementation:
472             primary: scripts/homestead/delete.sh
473             dependencies: *CLEARWATER_OPERATION_DEPENDENCIES
474
475   clearwater.Ralf:
476     description: >-
477       Clearwater CTF.
478
479       Ralf provides an HTTP API that both Bono and Sprout can use to report billable events that
480       should be passed to the CDF (Charging Data Function) over the Rf billing interface. Ralf is
481       stateless, using Vellum to maintain the long lived session state and run the timers necessary
482       to enable it to conform to the Rf protocol.
483     derived_from: clearwater.DimeSoftwareComponent
484     capabilities:
485       ctf: ims.functions.CTF
486       rf: ims.interfaces.Rf
487       diameter_endpoint: clearwater.Endpoint.Diameter.CTF
488       management_endpoint: clearwater.Endpoint.Management.Ralf # open to Sprout, Bono, Vellum
489     requirements:
490       - chronos:
491           capability: clearwater.Endpoint.Chronos
492           node: clearwater.Vellum
493       - astaire:
494           capability: clearwater.Endpoint.Astaire
495           node: clearwater.Vellum
496     interfaces:
497       Standard:
498         type: tosca.interfaces.node.lifecycle.Standard
499         create:
500           implementation:
501             primary: scripts/ralf/create.sh
502             dependencies: *CLEARWATER_OPERATION_DEPENDENCIES
503         delete:
504           implementation:
505             primary: scripts/ralf/delete.sh
506             dependencies: *CLEARWATER_OPERATION_DEPENDENCIES
507
508   clearwater.Vellum:
509     description: >-
510       Clearwater state store.
511
512       Vellum is used to maintain all long-lived state in the deployment. It does this by running a
513       number of cloud optimized, distributed storage clusters.
514
515       - Cassandra. Cassandra is used by Homestead to store authentication credentials and profile
516       information, and is used by Homer to store MMTEL service settings. Vellum exposes Cassandra's
517       Thrift API.
518
519       - etcd. etcd is used by Vellum itself to share clustering information between Vellum nodes and
520       by other nodes in the deployment for shared configuration.
521
522       - Chronos. Chronos is a distributed, redundant, reliable timer service developed by
523       Clearwater. It is used by Sprout and Ralf nodes to enable timers to be run (e.g. for SIP
524       Registration expiry) without pinning operations to a specific node (one node can set the timer
525       and another act on it when it pops). Chronos is accessed via an HTTP API.
526
527       - Memcached / Astaire. Vellum also runs a Memcached cluster fronted by Astaire. Astaire is a
528       service developed by Clearwater that enabled more rapid scale up and scale down of memcached
529       clusters. This cluster is used by Sprout and Ralf for storing registration and session state.
530     derived_from: clearwater.SoftwareComponent
531     capabilities:
532       cassandra_endpoint: cassandra.Endpoint # open to other Vellum
533       cassandra_thrift_endpoint: cassandra.Endpoint.Thrift # open to Homer, Dime (Homestead), Sprout (Memento)
534       chronos_endpoint: clearwater.Endpoint.Chronos # open to other Vellum, Sprout, Dime (Ralf)
535       memcached_endpoint: clearwater.Endpoint.Memcached # open to other Vellum
536       astaire_endpoint: clearwater.Endpoint.Astaire # open to Sprout, Dime (Ralf)
537 # cyclical: see ARIA-327
538 #    requirements:
539 #      - ralf:
540 #          capability: clearwater.Endpoint.Management.Ralf
541 #          occurrences: [ 0, 1 ]       
542     interfaces:
543       Standard:
544         type: tosca.interfaces.node.lifecycle.Standard
545         create:
546           implementation:
547             primary: scripts/vellum/create.sh
548             dependencies: *CLEARWATER_OPERATION_DEPENDENCIES
549         delete:
550           implementation:
551             primary: scripts/vellum/delete.sh
552             dependencies: *CLEARWATER_OPERATION_DEPENDENCIES
553
554   clearwater.Homer:
555     description: >-
556       Clearwater XDMS.
557
558       Homer is a standard XDMS used to store MMTEL service settings documents for each user of the
559       system. Documents are created, read, updated and deleted using a standard XCAP interface. As
560       with Homestead, the Homer nodes use Vellum as the data store for all long lived data.
561     derived_from: clearwater.SoftwareComponent
562     capabilities:
563       xdms: ims.functions.XDMS
564       management_endpoint: clearwater.Endpoint.Management.Homer # open to Sprout, Ellis
565     requirements:
566       - cassandra_thrift:
567           capability: cassandra.Endpoint.Thrift
568           node: clearwater.Vellum
569     interfaces:
570       Standard:
571         type: tosca.interfaces.node.lifecycle.Standard
572         create:
573           implementation:
574             primary: scripts/homer/create.sh
575             dependencies: *CLEARWATER_OPERATION_DEPENDENCIES
576         delete:
577           implementation:
578             primary: scripts/homer/delete.sh
579             dependencies: *CLEARWATER_OPERATION_DEPENDENCIES
580
581   clearwater.Ellis:
582     description: >-
583       Ellis is a sample provisioning portal providing self sign-up, password management, line
584       management and control of MMTEL service settings. It is not intended to be a part of
585       production Clearwater deployments (it is not easy to horizontally scale because of the MySQL
586       underpinnings for one thing) but to make the system easy to use out of the box.
587     derived_from: clearwater.SoftwareComponent
588     properties:
589       provision_numbers_start:
590         type: clearwater.Number
591         default: '6505550000'
592       provision_numbers_count:
593         type: integer
594         default: 0 # 0 means do not provision numbers
595         constraints:
596           - greater_or_equal: 0
597     capabilities:
598       web_endpoint: clearwater.Endpoint.Public.Web
599       web_secure_endpoint: clearwater.Endpoint.Public.Web.Secure
600     requirements:
601       - homer: # for subscriber profiles
602           capability: clearwater.Endpoint.Management.Homer
603       - homestead: # for subscriber authentication
604           capability: clearwater.Endpoint.Management.Homestead
605       - homestead_provisioning:
606           capability: clearwater.Endpoint.Management.Homestead.Provisioning
607       - ralf: # TODO: really?
608           capability: clearwater.Endpoint.Management.Ralf
609           occurrences: [ 0, 1 ]       
610       - smtp:
611           capability: smtp.SMTP
612     interfaces:
613       Standard:
614         type: tosca.interfaces.node.lifecycle.Standard
615         create:
616           implementation:
617             primary: scripts/ellis/create.sh
618             dependencies: *CLEARWATER_OPERATION_DEPENDENCIES
619         configure:
620           implementation:
621             primary: scripts/ellis/configure.sh
622             dependencies: *CLEARWATER_OPERATION_DEPENDENCIES
623         delete:
624           implementation:
625             primary: scripts/ellis/delete.sh
626             dependencies: *CLEARWATER_OPERATION_DEPENDENCIES
627
628   clearwater.I-CSCF:
629     description: >-
630       Clearwater I-CSCF.
631
632       Logical node encompassing Sprout and Homestead. Required only if you need to expose the I-CSCF
633       function.
634     derived_from: tosca.nodes.Root
635     capabilities:
636       i-cscf: ims.functions.I-CSCF
637     requirements:
638       - sprout:
639           capability: tosca.capabilities.Node
640           node: clearwater.Sprout
641       - homestead:
642           capability: tosca.capabilities.Node
643           node: clearwater.Homestead
644
645   clearwater.S-CSCF:
646     description: >-
647       Clearwater S-CSCF.
648
649       Logical node encompassing Sprout and Homestead. Required only if you need to expose the S-CSCF
650       function.
651     derived_from: tosca.nodes.Root
652     capabilities:
653       s-cscf: ims.functions.S-CSCF
654     requirements:
655       - sprout:
656           capability: tosca.capabilities.Node
657           node: clearwater.Sprout
658       - homestead:
659           capability: tosca.capabilities.Node
660           node: clearwater.Homestead
661
662   clearwater.LiveTest:
663     derived_from: tosca.nodes.SoftwareComponent
664     interfaces:
665       Standard:
666         type: tosca.interfaces.node.lifecycle.Standard
667         create:
668           implementation:
669             primary: scripts/live-test/create.sh
670             dependencies: *CLEARWATER_OPERATION_DEPENDENCIES
671         delete:
672           implementation:
673             primary: scripts/live-test/delete.sh
674             dependencies: *CLEARWATER_OPERATION_DEPENDENCIES
675
676   clearwater.HostBase:
677     derived_from: tosca.nodes.Compute
678     interfaces:
679       Standard:
680         type: tosca.interfaces.node.lifecycle.Standard
681         configure:
682           implementation:
683             primary: scripts/host-base/configure.sh
684             dependencies: *CLEARWATER_OPERATION_DEPENDENCIES
685     capabilities:
686       host: # override
687         type: clearwater.Container
688         valid_source_types: [ tosca.nodes.SoftwareComponent ]
689       os: # override
690         type: tosca.capabilities.OperatingSystem
691         properties:
692           architecture:
693             type: string
694             default: x86_64
695           type:
696             type: string
697             default: linux
698           distribution:
699             type: string
700             default: ubuntu
701           version:
702             type: version
703             default: 14.04
704
705   clearwater.Host:
706     description: >-
707       Default Clearwater host.
708
709       Note that any node can function as a Clearwater host as long as it has a clearwater.Container
710       capability.
711     derived_from: clearwater.HostBase
712     capabilities:
713       host: # override
714         type: clearwater.Container
715         valid_source_types: [ tosca.nodes.SoftwareComponent ]
716         properties:
717           mem_size:
718             type: scalar-unit.size
719             constraints:
720               - greater_or_equal: 0 MB
721             default: 4 GB # will run out of memory with less than this 
722     interfaces:
723       Standard:
724         type: tosca.interfaces.node.lifecycle.Standard
725         configure:
726           implementation:
727             primary: scripts/host/configure.sh
728             dependencies: *CLEARWATER_OPERATION_DEPENDENCIES