Skip to content

Commit

Permalink
mirror at 20210221112030
Browse files Browse the repository at this point in the history
  • Loading branch information
acoshift committed Feb 21, 2021
1 parent 587b49a commit 579e80a
Show file tree
Hide file tree
Showing 31 changed files with 805 additions and 215 deletions.
1 change: 1 addition & 0 deletions api/api.go
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@ type API interface {
Project() Project
Role() Role
Deployment() Deployment
Route() Route
Disk() Disk
PullSecret() PullSecret
Collector() Collector
Expand Down
20 changes: 10 additions & 10 deletions api/billing.go
Original file line number Diff line number Diff line change
Expand Up @@ -10,14 +10,14 @@ import (
)

type Billing interface {
Create(ctx context.Context, m BillingCreate) (*BillingCreateResult, error)
List(ctx context.Context, m Empty) (*BillingListResult, error)
Delete(ctx context.Context, m BillingDelete) (*Empty, error)
Get(ctx context.Context, m BillingGet) (*BillingItem, error)
Update(ctx context.Context, m BillingUpdate) (*Empty, error)
Report(ctx context.Context, m BillingReport) (*BillingReportResult, error)
SKUs(ctx context.Context, m Empty) (*BillingSKUs, error)
Project(ctx context.Context, m BillingProject) (*BillingProjectResult, error)
Create(ctx context.Context, m *BillingCreate) (*BillingCreateResult, error)
List(ctx context.Context, m *Empty) (*BillingListResult, error)
Delete(ctx context.Context, m *BillingDelete) (*Empty, error)
Get(ctx context.Context, m *BillingGet) (*BillingItem, error)
Update(ctx context.Context, m *BillingUpdate) (*Empty, error)
Report(ctx context.Context, m *BillingReport) (*BillingReportResult, error)
SKUs(ctx context.Context, m *Empty) (*BillingSKUs, error)
Project(ctx context.Context, m *BillingProject) (*BillingProjectResult, error)
}

type BillingCreate struct {
Expand Down Expand Up @@ -144,8 +144,8 @@ type BillingReportChartSeries struct {
}

type BillingReportChart struct {
Categories []string
Series []*BillingReportChartSeries
Categories []string `json:"categories" yaml:"categories"`
Series []*BillingReportChartSeries `json:"series" yaml:"series"`
}

type ReportProjectListItem struct {
Expand Down
83 changes: 83 additions & 0 deletions api/client/billing.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,83 @@
package client

import (
"context"

"github.com/deploys-app/deploys/api"
)

type billingClient struct {
inv invoker
}

func (c billingClient) Create(ctx context.Context, m *api.BillingCreate) (*api.BillingCreateResult, error) {
var res api.BillingCreateResult
err := c.inv.invoke(ctx, "billing.create", m, &res)
if err != nil {
return nil, err
}
return &res, nil
}

func (c billingClient) List(ctx context.Context, m *api.Empty) (*api.BillingListResult, error) {
var res api.BillingListResult
err := c.inv.invoke(ctx, "billing.list", m, &res)
if err != nil {
return nil, err
}
return &res, nil
}

func (c billingClient) Delete(ctx context.Context, m *api.BillingDelete) (*api.Empty, error) {
var res api.Empty
err := c.inv.invoke(ctx, "billing.delete", m, &res)
if err != nil {
return nil, err
}
return &res, nil
}

func (c billingClient) Get(ctx context.Context, m *api.BillingGet) (*api.BillingItem, error) {
var res api.BillingItem
err := c.inv.invoke(ctx, "billing.get", m, &res)
if err != nil {
return nil, err
}
return &res, nil
}

func (c billingClient) Update(ctx context.Context, m *api.BillingUpdate) (*api.Empty, error) {
var res api.Empty
err := c.inv.invoke(ctx, "billing.update", m, &res)
if err != nil {
return nil, err
}
return &res, nil
}

func (c billingClient) Report(ctx context.Context, m *api.BillingReport) (*api.BillingReportResult, error) {
var res api.BillingReportResult
err := c.inv.invoke(ctx, "billing.report", m, &res)
if err != nil {
return nil, err
}
return &res, nil
}

func (c billingClient) SKUs(ctx context.Context, m *api.Empty) (*api.BillingSKUs, error) {
var res api.BillingSKUs
err := c.inv.invoke(ctx, "billing.skus", m, &res)
if err != nil {
return nil, err
}
return &res, nil
}

func (c billingClient) Project(ctx context.Context, m *api.BillingProject) (*api.BillingProjectResult, error) {
var res api.BillingProjectResult
err := c.inv.invoke(ctx, "billing.project", m, &res)
if err != nil {
return nil, err
}
return &res, nil
}
50 changes: 47 additions & 3 deletions api/client/client.go
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,6 @@ import (
"encoding/json"
"fmt"
"io"
"io/ioutil"
"net/http"
"strings"

Expand All @@ -23,6 +22,17 @@ func (err *Error) Error() string {
return err.Message
}

func (err *Error) apiError() error {
// try to convert error message to api error
// TODO: find a best way to handle this, error code ?
for _, e := range api.AllErrors {
if e.Error() == err.Message {
return e
}
}
return err
}

type invoker interface {
invoke(ctx context.Context, api string, r interface{}, res interface{}) error
}
Expand Down Expand Up @@ -59,6 +69,14 @@ func (c *Client) Project() api.Project {
return projectClient{c}
}

func (c *Client) Billing() api.Billing {
return billingClient{c}
}

func (c *Client) ServiceAccount() api.ServiceAccount {
return serviceAccountClient{c}
}

func (c *Client) Role() api.Role {
return roleClient{c}
}
Expand All @@ -67,6 +85,10 @@ func (c *Client) Deployment() api.Deployment {
return deploymentClient{c}
}

func (c *Client) Route() api.Route {
return routeClient{c}
}

func (c *Client) Disk() api.Disk {
return diskClient{c}
}
Expand All @@ -75,11 +97,19 @@ func (c *Client) PullSecret() api.PullSecret {
return pullSecretClient{c}
}

func (c *Client) WorkloadIdentity() api.WorkloadIdentity {
return workloadIdentityClient{c}
}

func (c *Client) Collector() api.Collector {
return collectorClient{c}
}

func (c *Client) invoke(ctx context.Context, api string, r interface{}, res interface{}) error {
if err := validRequest(r); err != nil {
return err
}

var reqBody bytes.Buffer
err := json.NewEncoder(&reqBody).Encode(r)
if err != nil {
Expand All @@ -104,7 +134,7 @@ func (c *Client) invoke(ctx context.Context, api string, r interface{}, res inte
if resp.StatusCode != http.StatusOK {
return fmt.Errorf("not ok")
}
defer io.Copy(ioutil.Discard, resp.Body)
defer io.Copy(io.Discard, resp.Body)

var errMsg Error
var respBody struct {
Expand All @@ -121,7 +151,21 @@ func (c *Client) invoke(ctx context.Context, api string, r interface{}, res inte
}

if !respBody.OK {
return &errMsg
return errMsg.apiError()
}
return nil
}

func validRequest(r interface{}) error {
if r == nil {
return nil
}

if r, ok := r.(interface {
Valid() error
}); ok {
return r.Valid()
}

return nil
}
6 changes: 3 additions & 3 deletions api/client/collector.go
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ type collectorClient struct {
inv invoker
}

func (c collectorClient) Location(ctx context.Context, m api.CollectorLocation) (*api.CollectorLocationResult, error) {
func (c collectorClient) Location(ctx context.Context, m *api.CollectorLocation) (*api.CollectorLocationResult, error) {
var res api.CollectorLocationResult
err := c.inv.invoke(ctx, "collector.location", m, &res)
if err != nil {
Expand All @@ -19,7 +19,7 @@ func (c collectorClient) Location(ctx context.Context, m api.CollectorLocation)
return &res, nil
}

func (c collectorClient) SetProjectUsage(ctx context.Context, m api.CollectorSetProjectUsage) (*api.Empty, error) {
func (c collectorClient) SetProjectUsage(ctx context.Context, m *api.CollectorSetProjectUsage) (*api.Empty, error) {
var res api.Empty
err := c.inv.invoke(ctx, "collector.setProjectUsage", m, &res)
if err != nil {
Expand All @@ -28,7 +28,7 @@ func (c collectorClient) SetProjectUsage(ctx context.Context, m api.CollectorSet
return &res, nil
}

func (c collectorClient) SetDeploymentUsage(ctx context.Context, m api.CollectorSetDeploymentUsage) (*api.Empty, error) {
func (c collectorClient) SetDeploymentUsage(ctx context.Context, m *api.CollectorSetDeploymentUsage) (*api.Empty, error) {
var res api.Empty
err := c.inv.invoke(ctx, "collector.setDeploymentUsage", m, &res)
if err != nil {
Expand Down
34 changes: 26 additions & 8 deletions api/client/deployment.go
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ type deploymentClient struct {
inv invoker
}

func (c deploymentClient) Deploy(ctx context.Context, m api.DeploymentDeploy) (*api.Empty, error) {
func (c deploymentClient) Deploy(ctx context.Context, m *api.DeploymentDeploy) (*api.Empty, error) {
var res api.Empty
err := c.inv.invoke(ctx, "deployment.deploy", m, &res)
if err != nil {
Expand All @@ -19,7 +19,7 @@ func (c deploymentClient) Deploy(ctx context.Context, m api.DeploymentDeploy) (*
return &res, nil
}

func (c deploymentClient) List(ctx context.Context, m api.DeploymentList) (*api.DeploymentListResult, error) {
func (c deploymentClient) List(ctx context.Context, m *api.DeploymentList) (*api.DeploymentListResult, error) {
var res api.DeploymentListResult
err := c.inv.invoke(ctx, "deployment.list", m, &res)
if err != nil {
Expand All @@ -28,7 +28,7 @@ func (c deploymentClient) List(ctx context.Context, m api.DeploymentList) (*api.
return &res, nil
}

func (c deploymentClient) Get(ctx context.Context, m api.DeploymentGet) (*api.DeploymentGetResult, error) {
func (c deploymentClient) Get(ctx context.Context, m *api.DeploymentGet) (*api.DeploymentGetResult, error) {
var res api.DeploymentGetResult
err := c.inv.invoke(ctx, "deployment.get", m, &res)
if err != nil {
Expand All @@ -37,7 +37,16 @@ func (c deploymentClient) Get(ctx context.Context, m api.DeploymentGet) (*api.De
return &res, nil
}

func (c deploymentClient) Resume(ctx context.Context, m api.DeploymentResume) (*api.Empty, error) {
func (c deploymentClient) Revisions(ctx context.Context, m *api.DeploymentRevisions) (*api.DeploymentRevisionsResult, error) {
var res api.DeploymentRevisionsResult
err := c.inv.invoke(ctx, "deployment.revisions", m, &res)
if err != nil {
return nil, err
}
return &res, nil
}

func (c deploymentClient) Resume(ctx context.Context, m *api.DeploymentResume) (*api.Empty, error) {
var res api.Empty
err := c.inv.invoke(ctx, "deployment.resume", m, &res)
if err != nil {
Expand All @@ -46,7 +55,7 @@ func (c deploymentClient) Resume(ctx context.Context, m api.DeploymentResume) (*
return &res, nil
}

func (c deploymentClient) Pause(ctx context.Context, m api.DeploymentPause) (*api.Empty, error) {
func (c deploymentClient) Pause(ctx context.Context, m *api.DeploymentPause) (*api.Empty, error) {
var res api.Empty
err := c.inv.invoke(ctx, "deployment.pause", m, &res)
if err != nil {
Expand All @@ -55,7 +64,7 @@ func (c deploymentClient) Pause(ctx context.Context, m api.DeploymentPause) (*ap
return &res, nil
}

func (c deploymentClient) Rollback(ctx context.Context, m api.DeploymentRollback) (*api.Empty, error) {
func (c deploymentClient) Rollback(ctx context.Context, m *api.DeploymentRollback) (*api.Empty, error) {
var res api.Empty
err := c.inv.invoke(ctx, "deployment.rollback", m, &res)
if err != nil {
Expand All @@ -64,7 +73,7 @@ func (c deploymentClient) Rollback(ctx context.Context, m api.DeploymentRollback
return &res, nil
}

func (c deploymentClient) Delete(ctx context.Context, m api.DeploymentDelete) (*api.Empty, error) {
func (c deploymentClient) Delete(ctx context.Context, m *api.DeploymentDelete) (*api.Empty, error) {
var res api.Empty
err := c.inv.invoke(ctx, "deployment.delete", m, &res)
if err != nil {
Expand All @@ -73,11 +82,20 @@ func (c deploymentClient) Delete(ctx context.Context, m api.DeploymentDelete) (*
return &res, nil
}

func (c deploymentClient) MapDomain(ctx context.Context, m api.DeploymentMapDomain) (*api.Empty, error) {
func (c deploymentClient) MapDomain(ctx context.Context, m *api.DeploymentMapDomain) (*api.Empty, error) {
var res api.Empty
err := c.inv.invoke(ctx, "deployment.mapDomain", m, &res)
if err != nil {
return nil, err
}
return &res, nil
}

func (c deploymentClient) Metrics(ctx context.Context, m *api.DeploymentMetrics) (*api.DeploymentMetricsResult, error) {
var res api.DeploymentMetricsResult
err := c.inv.invoke(ctx, "deployment.metrics", m, &res)
if err != nil {
return nil, err
}
return &res, nil
}
17 changes: 13 additions & 4 deletions api/client/disk.go
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ type diskClient struct {
inv invoker
}

func (c diskClient) Create(ctx context.Context, m api.DiskCreate) (*api.Empty, error) {
func (c diskClient) Create(ctx context.Context, m *api.DiskCreate) (*api.Empty, error) {
var res api.Empty
err := c.inv.invoke(ctx, "disk.create", m, &res)
if err != nil {
Expand All @@ -19,7 +19,16 @@ func (c diskClient) Create(ctx context.Context, m api.DiskCreate) (*api.Empty, e
return &res, nil
}

func (c diskClient) Update(ctx context.Context, m api.DiskUpdate) (*api.Empty, error) {
func (c diskClient) Get(ctx context.Context, m *api.DiskGet) (*api.DiskItem, error) {
var res api.DiskItem
err := c.inv.invoke(ctx, "disk.get", m, &res)
if err != nil {
return nil, err
}
return &res, nil
}

func (c diskClient) Update(ctx context.Context, m *api.DiskUpdate) (*api.Empty, error) {
var res api.Empty
err := c.inv.invoke(ctx, "disk.update", m, &res)
if err != nil {
Expand All @@ -28,7 +37,7 @@ func (c diskClient) Update(ctx context.Context, m api.DiskUpdate) (*api.Empty, e
return &res, nil
}

func (c diskClient) List(ctx context.Context, m api.DiskList) (*api.DiskListResult, error) {
func (c diskClient) List(ctx context.Context, m *api.DiskList) (*api.DiskListResult, error) {
var res api.DiskListResult
err := c.inv.invoke(ctx, "disk.list", m, &res)
if err != nil {
Expand All @@ -37,7 +46,7 @@ func (c diskClient) List(ctx context.Context, m api.DiskList) (*api.DiskListResu
return &res, nil
}

func (c diskClient) Delete(ctx context.Context, m api.DiskDelete) (*api.Empty, error) {
func (c diskClient) Delete(ctx context.Context, m *api.DiskDelete) (*api.Empty, error) {
var res api.Empty
err := c.inv.invoke(ctx, "disk.delete", m, &res)
if err != nil {
Expand Down
Loading

0 comments on commit 579e80a

Please sign in to comment.