X-Git-Url: https://gerrit.o-ran-sc.org/r/gitweb?a=blobdiff_plain;f=capifcore%2Fmain.go;h=ddba0dd5265fd18266f93da87843103c610ea3c1;hb=b4da1f981ba6717f5ec52e15ad1db257b5d6b7f3;hp=4e592c0afccae0a4ebfe7c1f2cdfedb6d0410569;hpb=31a8d98341c723394deb355dfc828eaaaa13ce6d;p=nonrtric%2Fplt%2Fsme.git diff --git a/capifcore/main.go b/capifcore/main.go index 4e592c0..ddba0dd 100644 --- a/capifcore/main.go +++ b/capifcore/main.go @@ -25,7 +25,10 @@ import ( "fmt" "net/http" + "github.com/getkin/kin-openapi/openapi3" "github.com/labstack/echo/v4" + "helm.sh/helm/v3/pkg/cli" + "oransc.org/nonrtric/capifcore/internal/common29122" "oransc.org/nonrtric/capifcore/internal/discoverserviceapi" "oransc.org/nonrtric/capifcore/internal/invokermanagementapi" "oransc.org/nonrtric/capifcore/internal/providermanagementapi" @@ -49,8 +52,8 @@ var repoName string func main() { var port = flag.Int("port", 8090, "Port for CAPIF Core Function HTTP server") - flag.StringVar(&url, "url", "http://chartmuseum:8080", "ChartMuseum url") - flag.StringVar(&repoName, "repoName", "local-dev", "Repository name") + flag.StringVar(&url, "chartMuseumUrl", "", "ChartMuseum URL") + flag.StringVar(&repoName, "repoName", "capifcore", "Repository name") var logLevelStr = flag.String("loglevel", "Info", "Log level") flag.Parse() @@ -59,11 +62,10 @@ func main() { } // Add repo - fmt.Printf("Adding %s to Helm Repo\n", url) - helmManager = helmmanagement.NewHelmManager() - err := helmManager.AddToRepo(repoName, url) + helmManager = helmmanagement.NewHelmManager(cli.New()) + err := helmManager.SetUpRepo(repoName, url) if err != nil { - log.Fatal(err.Error()) + log.Warnf("No Helm repo added due to: %s", err.Error()) } go startWebServer(getEcho(), *port) @@ -102,17 +104,6 @@ func getEcho() *echo.Echo { group.Use(middleware.OapiRequestValidator(publishServiceSwagger)) publishserviceapi.RegisterHandlersWithBaseURL(e, publishService, "/published-apis/v1") - // Register DiscoverService - discoverServiceSwagger, err := discoverserviceapi.GetSwagger() - if err != nil { - log.Fatalf("Error loading DiscoverService swagger spec\n: %s", err) - } - discoverServiceSwagger.Servers = nil - discoverService := discoverservice.NewDiscoverService(publishService) - group = e.Group("/service-apis/v1") - group.Use(middleware.OapiRequestValidator(discoverServiceSwagger)) - discoverserviceapi.RegisterHandlersWithBaseURL(e, discoverService, "/service-apis/v1") - // Register InvokerManagement invokerManagerSwagger, err := invokermanagementapi.GetSwagger() if err != nil { @@ -124,8 +115,19 @@ func getEcho() *echo.Echo { group.Use(middleware.OapiRequestValidator(invokerManagerSwagger)) invokermanagementapi.RegisterHandlersWithBaseURL(e, invokerManager, "/api-invoker-management/v1") + // Register DiscoverService + discoverServiceSwagger, err := discoverserviceapi.GetSwagger() + if err != nil { + log.Fatalf("Error loading DiscoverService swagger spec\n: %s", err) + } + discoverServiceSwagger.Servers = nil + discoverService := discoverservice.NewDiscoverService(invokerManager) + group = e.Group("/service-apis/v1") + group.Use(middleware.OapiRequestValidator(discoverServiceSwagger)) + discoverserviceapi.RegisterHandlersWithBaseURL(e, discoverService, "/service-apis/v1") + // Register Security - securitySwagger, err := publishserviceapi.GetSwagger() + securitySwagger, err := securityapi.GetSwagger() if err != nil { log.Fatalf("Error loading Security swagger spec\n: %s", err) } @@ -137,6 +139,8 @@ func getEcho() *echo.Echo { e.GET("/", hello) + e.GET("/swagger/:apiName", getSwagger) + return e } @@ -152,3 +156,33 @@ func keepServerAlive() { func hello(c echo.Context) error { return c.String(http.StatusOK, "Hello, World!\n") } + +func getSwagger(c echo.Context) error { + var swagger *openapi3.T + var err error + switch api := c.Param("apiName"); api { + case "provider": + swagger, err = providermanagementapi.GetSwagger() + case "publish": + swagger, err = publishserviceapi.GetSwagger() + case "invoker": + swagger, err = invokermanagementapi.GetSwagger() + case "discover": + swagger, err = discoverserviceapi.GetSwagger() + case "security": + swagger, err = securityapi.GetSwagger() + default: + return c.JSON(http.StatusBadRequest, getProblemDetails("Invalid API name "+api, http.StatusBadRequest)) + } + if err != nil { + return c.JSON(http.StatusInternalServerError, getProblemDetails("Unable to get swagger for API", http.StatusInternalServerError)) + } + return c.JSON(http.StatusOK, swagger) +} + +func getProblemDetails(cause string, status int) common29122.ProblemDetails { + return common29122.ProblemDetails{ + Cause: &cause, + Status: &status, + } +}