From 815ed0961a8d8db46b9032d2f2204fb06df3f57e Mon Sep 17 00:00:00 2001 From: w3lld1 <42353747+w3lld1@users.noreply.github.com> Date: Thu, 30 Jul 2026 03:32:52 +0200 Subject: [PATCH 1/3] feat: expose the running server version (#544) Signed-off-by: w3lld1 <42353747+w3lld1@users.noreply.github.com> --- cmd/interlink/main.go | 1 + pkg/interlink/api/version.go | 22 ++++++++++++++++++++++ pkg/interlink/api/version_test.go | 30 ++++++++++++++++++++++++++++++ 3 files changed, 53 insertions(+) create mode 100644 pkg/interlink/api/version.go create mode 100644 pkg/interlink/api/version_test.go diff --git a/cmd/interlink/main.go b/cmd/interlink/main.go index acb29825..094f6000 100644 --- a/cmd/interlink/main.go +++ b/cmd/interlink/main.go @@ -193,6 +193,7 @@ func main() { mutex.HandleFunc("/pinglink", interLinkAPIs.Ping) mutex.HandleFunc("/getLogs", interLinkAPIs.GetLogsHandler) mutex.HandleFunc("/updateCache", interLinkAPIs.UpdateCacheHandler) + mutex.HandleFunc("/version", api.VersionHandler(virtualkubelet.KubeletVersion)) interLinkEndpoint := "" switch { diff --git a/pkg/interlink/api/version.go b/pkg/interlink/api/version.go new file mode 100644 index 00000000..314a58ac --- /dev/null +++ b/pkg/interlink/api/version.go @@ -0,0 +1,22 @@ +package api + +import ( + "encoding/json" + "net/http" +) + +// VersionHandler reports the version of the running interLink server. +func VersionHandler(version string) http.HandlerFunc { + return func(w http.ResponseWriter, r *http.Request) { + if r.Method != http.MethodGet { + w.Header().Set("Allow", http.MethodGet) + w.WriteHeader(http.StatusMethodNotAllowed) + return + } + + w.Header().Set("Content-Type", "application/json") + _ = json.NewEncoder(w).Encode(struct { + Version string `json:"version"` + }{Version: version}) + } +} diff --git a/pkg/interlink/api/version_test.go b/pkg/interlink/api/version_test.go new file mode 100644 index 00000000..a34a413e --- /dev/null +++ b/pkg/interlink/api/version_test.go @@ -0,0 +1,30 @@ +package api + +import ( + "net/http" + "net/http/httptest" + "testing" + + "github.com/stretchr/testify/require" +) + +func TestVersionHandlerReturnsRunningVersion(t *testing.T) { + recorder := httptest.NewRecorder() + request := httptest.NewRequest(http.MethodGet, "/version", nil) + + VersionHandler("1.2.3").ServeHTTP(recorder, request) + + require.Equal(t, http.StatusOK, recorder.Code) + require.Equal(t, "application/json", recorder.Header().Get("Content-Type")) + require.JSONEq(t, `{"version":"1.2.3"}`, recorder.Body.String()) +} + +func TestVersionHandlerRejectsNonGetRequests(t *testing.T) { + recorder := httptest.NewRecorder() + request := httptest.NewRequest(http.MethodPost, "/version", nil) + + VersionHandler("1.2.3").ServeHTTP(recorder, request) + + require.Equal(t, http.StatusMethodNotAllowed, recorder.Code) + require.Equal(t, http.MethodGet, recorder.Header().Get("Allow")) +} From 9ecebd455d56358f7c8a243f90574d071a6d008f Mon Sep 17 00:00:00 2001 From: w3lld1 <42353747+w3lld1@users.noreply.github.com> Date: Thu, 30 Jul 2026 03:38:47 +0200 Subject: [PATCH 2/3] fix: check version response encoding errors Signed-off-by: w3lld1 <42353747+w3lld1@users.noreply.github.com> --- pkg/interlink/api/version.go | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/pkg/interlink/api/version.go b/pkg/interlink/api/version.go index 314a58ac..3a0f7fd3 100644 --- a/pkg/interlink/api/version.go +++ b/pkg/interlink/api/version.go @@ -15,8 +15,10 @@ func VersionHandler(version string) http.HandlerFunc { } w.Header().Set("Content-Type", "application/json") - _ = json.NewEncoder(w).Encode(struct { + if err := json.NewEncoder(w).Encode(struct { Version string `json:"version"` - }{Version: version}) + }{Version: version}); err != nil { + return + } } } From 64cff911a04b4027096d489b7e87db44a932e04a Mon Sep 17 00:00:00 2001 From: w3lld1 <42353747+w3lld1@users.noreply.github.com> Date: Sun, 23 Aug 2026 11:09:38 +0200 Subject: [PATCH 3/3] fix: report the interLink server version Signed-off-by: w3lld1 <42353747+w3lld1@users.noreply.github.com> --- cmd/interlink/main.go | 2 +- cmd/virtual-kubelet/set-version.sh | 5 +++++ pkg/interlink/version.go | 4 ++++ 3 files changed, 10 insertions(+), 1 deletion(-) create mode 100644 pkg/interlink/version.go diff --git a/cmd/interlink/main.go b/cmd/interlink/main.go index 094f6000..4be4c500 100644 --- a/cmd/interlink/main.go +++ b/cmd/interlink/main.go @@ -193,7 +193,7 @@ func main() { mutex.HandleFunc("/pinglink", interLinkAPIs.Ping) mutex.HandleFunc("/getLogs", interLinkAPIs.GetLogsHandler) mutex.HandleFunc("/updateCache", interLinkAPIs.UpdateCacheHandler) - mutex.HandleFunc("/version", api.VersionHandler(virtualkubelet.KubeletVersion)) + mutex.HandleFunc("/version", api.VersionHandler(interlink.Version)) interLinkEndpoint := "" switch { diff --git a/cmd/virtual-kubelet/set-version.sh b/cmd/virtual-kubelet/set-version.sh index d55fffa3..f33d7579 100755 --- a/cmd/virtual-kubelet/set-version.sh +++ b/cmd/virtual-kubelet/set-version.sh @@ -8,4 +8,9 @@ var ( KubeletVersion = "$KUBELET_VERSION" ) EOF +cat << EOF > pkg/interlink/version.go +package interlink + +var Version = "$KUBELET_VERSION" +EOF fi diff --git a/pkg/interlink/version.go b/pkg/interlink/version.go new file mode 100644 index 00000000..39bd7636 --- /dev/null +++ b/pkg/interlink/version.go @@ -0,0 +1,4 @@ +package interlink + +// Version is the version of the running interLink server. +var Version = "test"