Merge "Add ability to clean up hosts and vlans"
[pharos-tools.git] / dashboard / src / resource_inventory / models.py
index e1f2aa3..bdc1f5d 100644 (file)
@@ -184,6 +184,9 @@ class ResourceBundle(models.Model):
             return "Resource bundle " + str(self.id) + " with no template"
         return "instance of " + str(self.template)
 
+    def get_host(self, role="Jumphost"):
+        return Host.objects.filter(bundle=self, config__opnfvRole__name=role).first()
+
 
 # Networking
 
@@ -266,7 +269,7 @@ class Image(models.Model):
     public = models.BooleanField(default=True)
     host_type = models.ForeignKey(HostProfile, on_delete=models.CASCADE)
     description = models.TextField()
-    os = models.ForeignKey(Opsys, null=True, on_delete=models.CASCADE) #sentinal?
+    os = models.ForeignKey(Opsys, null=True, on_delete=models.CASCADE)
 
     def __str__(self):
         return self.name
@@ -291,6 +294,26 @@ class HostConfiguration(models.Model):
         return "config with " + str(self.host) + " and image " + str(self.image)
 
 
+class RemoteInfo(models.Model):
+    address = models.CharField(max_length=15)
+    mac_address = models.CharField(max_length=17)
+    password = models.CharField(max_length=100)
+    user = models.CharField(max_length=100)
+    management_type = models.CharField(max_length=50, default="ipmi")
+    versions = models.CharField(max_length=100)  # json serialized list of floats
+
+
+def get_default_remote_info():
+    return RemoteInfo.objects.get_or_create(
+        address="default",
+        mac_address="default",
+        password="default",
+        user="default",
+        management_type="default",
+        versions="[default]"
+    )[0].pk
+
+
 # Concrete host, actual machine in a lab
 class Host(models.Model):
     id = models.AutoField(primary_key=True)
@@ -305,6 +328,7 @@ class Host(models.Model):
     working = models.BooleanField(default=True)
     vendor = models.CharField(max_length=100, default="unknown")
     model = models.CharField(max_length=150, default="unknown")
+    remote_management = models.ForeignKey(RemoteInfo, default=get_default_remote_info, on_delete=models.SET(get_default_remote_info))
 
     def __str__(self):
         return self.name