From 58bd747cb199b629f1ec0e4c48883a8f22997610 Mon Sep 17 00:00:00 2001 From: adamscmRH Date: Tue, 11 Jul 2017 17:06:21 -0400 Subject: [PATCH] Fixes group & host integrity error --- awx/main/management/commands/inventory_import.py | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/awx/main/management/commands/inventory_import.py b/awx/main/management/commands/inventory_import.py index 6b9026ac64..984ccb11d2 100644 --- a/awx/main/management/commands/inventory_import.py +++ b/awx/main/management/commands/inventory_import.py @@ -421,6 +421,7 @@ class Command(NoArgsCommand): mem_host.instance_id = instance_id self.mem_instance_id_map[instance_id] = mem_host.name + @transaction.atomic def _delete_hosts(self): ''' For each host in the database that is NOT in the local list, delete @@ -462,6 +463,7 @@ class Command(NoArgsCommand): len(connection.queries) - queries_before, len(all_del_pks)) + @transaction.atomic def _delete_groups(self): ''' # If overwrite is set, for each group in the database that is NOT in @@ -493,6 +495,7 @@ class Command(NoArgsCommand): len(connection.queries) - queries_before, len(all_del_pks)) + @transaction.atomic def _delete_group_children_and_hosts(self): ''' Clear all invalid child relationships for groups and all invalid host @@ -554,6 +557,7 @@ class Command(NoArgsCommand): len(connection.queries) - queries_before, group_group_count + group_host_count) + @transaction.atomic def _update_inventory(self): ''' Update/overwrite variables from "all" group. If importing from a @@ -578,6 +582,7 @@ class Command(NoArgsCommand): else: logger.info('%s variables unmodified', all_name.capitalize()) + @transaction.atomic def _create_update_groups(self): ''' For each group in the local list, create it if it doesn't exist in the @@ -619,7 +624,7 @@ class Command(NoArgsCommand): if group_name in existing_group_names: continue mem_group = self.all_group.all_groups[group_name] - group = self.inventory.groups.create(name=group_name, variables=json.dumps(mem_group.variables), description='imported') + group, createdGroup = self.inventory.groups.get_or_create(name=group_name, variables=json.dumps(mem_group.variables), description='imported') logger.info('Group "%s" added', group.name) self._batch_add_m2m(self.inventory_source.groups, group) self._batch_add_m2m(self.inventory_source.groups, flush=True) @@ -628,6 +633,7 @@ class Command(NoArgsCommand): len(connection.queries) - queries_before, len(self.all_group.all_groups)) + @transaction.atomic def _update_db_host_from_mem_host(self, db_host, mem_host): # Update host variables. db_variables = db_host.variables_dict @@ -763,6 +769,7 @@ class Command(NoArgsCommand): len(connection.queries) - queries_before, len(self.all_group.all_hosts)) + @transaction.atomic def _create_update_group_children(self): ''' For each imported group, create all parent-child group relationships. @@ -790,6 +797,7 @@ class Command(NoArgsCommand): logger.warning('Group-group updates took %d queries for %d group-group relationships', len(connection.queries) - queries_before, group_group_count) + @transaction.atomic def _create_update_group_hosts(self): # For each host in a mem group, add it to the parent(s) to which it # belongs.