Skip to content

Commit 692aab2

Browse files
committed
chore(helmbroker): update state before upgrade
1 parent 82c6ca4 commit 692aab2

2 files changed

Lines changed: 12 additions & 10 deletions

File tree

rootfs/helmbroker/broker.py

Lines changed: 8 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
import os
2-
import shutil
32
import logging
3+
import time
44
from typing import Union, List, Optional
55

66
from openbrokerapi.catalog import ServicePlan
@@ -18,7 +18,8 @@
1818
from .database.query import get_instance_path, get_chart_path, get_plan_path, \
1919
get_addon_updateable, get_addon_bindable, get_addon_allow_params, \
2020
get_addon_archive, get_binding_file, get_instance_file
21-
from .database.metadata import load_instance_meta, load_binding_meta, load_addons_meta
21+
from .database.metadata import load_instance_meta, load_binding_meta, load_addons_meta, \
22+
save_instance_meta
2223
from .tasks import provision, bind, deprovision, update, unbind
2324

2425
logger = logging.getLogger(__name__)
@@ -94,9 +95,6 @@ def bind(self,
9495
instance_path = get_instance_path(instance_id)
9596
if os.path.exists(f'{instance_path}/bind.json'):
9697
raise ErrBindingAlreadyExists()
97-
chart_path, plan_path = (
98-
get_chart_path(instance_id), get_plan_path(instance_id))
99-
shutil.copy(f'{plan_path}/bind.yaml', f'{chart_path}/templates')
10098
bind(instance_id, binding_id, details, async_allowed, **kwargs)
10199
data = load_binding_meta(instance_id)
102100
if data["last_operation"]["state"] == OperationState.SUCCEEDED.value:
@@ -145,6 +143,11 @@ def update(self,
145143
if details.plan_id is not None:
146144
chart_path, plan_path = get_chart_path(instance_id), get_plan_path(instance_id)
147145
fetch_chart_plan(details.service_id, chart_path, details.plan_id, plan_path)
146+
data = load_instance_meta(instance_id)
147+
data['last_operation']["state"] = OperationState.IN_PROGRESS.value
148+
data['last_operation']["description"] = (
149+
f"update {instance_id} in progress at {time.time()}")
150+
save_instance_meta(instance_id, data)
148151
update.delay(instance_id, details)
149152
return UpdateServiceSpec(is_async=True)
150153

rootfs/helmbroker/tasks.py

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22
import time
33
import yaml
44
import logging
5+
import shutil
56

67
from openbrokerapi.service_broker import ProvisionDetails, OperationState, \
78
UpdateDetails, BindDetails
@@ -99,10 +100,6 @@ def update(instance_id: str, details: UpdateDetails):
99100
data["last_operation"]["description"] = f"update {instance_id} failed: {output}"
100101
save_instance_meta(instance_id, data)
101102
return
102-
data['last_operation']["state"] = OperationState.IN_PROGRESS.value
103-
data['last_operation']["description"] = (
104-
f"update {instance_id} in progress at {time.time()}")
105-
save_instance_meta(instance_id, data)
106103
chart_path = get_chart_path(instance_id)
107104
values_file = os.path.join(get_plan_path(instance_id), "values.yaml")
108105
args = [
@@ -148,7 +145,9 @@ def bind(instance_id: str,
148145
save_binding_meta(instance_id, data)
149146
return
150147
save_binding_meta(instance_id, data)
151-
chart_path = get_chart_path(instance_id)
148+
chart_path, plan_path = (
149+
get_chart_path(instance_id), get_plan_path(instance_id))
150+
shutil.copy(f'{plan_path}/bind.yaml', f'{chart_path}/templates')
152151
values_file = os.path.join(get_plan_path(instance_id), "values.yaml")
153152
args = [
154153
"template", details.context["instance_name"], chart_path,

0 commit comments

Comments
 (0)