@@ -77,11 +77,13 @@ func (h *postClusterHandler) Handle(param cluster.PostClustersParams) middleware
7777 ansibleLogEnv := h .getAnsibleLogEnv (param .Body .Name )
7878 localLog .Trace ().Strs ("file_log" , ansibleLogEnv ).Msg ("got file log name" )
7979
80- // Parse ExtraVars JSON string from request
8180 extraVars := map [string ]interface {}{}
82- if param .Body .ExtraVars != "" {
83- if err := json .Unmarshal ([]byte (param .Body .ExtraVars ), & extraVars ); err != nil {
84- localLog .Warn ().Str ("extra_vars_raw" , param .Body .ExtraVars ).Err (err ).Msg ("failed to parse extra_vars JSON; using empty object" )
81+
82+ if param .Body .ExtraVars != nil {
83+ if m , ok := param .Body .ExtraVars .(map [string ]interface {}); ok {
84+ extraVars = m
85+ } else {
86+ localLog .Warn ().Interface ("extra_vars_raw" , param .Body .ExtraVars ).Msg ("unexpected type for extra_vars, expected map[string]interface{}" )
8587 }
8688 }
8789
@@ -150,21 +152,20 @@ func (h *postClusterHandler) Handle(param cluster.PostClustersParams) middleware
150152 status = "ready"
151153 }
152154
153- // Marshal updated extraVars to JSON string for DB / Docker
155+ // extraVars
154156 extraVarsBytes , mErr := json .Marshal (extraVars )
155157 if mErr != nil {
156158 localLog .Error ().Err (mErr ).Msg ("failed to marshal extra_vars; falling back to {}" )
157159 extraVarsBytes = []byte ("{}" )
158160 }
159- extraVarsJSON := string (extraVarsBytes )
160161
161162 createdCluster , err := h .db .CreateCluster (param .HTTPRequest .Context (), & storage.CreateClusterReq {
162163 ProjectID : param .Body .ProjectID ,
163164 EnvironmentID : param .Body .EnvironmentID ,
164165 Name : param .Body .Name ,
165166 Description : param .Body .Description ,
166167 SecretID : secretID ,
167- ExtraVars : extraVarsJSON ,
168+ ExtraVars : extraVarsBytes ,
168169 Location : getValFromExtraVars (extraVars , LocationExtraVar ),
169170 ServerCount : serverCount ,
170171 PostgreSqlVersion : getIntValFromExtraVars (extraVars , PostgreSqlVersionExtraVar ),
@@ -259,7 +260,7 @@ func (h *postClusterHandler) Handle(param cluster.PostClustersParams) middleware
259260 var dockerId xdocker.InstanceID
260261 dockerId , err = h .dockerManager .ManageCluster (param .HTTPRequest .Context (), & xdocker.ManageClusterConfig {
261262 Envs : param .Body .Envs ,
262- ExtraVars : extraVarsJSON ,
263+ ExtraVars : string ( extraVarsBytes ) ,
263264 Mounts : []xdocker.Mount {
264265 {
265266 DockerPath : ansibleLogDir ,
0 commit comments