-
Allas-asiakasohjelmat
-
Python Swift-rajapinnalla
Allaksen käyttö Pythonilla ja SWIFT-protokollalla
CSC:n ohjeet OpenStackin ja muiden tarvittavien Python-kirjastojen asentamiseen.
Lataa OpenStack RC File v3 viimeisen osion Määritä terminaaliympäristösi OpenStackia varten ohjeiden mukaisesti.
Esimerkeissä tarvittavat Python pip -kirjastot:
python-keystoneclient ja python-swiftclient.
Tämä sivu sisältää Python-skriptejä seuraaviin toimintoihin:
| Toiminto |
|---|
| Yhteyden muodostaminen palvelimeen |
| Ämpärin luominen |
| Objektin lataaminen palveluun |
| Ämpärien ja objektien listaaminen |
| Objektin lataaminen palvelusta |
| Ämpärien ja objektien poistaminen |
Yhteyden luominen
Tämä Python-skripti muodostaa yhteyden palvelimeen:
from keystoneauth1 import session
from keystoneauth1.identity import v3
import os
import swiftclient
from swiftclient.multithreading import OutputManager
from swiftclient.service import SwiftError, SwiftService, SwiftUploadObject
_authurl = os.environ['OS_AUTH_URL']
_auth_version = os.environ['OS_IDENTITY_API_VERSION']
_user = os.environ['OS_USERNAME']
_key = os.environ['OS_PASSWORD']
_os_options = {
'user_domain_name': os.environ['OS_USER_DOMAIN_NAME'],
'project_domain_name': os.environ['OS_USER_DOMAIN_NAME'],
'project_name': os.environ['OS_PROJECT_NAME']
}
conn = swiftclient.Connection(
authurl=_authurl,
user=_user,
key=_key,
os_options=_os_options,
auth_version=_auth_version
)
Vaihtoehtoisesti voit syöttää tiedot suoraan skriptiin ladatusta RC-tiedostosta:
import swiftclient
_authurl = 'https://pouta.csc.fi:5001/v3'
_auth_version = '3'
_user = 'John'
_key = 'John1234'
_os_options = {
'user_domain_name': 'Default',
'project_domain_name': 'Default',
'project_name': 'project_123456'
}
conn = swiftclient.Connection(
authurl=_authurl,
user=_user,
key=_key,
os_options=_os_options,
auth_version=_auth_version
)
Yllä olevassa esimerkissä:
| OS_AUTH_URL | = _authurl | = https://pouta.csc.fi:5001/v3 |
| OS_IDENTITY_API_VERSION | = _auth_version | = 3 |
| OS_USERNAME | = _user | = John |
| OS_PASSWORD | = _key | = John1234 |
| OS_PROJECT_NAME | = project_name | = project_123456 |
Lisätietoja Keystone-tunnistautumisesta:
https://docs.openstack.org/python-swiftclient/newton/client-api.html
Ämpärin luominen
Luo uusi ämpäri seuraavalla skriptillä:
Objektin lataaminen palveluun
Lataa pieni tiedosto nimeltä my_snake.txt ämpäriin snakebucket:
object_name='my_snake.txt'
with open(object_name, 'r') as f:
conn.put_object(bucket_name, object_name,
contents=f.read(),
content_type='text/plain')
object_list = [ 'my_snake.txt' ]
# limit upload threads to 4
opts = {'object_uu_threads': 4}
with SwiftService(options=opts) as swift:
try:
for r in swift.upload(bucket_name, object_list, { 'segment_size': 5000000000, }):
if r['success']:
if 'object' in r:
print(r['object'])
elif 'for_object' in r:
print(
'%s segment %s' % (r['for_object'],
r['segment_index'])
)
else:
print(r)
except SwiftError as e:
print(e.value)
Ämpärien ja objektien listaaminen
Listaa kaikki projektiin kuuluvat ämpärit:
Ja kaikki ämpäriin kuuluvat objektit:
for info in conn.get_container('snakebucket')[1]:
print('{0}\t{1}\t{2}'.format(info['name'], info['bytes'], info['last_modified']))
Objektin lataaminen palvelusta
Lataa objekti palvelusta:
my_obj = conn.get_object(bucket_name, object_name)[1]
with open('new_name_for_file.txt', 'w') as f:
f.write(my_obj)
Huomaa: Jos saat virheen
avaa tiedosto binaaritilassa tekstitilan sijaan.Ämpärien ja objektien poistaminen
Poista ämpäri:
Huomaa: Vain tyhjät ämpärit voidaan poistaa.
Poista objekti: