##################################################################################
# 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
