"net/http"
"net/url"
"path/filepath"
- "strconv"
"strings"
"time"
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 {
}
func (c *smsClient) createSecret(domain string, secret string,
-
values map[string]interface{}) error {
+
message := map[string]interface{}{
"name": secret,
"values": values,
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 {
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 {
"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))
}
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