Source code for cloudmesh_client.cloud.reservation

from __future__ import print_function
# from cloudmesh_client.shell.console import Console

from cloudmesh_client.db import CloudmeshDatabase

from cloudmesh_client.common.todo import TODO

from cloudmesh_client.cloud.ListResource import ListResource


[docs]class Reservation(ListResource): cm = CloudmeshDatabase()
[docs] def info(cls, user=None, project=None): """ prints if the user has access to the reservation an on which host. :param user: :param project: :return: """ TODO.implement()
[docs] def add_from_file(cls, filename): """ :param filename: :return: """ TODO.implement()
[docs] @classmethod def add(cls, name, start, end, user=None, project=None, hosts=None, description=None, category=None): """ :param name: Name of reservation :param start: Start time of reservation :param end: End time of reservation :param user: Reserved by this user :param project: Reservation project :param hosts: Reserved hosts :param description: Description :param cloud: Cloud into which reservation done :return: """ o = { "provider": "general", "kind": "reservation", "name": name, "hosts": hosts, "start": start, "end": end, "description": description, "category": category, "user": user, "project": project } cls.cm.add(o)
[docs] @classmethod def delete(cls, name=None, start=None, end=None, user=None, project=None, hosts=None): """ :param name: Name of reservation :param start: Start time of reservation :param end: End time of reservation :param user: Reserved by this user :param project: Reservation project :param hosts: Hosts reserved :return: """ args = {} if name is not None: args['name'] = name if start is not None: args['start_time'] = start if end is not None: args['end_time'] = end if user is not None: args['user'] = user if project is not None: args['project'] = project if hosts is not None: args['hosts'] = hosts # TODO: Improve this logic result = cls.cm.find(kind="reservation", provider="general", output="dict", scope='all', **args) if result is not None: for res in result: cls.cm.delete(kind="reservation", provider="general", name=res["name"])
[docs] @classmethod def delete_from_file(cls, filename): """ :param filename: :return: """ TODO.implement()
[docs] @classmethod def suspend(cls, names=None): TODO.implement()
[docs] @classmethod def clear(cls, names=None): TODO.implement()
[docs] @classmethod def refresh(cls, names=None): TODO.implement()
[docs] @classmethod def resume(cls, names=None): TODO.implement()
[docs] @classmethod def list(cls, name=None, start=None, end=None, user=None, project=None, hosts=None): """ :param name: Name of reservation :param start: Start time of reservation :param end: End time of reservation :param user: Reserved by this user :param project: Reservation project :param hosts: Hosts reserved :return: """ args = {} if name is not None: args['name'] = name if start is not None: args['start_time'] = start if end is not None: args['end_time'] = end if user is not None: args['user'] = user if project is not None: args['project'] = project if hosts is not None: args['hosts'] = hosts args["kind"] = "reservation" # print(args) result = cls.cm.find(**args) # print("RESULT:- {}".format(result)) return result
[docs] @classmethod def update(cls, name, start, end, user=None, project=None, hosts=None, description=None, cloud=None): entry = { 'start_time': start, 'end_time': end, 'name': name, 'user': user, 'project': project, 'hosts': hosts, 'description': description, 'cloud': cloud, "kind": "reservation", "provider": "general" } update = dict(entry) for key in entry: if entry[key] is None: del update[key] print ("ARGS", update) cls.cm.add(entry)