Merge branch 'nightly' of github.com:Shuffle/Shuffle into nightly
This commit is contained in:
@@ -4,7 +4,7 @@ on:
|
|||||||
workflow_dispatch:
|
workflow_dispatch:
|
||||||
push:
|
push:
|
||||||
branches:
|
branches:
|
||||||
- main
|
- nightly
|
||||||
paths:
|
paths:
|
||||||
- "**"
|
- "**"
|
||||||
- "!.github/**"
|
- "!.github/**"
|
||||||
@@ -20,19 +20,19 @@ jobs:
|
|||||||
include:
|
include:
|
||||||
- app: frontend
|
- app: frontend
|
||||||
path: frontend
|
path: frontend
|
||||||
version: 2.0.0
|
version: nightly
|
||||||
experimental: true
|
experimental: true
|
||||||
- app: backend
|
- app: backend
|
||||||
path: backend
|
path: backend
|
||||||
version: 2.0.0
|
version: nightly
|
||||||
experimental: true
|
experimental: true
|
||||||
- app: orborus
|
- app: orborus
|
||||||
path: functions/onprem/orborus
|
path: functions/onprem/orborus
|
||||||
version: 2.0.0
|
version: nightly
|
||||||
experimental: true
|
experimental: true
|
||||||
- app: worker
|
- app: worker
|
||||||
path: functions/onprem/worker
|
path: functions/onprem/worker
|
||||||
version: 2.0.0
|
version: nightly
|
||||||
experimental: true
|
experimental: true
|
||||||
steps:
|
steps:
|
||||||
- name: Checkout
|
- name: Checkout
|
||||||
|
|||||||
@@ -1,8 +1,8 @@
|
|||||||
import React, { useEffect, useState, useContext } from 'react';
|
import React, { useEffect, useState, useContext } from 'react';
|
||||||
import OrgHeaderexpanded from "./OrgHeaderexpandedNew.jsx";
|
import OrgHeaderexpanded from "../components/OrgHeaderexpandedNew.jsx";
|
||||||
import OrgHeader from './OrgHeaderNew.jsx';
|
import OrgHeader from '../components/OrgHeaderNew.jsx';
|
||||||
import { toast } from "react-toastify";
|
import { toast } from "react-toastify";
|
||||||
import CloudSyncTab from './CloudSyncTab.jsx';
|
import CloudSyncTab from '../components/CloudSyncTab.jsx';
|
||||||
import {
|
import {
|
||||||
FileCopy as FileCopyIcon,
|
FileCopy as FileCopyIcon,
|
||||||
} from "@mui/icons-material";
|
} from "@mui/icons-material";
|
||||||
|
|||||||
@@ -579,7 +579,7 @@ const EditWorkflow = (props) => {
|
|||||||
</Typography>
|
</Typography>
|
||||||
|
|
||||||
<Typography variant="body2" color="textSecondary" style={{ marginTop: 30, marginBottom: 10, }}>
|
<Typography variant="body2" color="textSecondary" style={{ marginTop: 30, marginBottom: 10, }}>
|
||||||
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. (<b>late beta</b> - 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!)
|
||||||
</Typography>
|
</Typography>
|
||||||
|
|
||||||
{userdata !== undefined && userdata !== null && userdata.orgs !== undefined && userdata.orgs !== null && userdata.orgs.length > 0 ?
|
{userdata !== undefined && userdata !== null && userdata.orgs !== undefined && userdata.orgs !== null && userdata.orgs.length > 0 ?
|
||||||
|
|||||||
@@ -421,7 +421,7 @@ const EnvironmentTab = memo((props) => {
|
|||||||
-e AUTH="${auth}" \\
|
-e AUTH="${auth}" \\
|
||||||
-e ENVIRONMENT_NAME="${environment.Name}" \\
|
-e ENVIRONMENT_NAME="${environment.Name}" \\
|
||||||
-e ORG="${environment.org_id}" \\
|
-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_SWARM_CONFIG=run \\
|
||||||
-e SHUFFLE_LOGS_DISABLED=true \\
|
-e SHUFFLE_LOGS_DISABLED=true \\
|
||||||
-e BASE_URL="${newUrl}" \\${addProxy ? `
|
-e BASE_URL="${newUrl}" \\${addProxy ? `
|
||||||
|
|||||||
@@ -549,7 +549,7 @@ const OrgHeaderexpandedNew = (props) => {
|
|||||||
|
|
||||||
{isCloud ? (
|
{isCloud ? (
|
||||||
<div style={{ marginLeft: 13, fontSize: 16, color: "#9E9E9E" }} >
|
<div style={{ marginLeft: 13, fontSize: 16, color: "#9E9E9E" }} >
|
||||||
Region
|
Change Region
|
||||||
<RegionChangeModal selectedOrganization={selectedOrganization} setSelectedRegion={setSelectedRegion} userdata={userdata} handleSendChangeRegionMail={handleSendChangeRegionMail} />
|
<RegionChangeModal selectedOrganization={selectedOrganization} setSelectedRegion={setSelectedRegion} userdata={userdata} handleSendChangeRegionMail={handleSendChangeRegionMail} />
|
||||||
</div>
|
</div>
|
||||||
) : null}
|
) : null}
|
||||||
|
|||||||
@@ -657,6 +657,7 @@ const CodeEditor = (props) => {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (!inputvariable.includes(".")) {
|
if (!inputvariable.includes(".")) {
|
||||||
|
inputvariable = inputvariable.toLowerCase()
|
||||||
return inputvariable
|
return inputvariable
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -665,6 +666,9 @@ const CodeEditor = (props) => {
|
|||||||
var removedIndexes = 0
|
var removedIndexes = 0
|
||||||
for (var key in itemsplit) {
|
for (var key in itemsplit) {
|
||||||
var tmpitem = itemsplit[key]
|
var tmpitem = itemsplit[key]
|
||||||
|
if (key == 0) {
|
||||||
|
tmpitem = tmpitem.toLowerCase()
|
||||||
|
}
|
||||||
|
|
||||||
// Makes sure #0 and # are same, as we only visualize first one anyway
|
// Makes sure #0 and # are same, as we only visualize first one anyway
|
||||||
if (tmpitem.startsWith("#")) {
|
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)
|
var variable_occurence = current_code_line.match(/[\\]{0,1}[$]{1}([a-zA-Z0-9_@-]+\.?){1}([a-zA-Z0-9#_@-]+\.?){0,}/g)
|
||||||
|
|
||||||
if (!variable_occurence) {
|
if (!variable_occurence) {
|
||||||
continue;
|
continue
|
||||||
}
|
}
|
||||||
|
|
||||||
var new_occurences = variable_occurence.filter((occurrence) => occurrence[0]);
|
//var new_occurences = variable_occurence.filter((occurrence) => occurrence[0]);
|
||||||
variable_occurence = new_occurences
|
//variable_occurence = new_occurences
|
||||||
|
|
||||||
|
variable_occurence = variable_occurence.filter((occurrence) => occurrence[0]);
|
||||||
|
|
||||||
|
// Checks code lines, not variable occurences. Then remaps later
|
||||||
var dollar_occurence = [];
|
var dollar_occurence = [];
|
||||||
for (let ch = 0; ch < current_code_line.length; ch++) {
|
for (let ch = 0; ch < current_code_line.length; ch++) {
|
||||||
//if (current_code_line[ch] === '$' && (ch === 0)) {
|
//if (current_code_line[ch] === '$' && (ch === 0)) {
|
||||||
if (current_code_line[ch] === '$') {
|
if (current_code_line[ch] === '$') {
|
||||||
dollar_occurence.push(ch);
|
dollar_occurence.push(ch)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Lowercase anything between the $ and first .
|
||||||
var dollar_occurence_len = []
|
var dollar_occurence_len = []
|
||||||
try {
|
try {
|
||||||
for (let occ = 0; occ < variable_occurence.length; occ++) {
|
for (let occ = 0; occ < variable_occurence.length; occ++) {
|
||||||
@@ -1005,7 +1013,6 @@ const CodeEditor = (props) => {
|
|||||||
|
|
||||||
// Replace quotes with nothing
|
// Replace quotes with nothing
|
||||||
} else {
|
} else {
|
||||||
console.log("NO TYPE? ", typeof new_input)
|
|
||||||
try {
|
try {
|
||||||
new_input = new_input.toString()
|
new_input = new_input.toString()
|
||||||
} catch (e) {
|
} catch (e) {
|
||||||
@@ -1897,7 +1904,7 @@ const CodeEditor = (props) => {
|
|||||||
overflow: "hidden",
|
overflow: "hidden",
|
||||||
}}
|
}}
|
||||||
onClick={() => {
|
onClick={() => {
|
||||||
console.log(innerdata.example)
|
//console.log(innerdata.example)
|
||||||
|
|
||||||
//const handleClick = (item) => {
|
//const handleClick = (item) => {
|
||||||
handleItemClick([innerdata]);
|
handleItemClick([innerdata]);
|
||||||
|
|||||||
@@ -13457,7 +13457,7 @@ const AngularWorkflow = (defaultprops) => {
|
|||||||
Shuffle AI
|
Shuffle AI
|
||||||
</Typography>
|
</Typography>
|
||||||
<Typography variant="body2" color="textSecondary">
|
<Typography variant="body2" color="textSecondary">
|
||||||
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). <b>Beta feature.</b> Please give feedback to support@shuffler.io {"<"}3
|
||||||
|
|
||||||
</Typography>
|
</Typography>
|
||||||
<TextField
|
<TextField
|
||||||
|
|||||||
+103
-110
@@ -455,44 +455,44 @@ export const collapseField = (field, inputdata) => {
|
|||||||
}
|
}
|
||||||
|
|
||||||
export const validateJson = (showResult) => {
|
export const validateJson = (showResult) => {
|
||||||
if (showResult === undefined || showResult === null) {
|
if (showResult === undefined || showResult === null) {
|
||||||
return {
|
return {
|
||||||
valid: false,
|
valid: false,
|
||||||
result: "",
|
result: "",
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (typeof showResult === 'string') {
|
if (typeof showResult === 'string') {
|
||||||
showResult = showResult.split(" False").join(" false")
|
showResult = showResult.split(" False").join(" false")
|
||||||
showResult = showResult.split(" True").join(" true")
|
showResult = showResult.split(" True").join(" true")
|
||||||
|
|
||||||
showResult.replaceAll("False,", "false,")
|
showResult.replaceAll("False,", "false,")
|
||||||
showResult.replaceAll("True,", "true,")
|
showResult.replaceAll("True,", "true,")
|
||||||
}
|
}
|
||||||
|
|
||||||
if (typeof showResult === "object" || typeof showResult === "array") {
|
if (typeof showResult === "object" || typeof showResult === "array") {
|
||||||
return {
|
return {
|
||||||
valid: true,
|
valid: true,
|
||||||
result: showResult,
|
result: showResult,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (showResult[0] === "\"") {
|
if (showResult[0] === "\"") {
|
||||||
return {
|
return {
|
||||||
valid: false,
|
valid: false,
|
||||||
result: showResult,
|
result: showResult,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
var jsonvalid = true
|
var jsonvalid = true
|
||||||
try {
|
try {
|
||||||
if (!showResult.includes("{") && !showResult.includes("[")) {
|
if (!showResult.includes("{") && !showResult.includes("[")) {
|
||||||
jsonvalid = false
|
jsonvalid = false
|
||||||
|
|
||||||
return {
|
return {
|
||||||
valid: jsonvalid,
|
valid: jsonvalid,
|
||||||
result: showResult,
|
result: showResult,
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
} catch (e) {
|
} catch (e) {
|
||||||
|
|
||||||
@@ -509,102 +509,94 @@ export const validateJson = (showResult) => {
|
|||||||
|
|
||||||
var result = showResult;
|
var result = showResult;
|
||||||
try {
|
try {
|
||||||
result = jsonvalid ? JSON.parse(showResult, { "storeAsString": true }) : showResult;
|
result = jsonvalid ? JSON.parse(showResult, {"storeAsString": true}) : showResult;
|
||||||
} catch (e) {
|
} catch (e) {
|
||||||
////console.log("Failed parsing JSON even though its valid: ", e)
|
////console.log("Failed parsing JSON even though its valid: ", e)
|
||||||
jsonvalid = false;
|
jsonvalid = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (jsonvalid === false) {
|
if (jsonvalid === false) {
|
||||||
|
|
||||||
if (typeof showResult === 'string') {
|
if (typeof showResult === 'string') {
|
||||||
showResult = showResult.trim()
|
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 value === "string" && (value.startsWith("{") || value.startsWith("["))) {
|
try {
|
||||||
//console.log("CHECKING STRING: ", value)
|
var newstr = showResult.replaceAll("'", '"')
|
||||||
|
|
||||||
const inside_result = validateJson(value)
|
// Basic workarounds for issues with Python Dicts -> JSON
|
||||||
if (inside_result.valid) {
|
if (newstr.includes(": None")) {
|
||||||
//console.log("INSIDE RESULT: ", inside_result.result)
|
newstr = newstr.replaceAll(": None", ': null')
|
||||||
|
}
|
||||||
|
|
||||||
if (typeof inside_result.result === "string") {
|
if (newstr.includes("[\"{") && newstr.includes("}\"]")) {
|
||||||
const newres = JSON.parse(inside_result.result)
|
newstr = newstr.replaceAll("[\"{", '[{')
|
||||||
|
newstr = newstr.replaceAll("}\"]", '}]')
|
||||||
|
}
|
||||||
|
|
||||||
result[key] = newres
|
if (newstr.includes("{\"[") && newstr.includes("]\"}")) {
|
||||||
} else {
|
newstr = newstr.replaceAll("{\"[", '[{')
|
||||||
result[key] = inside_result.result
|
newstr = newstr.replaceAll("]\"}", '}]')
|
||||||
}
|
}
|
||||||
}
|
|
||||||
} else {
|
|
||||||
|
|
||||||
// Usually only reaches here if raw array > dict > value
|
result = JSON.parse(newstr)
|
||||||
if (typeof showResult !== "array") {
|
jsonvalid = true
|
||||||
for (const [subkey, subvalue] of Object.entries(value)) {
|
} catch (e) {
|
||||||
if (typeof subvalue === "string") {
|
|
||||||
subvalue = subvalue.replaceAll(" ", "_")
|
|
||||||
}
|
|
||||||
|
|
||||||
if (typeof subvalue === "string" && (subvalue.startsWith("{") || subvalue.startsWith("["))) {
|
//console.log("Failed parsing JSON even though its valid (2): ", e)
|
||||||
const inside_result = validateJson(subvalue)
|
jsonvalid = false
|
||||||
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
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
if (jsonvalid && typeof result === "number") {
|
||||||
}
|
jsonvalid = false
|
||||||
}
|
}
|
||||||
}
|
|
||||||
} catch (e) {
|
// This is where we start recursing
|
||||||
//console.log("Failed parsing inside json subvalues: ", e)
|
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 {
|
return {
|
||||||
valid: jsonvalid,
|
valid: jsonvalid,
|
||||||
@@ -612,6 +604,7 @@ export const validateJson = (showResult) => {
|
|||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
//Custom hook for handling styling of the dropzone
|
//Custom hook for handling styling of the dropzone
|
||||||
const useDropzoneStyles = () => {
|
const useDropzoneStyles = () => {
|
||||||
const { leftSideBarOpenByClick } = useContext(Context);
|
const { leftSideBarOpenByClick } = useContext(Context);
|
||||||
|
|||||||
@@ -97,13 +97,13 @@ require (
|
|||||||
go.opentelemetry.io/otel/trace v1.33.0 // indirect
|
go.opentelemetry.io/otel/trace v1.33.0 // indirect
|
||||||
go.opentelemetry.io/proto/otlp v1.4.0 // indirect
|
go.opentelemetry.io/proto/otlp v1.4.0 // indirect
|
||||||
go4.org v0.0.0-20201209231011-d4a079459e60 // 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/mod v0.17.0 // indirect
|
||||||
golang.org/x/net v0.33.0 // indirect
|
golang.org/x/net v0.34.0 // indirect
|
||||||
golang.org/x/oauth2 v0.21.0 // indirect
|
golang.org/x/oauth2 v0.23.0 // indirect
|
||||||
golang.org/x/sync v0.10.0 // indirect
|
golang.org/x/sync v0.10.0 // indirect
|
||||||
golang.org/x/sys v0.28.0 // indirect
|
golang.org/x/sys v0.29.0 // indirect
|
||||||
golang.org/x/term v0.27.0 // indirect
|
golang.org/x/term v0.28.0 // indirect
|
||||||
golang.org/x/text v0.21.0 // indirect
|
golang.org/x/text v0.21.0 // indirect
|
||||||
golang.org/x/time v0.3.0 // indirect
|
golang.org/x/time v0.3.0 // indirect
|
||||||
golang.org/x/tools v0.21.1-0.20240508182429-e35e4ccd0d2d // indirect
|
golang.org/x/tools v0.21.1-0.20240508182429-e35e4ccd0d2d // indirect
|
||||||
|
|||||||
@@ -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/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 h1:we8PVUC3FE2uYfodKH/nBHMSetSfHDR6scGdBi+erh0=
|
||||||
github.com/sergi/go-diff v1.1.0/go.mod h1:STckp+ISIX8hZLjrqAeVduY0gWCT9IjLuqbuNXdaHfM=
|
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.7.0/go.mod h1:yWOB1SBYBC5VeMP7gHvWumXLIWorT60ONWic61uBYv0=
|
||||||
github.com/sirupsen/logrus v1.9.3 h1:dueUQJ1C2q9oE3F7wvmSGAaVtTmUizReu6fjN8uqzbQ=
|
github.com/sirupsen/logrus v1.9.3 h1:dueUQJ1C2q9oE3F7wvmSGAaVtTmUizReu6fjN8uqzbQ=
|
||||||
github.com/sirupsen/logrus v1.9.3/go.mod h1:naHLuLoDiP4jHNo9R0sCBMtWGeIprob74mVsIT4qYEQ=
|
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.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 h1:ihbySMvVjLAeSH1IbfcRTkD/iNscyz8rGzjF/E5hV6U=
|
||||||
golang.org/x/crypto v0.31.0/go.mod h1:kDsLvtWBEx7MV9tJOj9bnXsPbxwJQ6csT/x4KIN4Ssk=
|
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-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-20190306152737-a1d7652674e8/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA=
|
||||||
golang.org/x/exp v0.0.0-20190510132918-efd6b22b2522/go.mod h1:ZjyILWgesfNpC6sMxTJOJm9Kp84zZh5NQWvqDGG3Qr8=
|
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.8.0/go.mod h1:QVkue5JL9kW//ek3r6jTKnTFis1tRmNAW2P1shuFdJc=
|
||||||
golang.org/x/net v0.33.0 h1:74SYHlV8BIgHIFC/LrYkOGIwL19eTYXQ5wc6TBuO36I=
|
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.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-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-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-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-20191202225959-858c2ad4c8b6/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw=
|
||||||
golang.org/x/oauth2 v0.0.0-20200107190931-bf48bf16ab8d/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 h1:KTBBxWqUa0ykRPLtV69rRto9TLXcqYkeswu48x/gvNE=
|
||||||
golang.org/x/oauth2 v0.24.0/go.mod h1:XYTD2NtWslqkgxebSiOHnXEap4TF09sJSc7H1sXbhtI=
|
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=
|
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.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
|
||||||
golang.org/x/sys v0.28.0 h1:Fksou7UEQUWlKvIdsqzJmUmCX3cZuD2+P3XyyzwMhlA=
|
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.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-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.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8=
|
||||||
golang.org/x/term v0.1.0/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.6.0/go.mod h1:m6U89DPEgQRMq3DNkDClhWw02AUbt2daBVO4cn4Hv9U=
|
||||||
golang.org/x/term v0.27.0 h1:WP60Sv1nlK1T6SupCHbXzSaN0b9wUmsPoRS9b61A23Q=
|
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.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.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.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
|
||||||
golang.org/x/text v0.3.1-0.20180807135948-17ff2d5776d2/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
|
golang.org/x/text v0.3.1-0.20180807135948-17ff2d5776d2/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
|
||||||
|
|||||||
@@ -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{}
|
containerStartOptions := container.StartOptions{}
|
||||||
err = dockercli.ContainerStart(context.Background(), cont.ID, containerStartOptions)
|
err = dockercli.ContainerStart(ctx, cont.ID, containerStartOptions)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
// Trying to recreate and start WITHOUT network if it's possible. No extended checks. Old execution system (<0.9.30)
|
// 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") {
|
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)
|
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 {
|
if err != nil {
|
||||||
log.Printf("[WARNING] Failed checking worker %s", containerName)
|
log.Printf("[WARNING] Failed checking worker '%s': %s", cont.ID, err)
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
containerStatus := stats.ContainerJSONBase.State.Status
|
containerStatus := stats.ContainerJSONBase.State.Status
|
||||||
if containerStatus != "running" {
|
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)
|
err = stopWorker(containerName)
|
||||||
|
|||||||
@@ -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.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 h1:OyyDo0ii8rOYHN5wGbcM94JuDKLmbZ9jhMQ0+/KMb0A=
|
||||||
github.com/shuffle/shuffle-shared v0.7.83/go.mod h1:bBXhEsPKjxln0mFnSeri7gIJ3tL/636Sh5NyTyNrvIQ=
|
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.7.0/go.mod h1:yWOB1SBYBC5VeMP7gHvWumXLIWorT60ONWic61uBYv0=
|
||||||
github.com/sirupsen/logrus v1.9.3 h1:dueUQJ1C2q9oE3F7wvmSGAaVtTmUizReu6fjN8uqzbQ=
|
github.com/sirupsen/logrus v1.9.3 h1:dueUQJ1C2q9oE3F7wvmSGAaVtTmUizReu6fjN8uqzbQ=
|
||||||
github.com/sirupsen/logrus v1.9.3/go.mod h1:naHLuLoDiP4jHNo9R0sCBMtWGeIprob74mVsIT4qYEQ=
|
github.com/sirupsen/logrus v1.9.3/go.mod h1:naHLuLoDiP4jHNo9R0sCBMtWGeIprob74mVsIT4qYEQ=
|
||||||
|
|||||||
Reference in New Issue
Block a user