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. # Copyright (c) 2015 Ansible, Inc.
# All Rights Reserved # All Rights Reserved
from django.conf import settings
from django.core.management.base import BaseCommand, CommandError from django.core.management.base import BaseCommand, CommandError
from django.db import transaction from django.db import transaction
@@ -19,11 +18,12 @@ class Command(BaseCommand):
def add_arguments(self, parser): def add_arguments(self, parser):
parser.add_argument('--hostname', dest='hostname', type=str, help='Hostname used during provisioning') 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('--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: if not hostname:
return 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: if changed:
print('Successfully registered instance {}'.format(hostname)) print('Successfully registered instance {}'.format(hostname))
else: else:
@@ -34,8 +34,7 @@ class Command(BaseCommand):
def handle(self, **options): def handle(self, **options):
if not options.get('hostname'): if not options.get('hostname'):
raise CommandError("Specify `--hostname` to use this command.") raise CommandError("Specify `--hostname` to use this command.")
self.uuid = settings.SYSTEM_UUID
self.changed = False 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: if self.changed:
print('(changed: True)') print('(changed: True)')

View File

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