Skip to content
Snippets Groups Projects
Select Git revision
  • ff8ab740dbc7465928cd664e06ac3ce3242de6ee
  • master default protected
2 results

demo5-1-durable-storage.py

Blame
  • demo5-1-durable-storage.py 3.55 KiB
    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()