# interpreted as representing official policies, either expressed # or implied, of GRNET S.A. from kamaki.clients.astakos import AstakosClient from kamaki.clients.pithos import PithosClient AUTHENTICATION_URL = "https://astakos.example.com/identity/v2.0" TOKEN = "User-Token" astakos = AstakosClient(AUTHENTICATION_URL, TOKEN) service_type = PithosClient.service_type endpoint = astakos.get_endpoint_url(service_type) pithos = PithosClient(endpoint, TOKEN) user = astakos.authenticate() uuid = user["access"]["user"]["id"] pithos.account = uuid # Get the project containers we care for containers = filter(lambda c: c["name"] in ("pithos", "images"), pithos.list_containers()) # Construct dict of the form {CONTAINER_NAME: PROJECT_ID, ...} projects = dict([(c["name"], c["x_container_policy"]["project"]) for c in containers]) # Check projects and reassign if needed if projects["pithos"] != projects["images"]: pithos.container = "images" pithos.reassign_container(projects["pithos"])
from kamaki.clients.astakos import AstakosClient from kamaki.clients.pithos import PithosClient AUTHENTICATION_URL = "https://astakos.example.com/identity/v2.0" TOKEN = "User-Token" astakos = AstakosClient(AUTHENTICATION_URL, TOKEN) service_type = PithosClient.service_type endpoint = astakos.get_endpoint_url(service_type) pithos = PithosClient(endpoint, TOKEN) user = astakos.authenticate() uuid = user["access"]["user"]["id"] pithos.account = uuid # Get the project containers we care for containers = filter( lambda c: c["name"] in ("pithos", "images"), pithos.list_containers()) # Construct dict of the form {CONTAINER_NAME: PROJECT_ID, ...} projects = dict([( c["name"], c["x_container_policy"]["project"]) for c in containers]) # Check projects and reassign if needed if projects["pithos"] != projects["images"]: pithos.container = "images" pithos.reassign_container(projects["pithos"])
TOKEN = "User-Token" astakos = AstakosClient(AUTHENTICATION_URL, TOKEN) # Our data container_name = "course_container" user = astakos.authenticate() uuid = user["access"]["user"]["id"] # Initialize a Pithos client service_type = PithosClient.service_type endpoint = astakos.get_endpoint_url(service_type) pithos = PithosClient(endpoint, TOKEN, uuid, container_name) # To what project is this container assigned to? container = pithos.get_container_info(container_name) container_project = container["x-container-policy-project"] # Get quota info quotas = astakos.get_quotas() container_quotas = quotas[container_project]["pithos.diskspace"] usage, limit = container_quotas["usage"], container_quotas["limit"] if usage < limit: print "Quotas for container {0} are OK".format(container_name) else: # We need to reassign to another project new_project = "a9f87654-3af2-1e09-8765-43a2df1098765" pithos.reassign_container(project_id=new_project) print "Container {name} is reassigned to project {id}".format( name=container_name, id=new_project)