vFW and vDNS support added to azure-plugin
[multicloud/azure.git] / azure / aria / aria-extension-cloudify / src / aria / extensions / aria_extension_tosca / profiles / azure-plugin / azureplugin.yaml
diff --git a/azure/aria/aria-extension-cloudify/src/aria/extensions/aria_extension_tosca/profiles/azure-plugin/azureplugin.yaml b/azure/aria/aria-extension-cloudify/src/aria/extensions/aria_extension_tosca/profiles/azure-plugin/azureplugin.yaml
new file mode 100644 (file)
index 0000000..77b61b5
--- /dev/null
@@ -0,0 +1,1981 @@
+#
+# 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-azure-plugin:
+      description: >-
+        azure plugin executes operations.
+      type: aria.Plugin
+      properties:
+        version: 1.4.2
+
+
+data_types:
+
+  aria.azure.datatypes.Config:
+    description: >-
+      azure configuration
+    properties:
+      subscription_id:
+        description: >
+          A Microsoft Azure subscription ID. This is a unique
+          user account in Azure. This can be found in the
+          Subscriptions tab on your dashboard.
+        type: string
+        required: false
+      tenant_id:
+        description: >
+          A Microsoft Azure tenant ID. This can be found in
+          the Azure Active Directory dashboard by accessing
+          your directory. Open the Application Endpoints
+          dialog and your tenant ID will be in the URL for
+          the OAUTH2.0 TOKEN ENDPOINT.
+        type: string
+        required: false
+      client_id:
+        description: >
+          A Microsoft Azure client ID. This can be found in
+          the Azure Active Directory dashboard by accessing
+          your directory. View the Applications tab and select
+          the application used to access Azure APIs.  Your
+          client ID can be found by expanding the ACCESS WEB
+          APIS IN OTHER APPLICATIONS tab.
+        type: string
+        required: false
+      client_secret:
+        description: >
+          A Microsoft Azure client secret key. This can be found
+          or generated in the same location as your client ID.
+        type: string
+        required: false
+      scale_name_separator:
+        description: >
+          When scaling resources, a unique name must be sent to
+          the Azure API. Since names are left to the user to
+          manage (the service does not generate unique IDs),
+          this plugin will attempt to append characters or
+          numbers to the end of the resource name when resources
+          are scaled out. This value should be a character, or
+          characters, that will separate the base name from the
+          generated unique characters.  For instance, if the
+          base name of a resource is "myvm", the separator is
+          set to "_", and a scale workflow attempts to create
+          another resource, the resulting name could be
+          something like "myvm_1". This field can be left blank.
+        type: string
+        required: false
+        default: "_"
+      scale_name_suffix_chars:
+        description: >
+          A string of characters (ASCII) to be used when
+          generating unique suffix data when scaling resources.
+          See "scale_name_separator" for more information.
+        type: string
+        required: true
+        default: "1234567890"
+
+  aria.azure.datatypes.AgentConfig:
+    properties:
+      install_method:
+        type: string
+        required: false
+      port:
+        type: integer
+        required: false
+
+
+  aria.azure.datatypes.StorageAccountConfig:
+    description: >
+      See https://msdn.microsoft.com/en-us/library/mt163564.aspx
+    properties:
+      accountType:
+        description: >
+          An storage account type (case sensitive)
+        type: string
+        default: Standard_LRS
+        required: true
+
+  aria.azure.datatypes.DataDiskConfig:
+    properties:
+      container_name:
+        type: string
+        description: >
+          Container for the resource.
+        default: vhds
+      size:
+        description: >
+          Size of the Page Blob (Azure disk) in GiB. Maximum of 1023 GiB allowed.
+        type: integer
+        default: 20
+        required: true
+      force_delete:
+        description: >
+          If set to true, the resource's "delete" lifecycle will purge the
+          Azure Data Disk from the Azure Storage Account. If false, the
+          Data Disk is left as-is in the Storage Account.
+        type: boolean
+        default: false
+
+
+  aria.azure.datatypes.FileShareConfig:
+    properties:
+      metadata:
+        description: >
+          Metadata (dict) for the File Share
+        required: false
+        type: string
+      quota:
+        description: >
+          Quote, in GiB, for the maximum size of the file share
+        required: false
+        type: integer
+      fail_on_exist:
+        description: >
+          If true, causes the operation to raise a NonRecoverableError if
+          the file share already exists. If false, issues a warning and
+          continues execution.
+        default: false
+        type: boolean
+
+  aria.azure.datatypes.AddressSpace:
+    description: >
+      Contains the address prefix,typically network CIDR
+    properties:
+      addressPrefixes:
+        required: true
+        type: list
+        entry_schema: string
+
+  aria.azure.datatypes.VirtualNetworkConfig:
+    description: >
+      See https://msdn.microsoft.com/en-us/library/mt163661.aspx
+    properties:
+      addressSpace:
+        default:
+          addressPrefixes:
+          - 172.16.0.0/16
+        required: true
+        type: aria.azure.datatypes.AddressSpace
+      dhcpOptions:
+        required: false
+        type: string
+      subnets:
+        required: false
+        type: string
+
+  aria.azure.datatypes.NetworkSecurityGroupConfig:
+    description: >
+      See https://msdn.microsoft.com/en-us/library/mt163656.aspx
+    properties:
+      securityRules:
+        required: false
+        type: list
+        entry_schema: string
+
+
+
+  aria.azure.datatypes.NetworkSecurityRuleConfig:
+    description: >
+      See https://msdn.microsoft.com/en-us/library/mt163645.aspx
+    properties:
+      description:
+        type: string
+        required: false
+      protocol:
+        type: string
+        required: true
+      sourcePortRange:
+        type: string
+        required: false
+      destinationPortRange:
+        type: string
+        required: false
+      sourceAddressPrefix:
+        type: string
+        required: true
+      destinationAddressPrefix:
+        type: string
+        required: true
+      access:
+        type: string
+        required: true
+      priority:
+        type: integer
+        required: true
+      direction:
+        type: string
+        required: true
+
+  aria.azure.datatypes.SubnetConfig:
+    description: >
+      See https://msdn.microsoft.com/en-us/library/mt163621.aspx
+    properties:
+      addressPrefix:
+        type: string
+        required: false
+      networkSecurityGroup:
+        type: string
+        required: false
+      routeTable:
+        type: string
+        required: false
+
+
+
+
+
+
+
+  aria.azure.datatypes.RouteTableConfig:
+    description: >
+      See https://msdn.microsoft.com/en-us/library/mt502548.aspx
+    properties:
+      routes:
+        type: string
+        required: false
+
+
+  aria.azure.datatypes.RouteConfig:
+    description: >
+      See https://msdn.microsoft.com/en-us/library/mt459110.aspx
+    properties:
+      addressPrefix:
+        type: string
+        required: true
+      nextHopType:
+        type: string
+        required: true
+      nextHopIpAddress:
+        type: string
+        required: false
+
+
+  aria.azure.datatype.NetworkInterfaceDnsSettings:
+    description: >
+      See https://msdn.microsoft.com/en-us/library/mt163668.aspx
+    properties:
+      appliedDnsServers:
+        type: list
+        entry_schema: string
+        required: false
+      dnsServers:
+        type: list
+        entry_schema: string
+        required: false
+      internalDnsNameLabel:
+        type: string
+        required: false
+      internalDomainNameSuffix:
+        type: string
+        required: false
+      internalFqdn:
+        type: string
+        required: false
+
+
+  aria.azure.datatypes.NetworkInterfaceCardConfig:
+    description: >
+      See https://msdn.microsoft.com/en-us/library/mt163668.aspx
+    properties:
+      networkSecurityGroups:
+        required: false
+        type: string
+      enableIPForwarding:
+        required: false
+        type: boolean
+      ipConfigurations:
+        required: false
+        type: string
+      dnsSettings:
+        required: false
+        type: aria.azure.datatype.NetworkInterfaceDnsSettings
+
+
+  aria.azure.datatypes.IPConfigurationConfig:
+    properties:
+      privateIPAddress:
+        type: string
+        description: >
+          Static, private IP Address
+        required: false
+      privateIPAllocationMethod:
+        type: string
+        description: >
+          Defines how a private IP address is assigned. Options
+          are Static or Dynamic
+        required: true
+      privateIPAddressVersion: 
+        type: string
+        description: >
+          Define the version of the IP protocol
+        required: false
+
+
+  aria.azure.datatypes.PublicIPAddressDnsSettings:
+    description: >
+      See https://docs.microsoft.com/en-gb/rest/api/virtualnetwork/PublicIPAddresses/CreateOrUpdate#definitions_publicipaddressdnssettings
+    properties:
+      domainNameLabel:
+        type: string
+        description: >
+          name refer to the VM
+        required: false
+      fqdn:
+        type: string
+        required: false
+      reverseFqdn:
+        type: string
+        required: false
+
+  aria.azure.datatypes.PublicIPAddressConfig:
+    description: >
+      See https://msdn.microsoft.com/en-us/library/mt163590.aspx
+    properties:
+      publicIPAllocationMethod:
+        type: string
+        description: >
+          Defines whether the IP address is stable or dynamic.
+          Options are Static or Dynamic
+        required: true
+      publicIPAddressVersion:
+        type: string
+        description:
+          Define the version of the public IP.
+        required: false
+      idleTimeoutInMinutes:
+        type: integer
+        description: >
+          Specifies the timeout (in minutes) for the TCP idle connection.
+          The value can be set between 4 and 30 minutes
+        required: false
+      dnsSettings:
+        type: aria.azure.datatypes.PublicIPAddressDnsSettings
+        required: false
+#      domainNameLabel:
+#        type: string
+#        description: >
+#          The concatenation of the domain name label and the regionalized
+#          DNS zone make up the fully qualified domain name associated
+#          with the public IP address.
+#        required: false
+#      reverseFqdn:
+#        type: string
+#        description: >
+#          A fully qualified domain name that resolves to this
+#          public IP address.
+#        required: false
+
+
+
+
+
+
+  aria.azure.datatypes.AvailabilitySetConfig:
+    description: >
+      See https://msdn.microsoft.com/en-us/library/mt163607.aspx
+    properties:
+      platformUpdateDomainCount:
+        type: integer
+        required: false
+      platformFaultDomainCount:
+        type: integer
+        required: false
+
+
+
+  aria.azure.datatypes.HardwareProfile:
+    properties:
+      vmSize:
+        required: true
+        type: string
+
+  aria.azure.datatypes.ImageReference:
+    properties:
+      publisher:
+        required: true
+        type: string
+      offer:
+        required: true
+        type: string
+      sku:
+        required: true
+        type: string
+      version:
+        required: true
+        type: string
+
+  aria.azure.datatypes.StorageProfile:
+    properties:
+      imageReference:
+        required: true
+        type: aria.azure.datatypes.ImageReference
+
+
+
+
+  aria.azure.datatypes.PublicKey:
+    properties:
+      keydata:
+        required: true
+        type: string
+      path:
+        required: true
+        type: string
+
+  aria.azure.datatypes.SSH:
+    properties:
+      publicKeys:
+        required: false
+        type: list
+        entry_schema: aria.azure.datatypes.PublicKey
+
+
+  aria.azure.datatypes.LinuxConfiguration:
+    properties:
+      ssh:
+        required: false
+        type: aria.azure.datatypes.SSH
+      disablePasswordAuthentication:
+        required: false
+        default: true
+        type: boolean
+
+
+  aria.azure.datatypes.OSProfile:
+    properties:
+      computerName:
+        required: true
+        type: string
+      adminUserName:
+        required: true
+        type: string
+      adminPassword:
+        required: true
+        type: string
+      linuxConfiguration:
+        required: false
+        type: aria.azure.datatypes.LinuxConfiguration       
+
+
+
+  aria.azure.datatypes.VirtualMachineConfig:
+    description: >
+      https://msdn.microsoft.com/en-us/library/azure/mt163591.aspx
+    properties:
+      hardwareProfile:
+        required: true
+        type: aria.azure.datatypes.HardwareProfile
+      storageProfile:
+        required: true
+        type: aria.azure.datatypes.StorageProfile
+      osProfile:
+        required: true
+        type: aria.azure.datatypes.OSProfile
+
+  aria.azure.datatypes.LoadBalancerConfig:
+    description: >
+      See https://msdn.microsoft.com/en-us/library/mt163574.aspx
+    properties:
+      frontendIPConfigurations:
+        required: false
+        type: string
+      backendAddressPools:
+        required: false
+        type: string
+      loadBalancingRules:
+        required: false
+        type: string
+      probes:
+        required: false
+        type: string
+      inboundNatRules:
+        required: false
+        type: string
+
+
+
+  aria.azure.datatypes.LoadBalancerProbeConfig:
+    description: >
+      See https://msdn.microsoft.com/en-us/library/mt163574.aspx
+    properties:
+      protocol:
+        type: string
+        default: Tcp
+        required: true
+      port:
+        type: integer
+        required: true
+      requestPath:
+        type: string
+        required: false
+      intervalInSeconds:
+        type: integer
+        default: 5
+        required: true
+      numberOfProbes:
+        type: integer
+        default: 16
+        required: true
+
+  aria.azure.datatypes.LoadBalancerIncomingNATRuleConfig:
+    description: >
+      See https://msdn.microsoft.com/en-us/library/mt163574.aspx
+    properties:
+      protocol:
+        type: string
+        default: Tcp
+        required: true
+      frontendPort:
+        type: integer
+        required: true
+      backendPort:
+        type: integer
+        required: true
+
+
+  aria.azure.datatypes.LoadBalancerRuleConfig:
+    description: >
+      See https://msdn.microsoft.com/en-us/library/mt163574.aspx
+    properties:
+      protocol:
+        type: string
+        default: Tcp
+        required: true
+      frontendPort:
+        type: integer
+        required: true
+      backendPort:
+        type: integer
+        required: true
+      enableFloatingIP:
+        type: boolean
+        required: false
+        default: false
+      idleTimeoutInMinutes:
+        type: integer
+        required: false
+        default: 5
+      loadDistribution:
+        type: string
+        required: false
+        default: Default
+
+
+
+
+
+interface_types:
+
+  aria.azure.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
+  aria.azure.interfaces.network:
+    derived_from: tosca.interfaces.Root
+    preconfigure:
+    establish: 
+    unlink: 
+
+node_types:
+
+  aria.azure.nodes.ResourceGroup:
+    derived_from: tosca.nodes.Root
+    properties:
+      name:
+        type: string
+        description: >
+          Name for the resource. Resource group name must be no longer than
+          80 characters long. It can contain only alphanumeric characters,
+          dash, underscore, opening parenthesis, closing parenthesis,
+          and period. The name cannot end with a period.
+        required: false
+      location:
+        type: string
+        description: >
+          Specifies the supported Azure location for the resource
+        required: false
+      tags:
+        description: >
+          Specifies a dictionary of one or more name and value pairs that describe a tag
+        required: false
+        type: string
+      use_external_resource:
+        description: >
+          Indicate whether the resource exists or if Cloudify should create the resource
+        type: boolean
+        default: false
+        required: true
+      retry_after:
+        description: >
+          Overrides the Azure-specified "retry_after" response. This property
+          will set the number of seconds for each task retry interval (in the
+          case of iteratively checking the status of an asynchronous operation)
+        type: integer
+        required: false
+      azure_config:
+        description: >
+          A dictionary of values to pass to authenticate with the Azure API
+        type: aria.azure.datatypes.Config
+        required: false
+    interfaces:
+      Standard:  
+        create: cloudify-azure-plugin > cloudify_azure.resources.resourcegroup.create
+        delete: cloudify-azure-plugin > cloudify_azure.resources.resourcegroup.delete
+
+
+
+
+
+
+
+  aria.azure.nodes.storage.StorageAccount:
+    derived_from: tosca.nodes.Root
+    properties:
+      name:
+        type: string
+        description: >
+          Name for the resource. Storage account name must be between
+          3 and 24 characters in length and use numbers and lower-case
+          letters only.
+        required: false
+      resource_group_name:
+        type: string
+        description: >
+          Name of the Resource Group that the existing resource belongs to
+          (this is only useful when not using a relationship between a resource
+          node and a Resource Group node)
+        required: false
+      location:
+        type: string
+        description: >
+          Specifies the supported Azure location for the resource
+        required: false
+      tags:
+        description: >
+          Specifies a dictionary of one or more name and value pairs that describe a tag
+        required: false
+        type: string
+      resource_config:
+        description: >
+          A dictionary of values to pass as properties when creating the resource
+        type: aria.azure.datatypes.StorageAccountConfig
+        required: true
+      use_external_resource:
+        description: >
+          Indicate whether the resource exists or if Cloudify should create the resource
+        type: boolean
+        default: false
+        required: true
+      retry_after:
+        description: >
+          Overrides the Azure-specified "retry_after" response. This property
+          will set the number of seconds for each task retry interval (in the
+          case of iteratively checking the status of an asynchronous operation)
+        type: integer
+        required: false
+      azure_config:
+        description: >
+          A dictionary of values to pass to authenticate with the Azure API
+        type: aria.azure.datatypes.Config
+        required: false
+    interfaces:
+      Standard:
+        create: cloudify-azure-plugin > cloudify_azure.resources.storage.storageaccount.create
+        delete: cloudify-azure-plugin > cloudify_azure.resources.storage.storageaccount.delete
+    requirements:
+      - resource_group:
+          capability: tosca.capabilities.Node
+          node: aria.azure.nodes.ResourceGroup
+          relationship: cloudify.azure.relationships.contained_in_resource_group
+          occurrences: [ 0, UNBOUNDED ]
+
+
+
+  aria.azure.nodes.storage.DataDisk:
+    derived_from: tosca.nodes.Root
+    properties:
+      name:
+        type: string
+        description: >
+          Name for the resource (include any extension, such as .vhd).
+          Can be up to 80 characters in length and
+          contain lowercase letters, numbers, ".", and "_". Must start
+          with a number or lowercase letter and cannot end with
+          either "_" or "."
+        required: false
+      location:
+        type: string
+        description: >
+          Specifies the supported Azure location for the resource
+        required: false
+      use_external_resource:
+        description: >
+          Indicate whether the resource exists or if Cloudify should create the resource
+        type: boolean
+        default: false
+        required: true
+      retry_after:
+        description: >
+          Overrides the Azure-specified "retry_after" response. This property
+          will set the number of seconds for each task retry interval (in the
+          case of iteratively checking the status of an asynchronous operation)
+        type: integer
+        required: false
+      resource_config:
+        description: >
+          A dictionary of values to pass as properties when creating the resource
+        type: aria.azure.datatypes.DataDiskConfig
+        required: false
+      azure_config:
+        description: >
+          A dictionary of values to pass to authenticate with the Azure API
+        type: aria.azure.datatypes.Config
+        required: false
+    interfaces:
+      Standard:
+        create: cloudify-azure-plugin > cloudify_azure.resources.storage.disk.create_data_disk
+        delete: cloudify-azure-plugin > cloudify_azure.resources.storage.disk.delete_data_disk
+    requirements:
+      - storage_account:
+          capability: tosca.capabilities.Node
+          node: aria.azure.nodes.storage.StorageAccount
+          relationship: cloudify.azure.relationships.contained_in_storage_account
+          occurrences: [ 0, UNBOUNDED ]
+
+  aria.azure.nodes.storage.FileShare:
+    derived_from: tosca.nodes.Root
+    properties:
+      name:
+        type: string
+        description: >
+          Name for the resource. Can be up to 63 characters in length and
+          contain lowercase letters, numbers, and dashes. Must start
+          with a number or lowercase letter and cannot contain
+          two consecutive dashes.
+        required: false
+      location:
+        type: string
+        description: >
+          Specifies the supported Azure location for the resource
+        required: false
+      use_external_resource:
+        description: >
+          Indicate whether the resource exists or if Cloudify should create the resource
+        type: boolean
+        default: false
+        required: true
+      retry_after:
+        description: >
+          Overrides the Azure-specified "retry_after" response. This property
+          will set the number of seconds for each task retry interval (in the
+          case of iteratively checking the status of an asynchronous operation)
+        type: integer
+        required: false
+      resource_config:
+        description: >
+          A dictionary of values to pass as properties when creating the resource
+        type: aria.azure.datatypes.FileShareConfig
+        required: false
+      azure_config:
+        description: >
+          A dictionary of values to pass to authenticate with the Azure API
+        type: aria.azure.datatypes.Config
+        required: false
+    interfaces:
+      Standard:
+        create:  cloudify-azure-plugin > cloudify_azure.resources.storage.file.create_file_share
+
+
+
+
+  aria.azure.nodes.network.VirtualNetwork:
+    derived_from: tosca.nodes.Root
+    properties:
+      name:
+        type: string
+        description: >
+          Name for the resource.
+        required: false
+      resource_group_name:
+        type: string
+        description: >
+          Name of the Resource Group that the existing resource belongs to
+          (this is only useful when not using a relationship between a resource
+          node and a Resource Group node)
+        required: false
+      location:
+        type: string
+        description: >
+          Specifies the supported Azure location for the resource
+        required: false
+      tags:
+        description: >
+          Specifies a dictionary of one or more name and value pairs that describe a tag
+        required: false
+        type: string
+      resource_config:
+        description: >
+          A dictionary of values to pass as properties when creating the resource
+        type: aria.azure.datatypes.VirtualNetworkConfig
+        required: false
+      use_external_resource:
+        description: >
+          Indicate whether the resource exists or if Cloudify should create the resource
+        type: boolean
+        default: false
+        required: true
+      retry_after:
+        description: >
+          Overrides the Azure-specified "retry_after" response. This property
+          will set the number of seconds for each task retry interval (in the
+          case of iteratively checking the status of an asynchronous operation)
+        type: integer
+        required: false
+      azure_config:
+        description: >
+          A dictionary of values to pass to authenticate with the Azure API
+        type: aria.azure.datatypes.Config
+        required: false
+    interfaces:
+      Standard:
+        create: cloudify-azure-plugin > cloudify_azure.resources.network.virtualnetwork.create
+        delete: cloudify-azure-plugin > cloudify_azure.resources.network.virtualnetwork.delete
+    requirements:
+      - resource_group:
+          capability: tosca.capabilities.Node
+          node: aria.azure.nodes.ResourceGroup
+          relationship: cloudify.azure.relationships.contained_in_resource_group
+          occurrences: [ 0, UNBOUNDED ]
+      - storage_account:
+          capability: tosca.capabilities.Node
+          node: aria.azure.nodes.storage.StorageAccount
+          relationship: cloudify.azure.relationships.virtual_network_depends_on_storage
+          occurrences: [ 0, UNBOUNDED ]
+
+
+
+  aria.azure.nodes.network.NetworkSecurityGroup:
+    derived_from: tosca.nodes.Root
+    properties:
+      name:
+        type: string
+        description: >
+          Name for the resource.
+        required: false
+      resource_group_name:
+        type: string
+        description: >
+          Name of the Resource Group that the existing resource belongs to
+          (this is only useful when not using a relationship between a resource
+          node and a Resource Group node)
+        required: false
+      location:
+        type: string
+        description: >
+          Specifies the supported Azure location for the resource
+        required: false
+      tags:
+        description: >
+          Specifies a dictionary of one or more name and value pairs that describe a tag
+        required: false
+        type: string
+      resource_config:
+        description: >
+          A dictionary of values to pass as properties when creating the resource
+        type: aria.azure.datatypes.NetworkSecurityGroupConfig
+        required: false
+      use_external_resource:
+        description: >
+          Indicate whether the resource exists or if Cloudify should create the resource
+        type: boolean
+        default: false
+        required: true
+      retry_after:
+        description: >
+          Overrides the Azure-specified "retry_after" response. This property
+          will set the number of seconds for each task retry interval (in the
+          case of iteratively checking the status of an asynchronous operation)
+        type: integer
+        required: false
+      azure_config:
+        description: >
+          A dictionary of values to pass to authenticate with the Azure API
+        type: aria.azure.datatypes.Config
+        required: false
+    interfaces:
+      Standard:
+        create: cloudify-azure-plugin > cloudify_azure.resources.network.networksecuritygroup.create
+        delete: cloudify-azure-plugin > cloudify_azure.resources.network.networksecuritygroup.delete
+    requirements:
+      - resource_group:
+          capability: tosca.capabilities.Node
+          node: aria.azure.nodes.ResourceGroup
+          relationship: cloudify.azure.relationships.contained_in_resource_group
+          occurrences: [ 0, UNBOUNDED ]
+
+
+
+  aria.azure.nodes.network.NetworkSecurityRule:
+    derived_from: tosca.nodes.Root
+    properties:
+      name:
+        type: string
+        description: >
+          Name for the resource.
+        required: false
+      resource_group_name:
+        type: string
+        description: >
+          Name of the Resource Group that the existing resource belongs to
+          (this is only useful when not using a relationship between a resource
+          node and a Resource Group node)
+        required: false
+      network_security_group_name:
+        type: string
+        description: >
+          Name of the Network Security Group that the existing resource belongs to
+          (this is only useful when not using a relationship between a resource
+          node and a Network Security Groupnode)
+        required: false
+      location:
+        type: string
+        description: >
+          Specifies the supported Azure location for the resource
+        required: false
+      tags:
+        description: >
+          Specifies a dictionary of one or more name and value pairs that describe a tag
+        required: false
+        type: string
+      resource_config:
+        description: >
+          A dictionary of values to pass as properties when creating the resource
+        type: aria.azure.datatypes.NetworkSecurityRuleConfig
+        required: false
+      use_external_resource:
+        description: >
+          Indicate whether the resource exists or if Cloudify should create the resource
+        type: boolean
+        default: false
+        required: true
+      retry_after:
+        description: >
+          Overrides the Azure-specified "retry_after" response. This property
+          will set the number of seconds for each task retry interval (in the
+          case of iteratively checking the status of an asynchronous operation)
+        type: integer
+        required: false
+      azure_config:
+        description: >
+          A dictionary of values to pass to authenticate with the Azure API
+        type: aria.azure.datatypes.Config
+        required: false
+    interfaces:
+      Standard:
+        create: cloudify-azure-plugin > cloudify_azure.resources.network.networksecurityrule.create
+        delete: cloudify-azure-plugin > cloudify_azure.resources.network.networksecurityrule.delete
+    requirements:
+      - resource_group:
+          capability: tosca.capabilities.Node
+          node: aria.azure.nodes.ResourceGroup
+          relationship: cloudify.azure.relationships.contained_in_resource_group
+          occurrences: [ 0, UNBOUNDED ]
+      - network_security_group:
+          capability: tosca.capabilities.Node
+          node: aria.azure.nodes.network.NetworkSecurityGroup
+          relationship: cloudify.azure.relationships.nic_connected_to_network_security_group
+          occurrences: [ 0, UNBOUNDED ]
+
+
+
+  aria.azure.nodes.network.Subnet:
+    derived_from: tosca.nodes.Root
+    properties:
+      name:
+        type: string
+        description: >
+          Name for the resource.
+        required: false
+      resource_group_name:
+        type: string
+        description: >
+          Name of the Resource Group that the existing resource belongs to
+          (this is only useful when not using a relationship between a resource
+          node and a Resource Group node)
+        required: false
+      virtual_network_name:
+        type: string
+        description: >
+          Name of the Virtual Network that the existing resource belongs to
+          (this is only useful when not using a relationship between a resource
+          node and a Virtual Network node)
+        required: false
+      location:
+        type: string
+        description: >
+          Specifies the supported Azure location for the resource
+        required: false
+      tags:
+        description: >
+          Specifies a dictionary of one or more name and value pairs that describe a tag
+        required: false
+        type: string
+      resource_config:
+        description: >
+          A dictionary of values to pass as properties when creating the resource
+        type: aria.azure.datatypes.SubnetConfig
+        required: false
+      use_external_resource:
+        description: >
+          Indicate whether the resource exists or if Cloudify should create the resource
+        type: boolean
+        default: false
+        required: true
+      retry_after:
+        description: >
+          Overrides the Azure-specified "retry_after" response. This property
+          will set the number of seconds for each task retry interval (in the
+          case of iteratively checking the status of an asynchronous operation)
+        type: integer
+        required: false
+      azure_config:
+        description: >
+          A dictionary of values to pass to authenticate with the Azure API
+        type: aria.azure.datatypes.Config
+        required: false
+    interfaces:
+      Standard:
+        create: cloudify-azure-plugin > cloudify_azure.resources.network.subnet.create
+        delete: cloudify-azure-plugin > cloudify_azure.resources.network.subnet.delete
+    requirements:
+      - virtual_network:
+          capability: tosca.capabilities.Node
+          node: aria.azure.nodes.network.VirtualNetwork
+          relationship: cloudify.azure.relationships.contained_in_virtual_network
+          occurrences: [ 0, UNBOUNDED ]
+      - subnet_dependency:
+          capability: tosca.capabilities.Node
+          node: aria.azure.nodes.network.Subnet
+          relationship: cloudify.azure.relationships.depends_on_subnet
+          occurrences: [ 0, UNBOUNDED ]
+          
+
+
+  aria.azure.nodes.network.RouteTable:
+    derived_from: tosca.nodes.Root
+    properties:
+      name:
+        type: string
+        description: >
+          Name for the resource.
+        required: false
+      resource_group_name:
+        type: string
+        description: >
+          Name of the Resource Group that the existing resource belongs to
+          (this is only useful when not using a relationship between a resource
+          node and a Resource Group node)
+        required: false
+      location:
+        type: string
+        description: >
+          Specifies the supported Azure location for the resource
+        required: false
+      tags:
+        description: >
+          Specifies a dictionary of one or more name and value pairs that describe a tag
+        required: false
+        type: string
+      resource_config:
+        description: >
+          A dictionary of values to pass as properties when creating the resource
+        type: aria.azure.datatypes.RouteTableConfig
+        required: false
+      use_external_resource:
+        description: >
+          Indicate whether the resource exists or if Cloudify should create the resource
+        type: boolean
+        default: false
+        required: true
+      retry_after:
+        description: >
+          Overrides the Azure-specified "retry_after" response. This property
+          will set the number of seconds for each task retry interval (in the
+          case of iteratively checking the status of an asynchronous operation)
+        type: integer
+        required: false
+      azure_config:
+        description: >
+          A dictionary of values to pass to authenticate with the Azure API
+        type: aria.azure.datatypes.Config
+        required: false
+    interfaces:
+      Standard:
+        create: cloudify-azure-plugin > cloudify_azure.resources.network.routetable.create
+        delete: cloudify-azure-plugin > cloudify_azure.resources.network.routetable.delete
+    requirements:
+      - virtual_subnet:
+          capability: tosca.capabilities.Node
+          node: aria.azure.nodes.network.Subnet
+          relationship: cloudify.azure.relationships.route_table_attached_to_subnet
+          occurrences: [ 0, UNBOUNDED ]
+
+  aria.azure.nodes.network.Route:
+    derived_from: tosca.nodes.Root
+    properties:
+      name:
+        type: string
+        description: >
+          Name for the resource.
+        required: false
+      resource_group_name:
+        type: string
+        description: >
+          Name of the Resource Group that the existing resource belongs to
+          (this is only useful when not using a relationship between a resource
+          node and a Resource Group node)
+        required: false
+      route_table_name:
+        type: string
+        description: >
+          Name of the Network Security Group that the existing resource belongs to
+          (this is only useful when not using a relationship between a resource
+          node and a Virtual Network node)
+        required: false
+      location:
+        type: string
+        description: >
+          Specifies the supported Azure location for the resource
+        required: false
+      tags:
+        description: >
+          Specifies a dictionary of one or more name and value pairs that describe a tag
+        required: false
+        type: string
+      resource_config:
+        description: >
+          A dictionary of values to pass as properties when creating the resource
+        type: aria.azure.datatypes.RouteConfig
+        required: false
+      use_external_resource:
+        description: >
+          Indicate whether the resource exists or if Cloudify should create the resource
+        type: boolean
+        default: false
+        required: true
+      retry_after:
+        description: >
+          Overrides the Azure-specified "retry_after" response. This property
+          will set the number of seconds for each task retry interval (in the
+          case of iteratively checking the status of an asynchronous operation)
+        type: integer
+        required: false
+      azure_config:
+        description: >
+          A dictionary of values to pass to authenticate with the Azure API
+        type: aria.azure.datatypes.Config
+        required: false
+    interfaces:
+      Standard:
+        create: cloudify-azure-plugin > cloudify_azure.resources.network.route.create
+        delete: cloudify-azure-plugin > cloudify_azure.resources.network.route.delete
+    requirements:
+      - route_table:
+          capability: tosca.capabilities.Node
+          node: aria.azure.nodes.network.RouteTable
+          relationship: cloudify.azure.relationships.depends_on_route_table
+          occurrences: [ 0, UNBOUNDED ]
+
+
+  aria.azure.nodes.network.NetworkInterfaceCard:
+    derived_from: tosca.nodes.Root
+    properties:
+      name:
+        type: string
+        description: >
+          Name for the resource.
+        required: false
+      resource_group_name:
+        type: string
+        description: >
+          Name of the Resource Group that the existing resource belongs to
+          (this is only useful when not using a relationship between a resource
+          node and a Resource Group node)
+        required: false
+      location:
+        type: string
+        description: >
+          Specifies the supported Azure location for the resource
+        required: false
+      tags:
+        description: >
+          Specifies a dictionary of one or more name and value pairs that describe a tag
+        required: false
+        type: string
+      primary:
+        description: >
+          When using multiple Network Interfaces, a primary must be set
+        required: false
+        default: false
+        type: boolean
+      resource_config:
+        description: >
+          A dictionary of values to pass as properties when creating the resource
+        type: aria.azure.datatypes.NetworkInterfaceCardConfig
+        required: false
+      use_external_resource:
+        description: >
+          Indicate whether the resource exists or if Cloudify should create the resource
+        type: boolean
+        default: false
+        required: true
+      retry_after:
+        description: >
+          Overrides the Azure-specified "retry_after" response. This property
+          will set the number of seconds for each task retry interval (in the
+          case of iteratively checking the status of an asynchronous operation)
+        type: integer
+        required: false
+      azure_config:
+        description: >
+          A dictionary of values to pass to authenticate with the Azure API
+        type: aria.azure.datatypes.Config
+        required: false
+    interfaces:
+      Standard:
+        create: cloudify-azure-plugin > cloudify_azure.resources.network.networkinterfacecard.create
+        configure: cloudify-azure-plugin > cloudify_azure.resources.network.networkinterfacecard.configure
+        delete: cloudify-azure-plugin > cloudify_azure.resources.network.networkinterfacecard.delete
+    requirements:
+      - resource_group:
+          capability: tosca.capabilities.Node
+          node: aria.azure.nodes.ResourceGroup
+          relationship: cloudify.azure.relationships.contained_in_resource_group
+          occurrences: [ 0, UNBOUNDED ]
+      - ip_config:
+          capability: tosca.capabilities.Node
+          node: aria.azure.nodes.network.IPConfiguration
+          relationship: cloudify.azure.relationships.nic_connected_to_ip_configuration
+          occurrences: [ 0, UNBOUNDED ]
+      - security_group:
+          capability: tosca.capabilities.Node
+          node: aria.azure.nodes.network.NetworkSecurityGroup
+          relationship: cloudify.azure.relationships.nic_connected_to_network_security_group
+          occurrences: [ 0, UNBOUNDED ]
+
+  
+
+  aria.azure.nodes.network.IPConfiguration:
+    derived_from: tosca.nodes.Root
+    properties:
+      name:
+        type: string
+        description: >
+          Name for the resource.
+        required: false
+      resource_group_name:
+        type: string
+        description: >
+          Name of the Resource Group that the existing resource belongs to
+          (this is only useful when not using a relationship between a resource
+          node and a Resource Group node)
+        required: false
+      location:
+        type: string
+        description: >
+          Specifies the supported Azure location for the resource
+        required: false
+      tags:
+        description: >
+          Specifies a dictionary of one or more name and value pairs that describe a tag
+        required: false
+        type: string
+      resource_config:
+        description: >
+          A dictionary of values to pass as properties when creating the resource
+        type: aria.azure.datatypes.IPConfigurationConfig
+        required: true
+      use_external_resource:
+        description: >
+          Indicate whether the resource exists or if Cloudify should create the resource
+        type: boolean
+        default: false
+        required: true
+      retry_after:
+        description: >
+          Overrides the Azure-specified "retry_after" response. This property
+          will set the number of seconds for each task retry interval (in the
+          case of iteratively checking the status of an asynchronous operation)
+        type: integer
+        required: false
+      azure_config:
+        description: >
+          A dictionary of values to pass to authenticate with the Azure API
+        type: aria.azure.datatypes.Config
+        required: false
+    requirements:
+      - subnet:
+          capability: tosca.capabilities.Node
+          node: aria.azure.nodes.network.Subnet
+          relationship: cloudify.azure.relationships.ip_configuration_connected_to_subnet
+          occurrences: [ 0, UNBOUNDED ]
+      - ipaddress:
+          capability: tosca.capabilities.Node
+          node: aria.azure.nodes.network.PublicIPAddress
+          relationship: cloudify.azure.relationships.ip_configuration_connected_to_public_ip
+          occurrences: [ 0, UNBOUNDED ]
+          occurrences: [ 0, UNBOUNDED ]
+
+  aria.azure.nodes.network.PublicIPAddress:
+    derived_from: tosca.nodes.Root
+    properties:
+      name:
+        type: string
+        description: >
+          Name for the resource.
+        required: false
+      resource_group_name:
+        type: string
+        description: >
+          Name of the Resource Group that the existing resource belongs to
+          (this is only useful when not using a relationship between a resource
+          node and a Resource Group node)
+        required: false
+      location:
+        type: string
+        description: >
+          Specifies the supported Azure location for the resource
+        required: false
+      tags:
+        description: >
+          Specifies a dictionary of one or more name and value pairs that describe a tag
+        required: false
+        type: string
+      resource_config:
+        description: >
+          A dictionary of values to pass as properties when creating the resource
+        type: aria.azure.datatypes.PublicIPAddressConfig
+        required: false
+      use_external_resource:
+        description: >
+          Indicate whether the resource exists or if Cloudify should create the resource
+        type: boolean
+        default: false
+        required: true
+      retry_after:
+        description: >
+          Overrides the Azure-specified "retry_after" response. This property
+          will set the number of seconds for each task retry interval (in the
+          case of iteratively checking the status of an asynchronous operation)
+        type: integer
+        required: false
+      azure_config:
+        description: >
+          A dictionary of values to pass to authenticate with the Azure API
+        type: aria.azure.datatypes.Config
+        required: false
+    interfaces:
+      Standard:
+        create: cloudify-azure-plugin > cloudify_azure.resources.network.publicipaddress.create
+        delete: cloudify-azure-plugin > cloudify_azure.resources.network.publicipaddress.delete
+    requirements:
+      - resource_group:
+          capability: tosca.capabilities.Node
+          node: aria.azure.nodes.ResourceGroup
+          relationship: cloudify.azure.relationships.contained_in_resource_group
+          occurrences: [ 0, UNBOUNDED ]
+
+  aria.azure.nodes.compute.AvailabilitySet:
+    derived_from: tosca.nodes.Root
+    properties:
+      name:
+        type: string
+        description: >
+          Name for the resource.
+        required: false
+      resource_group_name:
+        type: string
+        description: >
+          Name of the Resource Group that the existing resource belongs to
+          (this is only useful when not using a relationship between a resource
+          node and a Resource Group node)
+        required: false
+      location:
+        type: string
+        description: >
+          Specifies the supported Azure location for the resource
+        required: false
+      tags:
+        description: >
+          Specifies a dictionary of one or more name and value pairs that describe a tag
+        required: false
+        type: string
+      resource_config:
+        description: >
+          A dictionary of values to pass as properties when creating the resource
+        type: aria.azure.datatypes.AvailabilitySetConfig
+        required: true
+      use_external_resource:
+        description: >
+          Indicate whether the resource exists or if Cloudify should create the resource
+        type: boolean
+        default: false
+        required: true
+      retry_after:
+        description: >
+          Overrides the Azure-specified "retry_after" response. This property
+          will set the number of seconds for each task retry interval (in the
+          case of iteratively checking the status of an asynchronous operation)
+        type: integer
+        required: false
+      azure_config:
+        description: >
+          A dictionary of values to pass to authenticate with the Azure API
+        type: aria.azure.datatypes.Config
+        required: false
+    interfaces:
+      Standard:
+        create: cloudify-azure-plugin > cloudify_azure.resources.compute.availabilityset.create
+        delete: cloudify-azure-plugin > cloudify_azure.resources.compute.availabilityset.delete
+
+
+  aria.azure.nodes.compute.VirtualMachine:
+    derived_from: tosca.nodes.Compute
+    properties:
+      name:
+        type: string
+        description: >
+          Name for the resource.
+        required: false
+      resource_group_name:
+        type: string
+        description: >
+          Name of the Resource Group that the existing resource belongs to
+          (this is only useful when not using a relationship between a resource
+          node and a Resource Group node)
+        required: false
+      use_public_ip:
+        type: boolean
+        description: >
+          Tells the deployment to use the public IP (if available) of the resource
+          for Cloudify Agent connections
+        default: false
+      location:
+        type: string
+        description: >
+          Specifies the supported Azure location for the resource
+        required: false
+      tags:
+        description: >
+          Specifies a dictionary of one or more name and value pairs that describe a tag
+        required: false
+        type: string
+      plan:
+        description: >
+          Specifies information about the marketplace image used to create the virtual
+          machine. This element is only used for marketplace images.
+        required: false
+        type: string
+      resource_config:
+        description: >
+          A dictionary of values to pass as properties when creating the resource
+        type: aria.azure.datatypes.VirtualMachineConfig
+        required: true
+      use_external_resource:
+        description: >
+          Indicate whether the resource exists or if Cloudify should create the resource
+        type: boolean
+        default: false
+        required: true
+      retry_after:
+        description: >
+          Overrides the Azure-specified "retry_after" response. This property
+          will set the number of seconds for each task retry interval (in the
+          case of iteratively checking the status of an asynchronous operation)
+        type: integer
+        required: false
+      azure_config:
+        description: >
+          A dictionary of values to pass to authenticate with the Azure API
+        type: aria.azure.datatypes.Config
+        required: false
+      ip:
+        description: |
+          Property specifying the IP address of the resource to
+          use for the agent installer.
+        type: string
+        required: false
+      os_family:
+        description: |
+          Property specifying what type of operating system family
+          this compute node will run.
+        default: windows
+        type: string
+      agent_config:
+        type: aria.azure.datatypes.AgentConfig
+        default:
+          install_method: remote
+          port: 5985
+    interfaces:
+      Standard:
+        create: cloudify-azure-plugin > cloudify_azure.resources.compute.virtualmachine.create
+#        configure:
+#          implementation: cloudify-azure-plugin > cloudify_azure.resources.compute.virtualmachine.configure
+#          inputs:
+#            command_to_execute:
+#              description: >
+#                This is the command that the CustomScriptExtension extension will
+#                execute. The file_uris below will be downloaded and this property
+#                should specify a command to start the execution of one of them.
+#              default: powershell -ExecutionPolicy Unrestricted -file ps_enable_winrm_http.ps1
+#            file_uris:
+#              default:
+#              - https://raw.githubusercontent.com/cloudify-cosmo/cloudify-azure-plugin/1.4/scripts/ps_enable_winrm_http.ps1
+        delete: cloudify-azure-plugin > cloudify_azure.resources.compute.virtualmachine.delete
+    requirements:
+      - resource_group:
+          capability: tosca.capabilities.Node
+          node: aria.azure.nodes.ResourceGroup
+          relationship: cloudify.azure.relationships.contained_in_resource_group
+          occurrences: [ 0, UNBOUNDED ]
+      - nic:
+          capability: tosca.capabilities.Node
+          node: aria.azure.nodes.network.NetworkInterfaceCard
+          relationship: cloudify.azure.relationships.connected_to_nic
+          occurrences: [ 0, UNBOUNDED ]
+      - storage_account:
+          capability: tosca.capabilities.Node
+          node: aria.azure.nodes.storage.StorageAccount
+          relationship: cloudify.azure.relationships.connected_to_storage_account
+      - data_disk:
+          capability: tosca.capabilities.Node
+          node: aria.azure.nodes.storage.DataDisk
+          relationship: cloudify.azure.relationships.vm_connected_to_datadisk 
+          occurrences: [ 0, UNBOUNDED ]
+
+
+
+  aria.azure.nodes.network.LoadBalancer:
+    derived_from: tosca.nodes.Root
+    properties:
+      name:
+        type: string
+        description: >
+          Name for the resource.
+        required: false
+      resource_group_name:
+        type: string
+        description: >
+          Name of the Resource Group that the existing resource belongs to
+          (this is only useful when not using a relationship between a resource
+          node and a Resource Group node)
+        required: false
+      location:
+        type: string
+        description: >
+          Specifies the supported Azure location for the resource
+        required: false
+      tags:
+        description: >
+          Specifies a dictionary of one or more name and value pairs that describe a tag
+        required: false
+        type: string
+      resource_config:
+        description: >
+          A dictionary of values to pass as properties when creating the resource
+        type: aria.azure.datatypes.LoadBalancerConfig
+        required: false
+      use_external_resource:
+        description: >
+          Indicate whether the resource exists or if Cloudify should create the resource
+        type: boolean
+        default: false
+        required: true
+      retry_after:
+        description: >
+          Overrides the Azure-specified "retry_after" response. This property
+          will set the number of seconds for each task retry interval (in the
+          case of iteratively checking the status of an asynchronous operation)
+        type: integer
+        required: false
+      azure_config:
+        description: >
+          A dictionary of values to pass to authenticate with the Azure API
+        type: aria.azure.datatypes.Config
+        required: false
+    interfaces:
+      Standard:
+        create: cloudify-azure-plugin > cloudify_azure.resources.network.loadbalancer.create
+        configure: cloudify-azure-plugin > cloudify_azure.resources.network.loadbalancer.configure
+        delete: cloudify-azure-plugin > cloudify_azure.resources.network.loadbalancer.delete
+
+
+
+
+  aria.azure.nodes.network.LoadBalancer.BackendAddressPool:
+    derived_from: tosca.nodes.Root
+    properties:
+      name:
+        type: string
+        description: >
+          Name for the resource.
+        required: false
+      resource_group_name:
+        type: string
+        description: >
+          Name of the Resource Group that the existing resource belongs to
+          (this is only useful when not using a relationship between a resource
+          node and a Resource Group node)
+        required: false
+      load_balancer_name:
+        type: string
+        required: false
+      location:
+        type: string
+        description: >
+          Specifies the supported Azure location for the resource
+        required: false
+      tags:
+        description: >
+          Specifies a dictionary of one or more name and value pairs that describe a tag
+        required: false
+        type: string
+      use_external_resource:
+        description: >
+          Indicate whether the resource exists or if Cloudify should create the resource
+        type: boolean
+        default: false
+        required: true
+      retry_after:
+        description: >
+          Overrides the Azure-specified "retry_after" response. This property
+          will set the number of seconds for each task retry interval (in the
+          case of iteratively checking the status of an asynchronous operation)
+        type: integer
+        required: false
+      azure_config:
+        description: >
+          A dictionary of values to pass to authenticate with the Azure API
+        type: aria.azure.datatypes.Config
+        required: false
+    interfaces:
+      Standard:
+        create: cloudify-azure-plugin > cloudify_azure.resources.network.loadbalancer.create_backend_pool
+        delete: cloudify-azure-plugin > cloudify_azure.resources.network.loadbalancer.delete_backend_pool
+
+
+
+  aria.azure.nodes.network.LoadBalancer.Probe:
+    derived_from: tosca.nodes.Root
+    properties:
+      name:
+        type: string
+        description: >
+          Name for the resource.
+        required: false
+      resource_group_name:
+        type: string
+        description: >
+          Name of the Resource Group that the existing resource belongs to
+          (this is only useful when not using a relationship between a resource
+          node and a Resource Group node)
+        required: false
+      load_balancer_name:
+        type: string
+        required: false
+      location:
+        type: string
+        description: >
+          Specifies the supported Azure location for the resource
+        required: false
+      tags:
+        description: >
+          Specifies a dictionary of one or more name and value pairs that describe a tag
+        required: false
+        type: string
+      resource_config:
+        description: >
+          A dictionary of values to pass as properties when creating the resource
+        type: aria.azure.datatypes.LoadBalancerProbeConfig
+        required: false
+      use_external_resource:
+        description: >
+          Indicate whether the resource exists or if Cloudify should create the resource
+        type: boolean
+        default: false
+        required: true
+      retry_after:
+        description: >
+          Overrides the Azure-specified "retry_after" response. This property
+          will set the number of seconds for each task retry interval (in the
+          case of iteratively checking the status of an asynchronous operation)
+        type: integer
+        required: false
+      azure_config:
+        description: >
+          A dictionary of values to pass to authenticate with the Azure API
+        type: aria.azure.datatypes.Config
+        required: false
+    interfaces:
+      Standard:
+        create: cloudify-azure-plugin > cloudify_azure.resources.network.loadbalancer.create_probe
+        delete: cloudify-azure-plugin > cloudify_azure.resources.network.loadbalancer.delete_probe
+
+
+  aria.azure.nodes.network.LoadBalancer.IncomingNATRule:
+    derived_from: tosca.nodes.Root
+    properties:
+      name:
+        type: string
+        description: >
+          Name for the resource.
+        required: false
+      resource_group_name:
+        type: string
+        description: >
+          Name of the Resource Group that the existing resource belongs to
+          (this is only useful when not using a relationship between a resource
+          node and a Resource Group node)
+        required: false
+      load_balancer_name:
+        type: string
+        required: false
+      location:
+        type: string
+        description: >
+          Specifies the supported Azure location for the resource
+        required: false
+      tags:
+        description: >
+          Specifies a dictionary of one or more name and value pairs that describe a tag
+        required: false
+        type: string
+      resource_config:
+        description: >
+          A dictionary of values to pass as properties when creating the resource
+        type: aria.azure.datatypes.LoadBalancerIncomingNATRuleConfig
+        required: false
+      use_external_resource:
+        description: >
+          Indicate whether the resource exists or if Cloudify should create the resource
+        type: boolean
+        default: false
+        required: true
+      retry_after:
+        description: >
+          Overrides the Azure-specified "retry_after" response. This property
+          will set the number of seconds for each task retry interval (in the
+          case of iteratively checking the status of an asynchronous operation)
+        type: integer
+        required: false
+      azure_config:
+        description: >
+          A dictionary of values to pass to authenticate with the Azure API
+        type: aria.azure.datatypes.Config
+        required: false
+    interfaces:
+      Standard:
+        create: cloudify-azure-plugin > cloudify_azure.resources.network.loadbalancer.create_incoming_nat_rule
+        delete: cloudify-azure-plugin > cloudify_azure.resources.network.loadbalancer.delete_incoming_nat_rule
+
+
+
+  aria.azure.nodes.network.LoadBalancer.Rule:
+    derived_from: tosca.nodes.Root
+    properties:
+      name:
+        type: string
+        description: >
+          Name for the resource.
+        required: false
+      resource_group_name:
+        type: string
+        description: >
+          Name of the Resource Group that the existing resource belongs to
+          (this is only useful when not using a relationship between a resource
+          node and a Resource Group node)
+        required: false
+      load_balancer_name:
+        type: string
+        required: false
+      location:
+        type: string
+        description: >
+          Specifies the supported Azure location for the resource
+        required: false
+      tags:
+        description: >
+          Specifies a dictionary of one or more name and value pairs that describe a tag
+        required: false
+        type: string
+      resource_config:
+        description: >
+          A dictionary of values to pass as properties when creating the resource
+        type: aria.azure.datatypes.LoadBalancerRuleConfig
+        required: false
+      use_external_resource:
+        description: >
+          Indicate whether the resource exists or if Cloudify should create the resource
+        type: boolean
+        default: false
+        required: true
+      retry_after:
+        description: >
+          Overrides the Azure-specified "retry_after" response. This property
+          will set the number of seconds for each task retry interval (in the
+          case of iteratively checking the status of an asynchronous operation)
+        type: integer
+        required: false
+      azure_config:
+        description: >
+          A dictionary of values to pass to authenticate with the Azure API
+        type: aria.azure.datatypes.Config
+        required: false
+    interfaces:
+      Standard:
+        create: cloudify-azure-plugin > cloudify_azure.resources.network.loadbalancer.create_rule
+        delete: cloudify-azure-plugin > cloudify_azure.resources.network.loadbalancer.delete_rule
+  
+
+
+
+
+relationship_types:
+  cloudify.azure.relationships.contained_in_resource_group:
+    derived_from: tosca.relationships.HostedOn
+
+  cloudify.azure.relationships.contained_in_storage_account:
+    derived_from: tosca.relationships.HostedOn
+
+  cloudify.azure.relationships.contained_in_virtual_network:
+    derived_from: tosca.relationships.HostedOn
+
+  cloudify.azure.relationships.contained_in_network_security_group:
+    derived_from: tosca.relationships.HostedOn
+
+  cloudify.azure.relationships.contained_in_route_table:
+    derived_from: tosca.relationships.HostedOn
+
+  cloudify.azure.relationships.contained_in_load_balancer:
+    derived_from: tosca.relationships.HostedOn
+
+  cloudify.azure.relationships.depends_on_route_table:
+    derived_from: tosca.relationships.DependsOn
+
+  cloudify.azure.relationships.depends_on_subnet:
+    derived_from: tosca.relationships.DependsOn
+
+  cloudify.azure.relationships.virtual_network_depends_on_storage:
+    derived_from: tosca.relationships.DependsOn
+
+  cloudify.azure.relationships.network_security_group_attached_to_subnet:
+    derived_from: tosca.relationships.ConnectsTo
+    interfaces:
+      Configure:
+        add_source: cloudify-azure-plugin > cloudify_azure.resources.network.subnet.attach_network_security_group
+        remove_source: cloudify-azure-plugin > cloudify_azure.resources.network.subnet.detach_network_security_group
+
+  cloudify.azure.relationships.route_table_attached_to_subnet:
+    derived_from: tosca.relationships.ConnectsTo
+    interfaces:
+      Configure:
+        add_source: cloudify-azure-plugin > cloudify_azure.resources.network.subnet.attach_route_table
+        remove_source: cloudify-azure-plugin > cloudify_azure.resources.network.subnet.detach_route_table
+
+  cloudify.azure.relationships.nic_connected_to_network_security_group:
+    derived_from: tosca.relationships.ConnectsTo
+
+  cloudify.azure.relationships.nic_connected_to_ip_configuration:
+    derived_from: tosca.relationships.ConnectsTo
+    interfaces:
+      Configure:
+        pre_configure_source: cloudify-azure-plugin > cloudify_azure.resources.network.networkinterfacecard.attach_ip_configuration
+
+  cloudify.azure.relationships.lb_connected_to_ip_configuration:
+    derived_from: tosca.relationships.ConnectsTo
+    interfaces:
+      Configure:
+        preconfigure: cloudify-azure-plugin > cloudify_azure.resources.network.loadbalancer.attach_ip_configuration
+
+  cloudify.azure.relationships.ip_configuration_connected_to_subnet:
+    derived_from: tosca.relationships.ConnectsTo
+
+  cloudify.azure.relationships.ip_configuration_connected_to_public_ip:
+    derived_from: tosca.relationships.ConnectsTo
+
+  cloudify.azure.relationships.connected_to_storage_account:
+    derived_from: tosca.relationships.ConnectsTo
+
+  cloudify.azure.relationships.connected_to_data_disk:
+    derived_from: tosca.relationships.ConnectsTo
+    interfaces:
+      Configure:
+        add_target: cloudify-azure-plugin > cloudify_azure.resources.compute.virtualmachine.attach_disk
+        remove_target: cloudify-azure-plugin > cloudify_azure.resources.compute.virtualmachine.detach_disk
+
+
+  cloudify.azure.relationships.connected_to_nic:
+    derived_from: tosca.relationships.ConnectsTo
+
+
+  cloudify.azure.relationships.connected_to_availability_set:
+    derived_from: tosca.relationships.ConnectsTo
+
+  cloudify.azure.relationships.connected_to_ip_configuration:
+    derived_from: tosca.relationships.ConnectsTo
+
+  cloudify.azure.relationships.connected_to_lb_be_pool:
+    derived_from: tosca.relationships.ConnectsTo
+
+  cloudify.azure.relationships.connected_to_lb_probe:
+    derived_from: tosca.relationships.ConnectsTo
+
+  cloudify.azure.relationships.vmx_contained_in_vm:
+    derived_from: tosca.relationships.HostedOn
+
+  cloudify.azure.relationships.nic_connected_to_lb_be_pool:
+    derived_from: tosca.relationships.ConnectsTo
+    interfaces:
+      Configure:
+        add_target: cloudify-azure-plugin > cloudify_azure.resources.network.loadbalancer.attach_nic_to_backend_pool
+        remove_target: cloudify-azure-plugin > cloudify_azure.resources.network.loadbalancer.detach_nic_from_backend_pool
+
+  cloudify.azure.relationships.vm_connected_to_datadisk:
+    derived_from: tosca.relationships.ConnectsTo
+    interfaces:
+      Configure:
+        add_target:
+          implementation: cloudify-azure-plugin > cloudify_azure.resources.compute.virtualmachine.attach_data_disk
+          inputs:
+            lun:
+              description: >
+                Specifies the logical unit number of the data disk in the VM
+              default: 0
+              required: true
+              type: integer
+        remove_target: cloudify-azure-plugin > cloudify_azure.resources.compute.virtualmachine.detach_data_disk
+
+
+