horizon/openstack_dashboard/static/js/horizon.instances.js
manchandavishal 6918015508 Fix deprecated use of 'jQuery.fn.change()' shorthand event
This patch changed the code to use the recommended 'on()' method
instead of the deprecated shorthand event. For more information
about this deprecation, please refer [1].

[1] https://api.jquery.com/change-shorthand/

Change-Id: Ia580ddf2ea5b0fba7feb400db759f59c0f5d958f
2023-04-26 19:43:42 +05:30

200 lines
6.5 KiB
JavaScript

/**
* Licensed under the Apache License, Version 2.0 (the "License"); you may
* not use this file except in compliance with the License. You may obtain
* a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
* WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
* License for the specific language governing permissions and limitations
* under the License.
*/
/* global JSEncrypt */
horizon.instances = {
user_volume_size: false,
workflow_init: function () {
// Initialise the drag and drop network list
horizon.lists.generate_html("network");
}
};
horizon.addInitFunction(horizon.instances.init = function () {
var $document = $(document);
$document.on('submit', '#tail_length', function (evt) {
horizon.lists.get_console_log(true, true);
evt.preventDefault();
});
/* Launch instance workflow */
// Handle field toggles for the Launch Instance source type field
function update_launch_source_displayed_fields (field) {
var $this = $(field);
var base_type = $this.val();
var elements_list;
$this.closest(".form-group").nextAll().hide();
/*
As part of fixing bug #1482507, Changing the image to default
image for other than "Boot from image" source type, so that
disableFlavorsForImages() is called on Image name change to reset flavors.
*/
if (base_type != "image_id") {
$("#id_image_id").val('');
$('#id_image_id').change();
}
switch(base_type) {
case "image_id":
elements_list = "#id_image_id";
break;
case "instance_snapshot_id":
elements_list = "#id_instance_snapshot_id";
break;
case "volume_id":
elements_list = "#id_volume_id, #id_device_name, #id_vol_delete_on_instance_delete";
break;
case "volume_image_id":
elements_list = "#id_image_id, #id_volume_size, #id_device_name, #id_vol_delete_on_instance_delete";
break;
case "volume_snapshot_id":
elements_list = "#id_volume_snapshot_id, #id_device_name, #id_vol_delete_on_instance_delete";
break;
}
var elements_list_group = $(elements_list).closest(".form-group");
elements_list_group.addClass("required");
// marking all the fields in 'elements_list' as mandatory except '#id_device_name'
$("#id_device_name").closest(".form-group").removeClass("required");
// showing all the fields in 'elements_list'
elements_list_group.show();
}
$document.on('change', '.workflow #id_source_type', function () {
update_launch_source_displayed_fields(this);
});
$('.workflow #id_source_type').on('change', function() {});
horizon.modals.addModalInitFunction(function (modal) {
$(modal).find("#id_source_type").on('change', function() {});
});
/*
Update the device size value to reflect minimum allowed
for selected image and flavor
*/
function update_device_size(source_type) {
var volume_size;
var selected_flavor = horizon.Quota.getSelectedFlavor();
if (selected_flavor) {
volume_size = selected_flavor.disk;
}
var size_field = $("#id_volume_size");
if (source_type === 'image') {
var image = horizon.Quota.getSelectedImageOrSnapshot(source_type);
if (image !== undefined && image.min_disk > volume_size) {
volume_size = image.min_disk;
}
if (image !== undefined && image.size > volume_size) {
volume_size = image.size;
}
}
// If the user has manually changed the volume size, do not override
// unless user-defined value is too small.
if (horizon.instances.user_volume_size) {
var user_value = size_field.val();
if (user_value > volume_size) {
volume_size = user_value;
}
}
// Make sure the new value is >= the minimum allowed (1GB)
if (volume_size < 1) {
volume_size = 1;
}
size_field.val(volume_size);
}
$document.on('change', '.workflow #id_flavor', function () {
update_device_size();
});
$document.on('change', '.workflow #id_image_id', function () {
update_device_size('image');
});
$document.on('input', '.workflow #id_volume_size', function () {
horizon.instances.user_volume_size = true;
// We only need to listen for the first user input to this field,
// so remove the listener after the first time it gets called.
$document.off('input', '.workflow #id_volume_size');
});
horizon.instances.decrypt_password = function (encrypted_password, private_key) {
var crypt = new JSEncrypt();
crypt.setKey(private_key);
return crypt.decrypt(encrypted_password);
};
$document.on('change', '#id_private_key_file', function (evt) {
var file = evt.target.files[0];
var reader = new FileReader();
if (file) {
reader.onloadend = function (event) {
$("#id_private_key").val(event.target.result);
};
reader.onerror = function () {
horizon.clearErrorMessages();
horizon.toast.add('error', gettext('Could not read the file'));
};
reader.readAsText(file);
}
else {
horizon.clearErrorMessages();
horizon.toast.add('error', gettext('Could not decrypt the password'));
}
});
/*
The font-family is changed because with the default policy the major I
and minor the l cannot be distinguished.
*/
$document.on('show.bs.modal', '#password_instance_modal', function () {
$("#id_decrypted_password").css({
"font-family": "monospace",
"cursor": "text"
});
$("#id_encrypted_password").css("cursor","text");
$("#id_keypair_name").css("cursor","text");
});
$document.on('click', '#decryptpassword_button', function (evt) {
var encrypted_password = $("#id_encrypted_password").val();
var private_key = $('#id_private_key').val();
if (!private_key) {
evt.preventDefault();
$(this).closest('.modal').modal('hide');
}
else {
if (private_key.length > 0) {
evt.preventDefault();
var decrypted_password = horizon.instances.decrypt_password(encrypted_password, private_key);
if (decrypted_password === false || decrypted_password === null) {
horizon.clearErrorMessages();
horizon.toast.add('error', gettext('Could not decrypt the password'));
}
else {
$("#id_decrypted_password").val(decrypted_password);
$("#decryptpassword_button").hide();
}
}
}
});
});