Best Python code snippet using localstack_python
ec2_utils.py
Source:ec2_utils.py
...105 return 1106def getEBS_volId(devName):107 if not devName.startswith('/dev'): return None108 iid = getEC2_InstanceId()109 res = ec2client.describe_volumes(110 Filters=[111 {'Name': 'attachment.instance-id', 'Values': [iid]},112 {'Name': 'attachment.device', 'Values': [devName]},113 ],114 )115 if len(res['Volumes'])>0:116 return res['Volumes'][0]['VolumeId']117 return None118def getInstanceTags():119 iid = getEC2_InstanceId()120 res = ec2client.describe_tags(121 Filters=[122 {'Name':'resource-id',123 'Values':[iid]124 }]125 )126 savedTags = []127 if len(res['Tags']) > 1:128 for i in res['Tags']:129 if i['Key'] in ['Name', 'aws:ec2spot:fleet-request-id']:130 continue131 if i['Key'].startswith('aws:'):132 continue133 savedTags.append({'Key':i['Key'],'Value':i['Value']})134 return savedTags135 else:136 return []137def attachEBS(devName, vol):138 iid = getEC2_InstanceId()139 res = ec2client.describe_volumes(140 VolumeIds=[ vol ]141 )142 # Check ready Volume143 while res['Volumes'][0]['State'] != 'available':144 time.sleep(1)145 res = ec2client.describe_volumes(146 VolumeIds=[ vol ]147 )148 try:149 res = ec2client.attach_volume(150 InstanceId = iid,151 VolumeId = vol,152 Device = devName,153 )154 except botocore.exceptions.ClientError as e:155 logging.exception("Exception")156 print("[attach] botocore.exceptions.ClientError")157 print(e.__doc__)158 print(e.message)159 return160 except:161 logging.exception("Caught exception")162 print(e.__doc__)163 print(e.message)164 return165 time.sleep(1)166 res = ec2client.describe_volumes(167 VolumeIds=[ vol ]168 )169 # wait until attached170 d_ct = 0171 while len(res['Volumes'][0]['Attachments']) < 1 and d_ct < 18:172 time.sleep(10)173 try:174 res = ec2client.describe_volumes(175 VolumeIds=[ vol ]176 )177 except botocore.exceptions.ClientError as e:178 logging.exception("Exception")179 print("[attach] desc, botocore.exceptions.ClientError")180 print(e.__doc__)181 print(e.message)182 return183 except:184 logging.exception("Caught exception")185 print(e.__doc__)186 print(e.message)187 return188 d_ct += 1189 print("waiting EBS attachment %s: %d" % (vol,d_ct))190 m = 0191 m_ct = 0192 while m == 0 and m_ct<10:193 m = modifyAttr(iid, devName, vol)194 m_ct += 1195 if m_ct > 1:196 time.sleep(1)197 print("re-try modify attr")198 if res['Volumes'][0]['Attachments'][0]['State'] == 'attached':199 return 1200 return 0201def modifyAttr(iid, devName, vol):202 try:203 ec2client.modify_instance_attribute(204 InstanceId = iid,205 BlockDeviceMappings=[206 {207 'DeviceName': devName,208 'Ebs': {209 'VolumeId': vol,210 'DeleteOnTermination': True,211 }212 },213 ]214 )215 except botocore.exceptions.ClientError as e:216 logging.exception("Exception")217 print("botocore.exceptions.ClientError")218 print(e.__doc__)219 print(e.message)220 return 0221 except:222 logging.exception("Exception")223 print(e.__doc__)224 print(e.message)225 return 0226 return 1227def detachEBS(devName, vol):228 """229 return 1 for success 0 for failure230 """231 print ("Detaching {} {}".format(devName,vol))232 iid = getEC2_InstanceId()233 try:234 ec2client.detach_volume(235 Device = devName,236 Force = True,237 InstanceId=iid,238 VolumeId=vol239 )240 except botocore.exceptions.ClientError as e:241 # already detached?242 logging.exception("Exception")243 print("botocore.exceptions.ClientError")244 print(e.__doc__)245 print(e.message)246 return 0247 except:248 logging.exception("Exception")249 print(e.__doc__)250 print(e.message)251 return 0252 res = ec2client.describe_volumes(253 VolumeIds=[ vol ]254 )255 # Check ready Volume256 ct = 0257 while res['Volumes'][0]['State'] != 'available':258 time.sleep(2)259 print("check detach vol {} in state: {}".format(vol, res['Volumes'][0]['State']))260 res = ec2client.describe_volumes(261 VolumeIds=[ vol ]262 )263 ct += 1264 if ct > 10: break265 return 1266def deleteEBS(vol):267 print("Deleting " + vol)268 try:269 res = ec2client.describe_volumes(270 VolumeIds=[ vol ]271 )272 except botocore.exceptions.ClientError as e:273 logging.warn("Exception")274 print("botocore.exceptions.ClientError")275 print(e.__doc__)276 print(e.message)277 return278 except:279 logging.exception("Exception")280 print(e.__doc__)281 print(e.message)282 return283 # Check ready Volume284 ct = 0285 while res['Volumes'][0]['State'] != 'available':286 time.sleep(2)287 print("Waiting to delete when vol is ready")288 print("check delete vol {} in state: {}".format(vol, res['Volumes'][0]['State']))289 res = ec2client.describe_volumes(290 VolumeIds=[ vol ]291 )292 ct += 1293 if ct > 10: break294 try:295 ec2client.delete_volume(296 VolumeId = vol297 )298 except Exception as e:299 logging.warn("[deleteEBS] Caught exception")300 print(e.__doc__)301 print(e.message)...
test_ebs.py
Source:test_ebs.py
1from botocore.exceptions import ClientError2from mock import MagicMock, patch3from spacel.model import SpaceVolume4from spacel.volumes.ebs import EbsAttachment5from test.aws import MockedClientTest, INSTANCE_ID, AVAILABILITY_ZONE6from test.volumes import LABEL, DEVICE7VOLUME_ID = 'vol-111111'8SNAPSHOT_ID = 'snap-123456'9class TestEbsAttachment(MockedClientTest):10 def setUp(self):11 super(TestEbsAttachment, self).setUp()12 self.volume = SpaceVolume(LABEL, {13 'count': 314 })15 self.volume_item = {16 'label': {'S': LABEL},17 'index': {'N': 0}18 }19 self.ebs_attachment = EbsAttachment(self.clients, self.meta)20 def test_attach_existing(self):21 self.volume_item['volume_id'] = {'S': VOLUME_ID}22 self.ec2.describe_volumes.return_value = {'Volumes': [{23 'Attachments': [{24 'InstanceId': INSTANCE_ID,25 'Device': DEVICE26 }]27 }]}28 volume_item = self.ebs_attachment.attach_volume(self.volume,29 self.volume_item)30 self.assertEqual({'S': DEVICE}, volume_item['device'])31 self.ec2.create_snapshot.assert_not_called()32 self.ec2.create_volume.assert_not_called()33 self.ec2.attach_volume.assert_not_called()34 self.ec2.get_waiter.assert_not_called()35 def test_attach_existing_same_az(self):36 self.volume_item['volume_id'] = {'S': VOLUME_ID}37 self.ec2.describe_volumes.return_value = {'Volumes': [{38 'AvailabilityZone': AVAILABILITY_ZONE,39 'Attachments': [{40 'InstanceId': 'i-654321',41 'Device': DEVICE42 }]43 }]}44 self.ebs_attachment._next_volume = MagicMock(return_value=DEVICE)45 self.ebs_attachment._attach_volume = MagicMock()46 self.ebs_attachment.attach_volume(self.volume, self.volume_item)47 self.ec2.create_snapshot.assert_not_called()48 self.ec2.create_volume.assert_not_called()49 self.ec2.attach_volume.assert_not_called()50 self.ec2.get_waiter.assert_called_with('volume_available')51 def test_attach_existing_different_az(self):52 self.volume_item['volume_id'] = {'S': VOLUME_ID}53 self.ec2.describe_volumes.return_value = {'Volumes': [{54 'AvailabilityZone': 'us-west-2a',55 'Attachments': [{56 'InstanceId': 'i-654321',57 'Device': '/dev/xvdb'58 }]59 }]}60 self.ec2.create_snapshot.return_value = {'SnapshotId': SNAPSHOT_ID}61 self.ebs_attachment._next_volume = MagicMock(return_value=DEVICE)62 self.ebs_attachment._attach_volume = MagicMock()63 self.ebs_attachment.attach_volume(self.volume, self.volume_item)64 self.ec2.create_snapshot.assert_called_with(VolumeId=VOLUME_ID)65 self.ec2.create_volume.assert_called_with(66 AvailabilityZone=AVAILABILITY_ZONE,67 Size=4,68 VolumeType='gp2',69 SnapshotId=SNAPSHOT_ID70 )71 self.ec2.attach_volume.assert_not_called()72 self.ec2.delete_volume.assert_called_with(VolumeId=VOLUME_ID)73 def test_attach_create_volume(self):74 self.volume.iops = 40075 self.volume.encrypted = True76 self.volume_item['snapshot_id'] = {'S': SNAPSHOT_ID}77 self.ebs_attachment._next_volume = MagicMock(return_value=DEVICE)78 self.ebs_attachment._attach_volume = MagicMock()79 self.ebs_attachment.attach_volume(self.volume, self.volume_item)80 self.ec2.describe_volumes.assert_not_called()81 self.ec2.create_snapshot.assert_not_called()82 self.ec2.create_volume.assert_called_with(83 Size=4, VolumeType='gp2', AvailabilityZone=AVAILABILITY_ZONE,84 Iops=400, Encrypted=True, SnapshotId=SNAPSHOT_ID)85 def test_describe_volume_error(self):86 client_error = ClientError({'Error': {'Code': 0}}, 'DescribeVolumes')87 self.ec2.describe_volumes.side_effect = client_error88 self.assertRaises(ClientError, self.ebs_attachment._describe_volume,89 VOLUME_ID)90 def test_describe_volume_not_found(self):91 client_error = ClientError({'Error': {92 'Code': 'InvalidVolume.NotFound'}}, 'DescribeVolumes')93 self.ec2.describe_volumes.side_effect = client_error94 volume = self.ebs_attachment._describe_volume(VOLUME_ID)95 self.assertIsNone(volume)96 @patch('spacel.volumes.ebs.check_output')97 def test_next_volume(self, mock_lsblk):98 mock_lsblk.return_value = '''NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT99/dev/xvda 8:0 0 8.0G 0 disk100/dev/xvdb 8:1 0 16.0G 0 disk101'''102 next_device = self.ebs_attachment._next_volume()103 self.assertEqual('/dev/xvdc', next_device)104 @patch('spacel.volumes.ebs.check_output')105 def test_next_volume_none_available(self, mock_lsblk):106 devices = ['/dev/xvd%s' % chr(ord('a') + dev) for dev in range(26)]107 mock_lsblk.return_value = '\n'.join(devices)108 next_device = self.ebs_attachment._next_volume()109 self.assertIsNone(next_device)110 @patch('spacel.volumes.ebs.check_output')111 def test_attach_volume(self, _):112 volume_item = {'volume_id': {'S': VOLUME_ID}}...
attaching_ebs_volume.py
Source:attaching_ebs_volume.py
...11 except Exception as e:12 print(e)131415def describe_volumes():16 try:17 print ("Describing EC2 instance")18 resource_ec2 = boto3.client("ec2")19 print(resource_ec2.describe_volumes()["Volumes"][1]["VolumeId"])20 return str(resource_ec2.describe_volumes()["Volumes"][1]["VolumeId"])21 except Exception as e:22 print(e)232425x=describe_ec2_instance()26print(x)27y = describe_volumes()28print(y)293031def attach_ebs_volume_to_instance():32 try:33 print ("attaching ebs volume")34 ec2_client=boto3.client("ec2")35 ec2_client.attach_volume(36 Device = "/dev/sdf",37 InstanceId = x,38 VolumeId = y39 )40 except Exception as e:41 print(e)
...
Learn to execute automation testing from scratch with LambdaTest Learning Hub. Right from setting up the prerequisites to run your first automation test, to following best practices and diving deeper into advanced test scenarios. LambdaTest Learning Hubs compile a list of step-by-step guides to help you be proficient with different test automation frameworks i.e. Selenium, Cypress, TestNG etc.
You could also refer to video tutorials over LambdaTest YouTube channel to get step by step demonstration from industry experts.
Get 100 minutes of automation test minutes FREE!!