fix: updating to the smarter client

This commit is contained in:
Aditya
2025-11-21 19:23:17 +05:30
parent afc9c6cfc7
commit b6f56ed7a2
5 changed files with 50 additions and 23 deletions
+9 -6
View File
@@ -21,7 +21,6 @@ import (
"github.com/docker/docker/api/types" "github.com/docker/docker/api/types"
//"github.com/docker/docker/api/types/container" //"github.com/docker/docker/api/types/container"
"github.com/docker/docker/api/types/image" "github.com/docker/docker/api/types/image"
"github.com/docker/docker/client"
newdockerclient "github.com/fsouza/go-dockerclient" newdockerclient "github.com/fsouza/go-dockerclient"
"github.com/go-git/go-billy/v5" "github.com/go-git/go-billy/v5"
@@ -35,12 +34,13 @@ import (
"os" "os"
"strings" "strings"
"time"
batchv1 "k8s.io/api/batch/v1" batchv1 "k8s.io/api/batch/v1"
corev1 "k8s.io/api/core/v1" corev1 "k8s.io/api/core/v1"
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
"k8s.io/client-go/kubernetes" "k8s.io/client-go/kubernetes"
"k8s.io/client-go/rest" "k8s.io/client-go/rest"
"time"
// "k8s.io/client-go/tools/clientcmd" // "k8s.io/client-go/tools/clientcmd"
// "k8s.io/client-go/util/homedir" // "k8s.io/client-go/util/homedir"
) )
@@ -206,7 +206,8 @@ func fixTags(tags []string) []string {
// Custom Docker image builder wrapper in memory // Custom Docker image builder wrapper in memory
func buildImageMemory(fs billy.Filesystem, tags []string, dockerfileFolder string, downloadIfFail bool) error { func buildImageMemory(fs billy.Filesystem, tags []string, dockerfileFolder string, downloadIfFail bool) error {
ctx := context.Background() ctx := context.Background()
client, err := client.NewEnvClient() // client, err := client.NewEnvClient()
client, _, err := shuffle.GetDockerClient()
defer client.Close() defer client.Close()
if err != nil { if err != nil {
log.Printf("Unable to create docker client: %s", err) log.Printf("Unable to create docker client: %s", err)
@@ -474,7 +475,8 @@ func buildImage(tags []string, dockerfileLocation string) error {
} }
ctx := context.Background() ctx := context.Background()
client, err := client.NewEnvClient() // client, err := client.NewEnvClient()
client, _, err := shuffle.GetDockerClient()
defer client.Close() defer client.Close()
if err != nil { if err != nil {
log.Printf("Unable to create docker client: %s", err) log.Printf("Unable to create docker client: %s", err)
@@ -562,7 +564,8 @@ func imageCheckBuilder(images []string) error {
return nil return nil
ctx := context.Background() ctx := context.Background()
client, err := client.NewEnvClient() // client, err := client.NewEnvClient()
client, _, err := shuffle.GetDockerClient()
if err != nil { if err != nil {
log.Printf("Unable to create docker client: %s", err) log.Printf("Unable to create docker client: %s", err)
return err return err
@@ -651,7 +654,7 @@ func getDockerImage(resp http.ResponseWriter, request *http.Request) {
} }
//log.Printf("[DEBUG] Image to load: %s", version.Name) //log.Printf("[DEBUG] Image to load: %s", version.Name)
dockercli, err := client.NewEnvClient() dockercli, _, err := shuffle.GetDockerClient()
if err != nil { if err != nil {
log.Printf("[WARNING] Unable to create docker client: %s", err) log.Printf("[WARNING] Unable to create docker client: %s", err)
resp.WriteHeader(422) resp.WriteHeader(422)
+4 -3
View File
@@ -3,7 +3,7 @@ package main
import ( import (
uuid "github.com/satori/go.uuid" uuid "github.com/satori/go.uuid"
"github.com/shuffle/shuffle-shared" "github.com/shuffle/shuffle-shared"
"github.com/shuffle/singul/pkg" singul "github.com/shuffle/singul/pkg"
"net/http/pprof" "net/http/pprof"
@@ -44,11 +44,12 @@ import (
"github.com/go-git/go-git/v5/storage/memory" "github.com/go-git/go-git/v5/storage/memory"
// Random // Random
"sort"
xj "github.com/basgys/goxml2json" xj "github.com/basgys/goxml2json"
newscheduler "github.com/carlescere/scheduler" newscheduler "github.com/carlescere/scheduler"
"golang.org/x/crypto/bcrypt" "golang.org/x/crypto/bcrypt"
"gopkg.in/yaml.v3" "gopkg.in/yaml.v3"
"sort"
// Web // Web
"github.com/gorilla/mux" "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/getsettings", shuffle.HandleSettings).Methods("GET", "OPTIONS")
r.HandleFunc("/api/v1/users/getusers", shuffle.HandleGetUsers).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/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/{user}", shuffle.DeleteUser).Methods("DELETE", "OPTIONS")
r.HandleFunc("/api/v1/users/passwordchange", shuffle.HandlePasswordChange).Methods("POST", "OPTIONS") r.HandleFunc("/api/v1/users/passwordchange", shuffle.HandlePasswordChange).Methods("POST", "OPTIONS")
r.HandleFunc("/api/v1/users/{key}/get2fa", shuffle.HandleGet2fa).Methods("GET", "OPTIONS") r.HandleFunc("/api/v1/users/{key}/get2fa", shuffle.HandleGet2fa).Methods("GET", "OPTIONS")
+3 -2
View File
@@ -11,6 +11,7 @@ import (
"io" "io"
"io/ioutil" "io/ioutil"
"log" "log"
//"math/rand" //"math/rand"
"net/http" "net/http"
"net/url" "net/url"
@@ -21,7 +22,6 @@ import (
"time" "time"
"github.com/docker/docker/api/types/image" "github.com/docker/docker/api/types/image"
dockerclient "github.com/docker/docker/client"
"github.com/h2non/filetype" "github.com/h2non/filetype"
uuid "github.com/satori/go.uuid" uuid "github.com/satori/go.uuid"
@@ -3527,7 +3527,8 @@ func LoadSpecificApps(resp http.ResponseWriter, request *http.Request) {
// As it's not even Docker // As it's not even Docker
if tmpBody.ForceUpdate { if tmpBody.ForceUpdate {
dockercli, err := dockerclient.NewEnvClient() // dockercli, err := dockerclient.NewEnvClient()
dockercli, _, err := shuffle.GetDockerClient()
if err == nil { if err == nil {
appSdk := os.Getenv("SHUFFLE_APP_SDK_VERSION") appSdk := os.Getenv("SHUFFLE_APP_SDK_VERSION")
+2 -1
View File
@@ -136,7 +136,8 @@ var window = shuffle.NewTimeWindow(1 * time.Minute)
func init() { func init() {
var err error var err error
dockercli, err = dockerclient.NewEnvClient() // dockercli, err = dockerclient.NewEnvClient()
dockercli, dockerApiVersion, err = shuffle.GetDockerClient()
if err != nil { if err != nil {
log.Printf("Unable to create docker client: %s", err) log.Printf("Unable to create docker client: %s", err)
} }
+32 -11
View File
@@ -1246,7 +1246,8 @@ func DeployContainer(ctx context.Context, cli *dockerclient.Client, config *cont
func removeContainer(containername string) error { func removeContainer(containername string) error {
ctx := context.Background() ctx := context.Background()
cli, err := dockerclient.NewEnvClient() // cli, err := dockerclient.NewEnvClient()
cli, _, err := shuffle.GetDockerClient()
if err != nil { if err != nil {
log.Printf("[DEBUG] Unable to create docker client: %s", err) log.Printf("[DEBUG] Unable to create docker client: %s", err)
return err return err
@@ -1344,7 +1345,8 @@ func getWorkerURLs() ([]string, error) {
} }
// Create a new Docker client // Create a new Docker client
cli, err := dockerclient.NewEnvClient() // cli, err := dockerclient.NewEnvClient()
cli, _, err := shuffle.GetDockerClient()
if err != nil { if err != nil {
log.Println("[ERROR] Failed to create Docker client:", err) log.Println("[ERROR] Failed to create Docker client:", err)
return workerUrls, err return workerUrls, err
@@ -1461,7 +1463,8 @@ func handleExecutionResult(workflowExecution shuffle.WorkflowExecution) {
var err error var err error
if isKubernetes != "true" { if isKubernetes != "true" {
dockercli, err = dockerclient.NewEnvClient() // dockercli, err = dockerclient.NewEnvClient()
dockercli, _, err = shuffle.GetDockerClient()
if err != nil { if err != nil {
log.Printf("[ERROR] Unable to create docker client (3): %s", err) log.Printf("[ERROR] Unable to create docker client (3): %s", err)
return return
@@ -3581,7 +3584,8 @@ func findAppInfo(image, name string, redeploy bool) (int, error) {
//Filters: //Filters:
if exposedPort == -1 || redeploy { if exposedPort == -1 || redeploy {
dockercli, err := dockerclient.NewEnvClient() // dockercli, err := dockerclient.NewEnvClient()
dockercli, _, err := shuffle.GetDockerClient()
if err != nil { if err != nil {
log.Printf("[ERROR] Unable to create docker client (2): %s", err) log.Printf("[ERROR] Unable to create docker client (2): %s", err)
return -1, err return -1, err
@@ -3693,7 +3697,8 @@ func findAppInfo(image, name string, redeploy bool) (int, error) {
if exposedPort >= 0 { if exposedPort >= 0 {
//log.Printf("[INFO] Found service %s on port %d - no need to deploy another", name, exposedPort) //log.Printf("[INFO] Found service %s on port %d - no need to deploy another", name, exposedPort)
} else { } else {
dockercli, err := dockerclient.NewEnvClient() // dockercli, err := dockerclient.NewEnvClient()
dockercli, _, err := shuffle.GetDockerClient()
if err != nil { if err != nil {
log.Printf("[ERROR] Unable to create docker client (2): %s", err) log.Printf("[ERROR] Unable to create docker client (2): %s", err)
return -1, err return -1, err
@@ -3771,7 +3776,8 @@ func findAppInfoKubernetes(image, name string, env []string) error {
// Backups in case networks are removed // Backups in case networks are removed
func initSwarmNetwork() error { func initSwarmNetwork() error {
ctx := context.Background() ctx := context.Background()
dockercli, err := dockerclient.NewEnvClient() // dockercli, err := dockerclient.NewEnvClient()
dockercli, _, err := shuffle.GetDockerClient()
if err != nil { if err != nil {
log.Printf("[ERROR] Unable to create docker client (2): %s", err) log.Printf("[ERROR] Unable to create docker client (2): %s", err)
return err return err
@@ -4077,7 +4083,8 @@ func baseDeploy() {
//var err error //var err error
if isKubernetes != "true" { if isKubernetes != "true" {
cli, err := dockerclient.NewEnvClient() // cli, err := dockerclient.NewEnvClient()
cli, _, err := shuffle.GetDockerClient()
if err != nil { if err != nil {
log.Printf("[ERROR] Unable to create docker client (3): %s", err) log.Printf("[ERROR] Unable to create docker client (3): %s", err)
return return
@@ -4818,7 +4825,8 @@ func handleDownloadImage(resp http.ResponseWriter, request *http.Request) {
return return
} }
client, err := dockerclient.NewEnvClient() // client, err := dockerclient.NewEnvClient()
client, _, err := shuffle.GetDockerClient()
if err != nil { if err != nil {
log.Printf("[ERROR] Unable to create docker client (4): %s", err) log.Printf("[ERROR] Unable to create docker client (4): %s", err)
resp.WriteHeader(401) 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 { 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{}) services, err := client.ServiceList(ctx, types.ServiceListOptions{})
if err != nil { if err != nil {
log.Printf("[ERROR] Failed to find services in the swarm: %s", err) 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 { if dockercli == nil {
dockercli, err = dockerclient.NewEnvClient() // dockercli, err = dockerclient.NewEnvClient()
dockercli, _, err = shuffle.GetDockerClient()
if err != nil { if err != nil {
log.Printf("[ERROR] Unable to create docker client (5): %s", err) log.Printf("[ERROR] Unable to create docker client (5): %s", err)
return 0 return 0
@@ -5147,7 +5162,13 @@ func IsServiceRunning(ctx context.Context, cli *dockerclient.Client) bool {
} }
func numberOfWorkers(ctx context.Context, cli *dockerclient.Client) int { 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{}) service, _, err := cli.ServiceInspectWithRaw(ctx, "shuffle-workers", types.ServiceInspectOptions{})
if err != nil { if err != nil {
return 0 return 0