private void cleanupOrphanedSecurityGroupsInZone(Set<String> groups, String zoneId) { Zone zone = zoneIdToZone.get().getUnchecked(zoneId); if (supportsSecurityGroups().apply(zone)) { for (String group : groups) { for (SecurityGroup securityGroup : Iterables.filter(client.getSecurityGroupApi().listSecurityGroups(), SecurityGroupPredicates.nameMatches(namingConvention.create().containsGroup(group)))) { ZoneAndName zoneAndName = ZoneAndName.fromZoneAndName(zoneId, securityGroup.getName()); logger.debug(">> deleting securityGroup(%s)", zoneAndName); client.getSecurityGroupApi().deleteSecurityGroup(securityGroup.getId()); // TODO: test this clear happens securityGroupMap.invalidate(zoneAndName); logger.debug("<< deleted securityGroup(%s)", zoneAndName); } } } }
@Test public void testSupportsAdvancedNetworks() { assertTrue(supportsAdvancedNetworks().apply( Zone.builder().id("41").networkType(NetworkType.ADVANCED).build() )); assertFalse(supportsAdvancedNetworks().apply( Zone.builder().id("42").networkType(NetworkType.BASIC).build() )); }
@Test public void testSupportsSecurityGroups() { assertTrue(supportsSecurityGroups().apply( Zone.builder().id("43").securityGroupsEnabled(true).build() )); assertFalse(supportsSecurityGroups().apply( Zone.builder().id("44").securityGroupsEnabled(false).build() )); }
@Test public void testSupportsAdvancedNetworks() { assertTrue(supportsAdvancedNetworks().apply( Zone.builder().id("41").networkType(NetworkType.ADVANCED).build() )); assertFalse(supportsAdvancedNetworks().apply( Zone.builder().id("42").networkType(NetworkType.BASIC).build() )); }
@Override public SecurityGroup apply(ZoneSecurityGroupNamePortsCidrs input) { checkNotNull(input, "input"); String zoneId = input.getZone(); Zone zone = zoneIdToZone.get().getUnchecked(zoneId); checkArgument(supportsSecurityGroups().apply(zone), "Security groups are required, but the zone %s does not support security groups", zoneId); logger.debug(">> creating securityGroup %s", input); try { SecurityGroup securityGroup = client.getSecurityGroupApi().createSecurityGroup(input.getName()); logger.debug("<< created securityGroup(%s)", securityGroup); ImmutableSet<String> cidrs; if (!input.getCidrs().isEmpty()) { cidrs = ImmutableSet.copyOf(input.getCidrs()); } else { cidrs = ImmutableSet.of("0.0.0.0/0"); } for (int port : input.getPorts()) { authorizeGroupToItselfAndToTCPPortAndCidr(client, securityGroup, port, cidrs); } return securityGroup; } catch (IllegalStateException e) { logger.trace("<< trying to find securityGroup(%s): %s", input, e.getMessage()); SecurityGroup group = client.getSecurityGroupApi().getSecurityGroupByName(input.getName()); logger.debug("<< reused securityGroup(%s)", group.getId()); return group; } }
@BeforeGroups(groups = "live") public void setupContext() { super.setupContext(); try { zone = find(client.getZoneClient().listZones(), ZonePredicates.supportsAdvancedNetworks()); networksSupported = true; } catch (NoSuchElementException e) { } }
@Test public void testSupportsSecurityGroups() { assertTrue(supportsSecurityGroups().apply( Zone.builder().id("43").securityGroupsEnabled(true).build() )); assertFalse(supportsSecurityGroups().apply( Zone.builder().id("44").securityGroupsEnabled(false).build() )); }
@BeforeGroups(groups = "live") public void setupContext() { super.setupContext(); try { zone = find(client.getZoneApi().listZones(), ZonePredicates.supportsAdvancedNetworks()); networksSupported = true; } catch (NoSuchElementException e) { } }
if (supportsSecurityGroups().apply(zone)) { List<Integer> inboundPorts = Ints.asList(templateOptions.getInboundPorts());
skipIfNotGlobalAdmin(); final Zone zone = Iterables.find(client.getZoneClient().listZones(), ZonePredicates.supportsAdvancedNetworks()); final NetworkOffering offering = find(client.getOfferingClient().listNetworkOfferings(), NetworkOfferingPredicates.supportsGuestVirtualNetworks());
skipIfNotGlobalAdmin(); final Zone zone = Iterables.find(client.getZoneApi().listZones(), ZonePredicates.supportsAdvancedNetworks()); final NetworkOffering offering = Iterables.tryFind(client.getOfferingApi().listNetworkOfferings(), NetworkOfferingPredicates.supportsGuestVirtualNetworks()).orNull();