diff --git a/circle/vm/models.py b/circle/vm/models.py index e886ac9..38fdb42 100644 --- a/circle/vm/models.py +++ b/circle/vm/models.py @@ -491,6 +491,12 @@ class Instance(BaseResourceConfigModel, TimeStampedModel): 'raw_data': "" if not self.raw_data else self.raw_data } + def get_remote_queue_name(self, queue_id): + """Get the remote worker queue name of this instance with the specified + queue ID. + """ + return self.node.host.hostname + "." + queue_id + def renew(self, which='both'): """Renew virtual machine instance leases. """ @@ -531,9 +537,10 @@ class Instance(BaseResourceConfigModel, TimeStampedModel): for disk in self.disks.all(): disk.deploy() + queue_name = self.get_remote_queue_name('vm') + # Deploy VM on remote machine act.update_state('DEPLOYING VM') - queue_name = self.node.host.hostname + ".vm" vm_tasks.create.apply_async(args=[self.get_vm_desc()], queue=queue_name).get() @@ -574,9 +581,9 @@ class Instance(BaseResourceConfigModel, TimeStampedModel): act.started = timezone.now() act.task_uuid = task_uuid act.save() - queue_name = self.node.host.hostname + ".vm" # Destroy virtual machine act.update_state('DESTROYING VM') + queue_name = self.get_remote_queue_name('vm') vm_tasks.destroy.apply_async(args=[self.vm_name], queue=queue_name).get() # Delete networks @@ -600,9 +607,11 @@ class Instance(BaseResourceConfigModel, TimeStampedModel): act.started = timezone.now() act.task_uuid = task_uuid act.save() - queue_name = self.node.host.hostname + ".vm" + + queue_name = self.get_remote_queue_name('vm') vm_tasks.sleep.apply_async(args=[self.vm_name], queue=queue_name).get() + act.finish(result='SUCCESS') def sleep_async(self, user=None): @@ -617,7 +626,8 @@ class Instance(BaseResourceConfigModel, TimeStampedModel): act.started = timezone.now() act.task_uuid = task_uuid act.save() - queue_name = self.node.host.hostname + ".vm" + + queue_name = self.get_remote_queue_name('vm') vm_tasks.resume.apply_async(args=[self.vm_name], queue=queue_name).get() @@ -638,7 +648,8 @@ class Instance(BaseResourceConfigModel, TimeStampedModel): act.started = timezone.now() act.task_uuid = task_uuid act.save() - queue_name = self.node.host.hostname + ".vm" + + queue_name = self.get_remote_queue_name('vm') vm_tasks.shutdown.apply_async(args=[self.vm_name], queue=queue_name).get() @@ -659,7 +670,8 @@ class Instance(BaseResourceConfigModel, TimeStampedModel): act.started = timezone.now() act.task_uuid = task_uuid act.save() - queue_name = self.node.host.hostname + ".vm" + + queue_name = self.get_remote_queue_name('vm') vm_tasks.restart.apply_async(args=[self.vm_name], queue=queue_name).get() @@ -680,7 +692,8 @@ class Instance(BaseResourceConfigModel, TimeStampedModel): act.started = timezone.now() act.task_uuid = task_uuid act.save() - queue_name = self.node.host.hostname + ".vm" + + queue_name = self.get_remote_queue_name('vm') vm_tasks.reboot.apply_async(args=[self.vm_name], queue=queue_name).get() @@ -766,12 +779,12 @@ class Interface(Model): def deploy(self, user=None, task_uuid=None): net_tasks.create.apply_async( args=[self.get_vmnetwork_desc()], - queue=self.instance.node.host.hostname + '.net') + queue=self.instance.get_remote_queue_name('net')) def destroy(self, user=None, task_uuid=None): net_tasks.destroy.apply_async( args=[self.get_vmnetwork_desc()], - queue=self.instance.node.host.hostname + '.net') + queue=self.instance.get_remote_queue_name('net')) @classmethod def create_from_template(cls, instance, template, owner=None):