mirror of
https://github.com/ZwareBear/awx.git
synced 2026-04-28 10:51:49 -05:00
379 lines
19 KiB
JavaScript
379 lines
19 KiB
JavaScript
/*************************************************
|
|
* Copyright (c) 2015 Ansible, Inc.
|
|
*
|
|
* All Rights Reserved
|
|
*************************************************/
|
|
|
|
import adhoc from './adhoc/main';
|
|
import host from './hosts/main';
|
|
import group from './groups/main';
|
|
import sources from './sources/main';
|
|
import relatedHost from './related-hosts/main';
|
|
import inventoryCompletedJobs from './completed_jobs/main';
|
|
import inventoryList from './list/main';
|
|
import hostGroups from './host-groups/main';
|
|
import { templateUrl } from '../shared/template-url/template-url.factory';
|
|
import { N_ } from '../i18n';
|
|
import InventoryList from './inventory.list';
|
|
import InventoryManageService from './inventory-manage.service';
|
|
import adHocRoute from './adhoc/adhoc.route';
|
|
import ansibleFacts from './ansible_facts/main';
|
|
import insights from './insights/main';
|
|
import { copyMoveGroupRoute, copyMoveHostRoute } from './copy-move/copy-move.route';
|
|
import copyMove from './copy-move/main';
|
|
import completedJobsRoute from './completed_jobs/completed_jobs.route';
|
|
import inventorySourceEditRoute from './sources/edit/sources-edit.route';
|
|
import inventorySourceEditNotificationsRoute from './sources/edit/sources-notifications.route';
|
|
import inventorySourceAddRoute from './sources/add/sources-add.route';
|
|
import inventorySourceListRoute from './sources/list/sources-list.route';
|
|
import inventorySourceListScheduleRoute from './sources/list/schedule/sources-schedule.route';
|
|
import inventorySourceListScheduleAddRoute from './sources/list/schedule/sources-schedule-add.route';
|
|
import inventorySourceListScheduleEditRoute from './sources/list/schedule/sources-schedule-edit.route';
|
|
import adhocCredentialRoute from './adhoc/adhoc-credential.route';
|
|
import inventoryGroupsList from './groups/list/groups-list.route';
|
|
import inventoryGroupsAdd from './groups/add/groups-add.route';
|
|
import inventoryGroupsEdit from './groups/edit/groups-edit.route';
|
|
import nestedGroups from './groups/nested-groups/nested-groups.route';
|
|
import nestedGroupsAdd from './groups/nested-groups/nested-groups-add.route';
|
|
import nestedHosts from './groups/nested-hosts/nested-hosts.route';
|
|
import inventoryHosts from './related-hosts/related-host.route';
|
|
import smartInventoryHosts from './smart-inventory/smart-inventory-hosts.route';
|
|
import inventoriesList from './inventories.route';
|
|
import inventoryHostsAdd from './related-hosts/add/host-add.route';
|
|
import inventoryHostsEdit from './related-hosts/edit/host-edit.route';
|
|
import nestedHostsAdd from './groups/nested-hosts/nested-hosts-add.route';
|
|
import nestedHostsEdit from './groups/nested-hosts/nested-hosts-edit.route';
|
|
import ansibleFactsRoute from './ansible_facts/ansible_facts.route';
|
|
import insightsRoute from './insights/insights.route';
|
|
import hostGroupsRoute from './host-groups/host-groups.route';
|
|
import hostGroupsAssociateRoute from './host-groups/host-groups-associate/host-groups-associate.route';
|
|
import inventorySourcesCredentialRoute from './sources/lookup/sources-lookup-credential.route';
|
|
import inventorySourcesInventoryScriptRoute from './sources/lookup/sources-lookup-inventory-script.route';
|
|
import inventorySourcesProjectRoute from './sources/lookup/sources-lookup-project.route';
|
|
import SmartInventory from './smart-inventory/main';
|
|
import StandardInventory from './standard/main';
|
|
|
|
export default
|
|
angular.module('inventory', [
|
|
adhoc.name,
|
|
host.name,
|
|
group.name,
|
|
sources.name,
|
|
relatedHost.name,
|
|
inventoryCompletedJobs.name,
|
|
inventoryList.name,
|
|
ansibleFacts.name,
|
|
insights.name,
|
|
copyMove.name,
|
|
hostGroups.name,
|
|
SmartInventory.name,
|
|
StandardInventory.name
|
|
])
|
|
.factory('InventoryList', InventoryList)
|
|
.service('InventoryManageService', InventoryManageService)
|
|
.config(['$stateProvider', 'stateDefinitionsProvider', '$stateExtenderProvider',
|
|
function($stateProvider, stateDefinitionsProvider, $stateExtenderProvider) {
|
|
let stateDefinitions = stateDefinitionsProvider.$get(),
|
|
stateExtender = $stateExtenderProvider.$get();
|
|
|
|
function generateInventoryStates() {
|
|
|
|
let standardInventoryAdd = stateDefinitions.generateTree({
|
|
name: 'inventories.add', // top-most node in the generated tree (will replace this state definition)
|
|
url: '/inventory/add',
|
|
modes: ['add'],
|
|
form: 'InventoryForm',
|
|
controllers: {
|
|
add: 'InventoryAddController'
|
|
},
|
|
resolve: {
|
|
add: {
|
|
canAdd: ['rbacUiControlService', '$state', function(rbacUiControlService, $state) {
|
|
return rbacUiControlService.canAdd('inventory')
|
|
.then(function(res) {
|
|
return res.canAdd;
|
|
})
|
|
.catch(function() {
|
|
$state.go('inventories');
|
|
});
|
|
}]
|
|
}
|
|
}
|
|
});
|
|
|
|
let standardInventoryEdit = stateDefinitions.generateTree({
|
|
name: 'inventories.edit',
|
|
url: '/inventory/:inventory_id',
|
|
modes: ['edit'],
|
|
form: 'InventoryForm',
|
|
controllers: {
|
|
edit: 'InventoryEditController'
|
|
},
|
|
breadcrumbs: {
|
|
edit: '{{breadcrumb.inventory_name}}'
|
|
},
|
|
data: {
|
|
activityStream: true,
|
|
activityStreamTarget: 'inventory'
|
|
}
|
|
});
|
|
|
|
let smartInventoryAdd = stateDefinitions.generateTree({
|
|
name: 'inventories.addSmartInventory', // top-most node in the generated tree (will replace this state definition)
|
|
url: '/smart/add?hostfilter',
|
|
modes: ['add'],
|
|
form: 'smartInventoryForm',
|
|
controllers: {
|
|
add: 'SmartInventoryAddController'
|
|
},
|
|
resolve: {
|
|
add: {
|
|
canAdd: ['rbacUiControlService', '$state', function(rbacUiControlService, $state) {
|
|
return rbacUiControlService.canAdd('inventory')
|
|
.then(function(res) {
|
|
return res.canAdd;
|
|
})
|
|
.catch(function() {
|
|
$state.go('inventories');
|
|
});
|
|
}]
|
|
}
|
|
}
|
|
});
|
|
|
|
let smartInventoryEdit = stateDefinitions.generateTree({
|
|
name: 'inventories.editSmartInventory',
|
|
url: '/smart/:smartinventory_id',
|
|
modes: ['edit'],
|
|
form: 'smartInventoryForm',
|
|
controllers: {
|
|
edit: 'SmartInventoryEditController'
|
|
},
|
|
breadcrumbs: {
|
|
edit: '{{breadcrumb.inventory_name}}'
|
|
},
|
|
data: {
|
|
activityStream: true,
|
|
activityStreamTarget: 'inventory'
|
|
}
|
|
});
|
|
|
|
let inventoryGroupsEditNestedGroups = _.cloneDeep(nestedGroups);
|
|
inventoryGroupsEditNestedGroups.name = "inventories.edit.groups.edit.nested_groups";
|
|
inventoryGroupsEditNestedGroups.ncyBreadcrumb = {
|
|
parent: "inventories.edit.groups.edit",
|
|
label: "ASSOCIATED GROUPS"
|
|
};
|
|
|
|
let inventoryGroupsEditNestedHostsEditGroups = _.cloneDeep(nestedGroups);
|
|
inventoryGroupsEditNestedHostsEditGroups.name = "inventories.edit.groups.edit.nested_hosts.edit.nested_groups";
|
|
inventoryGroupsEditNestedHostsEditGroups.ncyBreadcrumb = {
|
|
parent: "inventories.edit.groups.edit.nested_hosts.edit",
|
|
label: "ASSOCIATED GROUPS"
|
|
};
|
|
|
|
let inventoryHostsEditGroups = _.cloneDeep(nestedGroups);
|
|
inventoryHostsEditGroups.name = "inventories.edit.hosts.edit.nested_groups";
|
|
inventoryHostsEditGroups.ncyBreadcrumb = {
|
|
parent: "inventories.edit.hosts.edit",
|
|
label: "ASSOCIATED GROUPS"
|
|
};
|
|
|
|
let relatedHostsAnsibleFacts = _.cloneDeep(ansibleFactsRoute);
|
|
relatedHostsAnsibleFacts.name = 'inventories.edit.hosts.edit.ansible_facts';
|
|
|
|
let nestedHostsAnsibleFacts = _.cloneDeep(ansibleFactsRoute);
|
|
nestedHostsAnsibleFacts.name = 'inventories.edit.groups.edit.nested_hosts.edit.ansible_facts';
|
|
|
|
let relatedHostsInsights = _.cloneDeep(insightsRoute);
|
|
relatedHostsInsights.name = 'inventories.edit.hosts.edit.insights';
|
|
|
|
let nestedHostsInsights = _.cloneDeep(insightsRoute);
|
|
nestedHostsInsights.name = 'inventories.edit.groups.edit.nested_hosts.edit.insights';
|
|
|
|
let addSourceCredential = _.cloneDeep(inventorySourcesCredentialRoute);
|
|
addSourceCredential.name = 'inventories.edit.inventory_sources.add.credential';
|
|
addSourceCredential.url = '/credential';
|
|
|
|
let addSourceInventoryScript = _.cloneDeep(inventorySourcesInventoryScriptRoute);
|
|
addSourceInventoryScript.name = 'inventories.edit.inventory_sources.add.inventory_script';
|
|
addSourceInventoryScript.url = '/inventory_script';
|
|
|
|
let editSourceCredential = _.cloneDeep(inventorySourcesCredentialRoute);
|
|
editSourceCredential.name = 'inventories.edit.inventory_sources.edit.credential';
|
|
editSourceCredential.url = '/credential';
|
|
|
|
let addSourceProject = _.cloneDeep(inventorySourcesProjectRoute);
|
|
addSourceProject.name = 'inventories.edit.inventory_sources.add.project';
|
|
addSourceProject.url = '/project';
|
|
|
|
let editSourceProject = _.cloneDeep(inventorySourcesProjectRoute);
|
|
editSourceProject.name = 'inventories.edit.inventory_sources.edit.project';
|
|
editSourceProject.url = '/project';
|
|
|
|
let editSourceInventoryScript = _.cloneDeep(inventorySourcesInventoryScriptRoute);
|
|
editSourceInventoryScript.name = 'inventories.edit.inventory_sources.edit.inventory_script';
|
|
editSourceInventoryScript.url = '/inventory_script';
|
|
|
|
let inventoryCompletedJobsRoute = _.cloneDeep(completedJobsRoute);
|
|
inventoryCompletedJobsRoute.name = 'inventories.edit.completed_jobs';
|
|
|
|
let smartInventoryCompletedJobsRoute = _.cloneDeep(completedJobsRoute);
|
|
smartInventoryCompletedJobsRoute.name = 'inventories.editSmartInventory.completed_jobs';
|
|
|
|
let inventoryAdhocRoute = _.cloneDeep(adHocRoute);
|
|
inventoryAdhocRoute.name = 'inventories.edit.adhoc';
|
|
|
|
let smartInventoryAdhocRoute = _.cloneDeep(adHocRoute);
|
|
smartInventoryAdhocRoute.name = 'inventories.editSmartInventory.adhoc';
|
|
|
|
let inventoryAdhocCredential = _.cloneDeep(adhocCredentialRoute);
|
|
inventoryAdhocCredential.name = 'inventories.edit.adhoc.credential';
|
|
|
|
let smartInventoryAdhocCredential = _.cloneDeep(adhocCredentialRoute);
|
|
smartInventoryAdhocCredential.name = 'inventories.editSmartInventory.adhoc.credential';
|
|
|
|
return Promise.all([
|
|
standardInventoryAdd,
|
|
standardInventoryEdit,
|
|
smartInventoryAdd,
|
|
smartInventoryEdit
|
|
]).then((generated) => {
|
|
return {
|
|
states: _.reduce(generated, (result, definition) => {
|
|
return result.concat(definition.states);
|
|
}, [
|
|
stateExtender.buildDefinition(inventoriesList),
|
|
stateExtender.buildDefinition(inventoryAdhocRoute),
|
|
stateExtender.buildDefinition(smartInventoryAdhocRoute),
|
|
stateExtender.buildDefinition(inventoryAdhocCredential),
|
|
stateExtender.buildDefinition(smartInventoryAdhocCredential),
|
|
stateExtender.buildDefinition(inventorySourceListScheduleRoute),
|
|
stateExtender.buildDefinition(inventorySourceListScheduleAddRoute),
|
|
stateExtender.buildDefinition(inventorySourceListScheduleEditRoute),
|
|
stateExtender.buildDefinition(relatedHostsAnsibleFacts),
|
|
stateExtender.buildDefinition(nestedHostsAnsibleFacts),
|
|
stateExtender.buildDefinition(relatedHostsInsights),
|
|
stateExtender.buildDefinition(nestedHostsInsights),
|
|
stateExtender.buildDefinition(copyMoveGroupRoute),
|
|
stateExtender.buildDefinition(copyMoveHostRoute),
|
|
stateExtender.buildDefinition(inventoryGroupsList),
|
|
stateExtender.buildDefinition(inventoryGroupsAdd),
|
|
stateExtender.buildDefinition(inventoryGroupsEdit),
|
|
stateExtender.buildDefinition(inventoryGroupsEditNestedGroups),
|
|
stateExtender.buildDefinition(nestedGroupsAdd),
|
|
stateExtender.buildDefinition(nestedHosts),
|
|
stateExtender.buildDefinition(nestedHostsAdd),
|
|
stateExtender.buildDefinition(nestedHostsEdit),
|
|
stateExtender.buildDefinition(inventoryGroupsEditNestedHostsEditGroups),
|
|
stateExtender.buildDefinition(inventoryHosts),
|
|
stateExtender.buildDefinition(smartInventoryHosts),
|
|
stateExtender.buildDefinition(inventoryHostsAdd),
|
|
stateExtender.buildDefinition(inventoryHostsEdit),
|
|
stateExtender.buildDefinition(inventoryHostsEditGroups),
|
|
stateExtender.buildDefinition(inventorySourceListRoute),
|
|
stateExtender.buildDefinition(inventorySourceAddRoute),
|
|
stateExtender.buildDefinition(inventorySourceEditRoute),
|
|
stateExtender.buildDefinition(inventorySourceEditNotificationsRoute),
|
|
stateExtender.buildDefinition(inventoryCompletedJobsRoute),
|
|
stateExtender.buildDefinition(smartInventoryCompletedJobsRoute),
|
|
stateExtender.buildDefinition(addSourceCredential),
|
|
stateExtender.buildDefinition(addSourceInventoryScript),
|
|
stateExtender.buildDefinition(editSourceCredential),
|
|
stateExtender.buildDefinition(editSourceInventoryScript),
|
|
stateExtender.buildDefinition(addSourceProject),
|
|
stateExtender.buildDefinition(editSourceProject)
|
|
])
|
|
};
|
|
});
|
|
|
|
}
|
|
|
|
let generateHostStates = function(){
|
|
let hostTree = stateDefinitions.generateTree({
|
|
parent: 'hosts', // top-most node in the generated tree (will replace this state definition)
|
|
modes: ['edit'],
|
|
list: 'HostsList',
|
|
form: 'HostsForm',
|
|
controllers: {
|
|
edit: 'HostEditController'
|
|
},
|
|
breadcrumbs: {
|
|
edit: '{{breadcrumb.host_name}}'
|
|
},
|
|
urls: {
|
|
list: '/hosts'
|
|
},
|
|
data: {
|
|
activityStream: true,
|
|
activityStreamTarget: 'host'
|
|
},
|
|
resolve: {
|
|
edit: {
|
|
host: ['Rest', '$stateParams', 'GetBasePath',
|
|
function(Rest, $stateParams, GetBasePath) {
|
|
let path = GetBasePath('hosts') + $stateParams.host_id;
|
|
Rest.setUrl(path);
|
|
return Rest.get();
|
|
}
|
|
]
|
|
},
|
|
list: {
|
|
canAdd: ['rbacUiControlService', function(rbacUiControlService) {
|
|
return rbacUiControlService.canAdd('hosts')
|
|
.then(function(res) {
|
|
return res.canAdd;
|
|
})
|
|
.catch(function() {
|
|
return false;
|
|
});
|
|
}]
|
|
}
|
|
},
|
|
views: {
|
|
'@': {
|
|
templateUrl: templateUrl('inventories/hosts/hosts'),
|
|
controller: 'HostListController'
|
|
}
|
|
},
|
|
ncyBreadcrumb: {
|
|
label: N_('HOSTS')
|
|
}
|
|
});
|
|
|
|
let hostAnsibleFacts = _.cloneDeep(ansibleFactsRoute);
|
|
hostAnsibleFacts.name = 'hosts.edit.ansible_facts';
|
|
|
|
let hostInsights = _.cloneDeep(insightsRoute);
|
|
hostInsights.name = 'hosts.edit.insights';
|
|
|
|
return Promise.all([
|
|
hostTree
|
|
]).then((generated) => {
|
|
return {
|
|
states: _.reduce(generated, (result, definition) => {
|
|
return result.concat(definition.states);
|
|
}, [
|
|
stateExtender.buildDefinition(hostAnsibleFacts),
|
|
stateExtender.buildDefinition(hostInsights),
|
|
stateExtender.buildDefinition(hostGroupsRoute),
|
|
stateExtender.buildDefinition(hostGroupsAssociateRoute)
|
|
])
|
|
};
|
|
});
|
|
};
|
|
|
|
$stateProvider.state({
|
|
name: 'hosts',
|
|
url: '/hosts',
|
|
lazyLoad: () => generateHostStates()
|
|
});
|
|
|
|
$stateProvider.state({
|
|
name: 'inventories',
|
|
url: '/inventories',
|
|
lazyLoad: () => generateInventoryStates()
|
|
});
|
|
}
|
|
]);
|