mirror of
https://github.com/ansible/awx.git
synced 2026-05-23 16:47:45 -02:30
Get available modules from OPTIONS endpoint
This commit is contained in:
@@ -6,17 +6,24 @@
|
|||||||
|
|
||||||
export default
|
export default
|
||||||
[ 'factScanDataService',
|
[ 'factScanDataService',
|
||||||
|
'getModuleOptions',
|
||||||
'lodashAsPromised',
|
'lodashAsPromised',
|
||||||
function(factScanDataService, _) {
|
function(factScanDataService, getModuleOptions, _) {
|
||||||
return function(hostIds, moduleName, leftDate, rightDate) {
|
return function(hostIds, moduleName, leftDate, rightDate) {
|
||||||
|
|
||||||
|
var moduleOptions;
|
||||||
|
|
||||||
if (hostIds.length === 1) {
|
if (hostIds.length === 1) {
|
||||||
hostIds = hostIds.concat(hostIds[0]);
|
hostIds = hostIds.concat(hostIds[0]);
|
||||||
}
|
}
|
||||||
|
|
||||||
return _(hostIds)
|
return getModuleOptions(hostIds[0])
|
||||||
.promise()
|
.then(function(modules) {
|
||||||
.thenMap(function(hostId, index) {
|
moduleOptions = modules;
|
||||||
|
return modules;
|
||||||
|
}).then(function() {
|
||||||
|
return hostIds;
|
||||||
|
}).thenMap(function(hostId, index) {
|
||||||
var date = leftDate;
|
var date = leftDate;
|
||||||
var fetchScanNumber;
|
var fetchScanNumber;
|
||||||
|
|
||||||
@@ -42,6 +49,9 @@ export default
|
|||||||
.bind(factScanDataService);
|
.bind(factScanDataService);
|
||||||
|
|
||||||
return getHostFacts(params);
|
return getHostFacts(params);
|
||||||
|
}).then(function(hostFacts) {
|
||||||
|
hostFacts.moduleOptions = moduleOptions;
|
||||||
|
return hostFacts;
|
||||||
});
|
});
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -0,0 +1,56 @@
|
|||||||
|
var moduleConfig =
|
||||||
|
{ 'packages':
|
||||||
|
{ compareKey: ['release', 'version'],
|
||||||
|
nameKey: 'name',
|
||||||
|
displayType: 'flat'
|
||||||
|
},
|
||||||
|
'services':
|
||||||
|
{ compareKey: ['state', 'source'],
|
||||||
|
nameKey: 'name',
|
||||||
|
displayType: 'flat'
|
||||||
|
},
|
||||||
|
'files':
|
||||||
|
{ compareKey: ['size', 'mode', 'md5', 'mtime', 'gid', 'uid'],
|
||||||
|
nameKey: 'path',
|
||||||
|
displayType: 'flat'
|
||||||
|
},
|
||||||
|
'custom':
|
||||||
|
{ displayType: 'nested'
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
function makeModule(option) {
|
||||||
|
var name = option[0];
|
||||||
|
var displayName = option[1];
|
||||||
|
var config = moduleConfig.hasOwnProperty(name) ?
|
||||||
|
moduleConfig[name] : moduleConfig.custom;
|
||||||
|
|
||||||
|
return {
|
||||||
|
name: name,
|
||||||
|
displayName: displayName,
|
||||||
|
compareKey: config.compareKey,
|
||||||
|
nameKey: config.nameKey,
|
||||||
|
displayType: config.displayType
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
function factory(hostId, rest, getBasePath, _) {
|
||||||
|
var url = [ getBasePath('hosts') + hostId,
|
||||||
|
'fact_versions'
|
||||||
|
].join('/');
|
||||||
|
|
||||||
|
rest.setUrl(url);
|
||||||
|
return _(rest.options())
|
||||||
|
.then(function(response) {
|
||||||
|
return response.data.actions.GET.module.choices;
|
||||||
|
}).thenMap(makeModule);
|
||||||
|
}
|
||||||
|
|
||||||
|
export default
|
||||||
|
[ 'Rest',
|
||||||
|
'GetBasePath',
|
||||||
|
'lodashAsPromised',
|
||||||
|
function(rest, getBasePath, lodash) {
|
||||||
|
return _.partialRight(factory, rest, getBasePath, lodash);
|
||||||
|
}
|
||||||
|
];
|
||||||
@@ -7,6 +7,7 @@
|
|||||||
import route from './system-tracking.route';
|
import route from './system-tracking.route';
|
||||||
import factScanDataService from './data-services/fact-scan-data.service';
|
import factScanDataService from './data-services/fact-scan-data.service';
|
||||||
import getDataForComparison from './data-services/get-data-for-comparison.factory';
|
import getDataForComparison from './data-services/get-data-for-comparison.factory';
|
||||||
|
import getModuleOptions from './data-services/get-module-options.factory';
|
||||||
import controller from './system-tracking.controller';
|
import controller from './system-tracking.controller';
|
||||||
import stringOrDateFilter from './string-or-date.filter';
|
import stringOrDateFilter from './string-or-date.filter';
|
||||||
import shared from 'tower/shared/main';
|
import shared from 'tower/shared/main';
|
||||||
@@ -22,6 +23,7 @@ export default
|
|||||||
])
|
])
|
||||||
.service('factScanDataService', factScanDataService)
|
.service('factScanDataService', factScanDataService)
|
||||||
.factory('getDataForComparison', getDataForComparison)
|
.factory('getDataForComparison', getDataForComparison)
|
||||||
|
.factory('getModuleOptions', getModuleOptions)
|
||||||
.filter('stringOrDate', stringOrDateFilter)
|
.filter('stringOrDate', stringOrDateFilter)
|
||||||
.controller('systemTracking', controller)
|
.controller('systemTracking', controller)
|
||||||
.config(['$routeProvider', function($routeProvider) {
|
.config(['$routeProvider', function($routeProvider) {
|
||||||
|
|||||||
@@ -27,34 +27,7 @@ function controller($rootScope,
|
|||||||
$scope.factModulePickersLabelLeft = "Compare facts collected on";
|
$scope.factModulePickersLabelLeft = "Compare facts collected on";
|
||||||
$scope.factModulePickersLabelRight = "To facts collected on";
|
$scope.factModulePickersLabelRight = "To facts collected on";
|
||||||
|
|
||||||
$scope.modules =
|
$scope.modules = initialFactData.moduleOptions;
|
||||||
[{ name: 'packages',
|
|
||||||
displayName: 'Packages',
|
|
||||||
compareKey: ['release', 'version'],
|
|
||||||
nameKey: 'name',
|
|
||||||
isActive: true,
|
|
||||||
displayType: 'flat'
|
|
||||||
},
|
|
||||||
{ name: 'services',
|
|
||||||
compareKey: ['state', 'source'],
|
|
||||||
nameKey: 'name',
|
|
||||||
displayName: 'Services',
|
|
||||||
isActive: false,
|
|
||||||
displayType: 'flat'
|
|
||||||
},
|
|
||||||
{ name: 'files',
|
|
||||||
displayName: 'Files',
|
|
||||||
nameKey: 'path',
|
|
||||||
compareKey: ['size', 'mode', 'md5', 'mtime', 'gid', 'uid'],
|
|
||||||
isActive: false,
|
|
||||||
displayType: 'flat'
|
|
||||||
},
|
|
||||||
{ name: 'ansible',
|
|
||||||
displayName: 'Ansible',
|
|
||||||
isActive: false,
|
|
||||||
displayType: 'nested'
|
|
||||||
}
|
|
||||||
];
|
|
||||||
|
|
||||||
// Use this to determine how to orchestrate the services
|
// Use this to determine how to orchestrate the services
|
||||||
var viewType = hostIds.length > 1 ? 'multiHost' : 'singleHost';
|
var viewType = hostIds.length > 1 ? 'multiHost' : 'singleHost';
|
||||||
|
|||||||
Reference in New Issue
Block a user