aboutsummaryrefslogtreecommitdiffstats
path: root/generate_job.py
diff options
context:
space:
mode:
authorParker Berberian <pberberian@iol.unh.edu>2019-10-10 15:07:45 -0400
committerParker Berberian <pberberian@iol.unh.edu>2019-10-10 15:07:45 -0400
commitab24a8de07dac62569ec79425241a6b974ed32a9 (patch)
tree55cc7ed4f570f36f777650f4fab2d1a60d25e218 /generate_job.py
parentf5025949a43415ae92b0885f3e61c43538f5c7b7 (diff)
Updated LaaS-ReflabHEADmaster
We have had divergent repositories for the code that runs in UNH because of difficulties with Gerrit and developer laziness. This incorporates the previous change (removing all references to pharos) and updates everything to what is currently running. Change-Id: I5c83c70d5ca686dfa03d49936fdce1603cdac16c Signed-off-by: Parker Berberian <pberberian@iol.unh.edu>
Diffstat (limited to 'generate_job.py')
-rwxr-xr-xgenerate_job.py96
1 files changed, 96 insertions, 0 deletions
diff --git a/generate_job.py b/generate_job.py
new file mode 100755
index 0000000..53a9e9b
--- /dev/null
+++ b/generate_job.py
@@ -0,0 +1,96 @@
+#!/usr/bin/python
+
+
+import json
+import sys
+
+
+USER = 1
+
+
+def make_job(host):
+ return {
+ "hardware": make_hardware_task(host),
+ "software": make_software_task(host),
+ "network": make_network_task(host),
+ "access": make_access_task(host),
+ }
+
+
+def make_network_task(host):
+ network_task = {
+ "test_network_task_id": {
+ "lab_token": "null"
+ }
+ }
+
+ interface_config = {mac: [] for mac in host['interfaces'].keys()} # all interfaces are empty
+ for key in interface_config.keys():
+ interface_config[key].append({
+ "tagged": False,
+ "vlan_id": 100
+ })
+ break # we only want to set one interface, and we dont care which
+
+ network_task["test_network_task_id"][host["hostname"]] = interface_config
+
+ return network_task
+
+
+def make_hardware_task(host):
+ hardware_task = {
+ "test_hardware_task_id": {
+ "lab_token": "null",
+ "image": host['centos_image'],
+ "power": "on",
+ "hostname": "some_hostname",
+ "id": host['hostname'],
+ "ipmi_create": True
+ }
+ }
+
+ return hardware_task
+
+
+def make_software_task(host):
+ return {
+ "test_software_task_id": {
+ "lab_token": "null",
+ "opnfv": {}
+ }
+ }
+
+
+def make_access_task(host):
+ return {
+ "test_access_task_id": {
+ "lab_token": "null",
+ "access_type": "ssh",
+ "revoke": False,
+ "context": {
+ "hosts": [host['hostname']],
+ "key": "my_fake_ssh_key"
+ },
+ "user": USER
+ },
+ "test_access_task_id2": {
+ "lab_token": "null",
+ "access_type": "vpn",
+ "revoke": False,
+ "user": USER
+ }
+ }
+
+
+if __name__ == "__main__":
+ if len(sys.argv) < 2:
+ print("Must provide Host definition from st2 datastore!")
+ sys.exit(1)
+ try:
+ host_json = json.loads(sys.argv[1])
+ except Exception as e:
+ print("Host description is not valid JSON: " + str(e))
+ sys.exit(2)
+ print(json.dumps(
+ make_job(host_json)
+ ))