Delete dead code from get_or_register, move, and test

This commit is contained in:
Alan Rominger 2022-03-30 13:35:42 -04:00
parent ef0f6ca248
commit 6c56f2b35b
No known key found for this signature in database
GPG Key ID: C2D7EAAA12B63559
3 changed files with 56 additions and 20 deletions

View File

@ -1,6 +1,8 @@
# Copyright (c) 2015 Ansible, Inc.
# All Rights Reserved
import os
from django.core.management.base import BaseCommand, CommandError
from django.db import transaction
from django.conf import settings
@ -14,7 +16,12 @@ class Command(BaseCommand):
Register this instance with the database for HA tracking.
"""
help = "Add instance to the database. When no options are provided, the hostname of the current system will be used. Override with `--hostname`."
help = (
"Add instance to the database. "
"When no options are provided, values from Django settings will be used to register the current system, "
"as well as the default queues if needed (only used or enabled for Kubernetes installs). "
"Override with `--hostname`."
)
def add_arguments(self, parser):
parser.add_argument('--hostname', dest='hostname', type=str, help="Hostname used during provisioning")
@ -25,7 +32,14 @@ class Command(BaseCommand):
if not hostname:
if not settings.AWX_AUTO_DEPROVISION_INSTANCES:
raise CommandError('Registering with values from settings only intended for use in K8s installs')
(changed, instance) = Instance.objects.get_or_register()
from awx.main.management.commands.register_queue import RegisterQueue
(changed, instance) = Instance.objects.register(ip_address=os.environ.get('MY_POD_IP'), node_type='control', uuid=settings.SYSTEM_UUID)
RegisterQueue(settings.DEFAULT_CONTROL_PLANE_QUEUE_NAME, 100, 0, [], is_container_group=False).register()
RegisterQueue(
settings.DEFAULT_EXECUTION_QUEUE_NAME, 100, 0, [], is_container_group=True, pod_spec_override=settings.DEFAULT_EXECUTION_QUEUE_POD_SPEC_OVERRIDE
).register()
else:
(changed, instance) = Instance.objects.register(hostname=hostname, node_type=node_type, uuid=uuid)
if changed:

View File

@ -2,7 +2,6 @@
# All Rights Reserved.
import logging
import os
from django.db import models
from django.conf import settings
from django.db.models.functions import Lower
@ -164,23 +163,6 @@ class InstanceManager(models.Manager):
instance = self.create(hostname=hostname, ip_address=ip_address, node_type=node_type, **create_defaults, **uuid_option)
return (True, instance)
def get_or_register(self):
if settings.AWX_AUTO_DEPROVISION_INSTANCES:
from awx.main.management.commands.register_queue import RegisterQueue
pod_ip = os.environ.get('MY_POD_IP')
if settings.IS_K8S:
registered = self.register(ip_address=pod_ip, node_type='control', uuid=settings.SYSTEM_UUID)
else:
registered = self.register(ip_address=pod_ip, uuid=settings.SYSTEM_UUID)
RegisterQueue(settings.DEFAULT_CONTROL_PLANE_QUEUE_NAME, 100, 0, [], is_container_group=False).register()
RegisterQueue(
settings.DEFAULT_EXECUTION_QUEUE_NAME, 100, 0, [], is_container_group=True, pod_spec_override=settings.DEFAULT_EXECUTION_QUEUE_POD_SPEC_OVERRIDE
).register()
return registered
else:
return (False, self.me())
class InstanceGroupManager(models.Manager):
"""A custom manager class for the Instance model.

View File

@ -0,0 +1,40 @@
import pytest
from awx.main.management.commands.provision_instance import Command
from awx.main.models.ha import InstanceGroup, Instance
from awx.main.tasks.system import apply_cluster_membership_policies
from django.test.utils import override_settings
@pytest.mark.django_db
def test_traditional_registration():
assert not Instance.objects.exists()
assert not InstanceGroup.objects.exists()
Command().handle(hostname='bar_node', node_type='execution', uuid='4321')
inst = Instance.objects.first()
assert inst.hostname == 'bar_node'
assert inst.node_type == 'execution'
assert inst.uuid == '4321'
assert not InstanceGroup.objects.exists()
@pytest.mark.django_db
def test_register_self_openshift():
assert not Instance.objects.exists()
assert not InstanceGroup.objects.exists()
with override_settings(AWX_AUTO_DEPROVISION_INSTANCES=True, CLUSTER_HOST_ID='foo_node', SYSTEM_UUID='12345'):
Command().handle()
inst = Instance.objects.first()
assert inst.hostname == 'foo_node'
assert inst.uuid == '12345'
assert inst.node_type == 'control'
apply_cluster_membership_policies() # populate instance list using policy rules
assert list(InstanceGroup.objects.get(name='default').instances.all()) == [] # container group
assert list(InstanceGroup.objects.get(name='controlplane').instances.all()) == [inst]