/** * Returns the {@link SecurityGroup} instance for the target group. */ private static Optional<? extends SecurityGroup> getSecurityGroupForGroup(final SecurityGroupApi securityGroupApi, final String group) { return securityGroupApi.list().firstMatch(new Predicate<org.jclouds.openstack.nova.v2_0.domain.SecurityGroup>() { @Override public boolean apply(org.jclouds.openstack.nova.v2_0.domain.SecurityGroup secGrp) { return secGrp.getName().equals(group); } }); }
@Override public Set<? extends SecurityGroupInRegion> apply(final String from) { Optional<? extends SecurityGroupApi> sgApi = api.getSecurityGroupApi(from); if (!sgApi.isPresent()) { return ImmutableSet.of(); } final FluentIterable<org.jclouds.openstack.nova.v2_0.domain.SecurityGroup> allGroups = sgApi.get().list(); return allGroups.transform(groupToGroupInRegion(allGroups, from)).toSet(); }
@Override public Set<? extends SecurityGroupInZone> apply(final String from) { Optional<? extends SecurityGroupApi> sgApi = api.getSecurityGroupExtensionForZone(from); if (!sgApi.isPresent()) { return ImmutableSet.of(); } return sgApi.get().list().transform(groupToGroupInZone(from)).toSet(); }
@Override public Set<? extends SecurityGroupInRegion> apply(final String from) { Optional<? extends SecurityGroupApi> sgApi = api.getSecurityGroupApi(from); if (!sgApi.isPresent()) { return ImmutableSet.of(); } return sgApi.get().list().transform(groupToGroupInRegion(from)).toSet(); }
@Override public Set<? extends SecurityGroupInRegion> apply(final String from) { Optional<? extends SecurityGroupApi> sgApi = api.getSecurityGroupApi(from); if (!sgApi.isPresent()) { return ImmutableSet.of(); } final FluentIterable<org.jclouds.openstack.nova.v2_0.domain.SecurityGroup> allGroups = sgApi.get().list(); return allGroups.transform(groupToGroupInRegion(allGroups, from)).toSet(); }
@Override public SecurityGroup getSecurityGroupById(String id) { RegionAndId regionAndId = RegionAndId.fromSlashEncoded(checkNotNull(id, "id")); String region = regionAndId.getRegion(); String groupId = regionAndId.getId(); Optional<? extends SecurityGroupApi> sgApi = api.getSecurityGroupApi(region); if (!sgApi.isPresent()) { return null; } final FluentIterable<org.jclouds.openstack.nova.v2_0.domain.SecurityGroup> allGroups = sgApi.get().list(); SecurityGroupInRegion rawGroup = new SecurityGroupInRegion(sgApi.get().get(groupId), region, allGroups); return groupConverter.apply(rawGroup); }
@Override public SecurityGroup getSecurityGroupById(String id) { RegionAndId regionAndId = RegionAndId.fromSlashEncoded(checkNotNull(id, "id")); String region = regionAndId.getRegion(); String groupId = regionAndId.getId(); Optional<? extends SecurityGroupApi> sgApi = api.getSecurityGroupApi(region); if (!sgApi.isPresent()) { return null; } final FluentIterable<org.jclouds.openstack.nova.v2_0.domain.SecurityGroup> allGroups = sgApi.get().list(); SecurityGroupInRegion rawGroup = new SecurityGroupInRegion(sgApi.get().get(groupId), region, allGroups); return groupConverter.apply(rawGroup); }
@Override public Set<SecurityGroup> listSecurityGroupsForNode(String id) { ZoneAndId zoneAndId = ZoneAndId.fromSlashEncoded(checkNotNull(id, "id")); String zone = zoneAndId.getZone(); String instanceId = zoneAndId.getId(); Optional<? extends ServerWithSecurityGroupsApi> serverApi = api.getServerWithSecurityGroupsExtensionForZone(zone); Optional<? extends SecurityGroupApi> sgApi = api.getSecurityGroupExtensionForZone(zone); if (!serverApi.isPresent() || !sgApi.isPresent()) { return ImmutableSet.of(); } ServerWithSecurityGroups instance = serverApi.get().get(instanceId); if (instance == null) { return ImmutableSet.of(); } Set<String> groupNames = instance.getSecurityGroupNames(); Set<? extends SecurityGroupInZone> rawGroups = sgApi.get().list().filter(nameIn(groupNames)).transform(groupToGroupInZone(zone)).toSet(); return ImmutableSet.copyOf(transform(filter(rawGroups, notNull()), groupConverter)); }
@Override public Set<SecurityGroup> listSecurityGroupsForNode(String id) { RegionAndId regionAndId = RegionAndId.fromSlashEncoded(checkNotNull(id, "id")); String region = regionAndId.getRegion(); String instanceId = regionAndId.getId(); Optional<? extends ServerWithSecurityGroupsApi> serverApi = api.getServerWithSecurityGroupsApi(region); Optional<? extends SecurityGroupApi> sgApi = api.getSecurityGroupApi(region); if (!serverApi.isPresent() || !sgApi.isPresent()) { return ImmutableSet.of(); } ServerWithSecurityGroups instance = serverApi.get().get(instanceId); if (instance == null) { return ImmutableSet.of(); } Set<String> groupNames = instance.getSecurityGroupNames(); Set<? extends SecurityGroupInRegion> rawGroups = sgApi.get().list().filter(nameIn(groupNames)).transform(groupToGroupInRegion(region)).toSet(); return ImmutableSet.copyOf(transform(filter(rawGroups, notNull()), groupConverter)); }
public boolean apply(AtomicReference<ZoneAndName> securityGroupInZoneRef) { checkNotNull(securityGroupInZoneRef, "securityGroupRef"); final ZoneAndName securityGroupInZone = checkNotNull(securityGroupInZoneRef.get(), "securityGroupInZone"); Optional<? extends SecurityGroupApi> api = novaApi.getSecurityGroupExtensionForZone(securityGroupInZone.getZone()); checkArgument(api.isPresent(), "Security groups are required, but the extension is not available!"); logger.trace("looking for security group %s", securityGroupInZone.slashEncode()); try { SecurityGroup returnVal = Iterables.find(api.get().list(), new Predicate<SecurityGroup>() { @Override public boolean apply(SecurityGroup input) { return input.getName().equals(securityGroupInZone.getName()); } }); securityGroupInZoneRef.set(new SecurityGroupInZone(returnVal, securityGroupInZone.getZone())); return true; } catch (ResourceNotFoundException e) { return false; } catch (NoSuchElementException e) { return false; } } }
public boolean apply(AtomicReference<ZoneAndName> securityGroupInZoneRef) { checkNotNull(securityGroupInZoneRef, "securityGroupRef"); final ZoneAndName securityGroupInZone = checkNotNull(securityGroupInZoneRef.get(), "securityGroupInZone"); Optional<? extends SecurityGroupApi> api = novaApi.getSecurityGroupExtensionForZone(securityGroupInZone.getZone()); checkArgument(api.isPresent(), "Security groups are required, but the extension is not available!"); logger.trace("looking for security group %s", securityGroupInZone.slashEncode()); try { SecurityGroup returnVal = Iterables.find(api.get().list(), new Predicate<SecurityGroup>() { @Override public boolean apply(SecurityGroup input) { return input.getName().equals(securityGroupInZone.getName()); } }); securityGroupInZoneRef.set(new SecurityGroupInZone(returnVal, securityGroupInZone.getZone())); return true; } catch (ResourceNotFoundException e) { return false; } catch (NoSuchElementException e) { return false; } } }
public boolean apply(AtomicReference<ZoneAndName> securityGroupInZoneRef) { checkNotNull(securityGroupInZoneRef, "securityGroupRef"); final ZoneAndName securityGroupInZone = checkNotNull(securityGroupInZoneRef.get(), "securityGroupInZone"); Optional<? extends SecurityGroupApi> api = novaApi.getSecurityGroupExtensionForZone(securityGroupInZone.getZone()); checkArgument(api.isPresent(), "Security groups are required, but the extension is not available!"); logger.trace("looking for security group %s", securityGroupInZone.slashEncode()); try { SecurityGroup returnVal = Iterables.find(api.get().list(), new Predicate<SecurityGroup>() { @Override public boolean apply(SecurityGroup input) { return input.getName().equals(securityGroupInZone.getName()); } }); securityGroupInZoneRef.set(new SecurityGroupInZone(returnVal, securityGroupInZone.getZone())); return true; } catch (ResourceNotFoundException e) { return false; } catch (NoSuchElementException e) { return false; } } }
public void list() throws Exception { for (String zoneId : api.getConfiguredZones()) { SecurityGroupApi securityGroupApi = api.getSecurityGroupExtensionForZone(zoneId).get(); Set<? extends SecurityGroup> securityGroupsList = securityGroupApi.list().toSet(); assertNotNull(securityGroupsList); } }
public void list() throws Exception { for (String regionId : api.getConfiguredRegions()) { SecurityGroupApi securityGroupApi = api.getSecurityGroupApi(regionId).get(); Set<? extends SecurityGroup> securityGroupsList = securityGroupApi.list().toSet(); assertNotNull(securityGroupsList); } }
private void cleanupOrphanedSecurityGroupsInZone(Set<String> groups, String zoneId) { Optional<? extends SecurityGroupApi> securityGroupApi = novaApi.getSecurityGroupExtensionForZone(zoneId); if (securityGroupApi.isPresent()) { for (String group : groups) { for (SecurityGroup securityGroup : Iterables.filter(securityGroupApi.get().list(), SecurityGroupPredicates.nameMatches(namingConvention.create().containsGroup(group)))) { ZoneAndName zoneAndName = ZoneAndName.fromZoneAndName(zoneId, securityGroup.getName()); logger.debug(">> deleting securityGroup(%s)", zoneAndName); securityGroupApi.get().delete(securityGroup.getId()); // TODO: test this clear happens securityGroupMap.invalidate(zoneAndName); logger.debug("<< deleted securityGroup(%s)", zoneAndName); } } } }
private void cleanupOrphanedSecurityGroupsInZone(Set<String> groups, String zoneId) { Optional<? extends SecurityGroupApi> securityGroupApi = novaApi.getSecurityGroupExtensionForZone(zoneId); if (securityGroupApi.isPresent()) { for (String group : groups) { for (SecurityGroup securityGroup : Iterables.filter(securityGroupApi.get().list(), SecurityGroupPredicates.nameMatches(namingConvention.create().containsGroup(group)))) { ZoneAndName zoneAndName = ZoneAndName.fromZoneAndName(zoneId, securityGroup.getName()); logger.debug(">> deleting securityGroup(%s)", zoneAndName); securityGroupApi.get().delete(securityGroup.getId()); // TODO: test this clear happens securityGroupMap.invalidate(zoneAndName); logger.debug("<< deleted securityGroup(%s)", zoneAndName); } } } }
private void cleanupOrphanedSecurityGroupsInZone(Set<String> groups, String zoneId) { Optional<? extends SecurityGroupApi> securityGroupApi = novaApi.getSecurityGroupExtensionForZone(zoneId); if (securityGroupApi.isPresent()) { for (String group : groups) { for (SecurityGroup securityGroup : Iterables.filter(securityGroupApi.get().list(), SecurityGroupPredicates.nameMatches(namingConvention.create().containsGroup(group)))) { ZoneAndName zoneAndName = ZoneAndName.fromZoneAndName(zoneId, securityGroup.getName()); logger.debug(">> deleting securityGroup(%s)", zoneAndName); securityGroupApi.get().delete(securityGroup.getId()); // TODO: test this clear happens securityGroupMap.invalidate(zoneAndName); logger.debug("<< deleted securityGroup(%s)", zoneAndName); } } } }
public void testListSecurityGroupsWhenReponseIs404IsEmpty() throws Exception { HttpRequest listListSecurityGroups = HttpRequest.builder().method("GET").endpoint( URI.create("https://az-1.region-a.geo-1.compute.hpcloudsvc.com/v1.1/3456/os-security-groups")).headers( ImmutableMultimap.<String, String> builder().put("Accept", "application/json").put("X-Auth-Token", authToken).build()).build(); HttpResponse listListSecurityGroupsResponse = HttpResponse.builder().statusCode(404).build(); NovaApi apiWhenNoSecurityGroupsExist = requestsSendResponses(keystoneAuthWithUsernameAndPasswordAndTenantName, responseWithKeystoneAccess, extensionsOfNovaRequest, extensionsOfNovaResponse, listListSecurityGroups, listListSecurityGroupsResponse); assertTrue(apiWhenNoSecurityGroupsExist.getSecurityGroupExtensionForZone("az-1.region-a.geo-1").get() .list().isEmpty()); }
public void testListSecurityGroupsWhenResponseIs2xx() throws Exception { HttpRequest list = HttpRequest.builder().method("GET").endpoint( URI.create("https://az-1.region-a.geo-1.compute.hpcloudsvc.com/v1.1/3456/os-security-groups")).headers( ImmutableMultimap.<String, String> builder().put("Accept", "application/json").put("X-Auth-Token", authToken).build()).build(); HttpResponse listResponse = HttpResponse.builder().statusCode(200).payload( payloadFromResource("/securitygroup_list.json")).build(); NovaApi apiWhenSecurityGroupsExist = requestsSendResponses(keystoneAuthWithUsernameAndPasswordAndTenantName, responseWithKeystoneAccess, extensionsOfNovaRequest, extensionsOfNovaResponse, list, listResponse); assertEquals(apiWhenSecurityGroupsExist.getConfiguredZones(), ImmutableSet.of("az-1.region-a.geo-1", "az-2.region-a.geo-1", "az-3.region-a.geo-1")); assertEquals(apiWhenSecurityGroupsExist.getSecurityGroupExtensionForZone("az-1.region-a.geo-1").get() .list().toString(), new ParseSecurityGroupListTest().expected().toString()); }
public void testListSecurityGroupsWhenResponseIs2xx() throws Exception { HttpRequest list = HttpRequest.builder().method("GET").endpoint( URI.create("https://az-1.region-a.geo-1.compute.hpcloudsvc.com/v2/3456/os-security-groups")).headers( ImmutableMultimap.<String, String> builder().put("Accept", "application/json").put("X-Auth-Token", authToken).build()).build(); HttpResponse listResponse = HttpResponse.builder().statusCode(200).payload( payloadFromResource("/securitygroup_list.json")).build(); NovaApi apiWhenSecurityGroupsExist = requestsSendResponses(keystoneAuthWithUsernameAndPasswordAndTenantName, responseWithKeystoneAccess, extensionsOfNovaRequest, extensionsOfNovaResponse, list, listResponse); assertEquals(apiWhenSecurityGroupsExist.getConfiguredRegions(), ImmutableSet.of("az-1.region-a.geo-1", "az-2.region-a.geo-1", "az-3.region-a.geo-1")); assertEquals(apiWhenSecurityGroupsExist.getSecurityGroupApi("az-1.region-a.geo-1").get() .list().toString(), new ParseSecurityGroupListTest().expected().toString()); }