public String createLinuxVMviaTemplate()
        {
            Console.WriteLine("Inside createLinuxVMviaTemplate....");

            String vmName = null;



            // Authenticate
            var credentials = SdkContext.AzureCredentialsFactory.FromFile("/Users/SK/Desktop/practice/azureauth.properties");

            var azure = Azure
                        .Configure()
                        .WithLogLevel(HttpLoggingDelegatingHandler.Level.Basic)
                        .Authenticate(credentials)
                        .WithDefaultSubscription();

            // Print selected subscription
            Utilities.Log("Selected subscription: " + azure.SubscriptionId);

            var groupName = "myResourceGroup";
            var location  = Region.USEast;

            var resourceGroup = azure.ResourceGroups.Define(groupName)
                                .WithRegion(location)
                                .Create();

            string storageAccountName = SdkContext.RandomResourceName("st", 10);

            Console.WriteLine("Creating storage account...");
            var storage = azure.StorageAccounts.Define(storageAccountName)
                          .WithRegion(Region.USEast)
                          .WithExistingResourceGroup(resourceGroup)
                          .Create();

            var    storageKeys             = storage.GetKeys();
            string storageConnectionString = "DefaultEndpointsProtocol=https;"
                                             + "AccountName=" + storage.Name
                                             + ";AccountKey=" + storageKeys[0].Value
                                             + ";EndpointSuffix=core.windows.net";

            var account       = CloudStorageAccount.Parse(storageConnectionString);
            var serviceClient = account.CreateCloudBlobClient();

            Console.WriteLine("Creating container...");
            var container = serviceClient.GetContainerReference("templates");

            container.CreateIfNotExistsAsync().Wait();
            var containerPermissions = new BlobContainerPermissions()
            {
                PublicAccess = BlobContainerPublicAccessType.Container
            };

            container.SetPermissionsAsync(containerPermissions).Wait();

            Console.WriteLine("Uploading template file...");
            var templateblob = container.GetBlockBlobReference("CreateVMTemplate_Lin.json");

            templateblob.UploadFromFileAsync("..\\..\\CreateVMTemplate_Lin.json");

            Console.WriteLine("Uploading parameters file...");
            var paramblob = container.GetBlockBlobReference("Parameters.json");

            paramblob.UploadFromFileAsync("..\\..\\Parameters.json");


            var templatePath = "https://github.com/sukant0203/azure-demo/blob/master/azure-demo/CreateVMTemplate_Lin.json";
            var paramPath    = "https://github.com/sukant0203/azure-demo/blob/master/azure-demo/Parameters.json";
            var deployment   = azure.Deployments.Define("myDeployment")
                               .WithExistingResourceGroup(groupName)
                               .WithTemplateLink(templatePath, "1.0.0.0")
                               .WithParametersLink(paramPath, "1.0.0.0")
                               .WithMode(Microsoft.Azure.Management.ResourceManager.Fluent.Models.DeploymentMode.Incremental)
                               .Create();

            var    tableaccount = Microsoft.Azure.Storage.CloudStorageAccount.Parse("DefaultEndpointsProtocol=https;AccountName=aztabledemostorageacct;AccountKey=6YPEdzhaXf0wfOBSPdG8U1LOw/euckNcWVNI8nVc9mPsdjgfjSOsElp098Ss7cIjjXwc28OZmI69HQ3O0ADdCNRq91kQ==;EndpointSuffix=core.windows.net");
            var    client       = tableaccount.CreateCloudTableClient();
            var    table        = client.GetTableReference("VmLog");
            string vmSize       = "";
            string time         = System.DateTime.Now.ToString();

            table.CreateIfNotExistsAsync();
            VmLogEntity    vmLogEntity     = new VmLogEntity(vmName, vmSize, time);
            TableOperation insertOperation = TableOperation.Insert(vmLogEntity);

            table.ExecuteAsync(insertOperation);

            var query = new TableQuery <VmLogEntity>();
            var lst   = table.ExecuteQuery(query);


            return(vmName);
        }
        public String createWindowsVMviaSDK()
        {
            String vmName = null;

            var region        = Region.USEast;
            var windowsVmName = Utilities.CreateRandomName("wVM");
            var linuxVmName   = Utilities.CreateRandomName("lVM");
            //var rgName = Utilities.CreateRandomName("rgCOMV");
            var rgName   = "myResourceGroup";
            var userName = "******";    //REMOVE **************
            var password = "******"; //REMOVE ************

            // Authenticate
            var credentials = SdkContext.AzureCredentialsFactory.FromFile("/Users/SK/Desktop/practice/azureauth.properties");

            var azure = Azure
                        .Configure()
                        .WithLogLevel(HttpLoggingDelegatingHandler.Level.Basic)
                        .Authenticate(credentials)
                        .WithDefaultSubscription();

            // Print selected subscription
            Utilities.Log("Selected subscription: " + azure.SubscriptionId);

            // Prepare a creatable data disk for VM
            var dataDiskCreatable = azure.Disks.Define(Utilities.CreateRandomName("dsk-"))
                                    .WithRegion(region)
                                    .WithExistingResourceGroup(rgName)
                                    .WithData()
                                    .WithSizeInGB(2);
            //WithSizeInGB(100);

            // Create a data disk to attach to VM
            //
            var dataDisk = azure.Disks.Define(Utilities.CreateRandomName("dsk-"))
                           .WithRegion(region)
                           .WithNewResourceGroup(rgName)
                           .WithData()
                           .WithSizeInGB(2)
                           .Create();


            Utilities.Log("Creating a Windows VM");

            //var t1 = new DateTime();

            var windowsVM = azure.VirtualMachines.Define(windowsVmName)
                            .WithRegion(region)
                            .WithNewResourceGroup(rgName)
                            .WithNewPrimaryNetwork("10.0.0.0/28")
                            .WithPrimaryPrivateIPAddressDynamic()
                            .WithoutPrimaryPublicIPAddress()
                            .WithPopularWindowsImage(KnownWindowsVirtualMachineImage.WindowsServer2012R2Datacenter)
                            .WithAdminUsername(userName)
                            .WithAdminPassword(password)
                            .WithNewDataDisk(2)
                            .WithNewDataDisk(dataDiskCreatable)
                            .WithExistingDataDisk(dataDisk)
                            .WithSize(VirtualMachineSizeTypes.StandardD3V2)
                            .Create();

            vmName = windowsVM.Name;

            //Microsoft.Azure.Storage.CloudStorageAccount.Parse("DefaultEndpointsProtocol=https;AccountName=aztabledemostorageacct;AccountKey=riQb1KJXk3c8IEZVGpKWvh1/dObB5oWS4uNrZ8AvZl5FamcfQvSverE6y1TE3L5PoN7TuoBLrFsjP2Ku9lbgFA==;EndpointSuffix=core.windows.net");
            var    account = Microsoft.Azure.Storage.CloudStorageAccount.Parse("DefaultEndpointsProtocol=https;AccountName=aztabledemostorageacct;AccountKey=6YPEdzhaXf0wfOBSPdG8U1LOw/euckNcWVNI8nVc9mPsdjgfjSOsElp098Ss7cIjjXwc28OZmI69HQ3O0ADdCNRq91kQ==;EndpointSuffix=core.windows.net");
            var    client  = account.CreateCloudTableClient();
            var    table   = client.GetTableReference("VmLog");
            string vmSize  = windowsVM.Size.ToString();
            string time    = System.DateTime.Now.ToString();

            table.CreateIfNotExistsAsync();
            VmLogEntity    vmLogEntity     = new VmLogEntity(vmName, vmSize, time);
            TableOperation insertOperation = TableOperation.Insert(vmLogEntity);

            table.ExecuteAsync(insertOperation);

            var query = new TableQuery <VmLogEntity>();
            var lst   = table.ExecuteQuery(query);

            return(vmName);
        }
        public String createLinuxVMviaSDK()
        {
            String vmName = null;

            //var region = Region.USWestCentral;
            var region        = Region.USEast;
            var windowsVmName = Utilities.CreateRandomName("wVM");
            var linuxVmName   = Utilities.CreateRandomName("lVM");
            //var rgName = Utilities.CreateRandomName("rgCOMV");
            var rgName   = "myResourceGroup";
            var userName = "******";    //REMOVE **************
            var password = "******"; //REMOVE ************

            // Authenticate
            var credentials = SdkContext.AzureCredentialsFactory.FromFile("/Users/SK/Desktop/practice/azureauth.properties");

            var azure = Azure
                        .Configure()
                        .WithLogLevel(HttpLoggingDelegatingHandler.Level.Basic)
                        .Authenticate(credentials)
                        .WithDefaultSubscription();

            // Print selected subscription
            Utilities.Log("Selected subscription: " + azure.SubscriptionId);

            // Prepare a creatable data disk for VM
            var dataDiskCreatable = azure.Disks.Define(Utilities.CreateRandomName("dsk-"))
                                    .WithRegion(region)
                                    .WithExistingResourceGroup(rgName)
                                    .WithData()
                                    .WithSizeInGB(2);

            // Create a data disk to attach to VM
            //
            var dataDisk = azure.Disks.Define(Utilities.CreateRandomName("dsk-"))
                           .WithRegion(region)
                           .WithNewResourceGroup(rgName)
                           .WithData()
                           .WithSizeInGB(2)
                           .Create();



            // Get the network where Windows VM is hosted
            //var network = windowsVM.GetPrimaryNetworkInterface().PrimaryIPConfiguration.GetNetwork();

            //=============================================================
            // Create a Linux VM in the same virtual network

            Utilities.Log("Creating a Linux VM in the network");

            var linuxVM = azure.VirtualMachines.Define(linuxVmName)
                          .WithRegion(region)
                          .WithNewResourceGroup(rgName)
                          .WithNewPrimaryNetwork("10.0.0.0/28")
                          .WithPrimaryPrivateIPAddressDynamic()
                          .WithoutPrimaryPublicIPAddress()

                          .WithPopularLinuxImage(KnownLinuxVirtualMachineImage.UbuntuServer16_04_Lts)
                          .WithRootUsername(userName)
                          .WithRootPassword(password)
                          .WithSize(VirtualMachineSizeTypes.StandardD3V2)
                          .Create();

            Utilities.Log("Created a Linux VM (in the same virtual network): " + linuxVM.Id);
            Utilities.PrintVirtualMachine(linuxVM);
            vmName = linuxVM.Name;

            var    account = Microsoft.Azure.Storage.CloudStorageAccount.Parse("DefaultEndpointsProtocol=https;AccountName=aztabledemostorageacct;AccountKey=6YPEdzhaXf0wfOBSPdG8U1LOw/euckNcWVNI8nVc9mPsdjgfjSOsElp098Ss7cIjjXwc28OZmI69HQ3O0ADdCNRq91kQ==;EndpointSuffix=core.windows.net");
            var    client  = account.CreateCloudTableClient();
            var    table   = client.GetTableReference("VmLog");
            string vmSize  = linuxVM.Size.ToString();
            string time    = System.DateTime.Now.ToString();

            table.CreateIfNotExistsAsync();
            VmLogEntity    vmLogEntity     = new VmLogEntity(vmName, vmSize, time);
            TableOperation insertOperation = TableOperation.Insert(vmLogEntity);

            table.ExecuteAsync(insertOperation);

            var query = new TableQuery <VmLogEntity>();
            var lst   = table.ExecuteQuery(query);


            return(vmName);
        }