Added generate_thing_group_tree function
This commit is contained in:
parent
e114eb9383
commit
40d1c8c9b9
@ -9,6 +9,37 @@ from botocore.exceptions import ClientError
|
||||
from nose.tools import assert_raises
|
||||
|
||||
|
||||
def generate_thing_group_tree(iot_client, tree_dict, _parent=None):
|
||||
"""
|
||||
Generates a thing group tree given the input tree structure.
|
||||
:param iot_client: the iot client for boto3
|
||||
:param tree_dict: dictionary with the key being the group_name, and the value being a sub tree.
|
||||
tree_dict = {
|
||||
"group_name_1a":{
|
||||
"group_name_2a":{
|
||||
"group_name_3a":{} or None
|
||||
},
|
||||
},
|
||||
"group_name_1b":{}
|
||||
}
|
||||
:return: a dictionary of created groups, keyed by group name
|
||||
"""
|
||||
if tree_dict is None:
|
||||
tree_dict = {}
|
||||
created_dict = {}
|
||||
for group_name in tree_dict.keys():
|
||||
params = {"thingGroupName": group_name}
|
||||
if _parent:
|
||||
params["parentGroupName"] = _parent
|
||||
created_group = iot_client.create_thing_group(**params)
|
||||
created_dict[group_name] = created_group
|
||||
subtree_dict = generate_thing_group_tree(
|
||||
iot_client=iot_client, tree_dict=tree_dict[group_name], _parent=group_name
|
||||
)
|
||||
created_dict = {**created_dict, **subtree_dict}
|
||||
return created_dict
|
||||
|
||||
|
||||
@mock_iot
|
||||
def test_attach_policy():
|
||||
client = boto3.client("iot", region_name="ap-northeast-1")
|
||||
@ -767,57 +798,14 @@ def test_list_thing_groups():
|
||||
group_name_3b = "my-group-name-3b"
|
||||
group_name_3c = "my-group-name-3c"
|
||||
group_name_3d = "my-group-name-3d"
|
||||
|
||||
# --1a
|
||||
# |--2a
|
||||
# | |--3a
|
||||
# | |--3b
|
||||
# |
|
||||
# |--2b
|
||||
# |--3c
|
||||
# |--3d
|
||||
# --1b
|
||||
|
||||
# create thing groups tree
|
||||
# 1
|
||||
thing_group1a = client.create_thing_group(thingGroupName=group_name_1a)
|
||||
thing_group1a.should.have.key("thingGroupName").which.should.equal(group_name_1a)
|
||||
thing_group1a.should.have.key("thingGroupArn")
|
||||
thing_group1b = client.create_thing_group(thingGroupName=group_name_1b)
|
||||
thing_group1b.should.have.key("thingGroupName").which.should.equal(group_name_1b)
|
||||
thing_group1b.should.have.key("thingGroupArn")
|
||||
# 2
|
||||
thing_group2a = client.create_thing_group(
|
||||
thingGroupName=group_name_2a, parentGroupName=group_name_1a
|
||||
)
|
||||
thing_group2a.should.have.key("thingGroupName").which.should.equal(group_name_2a)
|
||||
thing_group2a.should.have.key("thingGroupArn")
|
||||
thing_group2b = client.create_thing_group(
|
||||
thingGroupName=group_name_2b, parentGroupName=group_name_1a
|
||||
)
|
||||
thing_group2b.should.have.key("thingGroupName").which.should.equal(group_name_2b)
|
||||
thing_group2b.should.have.key("thingGroupArn")
|
||||
# 3
|
||||
thing_group3a = client.create_thing_group(
|
||||
thingGroupName=group_name_3a, parentGroupName=group_name_2a
|
||||
)
|
||||
thing_group3a.should.have.key("thingGroupName").which.should.equal(group_name_3a)
|
||||
thing_group3a.should.have.key("thingGroupArn")
|
||||
thing_group3b = client.create_thing_group(
|
||||
thingGroupName=group_name_3b, parentGroupName=group_name_2a
|
||||
)
|
||||
thing_group3b.should.have.key("thingGroupName").which.should.equal(group_name_3b)
|
||||
thing_group3b.should.have.key("thingGroupArn")
|
||||
thing_group3c = client.create_thing_group(
|
||||
thingGroupName=group_name_3c, parentGroupName=group_name_2b
|
||||
)
|
||||
thing_group3c.should.have.key("thingGroupName").which.should.equal(group_name_3c)
|
||||
thing_group3c.should.have.key("thingGroupArn")
|
||||
thing_group3d = client.create_thing_group(
|
||||
thingGroupName=group_name_3d, parentGroupName=group_name_2b
|
||||
)
|
||||
thing_group3d.should.have.key("thingGroupName").which.should.equal(group_name_3d)
|
||||
thing_group3d.should.have.key("thingGroupArn")
|
||||
tree_dict = {
|
||||
group_name_1a: {
|
||||
group_name_2a: {group_name_3a: {} or None, group_name_3b: {} or None},
|
||||
group_name_2b: {group_name_3c: {} or None, group_name_3d: {} or None},
|
||||
},
|
||||
group_name_1b: {},
|
||||
}
|
||||
group_catalog = generate_thing_group_tree(client, tree_dict)
|
||||
|
||||
# begin tests
|
||||
# should list all groups
|
||||
|
Loading…
Reference in New Issue
Block a user