PyPi Downloads License codecov
ibmcloud-python-sdk aims to talk to IBM Cloud. To do this, it requires a configuration file. ibmcloud-python-sdk favours clouds.yaml file, but can also use environment variables (see below). An example:
--- clouds: default: demo-acc demo-acc: profile: demo description: Credentials from my IBM Cloud demo account key: XxX1234567890XxX region: us-south version: 2021年06月15日 generation: 2 cis_username: 000000_sponge.bob@sink.com cis_apikey: abc123def456ghi789klm0n prod-acc: profile: prod description: Credentials from my IBM Cloud production account key: zZz1234567890zZz region: us-south version: 2021年06月15日 generation: 2 cis_username: 999999_sponge.bob@sink.com cis_apikey: @@abc123def456ghi789klm0n@@
The clouds.yaml file will be searched at first into ~/.ibmcloud directory but this behavior could be overrided by an environment variable.
| Variable | Description | Example | Mandatory |
|---|---|---|---|
IC_CONFIG_FILE |
Absolute path to the clouds.yaml file |
~/vault/ibm.yaml |
[ ] |
IC_CONFIG_NAME |
Name of the default cloud configuration | demo |
[ ] |
IC_REGION |
Region were to connect | us-south |
[x] |
IC_VERSION |
Requests the version of the API | 2021年06月15日 |
[x] |
IC_GENERATION |
The infrastructure generation for the request | 2 |
[x] |
IC_SDK_CONFIG_FILE |
Absolute path to the sdk.yaml file |
~/.config/ibmcloud/sdk.yaml |
[ ] |
IC_API_KEY |
API key created via the IBM Cloud IAM system | XxX1234567890XxX |
[x] |
SL_USERNAME |
SoftLayer user | goldyfruit |
[ ] |
SL_API_KEY |
SoftLayer API key | abc123def456ghi789klm0n |
[ ] |
Documentation for the IBM Cloud Python SDK is available here.
IBM Cloud Python SDK leverages existing Python SDKs such as:
Only VPC Gen 2 is supported by this SDK.
| Service | Feature |
|---|---|
| CIS | Baremetal, Object Storage |
| DNS | Public Zone, Private Zone |
| EM | Get Account, Get Enterprise |
| IAM | Policies, Roles |
| POWER | Power System |
| RESOURCE | Binding, Group, Instance, Key |
| VPC | ACL, FIP, Gateway, Geo, Image, Instance, Key, Load Balancer, Security, Subnet, Volume, VPC, VPN |
Install from PyPi via pip:
python -m venv ~/virtualenvs/ibmcloud-python-sdk source ~/virtualenvs/ibmcloud-python-sdk/bin/activate pip install ibmcloud-python-sdk
Or you can install from source:
cd ~/Git git clone https://github.com/goldyfruit/ibmcloud-python-sdk.git python -m venv ~/virtualenvs/ibmcloud-python-sdk source ~/virtualenvs/ibmcloud-python-sdk/bin/activate cd ~/Git/ibmcloud-python-sdk pip install .
We recommend to use Python virtual environment to install the SDK.
The SDK has caching capability (memcached only for now) to improve the HTTP requests speed. To enable this mechanisim please configure the SDK properly using ~/.ibmcloud/sdk.yaml file.
--- sdk: cache_ttl: 60 memcached: - 127.0.0.1:11211
Muttiple cache servers could be configured as well.
--- sdk: cache_ttl: 60 memcached: - 127.0.0.1:11211 - 127.0.0.1:11212 - 127.0.0.1:11213
An easy way to deploy memcached server is to use container.
podman run -dt -p 11211:11211 --name memcached -d memcached
sudo docker run -dt -p 11211:11211 --name memcached -d memcached
A list of examples on how to use this SDK can be found at here.
from ibmcloud_python_sdk.vpc import vpc as ic vpc = ic.Vpc() vpc.get_vpc("ibmcloud-vpc-baby")
from ibmcloud_python_sdk.vpc import vpc as icv from ibmcloud_python_sdk.resource import resource_group as icr import sys # Variables vpc_name = 'ibmcloud-vpc-baby' resource_group_name = 'ibmcloud-resource-group-baby' # Intentiate classes vpc = icv.Vpc() rg = icr.ResourceGroup() # Retrieve resource group ID and check for error resource_group_info = rg.get_resource_group(resource_group_name) if 'errors' in resource_group_info: print(resource_group_info['errors']) sys.exit() # Create the VPC based on variable and resource group ID response = vpc.create_vpc( name=vpc_name, resource_group=resource_group_info['id'], address_prefix_management='auto', classic_access=True ) # Check for error during the VPC creation process if 'errors' in response: print(response['errors']) else: print(response)
CRNorHREFcould not be used as ID to retrieve resourcesPATCHmethod (update) is not yet supported which means a resource cannot be updated
See the bundled LICENSE file for more information.