
See: http://wiki.openstack.org/ProjectTestingInterface Tox can manage virtualenvs, and is currently doing so for running tests in Jenkins. It's just as, or more, useful for running tests locally, so this starts the migration from the run_tests system to tox. The goal is to reduce duplicate testing infrastructure, and get what's running locally on developer workstations as close to what is run by Jenkins as possible. This patch removes run_tests.py, and the scripts that manage .venv. It makes run_tests.sh call tox to facilitate the transition for developers used to typing "run_tests.sh". Developers will need tox installed on their workstations. It can be installed from PyPI with "pip install tox". run_tests.sh outputs those instructions if tox is not present. New facilities are available using tox directly, including: tox -e py26 # run tests under python 2.6 tox -e py27 # run tests under python 2.7 tox -e pep8 # run pep8 tests tox # run all of the above tox -e venv foo # run the command "foo" inside a virtualenv The configuration of the openstack nose plugin is removed from setup.cfg and added to the nosetests command line arguments in tox. It is used when running tox from the command line, so the enhanced, colorized output is visible to developers running the test suite locally. However, when Jenkins runs tox, the xunit plugin will be used instead, providing output natively understood by jenkins which is much more readable in that context. Change-Id: Id678c2fb8a5a7d79c680d3d1f2f12141f73dc8a6
Python bindings to the OpenStack Image API
This is a client for the Glance which uses the OpenStack Image API.
There's a Python API (the glanceclient
module), and a
command-line script (glance
).
Development takes place via the usual OpenStack processes as outlined in the OpenStack wiki. The master repository is on GitHub.
This code is based on OpenStack's python-keystoneclient which is based on Rackspace's python-novaclient which is in turn a fork of Jacobian's python-cloudservers. The python-glanceclient is licensed under the Apache License like the rest of OpenStack.
Contents:
Python API
If you wish to use the internal python api directly, you must obtain an auth token and identify which endpoint you wish to speak to manually. Once you have done so, you can use the API:
>>> from glanceclient.v1 import client
>>> glance = client.Client(endpoint=OS_IMAGE_ENDPOINT, token=OS_AUTH_TOKEN)
>>> glance.images.list()
>>> image = glance.images.create(name="My Test Image")
>>> print image.status
'queued'
>>> image.upload(open('/tmp/myimage.iso', 'rb'))
>>> print image.status
'active'
>>> image_file = image.image_file
>>> with open('/tmp/copyimage.iso', 'wb') as f:
for chunk in image_file:
f.write(chunk)
>>> image.delete()
Command-line API
Installing this package gets you a command-line tool,
glance
, that you can use to interact with Glance through
the OpenStack Image API.
You'll need to provide your OpenStack username, password, tenant, and
auth endpoint. You can do this with the --os-tenant-id
,
--os-username
, --os-password
, and
--os-auth-url
params, but it's easier to just set them as
environment variables:
export OS_USERNAME=user
export OS_PASSWORD=pass
export OS_TENANT_ID=b363706f891f48019483f8bd6503c54b
export OS_AUTH_URL=http://auth.example.com:5000/v2.0
Since the Identity service that Glance uses can return multiple
regional image endpoints in the Service Catalog, you can specify the one
you want with --region_name
(or
export OS_REGION_NAME
). It defaults to the first in the
list returned.
If you already have an auth token and endpoint, you may manually pass
them in to skip automatic authentication with your identity service.
Either define them in command-line flags (--os-image-url
and --os-auth-token
) or in environment variables:
export OS_IMAGE_URL=http://glance.example.org:5000/v1
export OS_AUTH_TOKEN=3bcc3d3a03f44e3d8377f9247b0ad155
You'll find complete documentation on the shell by running
glance help
.