mirror of
https://github.com/ansible/awx.git
synced 2026-01-11 01:57:35 -03:30
add inventory field to inventory update
This commit is contained in:
parent
a955b3f947
commit
a968a44afb
@ -2172,7 +2172,7 @@ class InventoryUpdateSerializer(UnifiedJobSerializer, InventorySourceOptionsSeri
|
||||
|
||||
class Meta:
|
||||
model = InventoryUpdate
|
||||
fields = ('*', 'inventory_source', 'license_error', 'source_project_update',
|
||||
fields = ('*', 'inventory', 'inventory_source', 'license_error', 'source_project_update',
|
||||
'-controller_node',)
|
||||
|
||||
def get_related(self, obj):
|
||||
@ -2193,8 +2193,12 @@ class InventoryUpdateSerializer(UnifiedJobSerializer, InventorySourceOptionsSeri
|
||||
if obj.source_project_update_id:
|
||||
res['source_project_update'] = self.reverse('api:project_update_detail',
|
||||
kwargs={'pk': obj.source_project_update.pk})
|
||||
if obj.inventory:
|
||||
res['inventory'] = self.reverse('api:inventory_detail', kwargs={'pk': obj.inventory.pk})
|
||||
|
||||
if self.version > 1:
|
||||
res['credentials'] = self.reverse('api:inventory_update_credentials_list', kwargs={'pk': obj.pk})
|
||||
|
||||
return res
|
||||
|
||||
|
||||
|
||||
@ -0,0 +1,21 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
# Generated by Django 1.11.11 on 2018-07-17 03:57
|
||||
from __future__ import unicode_literals
|
||||
|
||||
from django.db import migrations, models
|
||||
import django.db.models.deletion
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('main', '0043_v330_oauth2accesstoken_modified'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.AddField(
|
||||
model_name='inventoryupdate',
|
||||
name='inventory',
|
||||
field=models.ForeignKey(default=None, null=True, on_delete=django.db.models.deletion.DO_NOTHING, related_name='inventory_updates', to='main.Inventory'),
|
||||
),
|
||||
]
|
||||
@ -1420,7 +1420,7 @@ class InventorySource(UnifiedJobTemplate, InventorySourceOptions, RelatedJobsMix
|
||||
@classmethod
|
||||
def _get_unified_job_field_names(cls):
|
||||
return set(f.name for f in InventorySourceOptions._meta.fields) | set(
|
||||
['name', 'description', 'schedule', 'credentials']
|
||||
['name', 'description', 'schedule', 'credentials', 'inventory']
|
||||
)
|
||||
|
||||
def save(self, *args, **kwargs):
|
||||
@ -1599,6 +1599,13 @@ class InventoryUpdate(UnifiedJob, InventorySourceOptions, JobNotificationMixin,
|
||||
class Meta:
|
||||
app_label = 'main'
|
||||
|
||||
inventory = models.ForeignKey(
|
||||
'Inventory',
|
||||
related_name='inventory_updates',
|
||||
null=True,
|
||||
default=None,
|
||||
on_delete=models.DO_NOTHING,
|
||||
)
|
||||
inventory_source = models.ForeignKey(
|
||||
'InventorySource',
|
||||
related_name='inventory_updates',
|
||||
|
||||
@ -133,51 +133,6 @@ function getJobTemplateDetails () {
|
||||
return { label, link, value, tooltip };
|
||||
}
|
||||
|
||||
function getInventoryJobNameDetails () {
|
||||
if (resource.model.get('type') !== 'inventory_update') {
|
||||
return null;
|
||||
}
|
||||
|
||||
const jobArgs = resource.model.get('job_args');
|
||||
|
||||
if (!jobArgs) {
|
||||
return null;
|
||||
}
|
||||
|
||||
let parsedJobArgs;
|
||||
|
||||
try {
|
||||
parsedJobArgs = JSON.parse(jobArgs);
|
||||
} catch (e) {
|
||||
return null;
|
||||
}
|
||||
|
||||
if (!Array.isArray(parsedJobArgs)) {
|
||||
return null;
|
||||
}
|
||||
|
||||
const jobArgIndex = parsedJobArgs.indexOf('--inventory-id');
|
||||
const inventoryId = parsedJobArgs[jobArgIndex + 1];
|
||||
|
||||
if (jobArgIndex < 0) {
|
||||
return null;
|
||||
}
|
||||
|
||||
if (!Number.isInteger(parseInt(inventoryId, 10))) {
|
||||
return null;
|
||||
}
|
||||
|
||||
const name = resource.model.get('name');
|
||||
const id = resource.model.get('id');
|
||||
|
||||
const label = strings.get('labels.NAME');
|
||||
const tooltip = strings.get('tooltips.INVENTORY');
|
||||
const value = `${id} - ${$filter('sanitize')(name)}`;
|
||||
const link = `/#/inventories/inventory/${inventoryId}`;
|
||||
|
||||
return { label, link, tooltip, value };
|
||||
}
|
||||
|
||||
function getInventorySourceDetails () {
|
||||
if (!resource.model.has('summary_fields.inventory_source.source')) {
|
||||
return null;
|
||||
@ -726,7 +681,6 @@ function JobDetailsController (
|
||||
vm.skipTags = getSkipTagDetails();
|
||||
vm.extraVars = getExtraVarsDetails();
|
||||
vm.labels = getLabelDetails();
|
||||
vm.inventoryJobName = getInventoryJobNameDetails();
|
||||
vm.inventorySource = getInventorySourceDetails();
|
||||
vm.overwrite = getOverwriteDetails();
|
||||
vm.overwriteVars = getOverwriteVarsDetails();
|
||||
|
||||
@ -41,18 +41,6 @@
|
||||
</div>
|
||||
|
||||
<!-- LEFT PANE DETAILS GROUP -->
|
||||
<!-- INVENTORY JOB NAME DETAIL -->
|
||||
<div class="JobResults-resultRow" ng-if="vm.inventoryJobName">
|
||||
<label class="JobResults-resultRowLabel">{{ vm.inventoryJobName.label }}</label>
|
||||
<div class="JobResults-resultRowText">
|
||||
<a href="{{ vm.inventoryJobName.link }}"
|
||||
aw-tool-tip="{{ vm.inventoryJobName.tooltip }}"
|
||||
data-placement="top">
|
||||
{{ vm.inventoryJobName.value }}
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- STATUS DETAIL -->
|
||||
<div class="JobResults-resultRow">
|
||||
<label class="JobResults-resultRowLabel">{{ vm.status.label }}</label>
|
||||
|
||||
@ -81,6 +81,10 @@ export default function BuildAnchor($log, $filter) {
|
||||
case 'label':
|
||||
url = null;
|
||||
break;
|
||||
case 'inventory_source':
|
||||
const inventoryId = _.get(obj, 'inventory', '').split('-').reverse()[0];
|
||||
url += `inventories/inventory/${inventoryId}/inventory_sources/edit/${obj.id}`;
|
||||
break;
|
||||
default:
|
||||
url += resource + 's/' + obj.id + '/';
|
||||
}
|
||||
|
||||
@ -74,6 +74,7 @@
|
||||
* Changed the name of the session length setting from `AUTH_TOKEN_EXPIRATION` to `SESSION_COOKIE_AGE`.
|
||||
* Changed the name of the session length setting from `AUTH_TOKEN_PER_USER` to `SESSIONS_PER_USER`.
|
||||
* External logging now defaults to HTTPS (instead of HTTP) *unless* http:// is explicitly specified in the log aggregator hostname [[#2048](https://github.com/ansible/awx/issues/2048)]
|
||||
* Added `inventory` field to inventory updates
|
||||
|
||||
3.2.0
|
||||
=====
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user