|
1 | 1 | import logging |
2 | | -import uuid |
3 | | -import time |
4 | | -from django.core import signals |
5 | 2 | from django.conf import settings |
6 | 3 | from django.db import models, transaction |
7 | 4 | from jsonfield import JSONField |
8 | 5 | from api.exceptions import DryccException, AlreadyExists, ServiceUnavailable |
9 | 6 | from api.models import UuidAuditedModel, validate_label |
10 | 7 | from scheduler import KubeException |
11 | | -from tasks import task, apply_async |
| 8 | +from . import resource_changed |
12 | 9 |
|
13 | 10 | logger = logging.getLogger(__name__) |
14 | 11 |
|
@@ -58,11 +55,7 @@ def attach(self, *args, **kwargs): |
58 | 55 | self._scheduler.svcat.create_instance( |
59 | 56 | self.app.id, self.name, **kwargs |
60 | 57 | ) |
61 | | - data = { |
62 | | - "task_id": uuid.uuid4().hex, |
63 | | - "resource_id": str(self.uuid), |
64 | | - } |
65 | | - apply_async(retrieve_task, delay=30000, args=(data, )) |
| 58 | + resource_changed.send(sender=Resource, resource_id=str(self.uuid)) |
66 | 59 | except KubeException as e: |
67 | 60 | msg = 'There was a problem creating the resource ' \ |
68 | 61 | '{} for {}'.format(self.name, self.app_id) |
@@ -111,11 +104,7 @@ def bind(self, *args, **kwargs): |
111 | 104 | try: |
112 | 105 | self._scheduler.svcat.create_binding( |
113 | 106 | self.app.id, self.name, **kwargs) |
114 | | - data = { |
115 | | - "task_id": uuid.uuid4().hex, |
116 | | - "resource_id": str(self.uuid), |
117 | | - } |
118 | | - apply_async(retrieve_task, delay=30000, args=(data, )) |
| 107 | + resource_changed.send(sender=Resource, resource_id=str(self.uuid)) |
119 | 108 | except KubeException as e: |
120 | 109 | msg = 'There was a problem binding the resource ' \ |
121 | 110 | '{} for {}'.format(self.name, self.app_id) |
@@ -153,11 +142,7 @@ def attach_update(self, *args, **kwargs): |
153 | 142 | self._scheduler.svcat.put_instance( |
154 | 143 | self.app.id, self.name, version, **kwargs |
155 | 144 | ) |
156 | | - data = { |
157 | | - "task_id": uuid.uuid4().hex, |
158 | | - "resource_id": str(self.uuid), |
159 | | - } |
160 | | - apply_async(retrieve_task, delay=30000, args=(data, )) |
| 145 | + resource_changed.send(sender=Resource, resource_id=str(self.uuid)) |
161 | 146 | except KubeException as e: |
162 | 147 | msg = 'There was a problem update the resource ' \ |
163 | 148 | '{} for {}'.format(self.name, self.app_id) |
@@ -214,27 +199,3 @@ def detach_resource(self, *args, **kwargs): |
214 | 199 |
|
215 | 200 | if (self.status != "Ready") or (not self.binding): |
216 | 201 | self.delete() |
217 | | - |
218 | | - |
219 | | -@task |
220 | | -def retrieve_task(data): |
221 | | - try: |
222 | | - signals.request_started.send(sender=data['task_id']) |
223 | | - try: |
224 | | - resource = Resource.objects.get(uuid=data['resource_id']) |
225 | | - except Resource.DoesNotExist: |
226 | | - logger.info("retrieve task not found resource: {}".format(data['resource_id'])) # noqa |
227 | | - return True |
228 | | - _ = resource.retrieve() |
229 | | - if _: |
230 | | - return True |
231 | | - else: |
232 | | - t = time.time() - resource.created.timestamp() |
233 | | - if t < 3600: |
234 | | - apply_async(retrieve_task, delay=30000, args=(data, )) |
235 | | - elif t < 3600 * 12: |
236 | | - apply_async(retrieve_task, delay=1800000, args=(data, )) |
237 | | - else: |
238 | | - resource.detach_resource() |
239 | | - finally: |
240 | | - signals.request_finished.send(sender=data['task_id']) |
0 commit comments