diff options
author | Parker Berberian <pberberian@iol.unh.edu> | 2019-02-27 11:52:21 -0500 |
---|---|---|
committer | Parker Berberian <pberberian@iol.unh.edu> | 2019-02-27 11:52:21 -0500 |
commit | c04dcca919cc89d04daa73d570a42134829a91d8 (patch) | |
tree | b9f64047a03f0efbfa56bafec334afedf137cfb9 /src/api/models.py | |
parent | e858a658aa9594949ec3b357253b34c7489d623d (diff) |
Update IPMI handling
provides a way for the lab to report IPMI info to the
dashboard. Necessary to allow the dashboard
to fully generate a PDF for OPNFV deploy
Change-Id: Ieef7a93e28b155ee90f3ffd3cfeedace332a6641
Signed-off-by: Parker Berberian <pberberian@iol.unh.edu>
Diffstat (limited to 'src/api/models.py')
-rw-r--r-- | src/api/models.py | 30 |
1 files changed, 29 insertions, 1 deletions
diff --git a/src/api/models.py b/src/api/models.py index 30f0f75..7109bbe 100644 --- a/src/api/models.py +++ b/src/api/models.py @@ -11,6 +11,7 @@ from django.contrib.auth.models import User from django.db import models from django.core.exceptions import PermissionDenied +from django.shortcuts import get_object_or_404 import json import uuid @@ -21,7 +22,8 @@ from resource_inventory.models import ( HostProfile, Host, Image, - Interface + Interface, + RemoteInfo ) @@ -60,6 +62,32 @@ class LabManager(object): def __init__(self, lab): self.lab = lab + def update_host_remote_info(self, data, host_id): + host = get_object_or_404(Host, labid=host_id, lab=self.lab) + info = {} + try: + info['address'] = data['address'] + info['mac_address'] = data['mac_address'] + info['password'] = data['password'] + info['user'] = data['user'] + info['type'] = data['type'] + info['versions'] = json.dumps(data['versions']) + except Exception as e: + return {"error": "invalid arguement: " + str(e)} + remote_info = host.remote_management + if "default" in remote_info.mac_address: + remote_info = RemoteInfo() + remote_info.address = info['address'] + remote_info.mac_address = info['mac_address'] + remote_info.password = info['password'] + remote_info.user = info['user'] + remote_info.type = info['type'] + remote_info.versions = info['versions'] + remote_info.save() + host.remote_management = remote_info + host.save() + return {"status": "success"} + def get_profile(self): prof = {} prof['name'] = self.lab.name |