#!/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 |