diff --git a/drivers/aws_shell/src/driver.py b/drivers/aws_shell/src/driver.py
index 986a7083..254b53a9 100644
--- a/drivers/aws_shell/src/driver.py
+++ b/drivers/aws_shell/src/driver.py
@@ -1,6 +1,6 @@
from cloudshell.shell.core.resource_driver_interface import ResourceDriverInterface
+
from cloudshell.cp.aws.aws_shell import AWSShell
-from cloudshell.cp.aws.models.aws_ec2_cloud_provider_resource_model import AWSEc2CloudProviderResourceModel
class AWSShellDriver(ResourceDriverInterface):
@@ -32,11 +32,8 @@ def PowerCycle(self, context, ports, delay):
def remote_refresh_ip(self, context, ports, cancellation_context):
pass
- def delete(self, context, ports):
- return self.aws_shell.delete_ami(context)
-
def destroy_vm_only(self, context, ports):
- return self.aws_shell.delete_ami(context, False)
+ return self.aws_shell.delete_ami(context)
def ApplyConnectivityChanges(self, context, request):
pass
diff --git a/drivers/aws_shell/src/drivermetadata.xml b/drivers/aws_shell/src/drivermetadata.xml
index cff7346b..da06a48b 100644
--- a/drivers/aws_shell/src/drivermetadata.xml
+++ b/drivers/aws_shell/src/drivermetadata.xml
@@ -10,9 +10,6 @@
-
-
-
diff --git a/package/cloudshell/cp/aws/aws_shell.py b/package/cloudshell/cp/aws/aws_shell.py
index 07c15ca6..3863f542 100644
--- a/package/cloudshell/cp/aws/aws_shell.py
+++ b/package/cloudshell/cp/aws/aws_shell.py
@@ -183,7 +183,7 @@ def power_off_ami(self, command_context):
cloudshell_session.SetResourceLiveStatus(resource.fullname, "Offline", "Powered Off")
return self._set_command_result(result)
- def delete_ami(self, command_context, delete_resource=True):
+ def delete_ami(self, command_context):
"""
Will delete the ami instance
:param bool delete_resource:
@@ -200,10 +200,6 @@ def delete_ami(self, command_context, delete_resource=True):
data_holder = self.model_parser.convert_app_resource_to_deployed_app(resource)
result = self.delete_ami_operation.delete_instance(ec2_session, data_holder.vmdetails.uid)
- # todo this is temporary for the demo
- if delete_resource:
- cloudshell_session.DeleteResource(resourceFullPath=resource.fullname)
-
return self._set_command_result(result)
def get_application_ports(self, command_context):
diff --git a/package/cloudshell/cp/aws/domain/ami_management/operations/delete_operation.py b/package/cloudshell/cp/aws/domain/ami_management/operations/delete_operation.py
index d9d4a335..2f3a8744 100644
--- a/package/cloudshell/cp/aws/domain/ami_management/operations/delete_operation.py
+++ b/package/cloudshell/cp/aws/domain/ami_management/operations/delete_operation.py
@@ -4,6 +4,7 @@ class DeleteAMIOperation(object):
def __init__(self, instance_service, ec2_storage_service, security_group_service):
"""
:param instance_service:
+ :type instance_service: cloudshell.cp.aws.domain.services.ec2.instance.InstanceService
:param EC2StorageService ec2_storage_service:
:param SecurityGroupService security_group_service:
"""
diff --git a/package/cloudshell/cp/aws/domain/conncetivity/operations/cleanup.py b/package/cloudshell/cp/aws/domain/conncetivity/operations/cleanup.py
index 14effbbf..443e7d32 100644
--- a/package/cloudshell/cp/aws/domain/conncetivity/operations/cleanup.py
+++ b/package/cloudshell/cp/aws/domain/conncetivity/operations/cleanup.py
@@ -18,8 +18,8 @@ def cleanup(self, ec2_session, s3_session, bucket_name, reservation_id):
if not vpc:
raise ValueError('No VPC was created for this reservation')
- self.key_pair_service.remove_key_pair_for_reservation(s3_session, bucket_name, reservation_id)
self.vpc_service.delete_all_instances(vpc)
+ self.key_pair_service.remove_key_pair_for_reservation(s3_session, bucket_name, reservation_id)
self.vpc_service.remove_all_security_groups(vpc)
self.vpc_service.remove_all_subnets(vpc)
self.vpc_service.remove_all_internet_gateways(vpc)
diff --git a/package/cloudshell/cp/aws/domain/services/ec2/instance.py b/package/cloudshell/cp/aws/domain/services/ec2/instance.py
index 41417930..83e0420a 100644
--- a/package/cloudshell/cp/aws/domain/services/ec2/instance.py
+++ b/package/cloudshell/cp/aws/domain/services/ec2/instance.py
@@ -6,7 +6,7 @@ def __init__(self, tags_creator_service, instance_waiter):
:param tags_creator_service: Tags Service
:type tags_creator_service: cloudshell.cp.aws.domain.services.tags.TagService
:param instance_waiter: Instance Waiter
- :type instance_waiter: cloudshell.cp.aws.domain.services.task_manager.instance_waiter.EC2InstanceWaiter
+ :type instance_waiter: cloudshell.cp.aws.domain.services.waiters.instance.InstanceWaiter
"""
self.instance_waiter = instance_waiter
self.tags_creator_service = tags_creator_service
@@ -50,7 +50,7 @@ def create_instance(self, ec2_session, name, reservation_id, ami_deployment_info
return instance
def terminate_instance(self, instance):
- return self.terminate_instances([instance])
+ return self.terminate_instances([instance])[0]
def terminate_instances(self, instances):
if len(instances) == 0:
diff --git a/package/cloudshell/cp/aws/domain/services/ec2/security_group.py b/package/cloudshell/cp/aws/domain/services/ec2/security_group.py
index eee29947..b92aed8d 100644
--- a/package/cloudshell/cp/aws/domain/services/ec2/security_group.py
+++ b/package/cloudshell/cp/aws/domain/services/ec2/security_group.py
@@ -6,16 +6,15 @@ class SecurityGroupService(object):
CLOUDSHELL_CUSTOM_SECURITY_GROUP = "Cloudshell Custom SG {0}"
CLOUDSHELL_SECURITY_GROUP_DESCRIPTION = "Cloudshell Security Group"
- @staticmethod
- def delete_security_group(security_group):
- try:
- security_group.delete()
- except Exception:
- raise
+ def delete_security_group(self, sg):
+ if sg.group_name != 'default':
+ sg.delete()
+ return True
def delete_all_security_groups_of_instance(self, instance):
- for security_group in instance.security_groups:
- self.delete_security_group(security_group)
+ if instance.security_groups:
+ for security_group in instance.security_groups:
+ self.delete_security_group(security_group)
def create_security_group(self, ec2_session, vpc_id, security_group_name):
"""
diff --git a/package/cloudshell/cp/aws/domain/services/ec2/vpc.py b/package/cloudshell/cp/aws/domain/services/ec2/vpc.py
index 90b5732d..617760af 100644
--- a/package/cloudshell/cp/aws/domain/services/ec2/vpc.py
+++ b/package/cloudshell/cp/aws/domain/services/ec2/vpc.py
@@ -15,8 +15,8 @@ def __init__(self, tag_service, subnet_service, instance_service, vpc_waiter, vp
:type vpc_waiter: cloudshell.cp.aws.domain.services.waiters.vpc.VPCWaiter
:param vpc_peering_waiter: Vpc Peering Connection Waiter
:type vpc_peering_waiter: cloudshell.cp.aws.domain.services.waiters.vpc_peering.VpcPeeringConnectionWaiter
- :param sg_service: Vpc Peering Connection Waiter
- :type sg_service: cloudshell.cp.aws.domain.services.waiters.vpc_peering.VpcPeeringConnectionWaiter
+ :param sg_service: Security Group Service
+ :type sg_service: cloudshell.cp.aws.domain.services.ec2.security_group.SecurityGroupService
"""
self.tag_service = tag_service
self.subnet_service = subnet_service
@@ -106,6 +106,8 @@ def get_all_internet_gateways(self, vpc):
def create_and_attach_internet_gateway(self, ec2_session, vpc, reservation_id):
internet_gateway = ec2_session.create_internet_gateway()
+ internet_gateway.reload()
+
tags = self.tag_service.get_default_tags("IGW {0}".format(reservation_id), reservation_id)
self.tag_service.set_ec2_resource_tags(
diff --git a/package/cloudshell/cp/aws/domain/services/waiters/vpc_peering.py b/package/cloudshell/cp/aws/domain/services/waiters/vpc_peering.py
index ef8e3d76..361ed669 100644
--- a/package/cloudshell/cp/aws/domain/services/waiters/vpc_peering.py
+++ b/package/cloudshell/cp/aws/domain/services/waiters/vpc_peering.py
@@ -65,8 +65,3 @@ def wait(self, vpc_peering_connection, state, throw_on_error=True, load=False):
if load:
vpc_peering_connection.reload()
return vpc_peering_connection
-
- def delete_security_group(self, sg):
- if sg.group_name != 'default':
- sg.delete()
- return True
diff --git a/package/cloudshell/cp/aws/models/__init__.py b/package/cloudshell/cp/aws/models/__init__.py
index e69de29b..b50dc4a9 100644
--- a/package/cloudshell/cp/aws/models/__init__.py
+++ b/package/cloudshell/cp/aws/models/__init__.py
@@ -0,0 +1,3 @@
+__author__ = 'quali'
+from pkgutil import extend_path
+__path__ = extend_path(__path__, __name__)
\ No newline at end of file
diff --git a/package/tests/test_aws_shell.py b/package/tests/test_aws_shell.py
index 798c486c..69f7d6be 100644
--- a/package/tests/test_aws_shell.py
+++ b/package/tests/test_aws_shell.py
@@ -111,7 +111,7 @@ def test_delete_ami(self):
self.aws_shell_api.model_parser.convert_app_resource_to_deployed_app = Mock(return_value=deployed_model)
self.aws_shell_api.delete_ami_operation.delete_instance = Mock(return_value=True)
- self.aws_shell_api.delete_ami(self.command_context, False)
+ self.aws_shell_api.delete_ami(self.command_context)
self.assertTrue(
self.aws_shell_api.delete_ami_operation.delete_instance.called_with(
@@ -125,7 +125,7 @@ def test_delete_ami_delete_resource(self):
self.aws_shell_api.model_parser.convert_app_resource_to_deployed_app = Mock(return_value=deployed_model)
self.aws_shell_api.delete_ami_operation.delete_instance = Mock(return_value=True)
- self.aws_shell_api.delete_ami(self.command_context, False)
+ self.aws_shell_api.delete_ami(self.command_context)
self.assertTrue(
self.aws_shell_api.delete_ami_operation.delete_instance.called_with(
diff --git a/package/tests/test_domain_services/test_instance_service.py b/package/tests/test_domain_services/test_instance_service.py
index 4e1c4e2a..8d21309f 100644
--- a/package/tests/test_domain_services/test_instance_service.py
+++ b/package/tests/test_domain_services/test_instance_service.py
@@ -50,6 +50,7 @@ def test_get_instance_by_id(self):
self.assertIsNotNone(res)
def test_terminate_instance(self):
+ self.instance_waiter.multi_wait = Mock(return_value=[self.instance])
res = self.instance_service.terminate_instance(self.instance)
self.assertTrue(self.instance.terminate.called)