A package to interact with StackPath
Project description
PyStackpath - StackPath Python Library
Python library interact with StackPath API (https://stackpath.dev/reference)
It uses a custom OAuth2 requests.session
Install
pip install pystackpath
Examples
Set up a new Stackpath instance
from pystackpath import Stackpath
sp = Stackpath(
os.getenv("STACKPATH_CLIENTID"),
os.getenv("STACKPATH_APISECRET")
)
Search for stacks
stacks = sp.stacks().index(filter="name='my-awesome-stack' and status='ACTIVE'")
print(stacks)
Get one stack
stackid = "afcdaf14-47cb-40dd-9c13-3b20e6caf74a
onestack = sp.stacks().get(stackid)
Create a new stack
accountid = "081af5ee-38f8-44e9-b08a-881ea5de66f9"
newstack = sp.stacks().create(accountid, "my-second-stack")
Create a cdn site
stackid = "afcdaf14-47cb-40dd-9c13-3b20e6caf74a
cdnsite = sp.stacks().get(stackid).cdnsites().create(
domain="cdn.johndoe.com",
origin={"hostname": "www.johndoe.com"},
type="CDN"
)
Search for cdn sites
cdnsite = sp.stacks().get(stackid).cdnsites().index(
filter="label='www.johndoe.com' and status='ACTIVE'"
)
Delete a cdn site
cdnsiteid = "19e1a7b2-068f-491c-a95f-b64eae66dd34"
cdnsite = sp.stacks().get(stackid).cdnsites().get(cdnsiteid).delete()
Disable and enable a cdn site
cdnsiteid = "19e1a7b2-068f-491c-a95f-b64eae66dd34"
cdnsite = sp.stacks().get(stackid).cdnsites().get(cdnsiteid).enable()
cdnsite = cdnsite.enable()
Purge a cdn resource and check the purge status.
purge_result1 = sp.stacks().get(stackid).purge(
url="https://example.com/resource/",
)
## Function accepts the arguments shown below with their respective
## default values. See API Doc for more information on options:
## https://developer.stackpath.com/en/api/cdn/#operation/PurgeContent
purge_result2 = sp.stacks().get(stackid).purge(
url="https://example.com/",
recursive = True,
invalidateOnly = False,
purgeAllDynamic = False,
headers = [],
purgeSelector = []
## purge_status can be used to check the status of the requested purge.
## Progress is represented as a decimal between 0 and 1, correlating to a
## percentage.
purge_status_response1 = sd.stacks().get(stackid).purge_status(purge_result1.id)
print(purge_status_response1.progress)
##>> 1
)
## purge_status can be used to check the status of the requested purge.
## Progress is represented as a decimal between 0 and 1, correlating to a
## percentage.
purge_status_response1 = sp.stacks().get(stackid).purge_status(purge_result1.id)
print(purge_status_response1.progress)
##>> 1
Get metrics for a stack:
metrics_response1 = sp.stacks().get(stackid).metrics().get()
## Python datetime objects can be used to specify a date range, and the call
## allows a granularity to be specified. If no values are provided, the search range
## defaults to the last 24 hours, with 1 day granularity. See API doc for options.
## https://developer.stackpath.com/en/api/cdn/#operation/GetMetrics
## There is also a "platforms" argument which takes an array of "platform" codes.
## However the dev guide linked below only lists "CDE" which tracks egress traffic, which is
## how Stackpath bills for CDN usage, and "CDO" which is ingest traffic from the
## origin host, but is not billed. Since "CDE" tracks billable usage, it is the
## default.
## https://developer.stackpath.com/docs/en/cdn/getting-stack-metrics/
from datetime import datetime, timedelta
end = datetime.today()
start = end - timedelta(days=7)
metrics_response2 = sp.stacks().get(stackid).metrics().get(granularity="PT1H",\
platforms = ["CDO", "CDE"], start_datetime_object = start, end_datetime_object = end)
Retrieve all certificates from a stack:
certificate_response = sp.stacks().get(stackid).certificates()
##The object returned will have a 'results' attribute containing
##an array of the available certificates:
first_certificate = certificate_response['results'][0]
second_certificate = certificate_response['results'][1]
Add, update and delete a certificate for a stack:
##The cert and key are required, CA bundle is optional.
new_cert_response = sp.stacks().get(stackid).certificates().add(\
SERVER_CERTIFICATE_STRING, PRIVATE_KEY_STRING, CA_BUNDLE_STRING)
##The new cert ID can be retrieved from the returned object:
cert_id = new_cert_response.id
##To update a cert:
sp.stacks().get(stackid).certificates().update(cert_id, UPDATED_CERT_STRING, UPDATED_KEY_STRING)
##To delete a cert:
delete_cert_response = sp.stacks().get(stackid).certificates().delete(cert_id)
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
pystackpath-0.0.6.tar.gz
(9.1 kB
view hashes)
Built Distribution
Close
Hashes for pystackpath-0.0.6-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 51e08559eb4594d821cd2f3224f9aed832c9447c1ae31eba951d9c37f30074f9 |
|
MD5 | a108b9bf016682a184eb40845c132747 |
|
BLAKE2b-256 | f8f9f0cbdecd25c5a515b9972261f3d8370e2a95dfe6ccc62d04a434b19cbc1b |