diff --git a/.github/workflows/dockerbuild.yaml b/.github/workflows/dockerbuild.yaml
index 85890765..a04e87bd 100644
--- a/.github/workflows/dockerbuild.yaml
+++ b/.github/workflows/dockerbuild.yaml
@@ -4,7 +4,7 @@ on:
workflow_dispatch:
push:
branches:
- - main
+ - nightly
paths:
- "**"
- "!.github/**"
@@ -20,19 +20,19 @@ jobs:
include:
- app: frontend
path: frontend
- version: 2.0.0
+ version: nightly
experimental: true
- app: backend
path: backend
- version: 2.0.0
+ version: nightly
experimental: true
- app: orborus
path: functions/onprem/orborus
- version: 2.0.0
+ version: nightly
experimental: true
- app: worker
path: functions/onprem/worker
- version: 2.0.0
+ version: nightly
experimental: true
steps:
- name: Checkout
diff --git a/frontend/src/components/EditOrgTab.jsx b/frontend/src/components/EditOrgTab.jsx
index 6a5e1662..c1cd11fc 100644
--- a/frontend/src/components/EditOrgTab.jsx
+++ b/frontend/src/components/EditOrgTab.jsx
@@ -1,8 +1,8 @@
import React, { useEffect, useState, useContext } from 'react';
-import OrgHeaderexpanded from "./OrgHeaderexpandedNew.jsx";
-import OrgHeader from './OrgHeaderNew.jsx';
+import OrgHeaderexpanded from "../components/OrgHeaderexpandedNew.jsx";
+import OrgHeader from '../components/OrgHeaderNew.jsx';
import { toast } from "react-toastify";
-import CloudSyncTab from './CloudSyncTab.jsx';
+import CloudSyncTab from '../components/CloudSyncTab.jsx';
import {
FileCopy as FileCopyIcon,
} from "@mui/icons-material";
@@ -443,4 +443,4 @@ If you're interested, please let me know a time that works for you, or set up a
)
}
-export default EditOrgTab;
\ No newline at end of file
+export default EditOrgTab;
diff --git a/frontend/src/components/EditWorkflow.jsx b/frontend/src/components/EditWorkflow.jsx
index a1687fc1..b67bde93 100644
--- a/frontend/src/components/EditWorkflow.jsx
+++ b/frontend/src/components/EditWorkflow.jsx
@@ -579,7 +579,7 @@ const EditWorkflow = (props) => {
- Multi-Tenant Workflows. Make one workflow, and keep a separate, synced copy in all your tenants. Control distributed auth, runtime locations, files, datastore keys etc. (late beta - contact support@shuffler.io if you want a demo. Please try it!)
+ Multi-Tenant Workflows. Make one workflow, and keep a separate, synced copy in all your tenants. Control distributed auth, runtime locations, files, datastore keys etc. (contact support@shuffler.io if you want a demo. Please try it!)
{userdata !== undefined && userdata !== null && userdata.orgs !== undefined && userdata.orgs !== null && userdata.orgs.length > 0 ?
diff --git a/frontend/src/components/EnvironmentTab.jsx b/frontend/src/components/EnvironmentTab.jsx
index 22a05f18..cd0a9416 100644
--- a/frontend/src/components/EnvironmentTab.jsx
+++ b/frontend/src/components/EnvironmentTab.jsx
@@ -421,7 +421,7 @@ const EnvironmentTab = memo((props) => {
-e AUTH="${auth}" \\
-e ENVIRONMENT_NAME="${environment.Name}" \\
-e ORG="${environment.org_id}" \\
- -e SHUFFLE_WORKER_IMAGE="ghcr.io/shuffle/shuffle-worker:nightly" \\
+ -e SHUFFLE_WORKER_IMAGE="ghcr.io/shuffle/shuffle-worker:latest" \\
-e SHUFFLE_SWARM_CONFIG=run \\
-e SHUFFLE_LOGS_DISABLED=true \\
-e BASE_URL="${newUrl}" \\${addProxy ? `
diff --git a/frontend/src/components/OrgHeaderexpandedNew.jsx b/frontend/src/components/OrgHeaderexpandedNew.jsx
index a6616269..9a3cda99 100644
--- a/frontend/src/components/OrgHeaderexpandedNew.jsx
+++ b/frontend/src/components/OrgHeaderexpandedNew.jsx
@@ -549,7 +549,7 @@ const OrgHeaderexpandedNew = (props) => {
{isCloud ? (
- Region
+ Change Region
) : null}
diff --git a/frontend/src/components/ShuffleCodeEditor1.jsx b/frontend/src/components/ShuffleCodeEditor1.jsx
index 182346ae..1f713c5a 100644
--- a/frontend/src/components/ShuffleCodeEditor1.jsx
+++ b/frontend/src/components/ShuffleCodeEditor1.jsx
@@ -657,6 +657,7 @@ const CodeEditor = (props) => {
}
if (!inputvariable.includes(".")) {
+ inputvariable = inputvariable.toLowerCase()
return inputvariable
}
@@ -665,6 +666,9 @@ const CodeEditor = (props) => {
var removedIndexes = 0
for (var key in itemsplit) {
var tmpitem = itemsplit[key]
+ if (key == 0) {
+ tmpitem = tmpitem.toLowerCase()
+ }
// Makes sure #0 and # are same, as we only visualize first one anyway
if (tmpitem.startsWith("#")) {
@@ -695,20 +699,24 @@ const CodeEditor = (props) => {
var variable_occurence = current_code_line.match(/[\\]{0,1}[$]{1}([a-zA-Z0-9_@-]+\.?){1}([a-zA-Z0-9#_@-]+\.?){0,}/g)
if (!variable_occurence) {
- continue;
+ continue
}
- var new_occurences = variable_occurence.filter((occurrence) => occurrence[0]);
- variable_occurence = new_occurences
+ //var new_occurences = variable_occurence.filter((occurrence) => occurrence[0]);
+ //variable_occurence = new_occurences
+ variable_occurence = variable_occurence.filter((occurrence) => occurrence[0]);
+
+ // Checks code lines, not variable occurences. Then remaps later
var dollar_occurence = [];
for (let ch = 0; ch < current_code_line.length; ch++) {
//if (current_code_line[ch] === '$' && (ch === 0)) {
if (current_code_line[ch] === '$') {
- dollar_occurence.push(ch);
+ dollar_occurence.push(ch)
}
}
+ // Lowercase anything between the $ and first .
var dollar_occurence_len = []
try {
for (let occ = 0; occ < variable_occurence.length; occ++) {
@@ -1005,7 +1013,6 @@ const CodeEditor = (props) => {
// Replace quotes with nothing
} else {
- console.log("NO TYPE? ", typeof new_input)
try {
new_input = new_input.toString()
} catch (e) {
@@ -1897,7 +1904,7 @@ const CodeEditor = (props) => {
overflow: "hidden",
}}
onClick={() => {
- console.log(innerdata.example)
+ //console.log(innerdata.example)
//const handleClick = (item) => {
handleItemClick([innerdata]);
diff --git a/frontend/src/views/AngularWorkflow.jsx b/frontend/src/views/AngularWorkflow.jsx
index 91146f9f..3904b15f 100755
--- a/frontend/src/views/AngularWorkflow.jsx
+++ b/frontend/src/views/AngularWorkflow.jsx
@@ -13457,7 +13457,7 @@ const AngularWorkflow = (defaultprops) => {
Shuffle AI
- What you write here will be fed to the Shuffle AI to generate a change for the selected action or field. Best used for when you are stuck with formatting. Uses your AI credits (resets monthly). Alpha feature. Please give feedback to support@shuffler.io {"<"}3
+ What you write here will be fed to the Shuffle AI to generate a change for the selected action or field. Best used for when you are stuck with formatting. Uses your AI credits (resets monthly). Beta feature. Please give feedback to support@shuffler.io {"<"}3
{
}
export const validateJson = (showResult) => {
- if (showResult === undefined || showResult === null) {
- return {
- valid: false,
- result: "",
- }
- }
+ if (showResult === undefined || showResult === null) {
+ return {
+ valid: false,
+ result: "",
+ }
+ }
- if (typeof showResult === 'string') {
- showResult = showResult.split(" False").join(" false")
- showResult = showResult.split(" True").join(" true")
+ if (typeof showResult === 'string') {
+ showResult = showResult.split(" False").join(" false")
+ showResult = showResult.split(" True").join(" true")
- showResult.replaceAll("False,", "false,")
- showResult.replaceAll("True,", "true,")
- }
+ showResult.replaceAll("False,", "false,")
+ showResult.replaceAll("True,", "true,")
+ }
- if (typeof showResult === "object" || typeof showResult === "array") {
- return {
- valid: true,
- result: showResult,
- }
- }
+ if (typeof showResult === "object" || typeof showResult === "array") {
+ return {
+ valid: true,
+ result: showResult,
+ }
+ }
- if (showResult[0] === "\"") {
- return {
- valid: false,
- result: showResult,
- }
- }
+ if (showResult[0] === "\"") {
+ return {
+ valid: false,
+ result: showResult,
+ }
+ }
var jsonvalid = true
try {
if (!showResult.includes("{") && !showResult.includes("[")) {
jsonvalid = false
- return {
- valid: jsonvalid,
- result: showResult,
- };
+ return {
+ valid: jsonvalid,
+ result: showResult,
+ };
}
} catch (e) {
@@ -509,102 +509,94 @@ export const validateJson = (showResult) => {
var result = showResult;
try {
- result = jsonvalid ? JSON.parse(showResult, { "storeAsString": true }) : showResult;
+ result = jsonvalid ? JSON.parse(showResult, {"storeAsString": true}) : showResult;
} catch (e) {
////console.log("Failed parsing JSON even though its valid: ", e)
jsonvalid = false;
}
- if (jsonvalid === false) {
+ if (jsonvalid === false) {
- if (typeof showResult === 'string') {
- showResult = showResult.trim()
- }
-
- try {
- var newstr = showResult.replaceAll("'", '"')
-
- // Basic workarounds for issues with Python Dicts -> JSON
- if (newstr.includes(": None")) {
- newstr = newstr.replaceAll(": None", ': null')
- }
-
- if (newstr.includes("[\"{") && newstr.includes("}\"]")) {
- newstr = newstr.replaceAll("[\"{", '[{')
- newstr = newstr.replaceAll("}\"]", '}]')
- }
-
- if (newstr.includes("{\"[") && newstr.includes("]\"}")) {
- newstr = newstr.replaceAll("{\"[", '[{')
- newstr = newstr.replaceAll("]\"}", '}]')
- }
-
- result = JSON.parse(newstr)
- jsonvalid = true
- } catch (e) {
-
- //console.log("Failed parsing JSON even though its valid (2): ", e)
- jsonvalid = false
- }
- }
-
- if (jsonvalid && typeof result === "number") {
- jsonvalid = false
- }
-
- // This is where we start recursing
- if (jsonvalid) {
- // Check fields if they can be parsed too
- try {
- for (const [key, value] of Object.entries(result)) {
- if (typeof value === "string") {
- value = value.replaceAll(" ", "_")
+ if (typeof showResult === 'string') {
+ showResult = showResult.trim()
}
- if (typeof value === "string" && (value.startsWith("{") || value.startsWith("["))) {
- //console.log("CHECKING STRING: ", value)
+ try {
+ var newstr = showResult.replaceAll("'", '"')
- const inside_result = validateJson(value)
- if (inside_result.valid) {
- //console.log("INSIDE RESULT: ", inside_result.result)
+ // Basic workarounds for issues with Python Dicts -> JSON
+ if (newstr.includes(": None")) {
+ newstr = newstr.replaceAll(": None", ': null')
+ }
- if (typeof inside_result.result === "string") {
- const newres = JSON.parse(inside_result.result)
+ if (newstr.includes("[\"{") && newstr.includes("}\"]")) {
+ newstr = newstr.replaceAll("[\"{", '[{')
+ newstr = newstr.replaceAll("}\"]", '}]')
+ }
- result[key] = newres
- } else {
- result[key] = inside_result.result
- }
- }
- } else {
+ if (newstr.includes("{\"[") && newstr.includes("]\"}")) {
+ newstr = newstr.replaceAll("{\"[", '[{')
+ newstr = newstr.replaceAll("]\"}", '}]')
+ }
- // Usually only reaches here if raw array > dict > value
- if (typeof showResult !== "array") {
- for (const [subkey, subvalue] of Object.entries(value)) {
- if (typeof subvalue === "string") {
- subvalue = subvalue.replaceAll(" ", "_")
- }
+ result = JSON.parse(newstr)
+ jsonvalid = true
+ } catch (e) {
- if (typeof subvalue === "string" && (subvalue.startsWith("{") || subvalue.startsWith("["))) {
- const inside_result = validateJson(subvalue)
- if (inside_result.valid) {
- if (typeof inside_result.result === "string") {
- const newres = JSON.parse(inside_result.result)
- result[key][subkey] = newres
- } else {
- result[key][subkey] = inside_result.result
- }
- }
- }
+ //console.log("Failed parsing JSON even though its valid (2): ", e)
+ jsonvalid = false
+ }
+ }
- }
- }
- }
- }
- } catch (e) {
- //console.log("Failed parsing inside json subvalues: ", e)
- }
- }
+ if (jsonvalid && typeof result === "number") {
+ jsonvalid = false
+ }
+
+ // This is where we start recursing
+ if (jsonvalid) {
+ // Check fields if they can be parsed too
+ try {
+ for (const [key, value] of Object.entries(result)) {
+ if (typeof value === "string" && (value.startsWith("{") || value.startsWith("["))) {
+ //console.log("CHECKING STRING: ", value)
+
+ const inside_result = validateJson(value)
+ if (inside_result.valid) {
+ //console.log("INSIDE RESULT: ", inside_result.result)
+
+ if (typeof inside_result.result === "string") {
+ const newres = JSON.parse(inside_result.result)
+
+ result[key] = newres
+ } else {
+ result[key] = inside_result.result
+ }
+ }
+ } else {
+
+ // Usually only reaches here if raw array > dict > value
+ if (typeof showResult !== "array") {
+ for (const [subkey, subvalue] of Object.entries(value)) {
+ if (typeof subvalue === "string" && (subvalue.startsWith("{") || subvalue.startsWith("["))) {
+ const inside_result = validateJson(subvalue)
+ if (inside_result.valid) {
+ if (typeof inside_result.result === "string") {
+ const newres = JSON.parse(inside_result.result)
+ result[key][subkey] = newres
+ } else {
+ result[key][subkey] = inside_result.result
+ }
+ }
+ }
+
+ }
+ }
+ }
+ }
+ } catch (e) {
+ //console.log("Failed parsing inside json subvalues: ", e)
+ }
+ }
return {
valid: jsonvalid,
@@ -612,6 +604,7 @@ export const validateJson = (showResult) => {
};
};
+
//Custom hook for handling styling of the dropzone
const useDropzoneStyles = () => {
const { leftSideBarOpenByClick } = useContext(Context);
diff --git a/functions/onprem/orborus/go.mod b/functions/onprem/orborus/go.mod
index b3b979ae..14e73904 100644
--- a/functions/onprem/orborus/go.mod
+++ b/functions/onprem/orborus/go.mod
@@ -97,13 +97,13 @@ require (
go.opentelemetry.io/otel/trace v1.33.0 // indirect
go.opentelemetry.io/proto/otlp v1.4.0 // indirect
go4.org v0.0.0-20201209231011-d4a079459e60 // indirect
- golang.org/x/crypto v0.31.0 // indirect
+ golang.org/x/crypto v0.32.0 // indirect
golang.org/x/mod v0.17.0 // indirect
- golang.org/x/net v0.33.0 // indirect
- golang.org/x/oauth2 v0.21.0 // indirect
+ golang.org/x/net v0.34.0 // indirect
+ golang.org/x/oauth2 v0.23.0 // indirect
golang.org/x/sync v0.10.0 // indirect
- golang.org/x/sys v0.28.0 // indirect
- golang.org/x/term v0.27.0 // indirect
+ golang.org/x/sys v0.29.0 // indirect
+ golang.org/x/term v0.28.0 // indirect
golang.org/x/text v0.21.0 // indirect
golang.org/x/time v0.3.0 // indirect
golang.org/x/tools v0.21.1-0.20240508182429-e35e4ccd0d2d // indirect
diff --git a/functions/onprem/orborus/go.sum b/functions/onprem/orborus/go.sum
index 0001869a..98879a0b 100644
--- a/functions/onprem/orborus/go.sum
+++ b/functions/onprem/orborus/go.sum
@@ -311,6 +311,10 @@ github.com/sendgrid/sendgrid-go v3.14.0+incompatible h1:KDSasSTktAqMJCYClHVE94Fc
github.com/sendgrid/sendgrid-go v3.14.0+incompatible/go.mod h1:QRQt+LX/NmgVEvmdRw0VT/QgUn499+iza2FnDca9fg8=
github.com/sergi/go-diff v1.1.0 h1:we8PVUC3FE2uYfodKH/nBHMSetSfHDR6scGdBi+erh0=
github.com/sergi/go-diff v1.1.0/go.mod h1:STckp+ISIX8hZLjrqAeVduY0gWCT9IjLuqbuNXdaHfM=
+github.com/sergi/go-diff v1.3.2-0.20230802210424-5b0b94c5c0d3 h1:n661drycOFuPLCN3Uc8sB6B/s6Z4t2xvBgU1htSHuq8=
+github.com/sergi/go-diff v1.3.2-0.20230802210424-5b0b94c5c0d3/go.mod h1:A0bzQcvG0E7Rwjx0REVgAGH58e96+X0MeOfepqsbeW4=
+github.com/shuffle/shuffle-shared v0.8.0 h1:8ABtFz5UYOXN6mnnu/LrOwz8TxASnu1OBbj+gfqmtYk=
+github.com/shuffle/shuffle-shared v0.8.0/go.mod h1:bBXhEsPKjxln0mFnSeri7gIJ3tL/636Sh5NyTyNrvIQ=
github.com/sirupsen/logrus v1.7.0/go.mod h1:yWOB1SBYBC5VeMP7gHvWumXLIWorT60ONWic61uBYv0=
github.com/sirupsen/logrus v1.9.3 h1:dueUQJ1C2q9oE3F7wvmSGAaVtTmUizReu6fjN8uqzbQ=
github.com/sirupsen/logrus v1.9.3/go.mod h1:naHLuLoDiP4jHNo9R0sCBMtWGeIprob74mVsIT4qYEQ=
@@ -380,6 +384,8 @@ golang.org/x/crypto v0.3.1-0.20221117191849-2c476679df9a/go.mod h1:hebNnKkNXi2Uz
golang.org/x/crypto v0.7.0/go.mod h1:pYwdfH91IfpZVANVyUOhSIPZaFoJGxTFbZhFTx+dXZU=
golang.org/x/crypto v0.31.0 h1:ihbySMvVjLAeSH1IbfcRTkD/iNscyz8rGzjF/E5hV6U=
golang.org/x/crypto v0.31.0/go.mod h1:kDsLvtWBEx7MV9tJOj9bnXsPbxwJQ6csT/x4KIN4Ssk=
+golang.org/x/crypto v0.32.0 h1:euUpcYgM8WcP71gNpTqQCn6rC2t6ULUPiOzfWaXVVfc=
+golang.org/x/crypto v0.32.0/go.mod h1:ZnnJkOaASj8g0AjIduWNlq2NRxL0PlBrbKVyZ6V/Ugc=
golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA=
golang.org/x/exp v0.0.0-20190306152737-a1d7652674e8/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA=
golang.org/x/exp v0.0.0-20190510132918-efd6b22b2522/go.mod h1:ZjyILWgesfNpC6sMxTJOJm9Kp84zZh5NQWvqDGG3Qr8=
@@ -439,11 +445,15 @@ golang.org/x/net v0.7.0/go.mod h1:2Tu9+aMcznHK/AK1HMvgo6xiTLG5rD5rZLDS+rp2Bjs=
golang.org/x/net v0.8.0/go.mod h1:QVkue5JL9kW//ek3r6jTKnTFis1tRmNAW2P1shuFdJc=
golang.org/x/net v0.33.0 h1:74SYHlV8BIgHIFC/LrYkOGIwL19eTYXQ5wc6TBuO36I=
golang.org/x/net v0.33.0/go.mod h1:HXLR5J+9DxmrqMwG9qjGCxZ+zKXxBru04zlTvWlWuN4=
+golang.org/x/net v0.34.0 h1:Mb7Mrk043xzHgnRM88suvJFwzVrRfHEHJEl5/71CKw0=
+golang.org/x/net v0.34.0/go.mod h1:di0qlW3YNM5oh6GqDGQr92MyTozJPmybPK4Ev/Gm31k=
golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U=
golang.org/x/oauth2 v0.0.0-20190226205417-e64efc72b421/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw=
golang.org/x/oauth2 v0.0.0-20190604053449-0f29369cfe45/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw=
golang.org/x/oauth2 v0.0.0-20191202225959-858c2ad4c8b6/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw=
golang.org/x/oauth2 v0.0.0-20200107190931-bf48bf16ab8d/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw=
+golang.org/x/oauth2 v0.23.0 h1:PbgcYx2W7i4LvjJWEbf0ngHV6qJYr86PkAV3bXdLEbs=
+golang.org/x/oauth2 v0.23.0/go.mod h1:XYTD2NtWslqkgxebSiOHnXEap4TF09sJSc7H1sXbhtI=
golang.org/x/oauth2 v0.24.0 h1:KTBBxWqUa0ykRPLtV69rRto9TLXcqYkeswu48x/gvNE=
golang.org/x/oauth2 v0.24.0/go.mod h1:XYTD2NtWslqkgxebSiOHnXEap4TF09sJSc7H1sXbhtI=
golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
@@ -488,6 +498,8 @@ golang.org/x/sys v0.5.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.28.0 h1:Fksou7UEQUWlKvIdsqzJmUmCX3cZuD2+P3XyyzwMhlA=
golang.org/x/sys v0.28.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=
+golang.org/x/sys v0.29.0 h1:TPYlXGxvx1MGTn2GiZDhnjPA9wZzZeGKHHmKhHYvgaU=
+golang.org/x/sys v0.29.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=
golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo=
golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8=
golang.org/x/term v0.1.0/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8=
@@ -496,6 +508,8 @@ golang.org/x/term v0.5.0/go.mod h1:jMB1sMXY+tzblOD4FWmEbocvup2/aLOaQEp7JmGp78k=
golang.org/x/term v0.6.0/go.mod h1:m6U89DPEgQRMq3DNkDClhWw02AUbt2daBVO4cn4Hv9U=
golang.org/x/term v0.27.0 h1:WP60Sv1nlK1T6SupCHbXzSaN0b9wUmsPoRS9b61A23Q=
golang.org/x/term v0.27.0/go.mod h1:iMsnZpn0cago0GOrHO2+Y7u7JPn5AylBrcoWkElMTSM=
+golang.org/x/term v0.28.0 h1:/Ts8HFuMR2E6IP/jlo7QVLZHggjKQbhu/7H0LJFr3Gg=
+golang.org/x/term v0.28.0/go.mod h1:Sw/lC2IAUZ92udQNf3WodGtn4k/XoLyZoh8v/8uiwek=
golang.org/x/text v0.0.0-20170915032832-14c0d48ead0c/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
golang.org/x/text v0.3.1-0.20180807135948-17ff2d5776d2/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
diff --git a/functions/onprem/orborus/orborus.go b/functions/onprem/orborus/orborus.go
index 25718a44..2f6af9fe 100755
--- a/functions/onprem/orborus/orborus.go
+++ b/functions/onprem/orborus/orborus.go
@@ -1352,10 +1352,12 @@ func deployWorker(image string, identifier string, env []string, executionReques
}
}
- log.Printf("WORKER STARTING WITH ENV: %#v", env)
+ // FIXME: Verbosity for testing
+ //log.Printf("WORKER STARTING WITH ENV: %#v", env)
+ ctx := context.Background()
containerStartOptions := container.StartOptions{}
- err = dockercli.ContainerStart(context.Background(), cont.ID, containerStartOptions)
+ err = dockercli.ContainerStart(ctx, cont.ID, containerStartOptions)
if err != nil {
// Trying to recreate and start WITHOUT network if it's possible. No extended checks. Old execution system (<0.9.30)
if strings.Contains(fmt.Sprintf("%s", err), "cannot join network") || strings.Contains(fmt.Sprintf("%s", err), "No such container") {
@@ -1388,15 +1390,15 @@ func deployWorker(image string, identifier string, env []string, executionReques
log.Printf("[INFO][%s] Worker Container created (2). Environment %s: docker logs %s", executionRequest.ExecutionId, environment, cont.ID)
}
- stats, err := dockercli.ContainerInspect(context.Background(), containerName)
+ stats, err := dockercli.ContainerInspect(ctx, cont.ID)
if err != nil {
- log.Printf("[WARNING] Failed checking worker %s", containerName)
+ log.Printf("[WARNING] Failed checking worker '%s': %s", cont.ID, err)
return nil
}
containerStatus := stats.ContainerJSONBase.State.Status
if containerStatus != "running" {
- log.Printf("[ERROR] Status of %s is %s. Should be running. Will reset", containerName, containerStatus)
+ log.Printf("[ERROR] Status of %s is %s. Should be running. Contact support@shuffler.io if this persists.", cont.ID, containerStatus)
}
/*
err = stopWorker(containerName)
diff --git a/functions/onprem/worker/go.sum b/functions/onprem/worker/go.sum
index 91e7cc1f..fd10cb6c 100644
--- a/functions/onprem/worker/go.sum
+++ b/functions/onprem/worker/go.sum
@@ -325,6 +325,8 @@ github.com/shuffle/shuffle-shared v0.7.82 h1:La11F5jp9bNtM3VuR9PawyWo90/vZ+1Txo4
github.com/shuffle/shuffle-shared v0.7.82/go.mod h1:bBXhEsPKjxln0mFnSeri7gIJ3tL/636Sh5NyTyNrvIQ=
github.com/shuffle/shuffle-shared v0.7.83 h1:OyyDo0ii8rOYHN5wGbcM94JuDKLmbZ9jhMQ0+/KMb0A=
github.com/shuffle/shuffle-shared v0.7.83/go.mod h1:bBXhEsPKjxln0mFnSeri7gIJ3tL/636Sh5NyTyNrvIQ=
+github.com/shuffle/shuffle-shared v0.8.0 h1:8ABtFz5UYOXN6mnnu/LrOwz8TxASnu1OBbj+gfqmtYk=
+github.com/shuffle/shuffle-shared v0.8.0/go.mod h1:bBXhEsPKjxln0mFnSeri7gIJ3tL/636Sh5NyTyNrvIQ=
github.com/sirupsen/logrus v1.7.0/go.mod h1:yWOB1SBYBC5VeMP7gHvWumXLIWorT60ONWic61uBYv0=
github.com/sirupsen/logrus v1.9.3 h1:dueUQJ1C2q9oE3F7wvmSGAaVtTmUizReu6fjN8uqzbQ=
github.com/sirupsen/logrus v1.9.3/go.mod h1:naHLuLoDiP4jHNo9R0sCBMtWGeIprob74mVsIT4qYEQ=