@Override public Set<? extends NodeMetadata> destroyNodesMatching(Predicate<NodeMetadata> filter) { // GCE does not return TERMINATED nodes, so in practice no node will never reach the TERMINATED // state, and the deleted nodes will never be returned. // In order to be able to clean up the resources associated to the deleted nodes, we have to retrieve // the details of the nodes before deleting them. Set<? extends NodeMetadata> nodes = newHashSet(filter(listNodesDetailsMatching(all()), filter)); super.destroyNodesMatching(filter); // This returns an empty list (a list of null elements) in GCE, as the api does not return deleted nodes cleanUpIncidentalResourcesOfDeadNodes(nodes); return nodes; }
@Override public Set<? extends NodeMetadata> destroyNodesMatching(Predicate<? super NodeMetadata> filter) { // GCE does not return TERMINATED nodes, so in practice no node will never reach the TERMINATED // state, and the deleted nodes will never be returned. // In order to be able to clean up the resources associated to the deleted nodes, we have to retrieve // the details of the nodes before deleting them. Set<? extends NodeMetadata> nodes = newHashSet(filter(listNodesDetailsMatching(all()), filter)); super.destroyNodesMatching(filter); // This returns an empty list (a list of null elements) in GCE, as the api does not return deleted nodes cleanUpIncidentalResourcesOfDeadNodes(nodes); return nodes; }
/** * like {@link BaseComputeService#destroyNodesMatching} except that this will clean implicit * keypairs and security groups. */ @Override public Set<? extends NodeMetadata> destroyNodesMatching(Predicate<NodeMetadata> filter) { Set<? extends NodeMetadata> deadOnes = super.destroyNodesMatching(filter); Map<String, String> regionTags = Maps.newHashMap(); for (NodeMetadata nodeMetadata : deadOnes) { if (nodeMetadata.getTag() != null) regionTags.put(parseHandle(nodeMetadata.getId())[0], nodeMetadata.getTag()); } for (Entry<String, String> regionTag : regionTags.entrySet()) { deleteKeyPair(regionTag.getKey(), regionTag.getValue()); deleteSecurityGroup(regionTag.getKey(), regionTag.getValue()); deletePlacementGroup(regionTag.getKey(), regionTag.getValue()); } return deadOnes; }