diff options
2 files changed, 10 insertions, 27 deletions
diff --git a/adapters/mso-adapter-utils/src/main/java/org/onap/so/openstack/utils/MsoHeatUtils.java b/adapters/mso-adapter-utils/src/main/java/org/onap/so/openstack/utils/MsoHeatUtils.java index 7174bc0e31..28d4f3f9b4 100644 --- a/adapters/mso-adapter-utils/src/main/java/org/onap/so/openstack/utils/MsoHeatUtils.java +++ b/adapters/mso-adapter-utils/src/main/java/org/onap/so/openstack/utils/MsoHeatUtils.java @@ -31,8 +31,8 @@ import java.util.List; import java.util.Map; import java.util.Map.Entry; import java.util.Set; +import java.util.regex.Matcher; import java.util.regex.Pattern; -import java.util.stream.Collectors; import org.onap.logging.ref.slf4j.ONAPLogConstants; import org.onap.so.adapters.vdu.CloudInfo; import org.onap.so.adapters.vdu.PluginAction; @@ -79,7 +79,6 @@ import com.woorea.openstack.base.client.OpenStackResponseException; import com.woorea.openstack.heat.Heat; import com.woorea.openstack.heat.model.CreateStackParam; import com.woorea.openstack.heat.model.Events; -import com.woorea.openstack.heat.model.Resource; import com.woorea.openstack.heat.model.Resources; import com.woorea.openstack.heat.model.Stack; import com.woorea.openstack.heat.model.Stack.Output; @@ -405,17 +404,15 @@ public class MsoHeatUtils extends MsoCommonUtils implements VduPlugin { protected Stack handleKeyPairConflict(String cloudSiteId, String tenantId, CreateStackParam stackCreate, int timeoutMinutes, boolean backout, Stack stack) throws MsoException { logger.info("Keypair conflict found on stack, attempting to clean up"); - - Resources resources = queryStackResources(cloudSiteId, tenantId, stackCreate.getStackName(), 2); - List<Resource> keyPairs = resources.getList().stream() - .filter(p -> "OS::Nova::KeyPair".equalsIgnoreCase(p.getType())).collect(Collectors.toList()); - keyPairs.stream().forEach(keyPair -> { - try { - novaClient.deleteKeyPair(cloudSiteId, tenantId, keyPair.getLogicalResourceId()); - } catch (MsoCloudSiteNotFound | NovaClientException e) { - logger.warn("Could not delete keypair", e); + try { + Matcher m = Pattern.compile("'([^']+?)'").matcher(stack.getStackStatusReason()); + if (m.find()) { + novaClient.deleteKeyPair(cloudSiteId, tenantId, m.group(1)); } - }); + } catch (NovaClientException e) { + logger.warn("Could not delete keypair", e); + } + handleUnknownCreateStackFailure(stack, timeoutMinutes, cloudSiteId, tenantId); Stack newStack = createStack(stackCreate, cloudSiteId, tenantId); newStack.setStackName(stackCreate.getStackName()); diff --git a/adapters/mso-adapter-utils/src/test/java/org/onap/so/openstack/utils/MsoHeatUtilsTest.java b/adapters/mso-adapter-utils/src/test/java/org/onap/so/openstack/utils/MsoHeatUtilsTest.java index de55e85ad6..687b7d8d2f 100644 --- a/adapters/mso-adapter-utils/src/test/java/org/onap/so/openstack/utils/MsoHeatUtilsTest.java +++ b/adapters/mso-adapter-utils/src/test/java/org/onap/so/openstack/utils/MsoHeatUtilsTest.java @@ -33,9 +33,7 @@ import static org.mockito.Mockito.doReturn; import static org.mockito.Mockito.doThrow; import static org.mockito.Mockito.times; import java.io.IOException; -import java.util.ArrayList; import java.util.HashMap; -import java.util.List; import java.util.Map; import org.junit.Before; import org.junit.Rule; @@ -60,7 +58,6 @@ import com.woorea.openstack.heat.StackResource; import com.woorea.openstack.heat.StackResource.CreateStack; import com.woorea.openstack.heat.StackResource.DeleteStack; import com.woorea.openstack.heat.model.CreateStackParam; -import com.woorea.openstack.heat.model.Resource; import com.woorea.openstack.heat.model.Resources; import com.woorea.openstack.heat.model.Stack; @@ -320,19 +317,9 @@ public class MsoHeatUtilsTest extends MsoHeatUtils { createdStack.setStackStatus("CREATE_COMPLETE"); createdStack.setStackStatusReason("Stack Created"); - - - List<Resource> resources = new ArrayList<>(); - Resource resource = new Resource(); - resource.setName("KeypairName"); - resource.setLogicalResourceId("KeypairName"); - resource.setType("OS::Nova::KeyPair"); - resources.add(resource); - CreateStackParam createStackParam = new CreateStackParam(); createStackParam.setStackName("stackName"); - doReturn(resources).when(mockResources).getList(); doReturn(mockResources).when(heatUtils).queryStackResources(cloudSiteId, tenantId, "stackName", 2); doNothing().when(novaClient).deleteKeyPair(cloudSiteId, tenantId, "KeypairName"); doReturn(null).when(heatUtils).handleUnknownCreateStackFailure(stack, 120, cloudSiteId, tenantId); @@ -341,8 +328,7 @@ public class MsoHeatUtilsTest extends MsoHeatUtils { createStackParam, false); heatUtils.handleKeyPairConflict(cloudSiteId, tenantId, createStackParam, 120, true, stack); - Mockito.verify(heatUtils, times(1)).queryStackResources(cloudSiteId, tenantId, "stackName", 2); - Mockito.verify(novaClient, times(1)).deleteKeyPair(cloudSiteId, tenantId, "KeypairName"); + Mockito.verify(novaClient, times(1)).deleteKeyPair(cloudSiteId, tenantId, "hst3bbfnm0011vm001"); Mockito.verify(heatUtils, times(1)).handleUnknownCreateStackFailure(stack, 120, cloudSiteId, tenantId); Mockito.verify(heatUtils, times(1)).createStack(createStackParam, cloudSiteId, tenantId); Mockito.verify(heatUtils, times(1)).processCreateStack(cloudSiteId, tenantId, 120, true, createdStack, |