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 = [], [], [], [], []
27 if isinstance(self.config.sites, dict):
28 sitelist = filter(this_plc, self.config.sites.values())
29 if isinstance(self.config.nodes, dict):
30 nodelist = filter(this_plc, self.config.nodes.values())
31 if isinstance(self.config.slices, dict):
32 slicelist = filter(this_plc, self.config.slices.values())
33 if isinstance(self.config.persons, dict):
34 personlist = filter(this_plc, self.config.persons.values())
35 if isinstance(self.config.nodegroups, dict):
36 nodegrouplist = filter(this_plc, self.config.nodegroups.values())
40 sites = api.GetSites(auth, [site['login_base']])
42 site_id = api.AddSite(auth, dict(site))
43 site['site_id'] = site_id
44 if self.config.verbose:
45 utils.header("Added site: %s" % site['name'], logfile = self.config.logfile)
48 if self.config.verbose:
49 utils.header("Site %s found" % site['name'], logfile = self.config.logfile)
52 for nodegroup in nodegrouplist:
53 nodegroups = api.GetNodeGroups(auth, [nodegroup['name']])
55 nodegroup_id = api.AddNodeGroup(auth, dict(nodegroup))
56 nodegroup['nodegroup_id'] = nodegroup_id
57 if self.config.verbose:
58 utils.header("Added Nodegroup: %s " % nodegroup['name'], logfile = self.config.logfile)
60 nodegroup.update(nodegroups[0])
61 if self.config.verbose:
62 utils.header("Nodegroup %s found" % nodegroup['name'], logfile = self.config.logfile)
66 nodes = api.GetNodes(auth, [node['hostname']])
68 node_id = api.AddNode(auth, node['site'], dict(node))
69 node['node_id'] = node_id
70 if self.config.verbose:
71 utils.header("Added node: %s" % node['hostname'], logfile = self.config.logfile)
74 if self.config.verbose:
75 utils.header("Node %s found" % node['hostname'], logfile = self.config.logfile)
78 if 'nodenetwork_ids' not in node or not node['nodenetwork_ids']:
79 for nodenetwork in node['nodenetworks']:
80 nodenetwork_id = api.AddNodeNetwork(auth, node['hostname'], dict(nodenetwork))
81 if self.config.verbose:
82 utils.header("Added nodenetwork to %s" % node['hostname'], logfile = self.config.logfile)
84 if self.config.verbose:
85 utils.header("Nodenetwork found on node %s" % node['hostname'], logfile = self.config.logfile)
86 # Add node to nodegroups
87 if 'nodegroups' in node:
88 for nodegroup in node['nodegroups']:
89 api.AddNodeToNodeGroup(auth, node['hostname'], nodegroup)
90 if self.config.verbose:
91 utils.header("Added %s to nodegroup %s" % (node['hostname'], node['nodegroups']))
94 for slice in slicelist:
95 slices = api.GetSlices(auth, [slice['name']])
97 slice_id = api.AddSlice(auth, dict(slice))
98 slice['slice_id'] = slice_id
99 if self.config.verbose:
100 utils.header("Added slice: %s" % slice['name'], logfile = self.config.logfile)
102 slice.update(slices[0])
103 if self.config.verbose:
104 utils.header("Slice %s found" % slice['name'], logfile = self.config.logfile)
107 for node in slice['nodes']:
108 api.AddSliceToNodes(auth, slice['name'], [node])
109 if self.config.verbose:
110 utils.header("Added slice to %s" % node, logfile = self.config.logfile)
113 for person in personlist:
114 roles = person['roles']
115 persons = api.GetPersons(auth, [person['email']])
117 person_id = api.AddPerson(auth, dict(person))
118 person['person_id'] = person_id
119 api.UpdatePerson(auth, person_id, {'enabled': True})
120 if self.config.verbose:
121 utils.header("Added person: %s" % person['email'], logfile = self.config.logfile)
123 person.update(persons[0])
124 if self.config.verbose:
125 utils.header("Person %s found" % person['email'], logfile = self.config.logfile)
127 # Add roles to person
129 api.AddRoleToPerson(auth, role, person['email'])
130 if self.config.verbose:
131 utils.header("Added %s to %s" % (role, person['email']), logfile = self.config.logfile)
133 for site in person['sites']:
134 api.AddPersonToSite(auth, person['email'], site)
135 if self.config.verbose:
136 utils.header("Added %s to %s" % (person['email'], site), logfile = self.config.logfile)
138 # Add person to slice
139 for slice in person['slices']:
140 api.AddPersonToSlice(auth, person['email'], slice)
141 if self.config.verbose:
142 utils.header("Added %s to %s" % (person['email'], slice), logfile = self.config.logfile)
145 if __name__ == '__main__':
146 args = tuple(sys.argv[1:])
147 add_test_data()(*args)