Search in sources :

Example 1 with DynamicWorkflowType

use of com.tremolosecurity.config.xml.DynamicWorkflowType in project OpenUnison by TremoloSecurity.

the class LoadWorkflowsFromK8s method createWorkflow.

private WorkflowType createWorkflow(JSONObject item, String name) throws ProvisioningException {
    WorkflowType wft = new WorkflowType();
    JSONObject spec = (JSONObject) item.get("spec");
    String jsonString = spec.toJSONString();
    StringBuffer b = new StringBuffer();
    b.setLength(0);
    OpenUnisonConfigLoader.integrateIncludes(b, jsonString);
    try {
        spec = (JSONObject) new JSONParser().parse(b.toString());
    } catch (ParseException e1) {
        throw new ProvisioningException("Could not parse workflow", e1);
    }
    wft.setName(name);
    wft.setInList(((Boolean) spec.get("inList")));
    wft.setLabel((String) spec.get("label"));
    wft.setOrgid((String) spec.get("orgId"));
    wft.setDescription((String) spec.get("description"));
    JSONObject dynWfJson = (JSONObject) spec.get("dynamicConfiguration");
    if (dynWfJson != null) {
        DynamicWorkflowType dwt = new DynamicWorkflowType();
        wft.setDynamicConfiguration(dwt);
        Boolean isdyn = (Boolean) dynWfJson.get("dynamic");
        if (isdyn != null) {
            dwt.setDynamic(isdyn.booleanValue());
        }
        dwt.setClassName((String) dynWfJson.get("className"));
        JSONArray params = (JSONArray) dynWfJson.get("params");
        for (Object o : params) {
            JSONObject p = (JSONObject) o;
            ParamType pt = new ParamType();
            pt.setName((String) p.get("name"));
            pt.setValue((String) p.get("value"));
            dwt.getParam().add(pt);
        }
    }
    String wfJson = null;
    try {
        wfJson = convertYamlToJson((String) spec.get("tasks"));
        ParsedWorkflow pw = new ParseWorkflow().parseWorkflow(wfJson);
        if (pw.getError() != null) {
            throw new ProvisioningException("Invalid workflow '" + pw.getError() + "', path='" + pw.getErrorPath() + "'");
        }
        wft.setTasks(pw.getWft().getTasks());
    } catch (JsonProcessingException e) {
        throw new ProvisioningException("Could not parse workflow tasks for '" + name + "'", e);
    }
    return wft;
}
Also used : JSONArray(org.json.simple.JSONArray) DynamicWorkflowType(com.tremolosecurity.config.xml.DynamicWorkflowType) ParamType(com.tremolosecurity.config.xml.ParamType) JSONObject(org.json.simple.JSONObject) DynamicWorkflowType(com.tremolosecurity.config.xml.DynamicWorkflowType) WorkflowType(com.tremolosecurity.config.xml.WorkflowType) ProvisioningException(com.tremolosecurity.provisioning.core.ProvisioningException) JSONParser(org.json.simple.parser.JSONParser) JSONObject(org.json.simple.JSONObject) ParseException(org.json.simple.parser.ParseException) JsonProcessingException(com.fasterxml.jackson.core.JsonProcessingException)

Aggregations

JsonProcessingException (com.fasterxml.jackson.core.JsonProcessingException)1 DynamicWorkflowType (com.tremolosecurity.config.xml.DynamicWorkflowType)1 ParamType (com.tremolosecurity.config.xml.ParamType)1 WorkflowType (com.tremolosecurity.config.xml.WorkflowType)1 ProvisioningException (com.tremolosecurity.provisioning.core.ProvisioningException)1 JSONArray (org.json.simple.JSONArray)1 JSONObject (org.json.simple.JSONObject)1 JSONParser (org.json.simple.parser.JSONParser)1 ParseException (org.json.simple.parser.ParseException)1