From 8884165ffe5ee61086d16572ddb62aee897130ec Mon Sep 17 00:00:00 2001 From: Christopher Hase Date: Fri, 5 Sep 2025 11:24:01 +0200 Subject: [PATCH] feat(client): test environment --- Dockerfile.kaesekuchen | 7 ++++ internal/client/client.go | 18 ++++----- mock.log | 49 +++++++++++++++++++++++ mockprovider.sh | 13 ++++++ provider/provider.go | 4 +- test.sh | 84 +++++++++++++++++++++++++++++++++++++++ 6 files changed, 164 insertions(+), 11 deletions(-) create mode 100644 Dockerfile.kaesekuchen create mode 100644 mock.log create mode 100755 mockprovider.sh create mode 100755 test.sh diff --git a/Dockerfile.kaesekuchen b/Dockerfile.kaesekuchen new file mode 100644 index 0000000..e35789f --- /dev/null +++ b/Dockerfile.kaesekuchen @@ -0,0 +1,7 @@ +FROM golang AS builder +COPY . . +RUN go build -o /main main.go + +FROM ghcr.io/cloudbase/garm:nightly +COPY --from=builder ./main /opt/garm/providers.d/garm-provider-edge-connect +COPY mockprovider.sh /opt/garm/providers.d/mockprovider \ No newline at end of file diff --git a/internal/client/client.go b/internal/client/client.go index ddf5d9e..f6599e5 100644 --- a/internal/client/client.go +++ b/internal/client/client.go @@ -5,7 +5,7 @@ import ( "context" "encoding/json" "fmt" - "io" + "log" "net/http" ) @@ -48,12 +48,12 @@ func (e *EdgeConnect) NewAppInstance(ctx context.Context, input NewAppInstanceIn defer resp.Body.Close() - fmt.Printf("Header: %v\n", request.Header) + /*fmt.Printf("Header: %v\n", request.Header) bodyBytes, err := io.ReadAll(resp.Body) if err != nil { return err } - fmt.Printf("Response: %v\n", string(bodyBytes)) + fmt.Printf("Response: %v\n", string(bodyBytes))*/ return nil } @@ -83,12 +83,12 @@ func (e *EdgeConnect) NewApp(ctx context.Context, input NewAppInput) error { defer resp.Body.Close() - fmt.Printf("Header: %v\n", request.Header) + /*fmt.Printf("Header: %v\n", request.Header) bodyBytes, err := io.ReadAll(resp.Body) if err != nil { return err } - fmt.Printf("Response: %v\n", string(bodyBytes)) + fmt.Printf("Response: %v\n", string(bodyBytes))*/ return nil } @@ -379,11 +379,11 @@ func (e *EdgeConnect) DeleteApp(ctx context.Context, appkey AppKey, region strin } defer resp.Body.Close() - bodyBytes, err := io.ReadAll(resp.Body) + /*bodyBytes, err := io.ReadAll(resp.Body) if err != nil { return err } - fmt.Printf("Response: %v\n", string(bodyBytes)) + fmt.Printf("Response: %v\n", string(bodyBytes))*/ return nil } @@ -427,11 +427,11 @@ func (e *EdgeConnect) DeleteAppInstance(ctx context.Context, appinstancekey AppI } defer resp.Body.Close() - bodyBytes, err := io.ReadAll(resp.Body) + /*bodyBytes, err := io.ReadAll(resp.Body) if err != nil { return err } - fmt.Printf("Response: %v%v\n", resp.StatusCode, string(bodyBytes)) + fmt.Printf("Response: %v%v\n", resp.StatusCode, string(bodyBytes))*/ return nil } diff --git a/mock.log b/mock.log new file mode 100644 index 0000000..3668718 --- /dev/null +++ b/mock.log @@ -0,0 +1,49 @@ +AWS_ACCESS_KEY_ID=CABTBZ2WB8LX94V6EDJK +AWS_REQUEST_CHECKSUM_CALCULATION=when_required +AWS_RESPONSE_CHECKSUM_VALIDATION=when_required +AWS_SECRET_ACCESS_KEY=CUlNepW5q7nfCFQqDIY4egYjmDED4Z2KrK1TriyQ +COLORTERM=truecolor +DBUS_SESSION_BUS_ADDRESS=unix:path=/run/user/1000/bus +DISPLAY=:0 +GIT_ASKPASS=/home/chris/.vscode-server/bin/7adae6a56e34cb64d08899664b814cf620465925/extensions/git/dist/askpass.sh +HOME=/home/chris +HOSTTYPE=x86_64 +KUBECONFIG=kubeconfig.yaml +LANG=C.UTF-8 +LESSCLOSE=/usr/bin/lesspipe %s %s +LESSOPEN=| /usr/bin/lesspipe %s +LOGNAME=chris +LS_COLORS=rs=0:di=01;34:ln=01;36:mh=00:pi=40;33:so=01;35:do=01;35:bd=40;33;01:cd=40;33;01:or=40;31;01:mi=00:su=37;41:sg=30;43:ca=00:tw=30;42:ow=34;42:st=37;44:ex=01;32:*.tar=01;31:*.tgz=01;31:*.arc=01;31:*.arj=01;31:*.taz=01;31:*.lha=01;31:*.lz4=01;31:*.lzh=01;31:*.lzma=01;31:*.tlz=01;31:*.txz=01;31:*.tzo=01;31:*.t7z=01;31:*.zip=01;31:*.z=01;31:*.dz=01;31:*.gz=01;31:*.lrz=01;31:*.lz=01;31:*.lzo=01;31:*.xz=01;31:*.zst=01;31:*.tzst=01;31:*.bz2=01;31:*.bz=01;31:*.tbz=01;31:*.tbz2=01;31:*.tz=01;31:*.deb=01;31:*.rpm=01;31:*.jar=01;31:*.war=01;31:*.ear=01;31:*.sar=01;31:*.rar=01;31:*.alz=01;31:*.ace=01;31:*.zoo=01;31:*.cpio=01;31:*.7z=01;31:*.rz=01;31:*.cab=01;31:*.wim=01;31:*.swm=01;31:*.dwm=01;31:*.esd=01;31:*.avif=01;35:*.jpg=01;35:*.jpeg=01;35:*.mjpg=01;35:*.mjpeg=01;35:*.gif=01;35:*.bmp=01;35:*.pbm=01;35:*.pgm=01;35:*.ppm=01;35:*.tga=01;35:*.xbm=01;35:*.xpm=01;35:*.tif=01;35:*.tiff=01;35:*.png=01;35:*.svg=01;35:*.svgz=01;35:*.mng=01;35:*.pcx=01;35:*.mov=01;35:*.mpg=01;35:*.mpeg=01;35:*.m2v=01;35:*.mkv=01;35:*.webm=01;35:*.webp=01;35:*.ogm=01;35:*.mp4=01;35:*.m4v=01;35:*.mp4v=01;35:*.vob=01;35:*.qt=01;35:*.nuv=01;35:*.wmv=01;35:*.asf=01;35:*.rm=01;35:*.rmvb=01;35:*.flc=01;35:*.avi=01;35:*.fli=01;35:*.flv=01;35:*.gl=01;35:*.dl=01;35:*.xcf=01;35:*.xwd=01;35:*.yuv=01;35:*.cgm=01;35:*.emf=01;35:*.ogv=01;35:*.ogx=01;35:*.aac=00;36:*.au=00;36:*.flac=00;36:*.m4a=00;36:*.mid=00;36:*.midi=00;36:*.mka=00;36:*.mp3=00;36:*.mpc=00;36:*.ogg=00;36:*.ra=00;36:*.wav=00;36:*.oga=00;36:*.opus=00;36:*.spx=00;36:*.xspf=00;36:*~=00;90:*#=00;90:*.bak=00;90:*.crdownload=00;90:*.dpkg-dist=00;90:*.dpkg-new=00;90:*.dpkg-old=00;90:*.dpkg-tmp=00;90:*.old=00;90:*.orig=00;90:*.part=00;90:*.rej=00;90:*.rpmnew=00;90:*.rpmorig=00;90:*.rpmsave=00;90:*.swp=00;90:*.tmp=00;90:*.ucf-dist=00;90:*.ucf-new=00;90:*.ucf-old=00;90: +NAME=rdde02m1 +NVM_BIN=/home/chris/.nvm/versions/node/v20.18.1/bin +NVM_CD_FLAGS= +NVM_DIR=/home/chris/.nvm +NVM_INC=/home/chris/.nvm/versions/node/v20.18.1/include/node +OLDPWD=/home/chris/ipcei/projects +OS_ACCESS_KEY=CABTBZ2WB8LX94V6EDJK +OS_SECRET_KEY=CUlNepW5q7nfCFQqDIY4egYjmDED4Z2KrK1TriyQ +PATH=/usr/local/go/bin:/home/chris/.vscode-server/bin/7adae6a56e34cb64d08899664b814cf620465925/bin/remote-cli:/usr/local/go/bin:/usr/local/go/bin:/home/chris/.nvm/versions/node/v20.18.1/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/usr/lib/wsl/lib:/mnt/c/Python313/Scripts/:/mnt/c/Python313/:/mnt/c/Program Files/Common Files/Oracle/Java/javapath:/mnt/c/ProgramData/Oracle/Java/javapath:/mnt/c/WINDOWS/system32:/mnt/c/WINDOWS:/mnt/c/WINDOWS/System32/Wbem:/mnt/c/WINDOWS/System32/WindowsPowerShell/v1.0/:/mnt/c/WINDOWS/System32/OpenSSH/:/mnt/c/Program Files (x86)/dotnet/:/mnt/c/Program Files/RedHat/java-11-openjdk-11.0.16-1/bin:/mnt/c/Program Files/Git/cmd:/mnt/c/Users/cihe/AppData/Local/Microsoft/WindowsApps:/mnt/c/Program Files/JetBrains/IntelliJ IDEA 2022.2.3/bin:/mnt/c/Program Files/JetBrains/IntelliJ IDEA Community Edition 2022.2.3/bin:/mnt/c/Users/cihe/AppData/Local/Programs/Python/Python310/Scripts:/mnt/c/ProgramData/chocolatey/bin:/mnt/c/Program Files/Docker/Docker/resources/bin:/mnt/c/Program Files/dotnet/:/mnt/c/Program Files/Go/bin:/mnt/c/Program Files/nodejs/:/mnt/c/Users/cihe/AppData/Local/Microsoft/WindowsApps:/mnt/c/Program Files/JetBrains/IntelliJ IDEA 2022.2.3/bin:/mnt/c/Program Files/JetBrains/IntelliJ IDEA Community Edition 2022.2.3/bin:/mnt/c/Users/cihe/tools/sonarscanner/bin:/mnt/c/Users/cihe/AppData/Local/GitHubDesktop/bin:/mnt/c/Users/cihe/go/bin:/mnt/c/Users/cihe/AppData/Local/Programs/Microsoft VS Code/bin:/mnt/c/Users/cihe/AppData/Roaming/npm:/snap/bin:/home/chris/.cargo/bin:/home/chris/go/bin:/home/chris/go/bin:/home/chris/.cargo/bin:/home/chris/go/bin +PULSE_SERVER=unix:/mnt/wslg/PulseServer +PWD=/home/chris/ipcei/projects/garm-provider-edge-connect +SHELL=/bin/bash +SHLVL=1 +TERM=xterm-256color +TERM_PROGRAM=vscode +TERM_PROGRAM_VERSION=1.102.1 +USER=chris +VSCODE_GIT_ASKPASS_EXTRA_ARGS= +VSCODE_GIT_ASKPASS_MAIN=/home/chris/.vscode-server/bin/7adae6a56e34cb64d08899664b814cf620465925/extensions/git/dist/askpass-main.js +VSCODE_GIT_ASKPASS_NODE=/home/chris/.vscode-server/bin/7adae6a56e34cb64d08899664b814cf620465925/node +VSCODE_GIT_IPC_HANDLE=/run/user/1000/vscode-git-e78a6d970e.sock +VSCODE_IPC_HOOK_CLI=/run/user/1000/vscode-ipc-9f03a1c6-beb1-48e2-a965-568262339ebf.sock +WAYLAND_DISPLAY=wayland-0 +WSL2_GUI_APPS_ENABLED=1 +WSLENV=VSCODE_WSL_EXT_LOCATION/up +WSL_DISTRO_NAME=Ubuntu +WSL_INTEROP=/run/WSL/1066_interop +XDG_DATA_DIRS=/usr/local/share:/usr/share:/var/lib/snapd/desktop +XDG_RUNTIME_DIR=/run/user/1000/ +_=./mockprovider.sh +Parameters asd asd +stdin lala +======================================================================================= diff --git a/mockprovider.sh b/mockprovider.sh new file mode 100755 index 0000000..497765d --- /dev/null +++ b/mockprovider.sh @@ -0,0 +1,13 @@ +#!/bin/sh + +LOG_FILE=./mock.log +env | sort | grep -v PASSWORD >> $LOG_FILE +echo Parameters $@ >> $LOG_FILE + +while read line +do + echo stdin "$line" >> $LOG_FILE +done < "/dev/stdin" + +echo ======================================================================================= >> $LOG_FILE + diff --git a/provider/provider.go b/provider/provider.go index 195d698..cfbfffd 100644 --- a/provider/provider.go +++ b/provider/provider.go @@ -325,12 +325,12 @@ func (a *edgeConnectProvider) RemoveAllInstances(ctx context.Context) error { // Stop shuts down the instance. func (a *edgeConnectProvider) Stop(ctx context.Context, instance string, force bool) error { - return nil + panic(fmt.Sprintf("Stop() not implemented, called with instance: %s, force: %t", instance, force)) } // Start boots up an instance. func (a *edgeConnectProvider) Start(ctx context.Context, instance string) error { - return nil + panic(fmt.Sprintf("Start() not implemented, called with instance: %s", instance)) } // GetVersion returns the version of the provider. diff --git a/test.sh b/test.sh new file mode 100755 index 0000000..c390d3e --- /dev/null +++ b/test.sh @@ -0,0 +1,84 @@ +#!/bin/bash + +export GARM_COMMAND="CreateInstance" +export GARM_CONTROLLER_ID="50cb196d" +export GARM_INTERFACE_VERSION="v0.1.0" +export GARM_POOL_ID="50fa68a5" +export GARM_PROVIDER_CONFIG_FILE="/home/chris/ipcei/projects/garm-provider-edge-connect/config/config.toml" + +cat <