vFW and vDNS support added to azure-plugin
[multicloud/azure.git] / azure / aria / aria-extension-cloudify / plugins / openstack / plugin.yaml
diff --git a/azure/aria/aria-extension-cloudify/plugins/openstack/plugin.yaml b/azure/aria/aria-extension-cloudify/plugins/openstack/plugin.yaml
new file mode 100644 (file)
index 0000000..8f3e6e6
--- /dev/null
@@ -0,0 +1,1174 @@
+#
+# 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-openstack-plugin:
+      description: >-
+        openstack plugin executes operations.
+      type: aria.Plugin
+      properties:
+        version: 2.0.1
+
+
+data_types:
+
+  aria.openstack.datatypes.Config:
+    description: >-
+      openstack configuration
+    properties:
+      username:
+        type: string
+      password:
+        type: string
+      tenant_name:
+        type: string
+      auth_url:
+        type: string
+      region:
+        type: string
+        required: false
+      nova_url:
+        type: string
+        required: false
+      neutron_url:
+        type: string
+        required: false
+
+  aria.openstack.datatypes.Rules:
+    description: >-
+      openstack security group rules
+    properties:
+      remote_ip_prefix:
+        type: string
+        default: 0.0.0.0/0
+      port:
+        type: integer
+        default:
+
+  # source: https://developer.openstack.org/api-ref/compute/
+
+  aria.openstack.datatypes.Server:
+    description: >-
+      openstack Server args.
+    properties:
+      security_groups:
+        type: list
+        entry_schema: string
+        required: false
+      availability_zone:
+        type: string
+        required: false
+      userdata:
+        type: string
+        required: false
+
+  aria.openstack.datatypes.Keypair:
+    description: >-
+      openstack keypair args.
+    properties:
+      public_key:
+        type: string
+        required: false
+      type:
+        type: string
+        required: false
+      user_id:
+        type: string
+        required: false
+
+  # source: https://developer.openstack.org/api-ref/block-storage/v2/index.html
+
+  aria.openstack.datatypes.Volume:
+    description: >-
+      openstack volume args.
+    properties:
+      size:
+        type: integer
+        required: false
+      description:
+        type: string
+        required: false
+      availability_zone:
+        type: string
+        required: false
+      consistencygroup_id:
+        type: string
+        required: false
+      volume_type:
+        type: string
+        required: false
+      snapshot_id:
+        type: string
+        required: false
+      source_replica:
+        type: string
+        required: false
+      tenant_id:
+        type: string
+        required: false
+
+  # source: https://developer.openstack.org/api-ref/image/
+
+  aria.openstack.datatypes.Image:
+    description: >-
+      openstack image args.
+    properties:
+      id:
+        type: string
+        required: false
+      min_disk:
+        type: integer
+        required: false
+      min_ram:
+        type: integer
+        required: false
+      name:
+        type: string
+        required: false
+      protected:
+        type: boolean
+        required: false
+      tags:
+        type: list
+        entry_schema: string
+        required: false
+      visibility:
+        type: string
+        required: false
+
+  # source: https://developer.openstack.org/api-ref/identity/v3/
+
+  aria.openstack.datatypes.Project:
+    description: >-
+      openstack image args.
+    properties:
+      is_domain:
+        type: boolean
+        required: false
+      description:
+        type: string
+        required: false
+      domain_id:
+        type: string
+        required: false
+      name:
+        type: string
+        required: false
+      enabled:
+        type: boolean
+        required: false
+      parent_id:
+        type: string
+        required: false
+
+  # source: https://developer.openstack.org/api-ref/networking/v2/index.html
+
+  aria.openstack.datatypes.Subnet:
+    description: >-
+      openstack subnet args.
+    properties:
+      network_id:
+        type: string
+        required: false
+      ip_version:
+        type: integer
+        required: false
+        default: 4
+      cidr:
+        type: string
+        required: false
+      gateway_ip:
+        type: string
+        required: false
+      dns_nameservers:
+        type: list
+        entry_schema: string
+        required: false
+      enable_dhcp:
+        type: boolean
+        required: false
+      tenant_id:
+        type: string
+        required: false
+
+  aria.openstack.datatypes.Port:
+    description: >-
+      openstack port args
+    properties:
+      network_id:
+        type: string
+        required: false
+      admin_state_up:
+        type: boolean
+        required: false
+      status:
+        type: string
+        required: false
+      mac_address:
+        type: string
+        required: false
+      device_id:
+        type: string
+        required: false
+      device_owner:
+        type: string
+        required: false
+      tenant_id:
+        type: string
+        required: false
+
+  aria.openstack.datatypes.Network:
+    description: >-
+      openstack network args
+    properties:
+      admin_state_up:
+        type: boolean
+        required: false
+      status:
+        type: string
+        required: false
+      subnets:
+        type: list
+        entry_schema: string
+        required: false
+      shared:
+        type: boolean
+        required: false
+      tenant_id:
+        type: string
+        required: false
+
+  aria.openstack.datatypes.SecurityGroup:
+    description: >-
+      openstack network args
+    properties:
+      admin_state_up:
+        type: boolean
+        required: false
+      port_security_enabled:
+        type: boolean
+        required: false
+      project_id:
+        type: string
+        required: false
+      qos_policy_id:
+        type: string
+        required: false
+      segments:
+        type: list
+        entry_schema: string
+        required: false
+      shared:
+        type: boolean
+        required: false
+      vlan_transparent:
+        type: boolean
+        required: false
+      tenant_id:
+        type: string
+        required: false
+
+  aria.openstack.datatypes.Router:
+    description: >-
+      openstack network args
+    properties:
+      bgpvpn_id:
+        type: string
+        required: false
+      router_id:
+        type: string
+        required: false
+
+  aria.openstack.datatypes.FloatingIP:
+    description: >-
+      openstack network args
+    properties:
+      tenant_id:
+        type: string
+        required: false
+      project_id:
+        type: string
+        required: false
+      floating_network_id:
+        type: string
+        required: false
+      floating_network_name:
+        type: string
+        required: false
+      fixed_ip_address:
+        type: string
+        required: false
+      floating_ip_address:
+        type: string
+        required: false
+      port_id:
+        type: string
+        required: false
+      subnet_id:
+        type: string
+        required: false
+
+
+interface_types:
+
+  aria.openstack.interfaces.validation:
+    derived_from: tosca.interfaces.Root
+    creation:
+      description: >-
+        creation operation for the openstack validation interface
+    deletion:
+      description: >-
+        deletion operation for the openstack validation interface
+
+
+node_types:
+
+  aria.openstack.nodes.Server:
+    derived_from: tosca.nodes.Compute
+    properties:
+      server:
+        default: {}
+        type: aria.openstack.datatypes.Server
+        required: false
+      ip:
+        default:
+        type: string
+      os_family:
+        description: >-
+          Property specifying what type of operating system family
+          this compute node will run.
+        default: linux
+        type: string
+      use_external_resource:
+        type: boolean
+        default: false
+        description: >-
+          a boolean for setting whether to create the resource or use an existing one.
+          See the using existing resources section.
+      create_if_missing:
+        default: false
+        type: boolean
+        description: >-
+          If use_external_resource is ``true`` and the resource is missing,
+          create it instead of failing.
+      resource_id:
+        default: ''
+        type: string
+        description: >-
+          name to give to the new resource or the name or ID of an existing resource when the ``use_external_resource`` property is set to ``true`` (see the using existing resources section). Defaults to '' (empty string).
+      image:
+        default: ''
+        type: string
+        description: >-
+          The image for the server.
+          May receive either the ID or the name of the image.
+          note: This property is currently optional for backwards compatibility,
+          but will be modified to become a required property in future versions
+          (Default: '').
+      flavor:
+        default: ''
+        type: string
+        description: >-
+          The flavor for the server.
+          May receive either the ID or the name of the flavor.
+          note: This property is currently optional for backwards compatibility,
+          but will be modified to become a required property in future versions
+          (Default: '').
+      use_password:
+        default: false
+        type: boolean
+        description: >-
+          A boolean describing whether this server image supports user-password authentication.
+          Images that do should post the administrator user's password to the Openstack metadata service (e.g. via cloudbase);
+          The password would then be retrieved by the plugin,
+          decrypted using the server's keypair and then saved in the server's runtime properties.
+      management_network_name:
+        type: string
+        description: >-
+          The current implementation of the openstack plugin requires this field. The value of
+          this field should be set to the openstack name of a network this server is attached to.
+      openstack_config:
+        type: aria.openstack.datatypes.Config
+        required: false
+        description: >-
+            see Openstack Configuraion
+    interfaces:
+      Standard:
+        create:
+          implementation: cloudify-openstack-plugin > nova_plugin.server.create
+          inputs:
+            args:
+              required: false
+              default: {}
+              type: aria.openstack.datatypes.Server
+        start:
+          implementation: cloudify-openstack-plugin > nova_plugin.server.start
+          inputs:
+            start_retry_interval:
+              default: 30
+              type: integer
+            private_key_path:
+              type: string
+              default: ''
+              required: true
+        stop: cloudify-openstack-plugin > nova_plugin.server.stop
+        delete: cloudify-openstack-plugin > nova_plugin.server.delete
+      Validation:
+        type: aria.openstack.interfaces.validation
+        creation:
+          implementation: cloudify-openstack-plugin > nova_plugin.server.creation_validation
+          inputs:
+            args:
+              required: false
+              default: {}
+              type: aria.openstack.datatypes.Server
+
+    requirements:
+      - floating_ip:
+          capability: tosca.capabilities.Node
+          node: aria.openstack.nodes.FloatingIP
+          relationship: aria.openstack.server_connected_to_floating_ip
+          occurrences: [ 0, UNBOUNDED ]
+      - security_group:
+          capability: tosca.capabilities.Node
+          node: aria.openstack.nodes.SecurityGroup
+          relationship: aria.openstack.server_connected_to_security_group
+          occurrences: [ 0, UNBOUNDED ]
+      - port:
+          capability: tosca.capabilities.Node
+          node: aria.openstack.nodes.Port
+          relationship: aria.openstack.server_connected_to_port
+          occurrences: [ 0, UNBOUNDED ]
+      - key_pair:
+          capability: tosca.capabilities.Node
+          node: aria.openstack.nodes.KeyPair
+          relationship: aria.openstack.server_connected_to_keypair
+          occurrences: [ 0, UNBOUNDED ]
+    capabilities:
+      openstack_container:
+        type: Node
+
+  aria.openstack.nodes.WindowsServer:
+    derived_from: aria.openstack.nodes.Server
+    properties:
+      use_password:
+        default: true
+        type: boolean
+        description: >-
+          Default changed for derived type
+          because Windows instances need a password for agent installation
+      os_family:
+        default: windows
+        type: string
+        description: >-
+          (updates the os_family default as a convenience)
+
+  aria.openstack.nodes.KeyPair:
+    derived_from: tosca.nodes.Root
+    properties:
+      keypair:
+        default: {}
+        type: aria.openstack.datatypes.Keypair
+        required: false
+        description: >-
+          the path (on the machine the plugin is running on) to
+          where the private key should be stored. If
+          use_external_resource is set to "true", the existing
+          private key is expected to be at this path.
+      private_key_path:
+        description: >
+          the path (on the machine the plugin is running on) to
+          where the private key should be stored. If
+          use_external_resource is set to "true", the existing
+          private key is expected to be at this path.
+        type: string
+      use_external_resource:
+        type: boolean
+        default: false
+        description: >-
+          a boolean describing whether this resource should be
+          created or rather that it already exists on Openstack
+          and should be used as-is.
+      create_if_missing:
+        default: false
+        type: boolean
+        description: >-
+          If use_external_resource is ``true`` and the resource is missing,
+          create it instead of failing.
+      resource_id:
+        default: ''
+        type: string
+        description: >-
+          the name that will be given to the resource on Openstack (excluding optional prefix).
+          If not provided, a default name will be given instead.
+          If use_external_resource is set to "true", this exact
+          value (without any prefixes applied) will be looked for
+          as either the name or id of an existing keypair to be used.
+      openstack_config:
+        type: aria.openstack.datatypes.Config
+        required: false
+    interfaces:
+      Standard:
+        create:
+          implementation: cloudify-openstack-plugin > nova_plugin.keypair.create
+          inputs:
+            args:
+              required: false
+              default: {}
+              type: aria.openstack.datatypes.Keypair
+
+        delete: cloudify-openstack-plugin > nova_plugin.keypair.delete
+
+      Validation:
+        type: aria.openstack.interfaces.validation
+        creation: cloudify-openstack-plugin > nova_plugin.keypair.creation_validation
+
+    capabilities:
+      keypair:
+        type: tosca.capabilities.Node
+
+  aria.openstack.nodes.Subnet:
+    derived_from: tosca.nodes.Root
+    properties:
+      subnet:
+        type: aria.openstack.datatypes.Subnet
+        required: false
+        default:
+          cidr: 172.16.0.0/16
+      use_external_resource:
+        type: boolean
+        default: false
+        description: >-
+          a boolean for setting whether to create the resource or use an existing one.
+          See the using existing resources section.
+      create_if_missing:
+        default: false
+        type: boolean
+        description: >-
+          If use_external_resource is ``true`` and the resource is missing,
+          create it instead of failing.
+      resource_id:
+        default: ''
+        type: string
+        description: >-
+          name to give to the new resource or the name or ID of an existing resource when the ``use_external_resource`` property is set to ``true`` (see the using existing resources section). Defaults to '' (empty string).
+      openstack_config:
+        type: aria.openstack.datatypes.Config
+        required: false
+    interfaces:
+      Standard:
+        create:
+          implementation: cloudify-openstack-plugin > neutron_plugin.subnet.create
+          inputs:
+            args:
+              required: false
+              type: aria.openstack.datatypes.Subnet
+              default:
+                cidr: 172.16.0.0/16
+        delete: cloudify-openstack-plugin > neutron_plugin.subnet.delete
+      Validation:
+        type: aria.openstack.interfaces.validation
+        creation:
+          implementation: cloudify-openstack-plugin > neutron_plugin.subnet.creation_validation
+          inputs:
+            args:
+              type: aria.openstack.datatypes.Subnet
+              required: false
+              default:
+                cidr: 172.16.0.0/16
+
+    requirements:
+      - router:
+          capability: tosca.capabilities.Node
+          node: aria.openstack.nodes.Router
+          relationship: aria.openstack.subnet_connected_to_router
+          occurrences: [ 0, UNBOUNDED ]
+      - network:
+          capability: tosca.capabilities.Node
+          node: aria.openstack.nodes.Network
+    capabilities:
+      subnet:
+        type: tosca.capabilities.Node
+
+  aria.openstack.nodes.SecurityGroup:
+    derived_from: tosca.nodes.Root
+    properties:
+      security_group:
+        type: aria.openstack.datatypes.SecurityGroup
+        required: false
+        default: {}
+      description:
+        type: string
+        default: ''
+        description: >-
+          SecurityGroup description.
+      create_if_missing:
+        default: false
+        type: boolean
+        description: >-
+          If use_external_resource is ``true`` and the resource is missing,
+          create it instead of failing.
+      use_external_resource:
+        type: boolean
+        default: false
+        description: >-
+          a boolean for setting whether to create the resource or use an existing one.
+          See the using existing resources section.
+      resource_id:
+        default: ''
+        type: string
+        description: >-
+          name to give to the new resource or the name or ID of an existing resource when the ``use_external_resource`` property is set to ``true`` (see the using existing resources section). Defaults to '' (empty string).
+      openstack_config:
+        type: aria.openstack.datatypes.Config
+        required: false
+      rules:
+        default: []
+        type: list
+        entry_schema: aria.openstack.datatypes.Rules
+      disable_default_egress_rules:
+        default: false
+        type: boolean
+        description: >-
+          a flag for removing the default rules which https://wiki.openstack.org/wiki/Neutron/SecurityGroups#Behavior. If not set to `true`, these rules will remain, and exist alongside any additional rules passed using the `rules` property.
+    interfaces:
+      Standard:
+        create:
+          implementation: cloudify-openstack-plugin > neutron_plugin.security_group.create
+          inputs:
+            args:
+              type: aria.openstack.datatypes.SecurityGroup
+              required: false
+              default: {}
+        delete: cloudify-openstack-plugin > neutron_plugin.security_group.delete
+
+      Validation:
+        type: aria.openstack.interfaces.validation
+        creation: cloudify-openstack-plugin > neutron_plugin.security_group.creation_validation
+
+    capabilities:
+      security:
+        type: tosca.capabilities.Node
+
+  aria.openstack.nodes.Router:
+    derived_from: tosca.nodes.Root
+    properties:
+      router:
+        type: aria.openstack.datatypes.Router
+        required: false
+        default: {}
+      external_network:
+        default: ''
+        type: string
+        description: >-
+          An external network name or ID.
+          If given, the router will use this external network as a gateway.
+      use_external_resource:
+        type: boolean
+        default: false
+        description: >-
+          a boolean for setting whether to create the resource or use an existing one.
+          See the using existing resources section.
+      create_if_missing:
+        default: false
+        type: boolean
+        description: >-
+          If use_external_resource is ``true`` and the resource is missing,
+          create it instead of failing.
+      resource_id:
+        default: ''
+        description: >-
+          name to give to the new resource or the name or ID of an existing resource when the ``use_external_resource`` property is set to ``true`` (see the using existing resources section). Defaults to '' (empty string).
+        type: string
+      openstack_config:
+        type: aria.openstack.datatypes.Config
+        required: false
+
+    interfaces:
+      Standard:
+        create:
+          implementation: cloudify-openstack-plugin > neutron_plugin.router.create
+          inputs:
+            args:
+              default: {}
+              type: aria.openstack.datatypes.Router
+              required: false
+        delete: cloudify-openstack-plugin > neutron_plugin.router.delete
+      Validation:
+        type: aria.openstack.interfaces.validation
+        creation: cloudify-openstack-plugin > neutron_plugin.router.creation_validation
+
+    capabilities:
+      gateway:
+        type: tosca.capabilities.Node
+
+  aria.openstack.nodes.Port:
+    derived_from: tosca.nodes.Root
+    properties:
+      port:
+        type: aria.openstack.datatypes.Port
+        required: false
+        default: {}
+      fixed_ip:
+        default: ''
+        type: string
+        description: >-
+          may be used to request a specific fixed IP for the port.
+          If the IP is unavailable
+          (either already taken or does not belong to a subnet the port is on)
+          an error will be raised.
+      use_external_resource:
+        type: boolean
+        default: false
+        description: >-
+          a boolean for setting whether to create the resource or use an existing one.
+          See the using existing resources section.
+      create_if_missing:
+        default: false
+        type: boolean
+        description: >-
+          If use_external_resource is ``true`` and the resource is missing,
+          create it instead of failing.
+      resource_id:
+        default: ''
+        type: string
+        description: >-
+          name to give to the new resource or the name or ID of an existing resource when the ``use_external_resource`` property is set to ``true`` (see the using existing resources section). Defaults to '' (empty string).
+      openstack_config:
+        type: aria.openstack.datatypes.Config
+        required: false
+
+    interfaces:
+      Standard:
+        create:
+          implementation: cloudify-openstack-plugin > neutron_plugin.port.create
+          inputs:
+            args:
+              default: {}
+              type: aria.openstack.datatypes.Port
+              required: false
+
+        delete: cloudify-openstack-plugin > neutron_plugin.port.delete
+
+      Validation:
+        type: aria.openstack.interfaces.validation
+        creation: cloudify-openstack-plugin > neutron_plugin.port.creation_validation
+
+    requirements:
+      - security_group:
+          capability: tosca.capabilities.Node
+          node: aria.openstack.nodes.SecurityGroup
+          relationship: aria.openstack.port_connected_to_security_group
+          occurrences: [ 0, UNBOUNDED ]
+      - floating_ip:
+          capability: tosca.capabilities.Node
+          node: aria.openstack.nodes.FloatingIP
+          relationship: aria.openstack.port_connected_to_floating_ip
+          occurrences: [ 0, UNBOUNDED ]
+      - subnet:
+          capability: tosca.capabilities.Node
+          node: aria.openstack.nodes.Subnet
+          relationship: aria.openstack.port_connected_to_subnet
+      - network:
+          capability: tosca.capabilities.Node
+          node: aria.openstack.nodes.Network
+          occurrences: [ 0, UNBOUNDED ]
+    capabilities:
+      entry_point:
+        type: tosca.capabilities.Node
+
+  aria.openstack.nodes.Network:
+    derived_from: tosca.nodes.Root
+    properties:
+      network:
+        type: aria.openstack.datatypes.Network
+        required: false
+        default: {}
+      use_external_resource:
+        type: boolean
+        default: false
+        description: >-
+          a boolean for setting whether to create the resource or use an existing one.
+          See the using existing resources section.
+      create_if_missing:
+        default: false
+        type: boolean
+        description: >-
+          If use_external_resource is ``true`` and the resource is missing,
+          create it instead of failing.
+      resource_id:
+        default: ''
+        type: string
+        description: >-
+          name to give to the new resource or the name or ID of an existing resource when the ``use_external_resource`` property is set to ``true`` (see the using existing resources section). Defaults to '' (empty string).
+      openstack_config:
+        type: aria.openstack.datatypes.Config
+        required: false
+    interfaces:
+      Standard:
+        create:
+          implementation: cloudify-openstack-plugin > neutron_plugin.network.create
+          inputs:
+            args:
+              default: {}
+              type: aria.openstack.datatypes.Network
+              required: false
+
+        delete: cloudify-openstack-plugin > neutron_plugin.network.delete
+
+      Validation:
+        type: aria.openstack.interfaces.validation
+        creation: cloudify-openstack-plugin > neutron_plugin.network.creation_validation
+
+    capabilities:
+      address_space:
+        type: tosca.capabilities.Node
+
+  aria.openstack.nodes.FloatingIP:
+    derived_from: tosca.nodes.Root
+    attributes:
+      floating_ip_address:
+        type: string
+    properties:
+      floatingip:
+        type: aria.openstack.datatypes.FloatingIP
+        required: false
+        default: {}
+      use_external_resource:
+        type: boolean
+        default: false
+        description: >-
+          a boolean for setting whether to create the resource or use an existing one.
+          See the using existing resources section.
+      create_if_missing:
+        default: false
+        type: boolean
+        description: >-
+          If use_external_resource is ``true`` and the resource is missing,
+          create it instead of failing.
+      resource_id:
+        description: IP address of the floating IP
+        default: ''
+        type: string
+        description: >-
+          name to give to the new resource or the name or ID of an existing resource when the ``use_external_resource`` property is set to ``true`` (see the using existing resources section). Defaults to '' (empty string).
+      openstack_config:
+        type: aria.openstack.datatypes.Config
+        required: false
+
+    interfaces:
+      Standard:
+        create:
+          implementation: cloudify-openstack-plugin > neutron_plugin.floatingip.create
+          inputs:
+            args:
+              default: {}
+              type: aria.openstack.datatypes.FloatingIP
+              required: false
+
+        delete: cloudify-openstack-plugin > neutron_plugin.floatingip.delete
+
+      Validation:
+        type: aria.openstack.interfaces.validation
+        creation: cloudify-openstack-plugin > neutron_plugin.floatingip.creation_validation
+
+    capabilities:
+      address:
+        type: tosca.capabilities.Node
+
+  aria.openstack.nodes.Volume:
+    derived_from: tosca.nodes.Root
+    properties:
+      volume:
+        default: {}
+        type: aria.openstack.datatypes.Volume
+        description: >-
+          key-value volume configuration as described in http://developer.openstack.org/api-ref-blockstorage-v1.html#volumes-v1. (**DEPRECATED - Use the `args` input in create operation instead**)
+      use_external_resource:
+        type: boolean
+        default: false
+        description: >-
+          a boolean for setting whether to create the resource or use an existing one.
+          See the using existing resources section.
+      create_if_missing:
+        default: false
+        type: boolean
+        description: >-
+          If use_external_resource is ``true`` and the resource is missing,
+          create it instead of failing.
+      resource_id:
+        default:
+        type: string
+        description: >-
+          name to give to the new resource or the name or ID of an existing resource when the ``use_external_resource`` property is set to ``true`` (see the using existing resources section). Defaults to '' (empty string).
+      device_name:
+        default: auto
+        type: string
+        description: >-
+          The device name this volume will be attached to.
+          Default value is *auto*,
+          which means openstack will auto-assign a device.
+          Note that if you do explicitly set a value,
+          this value may not be the actual device name assigned.
+          Sometimes the device requested will not be available and openstack will assign it to a different device,
+          this is why we recommend using *auto*.
+      openstack_config:
+        type: aria.openstack.datatypes.Config
+        required: false
+      boot:
+        type: boolean
+        default: false
+        description: >-
+          If a Server instance is connected to this Volume by a relationship,
+          this volume will be used as the boot volume for that Server.
+    interfaces:
+      Standard:
+        create:
+          implementation: cloudify-openstack-plugin > cinder_plugin.volume.create
+          inputs:
+            args:
+              default: {}
+              type: aria.openstack.datatypes.Volume
+              required: false
+
+            status_attempts:
+              description: >-
+                Number of times to check for the creation's status before failing
+              type: integer
+              default: 20
+            status_timeout:
+              description: >-
+                Interval (in seconds) between subsequent inquiries of the creation's
+                status
+              type: integer
+              default: 15
+        delete: cloudify-openstack-plugin > cinder_plugin.volume.delete
+
+      Validation:
+        type: aria.openstack.interfaces.validation
+        creation: cloudify-openstack-plugin > cinder_plugin.volume.creation_validation
+
+    requirements:
+      - server:
+          capability: tosca.capabilities.Node
+          node: aria.openstack.nodes.Server
+          relationship: aria.openstack.volume_attached_to_server
+
+  aria.openstack.nodes.Image:
+    derived_from: tosca.nodes.Root
+    properties:
+      image:
+        description: >-
+          Required parameters are (container_format, disk_format). Accepted
+          types are available on
+          http://docs.openstack.org/developer/glance/formats.html
+          To create an image from the local file its path should be added
+          in data parameter.
+        default: {}
+        type: map
+        entry_schema: string
+      image_url:
+        default: ''
+        type: string
+        description: >-
+          The openstack resource URL for the image.
+      use_external_resource:
+        default: false
+        type: boolean
+        description: >-
+          a boolean for setting whether to create the resource or use an existing one.
+          See the using existing resources section.
+      create_if_missing:
+        default: false
+        type: boolean
+        description: >-
+          If use_external_resource is ``true`` and the resource is missing,
+          create it instead of failing.
+      resource_id:
+        default: ''
+        type: string
+        description: >-
+          name to give to the new resource or the name or ID of an existing resource when the ``use_external_resource`` property is set to ``true`` (see the using existing resources section). Defaults to '' (empty string).
+      openstack_config:
+        type: aria.openstack.datatypes.Config
+        required: false
+    interfaces:
+      Standard:
+        create: cloudify-openstack-plugin > glance_plugin.image.create
+
+        start:
+          implementation: cloudify-openstack-plugin > glance_plugin.image.start
+          inputs:
+            start_retry_interval:
+              default: 30
+              type: integer
+
+        delete: cloudify-openstack-plugin > glance_plugin.image.delete
+
+      Validation:
+        type: aria.openstack.interfaces.validation
+        creation: cloudify-openstack-plugin > glance_plugin.image.creation_validation
+
+  aria.openstack.nodes.Project:
+    derived_from: tosca.nodes.Root
+    properties:
+      project:
+        default: {}
+        type: aria.openstack.datatypes.Project
+        description: >-
+          key-value project configuration.
+      users:
+        default: []
+        type: list
+        entry_schema: string
+        description: >-
+          List of users assigned to this project in the following format:
+            { name: string, roles: [string] }
+      quota:
+        default: {}
+        type: map
+        entry_schema: string
+        description: |
+          A dictionary mapping service names to quota definitions for a proejct
+
+          e.g::
+
+            quota:
+              neutron: <quota>
+              nova: <quota>
+      use_external_resource:
+        default: false
+        type: boolean
+        description: >-
+          a boolean for setting whether to create the resource or use an existing one.
+          See the using existing resources section.
+      create_if_missing:
+        default: false
+        type: boolean
+        description: >-
+          If use_external_resource is ``true`` and the resource is missing,
+          create it instead of failing.
+      resource_id:
+        default: ''
+        type: string
+        description: >-
+          name to give to the new resource or the name or ID of an existing resource when the ``use_external_resource`` property is set to ``true`` (see the using existing resources section). Defaults to '' (empty string).
+      openstack_config:
+        type: aria.openstack.datatypes.Config
+        required: false
+    interfaces:
+      Standard:
+        create: openstack.keystone_plugin.project.create
+        start: openstack.keystone_plugin.project.start
+        delete: openstack.keystone_plugin.project.delete
+      Validation:
+        type: aria.openstack.interfaces.validation
+        creation: openstack.keystone_plugin.project.creation_validation
+
+
+relationship_types:
+
+  aria.openstack.port_connected_to_security_group:
+    derived_from: ConnectsTo
+    interfaces:
+      Configure:
+        add_source: cloudify-openstack-plugin > neutron_plugin.port.connect_security_group
+
+  aria.openstack.subnet_connected_to_router:
+    derived_from: ConnectsTo
+    interfaces:
+      Configure:
+        add_target: cloudify-openstack-plugin > neutron_plugin.router.connect_subnet
+        remove_target: cloudify-openstack-plugin > neutron_plugin.router.disconnect_subnet
+
+  aria.openstack.server_connected_to_floating_ip:
+    derived_from: ConnectsTo
+    interfaces:
+      Configure:
+        add_source:
+          implementation: cloudify-openstack-plugin > nova_plugin.server.connect_floatingip
+          inputs:
+            fixed_ip:
+              description: >
+                The fixed IP to be associated with the floating IP.
+                If omitted, Openstack will choose which port to associate.
+              type: string
+              default: ''
+        remove_source: cloudify-openstack-plugin > nova_plugin.server.disconnect_floatingip
+
+  aria.openstack.port_connected_to_floating_ip:
+    derived_from: ConnectsTo
+    interfaces:
+      Configure:
+        add_source: cloudify-openstack-plugin > neutron_plugin.floatingip.connect_port
+        remove_source: cloudify-openstack-plugin > neutron_plugin.floatingip.disconnect_port
+
+  aria.openstack.server_connected_to_security_group:
+    derived_from: ConnectsTo
+    interfaces:
+      Configure:
+        add_source: cloudify-openstack-plugin > nova_plugin.server.connect_security_group
+        remove_source: cloudify-openstack-plugin > nova_plugin.server.disconnect_security_group
+
+  aria.openstack.server_connected_to_port:
+    derived_from: ConnectsTo
+    interfaces:
+      Configure:
+        remove_source: cloudify-openstack-plugin > neutron_plugin.port.detach
+
+  aria.openstack.server_connected_to_keypair:
+    derived_from: ConnectsTo
+
+  aria.openstack.port_connected_to_subnet:
+    derived_from: ConnectsTo
+
+  aria.openstack.volume_attached_to_server:
+    derived_from: ConnectsTo
+    interfaces:
+      Configure:
+        add_target:
+          implementation: cloudify-openstack-plugin > nova_plugin.server.attach_volume
+          inputs:
+
+            status_attempts:
+              description: >
+                Number of times to check for the attachment's status before failing
+              type: integer
+              default: 10
+            status_timeout:
+              description: >
+                Interval (in seconds) between subsequent inquiries of the attachment's
+                status
+              type: integer
+              default: 2
+        remove_target:
+          implementation: cloudify-openstack-plugin > nova_plugin.server.detach_volume
+          inputs:
+
+            status_attempts:
+              description: >
+                Number of times to check for the detachment's status before failing
+              type: integer
+              default: 10
+            status_timeout:
+              description: >
+                Interval (in seconds) between subsequent inquiries of the detachment's
+                status
+              type: integer
+              default: 2