@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; } }
expect(secClient.createSecurityGroup("group-1")).andThrow(new IllegalStateException()); expect(secClient.getSecurityGroupByName("group-1")).andReturn(group);
expect(secClient.createSecurityGroup("group-1")).andReturn(group); expect(secClient.authorizeIngressPortsToCIDRs("sec-1234", "TCP",
expect(secClient.createSecurityGroup("group-1")).andReturn(group); expect(secClient.authorizeIngressPortsToCIDRs("sec-1234", "TCP",
@Test public void testCreateDestroySecurityGroup() { try { zone = Iterables.find(client.getZoneApi().listZones(), new Predicate<Zone>() { @Override public boolean apply(Zone arg0) { return arg0.isSecurityGroupsEnabled(); } }); securityGroupsSupported = true; for (SecurityGroup securityGroup : client.getSecurityGroupApi().listSecurityGroups( ListSecurityGroupsOptions.Builder.named(prefix))) { for (IngressRule rule : securityGroup.getIngressRules()) assertTrue(jobComplete.apply(client.getSecurityGroupApi().revokeIngressRule(rule.getId())), rule.toString()); client.getSecurityGroupApi().deleteSecurityGroup(securityGroup.getId()); } group = client.getSecurityGroupApi().createSecurityGroup(prefix); assertEquals(group.getName(), prefix); checkGroup(group); try { client.getSecurityGroupApi().createSecurityGroup(prefix); fail("Expected IllegalStateException"); } catch (IllegalStateException e) { } } catch (NoSuchElementException e) { e.printStackTrace(); } }