diff options
Diffstat (limited to 'dashboard/src/workflow/sw_bundle_workflow.py')
-rw-r--r-- | dashboard/src/workflow/sw_bundle_workflow.py | 24 |
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'] = {} |