Creation of Policy Type Instance
[ric-plt/a1.git] / a1-go / pkg / restful / restful.go
index 37a7292..b494dab 100644 (file)
 package restful
 
 import (
-       "fmt"
        "log"
        "os"
 
+       "gerrit.o-ran-sc.org/r/ric-plt/a1/pkg/a1"
+       "gerrit.o-ran-sc.org/r/ric-plt/a1/pkg/models"
+       "gerrit.o-ran-sc.org/r/ric-plt/a1/pkg/restapi"
+       "gerrit.o-ran-sc.org/r/ric-plt/a1/pkg/restapi/operations"
+       "gerrit.o-ran-sc.org/r/ric-plt/a1/pkg/restapi/operations/a1_mediator"
+       "gerrit.o-ran-sc.org/r/ric-plt/a1/pkg/resthooks"
        "github.com/go-openapi/loads"
        "github.com/go-openapi/runtime/middleware"
-       "gerrit.o-ran-sc.org/r/ric-plt/a1/pkg/restapi"
-       "gerrit.o-ran-sc.org/r/ric-plt/a1/pkg/restapi/operations"
-       "gerrit.o-ran-sc.org/r/ric-plt/a1/pkg/restapi/operations/a1_mediator"
-       "gerrit.o-ran-sc.org/r/ric-plt/a1/pkg/resthooks"
 )
 
 func NewRestful() *Restful {
@@ -49,9 +50,40 @@ func (r *Restful) setupHandler() *operations.A1API {
 
        api := operations.NewA1API(swaggerSpec)
        api.A1MediatorA1ControllerGetAllPolicyTypesHandler = a1_mediator.A1ControllerGetAllPolicyTypesHandlerFunc(func(param a1_mediator.A1ControllerGetAllPolicyTypesParams) middleware.Responder {
-               fmt.Printf("\n---- handler for get all all policy type --- \n")
+               a1.Logger.Debug("handler for get all policy type")
                return a1_mediator.NewA1ControllerGetAllPolicyTypesOK().WithPayload(r.rh.GetAllPolicyType())
        })
+
+       api.A1MediatorA1ControllerCreatePolicyTypeHandler = a1_mediator.A1ControllerCreatePolicyTypeHandlerFunc(func(params a1_mediator.A1ControllerCreatePolicyTypeParams) middleware.Responder {
+               a1.Logger.Debug("handler for Create policy type ")
+               if err = r.rh.CreatePolicyType(models.PolicyTypeID(params.PolicyTypeID), *params.Body); err == nil {
+                       //Increase prometheus counter
+                       return a1_mediator.NewA1ControllerCreatePolicyTypeCreated()
+               }
+               if r.rh.IsTypeAlready(err) || r.rh.IsTypeMismatch(err) {
+                       return a1_mediator.NewA1ControllerCreatePolicyTypeBadRequest()
+               }
+               return a1_mediator.NewA1ControllerCreatePolicyTypeServiceUnavailable()
+
+       })
+
+       api.A1MediatorA1ControllerGetPolicyTypeHandler = a1_mediator.A1ControllerGetPolicyTypeHandlerFunc(func(params a1_mediator.A1ControllerGetPolicyTypeParams) middleware.Responder {
+               a1.Logger.Debug("handler for get policy type from policytypeID")
+               return a1_mediator.NewA1ControllerGetPolicyTypeOK().WithPayload(r.rh.GetPolicyType(models.PolicyTypeID(params.PolicyTypeID)))
+       })
+
+       api.A1MediatorA1ControllerCreateOrReplacePolicyInstanceHandler = a1_mediator.A1ControllerCreateOrReplacePolicyInstanceHandlerFunc(func(params a1_mediator.A1ControllerCreateOrReplacePolicyInstanceParams) middleware.Responder {
+               a1.Logger.Debug("handler for create policy type instance ")
+               if err = r.rh.CreatePolicyInstance(models.PolicyTypeID(params.PolicyTypeID), models.PolicyInstanceID(params.PolicyInstanceID), params.Body); err == nil {
+                       return a1_mediator.NewA1ControllerCreateOrReplacePolicyInstanceAccepted()
+               }
+               if r.rh.IsValidJson(err) {
+                       return a1_mediator.NewA1ControllerCreateOrReplacePolicyInstanceBadRequest()
+               }
+               return a1_mediator.NewA1ControllerCreateOrReplacePolicyInstanceServiceUnavailable()
+
+       })
+
        return api
 
 }