| package hns |
| |
| import ( |
| "encoding/json" |
| "fmt" |
| |
| "github.com/Microsoft/hcsshim/internal/hcserror" |
| "github.com/Microsoft/hcsshim/internal/interop" |
| "github.com/sirupsen/logrus" |
| ) |
| |
| func hnsCall(method, path, request string, returnResponse interface{}) error { |
| var responseBuffer *uint16 |
| logrus.Debugf("[%s]=>[%s] Request : %s", method, path, request) |
| |
| err := _hnsCall(method, path, request, &responseBuffer) |
| if err != nil { |
| return hcserror.New(err, "hnsCall ", "") |
| } |
| response := interop.ConvertAndFreeCoTaskMemString(responseBuffer) |
| |
| hnsresponse := &hnsResponse{} |
| if err = json.Unmarshal([]byte(response), &hnsresponse); err != nil { |
| return err |
| } |
| |
| if !hnsresponse.Success { |
| return fmt.Errorf("HNS failed with error : %s", hnsresponse.Error) |
| } |
| |
| if len(hnsresponse.Output) == 0 { |
| return nil |
| } |
| |
| logrus.Debugf("Network Response : %s", hnsresponse.Output) |
| err = json.Unmarshal(hnsresponse.Output, returnResponse) |
| if err != nil { |
| return err |
| } |
| |
| return nil |
| } |