mirror of
https://github.com/ansible/awx.git
synced 2026-02-25 15:06:02 -03:30
Allow setting ip_address for execution nodes
This commit is contained in:
@@ -5391,7 +5391,7 @@ class InstanceSerializer(BaseSerializer):
|
|||||||
|
|
||||||
class Meta:
|
class Meta:
|
||||||
model = Instance
|
model = Instance
|
||||||
read_only_fields = ('ip_address', 'uuid', 'version')
|
read_only_fields = ('uuid', 'version')
|
||||||
fields = (
|
fields = (
|
||||||
'id',
|
'id',
|
||||||
'hostname',
|
'hostname',
|
||||||
@@ -5487,6 +5487,10 @@ class InstanceSerializer(BaseSerializer):
|
|||||||
node_type = get_field_from_model_or_attrs("node_type")
|
node_type = get_field_from_model_or_attrs("node_type")
|
||||||
peers_from_control_nodes = get_field_from_model_or_attrs("peers_from_control_nodes")
|
peers_from_control_nodes = get_field_from_model_or_attrs("peers_from_control_nodes")
|
||||||
listener_port = get_field_from_model_or_attrs("listener_port")
|
listener_port = get_field_from_model_or_attrs("listener_port")
|
||||||
|
ip_address = get_field_from_model_or_attrs("ip_address")
|
||||||
|
hostname = get_field_from_model_or_attrs("hostname")
|
||||||
|
if not ip_address:
|
||||||
|
attrs["ip_address"] = hostname
|
||||||
|
|
||||||
if peers_from_control_nodes and node_type not in (Instance.Types.EXECUTION, Instance.Types.HOP):
|
if peers_from_control_nodes and node_type not in (Instance.Types.EXECUTION, Instance.Types.HOP):
|
||||||
raise serializers.ValidationError(_("peers_from_control_nodes can only be enabled for execution or hop nodes."))
|
raise serializers.ValidationError(_("peers_from_control_nodes can only be enabled for execution or hop nodes."))
|
||||||
@@ -5549,7 +5553,19 @@ class InstanceSerializer(BaseSerializer):
|
|||||||
class InstanceHealthCheckSerializer(BaseSerializer):
|
class InstanceHealthCheckSerializer(BaseSerializer):
|
||||||
class Meta:
|
class Meta:
|
||||||
model = Instance
|
model = Instance
|
||||||
read_only_fields = ('uuid', 'hostname', 'version', 'last_health_check', 'errors', 'cpu', 'memory', 'cpu_capacity', 'mem_capacity', 'capacity')
|
read_only_fields = (
|
||||||
|
'uuid',
|
||||||
|
'hostname',
|
||||||
|
'ip_address',
|
||||||
|
'version',
|
||||||
|
'last_health_check',
|
||||||
|
'errors',
|
||||||
|
'cpu',
|
||||||
|
'memory',
|
||||||
|
'cpu_capacity',
|
||||||
|
'mem_capacity',
|
||||||
|
'capacity',
|
||||||
|
)
|
||||||
fields = read_only_fields
|
fields = read_only_fields
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -344,6 +344,7 @@ class InstanceDetail(RetrieveUpdateAPIView):
|
|||||||
data.pop('listener_port', None)
|
data.pop('listener_port', None)
|
||||||
data.pop('node_type', None)
|
data.pop('node_type', None)
|
||||||
data.pop('hostname', None)
|
data.pop('hostname', None)
|
||||||
|
data.pop('ip_address', None)
|
||||||
return super(InstanceDetail, self).update_raw_data(data)
|
return super(InstanceDetail, self).update_raw_data(data)
|
||||||
|
|
||||||
def update(self, request, *args, **kwargs):
|
def update(self, request, *args, **kwargs):
|
||||||
|
|||||||
@@ -121,7 +121,8 @@ def generate_inventory_yml(instance_obj):
|
|||||||
def generate_group_vars_all_yml(instance_obj):
|
def generate_group_vars_all_yml(instance_obj):
|
||||||
peers = []
|
peers = []
|
||||||
for instance in instance_obj.peers.all():
|
for instance in instance_obj.peers.all():
|
||||||
peers.append(dict(host=instance.hostname, port=instance.listener_port))
|
host_or_ip = instance.ip_address or instance.hostname
|
||||||
|
peers.append(dict(host=host_or_ip, port=instance.listener_port))
|
||||||
return render_to_string("instance_install_bundle/group_vars/all.yml", context=dict(instance=instance_obj, peers=peers))
|
return render_to_string("instance_install_bundle/group_vars/all.yml", context=dict(instance=instance_obj, peers=peers))
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -704,7 +704,8 @@ def generate_config_data():
|
|||||||
|
|
||||||
receptor_config = list(RECEPTOR_CONFIG_STARTER)
|
receptor_config = list(RECEPTOR_CONFIG_STARTER)
|
||||||
for instance in instances:
|
for instance in instances:
|
||||||
peer = {'tcp-peer': {'address': f'{instance.hostname}:{instance.listener_port}', 'tls': 'tlsclient'}}
|
host_or_ip = instance.ip_address or instance.hostname
|
||||||
|
peer = {'tcp-peer': {'address': f'{host_or_ip}:{instance.listener_port}', 'tls': 'tlsclient'}}
|
||||||
receptor_config.append(peer)
|
receptor_config.append(peer)
|
||||||
should_update = should_update_config(instances)
|
should_update = should_update_config(instances)
|
||||||
return receptor_config, should_update
|
return receptor_config, should_update
|
||||||
|
|||||||
Reference in New Issue
Block a user