You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
|
|
from __future__ import print_function
import getpass import os
import libcloud.security from libcloud.storage.providers import get_driver from libcloud.storage.types import Provider
# reqs: # services: nova, glance, neutron # resources: 2 instances (m1.small), 2 floating ips (1 keypair, 2 security groups)
# HS-Fulda Private Cloud auth_url = 'https://192.168.72.40:5000' region_name = 'RegionOne' domain_name = "hsfulda"
def main(): ########################################################################### # # get credentials # ###########################################################################
if "OS_PROJECT_NAME" in os.environ: project_name = os.environ["OS_PROJECT_NAME"] else: project_name = input("Enter your OpenStack project:")
if "OS_USERNAME" in os.environ: auth_username = os.environ["OS_USERNAME"] else: auth_username = 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)
print(swift.list_containers())
########################################################################### # # upload a goat # ###########################################################################
object_name = 'an amazing goat' file_path = 'C:\\Users\\Sebastian\\goat.jpg' objects = container.list_objects() object_data = False for obj in objects: if obj.name == object_name: object_data = obj
if not object_data: # print(os.getcwd()) container = swift.get_container(container_name=container_name) object_data = container.upload_object(file_path=file_path, object_name=object_name)
objects = container.list_objects() print(objects)
########################################################################### # # check goat integrity # ###########################################################################
import hashlib print(hashlib.md5(open(file_path, 'rb').read()).hexdigest())
########################################################################### # # delete goat # ###########################################################################
swift.delete_object(object_data)
objects = container.list_objects() print(objects)
if __name__ == '__main__': main()
|