X-Git-Url: https://gerrit.onap.org/r/gitweb?a=blobdiff_plain;f=azure%2Faria%2Faria-extension-cloudify%2Fplugins%2Faws%2Fplugin.yaml;fp=azure%2Faria%2Faria-extension-cloudify%2Fplugins%2Faws%2Fplugin.yaml;h=5912d2349435119764774d0bc3e7d76f1e1cc2a5;hb=7409dfb144cf2a06210400134d822a1393462b1f;hp=0000000000000000000000000000000000000000;hpb=9e65649dfff8f00dc0a0ef6b10d020ae0e2255ba;p=multicloud%2Fazure.git diff --git a/azure/aria/aria-extension-cloudify/plugins/aws/plugin.yaml b/azure/aria/aria-extension-cloudify/plugins/aws/plugin.yaml new file mode 100644 index 0000000..5912d23 --- /dev/null +++ b/azure/aria/aria-extension-cloudify/plugins/aws/plugin.yaml @@ -0,0 +1,1754 @@ +# +# Copyright (c) 2017 GigaSpaces Technologies Ltd. All rights reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); you may +# not use this file except in compliance with the License. You may obtain +# a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT +# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the +# License for the specific language governing permissions and limitations +# under the License. +# + +tosca_definitions_version: tosca_simple_yaml_1_0 + +topology_template: + policies: + cloudify-aws-plugin: + description: >- + aws plugin executes operations. + type: aria.Plugin + properties: + version: 1.4.10 + + +data_types: + aria.aws.datatypes.Config: + properties: + # Partially based on: http://docs.aws.amazon.com/cli/latest/userguide/cli-chap-getting-started.html + aws_access_key_id: + description: > + The ID of your AWS ACCESS KEY. + type: string + required: false + aws_secret_access_key: + description: > + The ID of your AWS SECRET KEY. + type: string + required: false + region: + description: > + This is for backward compatibility with version 1.2. + type: string + required: false + ec2_region_name: + description: > + The EC2 Region RegionName, such as us-east-1. + (Not us-east-1b, which is an availability zone, or US East, which is a Region.) + type: string + required: false + ec2_region_endpoint: + description: > + The endpoint for the given region. + type: string + required: false + elb_region_name: + description: > + The ELB Region RegionName, such as us-east-1. + (Not us-east-1b, which is an availability zone, or US East, which is a Region.) + Required for aws_config for node type aria.aws.nodes.ElasticLoadBalancer. + type: string + required: false + elb_region_endpoint: + description: > + The endpoint for the given ELB region. + type: string + required: false + + aria.aws.datatypes.Route: + properties: + # Based on: http://docs.aws.amazon.com/cli/latest/reference/ec2/create-route.html + route_table_id: + description: > + In most cases, leave this blank, because the route table is implicit from the node or + relationship that is creating the route. + type: string + required: false + destination_cidr_block: + description: > + This is the cidr_block that you want to route traffic for to the device. + type: string + gateway_id: + description: > + The id of the gateway (either internet gateway, customer gateway, or vpn gateway). + type: string + required: false + instance_id: + description: > + The id of the instance (if you are routing to a NAT instance). + type: string + required: false + interface_id: + description: > + The id of an attached network interface. + type: string + required: false + vpc_peering_connection_id: + description: > + The id of a VPC peering connection. + type: string + required: false + + aria.aws.datatypes.NetworkAclEntry: + # Based on: http://docs.aws.amazon.com/cli/latest/reference/ec2/create-network-acl-entry.html + properties: + rule_number: + description: > + Some number to identify this rule. Cannot duplicate an existing rule number. + type: integer + protocol: + description: > + The Assigned Internet Protocol Number for the protocol (e.g. 1 is ICMP, 6 is TCP, and 17 is UDP). + type: integer + rule_action: + description: Either ALLOW or DENY. + type: string + constraints: + - valid_values: [ ALLOW, DENY ] + cidr_block: + description: > + The cidr_block. + type: string + egress: + description: > + Whether the rule applies to egress traffic from the subnet. + type: boolean + default: false + required: false + icmp_type: + description: > + If in protocol you chose 1 for ICMP, the ICMP type, -1 for all ICMP types. + type: integer + required: false + icmp_code: + description: > + If in protocol you chose 1 for ICMP, the ICMP code, -1 for all ICMP codes. + type: integer + required: false + port_range_from: + description: > + The first port in the range. + type: integer + constraints: + - in_range: [ 1, 65535 ] + port_range_to: + description: > + The last port in the range. + type: integer + constraints: + - in_range: [ 1, 65535 ] + + aria.aws.datatypes.SecurityGroupRule: + # Based on: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-security-group-rule.html + properties: + egress: + description: > + Whether the rule applies to egress traffic. + type: boolean + default: false + required: false + ip_protocol: + description: > + The Assigned Internet Protocol Number for the protocol. + type: string + required: false + from_port: + description: > + The first port in the range. + type: integer + required: false + constraints: + - in_range: [ 1, 65535 ] + to_port: + description: > + The last port in the range. + type: integer + required: false + constraints: + - in_range: [ 1, 65535 ] + cidr_ip: + description: > + The cidr_block. + type: string + required: false + src_group_id: + description: > + The security group ID. + type: string + required: false + + aria.aws.datatypes.BlockDeviceMapping: + derived_from: tosca.datatypes.Root + properties: + # Based on: http://docs.aws.amazon.com/cli/latest/reference/ec2/run-instances.html#options + virtual_name: + type: string + required: false + device_name: + type: string + required: false + ebs: + type: aria.aws.datatypes.Ebs + required: false + no_device: + type: string + required: false + + aria.aws.datatypes.Ebs: + derived_from: tosca.datatypes.Root + properties: + # Based on: http://docs.aws.amazon.com/cli/latest/reference/ec2/run-instances.html#options + snapshot_id: + type: string + required: false + volume_size: + type: integer + required: false + delete_on_termination: + type: boolean + required: false + volume_type: + type: string + required: false + constraints: + - valid_values: [ standard, io1, gp2, sc1, st1] + required: false + iops: + type: integer + required: false + encrypted: + type: boolean + required: false + + aria.aws.datatypes.NetworkInterfacePrivateIPAddress: + # Based on: http://docs.aws.amazon.com/cli/latest/reference/ec2/create-network-interface.html + # Specifically, look under --private-ip-addresses, and notice the differences from + # --private-ip-address. + derived_from: tosca.datatypes.Root + properties: + private_ip_address: + type: string + required: false + primary: + type: boolean + required: false + + aria.aws.datatypes.NetworkInterface: + # Based on: http://docs.aws.amazon.com/cli/latest/reference/ec2/create-network-interface.html + derived_from: tosca.datatypes.Root + properties: + description: + type: string + required: false + dry_run: + type: boolean + required: false + groups: + type: list + entry_schema: + type: string + required: false + ipv6_address_count: + type: integer + required: false + ipv6_addresses: + type: map + entry_schema: + type: string + required: false + private_ip_address: + type: string + required: false + private_ip_addresses: + type: map + entry_schema: + type: aria.aws.datatypes.NetworkInterfacePrivateIPAddress + required: false + secondary_private_ip_address_count: + type: integer + required: false + subnet_id: + type: string + required: false + cli_input_json: + type: string + required: false + generate_cli_skeleton: + type: string + required: false + + aria.aws.datatypes.RunInstancesParameters: + derived_from: tosca.datatypes.Root + properties: + # These properties were derived from the parameters of boto.e2c.connection.run_instances: + # https://github.com/boto/boto/blob/master/boto/ec2/connection.py#L738 + # In the corresponding aws documentation, + # http://docs.aws.amazon.com/cli/latest/reference/ec2/run-instances.html, + # The properties 'placement', 'placement_group' and 'tenancy' of the boto api are part of a + # structure called 'placement', in addition to 'affinity' and 'host_id' which do not exist + # in the boto api. + image_id: + type: string + required: false + min_count: + type: integer + required: false + max_count: + type: integer + required: false + key_name: + type: string + required: false + security_groups: + type: list + entry_schema: + type: string + required: false + user_data: + type: string + required: false + addressing_type: + type: string + required: false + instance_type: + type: string + required: false + placement: + type: string + required: false + kernel_id: + type: string + required: false + ramdisk_id: + type: string + required: false + monitoring_enabled: + type: boolean + required: false + subnet_id: + type: string + required: false + block_device_map: + type: list + entry_schema: + type: aria.aws.datatypes.BlockDeviceMapping + required: false + disable_api_termination: + type: boolean + required: false + instance_initiated_shutdown_behavior: + type: string + constraints: + - valid_values: [ stop, terminate ] + required: false + private_id_address: + type: string + required: false + placement_group: + type: string + required: false + client_token: + type: string + required: false + security_group_ids: + type: list + entry_schema: + type: string + required: false + additional_info: + type: string + required: false + instance_profile_name: + type: string + required: false + instance_profile_arn: + type: string + required: false + tenancy: + type: string + required: false + constraints: + - valid_values: [ default, dedicated] + ebs_optimized: + type: boolean + required: false + network_interfaces: + type: list + entry_schema: + type: aria.aws.datatypes.NetworkInterface + required: false + dry_run: + type: boolean + required: false + + aria.aws.datatypes.LoadBalancerListener: + # According to the description of the 'listeners' property of aria.aws.node.LoadBalancer + derived_from: tosca.datatypes.Root + properties: + LoadBalancerPortNumber: + type: integer + constraints: + - in_range: [ 1, 65535 ] + InstancePortNumber: + type: integer + constraints: + - in_range: [ 1, 65535 ] + protocol: + type: string + constraints: + - valid_values: [ tcp, ssl, http, https ] + SSLCertificateID: + type: string + required: false + + aria.aws.datatypes.LoadBalancerComplexListener: + # According to the description of the 'complex_listeners' property of aria.aws.node.LoadBalancer + derived_from: aria.aws.datatypes.LoadBalancerListener + properties: + InstanceProtocol: + type: integer + constraints: + - in_range: [ 1, 65535 ] + + aria.aws.datatypes.LoadBalancerHealthCheck: + # Based on: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-elb-health-check.html + derived_from: tosca.datatypes.Root + properties: + healthy_threshold: + type: string + required: false + interval: + type: string + required: false + target: + type: string + required: false + timeout: + type: string + required: false + unhealthy_threshold: + type: string + required: false + + aria.aws.datatypes.NetworkInterfaceCreateParameters: + # These properties were derived from the parameters of boto.e2c.connection.create_network_interface + # https://github.com/boto/boto/blob/master/boto/ec2/connection.py#L4286, that are based on: + # http://docs.aws.amazon.com/cli/latest/reference/ec2/create-network-interface.html + derived_from: tosca.datatypes.Root + properties: + subnet_id: + type: string + required: false + private_ip_address: + type: string + required: false + description: + type: string + required: false + groups: + type: list + entry_schema: + type: string + required: false + dry_run: + type: boolean + required: false + + aria.aws.datatypes.VolumeCreateParameters: + # Based on http://docs.aws.amazon.com/cli/latest/reference/ec2/create-volume.html#synopsis + derived_from: tosca.datatypes.Root + properties: + size: + type: integer + required: false + zone: + type: string + required: false + snapshot: + type: string + required: false + volume_type: + type: string + required: false + iops: + type: integer + required: false + encrypted: + type: boolean + required: false + kms_key_id: + type: string + required: false + dry_run: + type: boolean + required: false + + aria.aws.datatypes.VolumeDeleteParameters: + # Based on: http://docs.aws.amazon.com/cli/latest/reference/ec2/delete-volume.html + derived_from: tosca.datatypes.Root + properties: + volume_id: + type: string + required: false + dry_run: + type: boolean + required: false + +interface_types: + aria.aws.interfaces.Validation: + derived_from: tosca.interfaces.Root + creation: + description: > + creation operation for the aws validation interface + aria.aws.interfaces.Snapshot: + derived_from: tosca.interfaces.Root + create: + description: > + creation operation for the aws snapshot interface + + +node_types: + aria.aws.nodes.Instance: + derived_from: tosca.nodes.Compute + properties: + use_external_resource: + description: > + Indicate whether the resource exists or it should be created, + true if you are bringing an existing resource, false if you want to create it. + type: boolean + default: false + resource_id: + description: > + The AWS resource ID of the external resource, if use_external_resource is true. + Otherwise it is an empty string. + type: string + default: '' + tags: + description: > + A dictionary of key/value pairs of tags you want to add. + type: map + default: {} + entry_schema: + type: string # http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/Using_Tags.html + name: + description: > + Optional field if you want to add a specific name to the instance. + type: string + default: '' + required: false + image_id: + description: > + The ID of the AMI image in your Amazon account. + type: string + instance_type: + description: > + The instance's size. + type: string + use_password: + type: boolean + default: false + parameters: + description: > + The key value pair parameters allowed by Amazon API to the + ec2.connection.EC2Connection.run_instances command. It should be mentioned that + although this field is listed as optional, A non-trivial use case requires + that both the key_name parameter and the security_groups parameter be specified. + type: aria.aws.datatypes.RunInstancesParameters + default: {} + required: false + aws_config: + description: > + A dictionary of values to pass to authenticate with the AWS API. + type: aria.aws.datatypes.Config + required: false + attributes: + public_ip_address: + type: string + interfaces: + Standard: + create: + implementation: cloudify-aws-plugin > cloudify_aws.ec2.instance.create + start: + implementation: cloudify-aws-plugin > cloudify_aws.ec2.instance.start + inputs: + start_retry_interval: + description: Polling interval until the server is active in seconds + type: integer + default: 30 + private_key_path: + description: > + Path to private key which matches the server's + public key. Will be used to decrypt password in case + the "use_password" property is set to "true" + type: string + default: '' + stop: + implementation: cloudify-aws-plugin > cloudify_aws.ec2.instance.stop + delete: + implementation: cloudify-aws-plugin > cloudify_aws.ec2.instance.delete + Validation: + type: aria.aws.interfaces.Validation + creation: + implementation: cloudify-aws-plugin > cloudify_aws.ec2.instance.creation_validation + requirements: + - elastic_ip: + capability: tosca.capabilities.Node + node: aria.aws.nodes.ElasticIP + relationship: aria.aws.relationships.InstanceConnectedToElasticIP + occurrences: [ 0, UNBOUNDED ] + - keypair: + capability: tosca.capabilities.Node + node: aria.aws.nodes.KeyPair + relationship: aria.aws.relationships.InstanceConnectedToKeypair + occurrences: [ 0, UNBOUNDED ] + - security_group: + capability: tosca.capabilities.Node + node: aria.aws.nodes.SecurityGroup + relationship: aria.aws.relationships.instance_connected_to_security_group + occurrences: [ 0, UNBOUNDED ] + - load_balancer: + capability: tosca.capabilities.Node + node: aria.aws.nodes.ElasticLoadBalancer + relationship: aria.aws.relationships.InstanceConnectedToLoadBalancer + occurrences: [ 0, UNBOUNDED ] + - subnet_to_be_contained_in: + capability: tosca.capabilities.Node + node: aria.aws.nodes.Subnet + relationship: aria.aws.relationships.InstanceContainedInSubnet + occurrences: [ 0, UNBOUNDED ] + - subnet_to_connect_to: + capability: tosca.capabilities.Node + node: aria.aws.nodes.Subnet + relationship: aria.aws.relationships.InstanceConnectedToSubnet + occurrences: [ 0, UNBOUNDED ] + - eni: + capability: tosca.capabilities.Root + node: aria.aws.nodes.Interface + relationship: aria.aws.relationships.InstanceConnectedToENI + occurrences: [ 0, UNBOUNDED ] + + aria.aws.nodes.WindowsInstance: + derived_from: aria.aws.nodes.Instance + properties: + use_password: + type: boolean + default: true + os_family: + type: string + default: windows + + aria.aws.nodes.ElasticIP: + derived_from: tosca.nodes.Root + properties: + use_external_resource: + description: > + Indicate whether the resource exists or it should be created, + true if you are bringing an existing resource, false if you want to create it. + type: boolean + default: false + resource_id: + description: > + The AWS resource ID of the external resource, if use_external_resource is true. + Otherwise it is an empty string. + type: string + default: '' + tags: + description: > + A dictionary of key/value pairs of tags you want to add. + type: map + default: {} + entry_schema: + type: string # http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/Using_Tags.html + domain: + description: > + Set this to 'vpc' if you want to use VPC. + type: string + required: false + aws_config: + description: > + A dictionary of values to pass to authenticate with the AWS API. + type: aria.aws.datatypes.Config + required: false + interfaces: + Standard: + create: + implementation: cloudify-aws-plugin > cloudify_aws.ec2.elasticip.create + delete: + implementation: cloudify-aws-plugin > cloudify_aws.ec2.elasticip.delete + Validation: + type: aria.aws.interfaces.Validation + creation: + implementation: cloudify-aws-plugin > cloudify_aws.ec2.elasticip.creation_validation + + aria.aws.nodes.SecurityGroup: + derived_from: tosca.nodes.Root + properties: + use_external_resource: + description: > + Indicate whether the resource exists or it should be created, + true if you are bringing an existing resource, false if you want to create it. + type: boolean + default: false + resource_id: + description: > + The AWS resource ID of the external resource, if use_external_resource is true. + Otherwise it is an empty string. + type: string + default: '' + tags: + description: > + A dictionary of key/value pairs of tags you want to add. + type: map + default: {} + entry_schema: + type: string # http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/Using_Tags.html + description: + description: > + The description field that is required for every security group that you create + in Amazon. + type: string + rules: + description: > + You need to pass in either src_group_id (security group ID) OR cidr_ip, + and then the following three: ip_protocol, from_port and to_port. + type: list + entry_schema: + type: aria.aws.datatypes.SecurityGroupRule + default: [] + aws_config: + description: > + A dictionary of values to pass to authenticate with the AWS API. + type: aria.aws.datatypes.Config + required: false + interfaces: + Standard: + create: + implementation: cloudify-aws-plugin > cloudify_aws.ec2.securitygroup.create + start: + implementation: cloudify-aws-plugin > cloudify_aws.ec2.securitygroup.start + delete: + implementation: cloudify-aws-plugin > cloudify_aws.ec2.securitygroup.delete + Validation: + type: aria.aws.interfaces.Validation + creation: + implementation: cloudify-aws-plugin > cloudify_aws.ec2.securitygroup.creation_validation + requirements: + - vpc: + capability: tosca.capabilities.Node + node: aria.aws.nodes.VPC + relationship: aria.aws.relationships.SecurityGroupContainedInVPC + occurrences: [ 0, UNBOUNDED ] + - security_group_rule: + capability: tosca.capabilities.Node + node: aria.aws.nodes.SecurityGroupRule + relationship: aria.aws.relationships.SecurityGroupUsesRule + occurrences: [ 0, UNBOUNDED ] + + aria.aws.nodes.Volume: + derived_from: tosca.nodes.Root + properties: + use_external_resource: + description: > + Indicate whether the resource exists or it should be created, + true if you are bringing an existing resource, false if you want to create it. + type: boolean + default: false + resource_id: + description: > + The AWS resource ID of the external resource, if use_external_resource is true. + Otherwise it is an empty string. + type: string + default: '' + tags: + description: > + A dictionary of key/value pairs of tags you want to add. + type: map + default: {} + entry_schema: + type: string # http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/Using_Tags.html + size: + description: > + The size of the volume in GB. + type: string + zone: + description: > + A string representing the AWS availability zone. + type: string + device: + description: > + The device on the instance + type: string + aws_config: + description: > + A dictionary of values to pass to authenticate with the AWS API. + type: aria.aws.datatypes.Config + required: false + interfaces: + Standard: + create: + implementation: cloudify-aws-plugin > cloudify_aws.ec2.ebs.create + inputs: + args: + type: map + entry_schema: + type: aria.aws.datatypes.VolumeCreateParameters + default: {} + start: + implementation: cloudify-aws-plugin > cloudify_aws.ec2.ebs.start + delete: + implementation: cloudify-aws-plugin > cloudify_aws.ec2.ebs.delete + inputs: + args: + type: map + entry_schema: + type: aria.aws.datatypes.VolumeDeleteParameters + default: {} + Validation: + type: aria.aws.interfaces.Validation + creation: + implementation: cloudify-aws-plugin > cloudify_aws.ec2.ebs.creation_validation + Snapshot: + type: aria.aws.interfaces.Snapshot + create: + implementation: cloudify-aws-plugin > cloudify_aws.ec2.ebs.create_snapshot + inputs: + args: + type: map + entry_schema: + type: string + default: {} + requirements: + - instance: + capability: tosca.capabilities.Node + node: aria.aws.nodes.Instance + relationship: aria.aws.relationships.VolumeConnectedToInstance + occurrences: [ 0, UNBOUNDED ] + + aria.aws.nodes.KeyPair: + derived_from: tosca.nodes.Root + properties: + use_external_resource: + description: > + Indicate whether the resource exists or if the resource should be created. + type: boolean + default: false + resource_id: + description: > + The AWS resource ID of the external resource, if use_external_resource is true. + If use_external_resource is false, this will be the keys name and ID in AWS. + If left blank, the plugin will set a name for you. + Otherwise it is an empty string. + type: string + default: '' + tags: + description: > + A dictionary of key/value pairs of tags you want to add. + type: map + default: {} + entry_schema: + type: string # http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/Using_Tags.html + private_key_path: + description: > + The path where the key should be saved on the machine. If this is a bootstrap + process, this refers to the local computer. If this will run on the manager, + this will be saved on the manager. + type: string + aws_config: + description: > + A dictionary of values to pass to authenticate with the AWS API. + type: aria.aws.datatypes.Config + required: false + attributes: + aws_resource_id: + type: string + interfaces: + Standard: + create: + implementation: cloudify-aws-plugin > cloudify_aws.ec2.keypair.create + delete: + implementation: cloudify-aws-plugin > cloudify_aws.ec2.keypair.delete + Validation: + type: aria.aws.interfaces.Validation + creation: + implementation: cloudify-aws-plugin > cloudify_aws.ec2.keypair.creation_validation + + aria.aws.nodes.ElasticLoadBalancer: + derived_from: tosca.nodes.LoadBalancer + properties: + use_external_resource: + description: > + Indicate whether the resource exists or it should be created, + true if you are bringing an existing resource, false if you want to create it. + type: boolean + default: false + resource_id: + description: > + The AWS resource ID of the external resource, if use_external_resource is true. + Otherwise it is an empty string. + type: string + default: '' + tags: + description: > + A dictionary of key/value pairs of tags you want to add. + type: map + default: {} + entry_schema: + type: string # http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/Using_Tags.html + elb_name: + description: > + The mnemonic name associated with the new load balancer + type: string + zones: + description: > + zones (List of strings) - The names of the availability zone(s) to add. + example: ['us-east-1b','us-east-1b'] + type: string + security_groups: + description: > + security_groups (list of strings) - The security groups assigned to your LoadBalancer + within your VPC. + example: ['sg-123456','sg-7891011'] + FYI: security groups only supported with vpc + type: list + entry_schema: + type: string + default: [] + required: false + listeners: + description: > + listeners (List of tuples) - Each tuple contains three or four values, (LoadBalancerPortNumber, + InstancePortNumber, Protocol, [SSLCertificateId]) where LoadBalancerPortNumber and + InstancePortNumber are integer values between 1 and 65535, Protocol is a string containing + either 'TCP', 'SSL', 'HTTP', or 'HTTPS'; SSLCertificateID is the ARN of a AWS IAM certificate, + and must be specified when doing HTTPS. + example: [[80, 8080, 'http'], [443, 8443, 'tcp']] + type: list + entry_schema: + type: aria.aws.datatypes.LoadBalancerListener + health_checks: + description: > + list of healthchecks (dicts) to use as criteria for instance health + example: [{'target': 'HTTP:8080/health'}, {'target': 'HTTP:80/alive'}] + type: list + entry_schema: + type: aria.aws.datatypes.LoadBalancerHealthCheck + default: [] + required: false + scheme: + description: > + The type of a LoadBalancer. By default, Elastic Load Balancing creates an internet-facing + LoadBalancer with a publicly resolvable DNS name, which resolves to public IP addresses. + Specify the value internal for this option to create an internal LoadBalancer with a DNS + name that resolves to private IP addresses. + This option is only available for LoadBalancers attached to an Amazon VPC. + type: string + default: '' + required: false + subnets: + description: > + list of strings - A list of subnet IDs in your VPC to attach to your LoadBalancer. + example: + type: list + entry_schema: + type: string + default: [] + required: false + complex_listeners: + description: > + List of tuples - Each tuple contains four or five values, (LoadBalancerPortNumber, + InstancePortNumber, Protocol, InstanceProtocol, SSLCertificateId). + Where: + LoadBalancerPortNumber and InstancePortNumber are integer values between 1 and 65535 + Protocol and InstanceProtocol is a string containing either 'TCP', 'SSL', 'HTTP', or 'HTTPS' + SSLCertificateId is the ARN of an SSL certificate loaded into AWS IAM + type: list + entry_schema: + type: aria.aws.datatypes.LoadBalancerComplexListener + default: [] + required: false + aws_config: + description: > + A dictionary of values to pass to authenticate with the AWS API. + type: aria.aws.datatypes.Config + required: false + interfaces: + Standard: + create: + implementation: cloudify-aws-plugin > cloudify_aws.ec2.elasticloadbalancer.create + start: + implementation: cloudify-aws-plugin > cloudify_aws.ec2.elasticloadbalancer.start + delete: + implementation: cloudify-aws-plugin > cloudify_aws.ec2.elasticloadbalancer.delete + Validation: + type: aria.aws.interfaces.Validation + creation: + implementation: cloudify-aws-plugin > cloudify_aws.ec2.elasticloadbalancer.creation_validation + + aria.aws.nodes.VPC: + derived_from: tosca.nodes.network.Network + properties: + use_external_resource: + description: > + Indicate whether the resource exists or it should be created, + true if you are bringing an existing resource, false if you want to create it. + type: boolean + default: false + resource_id: + description: > + The AWS resource ID of the external resource, if use_external_resource is true. + Otherwise it is an empty string. + type: string + default: '' + tags: + description: > + A dictionary of key/value pairs of tags you want to add. + type: map + default: {} + entry_schema: + type: string # http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/Using_Tags.html + cidr_block: + description: > + The CIDR Block that you will split this VPCs subnets across. + type: string + instance_tenancy: + description: > + Default or dedicated. + type: string + default: default + required: false + aws_config: + description: > + A dictionary of values to pass to authenticate with the AWS API. + type: aria.aws.datatypes.Config + required: false + interfaces: + Standard: + create: + implementation: cloudify-aws-plugin > cloudify_aws.vpc.vpc.create_vpc + start: + implementation: cloudify-aws-plugin > cloudify_aws.vpc.vpc.start + delete: + implementation: cloudify-aws-plugin > cloudify_aws.vpc.vpc.delete + Validation: + type: aria.aws.interfaces.Validation + creation: + implementation: cloudify-aws-plugin > cloudify_aws.vpc.vpc.creation_validation + requirements: + - vpc: + capability: tosca.capabilities.Node + node: aria.aws.nodes.VPC + relationship: aria.aws.relationships.RouteTableOfSourceVPCConnectedToTargetPeerVPC + occurrences: [ 0, UNBOUNDED ] + + aria.aws.nodes.Subnet: + derived_from: tosca.nodes.Root + properties: + use_external_resource: + description: > + Indicate whether the resource exists or it should be created, + true if you are bringing an existing resource, false if you want to create it. + type: boolean + default: false + resource_id: + description: > + The AWS resource ID of the external resource, if use_external_resource is true. + Otherwise it is an empty string. + type: string + default: '' + tags: + description: > + A dictionary of key/value pairs of tags you want to add. + type: map + default: {} + entry_schema: + type: string # http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/Using_Tags.html + cidr_block: + description: > + The CIDR Block that instances will be on. + type: string + availability_zone: + description: > + The availability zone that you want your subnet in. + type: string + default: '' + required: false + aws_config: + description: > + A dictionary of values to pass to authenticate with the AWS API. + type: aria.aws.datatypes.Config + required: false + interfaces: + Standard: + create: + implementation: cloudify-aws-plugin > cloudify_aws.vpc.subnet.create_subnet + start: + implementation: cloudify-aws-plugin > cloudify_aws.vpc.subnet.start_subnet + delete: + implementation: cloudify-aws-plugin > cloudify_aws.vpc.subnet.delete_subnet + Validation: + type: aria.aws.interfaces.Validation + creation: + implementation: cloudify-aws-plugin > cloudify_aws.vpc.subnet.creation_validation + requirements: + - vpc: + capability: tosca.capabilities.Node + node: aria.aws.nodes.VPC + relationship: aria.aws.relationships.SubnetContainedInVPC + occurrences: [ 0, UNBOUNDED ] + + aria.aws.nodes.Gateway: + derived_from: tosca.nodes.Root + properties: + use_external_resource: + description: > + Indicate whether the resource exists or it should be created, + true if you are bringing an existing resource, false if you want to create it. + type: boolean + default: false + resource_id: + description: > + The AWS resource ID of the external resource, if use_external_resource is true. + Otherwise it is an empty string. + type: string + default: '' + tags: + description: > + A dictionary of key/value pairs of tags you want to add. + type: map + default: {} + entry_schema: + type: string # http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/Using_Tags.html + aws_config: + description: > + A dictionary of values to pass to authenticate with the AWS API. + type: aria.aws.datatypes.Config + required: false + interfaces: + Validation: + type: aria.aws.interfaces.Validation + creation: + implementation: cloudify-aws-plugin > cloudify_aws.vpc.gateway.creation_validation + requirements: + - vpc: + capability: tosca.capabilities.Node + node: aria.aws.nodes.VPC + relationship: aria.aws.relationships.GatewayConnectedToVPC + occurrences: [ 0, UNBOUNDED ] + + aria.aws.nodes.InternetGateway: + derived_from: aria.aws.nodes.Gateway + properties: + cidr_block: + description: > + The cidr_block that you want this internet gateway to service. Default is for all internet + traffic. + type: string + default: '0.0.0.0/0' + interfaces: + Standard: + create: + implementation: cloudify-aws-plugin > cloudify_aws.vpc.gateway.create_internet_gateway + start: + implementation: cloudify-aws-plugin > cloudify_aws.vpc.gateway.start_internet_gateway + delete: + implementation: cloudify-aws-plugin > cloudify_aws.vpc.gateway.delete_internet_gateway + + aria.aws.nodes.VPNGateway: + derived_from: aria.aws.nodes.Gateway + properties: + type: + description: > + Type of VPN Connection. Only valid value currently is ipsec.1 + type: string + default: ipsec.1 + availability_zone: + description: > + The Availability Zone where you want the VPN gateway. + type: string + default: '' + required: false + interfaces: + Standard: + create: + implementation: cloudify-aws-plugin > cloudify_aws.vpc.gateway.create_vpn_gateway + start: + implementation: cloudify-aws-plugin > cloudify_aws.vpc.gateway.start_vpn_gateway + delete: + implementation: cloudify-aws-plugin > cloudify_aws.vpc.gateway.delete_vpn_gateway + + aria.aws.nodes.CustomerGateway: + derived_from: aria.aws.nodes.Gateway + properties: + type: + description: > + Type of VPN Connection. Only valid value currently is ipsec.1 + type: string + default: ipsec.1 + ip_address: + description: > + Internet-routable IP address for customers gateway. Must be a static address + type: string + bgp_asn: + description: > + Customer gateways Border Gateway Protocol (BGP) Autonomous System Number (ASN) + type: integer + interfaces: + Standard: + create: + implementation: cloudify-aws-plugin > cloudify_aws.vpc.gateway.create_customer_gateway + start: + implementation: cloudify-aws-plugin > cloudify_aws.vpc.gateway.start_customer_gateway + delete: + implementation: cloudify-aws-plugin > cloudify_aws.vpc.gateway.delete_customer_gateway + requirements: + - vpn_gateway: + capability: tosca.capabilities.Node + node: aria.aws.nodes.VPNGateway + relationship: aria.aws.relationships.CustomerGatewayConnectedToVPNGateway + occurrences: [ 0, UNBOUNDED ] + + aria.aws.nodes.ACL: + derived_from: tosca.nodes.Root + properties: + use_external_resource: + description: > + Indicate whether the resource exists or it should be created, + true if you are bringing an existing resource, false if you want to create it. + type: boolean + default: false + resource_id: + description: > + The AWS resource ID of the external resource, if use_external_resource is true. + Otherwise it is an empty string. + type: string + default: '' + tags: + description: > + A dictionary of key/value pairs of tags you want to add. + type: map + default: {} + entry_schema: + type: string # http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/Using_Tags.html + acl_network_entries: + description: > + A list of rules of data type aria.datatypes.aws.NetworkAclEntry (see above). + type: list + entry_schema: + type: aria.aws.datatypes.NetworkAclEntry + default: [] + required: false + aws_config: + description: > + A dictionary of values to pass to authenticate with the AWS API. + type: aria.aws.datatypes.Config + required: false + interfaces: + Standard: + create: + implementation: cloudify-aws-plugin > cloudify_aws.vpc.networkacl.create_network_acl + start: + implementation: cloudify-aws-plugin > cloudify_aws.vpc.networkacl.start_network_acl + delete: + implementation: cloudify-aws-plugin > cloudify_aws.vpc.networkacl.delete_network_acl + Validation: + type: aria.aws.interfaces.Validation + creation: + implementation: cloudify-aws-plugin > cloudify_aws.vpc.networkacl.creation_validation + requirements: + - vpc: + capability: tosca.capabilities.Node + node: aria.aws.nodes.VPC + relationship: aria.aws.relationships.NetworkACLContainedInVPC + occurrences: [ 0, UNBOUNDED ] + - subnet: + capability: tosca.capabilities.Node + node: aria.aws.nodes.Subnet + relationship: aria.aws.relationships.NetworkACLAssociatedWithSubnet + occurrences: [ 0, UNBOUNDED ] + + aria.aws.nodes.DHCPOptions: + derived_from: tosca.nodes.Root + properties: + use_external_resource: + description: > + Indicate whether the resource exists or it should be created, + true if you are bringing an existing resource, false if you want to create it. + type: boolean + default: false + resource_id: + description: > + The AWS resource ID of the external resource, if use_external_resource is true. + Otherwise it is an empty string. + type: string + default: '' + tags: + description: > + A dictionary of key/value pairs of tags you want to add. + type: map + default: {} + entry_schema: + type: string # http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/Using_Tags.html + domain_name: + description: > + A domain name. + type: string + required: false + domain_name_servers: + description: > + A list of up to four DNS servers. + type: list + entry_schema: + type: string + default: [] + required: false + ntp_servers: + description: > + A list of up to four NTP servers. + type: list + entry_schema: + type: string + default: [] + required: false + netbios_name_servers: + description: > + A list of up to four netbios servers. + type: list + entry_schema: + type: string + default: [] + required: false + netbios_node_type: + description: > + netbios type. recommended two. + type: string + default: '' + required: false + aws_config: + description: > + A dictionary of values to pass to authenticate with the AWS API. + type: aria.aws.datatypes.Config + required: false + interfaces: + Standard: + create: + implementation: cloudify-aws-plugin > cloudify_aws.vpc.dhcp.create_dhcp_options + start: + implementation: cloudify-aws-plugin > cloudify_aws.vpc.dhcp.start_dhcp_options + delete: + implementation: cloudify-aws-plugin > cloudify_aws.vpc.dhcp.delete_dhcp_options + Validation: + type: aria.aws.interfaces.Validation + creation: + implementation: cloudify-aws-plugin > cloudify_aws.vpc.dhcp.creation_validation + requirements: + - vpc: + capability: tosca.capabilities.Node + node: aria.aws.nodes.VPC + relationship: aria.aws.relationships.DHCPOptionsAssociatedWithVPC + occurrences: [ 0, UNBOUNDED ] + + aria.aws.nodes.RouteTable: + derived_from: tosca.nodes.Root + properties: + use_external_resource: + description: > + Indicate whether the resource exists or it should be created, + true if you are bringing an existing resource, false if you want to create it. + type: boolean + default: false + required: true + resource_id: + description: > + The AWS resource ID of the external resource, if use_external_resource is true. + Otherwise it is an empty string. + type: string + default: '' + tags: + description: > + A dictionary of key/value pairs of tags you want to add. + type: map + default: {} + entry_schema: + type: string # http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/Using_Tags.html + aws_config: + description: > + A dictionary of values to pass to authenticate with the AWS API. + type: aria.aws.datatypes.Config + required: false + interfaces: + Standard: + create: + implementation: cloudify_aws.vpc.routetable.create_route_table + inputs: + routes: + description: > + A list of aria.aws.datatypes.Route. + type: list + entry_schema: + type: aria.aws.datatypes.Route + default: [] + start: + implementation: cloudify-aws-plugin > cloudify_aws.vpc.routetable.start_route_table + delete: + implementation: cloudify-aws-plugin > cloudify_aws.vpc.routetable.delete_route_table + Validation: + type: aria.aws.interfaces.Validation + creation: + implementation: cloudify-aws-plugin > cloudify_aws.vpc.routetable.creation_validation + requirements: + - vpc: + capability: tosca.capabilities.Node + node: aria.aws.nodes.VPC + relationship: aria.aws.relationships.SubnetContainedInVPC + occurrences: [ 0, UNBOUNDED ] + - subnet: + capability: tosca.capabilities.Node + node: aria.aws.nodes.Subnet + relationship: aria.aws.relationships.RoutetableAssociatedWithSubnet + occurrences: [ 0, UNBOUNDED ] + - gateway: + capability: tosca.capabilities.Node + node: aria.aws.nodes.Gateway + relationship: aria.aws.relationships.RouteTableToGateway + occurrences: [ 0, UNBOUNDED ] + + aria.aws.nodes.Interface: + derived_from: tosca.nodes.network.Port + properties: + use_external_resource: + description: > + Indicate whether the resource exists or it should be created, + true if you are bringing an existing resource, false if you want to create it. + type: boolean + default: false + resource_id: + description: > + The AWS resource ID of the external resource, if use_external_resource is true. + Otherwise it is an empty string. + type: string + default: '' + tags: + description: > + A dictionary of key/value pairs of tags you want to add. + type: map + default: {} + entry_schema: + type: string # http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/Using_Tags.html + parameters: + description: > + Any parameters accepted by the create_network_interface operation. + type: aria.aws.datatypes.NetworkInterfaceCreateParameters + required: false + aws_config: + description: > + A dictionary of values to pass to authenticate with the AWS API. + type: aria.aws.datatypes.Config + required: false + interfaces: + Standard: + create: + implementation: cloudify-aws-plugin > cloudify_aws.ec2.eni.create + inputs: + args: + type: aria.aws.datatypes.NetworkInterfaceCreateParameters + default: {} + start: + implementation: cloudify-aws-plugin > cloudify_aws.ec2.eni.start + delete: + implementation: cloudify-aws-plugin > cloudify_aws.ec2.eni.delete + inputs: + args: + type: map + entry_schema: + type: string + default: {} + requirements: + - instance: + capability: tosca.capabilities.Node + node: aria.aws.nodes.Instance + relationship: aria.aws.relationships.ENIConnectedToInstance + occurrences: [ 0, UNBOUNDED ] + + aria.aws.nodes.SecurityGroupRule: + derived_from: tosca.nodes.Root + properties: + use_external_resource: + type: boolean + default: False + resource_id: + description: > + The resource ID. + type: string + default: '' + required: false + rule: + description: > + A list of rules of data type aria.aws.datatypes.SecurityGroupRule (see above). + type: list + entry_schema: + type: aria.aws.datatypes.SecurityGroupRule + default: [] + required: false + aws_config: + description: > + A dictionary of values to pass to authenticate with the AWS API. + type: aria.aws.datatypes.Config + requirements: + - security_group_to_depend_on: + capability: tosca.capabilities.Node + node: aria.aws.nodes.SecurityGroup + relationship: aria.aws.relationships.RuleDependsOnSecurityGroup + occurrences: [ 0, UNBOUNDED ] + - security_group_to_be_contained_in: + capability: tosca.capabilities.Node + node: aria.aws.nodes.SecurityGroup + relationship: aria.aws.relationships.RuleContainedInSecurityGroup + occurrences: [ 0, UNBOUNDED ] + + aria.aws.nodes.SecurityGroupRule.Multi: + derived_from: aria.aws.nodes.SecurityGroupRule + interfaces: + Standard: + create: + implementation: cloudify-aws-plugin > cloudify_aws.ec2.securitygroup.create_rule + inputs: + args: + type: map + entry_schema: + type: aria.aws.datatypes.SecurityGroupRule + default: {} + delete: + implementation: cloudify-aws-plugin > cloudify_aws.ec2.securitygroup.delete_rule + inputs: + args: + type: map + entry_schema: + type: aria.aws.datatypes.SecurityGroupRule + default: {} + + +relationship_types: + aria.aws.relationships.ConnectedToElasticIP: + derived_from: tosca.relationships.ConnectsTo + interfaces: + Configure: + add_source: + implementation: cloudify-aws-plugin > cloudify_aws.ec2.elasticip.associate + remove_source: + implementation: cloudify-aws-plugin > cloudify_aws.ec2.elasticip.disassociate + + aria.aws.relationships.InstanceConnectedToElasticIP: + derived_from: aria.aws.relationships.ConnectedToElasticIP + + aria.aws.relationships.InstanceConnectedToKeypair: + derived_from: tosca.relationships.ConnectsTo + + aria.aws.relationships.ConnectedToSecurityGroup: + derived_from: tosca.relationships.ConnectsTo + + # The name of this relationship is not in CamelCase since in order to attach security group to an + # instance using the Cloudify AWS plugin, the relationship between the instance and the security + # group must be include the string 'instance_connected_to_security_group' in its name. + aria.aws.relationships.instance_connected_to_security_group: + derived_from: aria.aws.relationships.ConnectedToSecurityGroup + + aria.aws.relationships.InstanceConnectedToLoadBalancer: + derived_from: tosca.relationships.ConnectsTo + interfaces: + Configure: + add_source: + implementation: cloudify-aws-plugin > cloudify_aws.ec2.elasticloadbalancer.associate + remove_source: + implementation: cloudify-aws-plugin > cloudify_aws.ec2.elasticloadbalancer.disassociate + + aria.aws.relationships.VolumeConnectedToInstance: + derived_from: tosca.relationships.ConnectsTo + interfaces: + Configure: + add_source: + implementation: cloudify-aws-plugin > cloudify_aws.ec2.ebs.associate + inputs: + args: + type: map + entry_schema: + type: string + default: {} + force: + type: boolean + default: False + remove_source: + implementation: cloudify-aws-plugin > cloudify_aws.ec2.ebs.disassociate + inputs: + args: + type: map + entry_schema: + type: string + default: {} + force: + type: boolean + default: False + + aria.aws.relationships.SubnetContainedInVPC: + derived_from: tosca.relationships.HostedOn + + aria.aws.relationships.RoutetableContainedInVPC: + derived_from: tosca.relationships.HostedOn + + aria.aws.relationships.RoutetableAssociatedWithSubnet: + derived_from: tosca.relationships.ConnectsTo + interfaces: + Configure: + add_target: + implementation: cloudify-aws-plugin > cloudify_aws.vpc.routetable.associate_route_table + remove_target: + implementation: cloudify-aws-plugin > cloudify_aws.vpc.routetable.disassociate_route_table + + aria.aws.relationships.RouteTableToGateway: + derived_from: tosca.relationships.ConnectsTo + interfaces: + Configure: + add_target: + implementation: cloudify-aws-plugin > cloudify_aws.vpc.routetable.create_route_to_gateway + inputs: + destination_cidr_block: + description: > + Provide a specific value for the destination cidr block. + If the target is an internet gateway, then this is not necessary. + It will resolve to the cidr_block node property. + Otherwise, you need to provide this value. + type: string + default: '' + remove_target: + implementation: cloudify-aws-plugin > cloudify_aws.vpc.routetable.delete_route_from_gateway + + aria.aws.relationships.GatewayConnectedToVPC: + derived_from: tosca.relationships.ConnectsTo + interfaces: + Configure: + add_target: + implementation: cloudify-aws-plugin > cloudify_aws.vpc.gateway.attach_gateway + remove_target: + implementation: cloudify-aws-plugin > cloudify_aws.vpc.gateway.detach_gateway + + aria.aws.relationships.NetworkACLContainedInVPC: + derived_from: tosca.relationships.HostedOn + + aria.aws.relationships.NetworkACLAssociatedWithSubnet: + derived_from: tosca.relationships.ConnectsTo + interfaces: + Configure: + add_target: + implementation: cloudify-aws-plugin > cloudify_aws.vpc.networkacl.associate_network_acl + remove_target: + implementation: cloudify-aws-plugin > cloudify_aws.vpc.networkacl.disassociate_network_acl + + aria.aws.relationships.RouteTableOfSourceVPCConnectedToTargetPeerVPC: + derived_from: tosca.relationships.ConnectsTo + interfaces: + Configure: + pre_configure_target: + implementation: cloudify-aws-plugin > cloudify_aws.vpc.vpc.create_vpc_peering_connection + inputs: + target_account_id: + description: > + The 12 digit account ID that the target VPC belongs to. + type: string + default: '' + routes: + description: > + A list of aria.aws.datatypes.Route for assignment to the source Route Table. + type: list + entry_schema: + type: aria.aws.datatypes.Route + default: [] + post_configure_target: + implementation: cloudify-aws-plugin > cloudify_aws.vpc.vpc.accept_vpc_peering_connection + remove_target: + implementation: cloudify-aws-plugin > cloudify_aws.vpc.vpc.delete_vpc_peering_connection + + aria.aws.relationships.DHCPOptionsAssociatedWithVPC: + derived_from: tosca.relationships.ConnectsTo + interfaces: + Configure: + add_target: + implementation: cloudify-aws-plugin > cloudify_aws.vpc.dhcp.associate_dhcp_options + remove_target: + implementation: cloudify-aws-plugin > cloudify_aws.vpc.dhcp.restore_dhcp_options + + aria.aws.relationships.CustomerGatewayConnectedToVPNGateway: + derived_from: tosca.relationships.ConnectsTo + interfaces: + Configure: + add_target: + implementation: cloudify-aws-plugin > cloudify_aws.vpc.gateway.create_vpn_connection + inputs: + routes: + description: > + A list of static routes to add to this vpn_connection. + The routes will be of type aria.aws.datatypes.Route. + However, you can only provide the destination_cidr_block and a vpn_connection_id. + type: list + entry_schema: + type: aria.aws.datatypes.Route + default: [] + remove_target: + implementation: cloudify-aws-plugin > cloudify_aws.vpc.gateway.delete_vpn_connection + + aria.aws.relationships.InstanceContainedInSubnet: + derived_from: tosca.relationships.HostedOn + + aria.aws.relationships.InstanceConnectedToSubnet: + derived_from: tosca.relationships.ConnectsTo + + aria.aws.relationships.SecurityGroupContainedInVPC: + derived_from: tosca.relationships.HostedOn + + aria.aws.relationships.ConnectedToSubnet: # ARIA NOTE: I don't see a use for this relationship + derived_from: tosca.relationships.ConnectsTo + + aria.aws.relationships.ENIConnectedToInstance: + derived_from: tosca.relationships.ConnectsTo + interfaces: + Configure: + add_source: + implementation: cloudify-aws-plugin > cloudify_aws.ec2.eni.associate + inputs: + args: + type: map + entry_schema: + type: string + default: {} + remove_source: + implementation: cloudify-aws-plugin > cloudify_aws.ec2.eni.disassociate + inputs: + args: + type: map + entry_schema: + type: string + default: {} + + aria.aws.relationships.InstanceConnectedToENI: + derived_from: tosca.relationships.ConnectsTo + + aria.aws.relationships.SecurityGroupUsesRule: + derived_from: tosca.relationships.DependsOn + + aria.aws.relationships.RuleDependsOnSecurityGroup: + derived_from: tosca.relationships.DependsOn + + aria.aws.relationships.RuleContainedInSecurityGroup: + derived_from: tosca.relationships.HostedOn