github.com/jfrog/jfrog-cli-go@v1.22.1-0.20200318093948-4826ef344ffd/missioncontrol/commands/licenseacquire.go (about) 1 package commands 2 3 import ( 4 "encoding/json" 5 "errors" 6 "github.com/jfrog/jfrog-cli-go/missioncontrol/utils" 7 "github.com/jfrog/jfrog-cli-go/utils/config" 8 "github.com/jfrog/jfrog-client-go/httpclient" 9 "github.com/jfrog/jfrog-client-go/utils/errorutils" 10 "github.com/jfrog/jfrog-client-go/utils/log" 11 "net/http" 12 ) 13 14 func LicenseAcquire(bucketId string, name string, mcDetails *config.MissionControlDetails) error { 15 postContent := LicenseAcquireRequestContent{ 16 Name: name, 17 LicenseCount: 1, 18 } 19 requestContent, err := json.Marshal(postContent) 20 if err != nil { 21 return errorutils.CheckError(errors.New("Failed to marshal json: " + err.Error())) 22 } 23 missionControlUrl := mcDetails.Url + "api/v1/buckets/" + bucketId + "/acquire" 24 httpClientDetails := utils.GetMissionControlHttpClientDetails(mcDetails) 25 client, err := httpclient.ClientBuilder().Build() 26 if err != nil { 27 return err 28 } 29 resp, body, err := client.SendPost(missionControlUrl, requestContent, httpClientDetails) 30 if err != nil { 31 return err 32 } 33 if resp.StatusCode != http.StatusOK { 34 return errorutils.CheckError(errors.New(resp.Status + ". " + utils.ReadMissionControlHttpMessage(body))) 35 } 36 log.Debug("Mission Control response: " + resp.Status) 37 38 // Extract license from response 39 var licenseKeys licenseKeys 40 err = json.Unmarshal(body, &licenseKeys) 41 if err != nil { 42 return errorutils.CheckError(err) 43 } 44 if len(licenseKeys.LicenseKeys) < 1 { 45 return errorutils.CheckError(errors.New("failed to acquire license key from Mission Control: received 0 license keys")) 46 } 47 // Print license to log 48 log.Output(licenseKeys.LicenseKeys[0]) 49 return nil 50 } 51 52 type LicenseAcquireRequestContent struct { 53 Name string `json:"name,omitempty"` 54 LicenseCount int `json:"license_count,omitempty"` 55 } 56 57 type licenseKeys struct { 58 LicenseKeys []string `json:"license_keys,omitempty"` 59 }