/**
         * It creates a new Azure virtual machine and it instantiate a Java Docker client.
         * @param azure - instance of Azure
         * @param rgName - name of the Azure resource group to be used when creating a virtual machine
         * @param region - region to be used when creating a virtual machine
         * @return an instance of DockerClient
         */
        public static DockerClient FromNewDockerVM(IAzure azure, String rgName, Region region)
        {
            string dockerVMName     = SdkContext.RandomResourceName("dockervm", 15);
            string publicIPDnsLabel = SdkContext.RandomResourceName("pip", 10);
            string vmUserName       = "******";
            string vmPassword       = Utilities.CreatePassword();

            // Could not find a Docker environment; presume that there is no local Docker engine running and
            //    attempt to configure a Docker engine running inside a new Azure virtual machine
            Utilities.Log("Creating an Azure virtual machine running Docker");

            IVirtualMachine dockerVM = azure.VirtualMachines.Define(dockerVMName)
                                       .WithRegion(region)
                                       .WithExistingResourceGroup(rgName)
                                       .WithNewPrimaryNetwork("10.0.0.0/28")
                                       .WithPrimaryPrivateIPAddressDynamic()
                                       .WithNewPrimaryPublicIPAddress(publicIPDnsLabel)
                                       .WithPopularLinuxImage(KnownLinuxVirtualMachineImage.UbuntuServer16_04_Lts)
                                       .WithRootUsername(vmUserName)
                                       .WithRootPassword(vmPassword)
                                       .WithSize(VirtualMachineSizeTypes.Parse("Standard_D2a_v4"))
                                       .Create();

            Utilities.Log("Created Azure Virtual Machine: " + dockerVM.Id);

            // Get the IP of the Docker host
            INicIPConfiguration nicIPConfiguration = dockerVM.GetPrimaryNetworkInterface().PrimaryIPConfiguration;
            IPublicIPAddress    publicIp           = nicIPConfiguration.GetPublicIPAddress();
            string dockerHostIP = publicIp.IPAddress;

            DockerClient dockerClient = InstallDocker(dockerHostIP, vmUserName, vmPassword);

            return(dockerClient);
        }
Пример #2
0
        ///GENMHASH:A4DDE1D1D48B67FA48D835924D16FDA1:FF7B041ADA25EA1EECE12F0DADBD55E5
        internal IReadOnlyCollection <INicIPConfiguration> ListNetworkInterfaceIPConfigurations()
        {
            List <INicIPConfiguration> ipConfigs                 = new List <INicIPConfiguration>();
            IDictionary <string, INetworkInterface> nics         = new SortedDictionary <string, INetworkInterface>();
            IList <IPConfigurationInner>            ipConfigRefs = Inner.IpConfigurations;

            if (ipConfigRefs == null)
            {
                return(ipConfigs);
            }

            foreach (var ipConfigRef in ipConfigRefs)
            {
                string nicID        = ResourceUtils.ParentResourcePathFromResourceId(ipConfigRef.Id);
                string ipConfigName = ResourceUtils.NameFromResourceId(ipConfigRef.Id);
                // Check if NIC already cached
                INetworkInterface nic;
                if (!nics.TryGetValue(nicID.ToLower(), out nic))
                {
                    //  NIC not previously found, so ask Azure for it
                    nic = Parent.Manager.NetworkInterfaces.GetById(nicID);
                }

                if (nic == null)
                {
                    // NIC doesn't exist so ignore this bad reference
                    continue;
                }

                // Cache the NIC
                nics[nic.Id.ToLower()] = nic;

                // Get the IP config
                INicIPConfiguration ipConfig = nic.IPConfigurations[ipConfigName];
                if (ipConfig == null)
                {
                    // IP config not found, so ignore this bad reference
                    continue;
                }

                ipConfigs.Add(ipConfig);
            }

            return(ipConfigs);
        }
Пример #3
0
        public async Task GetVmVn()
        {
            var allvms = await azure.VirtualMachines.ListAsync();

            IVirtualMachine targetvm = allvms
                                       .Where(vm => vm.Name == "Annvm")
                                       .SingleOrDefault();

            Console.WriteLine(targetvm?.Id);

            INetworkInterface targetnic = targetvm.GetPrimaryNetworkInterface();

            INicIPConfiguration targetipconfig = targetnic.PrimaryIPConfiguration;

            IPublicIPAddress targetipaddress = targetipconfig.GetPublicIPAddress();

            Console.WriteLine($"IP Address:\t{targetipaddress.IPAddress}");
            Console.WriteLine("Press any key to exit.");
            Console.ReadLine();
        }
        public void CreateUpdate()
        {
            using (var context = FluentMockContext.Start(GetType().FullName))
            {
                var    testId   = TestUtilities.GenerateName("");
                string nicName  = "nic" + testId;
                string vnetName = "net" + testId;
                string pipName  = "pip" + testId;
                Region region   = Region.USEast;

                var manager = TestHelper.CreateNetworkManager();

                var network = manager.Networks.Define(vnetName)
                              .WithRegion(region)
                              .WithNewResourceGroup()
                              .WithAddressSpace("10.0.0.0/28")
                              .WithSubnet("subnet1", "10.0.0.0/29")
                              .WithSubnet("subnet2", "10.0.0.8/29")
                              .Create();

                var nic = manager.NetworkInterfaces.Define(nicName)
                          .WithRegion(region)
                          .WithExistingResourceGroup(network.ResourceGroupName)
                          .WithExistingPrimaryNetwork(network)
                          .WithSubnet("subnet1")
                          .WithPrimaryPrivateIPAddressDynamic()
                          .WithNewPrimaryPublicIPAddress(pipName)
                          .WithIPForwarding()
                          .WithAcceleratedNetworking()
                          .Create();

                // Verify NIC settings
                Assert.True(nic.IsAcceleratedNetworkingEnabled);
                Assert.True(nic.IsIPForwardingEnabled);

                // Veirfy IP configs
                var ipConfig = nic.PrimaryIPConfiguration;
                Assert.NotNull(ipConfig);
                network = ipConfig.GetNetwork();
                Assert.NotNull(network);
                ISubnet subnet;
                Assert.True(network.Subnets.TryGetValue(ipConfig.SubnetName, out subnet));
                Assert.Equal(1, subnet.NetworkInterfaceIPConfigurationCount);
                var ipConfigs = subnet.ListNetworkInterfaceIPConfigurations();
                Assert.NotNull(ipConfigs);
                Assert.Equal(1, ipConfigs.Count);

                INicIPConfiguration ipConfig2 = null;
                ipConfig2 = ipConfigs.FirstOrDefault(i => i.Name.Equals(ipConfig.Name, StringComparison.OrdinalIgnoreCase));
                Assert.NotNull(ipConfig2);
                Assert.Equal(ipConfig.Name, ipConfig2.Name, ignoreCase: true);

                var resource = manager.NetworkInterfaces.GetById(nic.Id);
                resource = resource.Update()
                           .WithoutIPForwarding()
                           .WithoutAcceleratedNetworking()
                           .WithSubnet("subnet2")
                           .UpdateIPConfiguration(resource.PrimaryIPConfiguration.Name) // Updating the primary IP configuration
                           .WithPrivateIPAddressDynamic()                               // Equivalent to ..update().withPrimaryPrivateIPAddressDynamic()
                           .WithoutPublicIPAddress()                                    // Equivalent to ..update().withoutPrimaryPublicIPAddress()
                           .Parent()
                           .WithTag("tag1", "value1")
                           .WithTag("tag2", "value2")
                           .Apply();
                Assert.True(resource.Tags.ContainsKey("tag1"));

                // Verifications
                Assert.False(resource.IsIPForwardingEnabled);
                Assert.False(resource.IsAcceleratedNetworkingEnabled);
                var primaryIpConfig = resource.PrimaryIPConfiguration;
                Assert.NotNull(primaryIpConfig);
                Assert.True(primaryIpConfig.IsPrimary);
                Assert.True("subnet2" == primaryIpConfig.SubnetName.ToLower());
                Assert.Null(primaryIpConfig.PublicIPAddressId);
                Assert.True(resource.Tags.ContainsKey("tag1"));

                manager.NetworkInterfaces.DeleteById(resource.Id);
                resource.Manager.ResourceManager.ResourceGroups.BeginDeleteByName(resource.ResourceGroupName);

                Assert.Equal(1, resource.IPConfigurations.Count);
            }
        }