Skip to main content

Packet API client

Project description

Packet

A Python client for the Packet API.

Build Status

Table of Contents

Installation

The packet python api library can be installed using pip:

pip install packet-python

Package information available here:

https://pypi.python.org/pypi/packet-python

Documentation

Full Packet API documenation is available here: https://www.packet.net/developers/api/

Authentication

Provide your credentials when instantiating client:

import packet
manager = packet.Manager(auth_token="yourapiauthtoken")

Examples

List Projects

import packet
manager = packet.Manager(auth_token="yourapiauthtoken")

projects = manager.list_projects()
for project in projects:
    print(project)

List Plans

import packet
manager = packet.Manager(auth_token="yourapiauthtoken")

plans = manager.list_plans()
for plan in plans:
    print(plan)
    if 'cpus' in plan.specs:
        print(plan.specs['cpus'][0]['count'])

Creating a Device

import packet
manager = packet.Manager(auth_token="yourapiauthtoken")

device = manager.create_device(project_id='project-id',
                               hostname='node-name-of-your-choice',
                               plan='baremetal_1', facility='ewr1',
                               operating_system='ubuntu_18_04')
print(device)

Checking the Status and Rebooting a Device

import packet
manager = packet.Manager(auth_token="yourapiauthtoken")

device = manager.get_device('device-id')
print(device.state)
device.reboot()

Listing all Devices Limiting to 50 per Page

Packet API defaults to a limit of 10 per page

import packet
manager = packet.Manager(auth_token="yourapiauthtoken")
params = {
    'per_page': 50
}
devices = manager.list_devices(project_id='project_id', params = params)
print(devices)

Updating a Device

import packet
manager = packet.Manager(auth_token="yourapiauthtoken")

device = manager.get_device('device-id')
device.hostname = "test02"
device.description = "new description"

device.update()

Deleting a Device

import packet
manager = packet.Manager(auth_token="yourapiauthtoken")

device = manager.get_device('device-id')
device.delete()

Creating a Device Batch

import packet
manager = packet.Manager(auth_token="yourapiauthtoken")

batch01 = packet.DeviceBatch({
            "hostname": "batch01",
            "quantity": 2,
            "facility": "ams1",
            "operating_system": "centos_7",
            "plan": "baremetal_0",
        })

device_batch = manager.create_batch(project_id="project_id", params=[batch01])
print(device_batch)

Creating a Volume

import packet
manager = packet.Manager(auth_token="yourapiauthtoken")

volume = manager.create_volume(project_id="project-id",
                                description="volume description",
                                plan="storage_1",
                                size="100",
                                facility="ewr1",
                                snapshot_count=7,
                                snapshot_frequency="1day")
print(volume)

Attaching and Detaching a Volume

import packet
import time

manager = packet.Manager(auth_token="yourapiauthtoken")
volume = manager.get_volume("volume_id")

volume.attach("device_id")

while True:
    if manager.get_device("device_id").state == "active":
        break
    time.sleep(2)

volume.detach()

Creating and Restoring a Volume Snapshot

import packet
import time

manager = packet.Manager(auth_token="yourapiauthtoken")

volume = manager.get_volume("volume_id")
volume.create_snapshot()

while True:
    if manager.get_volume(volume.id).state == "active":
        break
    time.sleep(2)

snapshots = manager.get_snapshots(volume.id)
volume.restore(snapshots[0].timestamp)

Listing Project IP Addresses

import packet
manager = packet.Manager(auth_token="yourapiauthtoken")

ips = manager.list_project_ips("project_id")
for ip in ips:
    print(ip.address)

Creating a Project for an Organization

import packet
manager = packet.Manager(auth_token="yourapiauthtoken")

project = manager.create_organization_project(
    org_id="organization_id",
    name="Integration Tests",
    customdata={"tag": "QA"}
)
print(project)

Creating a VLAN

import packet
manager = packet.Manager(auth_token="yourapiauthtoken")

vlan = manager.create_vlan(project_id="project_id", facility="ewr1")
print(vlan)

Contributing

  • Check out the latest master to make sure the feature hasn't been implemented or the bug hasn't been fixed yet.
  • Check out the issue tracker to make sure someone already hasn't requested it and/or contributed it.
  • Fork the project.
  • Start a feature/bugfix branch.
  • Commit and push until you are happy with your contribution.
  • You can test your changes with the test/tests.sh script, which is what drone uses to check builds.

Credits

CargoCulted with much gratitude from: https://github.com/koalalorenzo/python-digitalocean

Copyright

Copyright (c) 2017 Packet Host. See License for further details.

Changes

See the Changelog for further details.

Changelog

All notable changes to this project will be documented in this file.

The format is based on Keep a Changelog. This project adheres to Semantic Versioning.

[1.44.0] - Unreleased

Added

Changed

Fixed

[1.43.0] - 2020-07-14

Added

  • Support for reinstalling the operating system to a device, including changing the operating system.
  • Manager.create_vlan now includes a description argument

Changed

  • ResponseError will now be raised when an API call results in an error

Fixed

  • Manager.validate_capacity now considers availability
  • Manager.create_project_ssh_key will retry when it encounters 404 responses following a successful creation.
  • API responses with {"error":""} keys were not handled well, and will now be handled just like {"errors":[""]} keys.

[1.42.0] - 2020-02-14

Added

  • Capturing of available_in to Plan
  • Capturing of hardware_reservation, spot_price_max, termination_time, and provisioning_percentage to Device
  • Support for creating project ssh keys
  • Support for passing custom_data when creating a device

Fixed

  • Black not building for CI and thus failing

[1.41.0] - 2019-10-16

Added

  • Support for retrieval of hardware reservations
  • CPR support at device creation

[1.40.0] - 2019-10-14

Added

  • Integration tests are only run if PACKET_PYTHON_TEST_ACTUAL_API envvar is set
  • Rescue action and along with test
  • Missing SPDX and source encoding meta comments

Removed

  • Use of Travis CI

[1.39.1] - 2019-09-17

Added

  • Support for hardware_reservation_id

[1.39.0] - 2019-08-26

Added

  • Support for Organizations, Events, Emails, VLAN, Snapshot Policies, Batches, Ports, VPN and IPs.
  • Live tests

[1.38.2] - 2019-05-30

Added

  • Test fixtures to sdist

[1.38.1] - 2019-05-30

Fixed

  • Changelog

[1.38.0] - 2019-05-30

Added

  • Support for python3.7
  • legacy param to get_capacity function

Removed

  • Support for python3.3

Changed

  • setup.py no longer converts markdown to reST because pypi now supports markdown, woop.

[1.37.1] - 2018-01-08

Fixed

  • Version number in setup.py

[1.37.0] - 2018-01-08

Added

  • Spot Market Support
  • Ability to specify ssh keys on device creation

[1.36.0] - 2017-10-16

Added

  • Better tests using PacketMockManager
  • Test on 2.7 and 3.[3-6]
  • Changelog

Changed

  • Use tox for testing

[1.35] - 2017-08-04

Fixed

  • Some tests were broken

[1.35]

Added

  • public_ipv4_subnet_size

[1.34] - 2017-08-04

Added

  • Custom iPXE and always_pxe setting
  • Volume coloning
  • Device Tags

Fixed

  • Handling of error messages from api response

[1.33] - 2017-03-15

Fixed

  • Default payment method

Project details


Download files

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

Source Distribution

packet-python-1.43.0.tar.gz (32.9 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

packet_python-1.43.0-py2.py3-none-any.whl (25.0 kB view details)

Uploaded Python 2Python 3

File details

Details for the file packet-python-1.43.0.tar.gz.

File metadata

  • Download URL: packet-python-1.43.0.tar.gz
  • Upload date:
  • Size: 32.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.2.0 pkginfo/1.5.0.1 requests/2.24.0 setuptools/46.0.0 requests-toolbelt/0.9.1 tqdm/4.47.0 CPython/3.7.7

File hashes

Hashes for packet-python-1.43.0.tar.gz
Algorithm Hash digest
SHA256 48fcc5ca6e7f3d84ef91016585d1894bb9deb3dae6591ffab90fdf05006c3e48
MD5 c45a46e0c29c27a6ec26339493d580ed
BLAKE2b-256 aed72b8e3a274400d7acf83a5effca640ad31c7ba6bd41e2146baeda4d9e211e

See more details on using hashes here.

File details

Details for the file packet_python-1.43.0-py2.py3-none-any.whl.

File metadata

  • Download URL: packet_python-1.43.0-py2.py3-none-any.whl
  • Upload date:
  • Size: 25.0 kB
  • Tags: Python 2, Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.2.0 pkginfo/1.5.0.1 requests/2.24.0 setuptools/46.0.0 requests-toolbelt/0.9.1 tqdm/4.47.0 CPython/3.7.7

File hashes

Hashes for packet_python-1.43.0-py2.py3-none-any.whl
Algorithm Hash digest
SHA256 0ab786c7b36d3fa960b48806e4186917b4f488c5f258219c8262220f1b6936eb
MD5 336e96569d35961d11bf46280676d992
BLAKE2b-256 d70b369bdb06f32a92597c70bea45cb7ec291242bb4fa39758f9121c0cd04afd

See more details on using hashes here.

Supported by

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