5 from qa.PLCs import PLC, PLCs
7 class add_test_data(Test):
9 Adds the test data found in config to the plc db
11 def call(self, plc_name = None):
13 # Determine which plc to talk to
14 plc = self.config.get_plc(plc_name)
16 auth = plc.config.auth
18 # Search config for objects that belong to this plc
19 # Any object with 'plc' defined as this plc's name or with
20 # no 'plc' defined will be added
21 this_plc = lambda object: 'plcs' not in object or \
22 'plcs' in object and plc['name'] in object['plcs'] or \
23 object['plcs'] == None
25 sitelist, nodelist, slicelist, personlist, nodegrouplist = [], [], [], [], []
26 if isinstance(self.config.sites.values, dict):
27 sitelist = filter(this_plc, self.config.sites.values())
28 if isinstance(self.config.nodes, dict):
29 nodelist = filter(this_plc, self.config.nodes.values())
30 if isinstance(self.config.slices, dict):
31 slicelist = filter(this_plc, self.config.slices.values())
32 if isinstance(self.config.persons, dict):
33 personlist = filter(this_plc, self.config.persons.values())
34 if isinstance(self.config.nodegroups, dict):
35 nodegrouplist = filter(this_plc, self.config.nodegroups.values())
39 sites = api.GetSites(auth, [site['login_base']])
41 site_id = api.AddSite(auth, dict(site))
42 site['site_id'] = site_id
43 if self.config.verbose:
44 utils.header("Added site: %s" % site['name'], logfile = self.config.logfile)
47 if self.config.verbose:
48 utils.header("Site %s found" % site['name'], logfile = self.config.logfile)
51 for nodegroup in nodegrouplist:
52 nodegroups = api.GetNodeGroups(auth, [nodegroup['name']])
54 nodegroup_id = api.AddNodeGroup(auth, dict(nodegroup))
55 nodegroup['nodegroup_id'] = nodegroup_id
56 if self.config.verbose:
57 utils.header("Added Nodegroup: %s " % nodegroup['name'], logfile = self.config.logfile)
59 nodegroup.update(nodegroups[0])
60 if self.config.verbose:
61 utils.header("Nodegroup %s found" % nodegroup['name'], logfile = self.config.logfile)
65 nodes = api.GetNodes(auth, [node['hostname']])
67 node_id = api.AddNode(auth, node['site'], dict(node))
68 node['node_id'] = node_id
69 if self.config.verbose:
70 utils.header("Added node: %s" % node['hostname'], logfile = self.config.logfile)
73 if self.config.verbose:
74 utils.header("Node %s found" % node['hostname'], logfile = self.config.logfile)
77 if 'nodenetwork_ids' not in node or not node['nodenetwork_ids']:
78 for nodenetwork in node['nodenetworks']:
79 nodenetwork_id = api.AddNodeNetwork(auth, node['hostname'], dict(nodenetwork))
80 if self.config.verbose:
81 utils.header("Added nodenetwork to %s" % node['hostname'], logfile = self.config.logfile)
83 if self.config.verbose:
84 utils.header("Nodenetwork found on node %s" % node['hostname'], logfile = self.config.logfile)
85 # Add node to nodegroups
86 if 'nodegroups' in node:
87 for nodegroup in node['nodegroups']:
88 api.AddNodeToNodeGroup(auth, node['hostname'], nodegroup)
89 if self.config.verbose:
90 utils.header("Added %s to nodegroup %s" % (node['hostname'], node['nodegroups']))
93 for slice in slicelist:
94 slices = api.GetSlices(auth, [slice['name']])
96 slice_id = api.AddSlice(auth, dict(slice))
97 slice['slice_id'] = slice_id
98 if self.config.verbose:
99 utils.header("Added slice: %s" % slice['name'], logfile = self.config.logfile)
101 slice.update(slices[0])
102 if self.config.verbose:
103 utils.header("Slice %s found" % slice['name'], logfile = self.config.logfile)
106 for node in slice['nodes']:
107 api.AddSliceToNodes(auth, slice['name'], [node])
108 if self.config.verbose:
109 utils.header("Added slice to %s" % node, logfile = self.config.logfile)
112 for person in personlist:
113 roles = person['roles']
114 persons = api.GetPersons(auth, [person['email']])
116 person_id = api.AddPerson(auth, dict(person))
117 person['person_id'] = person_id
118 api.UpdatePerson(auth, person_id, {'enabled': True})
119 if self.config.verbose:
120 utils.header("Added person: %s" % person['email'], logfile = self.config.logfile)
122 person.update(persons[0])
123 if self.config.verbose:
124 utils.header("Person %s found" % person['email'], logfile = self.config.logfile)
126 # Add roles to person
128 api.AddRoleToPerson(auth, role, person['email'])
129 if self.config.verbose:
130 utils.header("Added %s to %s" % (role, person['email']), logfile = self.config.logfile)
132 for site in person['sites']:
133 api.AddPersonToSite(auth, person['email'], site)
134 if self.config.verbose:
135 utils.header("Added %s to %s" % (person['email'], site), logfile = self.config.logfile)
137 # Add person to slice
138 for slice in person['slices']:
139 api.AddPersonToSlice(auth, person['email'], slice)
140 if self.config.verbose:
141 utils.header("Added %s to %s" % (person['email'], slice), logfile = self.config.logfile)
144 if __name__ == '__main__':
145 args = tuple(sys.argv[1:])
146 add_test_data()(*args)