weaveworks / service

☁️ Images for Weave Cloud (R) (TM) (C) ☁️
https://cloud.weave.works
2 stars 2 forks source link

Create HTTP client for Google Partner Subscriptions API #1425

Closed marccarre closed 6 years ago

marccarre commented 6 years ago

We may be able to use:

rndstr commented 6 years ago

Doc: https://cloud.google.com/billing-subscriptions/reference/rest/

rndstr commented 6 years ago

From Tate Mandel (tmandel@google.com):

I also created two test subscriptions for your service. Please try listing, getting, approving, and (optionally) denying them using the Partner Subscriptions API with you service account.

Subscription 1 (standard):
name: partnerSubscriptions/47426f1a-d744-4249-ae84-3f4fe194c107
external_account_id: E-F65F-C51C-67FE-D42F

Subscription 2 (enterprise):
name: partnerSubscriptions/db941fb9-d77b-49b3-8fb4-4c31c5f4ff47
external_account_id: E-53D7-7F2A-1D98-F3F5
rndstr commented 6 years ago

Generating a JSON key for the cloud-launcher service and saving it to service-cloud-launcher.json, then installing oauth2l, and setting the alias

alias gcurl='curl -H "$(oauth2l header --json service-cloud-launcher.json cloud-platform userinfo.email)" -H "Content-Type: application/json"'

I then ran the following calls:

List standard subscription

$ gcurl https://cloudbilling.googleapis.com/v1/partnerSubscriptions?externalAccountId=E-F65F-C51C-67FE-D42F
{
  "subscriptions": [
    {
      "name": "partnerSubscriptions/47426f1a-d744-4249-ae84-3f4fe194c107",
      "externalAccountId": "E-F65F-C51C-67FE-D42F",
      "version": "1508480169982224",
      "status": "PENDING",
      "subscribedResources": [
        {
          "subscriptionProvider": "weaveworks-public-cloudmarketplacepartner.googleapis.com",
          "resource": "weave-cloud",
          "labels": {
            "weaveworks-public-cloudmarketplacepartner.googleapis.com/ServiceLevel": "standard"
          }
        }
      ],
      "startDate": {
        "year": 2017,
        "month": 10,
        "day": 19
      },
      "createTime": "2017-10-20T06:16:09.982224Z",
      "updateTime": "2017-10-20T06:16:09.982224Z",
      "requiredApprovals": [
        {
          "name": "default-approval",
          "status": "PENDING"
        }
      ]
    }
  ]
}

List enterprise subscription

 $ gcurl https://cloudbilling.googleapis.com/v1/partnerSubscriptions?externalAccountId=E-53D7-7F2A-1D98-F3F5
{
  "subscriptions": [
    {
      "name": "partnerSubscriptions/db941fb9-d77b-49b3-8fb4-4c31c5f4ff47",
      "externalAccountId": "E-53D7-7F2A-1D98-F3F5",
      "version": "1508480224803575",
      "status": "PENDING",
      "subscribedResources": [
        {
          "subscriptionProvider": "weaveworks-public-cloudmarketplacepartner.googleapis.com",
          "resource": "weave-cloud",
          "labels": {
            "weaveworks-public-cloudmarketplacepartner.googleapis.com/ServiceLevel": "enterprise"
          }
        }
      ],
      "startDate": {
        "year": 2017,
        "month": 10,
        "day": 19
      },
      "createTime": "2017-10-20T06:17:04.803575Z",
      "updateTime": "2017-10-20T06:17:04.803575Z",
      "requiredApprovals": [
        {
          "name": "default-approval",
          "status": "PENDING"
        }
      ]
    }
  ]
}

Get standard subscription

$ gcurl https://cloudbilling.googleapis.com/v1/partnerSubscriptions/47426f1a-d744-4249-ae84-3f4fe194c107
{
  "name": "partnerSubscriptions/47426f1a-d744-4249-ae84-3f4fe194c107",
  "externalAccountId": "E-F65F-C51C-67FE-D42F",
  "version": "1508480169982224",
  "status": "PENDING",
  "subscribedResources": [
    {
      "subscriptionProvider": "weaveworks-public-cloudmarketplacepartner.googleapis.com",
      "resource": "weave-cloud",
      "labels": {
        "weaveworks-public-cloudmarketplacepartner.googleapis.com/ServiceLevel": "standard"
      }
    }
  ],
  "startDate": {
    "year": 2017,
    "month": 10,
    "day": 19
  },
  "createTime": "2017-10-20T06:16:09.982224Z",
  "updateTime": "2017-10-20T06:16:09.982224Z",
  "requiredApprovals": [
    {
      "name": "default-approval",
      "status": "PENDING"
    }
  ]
}

Approve standard subscription

$ gcurl -X POST -d '{"approvalId":"default-approval","approvalNote":"oauth2l test"}' https://cloudbilling.googleapis.com/v1/partnerSubscriptions/47426f1a-d744-4249-ae84-3f4fe194c107:approve
{
  "name": "partnerSubscriptions/47426f1a-d744-4249-ae84-3f4fe194c107",
  "externalAccountId": "E-F65F-C51C-67FE-D42F",
  "version": "1508779422963661",
  "status": "ACTIVE",
  "subscribedResources": [
    {
      "subscriptionProvider": "weaveworks-public-cloudmarketplacepartner.googleapis.com",
      "resource": "weave-cloud",
      "labels": {
        "weaveworks-public-cloudmarketplacepartner.googleapis.com/ServiceLevel": "standard"
      }
    }
  ],
  "startDate": {
    "year": 2017,
    "month": 10,
    "day": 23
  },
  "createTime": "2017-10-20T06:16:09.982224Z",
  "updateTime": "2017-10-23T17:23:42.963661Z",
  "requiredApprovals": [
    {
      "name": "default-approval",
      "status": "APPROVED",
      "approvalTime": "2017-10-23T17:23:42.850Z",
      "approvalNote": "oauth2l test"
    }
  ]
}

Deny enterprise subscription

$ gcurl -X POST -d '{"approvalId":"default-approval","approvalNote":"oauth2l test"}' https://cloudbilling.googleapis.com/v1/partnerSubscriptions/db941fb9-d77b-49b3-8fb4-4c31c5f4ff47:deny
{
  "name": "partnerSubscriptions/db941fb9-d77b-49b3-8fb4-4c31c5f4ff47",
  "externalAccountId": "E-53D7-7F2A-1D98-F3F5",
  "version": "1508779513961795",
  "status": "CANCELED",
  "subscribedResources": [
    {
      "subscriptionProvider": "weaveworks-public-cloudmarketplacepartner.googleapis.com",
      "resource": "weave-cloud",
      "labels": {
        "weaveworks-public-cloudmarketplacepartner.googleapis.com/ServiceLevel": "enterprise"
      }
    }
  ],
  "startDate": {
    "year": 2017,
    "month": 10,
    "day": 19
  },
  "createTime": "2017-10-20T06:17:04.803575Z",
  "updateTime": "2017-10-23T17:25:13.961795Z",
  "requiredApprovals": [
    {
      "name": "default-approval",
      "status": "DENIED",
      "approvalTime": "2017-10-23T17:25:13.886Z",
      "approvalNote": "oauth2l test"
    }
  ]
}