AzureExportApi.ps1


Class AzureExportApi : ExportApi
{
     # properties
     [string]$AzureSubscriptionId
     [string]$AzureLocation
     [string]$AzureVirtualNetworkResourceGroupName
     [string]$AzureVirtualNetworkName
     [string]$AzureVirtualNetworkSubnetName
     [bool]$UsePublicIP
     [string]$TargetResourceGroup
     [string]$PrepareDiskName
     [string]$CloudCwSecretId
     [string]$AzureVmResourceGroup


    # Default constructor
    AzureExportApi([hashtable]$values, [string]$smb) : base ($values, $smb) {
        $this.CopyValues(@{
            AzureSubscriptionId = @{
                required = $True
            }
            AzureLocation = @{
                required = $False
                default = "eastus"
            }
            AzureVirtualNetworkResourceGroupName = @{
                required = $True
            }
            AzureVirtualNetworkName = @{
                required = $True
            }
            AzureVirtualNetworkSubnetName = @{
                required = $True
            }
            UsePublicIP = @{
                required = $False
                default = $False
            }
            TargetResourceGroup = @{
                required = $True
            }
            CloudCwSecretId = @{
                required = $True
            }
            PrepareDiskName = @{
                required = $True
            }
            AzureVmResourceGroup = @{
                required = $False
                default = $False
            } 
        }, $values)
    }

    # POST ProcessImage
    [string]ExportImageJob([string]$resourceLocationId, [bool]$overwrite, [bool]$thinProvision)
    {    
        $exportData = @{
            platformCredentialId = $this.CloudCwSecretId
            subscriptionId = $this.AzureSubscriptionId
            azureRegion = $this.AzureLocation
            targetDiskResourceGroupName = $this.TargetResourceGroup
            targetDiskName = $this.PrepareDiskName
            VirtualNetworkResourceGroupName = $this.AzureVirtualNetworkResourceGroupName
            VirtualNetworkName = $this.AzureVirtualNetworkName
            VirtualNetworkSubnetName = $this.AzureVirtualNetworkSubnetName
            UsePublicIP = $this.UsePublicIP
            resourceGroup = $this.AzureVmResourceGroup
        }

        return ([ExportApi]$this).ExportImageJob($resourceLocationId, "Azure", $exportData, $overwrite, $thinProvision)
    }
}