From 1fec02fd0a4d7af8a89beb91d8d751a23e5086e0 Mon Sep 17 00:00:00 2001 From: Sawyer Bergeron Date: Wed, 3 Jun 2020 13:05:29 -0400 Subject: Allow not setting image for multi-node pods Signed-off-by: Sawyer Bergeron Change-Id: Ieee0802291901b4b14d756781fb2182bff9afae6 Signed-off-by: Sawyer Bergeron --- src/booking/forms.py | 2 +- src/booking/quick_deployer.py | 34 +++++++++++++++---------- src/templates/akraino/booking/quick_deploy.html | 8 ++++++ src/templates/base/booking/quick_deploy.html | 2 ++ 4 files changed, 31 insertions(+), 15 deletions(-) (limited to 'src') diff --git a/src/booking/forms.py b/src/booking/forms.py index 886f0f6..2a8784f 100644 --- a/src/booking/forms.py +++ b/src/booking/forms.py @@ -36,7 +36,7 @@ class QuickBookingForm(forms.Form): super(QuickBookingForm, self).__init__(data=data, **kwargs) self.fields["image"] = forms.ModelChoiceField( - Image.objects.filter(public=True) | Image.objects.filter(owner=user) + Image.objects.filter(public=True) | Image.objects.filter(owner=user), required=False ) self.fields['users'] = SearchableSelectMultipleField( diff --git a/src/booking/quick_deployer.py b/src/booking/quick_deployer.py index 9cfc465..0d4e5ea 100644 --- a/src/booking/quick_deployer.py +++ b/src/booking/quick_deployer.py @@ -103,9 +103,13 @@ def update_template(old_template, image, hostname, user): # there is never multiple networks anyway. This may have to change in the future for old_config in old_template.getConfigs(): + image_to_set = image + if not image: + image_to_set = old_config.image + config = ResourceConfiguration.objects.create( profile=old_config.profile, - image=image, + image=image_to_set, template=template, is_head_node=old_config.is_head_node ) @@ -170,19 +174,21 @@ def check_invariants(request, **kwargs): lab = kwargs['lab'] length = kwargs['length'] # check that image os is compatible with installer - if installer in image.os.sup_installers.all(): - # if installer not here, we can omit that and not check for scenario - if not scenario: - raise ValidationError("An OPNFV Installer needs a scenario to be chosen to work properly") - if scenario not in installer.sup_scenarios.all(): - raise ValidationError("The chosen installer does not support the chosen scenario") - if image.from_lab != lab: - raise ValidationError("The chosen image is not available at the chosen hosting lab") - # TODO - # if image.host_type != host_profile: - # raise ValidationError("The chosen image is not available for the chosen host type") - if not image.public and image.owner != request.user: - raise ValidationError("You are not the owner of the chosen private image") + if image: + if installer or scenario: + if installer in image.os.sup_installers.all(): + # if installer not here, we can omit that and not check for scenario + if not scenario: + raise ValidationError("An OPNFV Installer needs a scenario to be chosen to work properly") + if scenario not in installer.sup_scenarios.all(): + raise ValidationError("The chosen installer does not support the chosen scenario") + if image.from_lab != lab: + raise ValidationError("The chosen image is not available at the chosen hosting lab") + # TODO + # if image.host_type != host_profile: + # raise ValidationError("The chosen image is not available for the chosen host type") + if not image.public and image.owner != request.user: + raise ValidationError("You are not the owner of the chosen private image") if length < 1 or length > 21: raise BookingLengthException("Booking must be between 1 and 21 days long") diff --git a/src/templates/akraino/booking/quick_deploy.html b/src/templates/akraino/booking/quick_deploy.html index 80354d9..af9b3d3 100644 --- a/src/templates/akraino/booking/quick_deploy.html +++ b/src/templates/akraino/booking/quick_deploy.html @@ -17,3 +17,11 @@ {% endblock collab %} + +{% block image_script %} + +{% endblock image_script %} diff --git a/src/templates/base/booking/quick_deploy.html b/src/templates/base/booking/quick_deploy.html index 70b9869..e4b9431 100644 --- a/src/templates/base/booking/quick_deploy.html +++ b/src/templates/base/booking/quick_deploy.html @@ -55,6 +55,8 @@ +{% block image_script %} +{% endblock image_script %}