|
|
import getpass import json import os
import libcloud import libcloud.security import requests from libcloud.storage.providers import get_driver from libcloud.storage.types import Provider
# HS-Fulda Private Cloud auth_url = 'https://192.168.72.40:5000' region_name = 'RegionOne' domain_name = "hsfulda"
api_ip = '192.168.72.102'
def main(): ########################################################################### # # get credentials # ###########################################################################
if "OS_PROJECT_NAME" in os.environ: project_name = os.environ["OS_PROJECT_NAME"] else: project_name = eval(input("Enter your OpenStack project:"))
if "OS_USERNAME" in os.environ: auth_username = os.environ["OS_USERNAME"] else: auth_username = eval(input("Enter your OpenStack username:"))
if "OS_PASSWORD" in os.environ: auth_password = os.environ["OS_PASSWORD"] else: auth_password = getpass.getpass("Enter your OpenStack password:")
########################################################################### # # create connection # ###########################################################################
libcloud.security.VERIFY_SSL_CERT = False
provider = get_driver(Provider.OPENSTACK_SWIFT) swift = provider(auth_username, auth_password, ex_force_auth_url=auth_url, ex_force_auth_version='3.x_password', ex_tenant_name=project_name, ex_force_service_region=region_name, ex_domain_name=domain_name)
########################################################################### # # create container # ###########################################################################
container_name = 'fractals' containers = swift.list_containers() container = False for con in containers: if con.name == container_name: container = con
if not container: container = swift.create_container(container_name=container_name)
print(container)
########################################################################### # # backup existing fractals to container # ###########################################################################
endpoint = 'http://' + api_ip params = { 'results_per_page': '-1' } response = requests.get('%s/v1/fractal' % endpoint, params=params) data = json.loads(response.text) for fractal in data['objects']: response = requests.get('%s/fractal/%s' % (endpoint, fractal['uuid']), stream=True) container.upload_object_via_stream(response.iter_content(), object_name=fractal['uuid'])
for object_data in container.list_objects(): print(object_data)
if __name__ == '__main__': main()
|