awx/awx/ui/client/lib/models/Credential.js

113 lines
2.4 KiB
JavaScript

const ENCRYPTED_VALUE = '$encrypted$';
let Base;
let Project;
let JobTemplate;
let Inventory;
let InventorySource;
function createFormSchema (method, config) {
if (!config) {
config = method;
method = 'GET';
}
const schema = Object.assign({}, this.options(`actions.${method.toUpperCase()}`));
if (config && config.omit) {
config.omit.forEach(key => delete schema[key]);
}
Object.keys(schema).forEach(key => {
schema[key].id = key;
if (this.has(key)) {
schema[key]._value = this.get(key);
}
});
return schema;
}
function assignInputGroupValues (inputs) {
if (!inputs) {
return [];
}
return inputs.map(input => {
const value = this.get(`inputs.${input.id}`);
input._value = value;
input._encrypted = value === ENCRYPTED_VALUE;
return input;
});
}
function setDependentResources (id) {
this.dependentResources = [
{
model: new Project(),
params: {
credential: id
}
},
{
model: new JobTemplate(),
params: {
credential: id,
ask_credential_on_launch: false
}
},
{
model: new Inventory(),
params: {
insights_credential: id
}
},
{
model: new InventorySource(),
params: {
credential: id
}
}
];
}
function CredentialModel (method, resource, config) {
Base.call(this, 'credentials');
this.Constructor = CredentialModel;
this.createFormSchema = createFormSchema.bind(this);
this.assignInputGroupValues = assignInputGroupValues.bind(this);
this.setDependentResources = setDependentResources.bind(this);
return this.create(method, resource, config);
}
function CredentialModelLoader (
BaseModel,
ProjectModel,
JobTemplateModel,
InventoryModel,
InventorySourceModel
) {
Base = BaseModel;
Project = ProjectModel;
JobTemplate = JobTemplateModel;
Inventory = InventoryModel;
InventorySource = InventorySourceModel;
return CredentialModel;
}
CredentialModelLoader.$inject = [
'BaseModel',
'ProjectModel',
'JobTemplateModel',
'InventoryModel',
'InventorySourceModel'
];
export default CredentialModelLoader;