mirror of
https://github.com/ansible/awx.git
synced 2026-01-16 20:30:46 -03:30
Insights Cred on Project form, for insights project
This commit is contained in:
parent
bf52141f4f
commit
38ce6c7226
@ -4,8 +4,8 @@
|
||||
* All Rights Reserved
|
||||
*************************************************/
|
||||
|
||||
export default [ 'InsightsData', '$scope', 'moment', '$state',
|
||||
function (data, $scope, moment, $state) {
|
||||
export default [ 'InsightsData', '$scope', 'moment', '$state', 'resourceData',
|
||||
function (data, $scope, moment, $state, resourceData) {
|
||||
|
||||
function init() {
|
||||
|
||||
@ -20,6 +20,8 @@ function (data, $scope, moment, $state) {
|
||||
$scope.low_count = _.filter($scope.reports_dataset.reports, (report) => {return report.rule.severity === "INFO"; }).length;
|
||||
let a = moment(), b = moment($scope.reports_dataset.last_check_in);
|
||||
$scope.last_check_in = a.diff(b, 'hours');
|
||||
$scope.inventory = resourceData.data;
|
||||
$scope.insights_credential = resourceData.data.summary_fields.insights_credential.id;
|
||||
}
|
||||
|
||||
init();
|
||||
@ -75,8 +77,8 @@ function (data, $scope, moment, $state) {
|
||||
$scope.viewDataInInsights = function(){
|
||||
window.open(`https://access.redhat.com/insights/inventory?machine=${$scope.$parent.host.insights_system_id}`, '_blank');
|
||||
};
|
||||
$scope.remediateInventory = function(){
|
||||
$state.go('templates.addJobTemplate');
|
||||
$scope.remediateInventory = function(inv_id, inv_name, insights_credential){
|
||||
$state.go('templates.addJobTemplate', {inventory_id: inv_id, inventory_name:inv_name, credential_id: insights_credential});
|
||||
};
|
||||
$scope.formCancel = function(){
|
||||
$state.go('inventories', null, {reload: true});
|
||||
|
||||
@ -76,6 +76,6 @@
|
||||
|
||||
<div class="buttons Form-buttons">
|
||||
<button type="button" class="btn btn-sm Form-primaryButton" ng-click="viewDataInInsights()"> <i class="fa fa-sign-out"></i> VIEW DATA IN INSIGHTS</button>
|
||||
<button type="button" class="btn btn-sm Form-primaryButton" ng-click="remediateInventory()"> REMEDIATE INVENTORY</button>
|
||||
<button type="button" class="btn btn-sm Form-primaryButton" ng-click="remediateInventory(inventory.id, inventory.name, insights_credential)"> REMEDIATE INVENTORY</button>
|
||||
<button type="button" class="btn btn-sm Form-cancelButton" ng-click="formCancel()"> Close</button>
|
||||
</div>
|
||||
|
||||
@ -91,8 +91,8 @@ function InventoriesEdit($scope, $location,
|
||||
$state.go('inventories');
|
||||
};
|
||||
|
||||
$scope.remediateInventory = function(){
|
||||
$state.go('templates.addJobTemplate');
|
||||
$scope.remediateInventory = function(inv_id, inv_name, insights_credential){
|
||||
$state.go('templates.addJobTemplate', {inventory_id: inv_id, inventory_name:inv_name, credential_id: insights_credential});
|
||||
};
|
||||
|
||||
}
|
||||
|
||||
@ -191,7 +191,7 @@ function(i18n, InventoryCompletedJobsList) {
|
||||
},
|
||||
relatedButtons: {
|
||||
remediate_inventory: {
|
||||
ngClick: 'remediateInventory()',
|
||||
ngClick: 'remediateInventory(id, name, insights_credential)',
|
||||
ngShow: 'insights_credential!==null',
|
||||
label: i18n._('Remediate Inventory'),
|
||||
class: 'Form-primaryButton'
|
||||
|
||||
@ -121,6 +121,7 @@ export default ['$scope', '$location', '$stateParams', 'GenerateForm',
|
||||
if ($scope.scm_type.value) {
|
||||
switch ($scope.scm_type.value) {
|
||||
case 'git':
|
||||
$scope.credentialLabel = "SCM Credential";
|
||||
$scope.urlPopover = '<p>' +
|
||||
i18n._('Example URLs for GIT SCM include:') +
|
||||
'</p><ul class=\"no-bullets\"><li>https://github.com/ansible/ansible.git</li>' +
|
||||
@ -130,11 +131,13 @@ export default ['$scope', '$location', '$stateParams', 'GenerateForm',
|
||||
'SSH. GIT read only protocol (git://) does not use username or password information.'), '<strong>', '</strong>');
|
||||
break;
|
||||
case 'svn':
|
||||
$scope.credentialLabel = "SCM Credential";
|
||||
$scope.urlPopover = '<p>' + i18n._('Example URLs for Subversion SCM include:') + '</p>' +
|
||||
'<ul class=\"no-bullets\"><li>https://github.com/ansible/ansible</li><li>svn://servername.example.com/path</li>' +
|
||||
'<li>svn+ssh://servername.example.com/path</li></ul>';
|
||||
break;
|
||||
case 'hg':
|
||||
$scope.credentialLabel = "SCM Credential";
|
||||
$scope.urlPopover = '<p>' + i18n._('Example URLs for Mercurial SCM include:') + '</p>' +
|
||||
'<ul class=\"no-bullets\"><li>https://bitbucket.org/username/project</li><li>ssh://hg@bitbucket.org/username/project</li>' +
|
||||
'<li>ssh://server.example.com/path</li></ul>' +
|
||||
@ -142,7 +145,14 @@ export default ['$scope', '$location', '$stateParams', 'GenerateForm',
|
||||
'Do not put the username and key in the URL. ' +
|
||||
'If using Bitbucket and SSH, do not supply your Bitbucket username.'), '<strong>', '</strong>');
|
||||
break;
|
||||
case 'insights':
|
||||
$scope.pathRequired = false;
|
||||
$scope.scmRequired = false;
|
||||
$scope.credRequired = true;
|
||||
$scope.credentialLabel = "Credential";
|
||||
break;
|
||||
default:
|
||||
$scope.credentialLabel = "SCM Credential";
|
||||
$scope.urlPopover = '<p> ' + i18n._('URL popover text');
|
||||
}
|
||||
}
|
||||
@ -151,5 +161,15 @@ export default ['$scope', '$location', '$stateParams', 'GenerateForm',
|
||||
$scope.formCancel = function() {
|
||||
$state.go('projects');
|
||||
};
|
||||
$scope.lookupCredential = function(){
|
||||
let credType = ($scope.scm_type.value === "insights") ? 13 : 2; //insights cred type is 13, SCM is 2
|
||||
$state.go('.credential', {
|
||||
credential_search: {
|
||||
credential_type: credType,
|
||||
page_size: '5',
|
||||
page: '1'
|
||||
}
|
||||
});
|
||||
};
|
||||
}
|
||||
];
|
||||
|
||||
@ -254,6 +254,7 @@ export default ['$scope', '$rootScope', '$stateParams', 'ProjectsForm', 'Rest',
|
||||
if ($scope.scm_type.value) {
|
||||
switch ($scope.scm_type.value) {
|
||||
case 'git':
|
||||
$scope.credentialLabel = "SCM Credential";
|
||||
$scope.urlPopover = '<p>' + i18n._('Example URLs for GIT SCM include:') + '</p><ul class=\"no-bullets\"><li>https://github.com/ansible/ansible.git</li>' +
|
||||
'<li>git@github.com:ansible/ansible.git</li><li>git://servername.example.com/ansible.git</li></ul>' +
|
||||
'<p>' + i18n.sprintf(i18n._('%sNote:%s When using SSH protocol for GitHub or Bitbucket, enter an SSH key only, ' +
|
||||
@ -261,11 +262,13 @@ export default ['$scope', '$rootScope', '$stateParams', 'ProjectsForm', 'Rest',
|
||||
'SSH. GIT read only protocol (git://) does not use username or password information.'), '<strong>', '</strong>');
|
||||
break;
|
||||
case 'svn':
|
||||
$scope.credentialLabel = "SCM Credential";
|
||||
$scope.urlPopover = '<p>' + i18n._('Example URLs for Subversion SCM include:') + '</p>' +
|
||||
'<ul class=\"no-bullets\"><li>https://github.com/ansible/ansible</li><li>svn://servername.example.com/path</li>' +
|
||||
'<li>svn+ssh://servername.example.com/path</li></ul>';
|
||||
break;
|
||||
case 'hg':
|
||||
$scope.credentialLabel = "SCM Credential";
|
||||
$scope.urlPopover = '<p>' + i18n._('Example URLs for Mercurial SCM include:') + '</p>' +
|
||||
'<ul class=\"no-bullets\"><li>https://bitbucket.org/username/project</li><li>ssh://hg@bitbucket.org/username/project</li>' +
|
||||
'<li>ssh://server.example.com/path</li></ul>' +
|
||||
@ -273,12 +276,30 @@ export default ['$scope', '$rootScope', '$stateParams', 'ProjectsForm', 'Rest',
|
||||
'Do not put the username and key in the URL. ' +
|
||||
'If using Bitbucket and SSH, do not supply your Bitbucket username.'), '<strong>', '</strong>');
|
||||
break;
|
||||
case 'insights':
|
||||
$scope.pathRequired = false;
|
||||
$scope.scmRequired = false;
|
||||
$scope.credRequired = true;
|
||||
$scope.credentialLabel = "Credential";
|
||||
break;
|
||||
default:
|
||||
$scope.credentialLabel = "SCM Credential";
|
||||
$scope.urlPopover = '<p> ' + i18n._('URL popover text');
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
$scope.lookupCredential = function(){
|
||||
let credType = ($scope.scm_type.value === "insights") ? 13 : 2; //insights cred type is 13, SCM is 2
|
||||
$state.go('.credential', {
|
||||
credential_search: {
|
||||
credential_type: credType,
|
||||
page_size: '5',
|
||||
page: '1'
|
||||
}
|
||||
});
|
||||
};
|
||||
|
||||
$scope.SCMUpdate = function() {
|
||||
if ($scope.project_obj.scm_type === "Manual" || Empty($scope.project_obj.scm_type)) {
|
||||
// ignore
|
||||
|
||||
@ -131,9 +131,10 @@ export default ['i18n', 'NotificationsList', function(i18n, NotificationsList) {
|
||||
basePath: 'credentials',
|
||||
list: 'CredentialList',
|
||||
// apply a default search filter to show only scm credentials
|
||||
search: {
|
||||
kind: 'scm'
|
||||
},
|
||||
// search: {
|
||||
// kind: 'scm'
|
||||
// },
|
||||
ngClick: 'lookupCredential()',
|
||||
autopopulateLookup: false,
|
||||
awRequiredWhen: {
|
||||
reqExpression: "credRequired",
|
||||
|
||||
@ -9,13 +9,13 @@
|
||||
'$stateParams', 'JobTemplateForm', 'GenerateForm', 'Rest', 'Alert',
|
||||
'ProcessErrors', 'ClearScope', 'GetBasePath', 'md5Setup', 'ParseTypeChange', 'Wait',
|
||||
'Empty', 'ToJSON', 'CallbackHelpInit', 'GetChoices', '$state',
|
||||
'CreateSelect2', '$q', 'i18n',
|
||||
'CreateSelect2', '$q', 'i18n', 'Inventory', 'Project',
|
||||
function(
|
||||
$filter, $scope,
|
||||
$stateParams, JobTemplateForm, GenerateForm, Rest, Alert,
|
||||
ProcessErrors, ClearScope, GetBasePath, md5Setup, ParseTypeChange, Wait,
|
||||
Empty, ToJSON, CallbackHelpInit, GetChoices,
|
||||
$state, CreateSelect2, $q, i18n
|
||||
$state, CreateSelect2, $q, i18n, Inventory, Project
|
||||
) {
|
||||
|
||||
Rest.setUrl(GetBasePath('job_templates'));
|
||||
@ -80,24 +80,6 @@
|
||||
}
|
||||
$scope.job_type = $scope.job_type_options[form.fields.job_type.default];
|
||||
|
||||
// if you're getting to the form from the scan job section on inventories,
|
||||
// set the job type select to be scan
|
||||
if ($stateParams.inventory_id) {
|
||||
// This means that the job template form was accessed via inventory prop's
|
||||
// This also means the job is a scan job.
|
||||
$scope.job_type.value = 'scan';
|
||||
$scope.jobTypeChange();
|
||||
$scope.inventory = $stateParams.inventory_id;
|
||||
Rest.setUrl(GetBasePath('inventory') + $stateParams.inventory_id + '/');
|
||||
Rest.get()
|
||||
.success(function (data) {
|
||||
$scope.inventory_name = data.name;
|
||||
})
|
||||
.error(function (data, status) {
|
||||
ProcessErrors($scope, data, status, form, { hdr: 'Error!',
|
||||
msg: 'Failed to lookup inventory: ' + data.id + '. GET returned status: ' + status });
|
||||
});
|
||||
}
|
||||
CreateSelect2({
|
||||
element:'#job_template_job_type',
|
||||
multiple: false
|
||||
@ -254,6 +236,17 @@
|
||||
}
|
||||
};
|
||||
|
||||
if(Inventory){
|
||||
$scope.inventory = Inventory.inventory_id;
|
||||
$scope.inventory_name = Inventory.inventory_name;
|
||||
}
|
||||
if(Project){
|
||||
$scope.project = Project.id;
|
||||
$scope.project_name = Project.name;
|
||||
selectPlaybook('force_load');
|
||||
checkSCMStatus();
|
||||
}
|
||||
|
||||
// Register a watcher on project_name
|
||||
if ($scope.selectPlaybookUnregister) {
|
||||
$scope.selectPlaybookUnregister();
|
||||
|
||||
@ -52,11 +52,41 @@ angular.module('templates', [surveyMaker.name, templatesList.name, jobTemplatesA
|
||||
|
||||
addJobTemplate = stateDefinitions.generateTree({
|
||||
name: 'templates.addJobTemplate',
|
||||
url: '/add_job_template',
|
||||
url: '/add_job_template?inventory_id&inventory_name&credential_id',
|
||||
modes: ['add'],
|
||||
form: 'JobTemplateForm',
|
||||
controllers: {
|
||||
add: 'JobTemplateAdd'
|
||||
},
|
||||
resolve: {
|
||||
add: {
|
||||
Inventory: ['$stateParams',
|
||||
function($stateParams){
|
||||
if($stateParams.inventory_id){
|
||||
let obj = {};
|
||||
obj.inventory_id = Number($stateParams.inventory_id);
|
||||
obj.inventory_name = $stateParams.inventory_name;
|
||||
return obj;
|
||||
}
|
||||
}],
|
||||
Project: ['$stateParams', 'Rest', 'GetBasePath', 'ProcessErrors',
|
||||
function($stateParams, Rest, GetBasePath, ProcessErrors){
|
||||
if($stateParams.credential_id){
|
||||
let path = `${GetBasePath('projects')}?credential__id=${Number($stateParams.credential_id)}`;
|
||||
Rest.setUrl(path);
|
||||
return Rest.get().
|
||||
then(function(data){
|
||||
return data.data.results[0];
|
||||
}).catch(function(response) {
|
||||
ProcessErrors(null, response.data, response.status, null, {
|
||||
hdr: 'Error!',
|
||||
msg: 'Failed to get project info. GET returned status: ' +
|
||||
response.status
|
||||
});
|
||||
});
|
||||
}
|
||||
}]
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user