Skip to content

Commit 0ddaa0f

Browse files
rdimitrovdmjb
andauthored
Remove the deprecated registry handlers (#891)
Signed-off-by: Radoslav Dimitrov <[email protected]> Co-authored-by: Don Browne <[email protected]>
1 parent 3b9bc79 commit 0ddaa0f

File tree

10 files changed

+155
-162
lines changed

10 files changed

+155
-162
lines changed

cmd/thv/app/registry.go

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -54,7 +54,11 @@ func init() {
5454

5555
func registryListCmdFunc(_ *cobra.Command, _ []string) error {
5656
// Get all servers from registry
57-
servers, err := registry.ListServers()
57+
provider, err := registry.GetDefaultProvider()
58+
if err != nil {
59+
return fmt.Errorf("failed to get registry provider: %v", err)
60+
}
61+
servers, err := provider.ListServers()
5862
if err != nil {
5963
return fmt.Errorf("failed to list servers: %v", err)
6064
}
@@ -77,7 +81,11 @@ func registryListCmdFunc(_ *cobra.Command, _ []string) error {
7781
func registryInfoCmdFunc(_ *cobra.Command, args []string) error {
7882
// Get server information
7983
serverName := args[0]
80-
server, err := registry.GetServer(serverName)
84+
provider, err := registry.GetDefaultProvider()
85+
if err != nil {
86+
return fmt.Errorf("failed to get registry provider: %v", err)
87+
}
88+
server, err := provider.GetServer(serverName)
8189
if err != nil {
8290
return fmt.Errorf("failed to get server information: %v", err)
8391
}

cmd/thv/app/search.go

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,11 @@ func init() {
3535
func searchCmdFunc(_ *cobra.Command, args []string) error {
3636
// Search for servers
3737
query := args[0]
38-
servers, err := registry.SearchServers(query)
38+
provider, err := registry.GetDefaultProvider()
39+
if err != nil {
40+
return fmt.Errorf("failed to get registry provider: %v", err)
41+
}
42+
servers, err := provider.SearchServers(query)
3943
if err != nil {
4044
return fmt.Errorf("failed to search servers: %v", err)
4145
}

pkg/api/server.go

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,7 @@ import (
3131
"github.com/stacklok/toolhive/pkg/client"
3232
"github.com/stacklok/toolhive/pkg/container"
3333
"github.com/stacklok/toolhive/pkg/logger"
34+
"github.com/stacklok/toolhive/pkg/registry"
3435
"github.com/stacklok/toolhive/pkg/workloads"
3536
)
3637

@@ -125,6 +126,12 @@ func Serve(
125126
return fmt.Errorf("failed to create container runtime: %v", err)
126127
}
127128

129+
// Create registry provider
130+
registryProvider, err := registry.GetDefaultProvider()
131+
if err != nil {
132+
return fmt.Errorf("failed to create registry provider: %v", err)
133+
}
134+
128135
clientManager, err := client.NewManager(ctx)
129136
if err != nil {
130137
return fmt.Errorf("failed to create client manager: %v", err)
@@ -133,7 +140,7 @@ func Serve(
133140
"/health": v1.HealthcheckRouter(rt),
134141
"/api/v1beta/version": v1.VersionRouter(),
135142
"/api/v1beta/workloads": v1.WorkloadRouter(manager, rt, debugMode),
136-
"/api/v1beta/registry": v1.RegistryRouter(),
143+
"/api/v1beta/registry": v1.RegistryRouter(registryProvider),
137144
"/api/v1beta/discovery": v1.DiscoveryRouter(),
138145
"/api/v1beta/clients": v1.ClientRouter(clientManager),
139146
"/api/v1beta/secrets": v1.SecretsRouter(),

pkg/api/v1/registry.go

Lines changed: 13 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -16,11 +16,13 @@ const (
1616
)
1717

1818
// RegistryRoutes defines the routes for the registry API.
19-
type RegistryRoutes struct{}
19+
type RegistryRoutes struct {
20+
provider registry.Provider
21+
}
2022

2123
// RegistryRouter creates a new router for the registry API.
22-
func RegistryRouter() http.Handler {
23-
routes := RegistryRoutes{}
24+
func RegistryRouter(provider registry.Provider) http.Handler {
25+
routes := RegistryRoutes{provider: provider}
2426

2527
r := chi.NewRouter()
2628
r.Get("/", routes.listRegistries)
@@ -44,8 +46,8 @@ func RegistryRouter() http.Handler {
4446
// @Produce json
4547
// @Success 200 {object} registryListResponse
4648
// @Router /api/v1beta/registry [get]
47-
func (*RegistryRoutes) listRegistries(w http.ResponseWriter, _ *http.Request) {
48-
reg, err := registry.GetRegistry()
49+
func (routes *RegistryRoutes) listRegistries(w http.ResponseWriter, _ *http.Request) {
50+
reg, err := routes.provider.GetRegistry()
4951
if err != nil {
5052
http.Error(w, "Failed to get registry", http.StatusInternalServerError)
5153
return
@@ -93,7 +95,7 @@ func (*RegistryRoutes) addRegistry(w http.ResponseWriter, _ *http.Request) {
9395
// @Success 200 {object} getRegistryResponse
9496
// @Failure 404 {string} string "Not Found"
9597
// @Router /api/v1beta/registry/{name} [get]
96-
func (*RegistryRoutes) getRegistry(w http.ResponseWriter, r *http.Request) {
98+
func (routes *RegistryRoutes) getRegistry(w http.ResponseWriter, r *http.Request) {
9799
name := chi.URLParam(r, "name")
98100

99101
// Only "default" registry is supported currently
@@ -102,7 +104,7 @@ func (*RegistryRoutes) getRegistry(w http.ResponseWriter, r *http.Request) {
102104
return
103105
}
104106

105-
reg, err := registry.GetRegistry()
107+
reg, err := routes.provider.GetRegistry()
106108
if err != nil {
107109
http.Error(w, "Failed to get registry", http.StatusInternalServerError)
108110
return
@@ -157,7 +159,7 @@ func (*RegistryRoutes) removeRegistry(w http.ResponseWriter, r *http.Request) {
157159
// @Success 200 {object} listServersResponse
158160
// @Failure 404 {string} string "Not Found"
159161
// @Router /api/v1beta/registry/{name}/servers [get]
160-
func (*RegistryRoutes) listServers(w http.ResponseWriter, r *http.Request) {
162+
func (routes *RegistryRoutes) listServers(w http.ResponseWriter, r *http.Request) {
161163
registryName := chi.URLParam(r, "name")
162164

163165
// Only "default" registry is supported currently
@@ -166,7 +168,7 @@ func (*RegistryRoutes) listServers(w http.ResponseWriter, r *http.Request) {
166168
return
167169
}
168170

169-
servers, err := registry.ListServers()
171+
servers, err := routes.provider.ListServers()
170172
if err != nil {
171173
logger.Errorf("Failed to list servers: %v", err)
172174
http.Error(w, "Failed to list servers", http.StatusInternalServerError)
@@ -193,7 +195,7 @@ func (*RegistryRoutes) listServers(w http.ResponseWriter, r *http.Request) {
193195
// @Success 200 {object} getServerResponse
194196
// @Failure 404 {string} string "Not Found"
195197
// @Router /api/v1beta/registry/{name}/servers/{serverName} [get]
196-
func (*RegistryRoutes) getServer(w http.ResponseWriter, r *http.Request) {
198+
func (routes *RegistryRoutes) getServer(w http.ResponseWriter, r *http.Request) {
197199
registryName := chi.URLParam(r, "name")
198200
serverName := chi.URLParam(r, "serverName")
199201

@@ -203,7 +205,7 @@ func (*RegistryRoutes) getServer(w http.ResponseWriter, r *http.Request) {
203205
return
204206
}
205207

206-
server, err := registry.GetServer(serverName)
208+
server, err := routes.provider.GetServer(serverName)
207209
if err != nil {
208210
logger.Errorf("Failed to get server '%s': %v", serverName, err)
209211
http.Error(w, "ImageMetadata not found", http.StatusNotFound)
File renamed without changes.
File renamed without changes.

pkg/registry/provider_test.go

Lines changed: 114 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -129,3 +129,117 @@ func getTypeName(v interface{}) string {
129129
return "unknown"
130130
}
131131
}
132+
133+
func TestGetRegistry(t *testing.T) {
134+
t.Parallel()
135+
provider, err := GetDefaultProvider()
136+
if err != nil {
137+
t.Fatalf("Failed to get registry provider: %v", err)
138+
}
139+
reg, err := provider.GetRegistry()
140+
if err != nil {
141+
t.Fatalf("Failed to get registry: %v", err)
142+
}
143+
144+
if reg == nil {
145+
t.Fatal("Registry is nil")
146+
return
147+
}
148+
149+
if reg.Version == "" {
150+
t.Error("Registry version is empty")
151+
}
152+
153+
if reg.LastUpdated == "" {
154+
t.Error("Registry last updated is empty")
155+
}
156+
157+
if len(reg.Servers) == 0 {
158+
t.Error("Registry has no servers")
159+
}
160+
}
161+
162+
func TestGetServer(t *testing.T) {
163+
t.Parallel()
164+
// Test getting an existing server
165+
provider, err := GetDefaultProvider()
166+
if err != nil {
167+
t.Fatalf("Failed to get registry provider: %v", err)
168+
}
169+
server, err := provider.GetServer("brave-search")
170+
if err != nil {
171+
t.Fatalf("Failed to get server: %v", err)
172+
}
173+
174+
if server == nil {
175+
t.Fatal("ImageMetadata is nil")
176+
return
177+
}
178+
179+
if server.Image == "" {
180+
t.Error("ImageMetadata image is empty")
181+
}
182+
183+
if server.Description == "" {
184+
t.Error("ImageMetadata description is empty")
185+
}
186+
187+
// Test getting a non-existent server
188+
_, err = provider.GetServer("non-existent-server")
189+
if err == nil {
190+
t.Error("Expected error when getting non-existent server")
191+
}
192+
}
193+
194+
func TestSearchServers(t *testing.T) {
195+
t.Parallel()
196+
// Test searching for servers
197+
provider, err := GetDefaultProvider()
198+
if err != nil {
199+
t.Fatalf("Failed to get registry provider: %v", err)
200+
}
201+
servers, err := provider.SearchServers("search")
202+
if err != nil {
203+
t.Fatalf("Failed to search servers: %v", err)
204+
}
205+
206+
if len(servers) == 0 {
207+
t.Error("No servers found for search query")
208+
}
209+
210+
// Test searching for non-existent servers
211+
servers, err = provider.SearchServers("non-existent-server")
212+
if err != nil {
213+
t.Fatalf("Failed to search servers: %v", err)
214+
}
215+
216+
if len(servers) > 0 {
217+
t.Errorf("Expected no servers for non-existent query, got %d", len(servers))
218+
}
219+
}
220+
221+
func TestListServers(t *testing.T) {
222+
t.Parallel()
223+
provider, err := GetDefaultProvider()
224+
if err != nil {
225+
t.Fatalf("Failed to get registry provider: %v", err)
226+
}
227+
servers, err := provider.ListServers()
228+
if err != nil {
229+
t.Fatalf("Failed to list servers: %v", err)
230+
}
231+
232+
if len(servers) == 0 {
233+
t.Error("No servers found")
234+
}
235+
236+
// Verify that we get the same number of servers as in the registry
237+
reg, err := provider.GetRegistry()
238+
if err != nil {
239+
t.Fatalf("Failed to get registry: %v", err)
240+
}
241+
242+
if len(servers) != len(reg.Servers) {
243+
t.Errorf("Expected %d servers, got %d", len(reg.Servers), len(servers))
244+
}
245+
}

pkg/registry/registry.go

Lines changed: 0 additions & 42 deletions
This file was deleted.

0 commit comments

Comments
 (0)