d70cd809617c0df4d17cab9c3e062f7b498bca16
[icn.git] / cmd / bpa-restapi-agent / api / api.go
1 // api/api_images.go
2
3
4 package api
5
6 import (
7         image "bpa-restapi-agent/internal/app"
8
9         "github.com/gorilla/mux"
10 )
11
12 // NewRouter creates a router that registers the various urls that are supported
13 func NewRouter(binaryClient image.ImageManager,
14                                                          containerClient image.ImageManager,
15                                                          osClient image.ImageManager) *mux.Router {
16
17         router := mux.NewRouter()
18
19         //Setup the image uploaad api handler here
20         if binaryClient == nil {
21                 binaryClient = image.NewBinaryImageClient()
22         }
23         binaryHandler := imageHandler{client: binaryClient}
24         imgRouter := router.PathPrefix("/v1").Subrouter()
25         imgRouter.HandleFunc("/baremetalcluster/{owner}/{clustername}/binary_images", binaryHandler.createHandler).Methods("POST")
26         imgRouter.HandleFunc("/baremetalcluster/{owner}/{clustername}/binary_images/{imgname}", binaryHandler.getHandler).Methods("GET")
27         imgRouter.HandleFunc("/baremetalcluster/{owner}/{clustername}/binary_images/{imgname}", binaryHandler.deleteHandler).Methods("DELETE")
28         imgRouter.HandleFunc("/baremetalcluster/{owner}/{clustername}/binary_images/{imgname}", binaryHandler.updateHandler).Methods("PUT")
29         imgRouter.HandleFunc("/baremetalcluster/{owner}/{clustername}/binary_images/{imgname}", binaryHandler.patchHandler).Methods("PATCH")
30
31         //Setup the _image upload api handler here
32         if containerClient == nil {
33                 containerClient = image.NewContainerImageClient()
34         }
35         containerHandler := imageHandler{client: containerClient}
36         imgRouter.HandleFunc("/baremetalcluster/{owner}/{clustername}/container_images", containerHandler.createHandler).Methods("POST")
37         imgRouter.HandleFunc("/baremetalcluster/{owner}/{clustername}/container_images/{imgname}", containerHandler.getHandler).Methods("GET")
38         imgRouter.HandleFunc("/baremetalcluster/{owner}/{clustername}/container_images/{imgname}", containerHandler.deleteHandler).Methods("DELETE")
39         imgRouter.HandleFunc("/baremetalcluster/{owner}/{clustername}/container_images/{imgname}", containerHandler.updateHandler).Methods("PUT")
40         imgRouter.HandleFunc("/baremetalcluster/{owner}/{clustername}/container_images/{imgname}", containerHandler.patchHandler).Methods("PATCH")
41
42         //Setup the os_image upload api handler here
43         if osClient == nil {
44                 osClient = image.NewOSImageClient()
45         }
46         osHandler := imageHandler{client: osClient}
47         imgRouter.HandleFunc("/baremetalcluster/{owner}/{clustername}/os_images", osHandler.createHandler).Methods("POST")
48         imgRouter.HandleFunc("/baremetalcluster/{owner}/{clustername}/os_images/{imgname}", osHandler.getHandler).Methods("GET")
49         imgRouter.HandleFunc("/baremetalcluster/{owner}/{clustername}/os_images/{imgname}", osHandler.deleteHandler).Methods("DELETE")
50         imgRouter.HandleFunc("/baremetalcluster/{owner}/{clustername}/os_images/{imgname}", osHandler.updateHandler).Methods("PUT")
51         imgRouter.HandleFunc("/baremetalcluster/{owner}/{clustername}/os_images/{imgname}", osHandler.patchHandler).Methods("PATCH")
52
53         return router
54 }