Best Python code snippet using localstack_python
deleteThings.py
Source:deleteThings.py  
1import boto32import botocore3import json4from boto3.dynamodb.conditions import Key5GATEWAY_TYPE = "gateway"6SENSOR_TYPE = "sentimate"7isGatewayPolicy = False8policyName = "gateway-policy"9iot = boto3.client('iot')10response = {}11def deleteDevice(payload):12    global response13    outputObj = {}14    for data in payload:15        if(data["deviceType"] == GATEWAY_TYPE):16            print("Device type is: {}".format(GATEWAY_TYPE))17            #macAddress = data["macAddress"]18            #groupName = "group-" + GATEWAY_TYPE + "-" + macAddress19            groupName = data["gatewayId"]20            thingName = data["gatewayId"]21            print("Listing associated principals with thing: {}".format(thingName))22            try:23                r = iot.list_thing_principals(thingName=thingName)24            except botocore.exceptions.ClientError as error:25                print("Error listing principals with the thing: {}".format(thingName))26                print(error.response)27                print(error.response['Error']['Code'])28                response["message"] = "Error Occcured while listing thing principals"29                response["errorType"] = error.response['Error']['Code']30                response["errorCode"] = 50031                return response32            certificateArn = r['principals'][0]33            print("Detaching policy from the certificate: {}".format(certificateArn))34            try:35                iot.detach_policy(policyName=policyName, target=certificateArn)36                print("Successfully detached policy!")37            except botocore.exceptions.ClientError as error:38                print("Error detaching the policy")39                print(error.response['Error']['Code'])40                response["message"] = "Error Occcured detaching policy"41                response["errorType"] = error.response['Error']['Code']42                response["errorCode"] = 50043                return response44            print("Detaching the certificate from the thing: {}".format(thingName))45            try:46                iot.detach_thing_principal(thingName=thingName, principal=certificateArn)47                print("Successfully detached certificate!")48            except botocore.exceptions.ClientError as error:49                print("Error detaching the certificate from the thing: {}".format(thingName))50                print(error.response['Error']['Code'])51                response["message"] = "Error Occcured detaching the certificate from the thing"52                response["errorType"] = error.response['Error']['Code']53                response["errorCode"] = 50054                return response55            certificateId=certificateArn.split('/')[1]56            print("Updating the certificate: {}".format(certificateArn))  57            try:58                iot.update_certificate(certificateId=certificateId, newStatus='INACTIVE')59                print("Successfully updated certificate to inactive!")60            except botocore.exceptions.ClientError as error:61                print("Error deleting the certificate: {}".format(certificateArn))62                print(error.response['Error']['Code'])63                response["message"] = "Error Occcured updating the certificate"64                response["errorType"] = error.response['Error']['Code']65                response["errorCode"] = 50066                return response67            print("Deleting the certificate: {}".format(certificateArn))68            69            try:70                iot.delete_certificate(certificateId=certificateId, forceDelete=True)71                print("Successfully deleted certificate!")72            except botocore.exceptions.ClientError as error:73                print("Error deleting the certificate: {}".format(certificateArn))74                print(error.response['Error']['Code'])75                response["message"] = "Error Occcured deleting the certificate"76                response["errorType"] = error.response['Error']['Code']77                response["errorCode"] = 50078                return response79            print("Deleting thing: {}".format(thingName))80            try:81                r = iot.delete_thing(thingName=thingName)82                print("Successfully deleted the thing...")83            except botocore.exceptions.ClientError as error:84                print("Error deleting the thing: {}".format(thingName))85                print(error.response['Error']['Code'])86                response["message"] = "Error Occcured deleting the thing"87                response["errorType"] = error.response['Error']['Code']88                response["errorCode"] = 50089                return response90            print("Deleting the group: {}".format(groupName))91            try:92                r = iot.delete_thing_group(thingGroupName=groupName)93                print("Successfully deleted the thing group: {}".format(groupName))94                response["message"] = "Successfully deleted!"95                response["errorCode"]  = 20096            except botocore.exceptions.ClientError as error:97                print("Error deleting the thing group: {}".format(groupName))98                print(error.response['Error']['Code'])99                response["message"] = "Error Occcured deleting the group"100                response["errorType"] = error.response['Error']['Code']101                response["errorCode"] = 500102                return response103            104            gateway_id = groupName105            gateway_response=checkGateway(gateway_id)106            if 'Item' in gateway_response:107                delete_gateway_response=deleteGateway(gateway_id)108                if delete_gateway_response['ResponseMetadata']['HTTPStatusCode']==200:109                    outputObj['statusCode']=200110                    outputObj['message']="Gateway deleted successfully"111                    response["db"] = outputObj   112                else:113                    outputObj['statusCode']=500114                    outputObj['message']="Internal server error"115                    response["db"] = outputObj116            else:117                outputObj['statusCode']=200118                outputObj['message']="Gateway not found in database"119                response["db"] = outputObj120            121        elif(data["deviceType"] == SENSOR_TYPE):122            print("Device type is: {}".format(SENSOR_TYPE))123            #macAddress = data["macAddress"]124            groupName = data["gatewayId"]125            #thingName = SENSOR_TYPE + "-" + macAddress126            thingName = data["sensorId"]127            print("Deleting thing: {}".format(thingName))128            try:129                r = iot.delete_thing(thingName=thingName)130                print("Successfully deleted the thing...")131                response["message"] = "Successfully deleted!"132                response["errorCode"] = 200133            except botocore.exceptions.ClientError as error:134                print("Error deleting the thing: {}".format(thingName))135                print(error.response['Error']['Code'])136                response["message"] = "Error Occcured deleting the thing {}".format(thingName)137                response["errorType"] = error.response['Error']['Code']138                response["errorCode"] = 500139                return response140            141            142            gatewayId=groupName143            sensorId=data["sensorId"]144            gateway_response=checkGateway(gatewayId)145            if 'Item' in gateway_response:146                print("Gateway Response: {}".format(gateway_response))147                gateway=gateway_response['Item']148                print("gateway: {}".format(gateway))149                sensors=gateway['sensors']150                print("Sensors: {}".format(sensors))151                newSensors=[]152                for i in sensors:153                    print("in for loop: ")154                    print(i)155                    if i['sensorId']==sensorId:156                        print("found match")157                    else:158                        newSensors.append(i)159                dynamodb_table=getClient()160                table = dynamodb_table.Table('devices')       161                response1 = table.update_item(162                        Key={163                            'gatewayId': gatewayId164                        },165                        UpdateExpression="set #s = :r", 166                        ExpressionAttributeNames={167                        '#s': 'sensors'168                        },169                        ExpressionAttributeValues={170                            ':r': newSensors,171                        },172                        ReturnValues="UPDATED_NEW"173                        )174                print(response1)175                if 'Attributes' in response1:176                    response['errorCode'] = 200177                    response['message'] = 'Successfully deleted!'178                    outputObj['statusCode']=200179                    outputObj['message']="Sensors deleted successfully in dynamodb"180                    response["db"] = outputObj181        182    return response183    184def checkGateway(gatewayId):185    dynamodb_table=getClient()186    table = dynamodb_table.Table('devices')187    response = table.get_item(188        Key={189        'gatewayId':gatewayId190        }191        )192    return response193    194def deleteGateway(gatewayId):195    dynamodb_table=getClient()196    table = dynamodb_table.Table('devices')197    response = table.delete_item(198        Key={199            'gatewayId':gatewayId,200            }201        )202    return response203    204def getClient():205    dynamodb = boto3.client('dynamodb' ,region_name='us-east-2')206    dynamodb_table = boto3.resource('dynamodb')207    return dynamodb_table208    209def lambda_handler(event, context):210    # TODO implement211    print("input from mobile-"+ event['body'])212    print("input from type mobile-" )213    print(type(event['body']))214    body = json.loads(event['body'])215    print(type(body))216    217    ret = deleteDevice(body)218    print("received ret from deleteDevice:")219    print(ret)220    print(ret['errorCode'])221    if (ret['errorCode'] != 200) or (ret['db']['statusCode'] != 200):222        return {223            'statusCode': 500,224            'body': json.dumps(ret)225        }226    else:227        return {228            'statusCode': 200,229            'body': json.dumps(ret)...GatewayHandler.py
Source:GatewayHandler.py  
...143        )144        if response['ResponseMetadata']['HTTPStatusCode'] != 201:145            raise RuntimeError146        return response147    def delete_gateway_response(self, response_type):148        try:149            response = self.client.delete_gateway_response(150                restApiId=self.aws['api_id'],151                responseType=response_type152            )153            if not 200 < response['ResponseMetadata']['HTTPStatusCode'] < 299:154                raise RuntimeError155            return response156        except self.client.exceptions.NotFoundException:157            return None158    def has_method(self, resource_id, method):159        try:160            response = self.client.get_method(161                restApiId=self.aws['api_id'],162                resourceId=resource_id,163                httpMethod=method...Wrapper.py
Source:Wrapper.py  
...67                'gatewayresponse.header.Access-Control-Allow-Headers': '\'Content-Type,X-Amz-Date,Authorization,X-Api-Key,X-Amz-Security-Token\'',68                'gatewayresponse.header.Access-Control-Allow-Methods': '\'HEAD,GET,POST,PUT,PATCH,DELETE,ANY,OPTIONS\'',69                'gatewayresponse.header.Access-Control-Allow-Origin': '\'*\''70            }71            self.gateway_handler.delete_gateway_response('DEFAULT_4XX')72            self.gateway_handler.delete_gateway_response('DEFAULT_5XX')73            self.gateway_handler.create_gateway_response('DEFAULT_4XX', gateway_response_params)74            self.gateway_handler.create_gateway_response('DEFAULT_5XX', gateway_response_params)75    def __create_response(self, resource_id, method, response_code, status_code, response_parameters):76        error_regex = '^\\{{ "gatewayResponse": true, "status": "error", "type": "{0}", "userMessage": " " }}$'77        regex = error_regex.format(response_code).replace(' ', '(.|\\s)*')78        self.gateway_handler.create_method_response(resource_id, method, status_code, response_parameters)79        self.gateway_handler.create_integration_response(resource_id, method, status_code, response_parameters, regex, get_error_response_template())80    def create_resource(self, path):81        if self.get_resource_id(path):82            return83        # get tree of resources84        parts = path.split('/')[1:]85        parent_resource_id = self.get_resource_id('/')86        for i in range(len(parts) + 1):...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!!
