X-Git-Url: https://gerrit.onap.org/r/gitweb?a=blobdiff_plain;f=sms-service%2Fsrc%2Fpreload%2Fpreload.go;h=2e654facbd23a5ae2d504fd2ecd6870816e1c5e5;hb=90144a5ec60d7941cf8bbd81dc3e525df981c0d3;hp=cbf345fa292678732f5d7fa2abc59b9e515c9730;hpb=b3254568d65e53c564a846a666fa6af912c9b474;p=aaf%2Fsms.git diff --git a/sms-service/src/preload/preload.go b/sms-service/src/preload/preload.go index cbf345f..2e654fa 100644 --- a/sms-service/src/preload/preload.go +++ b/sms-service/src/preload/preload.go @@ -28,7 +28,6 @@ import ( "net/http" "net/url" "path/filepath" - "strconv" "strings" "time" @@ -116,13 +115,51 @@ func (c *smsClient) init() error { return nil } -func (c *smsClient) sendPostRequest(relURL string, message map[string]interface{}) error { +func (c *smsClient) resolveURL(relURL string) (*url.URL, error) { rel, err := url.Parse(relURL) + if err != nil { + return nil, pkgerrors.Cause(err) + } + + return c.BaseURL.ResolveReference(rel), nil + +} + +func (c *smsClient) sendGetRequest(relURL string) (map[string]interface{}, error) { + + u, err := c.resolveURL(relURL) + if err != nil { + return nil, pkgerrors.Cause(err) + } + + resp, err := c.httpClient.Get(u.String()) + if err != nil { + return nil, pkgerrors.Cause(err) + } + + if resp.StatusCode >= 400 && resp.StatusCode < 600 { + // Request Failed + errText, _ := ioutil.ReadAll(resp.Body) + return nil, pkgerrors.Errorf("Request Failed with: %s and Error: %s", + resp.Status, string(errText)) + } + + var result map[string]interface{} + err = json.NewDecoder(resp.Body).Decode(&result) + if err != nil { + return nil, pkgerrors.Cause(err) + } + + return result, nil +} + +func (c *smsClient) sendPostRequest(relURL string, message map[string]interface{}) error { + + u, err := c.resolveURL(relURL) if err != nil { return pkgerrors.Cause(err) } - u := c.BaseURL.ResolveReference(rel) body, err := json.Marshal(message) if err != nil { @@ -158,8 +195,8 @@ func (c *smsClient) createDomain(domain string) error { } func (c *smsClient) createSecret(domain string, secret string, - values map[string]interface{}) error { + message := map[string]interface{}{ "name": secret, "values": values, @@ -174,6 +211,22 @@ func (c *smsClient) createSecret(domain string, secret string, return nil } +func (c *smsClient) isReady() bool { + + url := "v1/sms/quorum/status" + res, err := c.sendGetRequest(url) + if err != nil { + fmt.Println(pkgerrors.Cause(err)) + return false + } + + if res["sealstatus"] == true { + return false + } + + return true +} + //uploadToSMS reads through the domain or domains and uploads //their corresponding secrets to SMS service func (c *smsClient) uploadToSMS(data DataJSON) error { @@ -190,6 +243,18 @@ func (c *smsClient) uploadToSMS(data DataJSON) error { return pkgerrors.New("Invalid JSON Data. No domain or domains found") } + isReady := make(chan bool) + go func() { + for c.isReady() == false { + time.Sleep(5 * time.Second) + fmt.Println("Waiting for SMS to accept requests...") + } + isReady <- true + }() + <-isReady + + fmt.Println("Uploading data...") + for _, d := range ldata { err := c.createDomain(d.Name) if err != nil { @@ -213,19 +278,26 @@ func main() { "Path to the CA Certificate file") serviceurl := flag.String("serviceurl", "https://aaf-sms.onap", "Url for the SMS Service") - serviceport := flag.Int("serviceport", 10443, + serviceport := flag.String("serviceport", "10443", "Service port if its different than the default") jsondir := flag.String("jsondir", ".", "Folder containing json files to upload") flag.Parse() + //Clear all trailing/leading spaces from incoming strings + *cacert = strings.TrimSpace(*cacert) + *serviceurl = strings.TrimSpace(*serviceurl) + *serviceport = strings.TrimSpace(*serviceport) + *jsondir = strings.TrimSpace(*jsondir) + files, err := ioutil.ReadDir(*jsondir) if err != nil { log.Fatal(pkgerrors.Cause(err)) } - serviceURL, err := url.Parse(*serviceurl + ":" + strconv.Itoa(*serviceport)) + //URL validity is checked here + serviceURL, err := url.Parse(*serviceurl + ":" + *serviceport) if err != nil { log.Fatal(pkgerrors.Cause(err)) } @@ -239,8 +311,8 @@ func main() { for _, file := range files { if filepath.Ext(file.Name()) == ".json" { - fmt.Println("Processing ", file.Name()) - d, err := processJSONFile(file.Name()) + fmt.Println("Processing ", filepath.Join(*jsondir, file.Name())) + d, err := processJSONFile(filepath.Join(*jsondir, file.Name())) if err != nil { log.Printf("Error Reading %s : %s", file.Name(), pkgerrors.Cause(err)) continue