This python SDK helps you to perform actions on Outscale API.
You will need to have an Outscale account, please visit Outscale website.
You can install the pre-built python package through this command:
$ pip install osc-sdk-pythonTo build the package yourself:
$ make packageYou can then install it with:
$ pip install dist/osc_sdk_python-0.37.0-py3-none-any.whlWhen you use the cli you can choose a profile. Profiles can be set with environment variables or in a file. It checks environment variables before loading the file.
In the file, you can set a default profile, naming default. It will be used if you don't precise profile in command line.
$ export OSC_PROFILE=<PROFILE> (default: "default")
$ # or
$ export OSC_ACCESS_KEY=<ACCESS_KEY>
$ export OSC_SECRET_KEY=<SECRET_KEY>
$ # optional
$ export OSC_REGION=<REGION> (default: eu-west-2)
$ export OSC_MAX_RETRIES=<INT> (default: 3)
$ export OSC_RETRY_BACKOFF_FACTOR=<FLOAT> (default: 1.0)
$ export OSC_RETRY_BACKOFF_JITTER=<FLOAT> (default: 3.0)
$ export OSC_RETRY_BACKOFF_MAX=<FLOAT> (default: 30)$ cat ~/.osc/config.json
{
"default": {
"access_key": "<ACCESS_KEY>",
"secret_key": "<SECRET_KEY>",
"region": "<REGION>"
},
"profile_1": {
"access_key": "<ACCESS_KEY>",
"secret_key": "<SECRET_KEY>",
"region": "<REGION>"
},
"profile_2": {
"access_key": "<ACCESS_KEY>",
"secret_key": "<SECRET_KEY>",
"region": "<REGION>"
}
}Notes:
- if ~/.osc/config.json is not found, ~/.oapi_credentials will be used
- Environment variables have priority over Credentials files.
You can also use osc-sdk-python with basic authentication mechanism using your account's email and password. Note that some calls may be blocked with this method. More details in authentication documentation.
Example:
gw = Gateway(email="your@email.com", password="youAccountPassword")
keys = gw.ReadAccessKeys()The following options can be provided when initializing the Gateway to customize the retry behavior of the SDK.
These options are:
- max_retries (integer, default 3)
- retry_backoff_factor (float, default 1.0)
- retry_backoff_jitter (float, default 3.0)
- retry_backoff_max (float, default 30)
Those options correspond to their counterparts in urllib3
Example:
gw = Gateway(max_retries=5, retry_backoff_factor=0.5, retry_backoff_jitter=1.0, retry_backoff_max=120)A simple example that prints all your Virtual Machine and Volume IDs.
from osc_sdk_python import Gateway
if __name__ == '__main__':
gw = Gateway()
print("your virtual machines:")
for vm in gw.ReadVms()["Vms"]:
print(vm["VmId"])
print("\nyour volumes:")
for volume in gw.ReadVolumes()["Volumes"]:
print(volume["VolumeId"])Usage example, check Outscale API documentation for more details.
from osc_sdk_python import Gateway
if __name__ == '__main__':
gw = Gateway(**{'profile': 'profile_1'})
# Calls with api Action as method
result = gw.ReadSecurityGroups(Filters={'SecurityGroupNames': ['default']})
result = gw.CreateVms(ImageId='ami-3e158364', VmType='tinav4.c2r4')
# Or raw calls:
result = gw.raw('ReadVms')
result = gw.raw('CreateVms', ImageId='ami-xx', BlockDeviceMappings=[{'/dev/sda1': {'Size': 10}}], SecurityGroupIds=['sg-aaa', 'sg-bbb'], Wrong='wrong')Another example with logs
from osc_sdk_python import *
if __name__ == '__main__':
gw = Gateway(**{'profile': 'profile_1'})
# what can contain LOG_KEEP_ONLY_LAST_REQ or LOG_ALL
# here we pront log in memory, in standard output and in satndard error
gw.log.config(type=LOG_MEMORY | LOG_STDIO | LOG_STDERR, what=LOG_KEEP_ONLY_LAST_REQ)
# Or raw calls:
result = gw.raw('ReadVms')
last_request = gw.log.str()
print(last_request)Some people my encounter some issue with utf-8 which looks like this
Problem reading (…)osc_sdk_python/osc-api/outscale.yaml:'ascii' codec can't decode byte 0xe2 in position 14856: ordinal not in range(128)To avoid this issue, configure you locals as follow:
LC_ALL=en_US.UTF-8if you don't want your locals to be set system wide you can proceed as follow:
LC_ALL=en_US.UTF-8 pip install osc-sdk-python