Skip to content

Instantly share code, notes, and snippets.

@richieforeman
Last active August 29, 2015 14:22
Show Gist options
  • Select an option

  • Save richieforeman/f73a7f0387d4b47e138a to your computer and use it in GitHub Desktop.

Select an option

Save richieforeman/f73a7f0387d4b47e138a to your computer and use it in GitHub Desktop.

Revisions

  1. richieforeman revised this gist Jun 10, 2015. 1 changed file with 20 additions and 2 deletions.
    22 changes: 20 additions & 2 deletions reseller_list_customers.py
    Original file line number Diff line number Diff line change
    @@ -29,16 +29,34 @@ def main(args):

    service = build('reseller', 'v1', http)

    writer = csv.DictWriter(file(args.out, 'w'), fieldnames=['domain'])
    writer = csv.DictWriter(file(args.out, 'w'), fieldnames=[
    'customerId',
    'skuId',
    'plan.planName',
    'seats.numberOfSeats',
    'seats.maximumNumberOfSeats',
    'renewalSettings.renewalType',
    'purchaseOrderId',
    'status',
    'suspensionReasons'
    ])

    pageToken = ''
    while pageToken is not None:
    response = service.subscriptions().list(
    maxResults=100, pageToken=pageToken).execute(num_retries=NUM_RETRIES)

    for subscription in response['subscriptions']:
    print subscription
    writer.writerow({
    'domain': subscription['customerId']
    'customerId': subscription['customerId'],
    'skuId': subscription['skuId'],
    'plan.planName': subscription['plan']['planName'],
    'seats.numberOfSeats': subscription['seats'].get('numberOfSeats'),
    'seats.maximumNumberOfSeats': subscription['seats'].get('maximumNumberOfSeats'),
    'renewalSettings.renewalType': subscription.get('renewalSettings', {}).get('renewalType'),
    'status': subscription['status'],
    'suspensionReasons': ",".join(subscription.get('suspensionReasons',[]))
    })

    pageToken = response.get('nextPageToken')
  2. richieforeman created this gist Jun 10, 2015.
    54 changes: 54 additions & 0 deletions reseller_list_customers.py
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,54 @@
    import csv
    import httplib2
    from argparse import ArgumentParser
    from oauth2client.client import SignedJwtAssertionCredentials
    from apiclient.discovery import build


    SCOPES = [
    'https://www.googleapis.com/auth/apps.order'
    ]

    NUM_RETRIES = 7

    http = httplib2.Http()

    def get_credentials(args):
    with file(args.private_key_file) as f:
    credentials = SignedJwtAssertionCredentials(
    service_account_name=args.service_account_email,
    private_key=f.read(),
    scope=SCOPES,
    sub=args.admin_user)

    return credentials

    def main(args):
    credentials = get_credentials(args)
    credentials.authorize(http)

    service = build('reseller', 'v1', http)

    writer = csv.DictWriter(file(args.out, 'w'), fieldnames=['domain'])

    pageToken = ''
    while pageToken is not None:
    response = service.subscriptions().list(
    maxResults=100, pageToken=pageToken).execute(num_retries=NUM_RETRIES)

    for subscription in response['subscriptions']:
    writer.writerow({
    'domain': subscription['customerId']
    })

    pageToken = response.get('nextPageToken')
    if pageToken is None:
    break

    if __name__ == "__main__":
    parser = ArgumentParser()
    parser.add_argument('--private_key_file', required=True)
    parser.add_argument('--service_account_email', required=True)
    parser.add_argument('--admin_user', required=True)
    parser.add_argument('--out', required=True)
    main(parser.parse_args())