A Kubernetes operator that bridges Hardware Security Module (HSM) data storage with Kubernetes Secrets, providing true secret portability th
1
fork

Configure Feed

Select the types of activity you want to include in your feed.

fix formatting

+7 -7
+1 -1
internal/api/proxy_handlers.go
··· 29 29 if namespace == "" { 30 30 namespace = "secrets" // Default namespace 31 31 } 32 - 32 + 33 33 // Find available agent (returns device name) 34 34 deviceName, err := s.findAvailableAgent(c.Request.Context(), namespace) 35 35 if err != nil {
+6 -6
internal/api/server.go
··· 199 199 func (s *Server) proxyToAgent(c *gin.Context, deviceName, path string) { 200 200 // Parse the REST API path and convert to gRPC call 201 201 method := c.Request.Method 202 - 202 + 203 203 // Extract namespace for finding device 204 204 namespace := c.GetHeader("X-Namespace") 205 205 if namespace == "" { ··· 234 234 if s.agentManager == nil { 235 235 return nil, fmt.Errorf("agent manager not available") 236 236 } 237 - 237 + 238 238 // Create gRPC client using AgentManager's existing method 239 239 grpcClient, err := s.agentManager.CreateSingleGRPCClient(ctx, deviceName, s.logger) 240 240 if err != nil { 241 241 return nil, fmt.Errorf("failed to create gRPC client for device %s: %w", deviceName, err) 242 242 } 243 - 243 + 244 244 return grpcClient, nil 245 245 } 246 246 ··· 248 248 func (s *Server) handleListSecrets(c *gin.Context, grpcClient hsm.Client) { 249 249 // Get query parameters 250 250 prefix := c.Query("prefix") 251 - 251 + 252 252 // Call gRPC ListSecrets 253 253 secrets, err := grpcClient.ListSecrets(c.Request.Context(), prefix) 254 254 if err != nil { ··· 257 257 }) 258 258 return 259 259 } 260 - 260 + 261 261 // Return the secrets in the expected format 262 262 response := map[string]any{ 263 263 "secrets": secrets, 264 264 "count": len(secrets), 265 265 } 266 - 266 + 267 267 s.sendResponse(c, http.StatusOK, "Secrets listed successfully", response) 268 268 }