vFW and vDNS support added to azure-plugin
[multicloud/azure.git] / azure / aria / aria-extension-cloudify / plugins / aws / 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
17 tosca_definitions_version: tosca_simple_yaml_1_0
18
19 topology_template:
20   policies:
21     cloudify-aws-plugin:
22       description: >-
23         aws plugin executes operations.
24       type: aria.Plugin
25       properties:
26         version: 1.4.10
27
28
29 data_types:
30   aria.aws.datatypes.Config:
31     properties:
32     # Partially based on: http://docs.aws.amazon.com/cli/latest/userguide/cli-chap-getting-started.html
33       aws_access_key_id:
34         description: >
35           The ID of your AWS ACCESS KEY.
36         type: string
37         required: false
38       aws_secret_access_key:
39         description: >
40           The ID of your AWS SECRET KEY.
41         type: string
42         required: false
43       region:
44         description: >
45           This is for backward compatibility with version 1.2.
46         type: string
47         required: false
48       ec2_region_name:
49         description: >
50           The EC2 Region RegionName, such as us-east-1.
51           (Not us-east-1b, which is an availability zone, or US East, which is a Region.)
52         type: string
53         required: false
54       ec2_region_endpoint:
55         description: >
56           The endpoint for the given region.
57         type: string
58         required: false
59       elb_region_name:
60         description: >
61           The ELB Region RegionName, such as us-east-1.
62           (Not us-east-1b, which is an availability zone, or US East, which is a Region.)
63           Required for aws_config for node type aria.aws.nodes.ElasticLoadBalancer.
64         type: string
65         required: false
66       elb_region_endpoint:
67         description: >
68           The endpoint for the given ELB region.
69         type: string
70         required: false
71
72   aria.aws.datatypes.Route:
73     properties:
74     # Based on: http://docs.aws.amazon.com/cli/latest/reference/ec2/create-route.html
75       route_table_id:
76         description: >
77           In most cases, leave this blank, because the route table is implicit from the node or
78           relationship that is creating the route.
79         type: string
80         required: false
81       destination_cidr_block:
82         description: >
83           This is the cidr_block that you want to route traffic for to the device.
84         type: string
85       gateway_id:
86         description: >
87           The id of the gateway (either internet gateway, customer gateway, or vpn gateway).
88         type: string
89         required: false
90       instance_id:
91         description: >
92           The id of the instance (if you are routing to a NAT instance).
93         type: string
94         required: false
95       interface_id:
96         description: >
97           The id of an attached network interface.
98         type: string
99         required: false
100       vpc_peering_connection_id:
101         description: >
102           The id of a VPC peering connection.
103         type: string
104         required: false
105
106   aria.aws.datatypes.NetworkAclEntry:
107     # Based on: http://docs.aws.amazon.com/cli/latest/reference/ec2/create-network-acl-entry.html
108     properties:
109       rule_number:
110         description: >
111           Some number to identify this rule. Cannot duplicate an existing rule number.
112         type: integer
113       protocol:
114         description: >
115           The Assigned Internet Protocol Number for the protocol (e.g. 1 is ICMP, 6 is TCP, and 17 is UDP).
116         type: integer
117       rule_action:
118         description: Either ALLOW or DENY.
119         type: string
120         constraints:
121           - valid_values: [ ALLOW, DENY ]
122       cidr_block:
123         description: >
124           The cidr_block.
125         type: string
126       egress:
127         description: >
128           Whether the rule applies to egress traffic from the subnet.
129         type: boolean
130         default: false
131         required: false
132       icmp_type:
133         description: >
134           If in protocol you chose 1 for ICMP, the ICMP type, -1 for all ICMP types.
135         type: integer
136         required: false
137       icmp_code:
138         description: >
139           If in protocol you chose 1 for ICMP, the ICMP code, -1 for all ICMP codes.
140         type: integer
141         required: false
142       port_range_from:
143         description: >
144           The first port in the range.
145         type: integer
146         constraints:
147           - in_range: [ 1, 65535 ]
148       port_range_to:
149         description: >
150           The last port in the range.
151         type: integer
152         constraints:
153           - in_range: [ 1, 65535 ]
154
155   aria.aws.datatypes.SecurityGroupRule:
156     # Based on: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-security-group-rule.html
157     properties:
158       egress:
159         description: >
160           Whether the rule applies to egress traffic.
161         type: boolean
162         default: false
163         required: false
164       ip_protocol:
165         description: >
166           The Assigned Internet Protocol Number for the protocol.
167         type: string
168         required: false
169       from_port:
170         description: >
171           The first port in the range.
172         type: integer
173         required: false
174         constraints:
175           - in_range: [ 1, 65535 ]
176       to_port:
177         description: >
178           The last port in the range.
179         type: integer
180         required: false
181         constraints:
182           - in_range: [ 1, 65535 ]
183       cidr_ip:
184         description: >
185           The cidr_block.
186         type: string
187         required: false
188       src_group_id:
189         description: >
190           The security group ID.
191         type: string
192         required: false
193
194   aria.aws.datatypes.BlockDeviceMapping:
195     derived_from: tosca.datatypes.Root
196     properties:
197     # Based on: http://docs.aws.amazon.com/cli/latest/reference/ec2/run-instances.html#options
198       virtual_name:
199         type: string
200         required: false
201       device_name:
202         type: string
203         required: false
204       ebs:
205         type: aria.aws.datatypes.Ebs
206         required: false
207       no_device:
208         type: string
209         required: false
210
211   aria.aws.datatypes.Ebs:
212     derived_from: tosca.datatypes.Root
213     properties:
214     # Based on: http://docs.aws.amazon.com/cli/latest/reference/ec2/run-instances.html#options
215       snapshot_id:
216         type: string
217         required: false
218       volume_size:
219         type: integer
220         required: false
221       delete_on_termination:
222         type: boolean
223         required: false
224       volume_type:
225         type: string
226         required: false
227         constraints:
228           - valid_values: [ standard, io1, gp2, sc1, st1]
229         required: false
230       iops:
231         type: integer
232         required: false
233       encrypted:
234         type: boolean
235         required: false
236
237   aria.aws.datatypes.NetworkInterfacePrivateIPAddress:
238   # Based on: http://docs.aws.amazon.com/cli/latest/reference/ec2/create-network-interface.html
239   # Specifically, look under --private-ip-addresses, and notice the differences from
240   # --private-ip-address.
241     derived_from: tosca.datatypes.Root
242     properties:
243       private_ip_address:
244         type: string
245         required: false
246       primary:
247         type: boolean
248         required: false
249
250   aria.aws.datatypes.NetworkInterface:
251     # Based on: http://docs.aws.amazon.com/cli/latest/reference/ec2/create-network-interface.html
252     derived_from: tosca.datatypes.Root
253     properties:
254       description:
255         type: string
256         required: false
257       dry_run:
258         type: boolean
259         required: false
260       groups:
261         type: list
262         entry_schema:
263           type: string
264         required: false
265       ipv6_address_count:
266         type: integer
267         required: false
268       ipv6_addresses:
269         type: map
270         entry_schema:
271           type: string
272         required: false
273       private_ip_address:
274         type: string
275         required: false
276       private_ip_addresses:
277         type: map
278         entry_schema:
279           type: aria.aws.datatypes.NetworkInterfacePrivateIPAddress
280         required: false
281       secondary_private_ip_address_count:
282         type: integer
283         required: false
284       subnet_id:
285         type: string
286         required: false
287       cli_input_json:
288         type: string
289         required: false
290       generate_cli_skeleton:
291         type: string
292         required: false
293
294   aria.aws.datatypes.RunInstancesParameters:
295     derived_from: tosca.datatypes.Root
296     properties:
297       # These properties were derived from the parameters of boto.e2c.connection.run_instances:
298       # https://github.com/boto/boto/blob/master/boto/ec2/connection.py#L738
299       # In the corresponding aws documentation,
300       # http://docs.aws.amazon.com/cli/latest/reference/ec2/run-instances.html,
301       # The properties 'placement', 'placement_group' and 'tenancy' of the boto api are part of a
302       # structure called 'placement', in addition to 'affinity' and 'host_id' which do not exist
303       # in the boto api.
304       image_id:
305         type: string
306         required: false
307       min_count:
308         type: integer
309         required: false
310       max_count:
311         type: integer
312         required: false
313       key_name:
314         type: string
315         required: false
316       security_groups:
317         type: list
318         entry_schema:
319           type: string
320         required: false
321       user_data:
322         type: string
323         required: false
324       addressing_type:
325         type: string
326         required: false
327       instance_type:
328         type: string
329         required: false
330       placement:
331         type: string
332         required: false
333       kernel_id:
334         type: string
335         required: false
336       ramdisk_id:
337         type: string
338         required: false
339       monitoring_enabled:
340         type: boolean
341         required: false
342       subnet_id:
343         type: string
344         required: false
345       block_device_map:
346         type: list
347         entry_schema:
348           type: aria.aws.datatypes.BlockDeviceMapping
349         required: false
350       disable_api_termination:
351         type: boolean
352         required: false
353       instance_initiated_shutdown_behavior:
354         type: string
355         constraints:
356           - valid_values: [ stop, terminate ]
357         required: false
358       private_id_address:
359         type: string
360         required: false
361       placement_group:
362         type: string
363         required: false
364       client_token:
365         type: string
366         required: false
367       security_group_ids:
368         type: list
369         entry_schema:
370           type: string
371         required: false
372       additional_info:
373         type: string
374         required: false
375       instance_profile_name:
376         type: string
377         required: false
378       instance_profile_arn:
379         type: string
380         required: false
381       tenancy:
382         type: string
383         required: false
384         constraints:
385           - valid_values: [ default, dedicated]
386       ebs_optimized:
387         type: boolean
388         required: false
389       network_interfaces:
390         type: list
391         entry_schema:
392           type: aria.aws.datatypes.NetworkInterface
393         required: false
394       dry_run:
395         type: boolean
396         required: false
397
398   aria.aws.datatypes.LoadBalancerListener:
399   # According to the description of the 'listeners' property of aria.aws.node.LoadBalancer
400     derived_from: tosca.datatypes.Root
401     properties:
402       LoadBalancerPortNumber:
403         type: integer
404         constraints:
405           - in_range: [ 1, 65535 ]
406       InstancePortNumber:
407         type: integer
408         constraints:
409           - in_range: [ 1, 65535 ]
410       protocol:
411         type: string
412         constraints:
413           - valid_values: [ tcp, ssl, http, https ]
414       SSLCertificateID:
415         type: string
416         required: false
417
418   aria.aws.datatypes.LoadBalancerComplexListener:
419     # According to the description of the 'complex_listeners' property of aria.aws.node.LoadBalancer
420     derived_from: aria.aws.datatypes.LoadBalancerListener
421     properties:
422       InstanceProtocol:
423         type: integer
424         constraints:
425           - in_range: [ 1, 65535 ]
426
427   aria.aws.datatypes.LoadBalancerHealthCheck:
428     # Based on: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-elb-health-check.html
429     derived_from: tosca.datatypes.Root
430     properties:
431       healthy_threshold:
432         type: string
433         required: false
434       interval:
435         type: string
436         required: false
437       target:
438         type: string
439         required: false
440       timeout:
441         type: string
442         required: false
443       unhealthy_threshold:
444         type: string
445         required: false
446
447   aria.aws.datatypes.NetworkInterfaceCreateParameters:
448     # These properties were derived from the parameters of boto.e2c.connection.create_network_interface
449     # https://github.com/boto/boto/blob/master/boto/ec2/connection.py#L4286, that are based on:
450     # http://docs.aws.amazon.com/cli/latest/reference/ec2/create-network-interface.html
451     derived_from: tosca.datatypes.Root
452     properties:
453       subnet_id:
454         type: string
455         required: false
456       private_ip_address:
457         type: string
458         required: false
459       description:
460         type: string
461         required: false
462       groups:
463         type: list
464         entry_schema:
465           type: string
466         required: false
467       dry_run:
468         type: boolean
469         required: false
470
471   aria.aws.datatypes.VolumeCreateParameters:
472     # Based on http://docs.aws.amazon.com/cli/latest/reference/ec2/create-volume.html#synopsis
473     derived_from: tosca.datatypes.Root
474     properties:
475       size:
476         type: integer
477         required: false
478       zone:
479         type: string
480         required: false
481       snapshot:
482         type: string
483         required: false
484       volume_type:
485         type: string
486         required: false
487       iops:
488         type: integer
489         required: false
490       encrypted:
491         type: boolean
492         required: false
493       kms_key_id:
494         type: string
495         required: false
496       dry_run:
497         type: boolean
498         required: false
499
500   aria.aws.datatypes.VolumeDeleteParameters:
501     # Based on: http://docs.aws.amazon.com/cli/latest/reference/ec2/delete-volume.html
502     derived_from: tosca.datatypes.Root
503     properties:
504       volume_id:
505         type: string
506         required: false
507       dry_run:
508         type: boolean
509         required: false
510
511 interface_types:
512   aria.aws.interfaces.Validation:
513     derived_from: tosca.interfaces.Root
514     creation:
515       description: >
516         creation operation for the aws validation interface
517   aria.aws.interfaces.Snapshot:
518     derived_from: tosca.interfaces.Root
519     create:
520       description: >
521         creation operation for the aws snapshot interface
522
523
524 node_types:
525   aria.aws.nodes.Instance:
526     derived_from: tosca.nodes.Compute
527     properties:
528       use_external_resource:
529         description: >
530           Indicate whether the resource exists or it should be created,
531           true if you are bringing an existing resource, false if you want to create it.
532         type: boolean
533         default: false
534       resource_id:
535         description: >
536           The AWS resource ID of the external resource, if use_external_resource is true.
537           Otherwise it is an empty string.
538         type: string
539         default: ''
540       tags:
541         description: >
542           A dictionary of key/value pairs of tags you want to add.
543         type: map
544         default: {}
545         entry_schema:
546           type: string  # http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/Using_Tags.html
547       name:
548         description: >
549           Optional field if you want to add a specific name to the instance.
550         type: string
551         default: ''
552         required: false
553       image_id:
554         description: >
555           The ID of the AMI image in your Amazon account.
556         type: string
557       instance_type:
558         description: >
559           The instance's size.
560         type: string
561       use_password:
562         type: boolean
563         default: false
564       parameters:
565         description: >
566           The key value pair parameters allowed by Amazon API to the
567           ec2.connection.EC2Connection.run_instances command. It should be mentioned that
568           although this field is listed as optional, A non-trivial use case requires
569           that both the key_name parameter and the security_groups parameter be specified.
570         type: aria.aws.datatypes.RunInstancesParameters
571         default: {}
572         required: false
573       aws_config:
574         description: >
575           A dictionary of values to pass to authenticate with the AWS API.
576         type: aria.aws.datatypes.Config
577         required: false
578     attributes:
579       public_ip_address:
580         type: string
581     interfaces:
582       Standard:
583         create:
584           implementation: cloudify-aws-plugin > cloudify_aws.ec2.instance.create
585         start:
586           implementation: cloudify-aws-plugin > cloudify_aws.ec2.instance.start
587           inputs:
588             start_retry_interval:
589               description: Polling interval until the server is active in seconds
590               type: integer
591               default: 30
592             private_key_path:
593               description: >
594                 Path to private key which matches the server's
595                 public key. Will be used to decrypt password in case
596                 the "use_password" property is set to "true"
597               type: string
598               default: ''
599         stop:
600           implementation: cloudify-aws-plugin > cloudify_aws.ec2.instance.stop
601         delete:
602           implementation: cloudify-aws-plugin > cloudify_aws.ec2.instance.delete
603       Validation:
604         type: aria.aws.interfaces.Validation
605         creation:
606           implementation: cloudify-aws-plugin > cloudify_aws.ec2.instance.creation_validation
607     requirements:
608       - elastic_ip:
609           capability: tosca.capabilities.Node
610           node: aria.aws.nodes.ElasticIP
611           relationship: aria.aws.relationships.InstanceConnectedToElasticIP
612           occurrences: [ 0, UNBOUNDED ]
613       - keypair:
614           capability: tosca.capabilities.Node
615           node: aria.aws.nodes.KeyPair
616           relationship: aria.aws.relationships.InstanceConnectedToKeypair
617           occurrences: [ 0, UNBOUNDED ]
618       - security_group:
619           capability: tosca.capabilities.Node
620           node: aria.aws.nodes.SecurityGroup
621           relationship: aria.aws.relationships.instance_connected_to_security_group
622           occurrences: [ 0, UNBOUNDED ]
623       - load_balancer:
624           capability: tosca.capabilities.Node
625           node: aria.aws.nodes.ElasticLoadBalancer
626           relationship: aria.aws.relationships.InstanceConnectedToLoadBalancer
627           occurrences: [ 0, UNBOUNDED ]
628       - subnet_to_be_contained_in:
629           capability: tosca.capabilities.Node
630           node: aria.aws.nodes.Subnet
631           relationship: aria.aws.relationships.InstanceContainedInSubnet
632           occurrences: [ 0, UNBOUNDED ]
633       - subnet_to_connect_to:
634           capability: tosca.capabilities.Node
635           node: aria.aws.nodes.Subnet
636           relationship: aria.aws.relationships.InstanceConnectedToSubnet
637           occurrences: [ 0, UNBOUNDED ]
638       - eni:
639           capability: tosca.capabilities.Root
640           node: aria.aws.nodes.Interface
641           relationship: aria.aws.relationships.InstanceConnectedToENI
642           occurrences: [ 0, UNBOUNDED ]
643
644   aria.aws.nodes.WindowsInstance:
645     derived_from: aria.aws.nodes.Instance
646     properties:
647       use_password:
648         type: boolean
649         default: true
650       os_family:
651         type: string
652         default: windows
653
654   aria.aws.nodes.ElasticIP:
655     derived_from: tosca.nodes.Root
656     properties:
657       use_external_resource:
658         description: >
659           Indicate whether the resource exists or it should be created,
660           true if you are bringing an existing resource, false if you want to create it.
661         type: boolean
662         default: false
663       resource_id:
664         description: >
665           The AWS resource ID of the external resource, if use_external_resource is true.
666           Otherwise it is an empty string.
667         type: string
668         default: ''
669       tags:
670         description: >
671           A dictionary of key/value pairs of tags you want to add.
672         type: map
673         default: {}
674         entry_schema:
675           type: string  # http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/Using_Tags.html
676       domain:
677         description: >
678           Set this to 'vpc' if you want to use VPC.
679         type: string
680         required: false
681       aws_config:
682         description: >
683           A dictionary of values to pass to authenticate with the AWS API.
684         type: aria.aws.datatypes.Config
685         required: false
686     interfaces:
687       Standard:
688         create:
689           implementation: cloudify-aws-plugin > cloudify_aws.ec2.elasticip.create
690         delete:
691           implementation: cloudify-aws-plugin > cloudify_aws.ec2.elasticip.delete
692       Validation:
693         type: aria.aws.interfaces.Validation
694         creation:
695           implementation: cloudify-aws-plugin > cloudify_aws.ec2.elasticip.creation_validation
696
697   aria.aws.nodes.SecurityGroup:
698     derived_from: tosca.nodes.Root
699     properties:
700       use_external_resource:
701         description: >
702           Indicate whether the resource exists or it should be created,
703           true if you are bringing an existing resource, false if you want to create it.
704         type: boolean
705         default: false
706       resource_id:
707         description: >
708           The AWS resource ID of the external resource, if use_external_resource is true.
709           Otherwise it is an empty string.
710         type: string
711         default: ''
712       tags:
713         description: >
714           A dictionary of key/value pairs of tags you want to add.
715         type: map
716         default: {}
717         entry_schema:
718           type: string  # http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/Using_Tags.html
719       description:
720         description: >
721           The description field that is required for every security group that you create
722           in Amazon.
723         type: string
724       rules:
725         description: >
726           You need to pass in either src_group_id (security group ID) OR cidr_ip,
727           and then the following three: ip_protocol, from_port and to_port.
728         type: list
729         entry_schema:
730           type: aria.aws.datatypes.SecurityGroupRule
731         default: []
732       aws_config:
733         description: >
734           A dictionary of values to pass to authenticate with the AWS API.
735         type: aria.aws.datatypes.Config
736         required: false
737     interfaces:
738       Standard:
739         create:
740           implementation: cloudify-aws-plugin > cloudify_aws.ec2.securitygroup.create
741         start:
742           implementation: cloudify-aws-plugin > cloudify_aws.ec2.securitygroup.start
743         delete:
744           implementation: cloudify-aws-plugin > cloudify_aws.ec2.securitygroup.delete
745       Validation:
746         type: aria.aws.interfaces.Validation
747         creation:
748           implementation: cloudify-aws-plugin > cloudify_aws.ec2.securitygroup.creation_validation
749     requirements:
750       - vpc:
751           capability: tosca.capabilities.Node
752           node: aria.aws.nodes.VPC
753           relationship: aria.aws.relationships.SecurityGroupContainedInVPC
754           occurrences: [ 0, UNBOUNDED ]
755       - security_group_rule:
756           capability: tosca.capabilities.Node
757           node: aria.aws.nodes.SecurityGroupRule
758           relationship: aria.aws.relationships.SecurityGroupUsesRule
759           occurrences: [ 0, UNBOUNDED ]
760
761   aria.aws.nodes.Volume:
762     derived_from: tosca.nodes.Root
763     properties:
764       use_external_resource:
765         description: >
766           Indicate whether the resource exists or it should be created,
767           true if you are bringing an existing resource, false if you want to create it.
768         type: boolean
769         default: false
770       resource_id:
771         description: >
772           The AWS resource ID of the external resource, if use_external_resource is true.
773           Otherwise it is an empty string.
774         type: string
775         default: ''
776       tags:
777         description: >
778           A dictionary of key/value pairs of tags you want to add.
779         type: map
780         default: {}
781         entry_schema:
782           type: string  # http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/Using_Tags.html
783       size:
784         description: >
785           The size of the volume in GB.
786         type: string
787       zone:
788         description: >
789           A string representing the AWS availability zone.
790         type: string
791       device:
792         description: >
793           The device on the instance
794         type: string
795       aws_config:
796         description: >
797           A dictionary of values to pass to authenticate with the AWS API.
798         type: aria.aws.datatypes.Config
799         required: false
800     interfaces:
801       Standard:
802         create:
803           implementation: cloudify-aws-plugin > cloudify_aws.ec2.ebs.create
804           inputs:
805             args:
806               type: map
807               entry_schema:
808                 type: aria.aws.datatypes.VolumeCreateParameters
809               default: {}
810         start:
811           implementation: cloudify-aws-plugin > cloudify_aws.ec2.ebs.start
812         delete:
813           implementation: cloudify-aws-plugin > cloudify_aws.ec2.ebs.delete
814           inputs:
815             args:
816               type: map
817               entry_schema:
818                 type: aria.aws.datatypes.VolumeDeleteParameters
819               default: {}
820       Validation:
821         type: aria.aws.interfaces.Validation
822         creation:
823           implementation: cloudify-aws-plugin > cloudify_aws.ec2.ebs.creation_validation
824       Snapshot:
825         type: aria.aws.interfaces.Snapshot
826         create:
827           implementation: cloudify-aws-plugin > cloudify_aws.ec2.ebs.create_snapshot
828           inputs:
829             args:
830               type: map
831               entry_schema:
832                 type: string
833               default: {}
834     requirements:
835       - instance:
836           capability: tosca.capabilities.Node
837           node: aria.aws.nodes.Instance
838           relationship: aria.aws.relationships.VolumeConnectedToInstance
839           occurrences: [ 0, UNBOUNDED ]
840
841   aria.aws.nodes.KeyPair:
842     derived_from: tosca.nodes.Root
843     properties:
844       use_external_resource:
845         description: >
846           Indicate whether the resource exists or if the resource should be created.
847         type: boolean
848         default: false
849       resource_id:
850         description: >
851           The AWS resource ID of the external resource, if use_external_resource is true.
852           If use_external_resource is false, this will be the keys name and ID in AWS.
853           If left blank, the plugin will set a name for you.
854           Otherwise it is an empty string.
855         type: string
856         default: ''
857       tags:
858         description: >
859           A dictionary of key/value pairs of tags you want to add.
860         type: map
861         default: {}
862         entry_schema:
863           type: string  # http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/Using_Tags.html
864       private_key_path:
865         description: >
866           The path where the key should be saved on the machine. If this is a bootstrap
867           process, this refers to the local computer. If this will run on the manager,
868           this will be saved on the manager.
869         type: string
870       aws_config:
871         description: >
872           A dictionary of values to pass to authenticate with the AWS API.
873         type: aria.aws.datatypes.Config
874         required: false
875     attributes:
876       aws_resource_id:
877         type: string
878     interfaces:
879       Standard:
880         create:
881           implementation: cloudify-aws-plugin > cloudify_aws.ec2.keypair.create
882         delete:
883           implementation: cloudify-aws-plugin > cloudify_aws.ec2.keypair.delete
884       Validation:
885         type: aria.aws.interfaces.Validation
886         creation:
887           implementation: cloudify-aws-plugin > cloudify_aws.ec2.keypair.creation_validation
888
889   aria.aws.nodes.ElasticLoadBalancer:
890     derived_from: tosca.nodes.LoadBalancer
891     properties:
892       use_external_resource:
893         description: >
894           Indicate whether the resource exists or it should be created,
895           true if you are bringing an existing resource, false if you want to create it.
896         type: boolean
897         default: false
898       resource_id:
899         description: >
900           The AWS resource ID of the external resource, if use_external_resource is true.
901           Otherwise it is an empty string.
902         type: string
903         default: ''
904       tags:
905         description: >
906           A dictionary of key/value pairs of tags you want to add.
907         type: map
908         default: {}
909         entry_schema:
910           type: string  # http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/Using_Tags.html
911       elb_name:
912         description: >
913           The mnemonic name associated with the new load balancer
914         type: string
915       zones:
916         description: >
917           zones (List of strings) - The names of the availability zone(s) to add.
918           example: ['us-east-1b','us-east-1b']
919         type: string
920       security_groups:
921         description: >
922           security_groups (list of strings) - The security groups assigned to your LoadBalancer
923           within your VPC.
924           example: ['sg-123456','sg-7891011']
925           FYI: security groups only supported with vpc
926         type: list
927         entry_schema:
928           type: string
929         default: []
930         required: false
931       listeners:
932         description: >
933           listeners (List of tuples) - Each tuple contains three or four values, (LoadBalancerPortNumber,
934           InstancePortNumber, Protocol, [SSLCertificateId]) where LoadBalancerPortNumber and
935           InstancePortNumber are integer values between 1 and 65535, Protocol is a string containing
936           either 'TCP', 'SSL', 'HTTP', or 'HTTPS'; SSLCertificateID is the ARN of a AWS IAM certificate,
937           and must be specified when doing HTTPS.
938           example: [[80, 8080, 'http'], [443, 8443, 'tcp']]
939         type: list
940         entry_schema:
941           type: aria.aws.datatypes.LoadBalancerListener
942       health_checks:
943         description: >
944           list of healthchecks (dicts) to use as criteria for instance health
945           example: [{'target': 'HTTP:8080/health'}, {'target': 'HTTP:80/alive'}]
946         type: list
947         entry_schema:
948           type: aria.aws.datatypes.LoadBalancerHealthCheck
949         default: []
950         required: false
951       scheme:
952         description: >
953           The type of a LoadBalancer. By default, Elastic Load Balancing creates an internet-facing
954           LoadBalancer with a publicly resolvable DNS name, which resolves to public IP addresses.
955           Specify the value internal for this option to create an internal LoadBalancer with a DNS
956           name that resolves to private IP addresses.
957           This option is only available for LoadBalancers attached to an Amazon VPC.
958         type: string
959         default: ''
960         required: false
961       subnets:
962         description: >
963           list of strings - A list of subnet IDs in your VPC to attach to your LoadBalancer.
964           example:
965         type: list
966         entry_schema:
967           type: string
968         default: []
969         required: false
970       complex_listeners:
971         description: >
972           List of tuples - Each tuple contains four or five values, (LoadBalancerPortNumber,
973           InstancePortNumber, Protocol, InstanceProtocol, SSLCertificateId).
974           Where:
975           LoadBalancerPortNumber and InstancePortNumber are integer values between 1 and 65535
976           Protocol and InstanceProtocol is a string containing either 'TCP', 'SSL', 'HTTP', or 'HTTPS'
977           SSLCertificateId is the ARN of an SSL certificate loaded into AWS IAM
978         type: list
979         entry_schema:
980           type: aria.aws.datatypes.LoadBalancerComplexListener
981         default: []
982         required: false
983       aws_config:
984         description: >
985           A dictionary of values to pass to authenticate with the AWS API.
986         type: aria.aws.datatypes.Config
987         required: false
988     interfaces:
989       Standard:
990         create:
991           implementation: cloudify-aws-plugin > cloudify_aws.ec2.elasticloadbalancer.create
992         start:
993           implementation: cloudify-aws-plugin > cloudify_aws.ec2.elasticloadbalancer.start
994         delete:
995           implementation: cloudify-aws-plugin > cloudify_aws.ec2.elasticloadbalancer.delete
996       Validation:
997         type: aria.aws.interfaces.Validation
998         creation:
999           implementation: cloudify-aws-plugin > cloudify_aws.ec2.elasticloadbalancer.creation_validation
1000
1001   aria.aws.nodes.VPC:
1002     derived_from: tosca.nodes.network.Network
1003     properties:
1004       use_external_resource:
1005         description: >
1006           Indicate whether the resource exists or it should be created,
1007           true if you are bringing an existing resource, false if you want to create it.
1008         type: boolean
1009         default: false
1010       resource_id:
1011         description: >
1012           The AWS resource ID of the external resource, if use_external_resource is true.
1013           Otherwise it is an empty string.
1014         type: string
1015         default: ''
1016       tags:
1017         description: >
1018           A dictionary of key/value pairs of tags you want to add.
1019         type: map
1020         default: {}
1021         entry_schema:
1022           type: string  # http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/Using_Tags.html
1023       cidr_block:
1024         description: >
1025           The CIDR Block that you will split this VPCs subnets across.
1026         type: string
1027       instance_tenancy:
1028         description: >
1029           Default or dedicated.
1030         type: string
1031         default: default
1032         required: false
1033       aws_config:
1034         description: >
1035           A dictionary of values to pass to authenticate with the AWS API.
1036         type: aria.aws.datatypes.Config
1037         required: false
1038     interfaces:
1039       Standard:
1040         create:
1041           implementation: cloudify-aws-plugin > cloudify_aws.vpc.vpc.create_vpc
1042         start:
1043           implementation: cloudify-aws-plugin > cloudify_aws.vpc.vpc.start
1044         delete:
1045           implementation: cloudify-aws-plugin > cloudify_aws.vpc.vpc.delete
1046       Validation:
1047         type: aria.aws.interfaces.Validation
1048         creation:
1049           implementation: cloudify-aws-plugin > cloudify_aws.vpc.vpc.creation_validation
1050     requirements:
1051       - vpc:
1052           capability: tosca.capabilities.Node
1053           node: aria.aws.nodes.VPC
1054           relationship: aria.aws.relationships.RouteTableOfSourceVPCConnectedToTargetPeerVPC
1055           occurrences: [ 0, UNBOUNDED ]
1056
1057   aria.aws.nodes.Subnet:
1058     derived_from: tosca.nodes.Root
1059     properties:
1060       use_external_resource:
1061         description: >
1062           Indicate whether the resource exists or it should be created,
1063           true if you are bringing an existing resource, false if you want to create it.
1064         type: boolean
1065         default: false
1066       resource_id:
1067         description: >
1068           The AWS resource ID of the external resource, if use_external_resource is true.
1069           Otherwise it is an empty string.
1070         type: string
1071         default: ''
1072       tags:
1073         description: >
1074           A dictionary of key/value pairs of tags you want to add.
1075         type: map
1076         default: {}
1077         entry_schema:
1078           type: string  # http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/Using_Tags.html
1079       cidr_block:
1080         description: >
1081           The CIDR Block that instances will be on.
1082         type: string
1083       availability_zone:
1084         description: >
1085           The availability zone that you want your subnet in.
1086         type: string
1087         default: ''
1088         required: false
1089       aws_config:
1090         description: >
1091           A dictionary of values to pass to authenticate with the AWS API.
1092         type: aria.aws.datatypes.Config
1093         required: false
1094     interfaces:
1095       Standard:
1096         create:
1097           implementation: cloudify-aws-plugin > cloudify_aws.vpc.subnet.create_subnet
1098         start:
1099           implementation: cloudify-aws-plugin > cloudify_aws.vpc.subnet.start_subnet
1100         delete:
1101           implementation: cloudify-aws-plugin > cloudify_aws.vpc.subnet.delete_subnet
1102       Validation:
1103         type: aria.aws.interfaces.Validation
1104         creation:
1105           implementation: cloudify-aws-plugin > cloudify_aws.vpc.subnet.creation_validation
1106     requirements:
1107       - vpc:
1108           capability: tosca.capabilities.Node
1109           node: aria.aws.nodes.VPC
1110           relationship: aria.aws.relationships.SubnetContainedInVPC
1111           occurrences: [ 0, UNBOUNDED ]
1112
1113   aria.aws.nodes.Gateway:
1114     derived_from: tosca.nodes.Root
1115     properties:
1116       use_external_resource:
1117         description: >
1118           Indicate whether the resource exists or it should be created,
1119           true if you are bringing an existing resource, false if you want to create it.
1120         type: boolean
1121         default: false
1122       resource_id:
1123         description: >
1124           The AWS resource ID of the external resource, if use_external_resource is true.
1125           Otherwise it is an empty string.
1126         type: string
1127         default: ''
1128       tags:
1129         description: >
1130           A dictionary of key/value pairs of tags you want to add.
1131         type: map
1132         default: {}
1133         entry_schema:
1134           type: string  # http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/Using_Tags.html
1135       aws_config:
1136         description: >
1137           A dictionary of values to pass to authenticate with the AWS API.
1138         type: aria.aws.datatypes.Config
1139         required: false
1140     interfaces:
1141       Validation:
1142         type: aria.aws.interfaces.Validation
1143         creation:
1144           implementation: cloudify-aws-plugin > cloudify_aws.vpc.gateway.creation_validation
1145     requirements:
1146       - vpc:
1147           capability: tosca.capabilities.Node
1148           node: aria.aws.nodes.VPC
1149           relationship: aria.aws.relationships.GatewayConnectedToVPC
1150           occurrences: [ 0, UNBOUNDED ]
1151
1152   aria.aws.nodes.InternetGateway:
1153     derived_from: aria.aws.nodes.Gateway
1154     properties:
1155       cidr_block:
1156         description: >
1157           The cidr_block that you want this internet gateway to service. Default is for all internet
1158           traffic.
1159         type: string
1160         default: '0.0.0.0/0'
1161     interfaces:
1162       Standard:
1163         create:
1164           implementation: cloudify-aws-plugin > cloudify_aws.vpc.gateway.create_internet_gateway
1165         start:
1166           implementation: cloudify-aws-plugin > cloudify_aws.vpc.gateway.start_internet_gateway
1167         delete:
1168           implementation: cloudify-aws-plugin > cloudify_aws.vpc.gateway.delete_internet_gateway
1169
1170   aria.aws.nodes.VPNGateway:
1171     derived_from: aria.aws.nodes.Gateway
1172     properties:
1173       type:
1174         description: >
1175           Type of VPN Connection. Only valid value currently is ipsec.1
1176         type: string
1177         default: ipsec.1
1178       availability_zone:
1179         description: >
1180           The Availability Zone where you want the VPN gateway.
1181         type: string
1182         default: ''
1183         required: false
1184     interfaces:
1185       Standard:
1186         create:
1187           implementation: cloudify-aws-plugin > cloudify_aws.vpc.gateway.create_vpn_gateway
1188         start:
1189           implementation: cloudify-aws-plugin > cloudify_aws.vpc.gateway.start_vpn_gateway
1190         delete:
1191           implementation: cloudify-aws-plugin > cloudify_aws.vpc.gateway.delete_vpn_gateway
1192
1193   aria.aws.nodes.CustomerGateway:
1194     derived_from: aria.aws.nodes.Gateway
1195     properties:
1196       type:
1197         description: >
1198           Type of VPN Connection. Only valid value currently is ipsec.1
1199         type: string
1200         default: ipsec.1
1201       ip_address:
1202         description: >
1203           Internet-routable IP address for customers gateway. Must be a static address
1204         type: string
1205       bgp_asn:
1206         description: >
1207           Customer gateways Border Gateway Protocol (BGP) Autonomous System Number (ASN)
1208         type: integer
1209     interfaces:
1210       Standard:
1211         create:
1212           implementation: cloudify-aws-plugin > cloudify_aws.vpc.gateway.create_customer_gateway
1213         start:
1214           implementation: cloudify-aws-plugin > cloudify_aws.vpc.gateway.start_customer_gateway
1215         delete:
1216           implementation: cloudify-aws-plugin > cloudify_aws.vpc.gateway.delete_customer_gateway
1217     requirements:
1218       - vpn_gateway:
1219           capability: tosca.capabilities.Node
1220           node: aria.aws.nodes.VPNGateway
1221           relationship: aria.aws.relationships.CustomerGatewayConnectedToVPNGateway
1222           occurrences: [ 0, UNBOUNDED ]
1223
1224   aria.aws.nodes.ACL:
1225     derived_from: tosca.nodes.Root
1226     properties:
1227       use_external_resource:
1228         description: >
1229           Indicate whether the resource exists or it should be created,
1230           true if you are bringing an existing resource, false if you want to create it.
1231         type: boolean
1232         default: false
1233       resource_id:
1234         description: >
1235           The AWS resource ID of the external resource, if use_external_resource is true.
1236           Otherwise it is an empty string.
1237         type: string
1238         default: ''
1239       tags:
1240         description: >
1241           A dictionary of key/value pairs of tags you want to add.
1242         type: map
1243         default: {}
1244         entry_schema:
1245           type: string  # http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/Using_Tags.html
1246       acl_network_entries:
1247         description: >
1248           A list of rules of data type aria.datatypes.aws.NetworkAclEntry (see above).
1249         type: list
1250         entry_schema:
1251           type: aria.aws.datatypes.NetworkAclEntry
1252         default: []
1253         required: false
1254       aws_config:
1255         description: >
1256           A dictionary of values to pass to authenticate with the AWS API.
1257         type: aria.aws.datatypes.Config
1258         required: false
1259     interfaces:
1260       Standard:
1261         create:
1262           implementation: cloudify-aws-plugin > cloudify_aws.vpc.networkacl.create_network_acl
1263         start:
1264           implementation: cloudify-aws-plugin > cloudify_aws.vpc.networkacl.start_network_acl
1265         delete:
1266           implementation: cloudify-aws-plugin > cloudify_aws.vpc.networkacl.delete_network_acl
1267       Validation:
1268         type: aria.aws.interfaces.Validation
1269         creation:
1270           implementation: cloudify-aws-plugin > cloudify_aws.vpc.networkacl.creation_validation
1271     requirements:
1272       - vpc:
1273           capability: tosca.capabilities.Node
1274           node: aria.aws.nodes.VPC
1275           relationship: aria.aws.relationships.NetworkACLContainedInVPC
1276           occurrences: [ 0, UNBOUNDED ]
1277       - subnet:
1278           capability: tosca.capabilities.Node
1279           node: aria.aws.nodes.Subnet
1280           relationship: aria.aws.relationships.NetworkACLAssociatedWithSubnet
1281           occurrences: [ 0, UNBOUNDED ]
1282
1283   aria.aws.nodes.DHCPOptions:
1284     derived_from: tosca.nodes.Root
1285     properties:
1286       use_external_resource:
1287         description: >
1288           Indicate whether the resource exists or it should be created,
1289           true if you are bringing an existing resource, false if you want to create it.
1290         type: boolean
1291         default: false
1292       resource_id:
1293         description: >
1294           The AWS resource ID of the external resource, if use_external_resource is true.
1295           Otherwise it is an empty string.
1296         type: string
1297         default: ''
1298       tags:
1299         description: >
1300           A dictionary of key/value pairs of tags you want to add.
1301         type: map
1302         default: {}
1303         entry_schema:
1304           type: string  # http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/Using_Tags.html
1305       domain_name:
1306         description: >
1307           A domain name.
1308         type: string
1309         required: false
1310       domain_name_servers:
1311         description: >
1312           A list of up to four DNS servers.
1313         type: list
1314         entry_schema:
1315           type: string
1316         default: []
1317         required: false
1318       ntp_servers:
1319         description: >
1320           A list of up to four NTP servers.
1321         type: list
1322         entry_schema:
1323           type: string
1324         default: []
1325         required: false
1326       netbios_name_servers:
1327         description: >
1328           A list of up to four netbios servers.
1329         type: list
1330         entry_schema:
1331           type: string
1332         default: []
1333         required: false
1334       netbios_node_type:
1335         description: >
1336           netbios type. recommended two.
1337         type: string
1338         default: ''
1339         required: false
1340       aws_config:
1341         description: >
1342           A dictionary of values to pass to authenticate with the AWS API.
1343         type: aria.aws.datatypes.Config
1344         required: false
1345     interfaces:
1346       Standard:
1347         create:
1348           implementation: cloudify-aws-plugin > cloudify_aws.vpc.dhcp.create_dhcp_options
1349         start:
1350           implementation: cloudify-aws-plugin > cloudify_aws.vpc.dhcp.start_dhcp_options
1351         delete:
1352           implementation: cloudify-aws-plugin > cloudify_aws.vpc.dhcp.delete_dhcp_options
1353       Validation:
1354         type: aria.aws.interfaces.Validation
1355         creation:
1356           implementation: cloudify-aws-plugin > cloudify_aws.vpc.dhcp.creation_validation
1357     requirements:
1358       - vpc:
1359           capability: tosca.capabilities.Node
1360           node: aria.aws.nodes.VPC
1361           relationship: aria.aws.relationships.DHCPOptionsAssociatedWithVPC
1362           occurrences: [ 0, UNBOUNDED ]
1363
1364   aria.aws.nodes.RouteTable:
1365     derived_from: tosca.nodes.Root
1366     properties:
1367       use_external_resource:
1368         description: >
1369           Indicate whether the resource exists or it should be created,
1370           true if you are bringing an existing resource, false if you want to create it.
1371         type: boolean
1372         default: false
1373         required: true
1374       resource_id:
1375         description: >
1376           The AWS resource ID of the external resource, if use_external_resource is true.
1377           Otherwise it is an empty string.
1378         type: string
1379         default: ''
1380       tags:
1381         description: >
1382           A dictionary of key/value pairs of tags you want to add.
1383         type: map
1384         default: {}
1385         entry_schema:
1386           type: string  # http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/Using_Tags.html
1387       aws_config:
1388         description: >
1389           A dictionary of values to pass to authenticate with the AWS API.
1390         type: aria.aws.datatypes.Config
1391         required: false
1392     interfaces:
1393       Standard:
1394         create:
1395           implementation: cloudify_aws.vpc.routetable.create_route_table
1396           inputs:
1397             routes:
1398               description: >
1399                 A list of aria.aws.datatypes.Route.
1400               type: list
1401               entry_schema:
1402                 type: aria.aws.datatypes.Route
1403               default: []
1404         start:
1405           implementation: cloudify-aws-plugin > cloudify_aws.vpc.routetable.start_route_table
1406         delete:
1407           implementation: cloudify-aws-plugin > cloudify_aws.vpc.routetable.delete_route_table
1408       Validation:
1409         type: aria.aws.interfaces.Validation
1410         creation:
1411           implementation: cloudify-aws-plugin > cloudify_aws.vpc.routetable.creation_validation
1412     requirements:
1413       - vpc:
1414           capability: tosca.capabilities.Node
1415           node: aria.aws.nodes.VPC
1416           relationship: aria.aws.relationships.SubnetContainedInVPC
1417           occurrences: [ 0, UNBOUNDED ]
1418       - subnet:
1419           capability: tosca.capabilities.Node
1420           node: aria.aws.nodes.Subnet
1421           relationship: aria.aws.relationships.RoutetableAssociatedWithSubnet
1422           occurrences: [ 0, UNBOUNDED ]
1423       - gateway:
1424           capability: tosca.capabilities.Node
1425           node: aria.aws.nodes.Gateway
1426           relationship: aria.aws.relationships.RouteTableToGateway
1427           occurrences: [ 0, UNBOUNDED ]
1428
1429   aria.aws.nodes.Interface:
1430     derived_from: tosca.nodes.network.Port
1431     properties:
1432       use_external_resource:
1433         description: >
1434           Indicate whether the resource exists or it should be created,
1435           true if you are bringing an existing resource, false if you want to create it.
1436         type: boolean
1437         default: false
1438       resource_id:
1439         description: >
1440           The AWS resource ID of the external resource, if use_external_resource is true.
1441           Otherwise it is an empty string.
1442         type: string
1443         default: ''
1444       tags:
1445         description: >
1446           A dictionary of key/value pairs of tags you want to add.
1447         type: map
1448         default: {}
1449         entry_schema:
1450           type: string  # http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/Using_Tags.html
1451       parameters:
1452         description: >
1453           Any parameters accepted by the create_network_interface operation.
1454         type: aria.aws.datatypes.NetworkInterfaceCreateParameters
1455         required: false
1456       aws_config:
1457         description: >
1458           A dictionary of values to pass to authenticate with the AWS API.
1459         type: aria.aws.datatypes.Config
1460         required: false
1461     interfaces:
1462       Standard:
1463         create:
1464           implementation: cloudify-aws-plugin > cloudify_aws.ec2.eni.create
1465           inputs:
1466             args:
1467               type: aria.aws.datatypes.NetworkInterfaceCreateParameters
1468               default: {}
1469         start:
1470           implementation: cloudify-aws-plugin > cloudify_aws.ec2.eni.start
1471         delete:
1472           implementation: cloudify-aws-plugin > cloudify_aws.ec2.eni.delete
1473           inputs:
1474             args:
1475               type: map
1476               entry_schema:
1477                 type: string
1478               default: {}
1479     requirements:
1480       - instance:
1481           capability: tosca.capabilities.Node
1482           node: aria.aws.nodes.Instance
1483           relationship: aria.aws.relationships.ENIConnectedToInstance
1484           occurrences: [ 0, UNBOUNDED ]
1485
1486   aria.aws.nodes.SecurityGroupRule:
1487     derived_from: tosca.nodes.Root
1488     properties:
1489       use_external_resource:
1490         type: boolean
1491         default: False
1492       resource_id:
1493         description: >
1494           The resource ID.
1495         type: string
1496         default: ''
1497         required: false
1498       rule:
1499         description: >
1500           A list of rules of data type aria.aws.datatypes.SecurityGroupRule (see above).
1501         type: list
1502         entry_schema:
1503           type: aria.aws.datatypes.SecurityGroupRule
1504         default: []
1505         required: false
1506       aws_config:
1507         description: >
1508           A dictionary of values to pass to authenticate with the AWS API.
1509         type: aria.aws.datatypes.Config
1510     requirements:
1511       - security_group_to_depend_on:
1512           capability: tosca.capabilities.Node
1513           node: aria.aws.nodes.SecurityGroup
1514           relationship: aria.aws.relationships.RuleDependsOnSecurityGroup
1515           occurrences: [ 0, UNBOUNDED ]
1516       - security_group_to_be_contained_in:
1517           capability: tosca.capabilities.Node
1518           node: aria.aws.nodes.SecurityGroup
1519           relationship: aria.aws.relationships.RuleContainedInSecurityGroup
1520           occurrences: [ 0, UNBOUNDED ]
1521
1522   aria.aws.nodes.SecurityGroupRule.Multi:
1523     derived_from: aria.aws.nodes.SecurityGroupRule
1524     interfaces:
1525       Standard:
1526         create:
1527           implementation: cloudify-aws-plugin > cloudify_aws.ec2.securitygroup.create_rule
1528           inputs:
1529             args:
1530               type: map
1531               entry_schema:
1532                 type: aria.aws.datatypes.SecurityGroupRule
1533               default: {}
1534         delete:
1535           implementation: cloudify-aws-plugin > cloudify_aws.ec2.securitygroup.delete_rule
1536           inputs:
1537             args:
1538               type: map
1539               entry_schema:
1540                 type: aria.aws.datatypes.SecurityGroupRule
1541               default: {}
1542
1543
1544 relationship_types:
1545   aria.aws.relationships.ConnectedToElasticIP:
1546     derived_from: tosca.relationships.ConnectsTo
1547     interfaces:
1548       Configure:
1549         add_source:
1550           implementation: cloudify-aws-plugin > cloudify_aws.ec2.elasticip.associate
1551         remove_source:
1552           implementation: cloudify-aws-plugin > cloudify_aws.ec2.elasticip.disassociate
1553
1554   aria.aws.relationships.InstanceConnectedToElasticIP:
1555     derived_from: aria.aws.relationships.ConnectedToElasticIP
1556
1557   aria.aws.relationships.InstanceConnectedToKeypair:
1558     derived_from: tosca.relationships.ConnectsTo
1559
1560   aria.aws.relationships.ConnectedToSecurityGroup:
1561     derived_from: tosca.relationships.ConnectsTo
1562
1563   # The name of this relationship is not in CamelCase since in order to attach security group to an
1564   # instance using the Cloudify AWS plugin, the relationship between the instance and the security
1565   # group must be include the string 'instance_connected_to_security_group' in its name.
1566   aria.aws.relationships.instance_connected_to_security_group:
1567     derived_from: aria.aws.relationships.ConnectedToSecurityGroup
1568
1569   aria.aws.relationships.InstanceConnectedToLoadBalancer:
1570     derived_from: tosca.relationships.ConnectsTo
1571     interfaces:
1572       Configure:
1573         add_source:
1574           implementation: cloudify-aws-plugin > cloudify_aws.ec2.elasticloadbalancer.associate
1575         remove_source:
1576           implementation: cloudify-aws-plugin > cloudify_aws.ec2.elasticloadbalancer.disassociate
1577
1578   aria.aws.relationships.VolumeConnectedToInstance:
1579     derived_from: tosca.relationships.ConnectsTo
1580     interfaces:
1581       Configure:
1582         add_source:
1583           implementation: cloudify-aws-plugin > cloudify_aws.ec2.ebs.associate
1584           inputs:
1585             args:
1586               type: map
1587               entry_schema:
1588                 type: string
1589               default: {}
1590             force:
1591               type: boolean
1592               default: False
1593         remove_source:
1594           implementation: cloudify-aws-plugin > cloudify_aws.ec2.ebs.disassociate
1595           inputs:
1596             args:
1597               type: map
1598               entry_schema:
1599                 type: string
1600               default: {}
1601             force:
1602               type: boolean
1603               default: False
1604
1605   aria.aws.relationships.SubnetContainedInVPC:
1606     derived_from: tosca.relationships.HostedOn
1607
1608   aria.aws.relationships.RoutetableContainedInVPC:
1609     derived_from: tosca.relationships.HostedOn
1610
1611   aria.aws.relationships.RoutetableAssociatedWithSubnet:
1612     derived_from: tosca.relationships.ConnectsTo
1613     interfaces:
1614       Configure:
1615         add_target:
1616           implementation: cloudify-aws-plugin > cloudify_aws.vpc.routetable.associate_route_table
1617         remove_target:
1618           implementation: cloudify-aws-plugin > cloudify_aws.vpc.routetable.disassociate_route_table
1619
1620   aria.aws.relationships.RouteTableToGateway:
1621     derived_from: tosca.relationships.ConnectsTo
1622     interfaces:
1623       Configure:
1624         add_target:
1625           implementation: cloudify-aws-plugin > cloudify_aws.vpc.routetable.create_route_to_gateway
1626           inputs:
1627             destination_cidr_block:
1628               description: >
1629                 Provide a specific value for the destination cidr block.
1630                 If the target is an internet gateway, then this is not necessary.
1631                 It will resolve to the cidr_block node property.
1632                 Otherwise, you need to provide this value.
1633               type: string
1634               default: ''
1635         remove_target:
1636           implementation: cloudify-aws-plugin > cloudify_aws.vpc.routetable.delete_route_from_gateway
1637
1638   aria.aws.relationships.GatewayConnectedToVPC:
1639     derived_from: tosca.relationships.ConnectsTo
1640     interfaces:
1641       Configure:
1642         add_target:
1643           implementation: cloudify-aws-plugin > cloudify_aws.vpc.gateway.attach_gateway
1644         remove_target:
1645           implementation: cloudify-aws-plugin > cloudify_aws.vpc.gateway.detach_gateway
1646
1647   aria.aws.relationships.NetworkACLContainedInVPC:
1648     derived_from: tosca.relationships.HostedOn
1649
1650   aria.aws.relationships.NetworkACLAssociatedWithSubnet:
1651     derived_from: tosca.relationships.ConnectsTo
1652     interfaces:
1653       Configure:
1654         add_target:
1655           implementation: cloudify-aws-plugin > cloudify_aws.vpc.networkacl.associate_network_acl
1656         remove_target:
1657           implementation: cloudify-aws-plugin > cloudify_aws.vpc.networkacl.disassociate_network_acl
1658
1659   aria.aws.relationships.RouteTableOfSourceVPCConnectedToTargetPeerVPC:
1660     derived_from: tosca.relationships.ConnectsTo
1661     interfaces:
1662       Configure:
1663         pre_configure_target:
1664           implementation: cloudify-aws-plugin > cloudify_aws.vpc.vpc.create_vpc_peering_connection
1665           inputs:
1666             target_account_id:
1667               description: >
1668                 The 12 digit account ID that the target VPC belongs to.
1669               type: string
1670               default: ''
1671             routes:
1672               description: >
1673                 A list of aria.aws.datatypes.Route for assignment to the source Route Table.
1674               type: list
1675               entry_schema:
1676                 type: aria.aws.datatypes.Route
1677               default: []
1678         post_configure_target:
1679           implementation: cloudify-aws-plugin > cloudify_aws.vpc.vpc.accept_vpc_peering_connection
1680         remove_target:
1681           implementation: cloudify-aws-plugin > cloudify_aws.vpc.vpc.delete_vpc_peering_connection
1682
1683   aria.aws.relationships.DHCPOptionsAssociatedWithVPC:
1684     derived_from: tosca.relationships.ConnectsTo
1685     interfaces:
1686       Configure:
1687         add_target:
1688           implementation: cloudify-aws-plugin > cloudify_aws.vpc.dhcp.associate_dhcp_options
1689         remove_target:
1690           implementation: cloudify-aws-plugin > cloudify_aws.vpc.dhcp.restore_dhcp_options
1691
1692   aria.aws.relationships.CustomerGatewayConnectedToVPNGateway:
1693     derived_from: tosca.relationships.ConnectsTo
1694     interfaces:
1695       Configure:
1696         add_target:
1697           implementation: cloudify-aws-plugin > cloudify_aws.vpc.gateway.create_vpn_connection
1698           inputs:
1699             routes:
1700               description: >
1701                 A list of static routes to add to this vpn_connection.
1702                 The routes will be of type aria.aws.datatypes.Route.
1703                 However, you can only provide the destination_cidr_block and a vpn_connection_id.
1704               type: list
1705               entry_schema:
1706                 type: aria.aws.datatypes.Route
1707               default: []
1708         remove_target:
1709           implementation: cloudify-aws-plugin > cloudify_aws.vpc.gateway.delete_vpn_connection
1710
1711   aria.aws.relationships.InstanceContainedInSubnet:
1712     derived_from: tosca.relationships.HostedOn
1713
1714   aria.aws.relationships.InstanceConnectedToSubnet:
1715     derived_from: tosca.relationships.ConnectsTo
1716
1717   aria.aws.relationships.SecurityGroupContainedInVPC:
1718     derived_from: tosca.relationships.HostedOn
1719
1720   aria.aws.relationships.ConnectedToSubnet:  # ARIA NOTE: I don't see a use for this relationship
1721     derived_from: tosca.relationships.ConnectsTo
1722
1723   aria.aws.relationships.ENIConnectedToInstance:
1724     derived_from: tosca.relationships.ConnectsTo
1725     interfaces:
1726       Configure:
1727         add_source:
1728           implementation: cloudify-aws-plugin > cloudify_aws.ec2.eni.associate
1729           inputs:
1730             args:
1731               type: map
1732               entry_schema:
1733                 type: string
1734               default: {}
1735         remove_source:
1736           implementation: cloudify-aws-plugin > cloudify_aws.ec2.eni.disassociate
1737           inputs:
1738             args:
1739               type: map
1740               entry_schema:
1741                 type: string
1742               default: {}
1743
1744   aria.aws.relationships.InstanceConnectedToENI:
1745     derived_from: tosca.relationships.ConnectsTo
1746
1747   aria.aws.relationships.SecurityGroupUsesRule:
1748     derived_from: tosca.relationships.DependsOn
1749
1750   aria.aws.relationships.RuleDependsOnSecurityGroup:
1751     derived_from: tosca.relationships.DependsOn
1752
1753   aria.aws.relationships.RuleContainedInSecurityGroup:
1754     derived_from: tosca.relationships.HostedOn