func (f *SFiles) Create(svcID, filePath, name, mode string) (*models.ServiceFile, error) { b, err := ioutil.ReadFile(filePath) if err != nil { return nil, err } sf := models.ServiceFile{ Contents: string(b), GID: 0, Mode: mode, Name: name, UID: 0, EnableDownload: true, } body, err := json.Marshal(sf) if err != nil { return nil, err } headers := httpclient.GetHeaders(f.Settings.SessionToken, f.Settings.Version, f.Settings.Pod, f.Settings.UsersID) resp, statusCode, err := httpclient.Post(body, fmt.Sprintf("%s%s/environments/%s/services/%s/files", f.Settings.PaasHost, f.Settings.PaasHostVersion, f.Settings.EnvironmentID, svcID), headers) if err != nil { return nil, err } var svcFile models.ServiceFile err = httpclient.ConvertResp(resp, statusCode, &svcFile) if err != nil { return nil, err } return &svcFile, nil }
func (a *SAuth) signInWithCredentials() (*signinResponse, error) { login := models.Login{ Identifier: a.Settings.Username, Password: a.Settings.Password, } if a.Settings.Username == "" || a.Settings.Password == "" { username, password, err := a.Prompts.UsernamePassword() if err != nil { return nil, err } login = models.Login{ Identifier: username, Password: password, } } b, err := json.Marshal(login) if err != nil { return nil, err } headers := httpclient.GetHeaders(a.Settings.SessionToken, a.Settings.Version, a.Settings.Pod, a.Settings.UsersID) resp, statusCode, err := httpclient.Post(b, fmt.Sprintf("%s%s/auth/signin", a.Settings.AuthHost, a.Settings.AuthHostVersion), headers) if err != nil { return nil, err } signinResp := &signinResponse{} return signinResp, httpclient.ConvertResp(resp, statusCode, signinResp) }
func (d *SDeployKeys) Rm(name, keyType, svcID string) error { headers := httpclient.GetHeaders(d.Settings.SessionToken, d.Settings.Version, d.Settings.Pod, d.Settings.UsersID) resp, statusCode, err := httpclient.Delete(nil, fmt.Sprintf("%s%s/environments/%s/services/%s/ssh_keys/%s/type/%s", d.Settings.PaasHost, d.Settings.PaasHostVersion, d.Settings.EnvironmentID, svcID, name, keyType), headers) if err != nil { return err } return httpclient.ConvertResp(resp, statusCode, nil) }
func (j *SJobs) Delete(jobID, svcID string) error { headers := httpclient.GetHeaders(j.Settings.SessionToken, j.Settings.Version, j.Settings.Pod, j.Settings.UsersID) resp, statusCode, err := httpclient.Delete(nil, fmt.Sprintf("%s%s/environments/%s/services/%s/jobs/%s", j.Settings.PaasHost, j.Settings.PaasHostVersion, j.Settings.EnvironmentID, svcID, jobID), headers) if err != nil { return err } return httpclient.ConvertResp(resp, statusCode, nil) }
func (s *SSites) Rm(siteID int, svcID string) error { headers := httpclient.GetHeaders(s.Settings.SessionToken, s.Settings.Version, s.Settings.Pod, s.Settings.UsersID) resp, statusCode, err := httpclient.Delete(nil, fmt.Sprintf("%s%s/environments/%s/services/%s/sites/%d", s.Settings.PaasHost, s.Settings.PaasHostVersion, s.Settings.EnvironmentID, svcID, siteID), headers) if err != nil { return err } return httpclient.ConvertResp(resp, statusCode, nil) }
func (r *SReleases) Rm(releaseName, svcID string) error { headers := httpclient.GetHeaders(r.Settings.SessionToken, r.Settings.Version, r.Settings.Pod, r.Settings.UsersID) resp, statusCode, err := httpclient.Delete(nil, fmt.Sprintf("%s%s/environments/%s/services/%s/releases/%s", r.Settings.PaasHost, r.Settings.PaasHostVersion, r.Settings.EnvironmentID, svcID, releaseName), headers) if err != nil { return err } return httpclient.ConvertResp(resp, statusCode, nil) }
func (u *SUsers) Rm(usersID string) error { headers := httpclient.GetHeaders(u.Settings.SessionToken, u.Settings.Version, u.Settings.Pod, u.Settings.UsersID) resp, statusCode, err := httpclient.Delete(nil, fmt.Sprintf("%s%s/orgs/%s/users/%s", u.Settings.AuthHost, u.Settings.AuthHostVersion, u.Settings.OrgID, usersID), headers) if err != nil { return err } return httpclient.ConvertResp(resp, statusCode, nil) }
// Unset deletes an environment variable. Any changes to environment variables // will not take effect until the service is redeployed by pushing new code // or via `catalyze redeploy`. func (v *SVars) Unset(svcID, variable string) error { headers := httpclient.GetHeaders(v.Settings.SessionToken, v.Settings.Version, v.Settings.Pod, v.Settings.UsersID) resp, statusCode, err := httpclient.Delete(nil, fmt.Sprintf("%s%s/environments/%s/services/%s/env/%s", v.Settings.PaasHost, v.Settings.PaasHostVersion, v.Settings.EnvironmentID, svcID, variable), headers) if err != nil { return err } return httpclient.ConvertResp(resp, statusCode, nil) }
// Rm deletes an invite sent to a user. This invite must not already be // accepted. func (i *SInvites) Rm(inviteID string) error { headers := httpclient.GetHeaders(i.Settings.SessionToken, i.Settings.Version, i.Settings.Pod, i.Settings.UsersID) resp, statusCode, err := httpclient.Delete(nil, fmt.Sprintf("%s%s/orgs/%s/invites/%s", i.Settings.AuthHost, i.Settings.AuthHostVersion, i.Settings.OrgID, inviteID), headers) if err != nil { return err } return httpclient.ConvertResp(resp, statusCode, nil) }
// Signout signs out a user by their session token. func (a *SAuth) Signout() error { headers := httpclient.GetHeaders(a.Settings.SessionToken, a.Settings.Version, a.Settings.Pod, a.Settings.UsersID) resp, statusCode, err := httpclient.Delete(nil, fmt.Sprintf("%s%s/auth/signout", a.Settings.AuthHost, a.Settings.AuthHostVersion), headers) if err != nil { return err } return httpclient.ConvertResp(resp, statusCode, nil) }
func (k *SKeys) List() (*[]models.UserKey, error) { headers := httpclient.GetHeaders(k.Settings.SessionToken, k.Settings.Version, k.Settings.Pod, k.Settings.UsersID) resp, status, err := httpclient.Get(nil, fmt.Sprintf("%s%s/keys", k.Settings.AuthHost, k.Settings.AuthHostVersion), headers) if err != nil { return nil, err } keys := []models.UserKey{} err = httpclient.ConvertResp(resp, status, &keys) return &keys, err }
func (w *SWorker) Update(svcID string, workers *models.Workers) error { b, err := json.Marshal(workers) if err != nil { return err } headers := httpclient.GetHeaders(w.Settings.SessionToken, w.Settings.Version, w.Settings.Pod, w.Settings.UsersID) resp, statusCode, err := httpclient.Post(b, fmt.Sprintf("%s%s/environments/%s/services/%s/workers", w.Settings.PaasHost, w.Settings.PaasHostVersion, w.Settings.EnvironmentID, svcID), headers) if err != nil { return err } return httpclient.ConvertResp(resp, statusCode, nil) }
func (e *SEnvironments) Update(envID string, updates map[string]string) error { b, err := json.Marshal(updates) if err != nil { return err } headers := httpclient.GetHeaders(e.Settings.SessionToken, e.Settings.Version, e.Settings.Pod, e.Settings.UsersID) resp, statusCode, err := httpclient.Put(b, fmt.Sprintf("%s%s/environments/%s", e.Settings.PaasHost, e.Settings.PaasHostVersion, envID), headers) if err != nil { return err } return httpclient.ConvertResp(resp, statusCode, nil) }
// Set adds a new environment variables or updates the value of an existing // environment variables. Any changes to environment variables will not take // effect until the service is redeployed by pushing new code or via // `catalyze redeploy`. func (v *SVars) Set(svcID string, envVarsMap map[string]string) error { b, err := json.Marshal(envVarsMap) if err != nil { return err } headers := httpclient.GetHeaders(v.Settings.SessionToken, v.Settings.Version, v.Settings.Pod, v.Settings.UsersID) resp, statusCode, err := httpclient.Post(b, fmt.Sprintf("%s%s/environments/%s/services/%s/env", v.Settings.PaasHost, v.Settings.PaasHostVersion, v.Settings.EnvironmentID, svcID), headers) if err != nil { return err } return httpclient.ConvertResp(resp, statusCode, nil) }
func (a *SAuth) signInWithKey() (*signinResponse, error) { body := struct { PublicKey string `json:"publicKey"` Signature string `json:"signature"` }{} bytes, err := ioutil.ReadFile(a.Settings.PrivateKeyPath) if err != nil { return nil, err } block, _ := pem.Decode(bytes) if block == nil { return nil, errors.New("Private key is not PEM-encoded") } bytes = block.Bytes if x509.IsEncryptedPEMBlock(block) { passphrase := a.Prompts.KeyPassphrase(a.Settings.PrivateKeyPath) bytes, err = x509.DecryptPEMBlock(block, []byte(passphrase)) if err != nil { return nil, err } } privateKey, err := x509.ParsePKCS1PrivateKey(bytes) if err != nil { return nil, err } publicKey, err := ioutil.ReadFile(a.Settings.PrivateKeyPath + ".pub") if err != nil { return nil, err } body.PublicKey = string(publicKey) headers := httpclient.GetHeaders(a.Settings.SessionToken, a.Settings.Version, a.Settings.Pod, a.Settings.UsersID) message := fmt.Sprintf("%s&%s", headers["X-Request-Nonce"][0], headers["X-Request-Timestamp"][0]) hashedMessage := sha256.Sum256([]byte(message)) signature, err := privateKey.Sign(rand.Reader, hashedMessage[:], crypto.SHA256) if err != nil { return nil, err } body.Signature = base64.StdEncoding.EncodeToString(signature) b, err := json.Marshal(body) if err != nil { return nil, err } resp, statusCode, err := httpclient.Post(b, fmt.Sprintf("%s%s/auth/signin/key", a.Settings.AuthHost, a.Settings.AuthHostVersion), headers) if err != nil { return nil, err } signinResp := &signinResponse{} return signinResp, httpclient.ConvertResp(resp, statusCode, signinResp) }
// Backup creates a new backup func (d *SDb) Backup(service *models.Service) (*models.Job, error) { headers := httpclient.GetHeaders(d.Settings.SessionToken, d.Settings.Version, d.Settings.Pod, d.Settings.UsersID) resp, statusCode, err := httpclient.Post(nil, fmt.Sprintf("%s%s/environments/%s/services/%s/backup", d.Settings.PaasHost, d.Settings.PaasHostVersion, d.Settings.EnvironmentID, service.ID), headers) if err != nil { return nil, err } var job models.Job err = httpclient.ConvertResp(resp, statusCode, &job) if err != nil { return nil, err } return &job, nil }
// ListRoles lists all available roles func (i *SInvites) ListRoles() (*[]models.Role, error) { headers := httpclient.GetHeaders(i.Settings.SessionToken, i.Settings.Version, i.Settings.Pod, i.Settings.UsersID) resp, statusCode, err := httpclient.Get(nil, fmt.Sprintf("%s%s/orgs/roles", i.Settings.AuthHost, i.Settings.AuthHostVersion), headers) if err != nil { return nil, err } var roles []models.Role err = httpclient.ConvertResp(resp, statusCode, &roles) if err != nil { return nil, err } return &roles, nil }
func (c *SConsole) RetrieveTokens(jobID string, service *models.Service) (*models.ConsoleCredentials, error) { headers := httpclient.GetHeaders(c.Settings.SessionToken, c.Settings.Version, c.Settings.Pod, c.Settings.UsersID) resp, statusCode, err := httpclient.Post(nil, fmt.Sprintf("%s%s/environments/%s/services/%s/jobs/%s/console-token", c.Settings.PaasHost, c.Settings.PaasHostVersion, c.Settings.EnvironmentID, service.ID, jobID), headers) if err != nil { return nil, err } var credentials models.ConsoleCredentials err = httpclient.ConvertResp(resp, statusCode, &credentials) if err != nil { return nil, err } return &credentials, nil }
// List lists all environment variables. func (v *SVars) List(svcID string) (map[string]string, error) { headers := httpclient.GetHeaders(v.Settings.SessionToken, v.Settings.Version, v.Settings.Pod, v.Settings.UsersID) resp, statusCode, err := httpclient.Get(nil, fmt.Sprintf("%s%s/environments/%s/services/%s/env", v.Settings.PaasHost, v.Settings.PaasHostVersion, v.Settings.EnvironmentID, svcID), headers) if err != nil { return nil, err } var envVars map[string]string err = httpclient.ConvertResp(resp, statusCode, &envVars) if err != nil { return nil, err } return envVars, nil }
func (p *SPods) List() (*[]models.Pod, error) { headers := httpclient.GetHeaders(p.Settings.SessionToken, p.Settings.Version, p.Settings.Pod, p.Settings.UsersID) resp, statusCode, err := httpclient.Get(nil, fmt.Sprintf("%s%s/pods", p.Settings.PaasHost, p.Settings.PaasHostVersion), headers) if err != nil { return nil, err } var podWrapper models.PodWrapper err = httpclient.ConvertResp(resp, statusCode, &podWrapper) if err != nil { return nil, err } return podWrapper.Pods, nil }
func (c *SCerts) List(svcID string) (*[]models.Cert, error) { headers := httpclient.GetHeaders(c.Settings.SessionToken, c.Settings.Version, c.Settings.Pod, c.Settings.UsersID) resp, statusCode, err := httpclient.Get(nil, fmt.Sprintf("%s%s/environments/%s/services/%s/certs", c.Settings.PaasHost, c.Settings.PaasHostVersion, c.Settings.EnvironmentID, svcID), headers) if err != nil { return nil, err } var certs []models.Cert err = httpclient.ConvertResp(resp, statusCode, &certs) if err != nil { return nil, err } return &certs, nil }
func (u *SUsers) List() (*[]models.OrgUser, error) { headers := httpclient.GetHeaders(u.Settings.SessionToken, u.Settings.Version, u.Settings.Pod, u.Settings.UsersID) resp, statusCode, err := httpclient.Get(nil, fmt.Sprintf("%s%s/orgs/%s/users", u.Settings.AuthHost, u.Settings.AuthHostVersion, u.Settings.OrgID), headers) if err != nil { return nil, err } var users []models.OrgUser err = httpclient.ConvertResp(resp, statusCode, &users) if err != nil { return nil, err } return &users, nil }
func (j *SJobs) RetrieveByStatus(svcID, status string) (*[]models.Job, error) { headers := httpclient.GetHeaders(j.Settings.SessionToken, j.Settings.Version, j.Settings.Pod, j.Settings.UsersID) resp, statusCode, err := httpclient.Get(nil, fmt.Sprintf("%s%s/environments/%s/services/%s/jobs?status=%s", j.Settings.PaasHost, j.Settings.PaasHostVersion, j.Settings.EnvironmentID, svcID, status), headers) if err != nil { return nil, err } var jobs []models.Job err = httpclient.ConvertResp(resp, statusCode, &jobs) if err != nil { return nil, err } return &jobs, nil }
func (s *SSites) List(svcID string) (*[]models.Site, error) { headers := httpclient.GetHeaders(s.Settings.SessionToken, s.Settings.Version, s.Settings.Pod, s.Settings.UsersID) resp, statusCode, err := httpclient.Get(nil, fmt.Sprintf("%s%s/environments/%s/services/%s/sites", s.Settings.PaasHost, s.Settings.PaasHostVersion, s.Settings.EnvironmentID, svcID), headers) if err != nil { return nil, err } var sites []models.Site err = httpclient.ConvertResp(resp, statusCode, &sites) if err != nil { return nil, err } return &sites, nil }
func (d *SDb) TempLogsURL(jobID string, serviceID string) (*models.TempURL, error) { headers := httpclient.GetHeaders(d.Settings.SessionToken, d.Settings.Version, d.Settings.Pod, d.Settings.UsersID) resp, statusCode, err := httpclient.Get(nil, fmt.Sprintf("%s%s/environments/%s/services/%s/backup-restore-logs-url/%s", d.Settings.PaasHost, d.Settings.PaasHostVersion, d.Settings.EnvironmentID, serviceID, jobID), headers) if err != nil { return nil, err } var tempURL models.TempURL err = httpclient.ConvertResp(resp, statusCode, &tempURL) if err != nil { return nil, err } return &tempURL, nil }
func (w *SWorker) Retrieve(svcID string) (*models.Workers, error) { headers := httpclient.GetHeaders(w.Settings.SessionToken, w.Settings.Version, w.Settings.Pod, w.Settings.UsersID) resp, statusCode, err := httpclient.Get(nil, fmt.Sprintf("%s%s/environments/%s/services/%s/workers", w.Settings.PaasHost, w.Settings.PaasHostVersion, w.Settings.EnvironmentID, svcID), headers) if err != nil { return nil, err } var workers models.Workers err = httpclient.ConvertResp(resp, statusCode, &workers) if err != nil { return nil, err } return &workers, nil }
// List lists the created backups for the service sorted from oldest to newest func (d *SDb) List(page, pageSize int, service *models.Service) (*[]models.Job, error) { headers := httpclient.GetHeaders(d.Settings.SessionToken, d.Settings.Version, d.Settings.Pod, d.Settings.UsersID) resp, statusCode, err := httpclient.Get(nil, fmt.Sprintf("%s%s/environments/%s/services/%s/jobs?type=backup&pageNumber=%d&pageSize=%d", d.Settings.PaasHost, d.Settings.PaasHostVersion, d.Settings.EnvironmentID, service.ID, page, pageSize), headers) if err != nil { return nil, err } var jobs []models.Job err = httpclient.ConvertResp(resp, statusCode, &jobs) if err != nil { return nil, err } return &jobs, nil }
func (j *SJobs) List(svcID string, page, pageSize int) (*[]models.Job, error) { headers := httpclient.GetHeaders(j.Settings.SessionToken, j.Settings.Version, j.Settings.Pod, j.Settings.UsersID) resp, statusCode, err := httpclient.Get(nil, fmt.Sprintf("%s%s/environments/%s/services/%s/jobs?pageNumber=%d&pageSize=%d", j.Settings.PaasHost, j.Settings.PaasHostVersion, j.Settings.EnvironmentID, svcID, page, pageSize), headers) if err != nil { return nil, err } var jobs []models.Job err = httpclient.ConvertResp(resp, statusCode, &jobs) if err != nil { return nil, err } return &jobs, nil }
// RetrieveServiceMetrics retrieves metrics data for the given service. func (m *SMetrics) RetrieveServiceMetrics(mins int, svcID string) (*models.Metrics, error) { headers := httpclient.GetHeaders(m.Settings.SessionToken, m.Settings.Version, m.Settings.Pod, m.Settings.UsersID) resp, statusCode, err := httpclient.Get(nil, fmt.Sprintf("%s%s/environments/%s/services/%s/metrics?time=%dm", m.Settings.PaasHost, m.Settings.PaasHostVersion, m.Settings.EnvironmentID, svcID, mins), headers) if err != nil { return nil, err } var metrics models.Metrics err = httpclient.ConvertResp(resp, statusCode, &metrics) if err != nil { return nil, err } return &metrics, nil }
func (j *SJobs) Retrieve(jobID, svcID string, includeSpec bool) (*models.Job, error) { headers := httpclient.GetHeaders(j.Settings.SessionToken, j.Settings.Version, j.Settings.Pod, j.Settings.UsersID) resp, statusCode, err := httpclient.Get(nil, fmt.Sprintf("%s%s/environments/%s/services/%s/jobs/%s?spec=true", j.Settings.PaasHost, j.Settings.PaasHostVersion, j.Settings.EnvironmentID, svcID, jobID), headers) if err != nil { return nil, err } var job models.Job err = httpclient.ConvertResp(resp, statusCode, &job) if err != nil { return nil, err } return &job, nil }