summaryrefslogtreecommitdiff
path: root/FreeRTOS-Labs/Demo/FreeRTOS_IoT_Libraries/tools/aws_config_quick_start/thing.py
diff options
context:
space:
mode:
Diffstat (limited to 'FreeRTOS-Labs/Demo/FreeRTOS_IoT_Libraries/tools/aws_config_quick_start/thing.py')
-rw-r--r--FreeRTOS-Labs/Demo/FreeRTOS_IoT_Libraries/tools/aws_config_quick_start/thing.py44
1 files changed, 44 insertions, 0 deletions
diff --git a/FreeRTOS-Labs/Demo/FreeRTOS_IoT_Libraries/tools/aws_config_quick_start/thing.py b/FreeRTOS-Labs/Demo/FreeRTOS_IoT_Libraries/tools/aws_config_quick_start/thing.py
new file mode 100644
index 000000000..5e63805ab
--- /dev/null
+++ b/FreeRTOS-Labs/Demo/FreeRTOS_IoT_Libraries/tools/aws_config_quick_start/thing.py
@@ -0,0 +1,44 @@
+#!/usr/bin/env python
+
+import boto3
+import json
+
+
+class Thing():
+ def __init__(self, name):
+ self.client = boto3.client('iot')
+ self.name = name
+ self.arn = ''
+
+ def create(self):
+ assert not self.exists(), "Thing already exists"
+ result = self.client.create_thing(thingName=self.name)
+ self.arn = result['thingArn']
+
+ def delete(self):
+ assert self.exists(), "Thing does not exist"
+ principals = self.list_principals()
+ for principal in principals:
+ self.detach_principal(principal)
+ self.client.delete_thing(thingName=self.name)
+
+ def exists(self):
+ list_of_things = self.client.list_things()['things']
+ for thing in list_of_things:
+ if thing['thingName'] == self.name:
+ return True
+ return False
+
+ def attach_principal(self, arn):
+ assert self.exists(), "Thing does not exist"
+ self.client.attach_thing_principal(thingName=self.name, principal=arn)
+
+ def detach_principal(self, arn):
+ assert self.exists(), "Thing does not exist"
+ self.client.detach_thing_principal(thingName=self.name, principal=arn)
+
+ def list_principals(self):
+ assert self.exists(), "Thing does not exist"
+ principals = self.client.list_thing_principals(thingName=self.name)
+ principals = principals['principals']
+ return principals