Commit b2cf8a9a authored by Anael Beutot's avatar Anael Beutot
Browse files

Implemented job support for host

parent dc93bd6d
Loading
Loading
Loading
Loading
+21 −0
Original line number Diff line number Diff line
@@ -17,8 +17,10 @@ from sjrpc.utils import pass_connection, threadless
from sjrpc.core.protocols import TunnelProtocol
from cloudcontrol.common.client.tags import Tag, tag_inspector
from cloudcontrol.common.client.plugins import Base as BasePlugin
from cloudcontrol.common.jobs import JobsManager, JobsStore

from cloudcontrol.node.host import tags
from cloudcontrol.node.host.jobs import NodeJobsManagerInterface


logger = logging.getLogger(__name__)
@@ -175,10 +177,17 @@ class Handler(BasePlugin):
            rshell_resize=self.rshell_resize,
            rshell_wait=self.rshell_wait,
            forward=self.forward,
            job_cancel=self.job_cancel,
            job_purge=self.job_purge,
            job_attachment=self.job_attachment,
        ))
        # running shells
        self.shells = dict()

        #: jobs manager (different from MainLoop.jobs_manager)
        self.jobs_manager = JobsManager(logger, NodeJobsManagerInterface(self),
                                       JobsStore('/tmp/plopinou'))

    def stop(self):
        # kill all currently running shells
        for shell in self.shells.values():
@@ -267,3 +276,15 @@ class Handler(BasePlugin):
            raise
        # create tunnel
        conn.create_tunnel(label=label, endpoint=sock)

    def job_cancel(self, job_id):
        self.jobs_manager.get(job_id).cancel()

    def job_purge(self, job_id):
        self.jobs_manager.purge(job_id)

    def job_attachment(self, job_id, name):
        """
        :param name: attachement name
        """
        return self.jobs_manager.get(job_id).read_attachment(name)