Allaksen käyttö Pythonin ja SWIFT-protokollan kanssa
CSC:n ohjeet OpenStackin ja muiden tarvittavien Python-kirjastojen asentamiseen.
Lataa OpenStack RC File v3 viimeisessä osiossa annettujen ohjeiden mukaan Configure your terminal environment for OpenStack.
Esimerkeissä tarvittavat Python pip -kirjastot:
python-keystoneclient ja python-swiftclient.
Tämä sivu sisältää Python-skriptit seuraaville toiminnoille:
Toiminto |
---|
Luo yhteys palvelimeen |
Luo bucket |
Lataa objekti |
Listaa bucketit ja objektit |
Lataa objekti palvelimelta |
Poista bucketit ja objektit |
Luo yhteys
Tämä Python-skripti luo 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ätietoa Keystone autentikoinnista:
https://docs.openstack.org/python-swiftclient/newton/client-api.html
Luo bucket
Luo uusi bucket seuraavalla skriptillä:
Lataa objekti
Lataa pieni tiedosto nimeltä my_snake.txt
bucketiin 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' ]
# rajaa lataus säikeitä neljään
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)
Listaa bucketit ja objektit
Listaa kaikki projektiin kuuluvat bucketit:
Ja kaikki buckettiin kuuluvat objektit:
for info in conn.get_container('snakebucket')[1]:
print('{0}\t{1}\t{2}'.format(info['name'], info['bytes'], info['last_modified']))
Lataa objekti palvelimelta
Lataa objekti:
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 binääritilassa sen sijaan, että käyttäisit tekstitilaa.Poista bucketit ja objektit
Poista bucket:
Huom: Vain tyhjät bucketit voidaan poistaa.
Poista objekti: