Source code for pyams_scheduler.interfaces.ssh

#
# Copyright (c) 2008-2015 Thierry Florac <tflorac AT ulthar.net>
# All Rights Reserved.
#
# This software is subject to the provisions of the Zope Public License,
# Version 2.1 (ZPL).  A copy of the ZPL should accompany this distribution.
# THIS SOFTWARE IS PROVIDED "AS IS" AND ANY AND ALL EXPRESS OR IMPLIED
# WARRANTIES ARE DISCLAIMED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
# WARRANTIES OF TITLE, MERCHANTABILITY, AGAINST INFRINGEMENT, AND FITNESS
# FOR A PARTICULAR PURPOSE.
#

__docformat__ = 'restructuredtext'


# import standard library

# import interfaces
from pyams_scheduler.interfaces import ITask

# import packages
from zope.interface import invariant, Interface, Invalid
from zope.schema import TextLine, Int, Password

from pyams_scheduler import _


[docs]class ISSHCallerTaskInfo(Interface): """SSH caller task info""" hostname = TextLine(title=_("Target hostname of IP address"), description=_("Enter hostname or address of a remote hots; keep empty for local server host"), required=False) port = Int(title=_("SSH port number"), default=22, required=False) username = TextLine(title=_("User name"), required=False) private_key = TextLine(title=_("Private key filename"), description=_("Enter name of private key file; use '~' to identify " "running server user home directory, as in ~/.ssh/id_rsa"), required=False) password = Password(title=_("Password"), description=_("If not using private key, you must provide user's password"), required=False) cmdline = TextLine(title=_("Command line"), description=_("Enter command line, using absolute path names"), required=True) @invariant def check_remote_host(self): if self.hostname and (bool(self.private_key) == bool(self.password)): raise Invalid(_("You must provide a private key filename OR a password when defining remote tasks"))
[docs]class ISSHCallerTask(ITask, ISSHCallerTaskInfo): """SSH caller interface"""