Requires a Jumphost per POD 61/66161/1
authorParker Berberian <pberberian@iol.unh.edu>
Thu, 3 Jan 2019 15:49:29 +0000 (10:49 -0500)
committerParker Berberian <pberberian@iol.unh.edu>
Thu, 3 Jan 2019 15:49:29 +0000 (10:49 -0500)
It was assumed but never enforced that each pod configuration
elects at least one host as the "jumphost". This commit
makes that a requirement when creating a configuration.

Change-Id: If55f1aa231b3cba8713f325f158796d85466b02a
Signed-off-by: Parker Berberian <pberberian@iol.unh.edu>
dashboard/src/workflow/sw_bundle_workflow.py

index 26ade22..1695b65 100644 (file)
@@ -125,6 +125,7 @@ class Define_Software(WorkflowStep):
         HostFormset = formset_factory(HostSoftwareDefinitionForm, extra=0)
         formset = HostFormset(request.POST)
         hosts = self.get_host_list()
+        has_jumphost = False
         if formset.is_valid():
             models['host_configs'] = []
             i = 0
@@ -147,6 +148,8 @@ class Define_Software(WorkflowStep):
                 except:
                     self.metastep.set_invalid("Image " + image.name + " is not compatible with host " + host.resource.name)
                 role = form.cleaned_data['role']
+                if "jumphost" in role.name.lower():
+                    has_jumphost = True
                 bundle = models['bundle']
                 hostConfig = HostConfiguration(
                     host=host,
@@ -158,6 +161,10 @@ class Define_Software(WorkflowStep):
                 confirm_host = {"name": host.resource.name, "image": image.name, "role": role.name}
                 confirm_hosts.append(confirm_host)
 
+            if not has_jumphost:
+                self.metastep.set_invalid('Must have at least one "Jumphost" per POD')
+                return self.render(request)
+
             self.repo_put(self.repo.CONFIG_MODELS, models)
             if "configuration" not in confirm:
                 confirm['configuration'] = {}