Beispiel #1
0
    def __init__(self, execute, config_object, **kwargs):
        if config_object.cephfs_ganesha_server_is_remote:
            execute = ganesha_utils.SSHExecutor(
                config_object.cephfs_ganesha_server_ip,
                22,
                None,
                config_object.cephfs_ganesha_server_username,
                password=config_object.cephfs_ganesha_server_password,
                privatekey=config_object.cephfs_ganesha_path_to_private_key)
        else:
            execute = ganesha_utils.RootExecutor(execute)

        self.ganesha_host = config_object.cephfs_ganesha_server_ip
        if not self.ganesha_host:
            self.ganesha_host = socket.gethostname()
            LOG.info(
                "NFS-Ganesha server's location defaulted to driver's "
                "hostname: %s", self.ganesha_host)

        super(NFSProtocolHelper, self).__init__(execute, config_object,
                                                **kwargs)

        if not hasattr(self, 'ceph_vol_client'):
            self.ceph_vol_client = kwargs.pop('ceph_vol_client')
        self.export_ips = config_object.cephfs_ganesha_export_ips
        if not self.export_ips:
            self.export_ips = [self.ganesha_host]
        self.configured_ip_versions = set()
        self.config = config_object
Beispiel #2
0
    def make_gluster_call(self, execf):
        """Execute a Gluster command locally or remotely."""
        if self.user:
            gluster_execf = ganesha_utils.SSHExecutor(
                self.host,
                22,
                None,
                self.user,
                password=self.remote_server_password,
                privatekey=self.path_to_private_key)
        else:
            gluster_execf = ganesha_utils.RootExecutor(execf)

        def _gluster_call(*args, **kwargs):
            logmsg = kwargs.pop('log', None)
            raw_error = kwargs.pop('raw_error', False)
            try:
                return gluster_execf(*(('gluster', ) + args), **kwargs)
            except exception.ProcessExecutionError as exc:
                if raw_error:
                    raise
                if logmsg:
                    LOG.error(
                        _LE("%s: GlusterFS instrumentation failed.") % logmsg)
                raise exception.GlusterfsException(
                    _("GlusterFS management command '%(cmd)s' failed "
                      "with details as follows:\n%(details)s.") % {
                          'cmd': ' '.join(args),
                          'details': exc.args[0]
                      })

        return _gluster_call
Beispiel #3
0
 def __init__(self, execute, config_object, **kwargs):
     self.gluster_manager = kwargs.pop('gluster_manager')
     if config_object.glusterfs_ganesha_server_ip:
         execute = ganesha_utils.SSHExecutor(
             config_object.glusterfs_ganesha_server_ip,
             22,
             None,
             config_object.glusterfs_ganesha_server_username,
             password=config_object.glusterfs_ganesha_server_password,
             privatekey=config_object.glusterfs_path_to_private_key)
     else:
         execute = ganesha_utils.RootExecutor(execute)
     super(GaneshaNFSHelper, self).__init__(execute, config_object,
                                            **kwargs)
Beispiel #4
0
 def make_gluster_call(self, execf):
     """Execute a Gluster command locally or remotely."""
     if self.remote_user:
         gluster_execf = ganesha_utils.SSHExecutor(
             self.host,
             22,
             None,
             self.remote_user,
             password=self.remote_server_password,
             privatekey=self.path_to_private_key)
     else:
         gluster_execf = ganesha_utils.RootExecutor(execf)
     return lambda *args, **kwargs: gluster_execf(*(
         ('gluster', ) + args), **kwargs)
Beispiel #5
0
 def __init__(self, execute, config_object, **kwargs):
     self.gluster_manager = kwargs.pop('gluster_manager')
     if config_object.glusterfs_ganesha_server_ip:
         execute = ganesha_utils.SSHExecutor(
             config_object.glusterfs_ganesha_server_ip, 22, None,
             config_object.glusterfs_ganesha_server_username,
             password=config_object.glusterfs_ganesha_server_password,
             privatekey=config_object.glusterfs_path_to_private_key)
     else:
         execute = ganesha_utils.RootExecutor(execute)
     self.ganesha_host = config_object.glusterfs_ganesha_server_ip
     if not self.ganesha_host:
         self.ganesha_host = socket.gethostname()
     kwargs['tag'] = '-'.join(('GLUSTER', 'Ganesha', self.ganesha_host))
     super(GaneshaNFSHelper, self).__init__(execute, config_object,
                                            **kwargs)
Beispiel #6
0
    def make_gluster_call(self, execf):
        """Execute a Gluster command locally or remotely."""
        if self.user:
            gluster_execf = ganesha_utils.SSHExecutor(
                self.host,
                22,
                None,
                self.user,
                password=self.remote_server_password,
                privatekey=self.path_to_private_key)
        else:
            gluster_execf = ganesha_utils.RootExecutor(execf)

        def _gluster_call(*args, **kwargs):
            logmsg = kwargs.pop('log', None)
            error_policy = kwargs.pop('error_policy', 'coerce')
            if (error_policy not in ('raw', 'coerce', 'suppress')
                    and not isinstance(error_policy[0], int)):
                raise TypeError(
                    _("undefined error_policy %s") % repr(error_policy))

            try:
                return gluster_execf(*(('gluster', ) + args), **kwargs)
            except exception.ProcessExecutionError as exc:
                if error_policy == 'raw':
                    raise
                elif error_policy == 'coerce':
                    pass
                elif (error_policy == 'suppress'
                      or exc.exit_code in error_policy):
                    return
                if logmsg:
                    LOG.error(
                        _LE("%s: GlusterFS instrumentation failed.") % logmsg)
                raise exception.GlusterfsException(
                    _("GlusterFS management command '%(cmd)s' failed "
                      "with details as follows:\n%(details)s.") % {
                          'cmd': ' '.join(args),
                          'details': exc
                      })

        return _gluster_call