Skip to content

Commit

Permalink
Merge remote-tracking branch 'upstreamMIQ/master' into physical_serve…
Browse files Browse the repository at this point in the history
…r_quadicon
  • Loading branch information
MaysaMacedo committed May 8, 2017
2 parents 39a8a8a + 91a9c32 commit 18cfa2a
Show file tree
Hide file tree
Showing 272 changed files with 6,375 additions and 5,402 deletions.
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
.bundle/
.yardoc
yarn.lock
Gemfile.lock
Gemfile.dev.rb
_yardoc/
Expand Down
3 changes: 2 additions & 1 deletion .travis.yml
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
language: ruby
rvm:
- '2.3.1'
- '2.3.3'
- '2.4.1'
sudo: false
cache:
bundler: true
Expand Down
13 changes: 13 additions & 0 deletions app/assets/images/svg/healthstate-critical.svg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
24 changes: 24 additions & 0 deletions app/assets/images/svg/healthstate-normal.svg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
13 changes: 13 additions & 0 deletions app/assets/images/svg/healthstate-unknown.svg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
11 changes: 11 additions & 0 deletions app/assets/javascripts/angular_modules/module_report_data.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
miqHttpInject(
angular.module('ManageIQ.report_data', [
'miqStaticAssets', 'ui.bootstrap', 'patternfly.views',
])
.config(['$locationProvider', function($locationProvider) {
$locationProvider.html5Mode({
enabled: true,
requireBase: false,
});
}])
);
27 changes: 25 additions & 2 deletions app/assets/javascripts/components/ansible-credential-options.js
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,10 @@ ManageIQ.angular.app.component('ansibleCredentialOptions', {
model: '=',
options: '<',
type: '<',
newRecord: '<',
reset: '=',
deleteFromModel: '=',
storedPasswordPlaceholder: '<',
},

controllerAs: 'vm',
Expand All @@ -21,6 +25,21 @@ ManageIQ.angular.app.component('ansibleCredentialOptions', {
this.$onChanges = function(changes) {
this.setOptions();
};

this.updatePassword = function(name) {
this[name] = true;
this.model[name] = '';
// The temp variable is required to make the form dirty and enable Save button
this.model[name + '_temp'] = this.storedPasswordPlaceholder;
this.deleteFromModel.push(name + '_temp');
$scope.$broadcast('reactiveFocus');
};

this.cancelPassword = function(name) {
this[name] = false;
this.model[name] = undefined;
this.model[name + '_temp'] = undefined;
};
}],

template: [
Expand All @@ -31,9 +50,13 @@ ManageIQ.angular.app.component('ansibleCredentialOptions', {
'<div ng-switch="attr.type" class="text">',
// password or ssh input (must be textarea to prevent EOL getting lost)
'<div ng-switch-when="password" class="col-md-8">',
'<input ng-if="!attr.multiline" type="password" class="form-control" title="{{ __(attr.help_text) }}" ng-model="vm.model[name]">',
'<textarea ng-if="attr.multiline" class="form-control" title="{{ __(attr.help_text) }}" ng-model="vm.model[name]"></textarea>',
'<input ng-if="!attr.multiline" type="password" value="{{vm.storedPasswordPlaceholder}}" class="form-control" title="{{ __(attr.help_text) }}" ng-disabled="true" ng-hide="vm[name] || vm.newRecord">',
'<textarea ng-if="attr.multiline" class="form-control" title="{{ __(attr.help_text) }}" ng-disabled="true" ng-hide="vm[name] || vm.newRecord">{{vm.storedPasswordPlaceholder}}</textarea>',
'<input ng-if="!attr.multiline" type="password" class="form-control" title="{{ __(attr.help_text) }}" ng-hide="!vm[name] && !vm.newRecord" auto-focus="reactiveFocus" ng-model="vm.model[name]">',
'<textarea ng-if="attr.multiline" class="form-control" title="{{ __(attr.help_text) }}" ng-hide="!vm[name] && !vm.newRecord" auto-focus="reactiveFocus" ng-model="vm.model[name]"></textarea>',
'</div>',
'<a href="" ng-switch-when="password" adjust-on-reset="{{name}}" ng-hide="vm[name] || vm.newRecord" ng-click="vm.updatePassword(name)">{{__("Update")}}</a>',
'<a href="" ng-switch-when="password" ng-hide="!vm[name] || vm.newRecord" ng-click="vm.cancelPassword(name)">{{__("Cancel")}}</a>',
// select
'<div ng-switch-when="choice" class="col-md-8">',
'<select pf-select ng-options="opt as opt for opt in attr.choices" class="form-control" ng-model="vm.model[name]" />',
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -14,13 +14,16 @@ ManageIQ.angular.app.controller('ansibleCredentialsFormController', ['$window',

vm.credential_options = {};
vm.select_options = [];
vm.deleteFromModel = [];

vm.newRecord = credentialId === 'new';
vm.afterGet = false;
vm.model = 'credentialModel';
ManageIQ.angular.scope = vm;
vm.saveable = miqService.saveable;

vm.storedPasswordPlaceholder = miqService.storedPasswordPlaceholder;

miqService.sparkleOn();

// get credential specific options for all supported credential types
Expand Down Expand Up @@ -58,11 +61,12 @@ ManageIQ.angular.app.controller('ansibleCredentialsFormController', ['$window',
vm.resetClicked = function(angularForm) {
vm.credentialModel = angular.copy( vm.modelCopy );
angularForm.$setPristine(true);
toggleResetFlag();
miqService.miqFlash("warn", __("All changes have been reset"));
};

vm.saveClicked = function(angularForm) {
API.put('/api/authentications/' + credentialId, vm.credentialModel)
API.put('/api/authentications/' + credentialId, purgeModel())
.then(getBack.bind(vm, sprintf(__("Modification of Credential \"%s\" has been successfully queued."), vm.credentialModel.name), false, false))
.catch(miqService.handleFailure);
};
Expand All @@ -73,6 +77,18 @@ ManageIQ.angular.app.controller('ansibleCredentialsFormController', ['$window',
.catch(miqService.handleFailure);
};

function purgeModel() {
return _.omit(vm.credentialModel, vm.deleteFromModel);
}

function toggleResetFlag() {
if (vm.reset) {
vm.reset = ! vm.reset;
} else {
vm.reset = true;
}
}

function retrievedCredentialDetails() {
vm.afterGet = true;
miqService.sparkleOff();
Expand All @@ -94,16 +110,21 @@ ManageIQ.angular.app.controller('ansibleCredentialsFormController', ['$window',
// we need to wait for vm.credential_options here
optionsPromise.then(function() {
// we need to merge options and vm.credentialModel
for (var opt in response.options) {
var item = vm.credential_options[vm.credentialModel.type]['attributes'][opt];
Object.keys(vm.credential_options[vm.credentialModel.type].attributes).forEach(function(key) {
var item = vm.credential_options[vm.credentialModel.type].attributes[key];

// void the password fields first
if (item.hasOwnProperty('type') && item['type'] === 'password') {
vm.credentialModel[opt] = '';
if (item.hasOwnProperty('type') && item.type === 'password') {
// Password fields do not get stored in the model
} else {
vm.credentialModel[opt] = response.options[opt];
vm.credentialModel[key] = '';

if (response.options[key]) {
vm.credentialModel[key] = response.options[key];
} else if (response[key]) {
vm.credentialModel[key] = response[key];
}
}
}
});

vm.modelCopy = angular.copy( vm.credentialModel );
});
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,7 @@ ManageIQ.angular.app.controller('repositoryFormController', ['$scope', 'reposito
scm_update_on_launch: false,
};

vm.attributes = ['name', 'description', 'scm_type', 'scm_url', 'authentication_id', 'scm_branch:', 'scm_clean', 'scm_delete_on_update', 'scm_update_on_launch'];
vm.model = 'repositoryModel';

ManageIQ.angular.scope = vm;
Expand All @@ -30,7 +31,7 @@ ManageIQ.angular.app.controller('repositoryFormController', ['$scope', 'reposito
.catch(miqService.handleFailure);

if (repositoryId !== 'new') {
API.get('/api/configuration_script_sources/' + repositoryId)
API.get('/api/configuration_script_sources/' + repositoryId + '?attributes=' + vm.attributes.join(','))
.then(getRepositoryFormData)
.catch(miqService.handleFailure);
} else {
Expand Down Expand Up @@ -79,6 +80,9 @@ ManageIQ.angular.app.controller('repositoryFormController', ['$scope', 'reposito

var getRepositoryFormData = function(response) {
var data = response;
if ( data.hasOwnProperty( 'href' ) ) {
delete data.href;
}
Object.assign(vm.repositoryModel, data);
setForm();
};
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,7 @@ ManageIQ.angular.app.controller('catalogItemFormController', ['$scope', 'catalog
provisioning_key: '',
provisioning_value: '',
provisioning_variables: {},
provisioning_become_enabled: false,
provisioning_editMode: false,
retirement_repository_id: '',
retirement_playbook_id: '',
Expand All @@ -33,6 +34,7 @@ ManageIQ.angular.app.controller('catalogItemFormController', ['$scope', 'catalog
retirement_value: '',
retirement_variables: {},
retirement_editMode: false,
retirement_become_enabled: false,
};
getRemoveResourcesTypes();
vm.provisioning_cloud_type = '';
Expand Down Expand Up @@ -112,6 +114,7 @@ ManageIQ.angular.app.controller('catalogItemFormController', ['$scope', 'catalog
vm.catalogItemModel.provisioning_dialog_name = configData.provision.new_dialog_name;
vm.catalogItemModel.provisioning_key = '';
vm.catalogItemModel.provisioning_value = '';
vm.catalogItemModel.provisioning_become_enabled = configData.provision.become_enabled
setExtraVars('provisioning_variables', configData.provision.extra_vars);

if (typeof configData.retirement.repository_id !== 'undefined') {
Expand All @@ -121,6 +124,7 @@ ManageIQ.angular.app.controller('catalogItemFormController', ['$scope', 'catalog
vm.catalogItemModel.retirement_remove_resources = configData.retirement.remove_resources;
vm.catalogItemModel.retirement_machine_credential_id = configData.retirement.credential_id;
}
vm.catalogItemModel.retirement_become_enabled = configData.retirement.become_enabled
vm.catalogItemModel.retirement_network_credential_id = configData.retirement.network_credential_id;
vm.catalogItemModel.retirement_cloud_credential_id = setIfDefined(configData.retirement.cloud_credential_id);
vm.catalogItemModel.retirement_inventory = configData.retirement.hosts;
Expand Down Expand Up @@ -205,7 +209,7 @@ ManageIQ.angular.app.controller('catalogItemFormController', ['$scope', 'catalog
}
}
}

catalog_item['config_info']['provision']['become_enabled'] = configData.provisioning_become_enabled;
if (configData.provisioning_network_credential_id !== '')
catalog_item['config_info']['provision']['network_credential_id'] = configData.provisioning_network_credential_id;

Expand All @@ -222,13 +226,16 @@ ManageIQ.angular.app.controller('catalogItemFormController', ['$scope', 'catalog
}

var retirement = catalog_item['config_info']['retirement'];
retirement['hosts'] = configData.retirement_inventory;
retirement['extra_vars'] = formatExtraVars(configData.retirement_variables);
if (vm.catalogItemModel.retirement_repository_id !== undefined && configData.retirement_repository_id !== '') {
retirement['repository_id'] = configData.retirement_repository_id;
retirement['playbook_id'] = configData.retirement_playbook_id;
retirement['credential_id'] = configData.retirement_machine_credential_id;
}
if (vm.catalogItemModel.retirement_playbook_id !== undefined && configData.retirement_playbook_id !== '') {
retirement['hosts'] = configData.retirement_inventory;
retirement['extra_vars'] = formatExtraVars(configData.retirement_variables);
catalog_item['config_info']['retirement']['become_enabled'] = configData.retirement_become_enabled;
}
if (configData.retirement_network_credential_id !== '')
catalog_item['config_info']['retirement']['network_credential_id'] = configData.retirement_network_credential_id;

Expand Down Expand Up @@ -425,6 +432,12 @@ ManageIQ.angular.app.controller('catalogItemFormController', ['$scope', 'catalog
return vm.catalogItemModel.retirement_repository_id !== '';
}

vm.retirement_playbook_selected = function(prefix) {
if (prefix === "provisioning")
return true;
return vm.catalogItemModel.retirement_playbook_id !== '';
}

vm.removeKeyValue = function(prefix, key) {
delete vm.catalogItemModel[prefix + "_variables"][key];
$scope.checkFormPristine();
Expand Down Expand Up @@ -513,6 +526,7 @@ ManageIQ.angular.app.controller('catalogItemFormController', ['$scope', 'catalog
vm.catalogItemModel.retirement_key = '';
vm.catalogItemModel.retirement_value = '';
vm.catalogItemModel.retirement_variables = angular.copy(vm.catalogItemModel.provisioning_variables);
getRemoveResourcesTypes();
$scope.checkFormPristine();
}

Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
ManageIQ.angular.app.controller('cloudNetworkFormController', ['$http', '$scope', 'cloudNetworkFormId', 'miqService', function($http, $scope, cloudNetworkFormId, miqService) {
ManageIQ.angular.app.controller('cloudNetworkFormController', ['$scope', 'cloudNetworkFormId', 'miqService', 'API', function($scope, cloudNetworkFormId, miqService, API) {
$scope.cloudNetworkModel = { name: '', ems_id: '', cloud_tenant_id: '', provider_network_type: '' };
$scope.formId = cloudNetworkFormId;
$scope.afterGet = false;
Expand All @@ -16,27 +16,20 @@ ManageIQ.angular.app.controller('cloudNetworkFormController', ['$http', '$scope'
$scope.cloudNetworkModel.vlan_transparent = false;
} else {
miqService.sparkleOn();

$http.get('/cloud_network/cloud_network_form_fields/' + cloudNetworkFormId)
.then(getCloudNetworkFormDataComplete)
.catch(miqService.handleFailure);
}

function getCloudNetworkFormDataComplete(response) {
var data = response.data;

$scope.afterGet = true;
$scope.cloudNetworkModel.name = data.name;
$scope.cloudNetworkModel.cloud_tenant_name = data.cloud_tenant_name;
$scope.cloudNetworkModel.enabled = data.enabled;
$scope.cloudNetworkModel.external_facing = data.external_facing;
$scope.cloudNetworkModel.port_security_enabled = data.port_security_enabled;
$scope.cloudNetworkModel.provider_network_type = data.provider_network_type;
$scope.cloudNetworkModel.qos_policy_id = data.qos_policy_id;
$scope.cloudNetworkModel.shared = data.shared;
$scope.cloudNetworkModel.vlan_transparent = data.vlan_transparent;
$scope.modelCopy = angular.copy( $scope.cloudNetworkModel );
miqService.sparkleOff();
API.get("/api/cloud_networks/" + cloudNetworkFormId + "?attributes=cloud_tenant").then(function(data) {
$scope.afterGet = true;
$scope.cloudNetworkModel.name = data.name;
$scope.cloudNetworkModel.cloud_tenant_name = data.cloud_tenant.name;
$scope.cloudNetworkModel.enabled = data.enabled;
$scope.cloudNetworkModel.external_facing = data.external_facing;
$scope.cloudNetworkModel.port_security_enabled = data.port_security_enabled;
$scope.cloudNetworkModel.provider_network_type = data.provider_network_type;
$scope.cloudNetworkModel.qos_policy_id = data.qos_policy_id;
$scope.cloudNetworkModel.shared = data.shared;
$scope.cloudNetworkModel.vlan_transparent = data.vlan_transparent;
$scope.modelCopy = angular.copy( $scope.cloudNetworkModel );
miqService.sparkleOff();
}).catch(miqService.handleFailure);
}

$scope.addClicked = function() {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@ ManageIQ.angular.app.controller('cloudTenantFormController', ['$http', '$scope',

if (cloudTenantFormId == 'new') {
$scope.cloudTenantModel.name = "";
$scope.newRecord = true;
} else {
miqService.sparkleOn();

Expand Down Expand Up @@ -36,12 +37,13 @@ ManageIQ.angular.app.controller('cloudTenantFormController', ['$http', '$scope',
miqService.miqAjaxButton(url);
};

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

$scope.saveClicked = function() {
if (cloudTenantFormId == 'new') {
var url = 'create/new' + '?button=add';
} else {
var url = '/cloud_tenant/update/' + cloudTenantFormId + '?button=save';
}
miqService.miqAjaxButton(url, $scope.cloudTenantModel, { complete: false });
};

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -195,7 +195,7 @@ ManageIQ.angular.app.controller('emsCommonFormController', ['$http', '$scope', '
$scope.emsCommonModel.service_account_auth_status = data.service_account_auth_status;
$scope.emsCommonModel.metrics_auth_status = true;
$scope.emsCommonModel.ssh_keypair_auth_status = true;
$scope.emsCommonModel.hawkular_auth_status = true;
$scope.emsCommonModel.hawkular_auth_status = data.hawkular_auth_status;
$scope.emsCommonModel.vmware_cloud_api_version = '9.0';
miqService.sparkleOff();

Expand Down
Loading

0 comments on commit 18cfa2a

Please sign in to comment.