@@ -19,13 +19,15 @@ import (
1919 "github.com/open-policy-agent/opa-control-plane/internal/metrics"
2020 "github.com/open-policy-agent/opa-control-plane/internal/server/chain"
2121 "github.com/open-policy-agent/opa-control-plane/internal/server/types"
22+ "github.com/open-policy-agent/opa-control-plane/internal/service"
2223)
2324
2425const defaultTenant = "default"
2526
2627type Server struct {
2728 router * http.ServeMux
2829 db * database.Database
30+ svc * service.Service
2931 readyFn func (context.Context ) error
3032 apiPrefix string
3133}
@@ -64,6 +66,7 @@ func (s *Server) Init() *Server {
6466 setup ("GET" , "/v1/bundles/{bundle}" , s .v1BundlesGet )
6567 setup ("PUT" , "/v1/bundles/{bundle}" , s .v1BundlesPut )
6668 setup ("DELETE" , "/v1/bundles/{bundle}" , s .v1BundlesDelete )
69+ setup ("POST" , "/v1/bundles/{bundle}" , s .v1BundlesPost )
6770
6871 setup ("GET" , "/v1/stacks" , s .v1StacksList )
6972 setup ("GET" , "/v1/stacks/{stack}" , s .v1StacksGet )
@@ -83,6 +86,11 @@ func (s *Server) WithRouter(router *http.ServeMux) *Server {
8386 return s
8487}
8588
89+ func (s * Server ) WithService (svc * service.Service ) * Server {
90+ s .svc = svc
91+ return s
92+ }
93+
8694func (s * Server ) WithDatabase (db * database.Database ) * Server {
8795 s .db = db
8896 return s
@@ -184,6 +192,24 @@ func (s *Server) v1BundlesGet(w http.ResponseWriter, r *http.Request) {
184192 JSONOK (w , resp , pretty (r ))
185193}
186194
195+ func (s * Server ) v1BundlesPost (w http.ResponseWriter , r * http.Request ) {
196+ ctx := r .Context ()
197+
198+ name , err := url .PathUnescape (r .PathValue ("bundle" ))
199+ if err != nil {
200+ ErrorString (w , http .StatusBadRequest , types .CodeInvalidParameter , err )
201+ return
202+ }
203+
204+ if err := s .svc .Trigger (ctx , s .auth (r ), name ); err != nil {
205+ errorAuto (w , err )
206+ return
207+ }
208+
209+ resp := types.BundlesPostResponseV1 {}
210+ JSONOK (w , resp , pretty (r ))
211+ }
212+
187213func (s * Server ) v1BundlesDelete (w http.ResponseWriter , r * http.Request ) {
188214 ctx := r .Context ()
189215
0 commit comments