@@ -130,7 +130,7 @@ class WorkflowAdminExtension(val env: Env) extends AdminExtension {
130130 implicit val ec = env.otoroshiExecutionContext
131131 implicit val ev = env
132132 for {
133- configs <- datastores.workflowsDatastore.findAll ()
133+ configs <- datastores.workflowsDatastore.findAllAndFillSecrets ()
134134 } yield {
135135 states.updateWorkflows(configs)
136136 ()
@@ -185,12 +185,16 @@ class WorkflowAdminExtension(val env: Env) extends AdminExtension {
185185 case None => Results .Ok (Json .obj(" done" -> false , " error" -> " no body" )).vfuture
186186 case Some (bodySource) =>
187187 bodySource.runFold(ByteString .empty)(_ ++ _).flatMap { bodyRaw =>
188- val payload = bodyRaw.utf8String.parseJson
189- val input = payload.select(" input" ).asString.parseJson.asObject
190- val workflow = payload.select(" workflow" ).asObject
191- val node = Node .from(workflow)
192- engine.run(node, input).map { res =>
193- Results .Ok (res.json)
188+ val payload_raw = bodyRaw.utf8String
189+ val secretFillFuture = if (payload_raw.contains(" ${vault://" )) env.vaults.fillSecretsAsync(" workflow-test" , payload_raw) else payload_raw.vfuture
190+ secretFillFuture.flatMap { payload_filled =>
191+ val payload = payload_filled.parseJson
192+ val input = payload.select(" input" ).asString.parseJson.asObject
193+ val workflow = payload.select(" workflow" ).asObject
194+ val node = Node .from(workflow)
195+ engine.run(node, input).map { res =>
196+ Results .Ok (res.json)
197+ }
194198 }
195199 }
196200 }).recover {
0 commit comments