| {% extends 'admin/change_form.html' %} |
| {% block extrahead %} |
| {{ block.super }} |
| <script> |
| deployment_nodes = [ |
| {% for dn in deployment_nodes %} |
| [{{ dn.0 }}, {{ dn.1 }} , "{{ dn.2 }}"], |
| {% endfor %} |
| ]; |
| |
| deployment_flavors = [ |
| {% for dn in deployment_flavors %} |
| [{{ dn.0 }}, {{ dn.1 }} , "{{ dn.2 }}"], |
| {% 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 '<option value="' + val + '" selected>' + text + '</option>\n'; |
| } else { |
| return '<option value="' + val + '">' + text + '</option>\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 + option_html(dn[1], dn[2], dn[1]==node_id); |
| } |
| } |
| if (!html) { |
| // now try it without the flavor hostname prefix matching |
| for (i in deployment_nodes) { |
| dn = deployment_nodes[i]; |
| if (dn[0] == deployment_id) { |
| html = html + option_html(dn[1], dn[2], dn[1]==node_id); |
| } |
| } |
| } |
| html = "<option value=''>---------</option>\n" + html; |
| node_select.empty().append(html); |
| } |
| |
| function update_flavors(deployment_select, flavor_select) { |
| deployment_id = $(deployment_select).val(); |
| flavor_id = $(flavor_select).val(); |
| html = "<option value=''>---------</option>\n"; |
| for (i in deployment_flavors) { |
| dn = deployment_flavors[i]; |
| if (dn[0] == deployment_id) { |
| html = html + option_html(dn[1], dn[2], dn[1] == flavor_id); |
| } |
| } |
| flavor_select.empty().append(html); |
| } |
| |
| function update_images(deployment_select, image_select) { |
| deployment_id = $(deployment_select).val(); |
| image_id = $(image_select).val(); |
| html = "<option value=''>---------</option>\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 |
| accordingly. |
| */ |
| |
| /* the inscrutable jquery selector below says: |
| find the closest parent "tr" to the current element |
| then find the child with class "field-deploymentNetwork" |
| then find the child with that is a select |
| then return it's id |
| then turn it into a jquery object |
| */ |
| 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) { |
| /* this is like sliver_flavor changed, but does not update the flavors |
| 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); |
| update_nodes(deployment_select, flavor_select, node_select); |
| } |
| |
| function update_slice_prefix(site_select, slice_name_id) { |
| site_id = $(site_select).val(); |
| slice_prefix=""; |
| for (i in site_login_bases) { |
| if (site_login_bases[i][0] == site_id) { |
| slice_prefix=site_login_bases[i][1]+"_"; |
| } |
| } |
| $("#"+slice_name_id).val(slice_prefix); |
| } |
| </script> |
| |
| {% endblock %} |
| |