Merge "vFW and vDNS support added to azure-plugin"
[multicloud/azure.git] / azure / aria / aria-extension-cloudify / plugins / openstack / plugin.yaml
1 #
2 # Copyright (c) 2017 GigaSpaces Technologies Ltd. All rights reserved.
3 #
4 # Licensed under the Apache License, Version 2.0 (the "License"); you may
5 # not use this file except in compliance with the License. You may obtain
6 # 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, WITHOUT
12 # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
13 # License for the specific language governing permissions and limitations
14 # under the License.
15 #
16 tosca_definitions_version: tosca_simple_yaml_1_0
17
18
19 topology_template:
20   policies:
21     cloudify-openstack-plugin:
22       description: >-
23         openstack plugin executes operations.
24       type: aria.Plugin
25       properties:
26         version: 2.0.1
27
28
29 data_types:
30
31   aria.openstack.datatypes.Config:
32     description: >-
33       openstack configuration
34     properties:
35       username:
36         type: string
37       password:
38         type: string
39       tenant_name:
40         type: string
41       auth_url:
42         type: string
43       region:
44         type: string
45         required: false
46       nova_url:
47         type: string
48         required: false
49       neutron_url:
50         type: string
51         required: false
52
53   aria.openstack.datatypes.Rules:
54     description: >-
55       openstack security group rules
56     properties:
57       remote_ip_prefix:
58         type: string
59         default: 0.0.0.0/0
60       port:
61         type: integer
62         default:
63
64   # source: https://developer.openstack.org/api-ref/compute/
65
66   aria.openstack.datatypes.Server:
67     description: >-
68       openstack Server args.
69     properties:
70       security_groups:
71         type: list
72         entry_schema: string
73         required: false
74       availability_zone:
75         type: string
76         required: false
77       userdata:
78         type: string
79         required: false
80
81   aria.openstack.datatypes.Keypair:
82     description: >-
83       openstack keypair args.
84     properties:
85       public_key:
86         type: string
87         required: false
88       type:
89         type: string
90         required: false
91       user_id:
92         type: string
93         required: false
94
95   # source: https://developer.openstack.org/api-ref/block-storage/v2/index.html
96
97   aria.openstack.datatypes.Volume:
98     description: >-
99       openstack volume args.
100     properties:
101       size:
102         type: integer
103         required: false
104       description:
105         type: string
106         required: false
107       availability_zone:
108         type: string
109         required: false
110       consistencygroup_id:
111         type: string
112         required: false
113       volume_type:
114         type: string
115         required: false
116       snapshot_id:
117         type: string
118         required: false
119       source_replica:
120         type: string
121         required: false
122       tenant_id:
123         type: string
124         required: false
125
126   # source: https://developer.openstack.org/api-ref/image/
127
128   aria.openstack.datatypes.Image:
129     description: >-
130       openstack image args.
131     properties:
132       id:
133         type: string
134         required: false
135       min_disk:
136         type: integer
137         required: false
138       min_ram:
139         type: integer
140         required: false
141       name:
142         type: string
143         required: false
144       protected:
145         type: boolean
146         required: false
147       tags:
148         type: list
149         entry_schema: string
150         required: false
151       visibility:
152         type: string
153         required: false
154
155   # source: https://developer.openstack.org/api-ref/identity/v3/
156
157   aria.openstack.datatypes.Project:
158     description: >-
159       openstack image args.
160     properties:
161       is_domain:
162         type: boolean
163         required: false
164       description:
165         type: string
166         required: false
167       domain_id:
168         type: string
169         required: false
170       name:
171         type: string
172         required: false
173       enabled:
174         type: boolean
175         required: false
176       parent_id:
177         type: string
178         required: false
179
180   # source: https://developer.openstack.org/api-ref/networking/v2/index.html
181
182   aria.openstack.datatypes.Subnet:
183     description: >-
184       openstack subnet args.
185     properties:
186       network_id:
187         type: string
188         required: false
189       ip_version:
190         type: integer
191         required: false
192         default: 4
193       cidr:
194         type: string
195         required: false
196       gateway_ip:
197         type: string
198         required: false
199       dns_nameservers:
200         type: list
201         entry_schema: string
202         required: false
203       enable_dhcp:
204         type: boolean
205         required: false
206       tenant_id:
207         type: string
208         required: false
209
210   aria.openstack.datatypes.Port:
211     description: >-
212       openstack port args
213     properties:
214       network_id:
215         type: string
216         required: false
217       admin_state_up:
218         type: boolean
219         required: false
220       status:
221         type: string
222         required: false
223       mac_address:
224         type: string
225         required: false
226       device_id:
227         type: string
228         required: false
229       device_owner:
230         type: string
231         required: false
232       tenant_id:
233         type: string
234         required: false
235
236   aria.openstack.datatypes.Network:
237     description: >-
238       openstack network args
239     properties:
240       admin_state_up:
241         type: boolean
242         required: false
243       status:
244         type: string
245         required: false
246       subnets:
247         type: list
248         entry_schema: string
249         required: false
250       shared:
251         type: boolean
252         required: false
253       tenant_id:
254         type: string
255         required: false
256
257   aria.openstack.datatypes.SecurityGroup:
258     description: >-
259       openstack network args
260     properties:
261       admin_state_up:
262         type: boolean
263         required: false
264       port_security_enabled:
265         type: boolean
266         required: false
267       project_id:
268         type: string
269         required: false
270       qos_policy_id:
271         type: string
272         required: false
273       segments:
274         type: list
275         entry_schema: string
276         required: false
277       shared:
278         type: boolean
279         required: false
280       vlan_transparent:
281         type: boolean
282         required: false
283       tenant_id:
284         type: string
285         required: false
286
287   aria.openstack.datatypes.Router:
288     description: >-
289       openstack network args
290     properties:
291       bgpvpn_id:
292         type: string
293         required: false
294       router_id:
295         type: string
296         required: false
297
298   aria.openstack.datatypes.FloatingIP:
299     description: >-
300       openstack network args
301     properties:
302       tenant_id:
303         type: string
304         required: false
305       project_id:
306         type: string
307         required: false
308       floating_network_id:
309         type: string
310         required: false
311       floating_network_name:
312         type: string
313         required: false
314       fixed_ip_address:
315         type: string
316         required: false
317       floating_ip_address:
318         type: string
319         required: false
320       port_id:
321         type: string
322         required: false
323       subnet_id:
324         type: string
325         required: false
326
327
328 interface_types:
329
330   aria.openstack.interfaces.validation:
331     derived_from: tosca.interfaces.Root
332     creation:
333       description: >-
334         creation operation for the openstack validation interface
335     deletion:
336       description: >-
337         deletion operation for the openstack validation interface
338
339
340 node_types:
341
342   aria.openstack.nodes.Server:
343     derived_from: tosca.nodes.Compute
344     properties:
345       server:
346         default: {}
347         type: aria.openstack.datatypes.Server
348         required: false
349       ip:
350         default:
351         type: string
352       os_family:
353         description: >-
354           Property specifying what type of operating system family
355           this compute node will run.
356         default: linux
357         type: string
358       use_external_resource:
359         type: boolean
360         default: false
361         description: >-
362           a boolean for setting whether to create the resource or use an existing one.
363           See the using existing resources section.
364       create_if_missing:
365         default: false
366         type: boolean
367         description: >-
368           If use_external_resource is ``true`` and the resource is missing,
369           create it instead of failing.
370       resource_id:
371         default: ''
372         type: string
373         description: >-
374           name to give to the new resource or the name or ID of an existing resource when the ``use_external_resource`` property is set to ``true`` (see the using existing resources section). Defaults to '' (empty string).
375       image:
376         default: ''
377         type: string
378         description: >-
379           The image for the server.
380           May receive either the ID or the name of the image.
381           note: This property is currently optional for backwards compatibility,
382           but will be modified to become a required property in future versions
383           (Default: '').
384       flavor:
385         default: ''
386         type: string
387         description: >-
388           The flavor for the server.
389           May receive either the ID or the name of the flavor.
390           note: This property is currently optional for backwards compatibility,
391           but will be modified to become a required property in future versions
392           (Default: '').
393       use_password:
394         default: false
395         type: boolean
396         description: >-
397           A boolean describing whether this server image supports user-password authentication.
398           Images that do should post the administrator user's password to the Openstack metadata service (e.g. via cloudbase);
399           The password would then be retrieved by the plugin,
400           decrypted using the server's keypair and then saved in the server's runtime properties.
401       management_network_name:
402         type: string
403         description: >-
404           The current implementation of the openstack plugin requires this field. The value of
405           this field should be set to the openstack name of a network this server is attached to.
406       openstack_config:
407         type: aria.openstack.datatypes.Config
408         required: false
409         description: >-
410             see Openstack Configuraion
411     interfaces:
412       Standard:
413         create:
414           implementation: cloudify-openstack-plugin > nova_plugin.server.create
415           inputs:
416             args:
417               required: false
418               default: {}
419               type: aria.openstack.datatypes.Server
420         start:
421           implementation: cloudify-openstack-plugin > nova_plugin.server.start
422           inputs:
423             start_retry_interval:
424               default: 30
425               type: integer
426             private_key_path:
427               type: string
428               default: ''
429               required: true
430         stop: cloudify-openstack-plugin > nova_plugin.server.stop
431         delete: cloudify-openstack-plugin > nova_plugin.server.delete
432       Validation:
433         type: aria.openstack.interfaces.validation
434         creation:
435           implementation: cloudify-openstack-plugin > nova_plugin.server.creation_validation
436           inputs:
437             args:
438               required: false
439               default: {}
440               type: aria.openstack.datatypes.Server
441
442     requirements:
443       - floating_ip:
444           capability: tosca.capabilities.Node
445           node: aria.openstack.nodes.FloatingIP
446           relationship: aria.openstack.server_connected_to_floating_ip
447           occurrences: [ 0, UNBOUNDED ]
448       - security_group:
449           capability: tosca.capabilities.Node
450           node: aria.openstack.nodes.SecurityGroup
451           relationship: aria.openstack.server_connected_to_security_group
452           occurrences: [ 0, UNBOUNDED ]
453       - port:
454           capability: tosca.capabilities.Node
455           node: aria.openstack.nodes.Port
456           relationship: aria.openstack.server_connected_to_port
457           occurrences: [ 0, UNBOUNDED ]
458       - key_pair:
459           capability: tosca.capabilities.Node
460           node: aria.openstack.nodes.KeyPair
461           relationship: aria.openstack.server_connected_to_keypair
462           occurrences: [ 0, UNBOUNDED ]
463     capabilities:
464       openstack_container:
465         type: Node
466
467   aria.openstack.nodes.WindowsServer:
468     derived_from: aria.openstack.nodes.Server
469     properties:
470       use_password:
471         default: true
472         type: boolean
473         description: >-
474           Default changed for derived type
475           because Windows instances need a password for agent installation
476       os_family:
477         default: windows
478         type: string
479         description: >-
480           (updates the os_family default as a convenience)
481
482   aria.openstack.nodes.KeyPair:
483     derived_from: tosca.nodes.Root
484     properties:
485       keypair:
486         default: {}
487         type: aria.openstack.datatypes.Keypair
488         required: false
489         description: >-
490           the path (on the machine the plugin is running on) to
491           where the private key should be stored. If
492           use_external_resource is set to "true", the existing
493           private key is expected to be at this path.
494       private_key_path:
495         description: >
496           the path (on the machine the plugin is running on) to
497           where the private key should be stored. If
498           use_external_resource is set to "true", the existing
499           private key is expected to be at this path.
500         type: string
501       use_external_resource:
502         type: boolean
503         default: false
504         description: >-
505           a boolean describing whether this resource should be
506           created or rather that it already exists on Openstack
507           and should be used as-is.
508       create_if_missing:
509         default: false
510         type: boolean
511         description: >-
512           If use_external_resource is ``true`` and the resource is missing,
513           create it instead of failing.
514       resource_id:
515         default: ''
516         type: string
517         description: >-
518           the name that will be given to the resource on Openstack (excluding optional prefix).
519           If not provided, a default name will be given instead.
520           If use_external_resource is set to "true", this exact
521           value (without any prefixes applied) will be looked for
522           as either the name or id of an existing keypair to be used.
523       openstack_config:
524         type: aria.openstack.datatypes.Config
525         required: false
526     interfaces:
527       Standard:
528         create:
529           implementation: cloudify-openstack-plugin > nova_plugin.keypair.create
530           inputs:
531             args:
532               required: false
533               default: {}
534               type: aria.openstack.datatypes.Keypair
535
536         delete: cloudify-openstack-plugin > nova_plugin.keypair.delete
537
538       Validation:
539         type: aria.openstack.interfaces.validation
540         creation: cloudify-openstack-plugin > nova_plugin.keypair.creation_validation
541
542     capabilities:
543       keypair:
544         type: tosca.capabilities.Node
545
546   aria.openstack.nodes.Subnet:
547     derived_from: tosca.nodes.Root
548     properties:
549       subnet:
550         type: aria.openstack.datatypes.Subnet
551         required: false
552         default:
553           cidr: 172.16.0.0/16
554       use_external_resource:
555         type: boolean
556         default: false
557         description: >-
558           a boolean for setting whether to create the resource or use an existing one.
559           See the using existing resources section.
560       create_if_missing:
561         default: false
562         type: boolean
563         description: >-
564           If use_external_resource is ``true`` and the resource is missing,
565           create it instead of failing.
566       resource_id:
567         default: ''
568         type: string
569         description: >-
570           name to give to the new resource or the name or ID of an existing resource when the ``use_external_resource`` property is set to ``true`` (see the using existing resources section). Defaults to '' (empty string).
571       openstack_config:
572         type: aria.openstack.datatypes.Config
573         required: false
574     interfaces:
575       Standard:
576         create:
577           implementation: cloudify-openstack-plugin > neutron_plugin.subnet.create
578           inputs:
579             args:
580               required: false
581               type: aria.openstack.datatypes.Subnet
582               default:
583                 cidr: 172.16.0.0/16
584         delete: cloudify-openstack-plugin > neutron_plugin.subnet.delete
585       Validation:
586         type: aria.openstack.interfaces.validation
587         creation:
588           implementation: cloudify-openstack-plugin > neutron_plugin.subnet.creation_validation
589           inputs:
590             args:
591               type: aria.openstack.datatypes.Subnet
592               required: false
593               default:
594                 cidr: 172.16.0.0/16
595
596     requirements:
597       - router:
598           capability: tosca.capabilities.Node
599           node: aria.openstack.nodes.Router
600           relationship: aria.openstack.subnet_connected_to_router
601           occurrences: [ 0, UNBOUNDED ]
602       - network:
603           capability: tosca.capabilities.Node
604           node: aria.openstack.nodes.Network
605     capabilities:
606       subnet:
607         type: tosca.capabilities.Node
608
609   aria.openstack.nodes.SecurityGroup:
610     derived_from: tosca.nodes.Root
611     properties:
612       security_group:
613         type: aria.openstack.datatypes.SecurityGroup
614         required: false
615         default: {}
616       description:
617         type: string
618         default: ''
619         description: >-
620           SecurityGroup description.
621       create_if_missing:
622         default: false
623         type: boolean
624         description: >-
625           If use_external_resource is ``true`` and the resource is missing,
626           create it instead of failing.
627       use_external_resource:
628         type: boolean
629         default: false
630         description: >-
631           a boolean for setting whether to create the resource or use an existing one.
632           See the using existing resources section.
633       resource_id:
634         default: ''
635         type: string
636         description: >-
637           name to give to the new resource or the name or ID of an existing resource when the ``use_external_resource`` property is set to ``true`` (see the using existing resources section). Defaults to '' (empty string).
638       openstack_config:
639         type: aria.openstack.datatypes.Config
640         required: false
641       rules:
642         default: []
643         type: list
644         entry_schema: aria.openstack.datatypes.Rules
645       disable_default_egress_rules:
646         default: false
647         type: boolean
648         description: >-
649           a flag for removing the default rules which https://wiki.openstack.org/wiki/Neutron/SecurityGroups#Behavior. If not set to `true`, these rules will remain, and exist alongside any additional rules passed using the `rules` property.
650     interfaces:
651       Standard:
652         create:
653           implementation: cloudify-openstack-plugin > neutron_plugin.security_group.create
654           inputs:
655             args:
656               type: aria.openstack.datatypes.SecurityGroup
657               required: false
658               default: {}
659         delete: cloudify-openstack-plugin > neutron_plugin.security_group.delete
660
661       Validation:
662         type: aria.openstack.interfaces.validation
663         creation: cloudify-openstack-plugin > neutron_plugin.security_group.creation_validation
664
665     capabilities:
666       security:
667         type: tosca.capabilities.Node
668
669   aria.openstack.nodes.Router:
670     derived_from: tosca.nodes.Root
671     properties:
672       router:
673         type: aria.openstack.datatypes.Router
674         required: false
675         default: {}
676       external_network:
677         default: ''
678         type: string
679         description: >-
680           An external network name or ID.
681           If given, the router will use this external network as a gateway.
682       use_external_resource:
683         type: boolean
684         default: false
685         description: >-
686           a boolean for setting whether to create the resource or use an existing one.
687           See the using existing resources section.
688       create_if_missing:
689         default: false
690         type: boolean
691         description: >-
692           If use_external_resource is ``true`` and the resource is missing,
693           create it instead of failing.
694       resource_id:
695         default: ''
696         description: >-
697           name to give to the new resource or the name or ID of an existing resource when the ``use_external_resource`` property is set to ``true`` (see the using existing resources section). Defaults to '' (empty string).
698         type: string
699       openstack_config:
700         type: aria.openstack.datatypes.Config
701         required: false
702
703     interfaces:
704       Standard:
705         create:
706           implementation: cloudify-openstack-plugin > neutron_plugin.router.create
707           inputs:
708             args:
709               default: {}
710               type: aria.openstack.datatypes.Router
711               required: false
712         delete: cloudify-openstack-plugin > neutron_plugin.router.delete
713       Validation:
714         type: aria.openstack.interfaces.validation
715         creation: cloudify-openstack-plugin > neutron_plugin.router.creation_validation
716
717     capabilities:
718       gateway:
719         type: tosca.capabilities.Node
720
721   aria.openstack.nodes.Port:
722     derived_from: tosca.nodes.Root
723     properties:
724       port:
725         type: aria.openstack.datatypes.Port
726         required: false
727         default: {}
728       fixed_ip:
729         default: ''
730         type: string
731         description: >-
732           may be used to request a specific fixed IP for the port.
733           If the IP is unavailable
734           (either already taken or does not belong to a subnet the port is on)
735           an error will be raised.
736       use_external_resource:
737         type: boolean
738         default: false
739         description: >-
740           a boolean for setting whether to create the resource or use an existing one.
741           See the using existing resources section.
742       create_if_missing:
743         default: false
744         type: boolean
745         description: >-
746           If use_external_resource is ``true`` and the resource is missing,
747           create it instead of failing.
748       resource_id:
749         default: ''
750         type: string
751         description: >-
752           name to give to the new resource or the name or ID of an existing resource when the ``use_external_resource`` property is set to ``true`` (see the using existing resources section). Defaults to '' (empty string).
753       openstack_config:
754         type: aria.openstack.datatypes.Config
755         required: false
756
757     interfaces:
758       Standard:
759         create:
760           implementation: cloudify-openstack-plugin > neutron_plugin.port.create
761           inputs:
762             args:
763               default: {}
764               type: aria.openstack.datatypes.Port
765               required: false
766
767         delete: cloudify-openstack-plugin > neutron_plugin.port.delete
768
769       Validation:
770         type: aria.openstack.interfaces.validation
771         creation: cloudify-openstack-plugin > neutron_plugin.port.creation_validation
772
773     requirements:
774       - security_group:
775           capability: tosca.capabilities.Node
776           node: aria.openstack.nodes.SecurityGroup
777           relationship: aria.openstack.port_connected_to_security_group
778           occurrences: [ 0, UNBOUNDED ]
779       - floating_ip:
780           capability: tosca.capabilities.Node
781           node: aria.openstack.nodes.FloatingIP
782           relationship: aria.openstack.port_connected_to_floating_ip
783           occurrences: [ 0, UNBOUNDED ]
784       - subnet:
785           capability: tosca.capabilities.Node
786           node: aria.openstack.nodes.Subnet
787           relationship: aria.openstack.port_connected_to_subnet
788       - network:
789           capability: tosca.capabilities.Node
790           node: aria.openstack.nodes.Network
791           occurrences: [ 0, UNBOUNDED ]
792     capabilities:
793       entry_point:
794         type: tosca.capabilities.Node
795
796   aria.openstack.nodes.Network:
797     derived_from: tosca.nodes.Root
798     properties:
799       network:
800         type: aria.openstack.datatypes.Network
801         required: false
802         default: {}
803       use_external_resource:
804         type: boolean
805         default: false
806         description: >-
807           a boolean for setting whether to create the resource or use an existing one.
808           See the using existing resources section.
809       create_if_missing:
810         default: false
811         type: boolean
812         description: >-
813           If use_external_resource is ``true`` and the resource is missing,
814           create it instead of failing.
815       resource_id:
816         default: ''
817         type: string
818         description: >-
819           name to give to the new resource or the name or ID of an existing resource when the ``use_external_resource`` property is set to ``true`` (see the using existing resources section). Defaults to '' (empty string).
820       openstack_config:
821         type: aria.openstack.datatypes.Config
822         required: false
823     interfaces:
824       Standard:
825         create:
826           implementation: cloudify-openstack-plugin > neutron_plugin.network.create
827           inputs:
828             args:
829               default: {}
830               type: aria.openstack.datatypes.Network
831               required: false
832
833         delete: cloudify-openstack-plugin > neutron_plugin.network.delete
834
835       Validation:
836         type: aria.openstack.interfaces.validation
837         creation: cloudify-openstack-plugin > neutron_plugin.network.creation_validation
838
839     capabilities:
840       address_space:
841         type: tosca.capabilities.Node
842
843   aria.openstack.nodes.FloatingIP:
844     derived_from: tosca.nodes.Root
845     attributes:
846       floating_ip_address:
847         type: string
848     properties:
849       floatingip:
850         type: aria.openstack.datatypes.FloatingIP
851         required: false
852         default: {}
853       use_external_resource:
854         type: boolean
855         default: false
856         description: >-
857           a boolean for setting whether to create the resource or use an existing one.
858           See the using existing resources section.
859       create_if_missing:
860         default: false
861         type: boolean
862         description: >-
863           If use_external_resource is ``true`` and the resource is missing,
864           create it instead of failing.
865       resource_id:
866         description: IP address of the floating IP
867         default: ''
868         type: string
869         description: >-
870           name to give to the new resource or the name or ID of an existing resource when the ``use_external_resource`` property is set to ``true`` (see the using existing resources section). Defaults to '' (empty string).
871       openstack_config:
872         type: aria.openstack.datatypes.Config
873         required: false
874
875     interfaces:
876       Standard:
877         create:
878           implementation: cloudify-openstack-plugin > neutron_plugin.floatingip.create
879           inputs:
880             args:
881               default: {}
882               type: aria.openstack.datatypes.FloatingIP
883               required: false
884
885         delete: cloudify-openstack-plugin > neutron_plugin.floatingip.delete
886
887       Validation:
888         type: aria.openstack.interfaces.validation
889         creation: cloudify-openstack-plugin > neutron_plugin.floatingip.creation_validation
890
891     capabilities:
892       address:
893         type: tosca.capabilities.Node
894
895   aria.openstack.nodes.Volume:
896     derived_from: tosca.nodes.Root
897     properties:
898       volume:
899         default: {}
900         type: aria.openstack.datatypes.Volume
901         description: >-
902           key-value volume configuration as described in http://developer.openstack.org/api-ref-blockstorage-v1.html#volumes-v1. (**DEPRECATED - Use the `args` input in create operation instead**)
903       use_external_resource:
904         type: boolean
905         default: false
906         description: >-
907           a boolean for setting whether to create the resource or use an existing one.
908           See the using existing resources section.
909       create_if_missing:
910         default: false
911         type: boolean
912         description: >-
913           If use_external_resource is ``true`` and the resource is missing,
914           create it instead of failing.
915       resource_id:
916         default:
917         type: string
918         description: >-
919           name to give to the new resource or the name or ID of an existing resource when the ``use_external_resource`` property is set to ``true`` (see the using existing resources section). Defaults to '' (empty string).
920       device_name:
921         default: auto
922         type: string
923         description: >-
924           The device name this volume will be attached to.
925           Default value is *auto*,
926           which means openstack will auto-assign a device.
927           Note that if you do explicitly set a value,
928           this value may not be the actual device name assigned.
929           Sometimes the device requested will not be available and openstack will assign it to a different device,
930           this is why we recommend using *auto*.
931       openstack_config:
932         type: aria.openstack.datatypes.Config
933         required: false
934       boot:
935         type: boolean
936         default: false
937         description: >-
938           If a Server instance is connected to this Volume by a relationship,
939           this volume will be used as the boot volume for that Server.
940     interfaces:
941       Standard:
942         create:
943           implementation: cloudify-openstack-plugin > cinder_plugin.volume.create
944           inputs:
945             args:
946               default: {}
947               type: aria.openstack.datatypes.Volume
948               required: false
949
950             status_attempts:
951               description: >-
952                 Number of times to check for the creation's status before failing
953               type: integer
954               default: 20
955             status_timeout:
956               description: >-
957                 Interval (in seconds) between subsequent inquiries of the creation's
958                 status
959               type: integer
960               default: 15
961         delete: cloudify-openstack-plugin > cinder_plugin.volume.delete
962
963       Validation:
964         type: aria.openstack.interfaces.validation
965         creation: cloudify-openstack-plugin > cinder_plugin.volume.creation_validation
966
967     requirements:
968       - server:
969           capability: tosca.capabilities.Node
970           node: aria.openstack.nodes.Server
971           relationship: aria.openstack.volume_attached_to_server
972
973   aria.openstack.nodes.Image:
974     derived_from: tosca.nodes.Root
975     properties:
976       image:
977         description: >-
978           Required parameters are (container_format, disk_format). Accepted
979           types are available on
980           http://docs.openstack.org/developer/glance/formats.html
981           To create an image from the local file its path should be added
982           in data parameter.
983         default: {}
984         type: map
985         entry_schema: string
986       image_url:
987         default: ''
988         type: string
989         description: >-
990           The openstack resource URL for the image.
991       use_external_resource:
992         default: false
993         type: boolean
994         description: >-
995           a boolean for setting whether to create the resource or use an existing one.
996           See the using existing resources section.
997       create_if_missing:
998         default: false
999         type: boolean
1000         description: >-
1001           If use_external_resource is ``true`` and the resource is missing,
1002           create it instead of failing.
1003       resource_id:
1004         default: ''
1005         type: string
1006         description: >-
1007           name to give to the new resource or the name or ID of an existing resource when the ``use_external_resource`` property is set to ``true`` (see the using existing resources section). Defaults to '' (empty string).
1008       openstack_config:
1009         type: aria.openstack.datatypes.Config
1010         required: false
1011     interfaces:
1012       Standard:
1013         create: cloudify-openstack-plugin > glance_plugin.image.create
1014
1015         start:
1016           implementation: cloudify-openstack-plugin > glance_plugin.image.start
1017           inputs:
1018             start_retry_interval:
1019               default: 30
1020               type: integer
1021
1022         delete: cloudify-openstack-plugin > glance_plugin.image.delete
1023
1024       Validation:
1025         type: aria.openstack.interfaces.validation
1026         creation: cloudify-openstack-plugin > glance_plugin.image.creation_validation
1027
1028   aria.openstack.nodes.Project:
1029     derived_from: tosca.nodes.Root
1030     properties:
1031       project:
1032         default: {}
1033         type: aria.openstack.datatypes.Project
1034         description: >-
1035           key-value project configuration.
1036       users:
1037         default: []
1038         type: list
1039         entry_schema: string
1040         description: >-
1041           List of users assigned to this project in the following format:
1042             { name: string, roles: [string] }
1043       quota:
1044         default: {}
1045         type: map
1046         entry_schema: string
1047         description: |
1048           A dictionary mapping service names to quota definitions for a proejct
1049
1050           e.g::
1051
1052             quota:
1053               neutron: <quota>
1054               nova: <quota>
1055       use_external_resource:
1056         default: false
1057         type: boolean
1058         description: >-
1059           a boolean for setting whether to create the resource or use an existing one.
1060           See the using existing resources section.
1061       create_if_missing:
1062         default: false
1063         type: boolean
1064         description: >-
1065           If use_external_resource is ``true`` and the resource is missing,
1066           create it instead of failing.
1067       resource_id:
1068         default: ''
1069         type: string
1070         description: >-
1071           name to give to the new resource or the name or ID of an existing resource when the ``use_external_resource`` property is set to ``true`` (see the using existing resources section). Defaults to '' (empty string).
1072       openstack_config:
1073         type: aria.openstack.datatypes.Config
1074         required: false
1075     interfaces:
1076       Standard:
1077         create: openstack.keystone_plugin.project.create
1078         start: openstack.keystone_plugin.project.start
1079         delete: openstack.keystone_plugin.project.delete
1080       Validation:
1081         type: aria.openstack.interfaces.validation
1082         creation: openstack.keystone_plugin.project.creation_validation
1083
1084
1085 relationship_types:
1086
1087   aria.openstack.port_connected_to_security_group:
1088     derived_from: ConnectsTo
1089     interfaces:
1090       Configure:
1091         add_source: cloudify-openstack-plugin > neutron_plugin.port.connect_security_group
1092
1093   aria.openstack.subnet_connected_to_router:
1094     derived_from: ConnectsTo
1095     interfaces:
1096       Configure:
1097         add_target: cloudify-openstack-plugin > neutron_plugin.router.connect_subnet
1098         remove_target: cloudify-openstack-plugin > neutron_plugin.router.disconnect_subnet
1099
1100   aria.openstack.server_connected_to_floating_ip:
1101     derived_from: ConnectsTo
1102     interfaces:
1103       Configure:
1104         add_source:
1105           implementation: cloudify-openstack-plugin > nova_plugin.server.connect_floatingip
1106           inputs:
1107             fixed_ip:
1108               description: >
1109                 The fixed IP to be associated with the floating IP.
1110                 If omitted, Openstack will choose which port to associate.
1111               type: string
1112               default: ''
1113         remove_source: cloudify-openstack-plugin > nova_plugin.server.disconnect_floatingip
1114
1115   aria.openstack.port_connected_to_floating_ip:
1116     derived_from: ConnectsTo
1117     interfaces:
1118       Configure:
1119         add_source: cloudify-openstack-plugin > neutron_plugin.floatingip.connect_port
1120         remove_source: cloudify-openstack-plugin > neutron_plugin.floatingip.disconnect_port
1121
1122   aria.openstack.server_connected_to_security_group:
1123     derived_from: ConnectsTo
1124     interfaces:
1125       Configure:
1126         add_source: cloudify-openstack-plugin > nova_plugin.server.connect_security_group
1127         remove_source: cloudify-openstack-plugin > nova_plugin.server.disconnect_security_group
1128
1129   aria.openstack.server_connected_to_port:
1130     derived_from: ConnectsTo
1131     interfaces:
1132       Configure:
1133         remove_source: cloudify-openstack-plugin > neutron_plugin.port.detach
1134
1135   aria.openstack.server_connected_to_keypair:
1136     derived_from: ConnectsTo
1137
1138   aria.openstack.port_connected_to_subnet:
1139     derived_from: ConnectsTo
1140
1141   aria.openstack.volume_attached_to_server:
1142     derived_from: ConnectsTo
1143     interfaces:
1144       Configure:
1145         add_target:
1146           implementation: cloudify-openstack-plugin > nova_plugin.server.attach_volume
1147           inputs:
1148
1149             status_attempts:
1150               description: >
1151                 Number of times to check for the attachment's status before failing
1152               type: integer
1153               default: 10
1154             status_timeout:
1155               description: >
1156                 Interval (in seconds) between subsequent inquiries of the attachment's
1157                 status
1158               type: integer
1159               default: 2
1160         remove_target:
1161           implementation: cloudify-openstack-plugin > nova_plugin.server.detach_volume
1162           inputs:
1163
1164             status_attempts:
1165               description: >
1166                 Number of times to check for the detachment's status before failing
1167               type: integer
1168               default: 10
1169             status_timeout:
1170               description: >
1171                 Interval (in seconds) between subsequent inquiries of the detachment's
1172                 status
1173               type: integer
1174               default: 2