Skip to content

Commit

Permalink
Merge pull request ManageIQ#2828 from gildub/subnet-component
Browse files Browse the repository at this point in the history
CloudSubnet: Convert Controller to Component
  • Loading branch information
himdel authored Jul 18, 2018
2 parents f5bb7d0 + fd10dfb commit b7d8024
Show file tree
Hide file tree
Showing 9 changed files with 358 additions and 274 deletions.
Original file line number Diff line number Diff line change
@@ -0,0 +1,86 @@
ManageIQ.angular.app.component('cloudSubnetForm', {
bindings: {
cloudSubnetFormId: '@',
},
controllerAs: 'vm',
controller: cloudSubnetFormController,
templateUrl: '/static/cloud_subnet/cloud-subnet-form.html.haml',
});

cloudSubnetFormController.$inject = ['API', 'miqService'];

function cloudSubnetFormController(API, miqService) {
var vm = this;

this.$onInit = function() {
vm.afterGet = false;

vm.cloudSubnetModel = { name: '' };
vm.networkProtocols = ['ipv4', 'ipv6'];

vm.formId = vm.cloudSubnetFormId;
vm.model = 'cloudSubnetModel';
ManageIQ.angular.scope = vm;
vm.saveable = miqService.saveable;

vm.newRecord = vm.cloudSubnetFormId === 'new';

miqService.sparkleOn();
if (vm.newRecord) {
vm.cloudSubnetModel.ems_id = '';
vm.cloudSubnetModel.network_id = '';
vm.cloudSubnetModel.dhcp_enabled = true;
vm.cloudSubnetModel.network_protocol = 'ipv4';
API.get("/api/providers?expand=resources&attributes=name&filter[]=type='*NetworkManager'").then(function(data) {
vm.available_ems = data.resources;
vm.afterGet = true;
vm.modelCopy = angular.copy( vm.cloudSubnetModel );
miqService.sparkleOff();
}).catch(miqService.handleFailure);
} else {
API.get("/api/cloud_subnets/" + vm.cloudSubnetFormId + "?expand=resources&attributes=ext_management_system.name,cloud_tenant.name,cloud_network.name").then(function(data) {
Object.assign(vm.cloudSubnetModel, _.pick(data, 'name', 'ext_management_system', 'cloud_network', 'cloud_tenant', 'network_protocol', 'cidr', 'dhcp_enabled', 'gateway'));
vm.afterGet = true;
vm.modelCopy = angular.copy( vm.cloudSubnetModel );
miqService.sparkleOff();
}).catch(miqService.handleFailure);
}
};

vm.addClicked = function() {
var url = 'create/new?button=add';
miqService.miqAjaxButton(url, vm.cloudSubnetModel, { complete: false });
};

vm.cancelClicked = function() {
var url = '';
if (vm.newRecord) {
url = '/cloud_subnet/create/new?button=cancel';
} else {
url = '/cloud_subnet/update/' + vm.cloudSubnetFormId + '?button=cancel';
}
miqService.miqAjaxButton(url);
};

vm.saveClicked = function() {
var url = '/cloud_subnet/update/' + vm.cloudSubnetFormId + '?button=save';
miqService.miqAjaxButton(url, vm.cloudSubnetModel, { complete: false });
};

vm.resetClicked = function(angularForm) {
vm.cloudSubnetModel = angular.copy( vm.modelCopy );
angularForm.$setPristine(true);
miqService.miqFlash("warn", _('All changes have been reset'));
};

vm.filterNetworkManagerChanged = function(id) {
if (id) {
API.get("/api/cloud_networks?expand=resources&attributes=name,ems_ref&filter[]=ems_id=" + id).then(function(data) {
vm.available_networks = data.resources;
}).catch(miqService.handleFailure);
miqService.getProviderTenants(function(data) {
vm.available_tenants = data.resources;
})(id);
}
};
}

This file was deleted.

19 changes: 8 additions & 11 deletions app/controllers/cloud_subnet_controller.rb
Original file line number Diff line number Diff line change
Expand Up @@ -47,12 +47,8 @@ def new
assert_privileges("cloud_tenant_show_list")
assert_privileges("cloud_network_show_list")

@subnet = CloudSubnet.new
@in_a_form = true
drop_breadcrumb(
:name => _("Add New Subnet"),
:url => "/cloud_subnet/new"
)
drop_breadcrumb(:name => _("Add New Subnet"), :url => "/cloud_subnet/new")
end

def create
Expand Down Expand Up @@ -153,13 +149,13 @@ def edit
def update
assert_privileges("cloud_subnet_edit")
@subnet = find_record_with_rbac(CloudSubnet, params[:id])
options = changed_form_params
case params[:button]
when "cancel"
cancel_action(_("Edit of Subnet \"%{name}\" was cancelled by the user") % {:name => @subnet.name})

when "save"
if @subnet.supports_create?
options = changed_form_params
task_id = @subnet.update_cloud_subnet_queue(session[:userid], options)

if task_id.kind_of?(Integer)
Expand Down Expand Up @@ -213,14 +209,15 @@ def switch_to_bol(option)
end

def changed_form_params
# Fields allowed for update are: name, enable_dhcp, dns_nameservers, allocation_pools, host_routes, gateway_ip
# Allowed fields for update: name, enable_dhcp, dns_nameservers, allocation_pools, host_routes, gateway_ip
options = {}
options[:name] = params[:name] unless @subnet.name == params[:name]

# A gateway address is automatically assigned by Openstack when gateway is null
# Provider to automatically assign gateway address unless provided
unless @subnet.gateway == params[:gateway]
options[:gateway_ip] = params[:gateway].blank? ? nil : params[:gateway]
end

unless @subnet.dhcp_enabled == switch_to_bol(params[:dhcp_enabled])
options[:enable_dhcp] = switch_to_bol(params[:dhcp_enabled])
end
Expand All @@ -235,15 +232,15 @@ def new_form_params
options[:name] = params[:name] if params[:name]
options[:ems_id] = params[:ems_id] if params[:ems_id]
options[:cidr] = params[:cidr] if params[:cidr]
# An address is automatically assigned by Openstack when gateway is null
# Provider to automatically assign gateway address unless provided
if params[:gateway]
options[:gateway_ip] = params[:gateway].blank? ? nil : params[:gateway]
end
options[:ip_version] = params[:network_protocol] =~ /4/ ? 4 : 6
options[:cloud_tenant] = find_record_with_rbac(CloudTenant, params[:cloud_tenant_id]) if params[:cloud_tenant_id]
options[:cloud_tenant] = find_record_with_rbac(CloudTenant, params[:cloud_tenant][:id]) if params[:cloud_tenant][:id]
options[:network_id] = params[:network_id] if params[:network_id]
options[:enable_dhcp] = params[:dhcp_enabled]
# TODO: Add extra fields
# TODO: Add dns_nameservers, allocation_pools, host_routes
options[:availability_zone_id] = params[:availability_zone_id] if params[:availability_zone_id]
if params[:ipv6_router_advertisement_mode]
options[:ipv6_router_advertisement_mode] = params[:ipv6_router_advertisement_mode]
Expand Down
53 changes: 0 additions & 53 deletions app/views/cloud_subnet/_common_new_edit.haml

This file was deleted.

53 changes: 4 additions & 49 deletions app/views/cloud_subnet/edit.html.haml
Original file line number Diff line number Diff line change
@@ -1,51 +1,6 @@
%form#form_div{"name" => "angularForm",
"form-changed" => true,
"miq-form" => true,
"model" => "vm.cloudSubnetModel",
"model-copy" => "vm.modelCopy",
"ng-cloak" => "",
"ng-controller" => "cloudSubnetFormController as vm",
"ng-show" => "vm.afterGet"}
= render :partial => "layouts/flash_msg"
%h3
= _('Network Provider')
.form-horizontal
.form-group
%label.col-md-2.control-label
= _('Network Manager')
.col-md-8
%input.form-control{"type" => "text",
"name" => "ems_name",
"ng-model" => "vm.cloudSubnetModel.ems_name",
"ng-maxlength" => 128,
"readonly" => true}
%h3
= _('Placement')
.form-horizontal
.form-group
%label.col-md-2.control-label
= _('Cloud Tenant')
.col-md-8
%input.form-control{"type" => "text",
"name" => "tenant_name",
"ng-model" => "vm.cloudSubnetModel.tenant_name",
"ng-maxlength" => 128,
"readonly" => true}
%h3
= _('Cloud Subnet details')
.form-horizontal
.form-group
%label.col-md-2.control-label
= _('Network')
.col-md-8
%input.form-control{"type" => "text",
"name" => "network_name",
"ng-model" => "vm.cloudSubnetModel.network_name",
"ng-maxlength" => 128,
"readonly" => true}
= render :partial => "common_new_edit"
= render :partial => "layouts/angular/generic_form_buttons"
= render :partial => "layouts/flash_msg"

%cloud-subnet-form{'cloud-subnet-form-id' => @subnet.id}

:javascript
ManageIQ.angular.app.value('cloudSubnetFormId', '#{@subnet.id}');
miq_bootstrap('#form_div');
miq_bootstrap('cloud-subnet-form');
Loading

0 comments on commit b7d8024

Please sign in to comment.