mirror of
https://github.com/ansible/awx.git
synced 2026-02-17 03:00:04 -03:30
* Nodes are marked offline, then deleted; given enough time. Nodes can come back for various reasions (i.e. netsplit). When they come back, have them recreate the node Instance if AWX_AUTO_DEPROVISION_INSTANCES is True. Otherwise, do nothing. The do nothing case will show up in the logs as celery job tracebacks as they fail to be self aware.
45 lines
1.4 KiB
Python
45 lines
1.4 KiB
Python
# Copyright (c) 2015 Ansible, Inc.
|
|
# All Rights Reserved
|
|
|
|
from awx.main.models import Instance
|
|
from django.conf import settings
|
|
|
|
from django.db import transaction
|
|
from django.core.management.base import BaseCommand, CommandError
|
|
|
|
|
|
class Command(BaseCommand):
|
|
"""
|
|
Internal tower command.
|
|
Regsiter this instance with the database for HA tracking.
|
|
"""
|
|
|
|
help = (
|
|
'Add instance to the database. '
|
|
'Specify `--hostname` to use this command.'
|
|
)
|
|
|
|
def add_arguments(self, parser):
|
|
parser.add_argument('--hostname', dest='hostname', type=str,
|
|
help='Hostname used during provisioning')
|
|
|
|
def _register_hostname(self, hostname):
|
|
if not hostname:
|
|
return
|
|
(changed, instance) = Instance.objects.register(uuid=self.uuid, hostname=hostname)
|
|
if changed:
|
|
print('Successfully registered instance {}'.format(hostname))
|
|
else:
|
|
print("Instance already registered {}".format(instance.hostname))
|
|
self.changed = changed
|
|
|
|
@transaction.atomic
|
|
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'))
|
|
if self.changed:
|
|
print('(changed: True)')
|