Skip to content

Commit

Permalink
Merge pull request #2598 from sseago/resize_approval_edit
Browse files Browse the repository at this point in the history
Fix resize approval to work for editing requests
  • Loading branch information
himdel committed Jun 21, 2018
2 parents 36849dd + d7effbd commit 62f7d48
Show file tree
Hide file tree
Showing 7 changed files with 56 additions and 24 deletions.
@@ -1,36 +1,41 @@
ManageIQ.angular.app.controller('vmCloudResizeFormController', ['$http', '$scope', 'vmCloudResizeFormId', 'miqService', function($http, $scope, vmCloudResizeFormId, miqService) {
ManageIQ.angular.app.controller('vmCloudResizeFormController', ['$http', '$scope', 'vmCloudResizeFormId', 'objectId', 'miqService', function($http, $scope, vmCloudResizeFormId, objectId, miqService) {
var vm = this;

var init = function() {
vm.vmCloudModel = {
flavor_id: null,
};
vm.flavors = [];
vm.formId = vmCloudResizeFormId;
vm.modelCopy = angular.copy(vm.vmCloudModel);
vm.vmCloudResizeformId = vmCloudResizeFormId;
vm.objectId = objectId;

ManageIQ.angular.scope = vm;

$http.get('/vm_cloud/resize_form_fields/' + vmCloudResizeFormId)
vm.newRecord = vmCloudResizeFormId == 'new';

$http.get('/vm_cloud/resize_form_fields/' + vmCloudResizeFormId + '?objectId=' + vm.objectId)
.then(getResizeFormData)
.catch(miqService.handleFailure);
};

$scope.cancelClicked = function() {
miqService.sparkleOn();
var url = '/vm_cloud/resize_vm/' + vmCloudResizeFormId + '?button=cancel';
miqService.miqAjaxButton(url);
miqService.miqAjaxButton(url, {objectId: vm.objectId});
};

$scope.submitClicked = function() {
miqService.sparkleOn();
var url = '/vm_cloud/resize_vm/' + vmCloudResizeFormId + '?button=submit';
miqService.miqAjaxButton(url, vm.vmCloudModel);
miqService.miqAjaxButton(url, {objectId: vm.objectId,
flavor_id: vm.vmCloudModel.flavor_id});
};

function getResizeFormData(response) {
var data = response.data;
Object.assign(vm, data);
vm.flavors = data.flavors
vm.vmCloudModel.flavor_id = data.flavor_id
vm.modelCopy = angular.copy(vm.vmCloudModel);
miqService.sparkleOff();
};

Expand Down
6 changes: 5 additions & 1 deletion app/controllers/miq_request_controller.rb
Expand Up @@ -39,7 +39,11 @@ def request_edit
session[:checked_items] = provision_request.options[:src_ids]
@refresh_partial = "reconfigure"
@_params[:controller] = "vm"
reconfigurevms
if provision_request.kind_of?(VmCloudReconfigureRequest)
resizevms
else
reconfigurevms
end
end
end

Expand Down
39 changes: 29 additions & 10 deletions app/controllers/mixins/actions/vm_actions/resize.rb
Expand Up @@ -3,16 +3,26 @@ module Actions
module VmActions
module Resize
def resizevms
assert_privileges("instance_resize")
recs = find_checked_items
assert_privileges(params[:pressed])
# if coming in to edit from miq_request list view
recs = checked_or_params
if !session[:checked_items].nil? && (@lastaction == "set_checked_items" || params[:pressed] == "miq_request_edit")
request_id = params[:id]
@record = VmCloudReconfigureRequest.find(request_id).vms.first
end

recs = [params[:id].to_i] if recs.blank?
@record = find_record_with_rbac(VmOrTemplate, recs.first) # Set the VM object
@record ||= find_record_with_rbac(VmOrTemplate, recs.first) # Set the VM object
if @record.supports_resize?
if @explorer
resize
@refresh_partial = "vm_common/resize"
else
javascript_redirect :controller => 'vm', :action => 'resize', :rec_id => @record.id, :escape => false # redirect to build the retire screen
javascript_redirect(:controller => 'vm',
:action => 'resize',
:req_id => request_id,
:rec_id => @record.id,
:escape => false) # redirect to build the retire screen
end
else
add_flash(_("Unable to reconfigure Instance \"%{name}\": %{details}") % {
Expand All @@ -33,14 +43,18 @@ def resize
)
end
@sb[:explorer] = @explorer
@request_id = params[:req_id] ? params[:req_id] : nil
@in_a_form = true
@resize = true
render :action => "show" unless @explorer
end

def resize_vm
assert_privileges("instance_resize")
@record = find_record_with_rbac(VmOrTemplate, params[:id])
@record = find_record_with_rbac(VmOrTemplate, params[:objectId])
if params[:id] && params[:id] != 'new'
@request_id = params[:id]
end

case params[:button]
when "cancel"
Expand All @@ -52,8 +66,6 @@ def resize_vm
flavor_id = params['flavor_id']
flavor = find_record_with_rbac(Flavor, flavor_id)
old_flavor_name = @record.flavor.try(:name) || _("unknown")
# TODO: still need to determine whether the next line should be deleted or replaced
@request_id = nil
options = {:src_ids => [@record.id],
:instance_type => flavor_id}
VmCloudReconfigureRequest.make_request(@request_id, options, current_user)
Expand All @@ -75,7 +87,7 @@ def resize_vm
@record = nil
@sb[:action] = nil
end
if @sb[:explorer]
if @sb[:explorer] && !(@breadcrumbs.length >= 2 && previous_breadcrumb_url.include?('miq_request'))
replace_right_cell
else
flash_to_session
Expand All @@ -86,7 +98,9 @@ def resize_vm

def resize_form_fields
assert_privileges("instance_resize")
@record = find_record_with_rbac(VmOrTemplate, params[:id])

@request_id = params[:id]
@record = find_record_with_rbac(VmOrTemplate, params[:objectId])
flavors = []
unless @record.ext_management_system.nil?
@record.ext_management_system.flavors.each do |ems_flavor|
Expand All @@ -96,9 +110,14 @@ def resize_form_fields
end
end
end
render :json => {
resize_values = {
:flavors => flavors
}
unless @request_id == 'new'
@req = MiqRequest.find_by(:id => @request_id)
resize_values[:flavor_id] = @req.options[:instance_type].to_i
end
render :json => resize_values
end
end
end
Expand Down
2 changes: 1 addition & 1 deletion app/views/miq_request/_reconfigure_show.html.haml
Expand Up @@ -72,4 +72,4 @@
- if @view
- @embedded = true
- @gtl_type = "list"
= render :partial => "layouts/gtl"
= render :partial => "layouts/gtl", :locals => {:no_flash_div => true}
6 changes: 4 additions & 2 deletions app/views/vm_common/_resize.html.haml
@@ -1,6 +1,7 @@
%form#form_div{"name" => "angularForm",
"ng-controller" => "vmCloudResizeFormController as vm",
"miq-form" => true,
"form-changed" => '',
"model" => "vm.vmCloudModel",
"model-copy" => "vm.modelCopy"}
= render :partial => "layouts/flash_msg"
Expand All @@ -18,7 +19,7 @@
.col-md-8
%select{:name => 'flavor_id',
'ng-model' => 'vm.vmCloudModel.flavor_id',
'ng-options' => 'flavor.id as flavor.name for flavor in vm.flavors track by flavor.id',
'ng-options' => 'flavor.id as flavor.name for flavor in vm.flavors',
:miqrequired => true,
:checkchange => true}
Expand All @@ -40,5 +41,6 @@
"ng-click" => "cancelClicked()")
:javascript
ManageIQ.angular.app.value('vmCloudResizeFormId', '#{@record.id}');
ManageIQ.angular.app.value('vmCloudResizeFormId', '#{@request_id || "new"}');
ManageIQ.angular.app.value('objectId', '#{@record.id}');
miq_bootstrap('#form_div');
2 changes: 1 addition & 1 deletion spec/controllers/vm_cloud_controller_spec.rb
Expand Up @@ -87,7 +87,7 @@
expect(VmCloudReconfigureRequest).to receive(:make_request)
post :resize_vm, :params => {
:button => 'submit',
:id => vm_openstack.id,
:objectId => vm_openstack.id,
:flavor_id => flavor.id
}
expect(response.status).to eq(200)
Expand Down
Expand Up @@ -18,6 +18,7 @@ describe('vmCloudResizeFormController', function() {
$scope: $scope,
miqService: miqService,
vmCloudResizeFormId: 1000000000001,
objectId: 1000000000001,
});
}));

Expand All @@ -30,7 +31,8 @@ describe('vmCloudResizeFormController', function() {
setTimeout(function() {
expect(miqService.miqAjaxButton).toHaveBeenCalledWith(
'/vm_cloud/resize_vm/1000000000001?button=submit',
vm.vmCloudModel
{objectId: vm.objectId,
flavor_id: vm.vmCloudModel.flavor_id}
);
done();
});
Expand All @@ -47,7 +49,7 @@ describe('vmCloudResizeFormController', function() {

it('delegates to miqService.miqAjaxButton', function(done) {
setTimeout(function() {
expect(miqService.miqAjaxButton).toHaveBeenCalledWith('/vm_cloud/resize_vm/1000000000001?button=cancel');
expect(miqService.miqAjaxButton).toHaveBeenCalledWith('/vm_cloud/resize_vm/1000000000001?button=cancel', {objectId: vm.objectId});
done();
});
});
Expand Down

0 comments on commit 62f7d48

Please sign in to comment.