30
30
class TestPopulateTags(MAASServerTestCase):
32
32
def test_populate_tags_task_routed_to_nodegroup_worker(self):
33
nodegroup = factory.make_node_group()
34
tag = factory.make_tag()
33
nodegroup = factory.make_NodeGroup()
34
tag = factory.make_Tag()
35
35
task = self.patch(populate_tags_module, 'update_node_tags')
37
37
args, kwargs = task.apply_async.call_args
38
38
self.assertEqual(nodegroup.work_queue, kwargs['queue'])
40
40
def test_populate_tags_task_routed_to_all_nodegroup_workers(self):
41
nodegroups = [factory.make_node_group() for i in range(5)]
42
tag = factory.make_tag()
41
nodegroups = [factory.make_NodeGroup() for i in range(5)]
42
tag = factory.make_Tag()
43
43
refresh = self.patch(populate_tags_module, 'refresh_worker')
44
44
task = self.patch(populate_tags_module, 'update_node_tags')
62
62
class TestPopulateTagsForSingleNode(MAASServerTestCase):
64
64
def test_updates_node_with_all_applicable_tags(self):
65
node = factory.make_node()
66
factory.make_node_commission_result(
65
node = factory.make_Node()
66
factory.make_NodeResult_for_commissioning(
67
67
node, commissioningscript.LSHW_OUTPUT_NAME, 0, b"<foo/>")
68
factory.make_node_commission_result(
68
factory.make_NodeResult_for_commissioning(
69
69
node, commissioningscript.LLDP_OUTPUT_NAME, 0, b"<bar/>")
71
factory.make_tag("foo", "/foo"),
72
factory.make_tag("bar", "//lldp:bar"),
73
factory.make_tag("baz", "/foo/bar"),
71
factory.make_Tag("foo", "/foo"),
72
factory.make_Tag("bar", "//lldp:bar"),
73
factory.make_Tag("baz", "/foo/bar"),
75
75
populate_tags_for_single_node(tags, node)
76
76
self.assertItemsEqual(
77
77
["foo", "bar"], [tag.name for tag in node.tags.all()])
79
79
def test_ignores_tags_with_unrecognised_namespaces(self):
80
node = factory.make_node()
81
factory.make_node_commission_result(
80
node = factory.make_Node()
81
factory.make_NodeResult_for_commissioning(
82
82
node, commissioningscript.LSHW_OUTPUT_NAME, 0, b"<foo/>")
84
factory.make_tag("foo", "/foo"),
85
factory.make_tag("lou", "//nge:bar"),
84
factory.make_Tag("foo", "/foo"),
85
factory.make_Tag("lou", "//nge:bar"),
87
87
populate_tags_for_single_node(tags, node) # Look mom, no exception!
88
88
self.assertSequenceEqual(
89
89
["foo"], [tag.name for tag in node.tags.all()])
91
91
def test_ignores_tags_without_definition(self):
92
node = factory.make_node()
93
factory.make_node_commission_result(
92
node = factory.make_Node()
93
factory.make_NodeResult_for_commissioning(
94
94
node, commissioningscript.LSHW_OUTPUT_NAME, 0, b"<foo/>")
96
factory.make_tag("foo", "/foo"),
96
factory.make_Tag("foo", "/foo"),
97
97
Tag(name="empty", definition=""),
98
98
Tag(name="null", definition=None),