mirror of
https://github.com/ansible/awx.git
synced 2026-01-11 10:00:01 -03:30
Merge pull request #807 from AlanCoding/inv_update_name
Make inventory update name combination of inventory and source
This commit is contained in:
commit
2952b0a0fe
@ -1441,6 +1441,19 @@ class InventorySource(UnifiedJobTemplate, InventorySourceOptions):
|
||||
def create_inventory_update(self, **kwargs):
|
||||
return self.create_unified_job(**kwargs)
|
||||
|
||||
def create_unified_job(self, **kwargs):
|
||||
# Use special name, if name not already specified
|
||||
if self.inventory:
|
||||
if '_eager_fields' not in kwargs:
|
||||
kwargs['_eager_fields'] = {}
|
||||
if 'name' not in kwargs['_eager_fields']:
|
||||
name = '{} - {}'.format(self.inventory.name, self.name)
|
||||
name_field = self._meta.get_field('name')
|
||||
if len(name) > name_field.max_length:
|
||||
name = name[:name_field.max_length]
|
||||
kwargs['_eager_fields']['name'] = name
|
||||
return super(InventorySource, self).create_unified_job(**kwargs)
|
||||
|
||||
@property
|
||||
def cache_timeout_blocked(self):
|
||||
if not self.last_job_run:
|
||||
@ -1568,15 +1581,6 @@ class InventoryUpdate(UnifiedJob, InventorySourceOptions, JobNotificationMixin,
|
||||
websocket_data.update(dict(group_id=self.inventory_source.deprecated_group.id))
|
||||
return websocket_data
|
||||
|
||||
def save(self, *args, **kwargs):
|
||||
update_fields = kwargs.get('update_fields', [])
|
||||
inventory_source = self.inventory_source
|
||||
if inventory_source.inventory and self.name == inventory_source.name:
|
||||
self.name = inventory_source.inventory.name
|
||||
if 'name' not in update_fields:
|
||||
update_fields.append('name')
|
||||
super(InventoryUpdate, self).save(*args, **kwargs)
|
||||
|
||||
def get_absolute_url(self, request=None):
|
||||
return reverse('api:inventory_update_detail', kwargs={'pk': self.pk}, request=request)
|
||||
|
||||
|
||||
@ -149,6 +149,22 @@ def setup_inventory_groups(inventory, group_factory):
|
||||
groupB.save()
|
||||
|
||||
|
||||
@pytest.mark.django_db
|
||||
def test_inventory_update_name(inventory, inventory_source):
|
||||
iu = inventory_source.update()
|
||||
assert inventory_source.name != inventory.name
|
||||
assert iu.name == inventory.name + ' - ' + inventory_source.name
|
||||
|
||||
|
||||
@pytest.mark.django_db
|
||||
def test_inventory_update_excessively_long_name(inventory, inventory_source):
|
||||
inventory.name = 'a' * 400 # field max length 512
|
||||
inventory_source.name = 'b' * 400
|
||||
iu = inventory_source.update()
|
||||
assert inventory_source.name != inventory.name
|
||||
assert iu.name.startswith(inventory.name)
|
||||
|
||||
|
||||
@pytest.mark.django_db
|
||||
class TestHostManager:
|
||||
def test_host_filter_not_smart(self, setup_ec2_gce, organization):
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user