Skip to main content

Google Cloud Platform Friendly Pilot

Project description

Github CI Maintainability Test Coverage python

Google Cloud Pilot

Installation

pip install gcp-pilot

Some APIs need extra packages, thus you must use extras to add them:

  • Cloud Tasks: pip install gcp-pilot[tasks]
  • Cloud Build: pip install gcp-pilot[build]
  • Cloud Storage: pip install gcp-pilot[storage]
  • Big Query: pip install gcp-pilot[bigquery]
  • Speech: pip install gcp-pilot[speech]
  • Sheets: pip install gcp-pilot[sheets]
  • Pub/Sub: pip install gcp-pilot[pubsub]
  • Datastore: pip install gcp-pilot[datastore]

Usage

from gcp_pilot.resource import ResourceManager

grm = ResourceManager()

Why Use gcp-pilot

"Since Google already has a generic API client and so many specific clients, why should I use this library?"

Google's has 2 types of clients:

  • dedicated: custom made for the APIs. They are excellent: they implement high level interaction with the API with friendly methods. The gcp-pilot can adds its value by handling authentication, friendly errors and parameter fallback.
  • generic: a single client that is capable of dynamically calling any REST API. They are a pain to use: very specific calls that must be translated from the documentation. The gcp-pilot comes in handy to add high-level interaction with friendly method such as Calendar.create_event, on top of all other vantages cited above.

Parameter Fallback

Most of the API endpoints require project_id (sometimes even project_number) and location.

So gcp-pilot automatically detects these values for you, based on your credentials (although it'll require extra permissions and API calls).

If you use multiple projects, and your credentials is accessing other projects, you can still customize the parameters on each call to avoid the default fallback.

Friendly Errors

Most of APIs return a generic HttpException with am embedded payload with error output, and also there's a couple of different structures for these payloads.

So gcp-pilot tries its best to convert these exceptions into more friendly ones, such as NotFound, AlreadyExists and NotAllowed.

It'll be much easier to capture these exceptions and handle them by its type.

Identification Features

  • Authentication: each client uses ADC, which consists on trying to detect the service account with fallbacks: SDK > Environment Variable > Metadata
  • Impersonation: it's possible to create clients with impersonate_account parameter that impersonates another account.
  • Delegation: services (eg. Google Workspace) that requires specific subjects are automatically delegated, sometimes even performing additional credential signatures.
  • Region: most GCP services requires a location to work on (some even require specific locations). If not provided, the clients use the project's default location, as defined by App Engine.
  • Authorization: OIDC authorization is automatically generated for services (eg. CloudRun) that require authentication to be used.

Auto-Authorization

Some services require specific authorizations that should be setup prior to its usage, some examples:

  • [Pub/Sub] subscribe to a topic with authenticated push;
  • [Cloud Scheduler] schedule a job to trigger a Cloud Run service;
  • [Cloud Tasks] queue a task to trigger a Cloud Run service;

In these cases, gcp-pilot tries its best to assure that the required permissions are properly set up before the actual request is made.

Integration

Some services can be integrated, and gcp-pilot does just that in a seamless way by adding helper methods.

Example: you can subscribe to Google Cloud Build's events to be notified by every build step.

By using CloudBuild.subscribe, the gcp-pilot creates a subscription (and the topic, if needed) in the Google Pub/Sub service.

Supported APIs

  • IAM
    • manage service accounts
    • manage permissions
  • Resource Manager
    • manage projects
    • manage permissions
  • Identity Aware Proxy
    • generate OIDC token
  • Source Repositories
    • manage repositories
  • Cloud SQL
    • manage instances
    • manage databases
    • manage users
  • Cloud Storage
    • manage buckets
    • manage files
  • Cloud Build
    • manager triggers
  • Cloud Scheduler
    • manage schedules
  • Cloud Tasks
    • manage tasks & queues
  • BigQuery
    • manage datasets
    • perform queries
  • Calendar
    • manage events
  • Google Chats
    • build complex messages
    • call webhook
    • interact as bot
  • Cloud Directory
    • manage groups
  • Sheets
    • manage spreadsheets (powered by gspread)
  • Speech
    • recognize speech from audio
  • Datastore
    • Object Mapping ("ORM-ish" management of documents)

Project details


Release history Release notifications | RSS feed

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

gcp-pilot-0.15.0.tar.gz (33.9 kB view details)

Uploaded Source

Built Distribution

gcp_pilot-0.15.0-py3-none-any.whl (40.1 kB view details)

Uploaded Python 3

File details

Details for the file gcp-pilot-0.15.0.tar.gz.

File metadata

  • Download URL: gcp-pilot-0.15.0.tar.gz
  • Upload date:
  • Size: 33.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.1.4 CPython/3.8.7 Linux/5.4.0-1036-azure

File hashes

Hashes for gcp-pilot-0.15.0.tar.gz
Algorithm Hash digest
SHA256 88a1a40e5fa59dafb385462e763ae15b4fa353c36e60c109a00a9d13eb48046c
MD5 c27f6b14a365b8eca60a88f8519deb25
BLAKE2b-256 c5be406dc328dc07e399c2d44d057ce41964d39362db6a54079ca4926a62d8ea

See more details on using hashes here.

File details

Details for the file gcp_pilot-0.15.0-py3-none-any.whl.

File metadata

  • Download URL: gcp_pilot-0.15.0-py3-none-any.whl
  • Upload date:
  • Size: 40.1 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.1.4 CPython/3.8.7 Linux/5.4.0-1036-azure

File hashes

Hashes for gcp_pilot-0.15.0-py3-none-any.whl
Algorithm Hash digest
SHA256 cdfe01b3adbf89a34934d2a80f2bc35c8e8682640db60960592f3f2b7729c5d1
MD5 53cef17ddae1ec538fd060ed7ac06065
BLAKE2b-256 8f3afa0545db5bce7c23cf6a9867158c890982914503f81d7baad66bc22a8c0f

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page