Add suport for query api on root level
[multicloud/k8s.git] / src / k8splugin / api / api.go
index 4a196ae..56e6db6 100644 (file)
@@ -1,6 +1,8 @@
 /*
 Copyright 2018 Intel Corporation.
 Copyright © 2021 Samsung Electronics
+Copyright © 2021 Orange
+
 Licensed under the Apache License, Version 2.0 (the "License");
 you may not use this file except in compliance with the License.
 You may obtain a copy of the License at
@@ -27,6 +29,7 @@ import (
 func NewRouter(defClient rb.DefinitionManager,
        profileClient rb.ProfileManager,
        instClient app.InstanceManager,
+       queryClient app.QueryManager,
        configClient app.ConfigManager,
        connectionClient connection.ConnectionManager,
        templateClient rb.ConfigTemplateManager,
@@ -56,8 +59,21 @@ func NewRouter(defClient rb.DefinitionManager,
                        "Name", "{Name}",
                        "Labels", "{Labels}").Methods("GET")
        instRouter.HandleFunc("/instance/{instID}", instHandler.deleteHandler).Methods("DELETE")
-       // (TODO): Fix update method
-       // instRouter.HandleFunc("/{vnfInstanceId}", UpdateHandler).Methods("PUT")
+
+       // Query handler routes
+       if queryClient == nil {
+               queryClient = app.NewQueryClient()
+       }
+       queryHandler := queryHandler{client: queryClient}
+       queryRouter := router.PathPrefix("/v1").Subrouter()
+       queryRouter.HandleFunc("/query", queryHandler.queryHandler).Methods("GET")
+       queryRouter.HandleFunc("/query", queryHandler.queryHandler).
+               Queries("Namespace", "{Namespace}",
+                       "CloudRegion", "{CloudRegion}",
+                       "ApiVersion", "{ApiVersion}",
+                       "Kind", "{Kind}",
+                       "Name", "{Name}",
+                       "Labels", "{Labels}").Methods("GET")
 
        //Setup the broker handler here
        //Use the base router without any path prefixes