Fixed time setting for udr posting; added product put to custoemrdb

master
Ubuntu 5 years ago
parent 3f1abb30ac
commit d85725b45a
  1. 48
      customerdb/client.go
  2. 11
      udr/udr.go

@ -11,10 +11,12 @@ package customerdbclient
import ( import (
"bytes" "bytes"
"encoding/json" "encoding/json"
l "gitlab.com/cyclops-utilities/logging" "errors"
"gitlab.com/cyclops-utilities/types"
"io/ioutil" "io/ioutil"
"net/http" "net/http"
l "gitlab.com/cyclops-utilities/logging"
"gitlab.com/cyclops-utilities/types"
) )
// CustomerDBService contains the endpoint where the customer db service lives... // CustomerDBService contains the endpoint where the customer db service lives...
@ -28,7 +30,7 @@ type CustomerDBService struct {
// correctly. // correctly.
func (s *CustomerDBService) CreateReseller(r types.Reseller) (success bool, err error) { func (s *CustomerDBService) CreateReseller(r types.Reseller) (success bool, err error) {
val, _ := json.Marshal(r) val, _ := json.Marshal(r)
// fmt.Printf("r= %+v\n", string(val)) l.Debug.Printf("r= %+v\n", string(val))
newCustomerEndpoint := s.Endpoint + "/reseller/" newCustomerEndpoint := s.Endpoint + "/reseller/"
req, err := http.NewRequest("POST", newCustomerEndpoint, bytes.NewBuffer(val)) req, err := http.NewRequest("POST", newCustomerEndpoint, bytes.NewBuffer(val))
req.Header.Set("Content-Type", "application/json") req.Header.Set("Content-Type", "application/json")
@ -47,7 +49,7 @@ func (s *CustomerDBService) CreateReseller(r types.Reseller) (success bool, err
defer resp.Body.Close() defer resp.Body.Close()
if err == nil { if err == nil {
if resp.StatusCode != http.StatusCreated { if (resp.StatusCode != http.StatusCreated) && (resp.StatusCode != http.StatusAccepted) {
l.Warning.Printf("Unexpected response Creating new Reseller record - Response Status: %v\n", resp.Status) l.Warning.Printf("Unexpected response Creating new Reseller record - Response Status: %v\n", resp.Status)
body, _ := ioutil.ReadAll(resp.Body) body, _ := ioutil.ReadAll(resp.Body)
l.Debug.Printf("Response Body: %v\n", string(body)) l.Debug.Printf("Response Body: %v\n", string(body))
@ -62,3 +64,41 @@ func (s *CustomerDBService) CreateReseller(r types.Reseller) (success bool, err
} }
return return
} }
// PutProduct puts a product under a given reseller - it takses as input the product
// which includes the customer id and posts it into the customer entry in the customerdb
// accordingly
func (s *CustomerDBService) PutProduct(p types.Product) (err error) {
val, _ := json.Marshal(p)
l.Debug.Printf("r= %+v\n", string(val))
productEndpoint := s.Endpoint + "/product/" + p.ProductId
req, err := http.NewRequest("PUT", productEndpoint, bytes.NewBuffer(val))
req.Header.Set("Content-Type", "application/json")
client := &http.Client{}
resp, err := client.Do(req)
if err != nil {
//panic(err)
l.Error.Printf("error = %v\n", err.Error())
return
}
//TODO(murp) - fixme...)
defer resp.Body.Close()
if err == nil {
if (resp.StatusCode != http.StatusCreated) && (resp.StatusCode != http.StatusAccepted) {
l.Warning.Printf("Unexpected response Creating new Reseller record - Response Status: %v\n", resp.Status)
body, _ := ioutil.ReadAll(resp.Body)
l.Debug.Printf("Response Body: %v\n", string(body))
err = errors.New("Unexpected response posting product to customerdb")
} else {
// this is the successful case - only dump output if in debug mode as this
// should be the default...
body, _ := ioutil.ReadAll(resp.Body)
l.Debug.Printf("Sending Cyclops Customer DB service - Response Status: %v, Response Body: %v\n", resp.Status, string(body))
}
}
return
}

@ -3,9 +3,11 @@ package udrclient
import ( import (
"bytes" "bytes"
"encoding/json" "encoding/json"
l "gitlab.com/cyclops-utilities/logging"
"io/ioutil" "io/ioutil"
"net/http" "net/http"
"time"
l "gitlab.com/cyclops-utilities/logging"
) )
// The UDRRecord is reasonably self-explanaroy - the one point that is a little // The UDRRecord is reasonably self-explanaroy - the one point that is a little
@ -42,6 +44,7 @@ func (u *UDRService) PostRecords(records []UDRRecord) (success bool, recordsWrit
recordsWritten = 0 recordsWritten = 0
for _, r := range records { for _, r := range records {
success, err = u.PostRecord(r) success, err = u.PostRecord(r)
// TODO(murp) - check if this works
if !success { if !success {
return return
} }
@ -57,6 +60,10 @@ func (u *UDRService) PostRecord(r UDRRecord) (success bool, err error) {
req, err := http.NewRequest("POST", u.Endpoint, bytes.NewBuffer(val)) req, err := http.NewRequest("POST", u.Endpoint, bytes.NewBuffer(val))
req.Header.Set("Content-Type", "application/json") req.Header.Set("Content-Type", "application/json")
if r.Time == 0 {
r.Time = time.Now().UnixNano() / int64(time.Millisecond)
}
client := &http.Client{} client := &http.Client{}
resp, err := client.Do(req) resp, err := client.Do(req)
@ -71,7 +78,7 @@ func (u *UDRService) PostRecord(r UDRRecord) (success bool, err error) {
if err == nil { if err == nil {
if resp.StatusCode != http.StatusCreated { if resp.StatusCode != http.StatusCreated {
l.Warning.Printf("Unexpected response POSTing to UDR - Response Status: %v\n", resp.Status) l.Warning.Printf("Unexpected response POSTing to UDR - Usage record: %v, Response Status: %v\n", r, resp.Status)
body, _ := ioutil.ReadAll(resp.Body) body, _ := ioutil.ReadAll(resp.Body)
l.Debug.Printf("Response Body: %v\n", string(body)) l.Debug.Printf("Response Body: %v\n", string(body))
success = false success = false

Loading…
Cancel
Save