RIC-1059: dms_cli to use flask-restx
[ric-plt/appmgr.git] / pkg / restful / restful.go
index 86f2cf0..e6bebb7 100755 (executable)
@@ -23,7 +23,6 @@ import (
        "encoding/json"
        "errors"
        "fmt"
-       //"io/ioutil"
        "log"
        "net/http"
        "os"
@@ -76,6 +75,7 @@ func (r *Restful) Run() {
 
        appmgr.Logger.Info("Xapp manager started ... serving on %s:%d\n", server.Host, server.Port)
 
+       go r.symptomdataServer()
        go r.RetrieveApps()
        if err := server.Serve(); err != nil {
                log.Fatal(err.Error())
@@ -210,6 +210,7 @@ func httpGetXAppsconfig(url string) *string {
        appmgr.Logger.Info("Invoked httprestful.httpGetXApps: " + url)
        resp, err := http.Get(url)
        if err != nil {
+               appmgr.Logger.Error("Error while querying config to Xapp: ", err.Error())
                return nil
        }
        defer resp.Body.Close()
@@ -320,7 +321,6 @@ func (r *Restful) PrepareConfig(params models.RegisterRequest, updateflag bool)
                if xappconfig != nil {
                        data := parseConfig(xappconfig)
                        if data != nil {
-                               appmgr.Logger.Info("iRetry Count = %v", i)
                                var xapp models.Xapp
 
                                xapp.Name = params.AppName
@@ -336,8 +336,9 @@ func (r *Restful) PrepareConfig(params models.RegisterRequest, updateflag bool)
                        if configPresent == true {
                                break
                        }
-                       time.Sleep(2 * time.Second)
                }
+               appmgr.Logger.Info("Retrying query configuration from xapp, try no : %d", i)
+               time.Sleep(4 * time.Second)
        }
        return nil, errors.New("Unable to get configmap after 5 retries")
 }
@@ -427,3 +428,26 @@ func (r *Restful) getAppConfig() (configList models.AllXappConfig) {
        }
        return
 }
+
+func (r *Restful) symptomdataServer() {
+       http.HandleFunc("/ric/v1/symptomdata", func(w http.ResponseWriter, req *http.Request) {
+               d, _ := r.GetApps()
+               xappData := struct {
+                       XappList         models.AllDeployedXapps `json:"xappList"`
+                       ConfigList       models.AllXappConfig    `json:"configList"`
+                       SubscriptionList models.AllSubscriptions `json:"subscriptionList"`
+               }{
+                       d,
+                       r.getAppConfig(),
+                       r.rh.GetAllSubscriptions(),
+               }
+
+               w.Header().Set("Content-Type", "application/json")
+               w.Header().Set("Content-Disposition", "attachment; filename=platform/apps_info.json")
+               w.WriteHeader(http.StatusOK)
+               resp, _ := json.MarshalIndent(xappData, "", "    ")
+               w.Write(resp)
+       })
+
+       http.ListenAndServe(":8081", nil)
+}