diff options
| author | CoprDistGit <infra@openeuler.org> | 2023-05-05 06:50:42 +0000 |
|---|---|---|
| committer | CoprDistGit <infra@openeuler.org> | 2023-05-05 06:50:42 +0000 |
| commit | 791815a318a6257b524479941862d7297138a951 (patch) | |
| tree | 31653b67dc463617000dbc817ffe343b85daa78a | |
| parent | 60baf05f28ef96525d5ad83d196d17db427424f6 (diff) | |
automatic import of python-packet-pythonopeneuler20.03
| -rw-r--r-- | .gitignore | 1 | ||||
| -rw-r--r-- | python-packet-python.spec | 1303 | ||||
| -rw-r--r-- | sources | 1 |
3 files changed, 1305 insertions, 0 deletions
@@ -0,0 +1 @@ +/packet-python-1.44.3.tar.gz diff --git a/python-packet-python.spec b/python-packet-python.spec new file mode 100644 index 0000000..33b7935 --- /dev/null +++ b/python-packet-python.spec @@ -0,0 +1,1303 @@ +%global _empty_manifest_terminate_build 0 +Name: python-packet-python +Version: 1.44.3 +Release: 1 +Summary: Equinix Metal (Packet) API client +License: LGPL v3 +URL: https://github.com/packethost/packet-python +Source0: https://mirrors.nju.edu.cn/pypi/web/packages/36/a5/ce1dbc68f65d3be09afe3702687fad82b03d590906429a4b5533cb0a23cb/packet-python-1.44.3.tar.gz +BuildArch: noarch + +Requires: python3-requests + +%description +# Equinix Metal + +A Python client for the Equinix Metal API. + +[](https://github.com/packethost/packet-python/actions/workflows/test.yml) +[](https://github.com/packethost/standards/blob/main/maintained-statement.md#maintained-statements) + +This repository is [Maintained](https://github.com/packethost/standards/blob/master/maintained-statement.md) meaning that this software is supported by Equinix Metal and its community - available to use in production environments. + +## Table of Contents + +* [Installation](#installation) +* [Documentation](#documentation) +* [Authentication](#authentication) +* [Examples](#examples) + * [List Projects](#list-projects) + * [List Plans](#list-plans) + * [Creating a Device](#creating-a-device) + * [Checking the Status and Rebooting a Device](#checking-the-status-and-rebooting-a-device) + * [Listing all Devices Limiting to 50 per Page](#listing-all-devices-limiting-to-50-per-page) + * [Updating a Device](#updating-a-device) + * [Deleting a Device](#deleting-a-device) + * [Creating a Device Batch](#creating-a-device-batch) + * [Creating a Volume](#creating-a-volume) + * [Attaching and Detaching a Volume](#attaching-and-detaching-a-volume) + * [Creating and Restoring a Volume Snapshot](#creating-and-restoring-a-volume-snapshot) + * [Listing Project IP Addresses](#listing-project-ip-addresses) + * [Creating a Project for an Organization](#creating-a-project-for-an-organization) + * [Creating a VLAN](#creating-a-vlan) +* [Contributing](#contributing) +* [Copyright](#copyright) +* [Changes](#changes) + +## Installation + +The Equinix Metal 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 Equinix Metal API documenation is available here: +[https://metal.equinix.com/developers/api/](https://metal.equinix.com/developers/api/) + +## Authentication + +Provide your credentials when instantiating client: + +```python +import packet +manager = packet.Manager(auth_token="yourapiauthtoken") +``` + +## Examples + +### List Projects + +```python +import packet +manager = packet.Manager(auth_token="yourapiauthtoken") + +projects = manager.list_projects() +for project in projects: + print(project) +``` + +### List Plans + +```python +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 + +```python +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', metro='sv', + operating_system='ubuntu_18_04') +print(device) +``` + +### Checking the Status and Rebooting a Device + +```python +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 + +_Equinix Metal API defaults to a limit of 10 per page_ + +```python +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 + +```python +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 + +```python +import packet +manager = packet.Manager(auth_token="yourapiauthtoken") + +device = manager.get_device('device-id') +device.delete() +``` + +### Creating a Device Batch + +```python +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 + +```python +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 + +```python +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 + +```python +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 + +```python +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 + +```python +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 + +```python +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 `tox`, which is what GitHub Actions use to check builds. + +## Credits + +CargoCulted with much gratitude from: +https://github.com/koalalorenzo/python-digitalocean + +## Changes + +See the [Changelog](CHANGELOG.md) for further details. + +# Changelog +All notable changes to this project will be documented in this file. + +The format is based on [Keep a Changelog](http://keepachangelog.com/en/1.0.0/). +This project adheres to [Semantic Versioning](http://semver.org/spec/v2.0.0.html). + +## [1.45.0] - Unreleased +### Added +### Changed +### Fixed + +## [1.44.3] - 2022-07-27 +### Fixed +- Fix handling non-dict error data in ResponseError #128 #129 + +## [1.44.2] - 2021-11-18 +### Fixed +- Fix logic behind `validate_metro_capacity` #125 + +## [1.44.1] - 2021-09-20 +### Fixed +- Fix metros URL used in Metro API lists #122 +- Catch TypeError when HardwareReservations do not have a device assignment #120 + +## [1.44.0] - 2021-05-19 +### Added +- User-Agent header added to client requests #113 +- `Metro` class added (https://feedback.equinixmetal.com/changelog/new-metros-feature-live) #110 +- Adds `metro` property to `DeviceBatch`, `Device`, `IPAddress`, `VLan` #110 +- Adds `metro` to `create_device`, `reserve_ip_address`, `create_vlan`, `create_connection` #110 +- Adds `list_metros`, `validate_metro_capacity` to `Manager` #110 +- Adds `CODE_OF_CONDUCT.md`, `SUPPORT.md`, `OWNERS.md` #102, #101, #100 +- Adds package metadata for `author`, `author_email`, `copyright` #114 +### Changed +- `facility` is now optional in `create_device`, `reserve_ip_address`, `create_vlan`, `create_connection` #110 +- CI is using GH Actions instead of Drone #115 +### Fixed +- Handles when IPAddress Facility is null in API responses #117 + +## [1.43.1] - 2020-09-04 +### Fixed +- ResponseError fixed for Python2.7 compatibility + +## [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 + + +%package -n python3-packet-python +Summary: Equinix Metal (Packet) API client +Provides: python-packet-python +BuildRequires: python3-devel +BuildRequires: python3-setuptools +BuildRequires: python3-pip +%description -n python3-packet-python +# Equinix Metal + +A Python client for the Equinix Metal API. + +[](https://github.com/packethost/packet-python/actions/workflows/test.yml) +[](https://github.com/packethost/standards/blob/main/maintained-statement.md#maintained-statements) + +This repository is [Maintained](https://github.com/packethost/standards/blob/master/maintained-statement.md) meaning that this software is supported by Equinix Metal and its community - available to use in production environments. + +## Table of Contents + +* [Installation](#installation) +* [Documentation](#documentation) +* [Authentication](#authentication) +* [Examples](#examples) + * [List Projects](#list-projects) + * [List Plans](#list-plans) + * [Creating a Device](#creating-a-device) + * [Checking the Status and Rebooting a Device](#checking-the-status-and-rebooting-a-device) + * [Listing all Devices Limiting to 50 per Page](#listing-all-devices-limiting-to-50-per-page) + * [Updating a Device](#updating-a-device) + * [Deleting a Device](#deleting-a-device) + * [Creating a Device Batch](#creating-a-device-batch) + * [Creating a Volume](#creating-a-volume) + * [Attaching and Detaching a Volume](#attaching-and-detaching-a-volume) + * [Creating and Restoring a Volume Snapshot](#creating-and-restoring-a-volume-snapshot) + * [Listing Project IP Addresses](#listing-project-ip-addresses) + * [Creating a Project for an Organization](#creating-a-project-for-an-organization) + * [Creating a VLAN](#creating-a-vlan) +* [Contributing](#contributing) +* [Copyright](#copyright) +* [Changes](#changes) + +## Installation + +The Equinix Metal 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 Equinix Metal API documenation is available here: +[https://metal.equinix.com/developers/api/](https://metal.equinix.com/developers/api/) + +## Authentication + +Provide your credentials when instantiating client: + +```python +import packet +manager = packet.Manager(auth_token="yourapiauthtoken") +``` + +## Examples + +### List Projects + +```python +import packet +manager = packet.Manager(auth_token="yourapiauthtoken") + +projects = manager.list_projects() +for project in projects: + print(project) +``` + +### List Plans + +```python +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 + +```python +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', metro='sv', + operating_system='ubuntu_18_04') +print(device) +``` + +### Checking the Status and Rebooting a Device + +```python +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 + +_Equinix Metal API defaults to a limit of 10 per page_ + +```python +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 + +```python +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 + +```python +import packet +manager = packet.Manager(auth_token="yourapiauthtoken") + +device = manager.get_device('device-id') +device.delete() +``` + +### Creating a Device Batch + +```python +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 + +```python +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 + +```python +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 + +```python +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 + +```python +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 + +```python +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 + +```python +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 `tox`, which is what GitHub Actions use to check builds. + +## Credits + +CargoCulted with much gratitude from: +https://github.com/koalalorenzo/python-digitalocean + +## Changes + +See the [Changelog](CHANGELOG.md) for further details. + +# Changelog +All notable changes to this project will be documented in this file. + +The format is based on [Keep a Changelog](http://keepachangelog.com/en/1.0.0/). +This project adheres to [Semantic Versioning](http://semver.org/spec/v2.0.0.html). + +## [1.45.0] - Unreleased +### Added +### Changed +### Fixed + +## [1.44.3] - 2022-07-27 +### Fixed +- Fix handling non-dict error data in ResponseError #128 #129 + +## [1.44.2] - 2021-11-18 +### Fixed +- Fix logic behind `validate_metro_capacity` #125 + +## [1.44.1] - 2021-09-20 +### Fixed +- Fix metros URL used in Metro API lists #122 +- Catch TypeError when HardwareReservations do not have a device assignment #120 + +## [1.44.0] - 2021-05-19 +### Added +- User-Agent header added to client requests #113 +- `Metro` class added (https://feedback.equinixmetal.com/changelog/new-metros-feature-live) #110 +- Adds `metro` property to `DeviceBatch`, `Device`, `IPAddress`, `VLan` #110 +- Adds `metro` to `create_device`, `reserve_ip_address`, `create_vlan`, `create_connection` #110 +- Adds `list_metros`, `validate_metro_capacity` to `Manager` #110 +- Adds `CODE_OF_CONDUCT.md`, `SUPPORT.md`, `OWNERS.md` #102, #101, #100 +- Adds package metadata for `author`, `author_email`, `copyright` #114 +### Changed +- `facility` is now optional in `create_device`, `reserve_ip_address`, `create_vlan`, `create_connection` #110 +- CI is using GH Actions instead of Drone #115 +### Fixed +- Handles when IPAddress Facility is null in API responses #117 + +## [1.43.1] - 2020-09-04 +### Fixed +- ResponseError fixed for Python2.7 compatibility + +## [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 + + +%package help +Summary: Development documents and examples for packet-python +Provides: python3-packet-python-doc +%description help +# Equinix Metal + +A Python client for the Equinix Metal API. + +[](https://github.com/packethost/packet-python/actions/workflows/test.yml) +[](https://github.com/packethost/standards/blob/main/maintained-statement.md#maintained-statements) + +This repository is [Maintained](https://github.com/packethost/standards/blob/master/maintained-statement.md) meaning that this software is supported by Equinix Metal and its community - available to use in production environments. + +## Table of Contents + +* [Installation](#installation) +* [Documentation](#documentation) +* [Authentication](#authentication) +* [Examples](#examples) + * [List Projects](#list-projects) + * [List Plans](#list-plans) + * [Creating a Device](#creating-a-device) + * [Checking the Status and Rebooting a Device](#checking-the-status-and-rebooting-a-device) + * [Listing all Devices Limiting to 50 per Page](#listing-all-devices-limiting-to-50-per-page) + * [Updating a Device](#updating-a-device) + * [Deleting a Device](#deleting-a-device) + * [Creating a Device Batch](#creating-a-device-batch) + * [Creating a Volume](#creating-a-volume) + * [Attaching and Detaching a Volume](#attaching-and-detaching-a-volume) + * [Creating and Restoring a Volume Snapshot](#creating-and-restoring-a-volume-snapshot) + * [Listing Project IP Addresses](#listing-project-ip-addresses) + * [Creating a Project for an Organization](#creating-a-project-for-an-organization) + * [Creating a VLAN](#creating-a-vlan) +* [Contributing](#contributing) +* [Copyright](#copyright) +* [Changes](#changes) + +## Installation + +The Equinix Metal 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 Equinix Metal API documenation is available here: +[https://metal.equinix.com/developers/api/](https://metal.equinix.com/developers/api/) + +## Authentication + +Provide your credentials when instantiating client: + +```python +import packet +manager = packet.Manager(auth_token="yourapiauthtoken") +``` + +## Examples + +### List Projects + +```python +import packet +manager = packet.Manager(auth_token="yourapiauthtoken") + +projects = manager.list_projects() +for project in projects: + print(project) +``` + +### List Plans + +```python +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 + +```python +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', metro='sv', + operating_system='ubuntu_18_04') +print(device) +``` + +### Checking the Status and Rebooting a Device + +```python +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 + +_Equinix Metal API defaults to a limit of 10 per page_ + +```python +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 + +```python +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 + +```python +import packet +manager = packet.Manager(auth_token="yourapiauthtoken") + +device = manager.get_device('device-id') +device.delete() +``` + +### Creating a Device Batch + +```python +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 + +```python +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 + +```python +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 + +```python +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 + +```python +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 + +```python +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 + +```python +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 `tox`, which is what GitHub Actions use to check builds. + +## Credits + +CargoCulted with much gratitude from: +https://github.com/koalalorenzo/python-digitalocean + +## Changes + +See the [Changelog](CHANGELOG.md) for further details. + +# Changelog +All notable changes to this project will be documented in this file. + +The format is based on [Keep a Changelog](http://keepachangelog.com/en/1.0.0/). +This project adheres to [Semantic Versioning](http://semver.org/spec/v2.0.0.html). + +## [1.45.0] - Unreleased +### Added +### Changed +### Fixed + +## [1.44.3] - 2022-07-27 +### Fixed +- Fix handling non-dict error data in ResponseError #128 #129 + +## [1.44.2] - 2021-11-18 +### Fixed +- Fix logic behind `validate_metro_capacity` #125 + +## [1.44.1] - 2021-09-20 +### Fixed +- Fix metros URL used in Metro API lists #122 +- Catch TypeError when HardwareReservations do not have a device assignment #120 + +## [1.44.0] - 2021-05-19 +### Added +- User-Agent header added to client requests #113 +- `Metro` class added (https://feedback.equinixmetal.com/changelog/new-metros-feature-live) #110 +- Adds `metro` property to `DeviceBatch`, `Device`, `IPAddress`, `VLan` #110 +- Adds `metro` to `create_device`, `reserve_ip_address`, `create_vlan`, `create_connection` #110 +- Adds `list_metros`, `validate_metro_capacity` to `Manager` #110 +- Adds `CODE_OF_CONDUCT.md`, `SUPPORT.md`, `OWNERS.md` #102, #101, #100 +- Adds package metadata for `author`, `author_email`, `copyright` #114 +### Changed +- `facility` is now optional in `create_device`, `reserve_ip_address`, `create_vlan`, `create_connection` #110 +- CI is using GH Actions instead of Drone #115 +### Fixed +- Handles when IPAddress Facility is null in API responses #117 + +## [1.43.1] - 2020-09-04 +### Fixed +- ResponseError fixed for Python2.7 compatibility + +## [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 + + +%prep +%autosetup -n packet-python-1.44.3 + +%build +%py3_build + +%install +%py3_install +install -d -m755 %{buildroot}/%{_pkgdocdir} +if [ -d doc ]; then cp -arf doc %{buildroot}/%{_pkgdocdir}; fi +if [ -d docs ]; then cp -arf docs %{buildroot}/%{_pkgdocdir}; fi +if [ -d example ]; then cp -arf example %{buildroot}/%{_pkgdocdir}; fi +if [ -d examples ]; then cp -arf examples %{buildroot}/%{_pkgdocdir}; fi +pushd %{buildroot} +if [ -d usr/lib ]; then + find usr/lib -type f -printf "/%h/%f\n" >> filelist.lst +fi +if [ -d usr/lib64 ]; then + find usr/lib64 -type f -printf "/%h/%f\n" >> filelist.lst +fi +if [ -d usr/bin ]; then + find usr/bin -type f -printf "/%h/%f\n" >> filelist.lst +fi +if [ -d usr/sbin ]; then + find usr/sbin -type f -printf "/%h/%f\n" >> filelist.lst +fi +touch doclist.lst +if [ -d usr/share/man ]; then + find usr/share/man -type f -printf "/%h/%f.gz\n" >> doclist.lst +fi +popd +mv %{buildroot}/filelist.lst . +mv %{buildroot}/doclist.lst . + +%files -n python3-packet-python -f filelist.lst +%dir %{python3_sitelib}/* + +%files help -f doclist.lst +%{_docdir}/* + +%changelog +* Fri May 05 2023 Python_Bot <Python_Bot@openeuler.org> - 1.44.3-1 +- Package Spec generated @@ -0,0 +1 @@ +2a82b54eec69110c40f9dcb0f212e199 packet-python-1.44.3.tar.gz |
