1 #!/usr/bin/env /usr/share/plc_api/plcsh
7 class add_test_data(Test):
9 Adds the test data found in config to the plc db
13 # Make sure some required fields are in config
14 required_fields = ['TEST_SITE_NAME', 'TEST_SITE_LOGIN_BASE', 'TEST_SLICE_NAME', 'TEST_PERSON_EMAIL']
15 required_node_fields = ['TEST_NODE_TYPE', 'TEST_NODE_METHOD', 'TEST_NODE_HOSTNAME', 'TEST_NODE_IP',
16 'TEST_NODE_GATEWAY', 'TEST_NODE_DNS', 'TEST_NODE_NETWORK', 'TEST_NODE_BROADCAST',
19 for field in required_fields:
20 if not hasattr(self.config, field) or \
21 len(getattr(self.config, field).strip()) < 1:
22 raise Exception, "%(field)s must be set and cannot be blank" % locals()
24 # Look for node configurations
26 for attr in dir(self.config):
27 if attr.find("NODE") > 0:
28 parts = attr.split('_')
29 node_prefix = parts[1] +"_"+ parts[3]
30 name = "_".join(parts[:3])
31 value = getattr(self.config, attr)
32 # start a new node dictionary
33 if node_prefix not in node_params:
34 node_params[node_prefix] = {'prefix': node_prefix}
35 node_params[node_prefix][name] = value
37 node_configs = node_params.values()
40 # Make sure required node fields are preset for each node config
41 for node_config in node_configs:
42 for field in required_node_fields:
43 if field not in node_config or len(node_config[field].strip()) < 1:
44 raise Exception, "%s must be set for %s and cannot be blank" % (field, node_config['prefix'])
45 node = {'type': node_config['TEST_NODE_TYPE'],
46 'method': node_config['TEST_NODE_METHOD'],
47 'hostname': node_config['TEST_NODE_HOSTNAME'],
48 'ip': node_config['TEST_NODE_IP'],
49 'gateway': node_config['TEST_NODE_GATEWAY'],
50 'dns1': node_config['TEST_NODE_DNS'],
51 'broadcast': node_config['TEST_NODE_BROADCAST'],
52 'network': node_config['TEST_NODE_NETWORK'],
53 'netmask': node_config['TEST_NODE_NETMASK'],
55 'nodenetwork_ids': []}
56 node_list.append(node)
60 site_fields = {'name': self.config.TEST_SITE_NAME, 'login_base': self.config.TEST_SITE_LOGIN_BASE,
61 'url': 'http://google.com', 'enabled': True, 'max_slices': 1000,
62 'max_slivers': 1000, 'is_public': True, 'abbreviated_name': 'Test',
65 slice_fields = {'name': self.config.TEST_SLICE_NAME, 'instantiation': 'plc-instantiated',
66 'max_nodes': 1000, 'description': 'blank', 'person_ids': [], 'node_ids': []}
68 person_fields = {'first_name': 'fname', 'last_name': 'lname', 'password': 'password',
69 'email': self.config.TEST_PERSON_EMAIL, 'site_ids': [], 'slice_ids': []}
73 #sites = api.GetSites(auth, {'login_base': site_fields['login_base']})
74 sites = GetSites({'login_base': site_fields['login_base']})
76 #site_id = api.AddSite(auth, site_fields)
77 site_id = AddSite(site_fields)
78 site_fields['site_id'] = site_id
80 if self.config.verbose:
81 utils.header("Added test site")
84 if self.config.verbose:
85 utils.header("Test site found")
88 for node_fields in node_list:
89 #nodes = api.GetNodes(auth, [node_fields['hostname']])
90 nodes = GetNodes([node_fields['hostname']])
92 #node_id = api.AddNode(auth, site_fields['login_base'], node_fields)
93 node_id = AddNode(site_fields['login_base'], node_fields)
94 node_fields['node_id'] = node_id
96 nodes.append(node_fields)
97 if self.config.verbose:
98 utils.header("Added test node")
101 if self.config.verbose:
102 utils.header("Test node found")
105 if not node['nodenetwork_ids']:
106 #nodenetwork_id = api.AddNodeNetwork(auth, node_fields['hostname'], node_fields)
107 nodenetwork_id = AddNodeNetwork(node_fields['hostname'], node_fields)
108 if self.config.verbose:
109 utils.header("Added test nodenetwork")
111 if self.config.verbose:
112 utils.header("Nodenetwork found")
115 #slices = api.GetSlices(auth, [slice_fields['name']])
116 slices = GetSlices([slice_fields['name']])
118 #slice_id = api.AddSlice(auth, slice_fields)
119 slice_id = AddSlice(slice_fields)
120 slice_fields['slice_id'] = slice_id
122 if self.config.verbose:
123 utils.header("Added test slice")
126 if self.config.verbose:
127 utils.header("Test slice found")
130 node_ids = [n['node_id'] for n in nodes]
131 node_ids = filter(lambda node_id: node_id not in slice['node_ids'], node_ids)
133 #api.AddSliceToNodes(auth, slice['name'], node_ids)
134 AddSliceToNodes(slice['name'], node_ids)
135 if self.config.verbose:
136 utils.header("Added test slice to test nodes")
138 if self.config.verbose:
139 utils.header("Test slice found on test nodes")
142 #persons = api.GetPersons(auth, [person_fields['email']])
143 persons = GetPersons([person_fields['email']])
145 #person_id = api.AddPerson(auth, person_fields)
146 person_id = AddPerson(person_fields)
147 person_fields['person_id'] = person_id
148 person = person_fields
149 if self.config.verbose:
150 utils.header("Added test person")
153 if self.config.verbose:
154 utils.header("Test person found")
156 # Add roles to person
157 #api.AddRoleToPerson(auth, 'user', person['email'])
158 AddRoleToPerson('user', person['email'])
160 if site['site_id'] not in person['site_ids']:
161 #api.AddPersonToSite(auth, person['email'], site['login_base'])
162 AddPersonToSite(person['email'], site['login_base'])
163 if self.config.verbose:
164 utils.header("Added test person to test site")
166 if self.config.verbose:
167 utils.header("Test person found on test site")
169 # Add person to slice
170 if slice['slice_id'] not in person['slice_ids']:
171 #api.AddPersonToSlice(auth, person_fields['email'], slice_fields['name'])
172 AddPersonToSlice(person_fields['email'], slice_fields['name'])
173 if self.config.verbose:
174 utils.header("Added test person to slice")
176 if self.config.verbose:
177 utils.header("Test person found on test slice")
180 if __name__ == '__main__':
181 args = tuple(sys.argv[1:])
182 add_test_data()(*args)