You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
45 lines
1.4 KiB
Python
45 lines
1.4 KiB
Python
4 years ago
|
#!/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
|