Yedidyah Bar David has uploaded a new change for review. Change subject: packaging: setup: remote server instead of remote engine ......................................................................
packaging: setup: remote server instead of remote engine Allow using the remote_engine code for more than just the engine. Change-Id: I18b6a9ccca1b12cb5903bff480a5f17f00dc318a Signed-off-by: Yedidyah Bar David <[email protected]> --- M packaging/setup/ovirt_engine_setup/constants.py M packaging/setup/ovirt_engine_setup/remote_engine.py A packaging/setup/ovirt_engine_setup/remote_server.py R packaging/setup/ovirt_engine_setup/remote_server_base.py M packaging/setup/ovirt_engine_setup/websocket_proxy/constants.py R packaging/setup/plugins/ovirt-engine-common/base/remote_server/__init__.py R packaging/setup/plugins/ovirt-engine-common/base/remote_server/remote_engine.py A packaging/setup/plugins/ovirt-engine-common/base/remote_server/remote_server.py R packaging/setup/plugins/ovirt-engine-common/base/remote_server/remote_server_manual_files.py R packaging/setup/plugins/ovirt-engine-common/base/remote_server/remote_server_root_ssh.py 10 files changed, 319 insertions(+), 207 deletions(-) git pull ssh://gerrit.ovirt.org:29418/ovirt-engine refs/changes/02/37702/1 diff --git a/packaging/setup/ovirt_engine_setup/constants.py b/packaging/setup/ovirt_engine_setup/constants.py index fe7e3c9..53e4a2f 100644 --- a/packaging/setup/ovirt_engine_setup/constants.py +++ b/packaging/setup/ovirt_engine_setup/constants.py @@ -256,9 +256,17 @@ FIREWALL_MANAGER_FIREWALLD = 'firewalld' ISO_DOMAIN_NFS_DEFAULT_ACL_FORMAT = '{fqdn}(rw)' - REMOTE_ENGINE_SETUP_STYLE_AUTO_SSH = 'auto_ssh' - REMOTE_ENGINE_SETUP_STYLE_MANUAL_FILES = 'manual_files' - REMOTE_ENGINE_SETUP_STYLE_MANUAL_INLINE = 'manual_inline' + REMOTE_SERVER_SETUP_STYLE_AUTO_SSH = 'auto_ssh' + REMOTE_SERVER_SETUP_STYLE_MANUAL_FILES = 'manual_files' + REMOTE_SERVER_SETUP_STYLE_MANUAL_INLINE = 'manual_inline' + + @classproperty + def REMOTE_ENGINE_KEYS(self): + return { + 'style': ConfigEnv.REMOTE_ENGINE_SETUP_STYLE, + 'ssh_port': ConfigEnv.REMOTE_ENGINE_HOST_SSH_PORT, + 'root_password': ConfigEnv.REMOTE_ENGINE_HOST_ROOT_PASSWORD, + } @util.export @@ -403,7 +411,7 @@ FQDN_REVERSE_VALIDATION = 'OVESETUP_CONFIG/fqdnReverseValidation' FQDN_NON_LOOPBACK_VALIDATION = 'OVESETUP_CONFIG/fqdnNonLoopback' - REMOTE_ENGINE_SETUP_STYLES = 'OVESETUP_CONFIG/remoteEngineSetupStyles' + REMOTE_SERVER_SETUP_STYLES = 'OVESETUP_CONFIG/remoteEngineSetupStyles' @osetupattrs( answerfile=True, @@ -418,10 +426,10 @@ return 'OVESETUP_CONFIG/remoteEngineHostSshPort' # Optional, used if supplied - REMOTE_ENGINE_HOST_CLIENT_KEY = 'OVESETUP_CONFIG/remoteEngineHostClientKey' + REMOTE_SERVER_HOST_CLIENT_KEY = 'OVESETUP_CONFIG/remoteEngineHostClientKey' # Optional, used if supplied, currently only log if not there - REMOTE_ENGINE_HOST_KNOWN_HOSTS = \ + REMOTE_SERVER_HOST_KNOWN_HOSTS = \ 'OVESETUP_CONFIG/remoteEngineHostKnownHosts' @osetupattrs( diff --git a/packaging/setup/ovirt_engine_setup/remote_engine.py b/packaging/setup/ovirt_engine_setup/remote_engine.py index 18e3f46..2522c90 100644 --- a/packaging/setup/ovirt_engine_setup/remote_engine.py +++ b/packaging/setup/ovirt_engine_setup/remote_engine.py @@ -1,6 +1,6 @@ # # ovirt-engine-setup -- ovirt engine setup -# Copyright (C) 2014 Red Hat, Inc. +# Copyright (C) 2014-2015 Red Hat, Inc. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -38,119 +38,11 @@ @util.export -class RemoteEngine(base.Base): - - _instance = None - - def __init__(self, plugin): - super(RemoteEngine, self).__init__() - self._plugin = plugin - self._style = None - self._client = None - - @property - def plugin(self): - return self._plugin - - @property - def dialog(self): - return self._plugin.dialog - - @property - def environment(self): - return self._plugin.environment - - @property - def logger(self): - return self._plugin.logger - - def style(self): - if self._style is None: - self.configure() - return self._style - - def execute_on_engine(self, cmd, timeout=60, text=None): - return self._style.execute_on_engine( - cmd=cmd, - timeout=timeout, - text=text, - ) - - def copy_from_engine(self, file_name): - return self._style.copy_from_engine( - file_name=file_name, - ) - - def copy_to_engine( - self, - file_name, - content, - inp_env_key=None, - ): - return self._style.copy_to_engine( - file_name=file_name, - content=content, - inp_env_key=inp_env_key, - ) - - def cleanup(self): - if self._style: - return self._style.cleanup() - - def configure(self, fqdn): - key = osetupcons.ConfigEnv.REMOTE_ENGINE_SETUP_STYLE - styles = dict( - ( - str(i + 1), - s - ) - for i, s in enumerate( - self.environment[ - osetupcons.ConfigEnv.REMOTE_ENGINE_SETUP_STYLES - ] - ) - ) - if self.environment[key] is None: - choices = sorted(styles.keys()) - descs = ''.join( - '{c} - {desc}\n'.format( - c=c, - desc=styles[c].desc(), - ) - for c in choices - ) - reply = self.dialog.queryString( - name='REMOTE_ENGINE_SETUP_STYLE', - note=_( - 'Setup will need to do some actions on the remote engine ' - 'server. Either automatically, using ssh as root to ' - 'access it, or you will be prompted to manually ' - 'perform each such action.\n' - 'Please choose one of the following:\n' - '{descs}' - '(@VALUES@) [@DEFAULT@]: ' - ).format( - descs=descs, - ), - prompt=True, - validValues=choices, - default=choices[0], - ) - self.environment[key] = styles[reply].name - if self._style is None: - self._style = next( - s for i, s in styles.items() - if s.name == self.environment[key] - ) - self._style.configure(fqdn=fqdn) - - [email protected] class EnrollCert(base.Base): def __init__( self, - remote_engine, + remote_server, engine_fqdn, base_name, base_touser, @@ -176,7 +68,7 @@ self._remote_name = None self._enroll_command = None - self._remote_engine = remote_engine + self._remote_server = remote_server self._engine_fqdn = engine_fqdn self._base_name = base_name self._base_touser = base_touser @@ -189,7 +81,7 @@ self._key_size = key_size self._url = url - self._plugin = remote_engine.plugin + self._plugin = remote_server.plugin @property def plugin(self): @@ -232,15 +124,15 @@ goodcert = False while not goodcert and tries_left > 0: try: - self._remote_engine.copy_to_engine( + self._remote_server.copy_to_server( file_name='{pkireqdir}/{remote_name}.req'.format( pkireqdir=self._engine_pki_requests_dir, remote_name=self._remote_name, ), content=self._csr, ) - self._remote_engine.execute_on_engine(cmd=self._enroll_command) - cert = self._remote_engine.copy_from_engine( + self._remote_server.execute_on_server(cmd=self._enroll_command) + cert = self._remote_server.copy_from_server( file_name='{pkicertdir}/{remote_name}.cer'.format( pkicertdir=self._engine_pki_certs_dir, remote_name=self._remote_name, @@ -392,7 +284,9 @@ engine_ca_cert_file=self._engine_ca_cert_file, fqdn=self.environment[osetupcons.ConfigEnv.FQDN], ) - self._remote_engine.configure(fqdn=self._engine_fqdn) + self._remote_server.configure( + fqdn=self._engine_fqdn, + ) # TODO # This is ugly - we rely on having these two plugins # and do not support others. A good fix will: @@ -405,13 +299,13 @@ # manual_inline and have another function for that, # or perhaps make _enroll_cert_manual_files work with both. cert = { - osetupcons.Const.REMOTE_ENGINE_SETUP_STYLE_AUTO_SSH: ( + osetupcons.Const.REMOTE_SERVER_SETUP_STYLE_AUTO_SSH: ( self._enroll_cert_auto_ssh ), - osetupcons.Const.REMOTE_ENGINE_SETUP_STYLE_MANUAL_FILES: ( + osetupcons.Const.REMOTE_SERVER_SETUP_STYLE_MANUAL_FILES: ( self._enroll_cert_manual_files ), - }[self._remote_engine.style().name]() + }[self._remote_server.style().name()]() self._cert = cert def add_to_transaction( diff --git a/packaging/setup/ovirt_engine_setup/remote_server.py b/packaging/setup/ovirt_engine_setup/remote_server.py new file mode 100644 index 0000000..5c6caf0 --- /dev/null +++ b/packaging/setup/ovirt_engine_setup/remote_server.py @@ -0,0 +1,148 @@ +# +# ovirt-engine-setup -- ovirt engine setup +# Copyright (C) 2014-2015 Red Hat, Inc. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# + + +import gettext +_ = lambda m: gettext.dgettext(message=m, domain='ovirt-engine-setup') + + +from otopi import util +from otopi import base + + +from ovirt_engine_setup import constants as osetupcons + + [email protected] +class RemoteServer(base.Base): + + _instance = None + + def __init__(self, plugin, server_tag, server_desc, keys): + super(RemoteServer, self).__init__() + self._plugin = plugin + self._style = None + self._server_tag = server_tag + self._server_desc = server_desc + self._keys = keys + + @property + def plugin(self): + return self._plugin + + @property + def dialog(self): + return self._plugin.dialog + + @property + def environment(self): + return self._plugin.environment + + @property + def logger(self): + return self._plugin.logger + + def style(self): + if self._style is None: + self.configure() + return self._style + + def execute_on_server(self, cmd, timeout=60, text=None): + return self._style.execute_on_server( + cmd=cmd, + timeout=timeout, + text=text, + ) + + def copy_from_server(self, file_name): + return self._style.copy_from_server( + file_name=file_name, + ) + + def copy_to_server( + self, + file_name, + content, + inp_env_key=None, + ): + return self._style.copy_to_server( + file_name=file_name, + content=content, + inp_env_key=inp_env_key, + ) + + def cleanup(self): + if self._style: + return self._style.cleanup() + + def configure(self, fqdn): + key = self._keys['style'] + styles = dict( + ( + str(i + 1), + s + ) + for i, s in enumerate( + self.environment[ + osetupcons.ConfigEnv.REMOTE_SERVER_SETUP_STYLES + ] + ) + ) + if self.environment[key] is None: + choices = sorted(styles.keys()) + style_descs = ''.join( + '{c} - {style_desc}\n'.format( + c=c, + style_desc=styles[c].desc(), + ) + for c in choices + ) + reply = self.dialog.queryString( + name='REMOTE_SERVER_SETUP_STYLE_%s' % self._server_tag, + note=_( + 'Setup will need to do some actions on {server_desc} ' + 'server. Either automatically, using ssh as root to ' + 'access it, or you will be prompted to manually ' + 'perform each such action.\n' + 'Please choose one of the following:\n' + '{style_descs}' + '(@VALUES@) [@DEFAULT@]: ' + ).format( + server_desc=self._server_desc, + style_descs=style_descs, + ), + prompt=True, + validValues=choices, + default=choices[0], + ) + self.environment[key] = styles[reply].name + if self._style is None: + self._style = next( + s for s in styles.values() + if s.name == self.environment[key] + )( + plugin=self._plugin, + server_tag=self._server_tag, + server_desc=self._server_desc, + keys=self._keys, + ) + self._style.configure( + fqdn=fqdn, + ) + + +# vim: expandtab tabstop=4 shiftwidth=4 diff --git a/packaging/setup/ovirt_engine_setup/remote_engine_base.py b/packaging/setup/ovirt_engine_setup/remote_server_base.py similarity index 81% rename from packaging/setup/ovirt_engine_setup/remote_engine_base.py rename to packaging/setup/ovirt_engine_setup/remote_server_base.py index ca6216f..ac01423 100644 --- a/packaging/setup/ovirt_engine_setup/remote_engine_base.py +++ b/packaging/setup/ovirt_engine_setup/remote_server_base.py @@ -1,6 +1,6 @@ # # ovirt-engine-setup -- ovirt engine setup -# Copyright (C) 2014 Red Hat, Inc. +# Copyright (C) 2014-2015 Red Hat, Inc. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -21,10 +21,10 @@ @util.export -class RemoteEngineBase(base.Base): +class RemoteServerBase(base.Base): def __init__(self, plugin): - super(RemoteEngineBase, self).__init__() + super(RemoteServerBase, self).__init__() self._plugin = plugin @property @@ -43,23 +43,24 @@ def logger(self): return self._plugin.logger - @property - def name(self): + @staticmethod + def name(): raise RuntimeError('Unset') - def desc(self): + @staticmethod + def desc(): raise RuntimeError('Unset') def configure(self, fqdn): pass - def execute_on_engine(self, cmd, timeout=60): + def execute_on_server(self, cmd, timeout=60): pass - def copy_from_engine(self, file_name): + def copy_from_server(self, file_name): pass - def copy_to_engine( + def copy_to_server( self, file_name, content, diff --git a/packaging/setup/ovirt_engine_setup/websocket_proxy/constants.py b/packaging/setup/ovirt_engine_setup/websocket_proxy/constants.py index df0da98..9bb84fd 100644 --- a/packaging/setup/ovirt_engine_setup/websocket_proxy/constants.py +++ b/packaging/setup/ovirt_engine_setup/websocket_proxy/constants.py @@ -1,6 +1,6 @@ # # ovirt-engine-setup -- ovirt engine setup -# Copyright (C) 2014 Red Hat, Inc. +# Copyright (C) 2014-2015 Red Hat, Inc. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -132,10 +132,7 @@ KEY_SIZE = 'OVESETUP_CONFIG/keySize' - REMOTE_ENGINE_HOST = 'OVESETUP_CONFIG/remoteEngineHost' - WSP_CERTIFICATE_CHAIN = 'OVESETUP_CONFIG/wspCertificateChain' - REMOTE_ENGINE_CER = 'OVESETUP_CONFIG/remoteEngineCer' PKI_WSP_CSR_FILENAME = 'OVESETUP_CONFIG/pkiWSPCSRFilename' diff --git a/packaging/setup/plugins/ovirt-engine-common/base/remote_engine/__init__.py b/packaging/setup/plugins/ovirt-engine-common/base/remote_server/__init__.py similarity index 73% rename from packaging/setup/plugins/ovirt-engine-common/base/remote_engine/__init__.py rename to packaging/setup/plugins/ovirt-engine-common/base/remote_server/__init__.py index 0b1491e..ddc8bb8 100644 --- a/packaging/setup/plugins/ovirt-engine-common/base/remote_engine/__init__.py +++ b/packaging/setup/plugins/ovirt-engine-common/base/remote_server/__init__.py @@ -1,6 +1,6 @@ # # ovirt-engine-setup -- ovirt engine setup -# Copyright (C) 2014 Red Hat, Inc. +# Copyright (C) 2014-2015 Red Hat, Inc. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -23,15 +23,17 @@ from . import remote_engine -from . import remote_engine_manual_files -from . import remote_engine_root_ssh +from . import remote_server +from . import remote_server_manual_files +from . import remote_server_root_ssh @util.export def createPlugins(context): remote_engine.Plugin(context=context) - remote_engine_manual_files.Plugin(context=context) - remote_engine_root_ssh.Plugin(context=context) + remote_server.Plugin(context=context) + remote_server_manual_files.Plugin(context=context) + remote_server_root_ssh.Plugin(context=context) # vim: expandtab tabstop=4 shiftwidth=4 diff --git a/packaging/setup/plugins/ovirt-engine-common/base/remote_engine/remote_engine.py b/packaging/setup/plugins/ovirt-engine-common/base/remote_server/remote_engine.py similarity index 81% rename from packaging/setup/plugins/ovirt-engine-common/base/remote_engine/remote_engine.py rename to packaging/setup/plugins/ovirt-engine-common/base/remote_server/remote_engine.py index 39b1457..4d78716 100644 --- a/packaging/setup/plugins/ovirt-engine-common/base/remote_engine/remote_engine.py +++ b/packaging/setup/plugins/ovirt-engine-common/base/remote_server/remote_engine.py @@ -1,6 +1,6 @@ # # ovirt-engine-setup -- ovirt engine setup -# Copyright (C) 2014 Red Hat, Inc. +# Copyright (C) 2014-2015 Red Hat, Inc. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -25,7 +25,7 @@ from ovirt_engine_setup import constants as osetupcons -from ovirt_engine_setup import remote_engine +from ovirt_engine_setup import remote_server @util.export @@ -52,14 +52,6 @@ None ) self.environment.setdefault( - osetupcons.ConfigEnv.REMOTE_ENGINE_HOST_CLIENT_KEY, - None - ) - self.environment.setdefault( - osetupcons.ConfigEnv.REMOTE_ENGINE_HOST_KNOWN_HOSTS, - None - ) - self.environment.setdefault( osetupcons.ConfigEnv.REMOTE_ENGINE_HOST_ROOT_PASSWORD, None ) @@ -68,9 +60,6 @@ ].append( osetupcons.ConfigEnv.REMOTE_ENGINE_HOST_ROOT_PASSWORD ) - self.environment[ - osetupcons.ConfigEnv.REMOTE_ENGINE_SETUP_STYLES - ] = [] @plugin.event( stage=plugin.Stages.STAGE_SETUP, @@ -78,7 +67,12 @@ def _setup(self): self.environment[ osetupcons.CoreEnv.REMOTE_ENGINE - ] = remote_engine.RemoteEngine(plugin=self) + ] = remote_server.RemoteServer( + plugin=self, + server_tag='engine', + server_desc='the engine', + keys=osetupcons.Const.REMOTE_ENGINE_KEYS + ) @plugin.event( stage=plugin.Stages.STAGE_CLEANUP, diff --git a/packaging/setup/plugins/ovirt-engine-common/base/remote_server/remote_server.py b/packaging/setup/plugins/ovirt-engine-common/base/remote_server/remote_server.py new file mode 100644 index 0000000..c12ae96 --- /dev/null +++ b/packaging/setup/plugins/ovirt-engine-common/base/remote_server/remote_server.py @@ -0,0 +1,55 @@ +# +# ovirt-engine-setup -- ovirt engine setup +# Copyright (C) 2015 Red Hat, Inc. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# + + +"""Remote server plugin.""" + + +from otopi import constants as otopicons +from otopi import util +from otopi import plugin + + +from ovirt_engine_setup import constants as osetupcons +from ovirt_engine_setup import remote_server + + [email protected] +class Plugin(plugin.PluginBase): + """Remote server plugin.""" + + def __init__(self, context): + super(Plugin, self).__init__(context=context) + + @plugin.event( + stage=plugin.Stages.STAGE_INIT, + ) + def _init(self): + self.environment.setdefault( + osetupcons.ConfigEnv.REMOTE_SERVER_HOST_CLIENT_KEY, + None + ) + self.environment.setdefault( + osetupcons.ConfigEnv.REMOTE_SERVER_HOST_KNOWN_HOSTS, + None + ) + self.environment[ + osetupcons.ConfigEnv.REMOTE_SERVER_SETUP_STYLES + ] = [] + + +# vim: expandtab tabstop=4 shiftwidth=4 diff --git a/packaging/setup/plugins/ovirt-engine-common/base/remote_engine/remote_engine_manual_files.py b/packaging/setup/plugins/ovirt-engine-common/base/remote_server/remote_server_manual_files.py similarity index 73% rename from packaging/setup/plugins/ovirt-engine-common/base/remote_engine/remote_engine_manual_files.py rename to packaging/setup/plugins/ovirt-engine-common/base/remote_server/remote_server_manual_files.py index b2eddb3..f49fe08 100644 --- a/packaging/setup/plugins/ovirt-engine-common/base/remote_engine/remote_engine_manual_files.py +++ b/packaging/setup/plugins/ovirt-engine-common/base/remote_server/remote_server_manual_files.py @@ -1,6 +1,6 @@ # # ovirt-engine-setup -- ovirt engine setup -# Copyright (C) 2014 Red Hat, Inc. +# Copyright (C) 2014-2015 Red Hat, Inc. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -27,18 +27,21 @@ from ovirt_engine_setup import constants as osetupcons -from ovirt_engine_setup import remote_engine_base +from ovirt_engine_setup import remote_server_base @util.export class Plugin(plugin.PluginBase): - class _ManualFiles(remote_engine_base.RemoteEngineBase): + class _ManualFiles(remote_server_base.RemoteServerBase): - def __init__(self, plugin): + def __init__(self, plugin, keys, server_tag, server_desc): super(Plugin._ManualFiles, self).__init__(plugin=plugin) self._plugin = plugin self._tempfiles = [] + self._keys = keys + self._server_tag = server_tag + self._server_desc = server_desc @property def plugin(self): @@ -56,11 +59,12 @@ def logger(self): return self._plugin.logger - @property - def name(self): - return osetupcons.Const.REMOTE_ENGINE_SETUP_STYLE_MANUAL_FILES + @staticmethod + def name(): + return osetupcons.Const.REMOTE_SERVER_SETUP_STYLE_MANUAL_FILES - def desc(self): + @staticmethod + def desc(): return _( 'Perform each action manually, use files to copy content ' 'around' @@ -69,24 +73,28 @@ def configure(self, fqdn): self._fqdn = fqdn - def execute_on_engine(self, cmd, timeout=60, text=None): + def execute_on_server(self, cmd, timeout=60, text=None): self.dialog.note( text=text if text else _( - 'Please run on the engine server:\n\n' + 'Please run on the server {fqdn}:\n\n' '{cmd}\n\n' ).format( - cmd=cmd + fqdn=self._fqdn, + cmd=cmd, ) ) - def copy_from_engine(self, file_name, dialog_name): + def copy_from_server(self, file_name, dialog_name): resfilename = self.dialog.queryString( name=dialog_name, note=_( - 'Please copy {file_name} from the engine server to some ' + 'Please copy {file_name} from the server {fqdn} to some ' 'file here.\n' 'Please input the location of the local file where you ' - 'copied {file_name} from the engine server: ' + 'copied {file_name} from the server: ' + ).format( + file_name=file_name, + fqdn=self._fqdn, ), prompt=True, ) @@ -94,7 +102,7 @@ res = f.read() return res - def copy_to_engine(self, file_name, content, inp_env_key): + def copy_to_server(self, file_name, content, inp_env_key): fname = self.environment.get(inp_env_key) with ( open(fname, 'w') if fname @@ -104,10 +112,11 @@ self.dialog.note( text=_( 'Please copy {inpfile} from here to {file_name} on the ' - 'engine server.\n' + 'server {fqdn}.\n' ).format( inpfile=inpfile.name, file_name=file_name, + fqdn=self._fqdn, ) ) self._tempfiles.append(fname) @@ -132,11 +141,9 @@ ) def _setup(self): self.environment[ - osetupcons.ConfigEnv.REMOTE_ENGINE_SETUP_STYLES + osetupcons.ConfigEnv.REMOTE_SERVER_SETUP_STYLES ].append( - self._ManualFiles( - plugin=self, - ) + self._ManualFiles ) diff --git a/packaging/setup/plugins/ovirt-engine-common/base/remote_engine/remote_engine_root_ssh.py b/packaging/setup/plugins/ovirt-engine-common/base/remote_server/remote_server_root_ssh.py similarity index 82% rename from packaging/setup/plugins/ovirt-engine-common/base/remote_engine/remote_engine_root_ssh.py rename to packaging/setup/plugins/ovirt-engine-common/base/remote_server/remote_server_root_ssh.py index 9a61ead..21da2ff 100644 --- a/packaging/setup/plugins/ovirt-engine-common/base/remote_engine/remote_engine_root_ssh.py +++ b/packaging/setup/plugins/ovirt-engine-common/base/remote_server/remote_server_root_ssh.py @@ -1,6 +1,6 @@ # # ovirt-engine-setup -- ovirt engine setup -# Copyright (C) 2014 Red Hat, Inc. +# Copyright (C) 2014-2015 Red Hat, Inc. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -27,19 +27,22 @@ from ovirt_engine_setup import constants as osetupcons -from ovirt_engine_setup import remote_engine_base +from ovirt_engine_setup import remote_server_base @util.export class Plugin(plugin.PluginBase): - class _RootSshManager(remote_engine_base.RemoteEngineBase): + class _RootSshManager(remote_server_base.RemoteServerBase): - def __init__(self, plugin): + def __init__(self, plugin, keys, server_tag, server_desc): super(Plugin._RootSshManager, self).__init__(plugin=plugin) self._plugin = plugin self._client = None self._fqdn = None + self._keys = keys + self._server_tag = server_tag + self._server_desc = server_desc @property def plugin(self): @@ -57,17 +60,18 @@ def logger(self): return self._plugin.logger - @property - def name(self): - return osetupcons.Const.REMOTE_ENGINE_SETUP_STYLE_AUTO_SSH + @staticmethod + def name(): + return osetupcons.Const.REMOTE_SERVER_SETUP_STYLE_AUTO_SSH - def desc(self): - return _('Access remote engine server using ssh as root') + @staticmethod + def desc(): + return _('Access remote server using ssh as root') def _ssh_get_port(self): import paramiko port_valid = False - key = osetupcons.ConfigEnv.REMOTE_ENGINE_HOST_SSH_PORT + key = self._keys['ssh_port'] port = self.environment[key] interactive = False while not port_valid: @@ -76,9 +80,12 @@ interactive = True port = int( self.dialog.queryString( - name='SSH_ACCESS_REMOTE_ENGINE_PORT', + name=( + 'SSH_ACCESS_REMOTE_SERVER_PORT_%s' % + self._server_tag + ), note=_( - 'ssh port on remote engine server ' + 'ssh port on remote server ' '[@DEFAULT@]: ' ), prompt=True, @@ -118,7 +125,7 @@ connected = False interactive = False password = self.environment[ - osetupcons.ConfigEnv.REMOTE_ENGINE_HOST_ROOT_PASSWORD + self._keys['root_password'] ] bad_password = False while not connected: @@ -126,9 +133,12 @@ if password is None or bad_password: interactive = True password = self.dialog.queryString( - name='SSH_ACCESS_REMOTE_ENGINE_PASSWORD', + name=( + 'SSH_ACCESS_REMOTE_SERVER_PASSWORD_%s' % + self._server_tag + ), note=_( - 'root password on remote engine server ' + 'root password on remote server ' '{fqdn}: ' ).format( fqdn=self._fqdn, @@ -147,18 +157,16 @@ # the user that it's ok. client.load_system_host_keys( self.environment[ - osetupcons.ConfigEnv.REMOTE_ENGINE_HOST_KNOWN_HOSTS + osetupcons.ConfigEnv.REMOTE_SERVER_HOST_KNOWN_HOSTS ] ) client.connect( hostname=self._fqdn, - port=self.environment[ - osetupcons.ConfigEnv.REMOTE_ENGINE_HOST_SSH_PORT - ], + port=self.environment[self._keys['ssh_port']], username='root', password=password, key_filename=self.environment[ - osetupcons.ConfigEnv.REMOTE_ENGINE_HOST_CLIENT_KEY + osetupcons.ConfigEnv.REMOTE_SERVER_HOST_CLIENT_KEY ], ) self._client = client @@ -184,12 +192,12 @@ self._ssh_get_port() self._ssh_connect() - def execute_on_engine(self, cmd, timeout=60, text=None): + def execute_on_server(self, cmd, timeout=60, text=None): # Currently do not allow writing to stdin, only "batch mode" # TODO consider something more complex/general, e.g. writing # to stdin/reading from stdout interactively self.logger.debug( - 'Executing on remote engine %s: %s' % + 'Executing on remote server %s: %s' % ( self._fqdn, cmd, @@ -231,9 +239,9 @@ 'rc': rc, } - def copy_from_engine(self, file_name): + def copy_from_server(self, file_name): self.logger.debug( - 'Copying data from remote engine %s:%s' % + 'Copying data from remote server %s:%s' % ( self._fqdn, file_name, @@ -250,14 +258,14 @@ f.close() return res - def copy_to_engine( + def copy_to_server( self, file_name, content, inp_env_key=None ): self.logger.debug( - 'Copying data to remote engine %s:%s' % + 'Copying data to remote server %s:%s' % ( self._fqdn, file_name, @@ -289,11 +297,9 @@ osetupcons.CoreEnv.DEVELOPER_MODE ]: self.environment[ - osetupcons.ConfigEnv.REMOTE_ENGINE_SETUP_STYLES + osetupcons.ConfigEnv.REMOTE_SERVER_SETUP_STYLES ].append( - self._RootSshManager( - plugin=self, - ) + self._RootSshManager ) -- To view, visit http://gerrit.ovirt.org/37702 To unsubscribe, visit http://gerrit.ovirt.org/settings Gerrit-MessageType: newchange Gerrit-Change-Id: I18b6a9ccca1b12cb5903bff480a5f17f00dc318a Gerrit-PatchSet: 1 Gerrit-Project: ovirt-engine Gerrit-Branch: master Gerrit-Owner: Yedidyah Bar David <[email protected]> _______________________________________________ Engine-patches mailing list [email protected] http://lists.ovirt.org/mailman/listinfo/engine-patches
