provision_instance should create new uuid if needed

.. instead of default to current system's UUID

related: #10990
This commit is contained in:
Jim Ladd 2021-08-31 16:42:44 -07:00
parent 7bf3ee69ef
commit f02099e8b7
2 changed files with 6 additions and 6 deletions

View File

@ -1,7 +1,6 @@
# Copyright (c) 2015 Ansible, Inc.
# All Rights Reserved
from django.conf import settings
from django.core.management.base import BaseCommand, CommandError
from django.db import transaction
@ -19,11 +18,12 @@ class Command(BaseCommand):
def add_arguments(self, parser):
parser.add_argument('--hostname', dest='hostname', type=str, help='Hostname used during provisioning')
parser.add_argument('--node_type', type=str, default="hybrid", choices=["control", "execution", "hybrid"], help='Instance Node type')
parser.add_argument('--uuid', type=str, help='Instance UUID')
def _register_hostname(self, hostname, node_type):
def _register_hostname(self, hostname, node_type, uuid):
if not hostname:
return
(changed, instance) = Instance.objects.register(uuid=self.uuid, hostname=hostname, node_type=node_type)
(changed, instance) = Instance.objects.register(hostname=hostname, node_type=node_type, uuid=uuid)
if changed:
print('Successfully registered instance {}'.format(hostname))
else:
@ -34,8 +34,7 @@ class Command(BaseCommand):
def handle(self, **options):
if not options.get('hostname'):
raise CommandError("Specify `--hostname` to use this command.")
self.uuid = settings.SYSTEM_UUID
self.changed = False
self._register_hostname(options.get('hostname'), options.get('node_type'))
self._register_hostname(options.get('hostname'), options.get('node_type'), options.get('uuid'))
if self.changed:
print('(changed: True)')

View File

@ -4,6 +4,7 @@
import sys
import logging
import os
from uuid import uuid4
from django.db import models
from django.conf import settings
@ -115,7 +116,7 @@ class InstanceManager(models.Manager):
def register(self, uuid=None, hostname=None, ip_address=None, node_type='hybrid', defaults=None):
if not uuid:
uuid = settings.SYSTEM_UUID
uuid = str(uuid4())
if not hostname:
hostname = settings.CLUSTER_HOST_ID
with advisory_lock('instance_registration_%s' % hostname):