From 526c57c1de53a5f1003cfa3a0866b07283acd50e Mon Sep 17 00:00:00 2001 From: Scott Baker Date: Tue, 9 Sep 2014 09:58:49 -0700 Subject: [PATCH] filter images in sliver-add inline by deployment --- planetstack/core/admin.py | 10 ++++- .../admin/core/slice/change_form.html | 40 ++++++++++++++++--- 2 files changed, 43 insertions(+), 7 deletions(-) diff --git a/planetstack/core/admin.py b/planetstack/core/admin.py index 3ff973f..3e57ee0 100644 --- a/planetstack/core/admin.py +++ b/planetstack/core/admin.py @@ -764,12 +764,18 @@ class SliceAdmin(PlanetStackBaseAdmin): for deployment in flavor.deployments.all(): deployment_flavors.append( (deployment.id, flavor.id, flavor.name) ) + deployment_images = [] + for image in Image.objects.all(): + for imageDeployment in image.imagedeployments_set.all(): + deployment_images.append( (imageDeployment.deployment.id, image.id, image.name) ) + site_login_bases = [] for site in Site.objects.all(): - site_login_bases.append((site.id, site.login_base)) - + site_login_bases.append((site.id, site.login_base)) + context["deployment_nodes"] = deployment_nodes context["deployment_flavors"] = deployment_flavors + context["deployment_images"] = deployment_images context["site_login_bases"] = site_login_bases return super(SliceAdmin, self).render_change_form(request, context, add, change, form_url, obj) diff --git a/planetstack/templates/admin/core/slice/change_form.html b/planetstack/templates/admin/core/slice/change_form.html index 424a41b..31f09c0 100644 --- a/planetstack/templates/admin/core/slice/change_form.html +++ b/planetstack/templates/admin/core/slice/change_form.html @@ -14,20 +14,36 @@ deployment_flavors = [ {% endfor %} ]; +deployment_images = [ +{% for dn in deployment_images %} + [{{ dn.0 }}, {{ dn.1 }} , "{{ dn.2 }}"], +{% endfor %} +]; + site_login_bases = [ {% for s in site_login_bases %} [{{ s.0 }}, "{{ s.1 }}"], {% endfor %} ]; +function option_html(val, text, selected) { + if (selected) { + return '\n'; + } else { + return '\n'; + } +} + function update_nodes(deployment_select, flavor_select, node_select) { deployment_id = $(deployment_select).val(); + node_id = $(node_select).val(); flavor_name = $(flavor_select).children(":selected").text() html=""; for (i in deployment_nodes) { + // this is for EC2, where the node hostnames imply the flavor. dn = deployment_nodes[i]; if ((dn[0] == deployment_id) && (dn[2].lastIndexOf(flavor_name,0) === 0)) { - html = html + '\n' + html = html + option_html(dn[1], dn[2], dn[1]==node_id); } } if (!html) { @@ -35,28 +51,40 @@ function update_nodes(deployment_select, flavor_select, node_select) { for (i in deployment_nodes) { dn = deployment_nodes[i]; if (dn[0] == deployment_id) { - html = html + '\n' + html = html + option_html(dn[1], dn[2], dn[1]==node_id); } } } html = "\n" + html; - //console.log(html); node_select.empty().append(html); } function update_flavors(deployment_select, flavor_select) { deployment_id = $(deployment_select).val(); + flavor_id = $(flavor_select).val(); html = "\n"; for (i in deployment_flavors) { dn = deployment_flavors[i]; if (dn[0] == deployment_id) { - html = html + '\n' + html = html + option_html(dn[1], dn[2], dn[1] == flavor_id); } } - //console.log(html); flavor_select.empty().append(html); } +function update_images(deployment_select, image_select) { + deployment_id = $(deployment_select).val(); + image_id = $(image_select).val(); + html = "\n"; + for (i in deployment_images) { + dn = deployment_images[i]; + if (dn[0] == deployment_id) { + html = html + option_html(dn[1], dn[2], dn[1] == image_id); + } + } + image_select.empty().append(html); +} + function sliver_deployment_changed(any_control) { /* This function handles someone changing the deploymentNetwork control in the add-sliver line. It updats the flavors and nodes dialogs @@ -73,8 +101,10 @@ function sliver_deployment_changed(any_control) { deployment_select = $("#" + $($(any_control).closest('tr')[0]).find('.field-deploymentNetwork select')[0].id); node_select = $("#" + $($(any_control).closest('tr')[0]).find('.field-node select')[0].id); flavor_select = $("#" + $($(any_control).closest('tr')[0]).find('.field-flavor select')[0].id); + image_select = $("#" + $($(any_control).closest('tr')[0]).find('.field-image select')[0].id); update_nodes(deployment_select, flavor_select, node_select); update_flavors(deployment_select, flavor_select); + update_images(deployment_select, image_select); } function sliver_flavor_changed(any_control) { -- 2.43.0