aboutsummaryrefslogtreecommitdiffstats
path: root/src/dashboard/populate_db_iol.py
diff options
context:
space:
mode:
Diffstat (limited to 'src/dashboard/populate_db_iol.py')
-rw-r--r--src/dashboard/populate_db_iol.py352
1 files changed, 0 insertions, 352 deletions
diff --git a/src/dashboard/populate_db_iol.py b/src/dashboard/populate_db_iol.py
deleted file mode 100644
index d8df03f..0000000
--- a/src/dashboard/populate_db_iol.py
+++ /dev/null
@@ -1,352 +0,0 @@
-##############################################################################
-# Copyright (c) 2018 Parker Berberian, Sawyer Bergeron, and others.
-#
-# All rights reserved. This program and the accompanying materials
-# are made available under the terms of the Apache License, Version 2.0
-# which accompanies this distribution, and is available at
-# http://www.apache.org/licenses/LICENSE-2.0
-##############################################################################
-
-import json
-import yaml
-
-from account.models import Lab, UserProfile
-from django.contrib.auth.models import User
-from resource_inventory.models import (
- HostProfile,
- InterfaceProfile,
- DiskProfile,
- CpuProfile,
- RamProfile,
- VlanManager,
- Scenario,
- Installer,
- Opsys,
- OPNFVRole,
- Image,
- Interface,
- Host
-)
-
-
-class Populator:
-
- def __init__(self):
- self.host_profile_count = 0
- self.generic_host_count = 0
- self.host_profiles = []
- self.generic_bundle_count = 0
- self.booking_count = 0
-
- def make_host_profile(self, lab, data):
- hostProfile = HostProfile.objects.create(
- host_type=data['host']['type'],
- name=data['host']['name'],
- description=data['host']['description']
- )
- hostProfile.save()
-
- for iface_data in data['interfaces']:
-
- interfaceProfile = InterfaceProfile.objects.create(
- speed=iface_data['speed'],
- name=iface_data['name'],
- host=hostProfile
- )
- interfaceProfile.save()
-
- for disk_data in data['disks']:
-
- diskProfile = DiskProfile.objects.create(
- size=disk_data['size'],
- media_type=disk_data['type'],
- name=disk_data['name'],
- host=hostProfile
- )
- diskProfile.save()
-
- cpuProfile = CpuProfile.objects.create(
- cores=data['cpu']['cores'],
- architecture=data['cpu']['arch'],
- cpus=data['cpu']['cpus'],
- host=hostProfile
- )
- cpuProfile.save()
- ramProfile = RamProfile.objects.create(
- amount=data['ram']['amount'],
- channels=data['ram']['channels'],
- host=hostProfile
- )
- ramProfile.save()
- hostProfile.labs.add(lab)
- return hostProfile
-
- def make_users(self):
- user_pberberian = User.objects.create(username="pberberian")
- user_pberberian.save()
- user_pberberian_prof = UserProfile.objects.create(user=user_pberberian)
- user_pberberian_prof.save()
-
- user_sbergeron = User.objects.create(username="sbergeron")
- user_sbergeron.save()
- user_sbergeron_prof = UserProfile.objects.create(user=user_sbergeron)
- user_sbergeron_prof.save()
- return [user_sbergeron, user_pberberian]
-
- def make_labs(self):
- unh_iol = User.objects.create(username="unh_iol")
- unh_iol.save()
- vlans = []
- reserved = []
- for i in range(1, 4096):
- vlans.append(1)
- reserved.append(0)
- iol = Lab.objects.create(
- lab_user=unh_iol,
- name="UNH_IOL",
- vlan_manager=VlanManager.objects.create(
- vlans=json.dumps(vlans),
- reserved_vlans=json.dumps(reserved),
- allow_overlapping=False,
- block_size=20,
- ),
- api_token=Lab.make_api_token(),
- contact_email="nfv-lab@iol.unh.edu",
- location="University of New Hampshire, Durham NH, 03824 USA"
- )
- return [iol]
-
- def make_configurations(self):
- # scenarios
- scen1 = Scenario.objects.create(name="os-nosdn-nofeature-noha")
- scen2 = Scenario.objects.create(name="os-odl-kvm-ha")
- scen3 = Scenario.objects.create(name="os-nosdn-nofeature-ha")
-
- # installers
- fuel = Installer.objects.create(name="Fuel")
- fuel.sup_scenarios.add(scen1)
- fuel.sup_scenarios.add(scen3)
- fuel.save()
- joid = Installer.objects.create(name="Joid")
- joid.sup_scenarios.add(scen1)
- joid.sup_scenarios.add(scen2)
- joid.save()
- apex = Installer.objects.create(name="Apex")
- apex.sup_scenarios.add(scen2)
- apex.sup_scenarios.add(scen3)
- apex.save()
- daisy = Installer.objects.create(name="Daisy")
- daisy.sup_scenarios.add(scen1)
- daisy.sup_scenarios.add(scen2)
- daisy.sup_scenarios.add(scen3)
- daisy.save()
- compass = Installer.objects.create(name="Compass")
- compass.sup_scenarios.add(scen1)
- compass.sup_scenarios.add(scen3)
- compass.save()
-
- # operating systems
- ubuntu = Opsys.objects.create(name="Ubuntu")
- ubuntu.sup_installers.add(compass)
- ubuntu.sup_installers.add(joid)
- ubuntu.save()
- centos = Opsys.objects.create(name="CentOs")
- centos.sup_installers.add(apex)
- centos.sup_installers.add(fuel)
- centos.save()
- suse = Opsys.objects.create(name="Suse")
- suse.sup_installers.add(fuel)
- suse.save()
-
- # opnfv roles
- OPNFVRole.objects.create(name="Compute", description="Does the heavy lifting")
- OPNFVRole.objects.create(name="Controller", description="Controls everything")
- OPNFVRole.objects.create(name="Jumphost", description="Entry Point")
-
- lab = Lab.objects.first()
- user = UserProfile.objects.first().user
- Image.objects.create(
- lab_id=23,
- name="hpe centos",
- from_lab=lab,
- owner=user,
- host_type=HostProfile.objects.get(name="hpe")
- )
- Image.objects.create(
- lab_id=25,
- name="hpe ubuntu",
- from_lab=lab,
- owner=user,
- host_type=HostProfile.objects.get(name="hpe")
- )
-
- Image.objects.create(
- lab_id=26,
- name="hpe suse",
- from_lab=lab,
- owner=user,
- host_type=HostProfile.objects.get(name="hpe")
- )
-
- Image.objects.create(
- lab_id=27,
- name="arm ubuntu",
- from_lab=lab,
- owner=user,
- host_type=HostProfile.objects.get(name="arm")
- )
-
- def make_lab_hosts(self, hostcount, profile, lab, data, offset=1):
- for i in range(hostcount):
- name = "Host_" + lab.name + "_" + profile.name + "_" + str(i + offset)
- host = Host.objects.create(
- name=name,
- lab=lab,
- profile=profile,
- labid=data[i]['labid']
- )
- for iface_profile in profile.interfaceprofile.all():
- iface_data = data[i]['interfaces'][iface_profile.name]
- Interface.objects.create(
- mac_address=iface_data['mac'],
- bus_address=iface_data['bus'],
- name=iface_profile.name,
- host=host
- )
-
- def make_profile_data(self):
- """
- Create Profile Data.
-
- returns a dictionary of data from the yaml files
- created by inspection scripts
- """
- data = []
- for prof in ["hpe", "arm"]: # TODO
- profile_dict = {}
- host = {
- "name": prof,
- "type": 0,
- "description": "some LaaS servers"
- }
- profile_dict['host'] = host
- profile_dict['interfaces'] = []
- for interface in [{"name": "eno1", "speed": 1000}, {"name": "eno2", "speed": 10000}]: # TODO
- iface_dict = {}
- iface_dict["name"] = interface['name']
- iface_dict['speed'] = interface['speed']
- profile_dict['interfaces'].append(iface_dict)
-
- profile_dict['disks'] = []
- for disk in [{"size": 1000, "type": "ssd", "name": "sda"}]: # TODO
- disk_dict = {}
- disk_dict['size'] = disk['size']
- disk_dict['type'] = disk['type']
- disk_dict['name'] = disk['name']
- profile_dict['disks'].append(disk_dict)
-
- # cpu
- cpu = {}
- cpu['cores'] = 4
- cpu['arch'] = "x86"
- cpu['cpus'] = 2
- profile_dict['cpu'] = cpu
-
- # ram
- ram = {}
- ram['amount'] = 256
- ram['channels'] = 4
- profile_dict['ram'] = ram
-
- data.append(profile_dict)
-
- return data
-
- def get_lab_data(self, lab):
- data = {}
- path = "/laas_dashboard/data/" + lab.name + "/"
- host_file = open(path + "hostlist.json")
- host_structure = json.loads(host_file.read())
- host_file.close()
- for profile in host_structure['profiles'].keys():
- data[profile] = {}
- prof_path = path + profile
- for host in host_structure['profiles'][profile]:
- host_file = open(prof_path + "/" + host + ".yaml")
- host_data = yaml.load(host_file.read())
- host_file.close()
- data[profile][host] = host_data
- return data
-
- def make_profiles_and_hosts(self, lab, lab_data):
- for host_profile_name, host_data_dict in lab_data.items():
- if len(host_data_dict) < 1:
- continue
- host_profile = HostProfile.objects.create(
- name=host_profile_name,
- description=""
- )
- host_profile.labs.add(lab)
- example_host_data = list(host_data_dict.values())[0]
-
- cpu_data = example_host_data['cpu']
- CpuProfile.objects.create(
- cores=cpu_data['cores'],
- architecture=cpu_data['arch'],
- cpus=cpu_data['cpus'],
- host=host_profile
- )
-
- ram_data = example_host_data['memory']
- RamProfile.objects.create(
- amount=int(ram_data[:-1]),
- channels=1,
- host=host_profile
- )
-
- disks_data = example_host_data['disk']
- for disk_data in disks_data:
- size = 0
- try:
- size = int(disk_data['size'].split('.')[0])
- except Exception:
- size = int(disk_data['size'].split('.')[0][:-1])
- DiskProfile.objects.create(
- size=size,
- media_type="SSD",
- name=disk_data['name'],
- host=host_profile
- )
-
- ifaces_data = example_host_data['interface']
- for iface_data in ifaces_data:
- InterfaceProfile.objects.create(
- speed=iface_data['speed'],
- name=iface_data['name'],
- host=host_profile
- )
-
- # all profiles created
- for hostname, host_data in host_data_dict.items():
- host = Host.objects.create(
- name=hostname,
- labid=hostname,
- profile=host_profile,
- lab=lab
- )
- for iface_data in host_data['interface']:
- Interface.objects.create(
- mac_address=iface_data['mac'],
- bus_address=iface_data['busaddr'],
- name=iface_data['name'],
- host=host
- )
-
- def populate(self):
- self.labs = self.make_labs()
- # We should use the existing users, not creating our own
- for lab in self.labs:
- lab_data = self.get_lab_data(lab)
- self.make_profiles_and_hosts(lab, lab_data)
-
- # We will add opnfv info and images as they are created and supported