Skip to content

Commit cc07840

Browse files
committed
feat(tasks): change unbind async
1 parent eecabf7 commit cc07840

2 files changed

Lines changed: 18 additions & 10 deletions

File tree

rootfs/helmbroker/broker.py

Lines changed: 7 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66
from openbrokerapi.catalog import ServicePlan
77
from openbrokerapi.errors import ErrInstanceAlreadyExists, ErrAsyncRequired, \
88
ErrBindingAlreadyExists, ErrBadRequest, ErrInstanceDoesNotExist, \
9-
ServiceException, ErrBindingDoesNotExist
9+
ServiceException
1010
from openbrokerapi.service_broker import ServiceBroker, Service, \
1111
ProvisionDetails, ProvisionedServiceSpec, ProvisionState, GetBindingSpec, \
1212
BindDetails, Binding, BindState, UnbindDetails, UnbindSpec, \
@@ -19,7 +19,7 @@
1919
get_addon_updateable, get_addon_bindable, get_addon_allow_params, \
2020
get_addon_archive, get_binding_file, get_instance_file
2121
from .database.metadata import load_instance_meta, load_binding_meta, load_addons_meta
22-
from .tasks import provision, bind, deprovision, update
22+
from .tasks import provision, bind, deprovision, update, unbind
2323

2424
logger = logging.getLogger(__name__)
2525

@@ -112,10 +112,9 @@ def unbind(self,
112112
async_allowed: bool,
113113
**kwargs
114114
) -> UnbindSpec:
115-
binding_file = get_binding_file(instance_id)
116-
if os.path.exists(binding_file):
117-
os.remove(binding_file)
118-
return UnbindSpec(is_async=False)
115+
logger.debug(f"unbind instance {instance_id}")
116+
unbind.delay(instance_id)
117+
return UnbindSpec(is_async=True)
119118

120119
def update(self,
121120
instance_id: str,
@@ -179,7 +178,7 @@ def last_operation(self,
179178
OperationState(data["last_operation"]["state"]),
180179
data["last_operation"]["description"]
181180
)
182-
raise ErrInstanceDoesNotExist()
181+
raise LastOperation(OperationState.IN_PROGRESS)
183182

184183
def last_binding_operation(self,
185184
instance_id: str,
@@ -193,4 +192,4 @@ def last_binding_operation(self,
193192
OperationState(data["last_operation"]["state"]),
194193
data["last_operation"]["description"]
195194
)
196-
raise ErrBindingDoesNotExist()
195+
return LastOperation(OperationState.SUCCEEDED)

rootfs/helmbroker/tasks.py

Lines changed: 11 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@
1111

1212
from .database.metadata import save_instance_meta, save_binding_meta, load_instance_meta
1313
from .database.savepoint import save_addon_values, backup_instance
14-
from .database.query import get_plan_path, get_chart_path, get_cred_value
14+
from .database.query import get_plan_path, get_chart_path, get_cred_value, get_binding_file
1515

1616
logger = logging.getLogger(__name__)
1717

@@ -179,7 +179,16 @@ def bind(instance_id: str,
179179
save_binding_meta(instance_id, data)
180180

181181

182-
@app.task()
182+
@app.task(serializer='pickle')
183+
def unbind(instance_id):
184+
with new_instance_lock(instance_id), run_instance_hooks(instance_id, "deprovision"):
185+
backup_instance(instance_id)
186+
binding_file = get_binding_file(instance_id)
187+
if os.path.exists(binding_file):
188+
os.remove(binding_file)
189+
190+
191+
@app.task(serializer='pickle')
183192
def deprovision(instance_id: str):
184193
with new_instance_lock(instance_id), run_instance_hooks(instance_id, "deprovision"):
185194
backup_instance(instance_id)

0 commit comments

Comments
 (0)