diff --git a/backend/go-app/main.go b/backend/go-app/main.go index 1c313be2..8eea1b16 100644 --- a/backend/go-app/main.go +++ b/backend/go-app/main.go @@ -170,6 +170,7 @@ type User struct { CreationTime int64 `datastore:"creation_time" json:"creation_time"` } +// timeout maybe? idk type session struct { Username string `datastore:"Username,noindex"` Session string `datastore:"session,noindex"` @@ -1399,19 +1400,6 @@ func handleInfo(resp http.ResponseWriter, request *http.Request) { // FIXME - check memcache here // Get the item from the memcache ctx := context.Background() - //if item, err := memcache.Get(ctx, c.Value); err == memcache.ErrCacheMiss { - // // Not in cache - //} else if err != nil { - // log.Printf("Error getting item: %v", err) - //} else { - // var Userdata User - // err = json.Unmarshal(item.Value, &Userdata) - // if err == nil { - // resp.WriteHeader(200) - // resp.Write([]byte(`{"success": true, "reason": "OK"}`)) - // return - // } - //} sessionToken := c.Value session, err := getSession(ctx, sessionToken) @@ -1440,7 +1428,7 @@ func handleInfo(resp http.ResponseWriter, request *http.Request) { return } - expiration := time.Now().Add(1200 * time.Second) + expiration := time.Now().Add(3600 * time.Second) http.SetCookie(resp, &http.Cookie{ Name: "session_token", Value: UserInfo.Session, @@ -1449,31 +1437,6 @@ func handleInfo(resp http.ResponseWriter, request *http.Request) { returnData := fmt.Sprintf(`{"success": true, "cookies": [{"key": "session_token", "value": "%s", "expiration": %d}]}`, UserInfo.Session, expiration.Unix()) - //b, err := json.Marshal(UserInfo) - //if err != nil { - // log.Printf("Failed marshalling: %s", err) - // resp.WriteHeader(401) - // resp.Write([]byte(`{"success": false}`)) - // return - //} - - // Adding to cache here - // Only keeping it in for 24 hours - //item := &memcache.Item{ - // Key: c.Value, - // Value: b, - // Expiration: time.Hour * 24, - //} - //if err := memcache.Add(ctx, item); err == memcache.ErrNotStored { - // if err := memcache.Set(ctx, item); err != nil { - // log.Printf("Error setting item: %v", err) - // } - //} else if err != nil { - // log.Printf("error adding item: %v", err) - //} else { - // log.Printf("Set cache for %s", item.Key) - //} - resp.WriteHeader(200) resp.Write([]byte(returnData)) } @@ -2008,7 +1971,7 @@ func handleLogin(resp http.ResponseWriter, request *http.Request) { // FIXME - have timeout here if len(Userdata.Session) != 0 { //log.Println("Nonexisting session") - expiration := time.Now().Add(1200 * time.Second) + expiration := time.Now().Add(3600 * time.Second) http.SetCookie(resp, &http.Cookie{ Name: "session_token", @@ -2034,7 +1997,7 @@ func handleLogin(resp http.ResponseWriter, request *http.Request) { http.SetCookie(resp, &http.Cookie{ Name: "session_token", Value: sessionToken.String(), - Expires: time.Now().Add(1200 * time.Second), + Expires: time.Now().Add(3600 * time.Second), }) // ADD TO DATABASE diff --git a/frontend/src/AngularWorkflow.js b/frontend/src/AngularWorkflow.js index 6ef480cf..bf9ac4cb 100644 --- a/frontend/src/AngularWorkflow.js +++ b/frontend/src/AngularWorkflow.js @@ -737,11 +737,11 @@ const AngularWorkflow = (props) => { .then((responseJson) => { // FIXME - handle versions on left bar //handleAppVersioning(responseJson) - var tmpapps = [] - tmpapps = tmpapps.concat(getExtraApps()) - tmpapps = tmpapps.concat(responseJson) - setApps(tmpapps) - setFilteredApps(tmpapps) + //var tmpapps = [] + //tmpapps = tmpapps.concat(getExtraApps()) + //tmpapps = tmpapps.concat(responseJson) + setApps(responseJson) + setFilteredApps(responseJson) }) .catch(error => { alert.error(error.toString()) diff --git a/frontend/src/App.js b/frontend/src/App.js index 720ae0d8..26586734 100644 --- a/frontend/src/App.js +++ b/frontend/src/App.js @@ -92,11 +92,13 @@ const App = (message, props) => { }) .then(response => response.json()) .then(responseJson => { + console.log(responseJson) if (responseJson.success === true) { setUserData(responseJson) setIsLoggedIn(true) // Updating cookie every request + console.log("COOKIES: ", cookies) for (var key in responseJson["cookies"]) { setCookie(responseJson["cookies"][key].key, responseJson["cookies"][key].value, {path: "/"}) } diff --git a/functions/onprem/app_sdk/app_base.py b/functions/onprem/app_sdk/app_base.py index e3795d09..d15792a0 100644 --- a/functions/onprem/app_sdk/app_base.py +++ b/functions/onprem/app_sdk/app_base.py @@ -86,8 +86,6 @@ class AppBase: "execution_id": self.current_execution_id } - self.logger.info("Auth: %s", tmpdata) - self.logger.info("Before FULLEXEC stream result") ret = requests.post( "%s/api/v1/streams/results" % (self.url), @@ -202,6 +200,13 @@ class AppBase: parameter["value"] = parameter["value"].replace(to_be_replaced, value) elif isinstance(value, dict): parameter["value"] = parameter["value"].replace(to_be_replaced, json.dumps(value)) + else: + print("Unknown type %s" % type(value)) + try: + parameter["value"] = parameter["value"].replace(to_be_replaced, json.dumps(value)) + except json.decoder.JSONDecodeError as e: + parameter["value"] = parameter["value"].replace(to_be_replaced, value) + if parameter["variant"] == "WORKFLOW_VARIABLE": for item in fullexecution["workflow"]["workflow_variables"]: @@ -228,6 +233,8 @@ class AppBase: if parameter["value"].startswith(jsonparsevalue): fullname += parameter["value"][2:] + else: + fullname = "$%s" % parameter["action_field"] self.logger.info("Fullname: %s" % fullname) actualitem = re.findall(match, fullname, re.MULTILINE) @@ -237,13 +244,23 @@ class AppBase: try: to_be_replaced = replace[0] except IndexError: + print("Nothing to replace?: " % e) continue + + # This will never be a loop aka multi argument + parameter["value"] = to_be_replaced value = get_json_value(fullexecution, to_be_replaced) if isinstance(value, str): parameter["value"] = parameter["value"].replace(to_be_replaced, value) elif isinstance(value, dict): parameter["value"] = parameter["value"].replace(to_be_replaced, json.dumps(value)) + else: + print("Unknown type %s" % type(value)) + try: + parameter["value"] = parameter["value"].replace(to_be_replaced, json.dumps(value)) + except json.decoder.JSONDecodeError as e: + parameter["value"] = parameter["value"].replace(to_be_replaced, value) return "", parameter["value"] @@ -459,12 +476,14 @@ class AppBase: # With this parameter ready, add it to... a greater list of parameters. Rofl multi_parameters[parameter["name"]] = resultarray else: + print("Hello, in here?: %s" % value) params[parameter["name"]] = value multi_parameters[parameter["name"]] = value # FIXME - this is horrible, but works for now #for i in range(calltimes): if not multiexecution: + print("Params: %s" % params) print("RUNNING NORMAL EXECUTION") result += await func(**params) else: @@ -473,6 +492,7 @@ class AppBase: # 2. Find the right value from the parsed multi_params results = [] + json_object = False for i in range(0, minlength): # To be able to use the results as a list: baseparams = json.loads(json.dumps(multi_parameters)) @@ -489,11 +509,28 @@ class AppBase: baseparams[key] = "KeyError: %s" % e #print("Running with params %s" % baseparams) - results.append(await func(**baseparams)) + ret = await func(**baseparams) + print("Inner ret: %s" % ret) + + try: + results.append(json.loads(ret)) + json_object = True + except json.decoder.JSONDecodeError as e: + results.append(ret) # Dump the result as a string of a list - result = json.dumps(", ".join(results)) - + print("RESULTS: %s" % results) + if isinstance(results, list): + print("JSON OBJECT? ", json_object) + if json_object: + result = json.dumps(results) + else: + result = "[\""+"\", \"".join(results)+"\"]" + else: + print("Normal result?") + result = results + + print("RESULT: %s" % result) action_result["status"] = "SUCCESS" action_result["result"] = str(result) @@ -520,7 +557,7 @@ class AppBase: action_result["completed_at"] = int(time.time()) # I wonder if this actually works - #self.logger.info("Before last stream result") + self.logger.info("Before last stream result") try: ret = requests.post("%s%s" % (self.url, stream_path), headers=headers, json=action_result) self.logger.info("Result: %d" % ret.status_code) diff --git a/functions/onprem/worker/worker.bin b/functions/onprem/worker/worker.bin index 6fb169cc..b2c53d2a 100755 Binary files a/functions/onprem/worker/worker.bin and b/functions/onprem/worker/worker.bin differ diff --git a/functions/onprem/worker/worker.go b/functions/onprem/worker/worker.go index bc42d63a..48b9ab2e 100644 --- a/functions/onprem/worker/worker.go +++ b/functions/onprem/worker/worker.go @@ -343,6 +343,7 @@ func runFilter(workflowExecution WorkflowExecution, action Action) { if action.Parameters[0].Variant == "ACTION_RESULT" { param := action.Parameters[0] value := param.Value + _ = value // Loop cases.. Hmm, that's tricky } @@ -398,21 +399,25 @@ func handleExecution(client *http.Client, req *http.Request, workflowExecution W } pullOptions := types.ImagePullOptions{} + _ = pullOptions for _, image := range onpremApps { log.Printf("Image: %s", image) + // Kind of gambling that the image exists. if strings.Contains(image, " ") { image = strings.ReplaceAll(image, " ", "-") } - reader, err := dockercli.ImagePull(context.Background(), image, pullOptions) - if err != nil { - log.Printf("Failed getting %s. The app is missing or some other issue", image) - //shutdown(workflowExecution.ExecutionId) - } + // FIXME: Reimplement for speed later + // Skip to make it faster + //reader, err := dockercli.ImagePull(context.Background(), image, pullOptions) + //if err != nil { + // log.Printf("Failed getting %s. The app is missing or some other issue", image) + // shutdown(workflowExecution.ExecutionId) + //} - //io.Copy(os.Stdout, reader) - _ = reader - log.Printf("Successfully downloaded and built %s", image) + ////io.Copy(os.Stdout, reader) + //_ = reader + //log.Printf("Successfully downloaded and built %s", image) } // Process the parents etc. How?