22import time
33import shutil
44import yaml
5- import base64
65import logging
76
87from openbrokerapi .service_broker import ProvisionDetails , OperationState , \
1110from .celery import app
1211from .utils import get_plan_path , get_chart_path , get_cred_value , \
1312 InstanceLock , dump_instance_meta , dump_binding_meta , load_instance_meta , \
14- get_instance_file , helm , dump_raw_values
13+ get_instance_file , helm , format_paras_to_helm_args
1514
1615logger = logging .getLogger (__name__ )
1716
@@ -47,15 +46,7 @@ def provision(instance_id: str, details: ProvisionDetails):
4746 f"fullnameOverride=helmbroker-{ details .context ['instance_name' ]} "
4847 ]
4948 logger .debug (f"helm install parameters :{ details .parameters } " )
50- if details .parameters and "rawValues" in details .parameters \
51- and details .parameters .get ("rawValues" , "" ):
52- values = str (base64 .b64decode (details .parameters ["rawValues" ]), "utf-8" ) # noqa
53- raw_values_file = dump_raw_values (instance_id , values )
54- args .extend (["-f" , raw_values_file ])
55- details .parameters .pop ("rawValues" )
56- if details .parameters :
57- for k , v in details .parameters .items ():
58- args .extend (["--set" , f"{ k } ={ v } " ])
49+ args = format_paras_to_helm_args (instance_id , details .parameters , args )
5950 logger .debug (f"helm install args:{ args } " )
6051 status , output = helm (instance_id , * args )
6152 data = load_instance_meta (instance_id )
@@ -80,12 +71,12 @@ def update(instance_id: str, details: UpdateDetails):
8071 if details .context :
8172 data ['details' ]['context' ] = details .context
8273 if details .parameters :
83- data ['details' ]['parameters' ] = details . parameters
84- data [ 'last_operation' ] = {
85- "state" : OperationState . IN_PROGRESS . value ,
86- "description" : (
87- "update %s in progress at %s" % ( instance_id , time . time ()))
88- }
74+ paras = data ['details' ]['parameters' ]
75+ paras . update ( details . parameters )
76+ # remove the key which value is null
77+ data [ 'details' ][ 'parameters' ] = { k : v for k , v in paras . items () if v != "" } # noqa
78+ data [ 'last_operation' ][ "state" ] = OperationState . IN_PROGRESS . value
79+ data [ 'last_operation' ][ "description" ] = "update %s in progress at %s" % ( instance_id , time . time ())
8980 dump_instance_meta (instance_id , data )
9081 chart_path = get_chart_path (instance_id )
9182 values_file = os .path .join (get_plan_path (instance_id ), "values.yaml" )
@@ -105,16 +96,9 @@ def update(instance_id: str, details: UpdateDetails):
10596 "--set" ,
10697 f"fullnameOverride=helmbroker-{ details .context ['instance_name' ]} "
10798 ]
108- logger .info (f"helm upgrade parameters: { details .parameters } " )
109- if details .parameters and "rawValues" in details .parameters \
110- and details .parameters .get ("rawValues" , "" ):
111- values = str (base64 .b64decode (details .parameters ["rawValues" ]), "utf-8" ) # noqa
112- raw_values_file = dump_raw_values (instance_id , values )
113- args .extend (["-f" , raw_values_file ])
114- details .parameters .pop ("rawValues" )
115- if details .parameters :
116- for k , v in details .parameters .items ():
117- args .extend (["--set" , f"{ k } ={ v } " ])
99+ paras = data ['details' ]['parameters' ]
100+ logger .info (f"helm upgrade parameters: { paras } " )
101+ args = format_paras_to_helm_args (instance_id , paras , args )
118102 logger .info (f"helm upgrade args:{ args } " )
119103 status , output = helm (instance_id , * args )
120104 if status != 0 :
@@ -156,6 +140,11 @@ def bind(instance_id: str,
156140 "--set" ,
157141 f"fullnameOverride=helmbroker-{ details .context ['instance_name' ]} "
158142 ]
143+ instance_data = load_instance_meta (instance_id )
144+ paras = instance_data ["details" ]["parameters" ]
145+ logger .info (f"helm template parameters: { paras } " )
146+ args = format_paras_to_helm_args (instance_id , paras , args )
147+ logger .info (f"helm template args: { args } " )
159148 status , templates = helm (instance_id , * args ) # output: templates.yaml
160149 if status != 0 :
161150 data ["last_operation" ]["state" ] = OperationState .FAILED .value
0 commit comments