ARIA multivim plugin initial checkin

Change-Id: I3a24ab6fc5ba54466bfecaf596a13b8907248ae8
Issue-id: SO-77
Signed-off-by: DeWayne Filppi <dewayne@gigaspaces.com>
diff --git a/aria/multivim-plugin/plugin.yaml b/aria/multivim-plugin/plugin.yaml
new file mode 100644
index 0000000..9c1c2ca
--- /dev/null
+++ b/aria/multivim-plugin/plugin.yaml
@@ -0,0 +1,954 @@
+##################################################################################
+# Multi-vim built in types and plugins definitions.
+##################################################################################
+
+plugins:
+  multivim:
+    executor: central_deployment_agent
+    #source: https://github.com/cloudify-cosmo/onap-multivim-plugin/archive/2.2.0.zip
+    source: 
+    package_name: onap-multivim-plugin
+    package_version: '2.2.0'
+
+node_types:
+  onap.multivim.nodes.Server:
+    derived_from: cloudify.nodes.Compute
+    properties:
+      server:
+        default: {}
+        description: >
+          key-value server configuration as described in OpenStack compute create server API. (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
+        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).
+      image:
+        default: ''
+        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: ''
+        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: '').
+      management_network_name:
+        default: ''
+        description: >
+          Cloudify's management network name.
+          Every server should be connected to the management network.
+          If the management network's name information is available in the Provider Context,
+          this connection is made automatically and there's no need to override this property
+          (See the Misc section for more information on the Openstack Provider Context).
+          Otherwise, it is required to set the value of this property to the management network name as it was set in the bootstrap process.
+          Note: When using Nova-net Openstack (see the Nova-net Support section),
+          don't set this property. Defaults to '' (empty string).
+      use_password:
+        default: false
+        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.
+      multivim_config:
+        default: {}
+        description: >
+          see Openstack Configuraion
+    interfaces:
+      cloudify.interfaces.lifecycle:
+        create:
+          implementation: openstack.nova_plugin.server.create
+          inputs:
+            args:
+              default: {}
+            multivim_config:
+              default: {}
+        start:
+          implementation: openstack.nova_plugin.server.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: ''
+            multivim_config:
+              default: {}
+        stop:
+          implementation: openstack.nova_plugin.server.stop
+          inputs:
+            multivim_config:
+              default: {}
+        delete:
+          implementation: openstack.nova_plugin.server.delete
+          inputs:
+            multivim_config:
+              default: {}
+      cloudify.interfaces.validation:
+        creation:
+          implementation: openstack.nova_plugin.server.creation_validation
+          inputs:
+            args:
+              default: {}
+            multivim_config:
+              default: {}
+
+  onap.multivim.nodes.WindowsServer:
+    derived_from: onap.multivim.nodes.Server
+    properties:
+      use_password:
+        default: true
+        description: >
+          Default changed for derived type
+          because Windows instances need a password for agent installation
+      os_family:
+        default: windows
+        description: >
+          (updates the os_family default as a convenience)
+      agent_config:
+        type: cloudify.datatypes.AgentConfig
+        default:
+          port: 5985
+        description: >
+          (updates the defaults for the agent_config for Windows)
+
+  onap.multivim.nodes.KeyPair:
+    derived_from: cloudify.nodes.Root
+    properties:
+      keypair:
+        default: {}
+        description: >
+          the keypair object as described by Openstack. This
+          parameter can be used to override and pass parameters
+          directly to Nova client.
+          Note that in the case of keypair, the only nested parameter
+          that can be used is "name".
+      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.
+      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
+        description: >
+          If use_external_resource is ``true`` and the resource is missing,
+          create it instead of failing.
+      resource_id:
+        default: ''
+        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.
+      multivim_config:
+        default: {}
+        description: >
+          endpoints and authentication configuration for Openstack.
+          Expected to contain the following nested fields:
+          username, password, tenant_name, auth_url, region.
+    interfaces:
+      cloudify.interfaces.lifecycle:
+        create:
+          implementation: openstack.nova_plugin.keypair.create
+          inputs:
+            args:
+              default: {}
+            multivim_config:
+              default: {}
+        delete:
+          implementation: openstack.nova_plugin.keypair.delete
+          inputs:
+            multivim_config:
+              default: {}
+      cloudify.interfaces.validation:
+        creation:
+          implementation: openstack.nova_plugin.keypair.creation_validation
+          inputs:
+            multivim_config:
+              default: {}
+
+  onap.multivim.nodes.Subnet:
+    derived_from: cloudify.nodes.Subnet
+    properties:
+      subnet:
+        default: {}
+        description: >
+          key-value subnet configuration as described at http://developer.openstack.org/api-ref-networking-v2.html#subnets. (**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
+        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).
+      multivim_config:
+        default: {}
+        description: >
+          endpoints and authentication configuration for Openstack.
+          Expected to contain the following nested fields:
+          username, password, tenant_name, auth_url, region.
+    interfaces:
+      cloudify.interfaces.lifecycle:
+        create:
+          implementation: openstack.neutron_plugin.subnet.create
+          inputs:
+            args:
+              default: {}
+            multivim_config:
+              default: {}
+        delete:
+          implementation: openstack.neutron_plugin.subnet.delete
+          inputs:
+            multivim_config:
+              default: {}
+      cloudify.interfaces.validation:
+        creation:
+          implementation: openstack.neutron_plugin.subnet.creation_validation
+          inputs:
+            args:
+              default: {}
+            multivim_config:
+              default: {}
+
+  onap.multivim.nodes.SecurityGroup:
+    derived_from: cloudify.nodes.SecurityGroup
+    properties:
+      security_group:
+        default: {}
+        description: >
+          key-value security_group configuration as described in http://developer.openstack.org/api-ref-networking-v2-ext.html#createSecGroup. (**DEPRECATED - Use the `args` input in create operation instead**)
+      description:
+        type: string
+        default: ''
+        description: >
+          SecurityGroup description.
+      create_if_missing:
+        default: false
+        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: ''
+        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).
+      multivim_config:
+        default: {}
+        description: >
+          endpoints and authentication configuration for Openstack.
+          Expected to contain the following nested fields:
+          username, password, tenant_name, auth_url, region.
+      rules:
+        default: []
+        description: >
+          key-value security_group_rule configuration as described in http://developer.openstack.org/api-ref-networking-v2.html#security_groups
+      disable_default_egress_rules:
+        default: false
+        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:
+      cloudify.interfaces.lifecycle:
+        create:
+          implementation: openstack.neutron_plugin.security_group.create
+          inputs:
+            args:
+              default: {}
+            multivim_config:
+              default: {}
+        delete:
+          implementation: openstack.neutron_plugin.security_group.delete
+          inputs:
+            multivim_config:
+              default: {}
+      cloudify.interfaces.validation:
+        creation:
+          implementation: openstack.neutron_plugin.security_group.creation_validation
+          inputs:
+            multivim_config:
+              default: {}
+
+  onap.multivim.nodes.Router:
+    derived_from: cloudify.nodes.Router
+    properties:
+      router:
+        default: {}
+        description: >
+          key-value router configuration as described in http://developer.openstack.org/api-ref-networking-v2.html#layer3. (**DEPRECATED - Use the `args` input in create operation instead**)
+      external_network:
+        default: ''
+        description: >
+          An external network name or ID.
+          If given, the router will use this external network as a gateway.
+      default_to_managers_external_network:
+        default: true
+        description: >
+          A boolean which determines whether to use the Cloudify Manager's external network if no other external network was given (whether by a relationship, by the `external_network` property or by the nested `external_gateway_info` key in the `router` property). This is only relevant if the manager's external network appears in the Provider-context. Defaults to `true`.
+      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
+        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).
+      multivim_config:
+        default: {}
+        description: >
+          endpoints and authentication configuration for Openstack.
+          Expected to contain the following nested fields:
+          username, password, tenant_name, auth_url, region.
+    interfaces:
+      cloudify.interfaces.lifecycle:
+        create:
+          implementation: openstack.neutron_plugin.router.create
+          inputs:
+            args:
+              default: {}
+            multivim_config:
+              default: {}
+        delete:
+          implementation: openstack.neutron_plugin.router.delete
+          inputs:
+            multivim_config:
+              default: {}
+      cloudify.interfaces.validation:
+        creation:
+          implementation: openstack.neutron_plugin.router.creation_validation
+          inputs:
+            multivim_config:
+              default: {}
+
+  onap.multivim.nodes.Port:
+    derived_from: cloudify.nodes.Port
+    properties:
+      port:
+        default: {}
+        description: >
+          key-value port configuration as described in http://developer.openstack.org/api-ref-networking-v2.html#ports. (**DEPRECATED - Use the `args` input in create operation instead**)
+      fixed_ip:
+        default: ''
+        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
+        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).
+      multivim_config:
+        default: {}
+        description: >
+          endpoints and authentication configuration for Openstack.
+          Expected to contain the following nested fields:
+          username, password, tenant_name, auth_url, region.
+    interfaces:
+      cloudify.interfaces.lifecycle:
+        create:
+          implementation: openstack.neutron_plugin.port.create
+          inputs:
+            args:
+              default: {}
+            multivim_config:
+              default: {}
+        delete:
+          implementation: openstack.neutron_plugin.port.delete
+          inputs:
+            multivim_config:
+              default: {}
+      cloudify.interfaces.validation:
+        creation:
+          implementation: openstack.neutron_plugin.port.creation_validation
+          inputs:
+            multivim_config:
+              default: {}
+
+  onap.multivim.nodes.Network:
+    derived_from: cloudify.nodes.Network
+    properties:
+      network:
+        default: {}
+        description: >
+          key-value network configuration as described in http://developer.openstack.org/api-ref-networking-v2.html#networks. (**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
+        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).
+      multivim_config:
+        default: {}
+        description: >
+          endpoints and authentication configuration for Openstack.
+          Expected to contain the following nested fields:
+          username, password, tenant_name, auth_url, region.
+    interfaces:
+      cloudify.interfaces.lifecycle:
+        create:
+          implementation: openstack.neutron_plugin.network.create
+          inputs:
+            args:
+              default: {}
+            multivim_config:
+              default: {}
+        delete:
+          implementation: openstack.neutron_plugin.network.delete
+          inputs:
+            multivim_config:
+              default: {}
+      cloudify.interfaces.validation:
+        creation:
+          implementation: openstack.neutron_plugin.network.creation_validation
+          inputs:
+            multivim_config:
+              default: {}
+
+  onap.multivim.nodes.FloatingIP:
+    derived_from: cloudify.nodes.VirtualIP
+    properties:
+      floatingip:
+        default: {}
+        description: >
+          key-value floatingip configuration as described in http://developer.openstack.org/api-ref-networking-v2.html#layer3. (**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
+        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: ''
+      multivim_config:
+        default: {}
+        description: >
+          endpoints and authentication configuration for Openstack.
+          Expected to contain the following nested fields:
+          username, password, tenant_name, auth_url, region.
+    interfaces:
+      cloudify.interfaces.lifecycle:
+        create:
+          implementation: openstack.neutron_plugin.floatingip.create
+          inputs:
+            args:
+              default: {}
+            multivim_config:
+              default: {}
+        delete:
+          implementation: openstack.neutron_plugin.floatingip.delete
+          inputs:
+            multivim_config:
+              default: {}
+      cloudify.interfaces.validation:
+        creation:
+          implementation: openstack.neutron_plugin.floatingip.creation_validation
+          inputs:
+            multivim_config:
+              default: {}
+
+  onap.multivim.nodes.Volume:
+    derived_from: cloudify.nodes.Volume
+    properties:
+      volume:
+        default: {}
+        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
+        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).
+      device_name:
+        default: auto
+        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*.
+      multivim_config:
+        default: {}
+        description: >
+          endpoints and authentication configuration for Openstack.
+          Expected to contain the following nested fields:
+          username, password, tenant_name, auth_url, region.
+      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:
+      cloudify.interfaces.lifecycle:
+        create:
+          implementation: openstack.cinder_plugin.volume.create
+          inputs:
+            args:
+              default: {}
+            multivim_config:
+              default: {}
+            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:
+          implementation: openstack.cinder_plugin.volume.delete
+          inputs:
+            multivim_config:
+              default: {}
+      cloudify.interfaces.validation:
+        creation:
+          implementation: openstack.cinder_plugin.volume.creation_validation
+          inputs:
+            multivim_config:
+              default: {}
+
+  onap.multivim.nova_net.nodes.FloatingIP:
+    derived_from: cloudify.nodes.VirtualIP
+    properties:
+      floatingip:
+        default: {}
+        description: >
+          key-value floatingip configuration as described in http://developer.openstack.org/api-ref-compute-v2-ext.html#ext-os-floating-ips. (**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
+        description: >
+          TODO: CREATE. THIS IS MISSING
+      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).
+      multivim_config:
+        default: {}
+        description: >
+          endpoints and authentication configuration for Openstack.
+          Expected to contain the following nested fields:
+          username, password, tenant_name, auth_url, region.
+    interfaces:
+      cloudify.interfaces.lifecycle:
+        create:
+          implementation: openstack.nova_plugin.floatingip.create
+          inputs:
+            args:
+              default: {}
+            multivim_config:
+              default: {}
+        delete:
+          implementation: openstack.nova_plugin.floatingip.delete
+          inputs:
+            multivim_config:
+              default: {}
+      cloudify.interfaces.validation:
+        creation:
+          implementation: openstack.nova_plugin.floatingip.creation_validation
+          inputs:
+            multivim_config:
+              default: {}
+
+  onap.multivim.nova_net.nodes.SecurityGroup:
+    derived_from: cloudify.nodes.SecurityGroup
+    properties:
+      security_group:
+        default: {}
+        description: >
+          key-value security_group configuration as described in http://developer.openstack.org/api-ref-compute-v2-ext.html#ext-os-security-groups. (**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
+        description: >
+          TODO: CREATE. THIS IS MISSING
+      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).
+      multivim_config:
+        default: {}
+        description: >
+          endpoints and authentication configuration for Openstack.
+          Expected to contain the following nested fields:
+          username, password, tenant_name, auth_url, region.
+      rules:
+        default: []
+        description: >
+          key-value security group rule as described in http://developer.openstack.org/api-ref-compute-v2-ext.html#ext-os-security-group-default-rules.
+      description:
+        description: security group description
+    interfaces:
+      cloudify.interfaces.lifecycle:
+        create:
+          implementation: openstack.nova_plugin.security_group.create
+          inputs:
+            args:
+              default: {}
+            multivim_config:
+              default: {}
+            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
+        delete:
+          implementation: openstack.nova_plugin.security_group.delete
+          inputs:
+            multivim_config:
+              default: {}
+      cloudify.interfaces.validation:
+        creation:
+          implementation: openstack.nova_plugin.security_group.creation_validation
+          inputs:
+            multivim_config:
+              default: {}
+
+  onap.multivim.nodes.Image:
+    derived_from: cloudify.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: {}
+      image_url:
+        default: ''
+        description: >
+          The openstack resource URL for the image.
+      use_external_resource:
+        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
+        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).
+      multivim_config:
+        default: {}
+        description: >
+          endpoints and authentication configuration for Openstack.
+          Expected to contain the following nested fields:
+          username, password, tenant_name, auth_url, region.
+    interfaces:
+      cloudify.interfaces.lifecycle:
+        create:
+          implementation: openstack.glance_plugin.image.create
+          inputs:
+            multivim_config:
+              default: {}
+        start:
+          implementation: openstack.glance_plugin.image.start
+          inputs:
+            start_retry_interval:
+              default: 30
+            multivim_config:
+              default: {}
+        delete:
+          implementation: openstack.glance_plugin.image.delete
+          inputs:
+            multivim_config:
+              default: {}
+      cloudify.interfaces.validation:
+        creation:
+          implementation: openstack.glance_plugin.image.creation_validation
+          inputs:
+            multivim_config:
+              default: {}
+
+
+  onap.multivim.nodes.Project:
+    derived_from: cloudify.nodes.Root
+    properties:
+      project:
+        default: {}
+        description: >
+          key-value project configuration.
+      users:
+        default: []
+        description: >
+          List of users assigned to this project in the following format:
+            { name: string, roles: [string] }
+      quota:
+        default: {}
+        description: |
+          A dictionary mapping service names to quota definitions for a proejct
+
+          e.g::
+
+            quota:
+              neutron: <quota>
+              nova: <quota>
+      use_external_resource:
+        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
+        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).
+      multivim_config:
+        default: {}
+        description: >
+          endpoints and authentication configuration for Openstack.
+          Expected to contain the following nested fields:
+          username, password, tenant_name, auth_url, region.
+    interfaces:
+      cloudify.interfaces.lifecycle:
+        create: openstack.keystone_plugin.project.create
+        start: openstack.keystone_plugin.project.start
+        delete: openstack.keystone_plugin.project.delete
+      cloudify.interfaces.validation:
+        creation: openstack.keystone_plugin.project.creation_validation
+
+relationships:
+  onap.multivim.port_connected_to_security_group:
+    derived_from: cloudify.relationships.connected_to
+    source_interfaces:
+      cloudify.interfaces.relationship_lifecycle:
+        establish:
+          implementation: openstack.neutron_plugin.port.connect_security_group
+          inputs:
+            multivim_config:
+              default: {}
+
+  onap.multivim.subnet_connected_to_router:
+    derived_from: cloudify.relationships.connected_to
+    target_interfaces:
+      cloudify.interfaces.relationship_lifecycle:
+        establish:
+          implementation: openstack.neutron_plugin.router.connect_subnet
+          inputs:
+            multivim_config:
+              default: {}
+        unlink:
+          implementation: openstack.neutron_plugin.router.disconnect_subnet
+          inputs:
+            multivim_config:
+              default: {}
+
+  onap.multivim.server_connected_to_floating_ip:
+    derived_from: cloudify.relationships.connected_to
+    source_interfaces:
+      cloudify.interfaces.relationship_lifecycle:
+        establish:
+          implementation: openstack.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: ''
+            multivim_config:
+              default: {}
+        unlink:
+          implementation: openstack.nova_plugin.server.disconnect_floatingip
+          inputs:
+            multivim_config:
+              default: {}
+
+  onap.multivim.port_connected_to_floating_ip:
+    derived_from: cloudify.relationships.connected_to
+    source_interfaces:
+      cloudify.interfaces.relationship_lifecycle:
+        establish:
+          implementation: openstack.neutron_plugin.floatingip.connect_port
+          inputs:
+            multivim_config:
+              default: {}
+        unlink:
+          implementation: openstack.neutron_plugin.floatingip.disconnect_port
+          inputs:
+            multivim_config:
+              default: {}
+
+  onap.multivim.server_connected_to_security_group:
+    derived_from: cloudify.relationships.connected_to
+    source_interfaces:
+      cloudify.interfaces.relationship_lifecycle:
+        establish:
+          implementation: openstack.nova_plugin.server.connect_security_group
+          inputs:
+            multivim_config:
+              default: {}
+        unlink:
+          implementation: openstack.nova_plugin.server.disconnect_security_group
+          inputs:
+            multivim_config:
+              default: {}
+
+  onap.multivim.server_connected_to_port:
+    derived_from: cloudify.relationships.connected_to
+    source_interfaces:
+      cloudify.interfaces.relationship_lifecycle:
+        unlink:
+          implementation: openstack.neutron_plugin.port.detach
+          inputs:
+            multivim_config:
+              default: {}
+
+  onap.multivim.server_connected_to_keypair:
+    derived_from: cloudify.relationships.connected_to
+
+  onap.multivim.port_connected_to_subnet:
+    derived_from: cloudify.relationships.connected_to
+
+  onap.multivim.volume_attached_to_server:
+    derived_from: cloudify.relationships.connected_to
+    target_interfaces:
+      cloudify.interfaces.relationship_lifecycle:
+        establish:
+          implementation: openstack.nova_plugin.server.attach_volume
+          inputs:
+            multivim_config:
+              default: {}
+            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
+        unlink:
+          implementation: openstack.nova_plugin.server.detach_volume
+          inputs:
+            multivim_config:
+              default: {}
+            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