summaryrefslogtreecommitdiffstats
path: root/dashboard/src/workflow/sw_bundle_workflow.py
diff options
context:
space:
mode:
Diffstat (limited to 'dashboard/src/workflow/sw_bundle_workflow.py')
-rw-r--r--dashboard/src/workflow/sw_bundle_workflow.py24
1 files changed, 12 insertions, 12 deletions
diff --git a/dashboard/src/workflow/sw_bundle_workflow.py b/dashboard/src/workflow/sw_bundle_workflow.py
index 26ade22..80d1b3d 100644
--- a/dashboard/src/workflow/sw_bundle_workflow.py
+++ b/dashboard/src/workflow/sw_bundle_workflow.py
@@ -20,16 +20,9 @@ from resource_inventory.models import Image, GenericHost, ConfigBundle, HostConf
class SWConf_Resource_Select(Resource_Select):
def __init__(self, *args, **kwargs):
super(SWConf_Resource_Select, self).__init__(*args, **kwargs)
- self.repo_key = self.repo.SWCONF_SELECTED_GRB
+ self.repo_key = self.repo.SELECTED_GRESOURCE_BUNDLE
self.confirm_key = "configuration"
- def get_default_entry(self):
- booking_grb = self.repo_get(self.repo.BOOKING_SELECTED_GRB)
- if booking_grb:
- return booking_grb
- created_grb = self.repo_get(self.repo.GRESOURCE_BUNDLE_MODELS, {}).get("bundle", None)
- return created_grb
-
def post_render(self, request):
response = super(SWConf_Resource_Select, self).post_render(request)
models = self.repo_get(self.repo.CONFIG_MODELS, {})
@@ -80,7 +73,7 @@ class Define_Software(WorkflowStep):
break
excluded_images = Image.objects.exclude(owner=user).exclude(public=True)
excluded_images = excluded_images | Image.objects.exclude(host_type=host.profile)
- lab = self.repo_get(self.repo.SWCONF_SELECTED_GRB).lab
+ lab = self.repo_get(self.repo.SELECTED_GRESOURCE_BUNDLE).lab
excluded_images = excluded_images | Image.objects.exclude(from_lab=lab)
filter_data["id_form-" + str(i) + "-image"] = []
for image in excluded_images:
@@ -91,7 +84,7 @@ class Define_Software(WorkflowStep):
def get_host_list(self, grb=None):
if grb is None:
- grb = self.repo_get(self.repo.SWCONF_SELECTED_GRB, False)
+ grb = self.repo_get(self.repo.SELECTED_GRESOURCE_BUNDLE, False)
if not grb:
return []
if grb.id:
@@ -102,7 +95,7 @@ class Define_Software(WorkflowStep):
def get_context(self):
context = super(Define_Software, self).get_context()
- grb = self.repo_get(self.repo.SWCONF_SELECTED_GRB, False)
+ grb = self.repo_get(self.repo.SELECTED_GRESOURCE_BUNDLE, False)
if grb:
context["grb"] = grb
@@ -125,6 +118,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
@@ -134,7 +128,7 @@ class Define_Software(WorkflowStep):
i += 1
image = form.cleaned_data['image']
# checks image compatability
- grb = self.repo_get(self.repo.SWCONF_SELECTED_GRB)
+ grb = self.repo_get(self.repo.SELECTED_GRESOURCE_BUNDLE)
lab = None
if grb:
lab = grb.lab
@@ -147,6 +141,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 +154,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'] = {}