mirror of
https://github.com/ansible/awx.git
synced 2026-03-21 19:07:39 -02:30
Refactor Tower HA Instance logic and models
* Gut the HA middleware * Purge concept of primary and secondary. * UUID is not the primary host identifier, now it's based mostly on the username. Some work probably still left to do to make sure this is legit. Also removed unique constraint from the uuid field. This might become the cluster ident now... or it may just deprecate * No more secondary -> primary redirection * Initial revision of /api/v1/ping * Revise and gut tower-manage register_instance * Rename awx/main/socket.py to awx/main/socket_queue.py to prevent conflict with the "socket" module from python base * Revist/gut the Instance manager... not sure if this manager is really needed anymore
This commit is contained in:
@@ -22,9 +22,8 @@ class Instance(models.Model):
|
||||
"""
|
||||
objects = InstanceManager()
|
||||
|
||||
uuid = models.CharField(max_length=40, unique=True)
|
||||
uuid = models.CharField(max_length=40)
|
||||
hostname = models.CharField(max_length=250, unique=True)
|
||||
primary = models.BooleanField(default=False)
|
||||
created = models.DateTimeField(auto_now_add=True)
|
||||
modified = models.DateTimeField(auto_now=True)
|
||||
|
||||
@@ -33,29 +32,8 @@ class Instance(models.Model):
|
||||
|
||||
@property
|
||||
def role(self):
|
||||
"""Return the role of this instance, as a string."""
|
||||
if self.primary:
|
||||
return 'primary'
|
||||
return 'secondary'
|
||||
|
||||
@functools.wraps(models.Model.save)
|
||||
def save(self, *args, **kwargs):
|
||||
"""Save the instance. If this is a secondary instance, then ensure
|
||||
that any currently-running jobs that this instance started are
|
||||
canceled.
|
||||
"""
|
||||
# Perform the normal save.
|
||||
result = super(Instance, self).save(*args, **kwargs)
|
||||
|
||||
# If this is not a primary instance, then kill any jobs that this
|
||||
# instance was responsible for starting.
|
||||
if not self.primary:
|
||||
for job in UnifiedJob.objects.filter(job_origin__instance=self,
|
||||
status__in=CAN_CANCEL):
|
||||
job.cancel()
|
||||
|
||||
# Return back the original result.
|
||||
return result
|
||||
# NOTE: TODO: Likely to repurpose this once standalone ramparts are a thing
|
||||
return "tower"
|
||||
|
||||
|
||||
class JobOrigin(models.Model):
|
||||
|
||||
Reference in New Issue
Block a user