From b6f56ed7a2881ef62df6c20ef5ff37cf69651bda Mon Sep 17 00:00:00 2001 From: Aditya <60684641+0x0elliot@users.noreply.github.com> Date: Fri, 21 Nov 2025 19:23:17 +0530 Subject: [PATCH] fix: updating to the smarter client --- backend/go-app/docker.go | 15 ++++++---- backend/go-app/main.go | 7 +++-- backend/go-app/walkoff.go | 5 ++-- functions/onprem/orborus/orborus.go | 3 +- functions/onprem/worker/worker.go | 43 +++++++++++++++++++++-------- 5 files changed, 50 insertions(+), 23 deletions(-) diff --git a/backend/go-app/docker.go b/backend/go-app/docker.go index 122f5847..954ce587 100755 --- a/backend/go-app/docker.go +++ b/backend/go-app/docker.go @@ -21,7 +21,6 @@ import ( "github.com/docker/docker/api/types" //"github.com/docker/docker/api/types/container" "github.com/docker/docker/api/types/image" - "github.com/docker/docker/client" newdockerclient "github.com/fsouza/go-dockerclient" "github.com/go-git/go-billy/v5" @@ -35,12 +34,13 @@ import ( "os" "strings" + "time" + batchv1 "k8s.io/api/batch/v1" corev1 "k8s.io/api/core/v1" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" "k8s.io/client-go/kubernetes" "k8s.io/client-go/rest" - "time" // "k8s.io/client-go/tools/clientcmd" // "k8s.io/client-go/util/homedir" ) @@ -206,7 +206,8 @@ func fixTags(tags []string) []string { // Custom Docker image builder wrapper in memory func buildImageMemory(fs billy.Filesystem, tags []string, dockerfileFolder string, downloadIfFail bool) error { ctx := context.Background() - client, err := client.NewEnvClient() + // client, err := client.NewEnvClient() + client, _, err := shuffle.GetDockerClient() defer client.Close() if err != nil { log.Printf("Unable to create docker client: %s", err) @@ -474,7 +475,8 @@ func buildImage(tags []string, dockerfileLocation string) error { } ctx := context.Background() - client, err := client.NewEnvClient() + // client, err := client.NewEnvClient() + client, _, err := shuffle.GetDockerClient() defer client.Close() if err != nil { log.Printf("Unable to create docker client: %s", err) @@ -562,7 +564,8 @@ func imageCheckBuilder(images []string) error { return nil ctx := context.Background() - client, err := client.NewEnvClient() + // client, err := client.NewEnvClient() + client, _, err := shuffle.GetDockerClient() if err != nil { log.Printf("Unable to create docker client: %s", err) return err @@ -651,7 +654,7 @@ func getDockerImage(resp http.ResponseWriter, request *http.Request) { } //log.Printf("[DEBUG] Image to load: %s", version.Name) - dockercli, err := client.NewEnvClient() + dockercli, _, err := shuffle.GetDockerClient() if err != nil { log.Printf("[WARNING] Unable to create docker client: %s", err) resp.WriteHeader(422) diff --git a/backend/go-app/main.go b/backend/go-app/main.go index 5f54465a..e6d2def0 100755 --- a/backend/go-app/main.go +++ b/backend/go-app/main.go @@ -3,7 +3,7 @@ package main import ( uuid "github.com/satori/go.uuid" "github.com/shuffle/shuffle-shared" - "github.com/shuffle/singul/pkg" + singul "github.com/shuffle/singul/pkg" "net/http/pprof" @@ -44,11 +44,12 @@ import ( "github.com/go-git/go-git/v5/storage/memory" // Random + "sort" + xj "github.com/basgys/goxml2json" newscheduler "github.com/carlescere/scheduler" "golang.org/x/crypto/bcrypt" "gopkg.in/yaml.v3" - "sort" // Web "github.com/gorilla/mux" @@ -5433,7 +5434,7 @@ func initHandlers() { r.HandleFunc("/api/v1/users/getsettings", shuffle.HandleSettings).Methods("GET", "OPTIONS") r.HandleFunc("/api/v1/users/getusers", shuffle.HandleGetUsers).Methods("GET", "OPTIONS") r.HandleFunc("/api/v1/users/updateuser", shuffle.HandleUpdateUser).Methods("PUT", "OPTIONS") - r.HandleFunc("/api/v1/users/{userID}/remove", shuffle.HandleDeleteUsersAccount).Methods("DELETE", "OPTIONS") + // r.HandleFunc("/api/v1/users/{userID}/remove", shuffle.HandleDeleteUsersAccount).Methods("DELETE", "OPTIONS") r.HandleFunc("/api/v1/users/{user}", shuffle.DeleteUser).Methods("DELETE", "OPTIONS") r.HandleFunc("/api/v1/users/passwordchange", shuffle.HandlePasswordChange).Methods("POST", "OPTIONS") r.HandleFunc("/api/v1/users/{key}/get2fa", shuffle.HandleGet2fa).Methods("GET", "OPTIONS") diff --git a/backend/go-app/walkoff.go b/backend/go-app/walkoff.go index 0c015470..f4b2e21c 100755 --- a/backend/go-app/walkoff.go +++ b/backend/go-app/walkoff.go @@ -11,6 +11,7 @@ import ( "io" "io/ioutil" "log" + //"math/rand" "net/http" "net/url" @@ -21,7 +22,6 @@ import ( "time" "github.com/docker/docker/api/types/image" - dockerclient "github.com/docker/docker/client" "github.com/h2non/filetype" uuid "github.com/satori/go.uuid" @@ -3527,7 +3527,8 @@ func LoadSpecificApps(resp http.ResponseWriter, request *http.Request) { // As it's not even Docker if tmpBody.ForceUpdate { - dockercli, err := dockerclient.NewEnvClient() + // dockercli, err := dockerclient.NewEnvClient() + dockercli, _, err := shuffle.GetDockerClient() if err == nil { appSdk := os.Getenv("SHUFFLE_APP_SDK_VERSION") diff --git a/functions/onprem/orborus/orborus.go b/functions/onprem/orborus/orborus.go index 365f368a..3f0fffaf 100755 --- a/functions/onprem/orborus/orborus.go +++ b/functions/onprem/orborus/orborus.go @@ -136,7 +136,8 @@ var window = shuffle.NewTimeWindow(1 * time.Minute) func init() { var err error - dockercli, err = dockerclient.NewEnvClient() + // dockercli, err = dockerclient.NewEnvClient() + dockercli, dockerApiVersion, err = shuffle.GetDockerClient() if err != nil { log.Printf("Unable to create docker client: %s", err) } diff --git a/functions/onprem/worker/worker.go b/functions/onprem/worker/worker.go index caa160b3..abf793fc 100644 --- a/functions/onprem/worker/worker.go +++ b/functions/onprem/worker/worker.go @@ -1246,7 +1246,8 @@ func DeployContainer(ctx context.Context, cli *dockerclient.Client, config *cont func removeContainer(containername string) error { ctx := context.Background() - cli, err := dockerclient.NewEnvClient() + // cli, err := dockerclient.NewEnvClient() + cli, _, err := shuffle.GetDockerClient() if err != nil { log.Printf("[DEBUG] Unable to create docker client: %s", err) return err @@ -1344,7 +1345,8 @@ func getWorkerURLs() ([]string, error) { } // Create a new Docker client - cli, err := dockerclient.NewEnvClient() + // cli, err := dockerclient.NewEnvClient() + cli, _, err := shuffle.GetDockerClient() if err != nil { log.Println("[ERROR] Failed to create Docker client:", err) return workerUrls, err @@ -1461,7 +1463,8 @@ func handleExecutionResult(workflowExecution shuffle.WorkflowExecution) { var err error if isKubernetes != "true" { - dockercli, err = dockerclient.NewEnvClient() + // dockercli, err = dockerclient.NewEnvClient() + dockercli, _, err = shuffle.GetDockerClient() if err != nil { log.Printf("[ERROR] Unable to create docker client (3): %s", err) return @@ -3581,7 +3584,8 @@ func findAppInfo(image, name string, redeploy bool) (int, error) { //Filters: if exposedPort == -1 || redeploy { - dockercli, err := dockerclient.NewEnvClient() + // dockercli, err := dockerclient.NewEnvClient() + dockercli, _, err := shuffle.GetDockerClient() if err != nil { log.Printf("[ERROR] Unable to create docker client (2): %s", err) return -1, err @@ -3693,7 +3697,8 @@ func findAppInfo(image, name string, redeploy bool) (int, error) { if exposedPort >= 0 { //log.Printf("[INFO] Found service %s on port %d - no need to deploy another", name, exposedPort) } else { - dockercli, err := dockerclient.NewEnvClient() + // dockercli, err := dockerclient.NewEnvClient() + dockercli, _, err := shuffle.GetDockerClient() if err != nil { log.Printf("[ERROR] Unable to create docker client (2): %s", err) return -1, err @@ -3771,7 +3776,8 @@ func findAppInfoKubernetes(image, name string, env []string) error { // Backups in case networks are removed func initSwarmNetwork() error { ctx := context.Background() - dockercli, err := dockerclient.NewEnvClient() + // dockercli, err := dockerclient.NewEnvClient() + dockercli, _, err := shuffle.GetDockerClient() if err != nil { log.Printf("[ERROR] Unable to create docker client (2): %s", err) return err @@ -4077,7 +4083,8 @@ func baseDeploy() { //var err error if isKubernetes != "true" { - cli, err := dockerclient.NewEnvClient() + // cli, err := dockerclient.NewEnvClient() + cli, _, err := shuffle.GetDockerClient() if err != nil { log.Printf("[ERROR] Unable to create docker client (3): %s", err) return @@ -4818,7 +4825,8 @@ func handleDownloadImage(resp http.ResponseWriter, request *http.Request) { return } - client, err := dockerclient.NewEnvClient() + // client, err := dockerclient.NewEnvClient() + client, _, err := shuffle.GetDockerClient() if err != nil { log.Printf("[ERROR] Unable to create docker client (4): %s", err) resp.WriteHeader(401) @@ -4982,7 +4990,13 @@ func AutoScaleApps(ctx context.Context, client *dockerclient.Client, maxExecutio } func scaleApps(ctx context.Context, client *dockerclient.Client, replicas uint64) error { - client, err := dockerclient.NewEnvClient() + // client, err := dockerclient.NewEnvClient() + client, _, err := shuffle.GetDockerClient() + if err != nil { + log.Printf("[ERROR] Unable to create docker client (scaleApps): %s", err) + return err + } + services, err := client.ServiceList(ctx, types.ServiceListOptions{}) if err != nil { log.Printf("[ERROR] Failed to find services in the swarm: %s", err) @@ -5060,7 +5074,8 @@ func numberOfApps(ctx context.Context, dockercli *dockerclient.Client) int { } if dockercli == nil { - dockercli, err = dockerclient.NewEnvClient() + // dockercli, err = dockerclient.NewEnvClient() + dockercli, _, err = shuffle.GetDockerClient() if err != nil { log.Printf("[ERROR] Unable to create docker client (5): %s", err) return 0 @@ -5147,7 +5162,13 @@ func IsServiceRunning(ctx context.Context, cli *dockerclient.Client) bool { } func numberOfWorkers(ctx context.Context, cli *dockerclient.Client) int { - cli, err := dockerclient.NewEnvClient() + // cli, err := dockerclient.NewEnvClient() + cli, _, err := shuffle.GetDockerClient() + if err != nil { + log.Printf("[ERROR] Unable to create docker client (5): %s", err) + return 0 + } + service, _, err := cli.ServiceInspectWithRaw(ctx, "shuffle-workers", types.ServiceInspectOptions{}) if err != nil { return 0