private void configurePublicIP(IpOptions ipConfig, IpConfigurationProperties.Builder ipProperties, String resourceGroup, String location, String nodeName) { if (ipConfig.publicIpId() != null) { logger.debug(">> configuring public ip: %s", extractName(ipConfig.publicIpId())); PublicIPAddress publicIp = api.getPublicIPAddressApi(extractResourceGroup(ipConfig.publicIpId())).get( extractName(ipConfig.publicIpId())); ipProperties.publicIPAddress(IdReference.create(publicIp.id())); } else if (ipConfig.allocateNewPublicIp()) { PublicIPAddress publicIp = createPublicIp(resourceGroup, location, nodeName); ipProperties.publicIPAddress(IdReference.create(publicIp.id())); } }
@Nullable public String name() { return extractName(id()); }
private void deleteManagedDisk(@Nullable ManagedDiskParameters managedDisk, Map<String, URI> deleteJobs) { if (managedDisk != null) { IdReference diskRef = IdReference.create(managedDisk.id()); logger.debug(">> deleting managed disk %s...", diskRef.name()); URI uri = api.getDiskApi(diskRef.resourceGroup()).delete(diskRef.name()); if (uri != null) { deleteJobs.put(diskRef.name(), uri); } } }
@Nullable public String resourceGroup() { return extractResourceGroup(id()); }
@Override public Set<SecurityGroup> listSecurityGroupsForNode(String nodeId) { logger.debug(">> getting security groups for node %s...", nodeId); final ResourceGroupAndName resourceGroupAndName = ResourceGroupAndName.fromSlashEncoded(nodeId); VirtualMachine vm = api.getVirtualMachineApi(resourceGroupAndName.resourceGroup()).get( resourceGroupAndName.name()); if (vm == null) { throw new IllegalArgumentException("Node " + nodeId + " was not found"); } List<NetworkInterface> networkInterfaces = vm.properties().networkProfile().networkInterfaces(); List<NetworkSecurityGroup> networkGroups = new ArrayList<NetworkSecurityGroup>(); for (NetworkInterface networkInterfaceCardIdReference : networkInterfaces) { String nicName = extractName(networkInterfaceCardIdReference.id()); String nicResourceGroup = extractResourceGroup(networkInterfaceCardIdReference.id()); NetworkInterfaceCard card = api.getNetworkInterfaceCardApi(nicResourceGroup).get(nicName); if (card != null && card.properties().networkSecurityGroup() != null) { String secGroupName = card.properties().networkSecurityGroup().name(); String sgResourceGroup = card.properties().networkSecurityGroup().resourceGroup(); NetworkSecurityGroup group = api.getNetworkSecurityGroupApi(sgResourceGroup).get(secGroupName); networkGroups.add(group); } } return ImmutableSet.copyOf(transform(filter(networkGroups, notNull()), securityGroupConverter)); }
private NetworkInterfaceCard getNetworkInterfaceCard(NetworkInterface nic) { return api.getNetworkInterfaceCardApi(extractResourceGroup(nic.id())).get(extractName(nic.id())); }
private IdReference getAvailabilitySetIdReference(AvailabilitySet availabilitySet) { return availabilitySet != null ? IdReference.create(availabilitySet.id()) : null; } }
@Test public void testExtractResourceGroup() { assertEquals(extractResourceGroup(null), null); assertEquals(extractResourceGroup(""), null); assertEquals( extractResourceGroup("/subscriptions/subscription/resourceGroups/jclouds-northeurope/providers/Microsoft.Compute/virtualMachines/resources-8c5"), "jclouds-northeurope"); assertEquals(extractResourceGroup("/subscriptions/subscription/resourceGroups/jclouds-west"), "jclouds-west"); assertEquals(extractResourceGroup("/resourceGroups/jclouds-west2"), "jclouds-west2"); assertEquals( extractResourceGroup("/resourceGroups/jclouds-northeurope2/providers/Microsoft.Compute/virtualMachines/resources-8c5"), "jclouds-northeurope2"); assertEquals(extractResourceGroup("resourceGroups/jclouds-west2"), null); assertEquals( extractResourceGroup("resourceGroups/jclouds-northeurope2/providers/Microsoft.Compute/virtualMachines/resources-8c5"), null); assertEquals( extractResourceGroup("/subscriptions/subscription/providers/Microsoft.Compute/virtualMachines/resources-8c5"), null); assertEquals( extractResourceGroup("/subscriptions/subscription/resourceGroups//jclouds-northeurope/providers/Microsoft.Compute/virtualMachines/resources-8c5"), null); }
@Test public void createNetworkInterfaceCard() { //Create properties object final NetworkInterfaceCardProperties networkInterfaceCardProperties = NetworkInterfaceCardProperties.builder() .ipConfigurations(Arrays.asList(IpConfiguration.builder().name("myipconfig") .properties(IpConfigurationProperties.builder().privateIPAllocationMethod("Dynamic").primary (TRUE) .subnet(IdReference.create(subnetId)).build() ).build() )).build(); final Map<String, String> tags = ImmutableMap.of("jclouds", "livetest"); NetworkInterfaceCard nic = api().createOrUpdate(nicName, LOCATION, networkInterfaceCardProperties, tags); assertEquals(nic.name(), nicName); assertEquals(nic.location(), LOCATION); assertTrue(nic.properties().ipConfigurations().size() > 0); assertEquals(nic.properties().ipConfigurations().get(0).name(), "myipconfig"); assertEquals(nic.properties().ipConfigurations().get(0).properties().privateIPAllocationMethod(), "Dynamic"); assertTrue(nic.properties().ipConfigurations().get(0).properties().primary()); assertEquals(nic.properties().ipConfigurations().get(0).properties().subnet().id(), subnetId); assertEquals(nic.tags().get("jclouds"), "livetest"); }
public boolean cleanupAvailabilitySetIfOrphaned(VirtualMachine virtualMachine) { boolean deleted = true; IdReference availabilitySetRef = virtualMachine.properties().availabilitySet(); if (availabilitySetRef != null) { String name = availabilitySetRef.name(); String resourceGroup = availabilitySetRef.resourceGroup(); AvailabilitySet availabilitySet = api.getAvailabilitySetApi(resourceGroup).get(name); if (isOrphanedJcloudsAvailabilitySet(availabilitySet)) { logger.debug(">> deleting orphaned availability set %s from %s...", name, resourceGroup); URI uri = api.getAvailabilitySetApi(resourceGroup).delete(name); deleted = uri == null || resourceDeleted.apply(uri); } } return deleted; }
@Test(dependsOnMethods = "createNetworkInterfaceCard") public void getNetworkInterfaceCard() { NetworkInterfaceCard nic = api().get(nicName); assertEquals(nic.name(), nicName); assertEquals(nic.location(), LOCATION); assertTrue(nic.properties().ipConfigurations().size() > 0); assertEquals(nic.properties().ipConfigurations().get(0).name(), "myipconfig"); assertEquals(nic.properties().ipConfigurations().get(0).properties().privateIPAllocationMethod(), "Dynamic"); assertEquals(nic.properties().ipConfigurations().get(0).properties().subnet().id(), subnetId); }
@Test public void testExtractName() { assertEquals(extractName(null), null); assertEquals(extractName(""), ""); assertEquals(extractName("foo"), "foo"); assertEquals(extractName("/foo/bar"), "bar"); assertEquals(extractName("/foo/bar/"), "bar"); assertEquals(extractName("/foo/bar////"), "bar"); assertEquals(extractName("/foo///bar////"), "bar"); assertEquals(extractName("////bar"), "bar"); } }
@Override public Set<SecurityGroup> listSecurityGroupsForNode(String nodeId) { logger.debug(">> getting security groups for node %s...", nodeId); final ResourceGroupAndName resourceGroupAndName = ResourceGroupAndName.fromSlashEncoded(nodeId); VirtualMachine vm = api.getVirtualMachineApi(resourceGroupAndName.resourceGroup()).get( resourceGroupAndName.name()); if (vm == null) { throw new IllegalArgumentException("Node " + nodeId + " was not found"); } List<NetworkInterface> networkInterfaces = vm.properties().networkProfile().networkInterfaces(); List<NetworkSecurityGroup> networkGroups = new ArrayList<NetworkSecurityGroup>(); for (NetworkInterface networkInterfaceCardIdReference : networkInterfaces) { String nicName = extractName(networkInterfaceCardIdReference.id()); String nicResourceGroup = extractResourceGroup(networkInterfaceCardIdReference.id()); NetworkInterfaceCard card = api.getNetworkInterfaceCardApi(nicResourceGroup).get(nicName); if (card != null && card.properties().networkSecurityGroup() != null) { String secGroupName = card.properties().networkSecurityGroup().name(); String sgResourceGroup = card.properties().networkSecurityGroup().resourceGroup(); NetworkSecurityGroup group = api.getNetworkSecurityGroupApi(sgResourceGroup).get(secGroupName); networkGroups.add(group); } } return ImmutableSet.copyOf(transform(filter(networkGroups, notNull()), securityGroupConverter)); }
private NetworkInterfaceCard getNetworkInterfaceCard(NetworkInterface nic) { return api.getNetworkInterfaceCardApi(extractResourceGroup(nic.id())).get(extractName(nic.id())); }
private IdReference getAvailabilitySetIdReference(AvailabilitySet availabilitySet) { return availabilitySet != null ? IdReference.create(availabilitySet.id()) : null; } }
@Override public StatusAndBackendStatus apply(VirtualMachine virtualMachine) { String resourceGroup = extractResourceGroup(virtualMachine.id()); ProvisioningState provisioningState = virtualMachine.properties().provisioningState(); NodeMetadata.Status status = PROVISIONINGSTATE_TO_NODESTATUS.apply(provisioningState); String backendStatus = provisioningState.name(); if (ProvisioningState.SUCCEEDED.equals(provisioningState)) { // If the provisioning succeeded, we need to query the *real* status of // the VM VirtualMachineInstance instanceDetails = api.getVirtualMachineApi(resourceGroup).getInstanceDetails( virtualMachine.name()); if (instanceDetails != null && instanceDetails.powerState() != null) { status = POWERSTATE_TO_NODESTATUS.apply(instanceDetails.powerState()); backendStatus = Joiner.on(',').join(transform(instanceDetails.statuses(), new Function<Status, String>() { @Override public String apply(Status input) { return input.code(); } })); } else { status = NodeMetadata.Status.PENDING; } } return StatusAndBackendStatus.create(status, backendStatus); } }
@Nullable public String resourceGroup() { return extractResourceGroup(id()); }
public boolean cleanupAvailabilitySetIfOrphaned(VirtualMachine virtualMachine) { boolean deleted = true; IdReference availabilitySetRef = virtualMachine.properties().availabilitySet(); if (availabilitySetRef != null) { String name = availabilitySetRef.name(); String resourceGroup = availabilitySetRef.resourceGroup(); AvailabilitySet availabilitySet = api.getAvailabilitySetApi(resourceGroup).get(name); if (isOrphanedJcloudsAvailabilitySet(availabilitySet)) { logger.debug(">> deleting orphaned availability set %s from %s...", name, resourceGroup); URI uri = api.getAvailabilitySetApi(resourceGroup).delete(name); deleted = uri == null || resourceDeleted.apply(uri); } } return deleted; }
public void getPublicIPAddressInfo() throws InterruptedException { server.enqueue(jsonResponse("/PublicIPAddressGetInfo.json")); final PublicIPAddressApi ipApi = api.getPublicIPAddressApi(resourcegroup); PublicIPAddress ip = ipApi.get(publicIpName); String path = String.format("/subscriptions/%s/resourcegroups/%s/providers/Microsoft.Network/publicIPAddresses/%s?%s", subscriptionid, resourcegroup, publicIpName, apiVersion); assertSent(server, "GET", path); assertNotNull(ip); assertEquals(ip.name(), "mypublicaddress"); assertEquals(ip.location(), "northeurope"); assertEquals(ip.id(), "/subscriptions/fakeb2f5-4710-4e93-bdf4-419edbde2178/resourceGroups/myresourcegroup/providers/Microsoft.Network/publicIPAddresses/mypublicaddress"); assertEquals(ip.tags().get("testkey"), "testvalue"); assertNotNull(ip.properties()); assertEquals(ip.properties().provisioningState(), "Succeeded"); assertEquals(ip.properties().ipAddress(), "12.123.12.123"); assertEquals(ip.properties().publicIPAllocationMethod(), "Static"); assertEquals(ip.properties().idleTimeoutInMinutes().intValue(), 4); assertNotNull(ip.properties().dnsSettings()); assertEquals(ip.properties().dnsSettings().domainNameLabel(), "foobar"); assertEquals(ip.properties().dnsSettings().fqdn(), "foobar.northeurope.cloudapp.azure.com"); assertNotNull(ip.properties().ipConfiguration()); assertEquals(ip.properties().ipConfiguration().id(), "/subscriptions/fakeb2f5-4710-4e93-bdf4-419edbde2178/resourceGroups/myresourcegroup/providers/Microsoft.Network/networkInterfaces/myNic/ipConfigurations/myip1"); assertEquals(ip.sku().name(), Basic); }
private List<String> createVirtualMachinesInGroupAndGetNicRefs(final String group, final int count) throws RunNodesException { // To add multiple nodes in a LB they must belong to the same availability // set AvailabilitySetProperties props = AvailabilitySetProperties.builder().platformUpdateDomainCount(count) .platformFaultDomainCount(count).build(); AvailabilitySet as = AvailabilitySet.managed().name(group).properties(props).build(); Set<? extends NodeMetadata> nodes = view.getComputeService().createNodesInGroup(group, count, availabilitySet(as).resourceGroup(this.group)); List<String> nicNames = new ArrayList<String>(); for (NodeMetadata node : nodes) { ResourceGroupAndName resourceGroupAndName = ResourceGroupAndName.fromSlashEncoded(node.getId()); VirtualMachine vm = api.getVirtualMachineApi(resourceGroupAndName.resourceGroup()).get( resourceGroupAndName.name()); String nicName = extractName(vm.properties().networkProfile().networkInterfaces().get(0).id()); nicNames.add(nicName); } return nicNames; }