Exemple #1
0
    def process(self):
        (opts, args) = getopts()
        chkopts(opts)
        self.up_progress(10)

        already_exist = False

        session_command_args = (ISCSI_CMD,
                                ISCSI_CMD_OPTION_MODE,
                                ISCSI_CMD_OPTION_MODE_SESSION
                                )

        (session_rc, session_res) = execute_command(session_command_args)
        if session_rc != 0:
            raise KssCommandException('Failed to get iSCSI session. message=%s' % (session_res))

        for session_line in session_res:
            if not session_line:
                continue

            if session_line.find(ISCSI_CMD_RES_NO_ACTIVE_SESSION) != -1:
                break

            try:
                session = iscsi_parse_session(session_line)
            except:
                self.logger.warn('Failed to parse iSCSI session command response. message="%s"' % (session_line))
                continue

            if session['iqn'] == opts.iqn:
                if opts.host:
                    if opts.host != session['hostname']:
                        continue
                already_exist = True
                break

        if already_exist:
            self.logger.info("[target: %s]: already exists" % (opts.iqn))
            print >>sys.stdout, _("[target: %s]: already exists") % (opts.iqn)
        else:
            login_command_args = [ISCSI_CMD,
                                  ISCSI_CMD_OPTION_MODE,
                                  ISCSI_CMD_OPTION_MODE_NODE,
                                  ISCSI_CMD_OPTION_TARGETNAME,
                                  opts.iqn,
                                  ]
            if opts.host:
                login_command_args.append(ISCSI_CMD_OPTION_PORTAL)
                login_command_args.append(opts.host)

            login_command_args.append(ISCSI_CMD_OPTION_LOGIN)

            (login_rc,login_res) = execute_command(login_command_args)
            self.up_progress(50)

            if login_rc != 0:
                raise KssCommandException('Failed to login to iSCSI. - host=%s iqn=%s message=%s' % (opts.host, opts.iqn, login_res))

            for line in login_res:
                if not line:
                    continue

                self.logger.info("%s" % (line))
                print >>sys.stdout, _("%s") % (line)

        return True
Exemple #2
0
    def process(self):
        (opts, args) = getopts()
        chkopts(opts)
        self.up_progress(10)

        node_command_args = (ISCSI_CMD,
                             ISCSI_CMD_OPTION_MODE,
                             ISCSI_CMD_OPTION_MODE_NODE
                             )

        (node_rc, node_res) = execute_command(node_command_args)
        if node_rc != 0:
            for node_line in node_res:
                if node_line.find(ISCSI_CMD_RES_NO_NODE) != -1:
                    self.logger.info("iSCSI node not found")
                    return True

            raise KssCommandException('Failed to get iSCSI node. message=%s' % (node_res))

        self.up_progress(20)
        session_command_args = (ISCSI_CMD,
                                ISCSI_CMD_OPTION_MODE,
                                ISCSI_CMD_OPTION_MODE_SESSION
                                )

        (session_rc, session_res) = execute_command(session_command_args)
        if session_rc != 0:
            raise KssCommandException('Failed to get iSCSI session. message=%s' % (session_res))

        self.up_progress(20)
        for node_line in node_res:
            if not node_line:
                continue

            try:
                node = iscsi_parse_node(node_line)
            except:
                self.logger.warn('Failed to parse iSCSI node command response. message="%s"' % (node_line))
                continue

            is_active = 0
            for session_line in session_res:
                if not session_line:
                    continue

                if session_line.find(ISCSI_CMD_RES_NO_ACTIVE_SESSION) != -1:
                    break

                try:
                    session = iscsi_parse_session(session_line)
                except:
                    self.logger.warn('Failed to parse iSCSI session command response. message="%s"' % (session_line))
                    continue

                if iscsi_check_node_status(node, session):
                    is_active = 1
                    break

            if iscsi_check_node_autostart(node):
                autostart = 0
            else:
                autostart = 1

            if opts.iqn is None:
                self.logger.info("%s %s %s" % (iscsi_print_format_node(node), is_active, autostart))
                print >>sys.stdout, _("%s %s %s") % (iscsi_print_format_node(node), is_active, autostart)
            else:
                if opts.iqn == node['iqn']:
                    auth = iscsi_get_auth_type(node)
                    user = iscsi_get_auth_user(node)

                    self.logger.info("%s %s %s %s %s" % (iscsi_print_format_node(node), is_active, autostart, auth, user))
                    print >>sys.stdout, _("%s %s %s %s %s") % (iscsi_print_format_node(node), is_active, autostart, auth, user)
                    break

        return True
Exemple #3
0
    def process(self):
        (opts, args) = getopts()
        chkopts(opts)
        self.up_progress(10)

        node_command_args = (ISCSI_CMD, ISCSI_CMD_OPTION_MODE,
                             ISCSI_CMD_OPTION_MODE_NODE)

        (node_rc, node_res) = execute_command(node_command_args)
        if node_rc != 0:
            for node_line in node_res:
                if node_line.lower().find(ISCSI_CMD_RES_NO_NODE) != -1:
                    self.logger.info("iSCSI node not found")
                    return True

            raise KssCommandException('Failed to get iSCSI node. message=%s' %
                                      (node_res))

        self.up_progress(20)
        session_command_args = (ISCSI_CMD, ISCSI_CMD_OPTION_MODE,
                                ISCSI_CMD_OPTION_MODE_SESSION)

        (session_rc, session_res) = execute_command(session_command_args)
        if session_rc != 0:
            raise KssCommandException(
                'Failed to get iSCSI session. message=%s' % (session_res))

        self.up_progress(20)
        for node_line in node_res:
            if not node_line:
                continue

            try:
                node = iscsi_parse_node(node_line)
            except:
                self.logger.warn(
                    'Failed to parse iSCSI node command response. message="%s"'
                    % (node_line))
                continue

            is_active = 0
            for session_line in session_res:
                if not session_line:
                    continue

                if session_line.find(ISCSI_CMD_RES_NO_ACTIVE_SESSION) != -1:
                    break

                try:
                    session = iscsi_parse_session(session_line)
                except:
                    self.logger.warn(
                        'Failed to parse iSCSI session command response. message="%s"'
                        % (session_line))
                    continue

                if iscsi_check_node_status(node, session):
                    is_active = 1
                    break

            if iscsi_check_node_autostart(node):
                autostart = 0
            else:
                autostart = 1

            if opts.iqn is None:
                self.logger.info(
                    "%s %s %s" %
                    (iscsi_print_format_node(node), is_active, autostart))
                print >> sys.stdout, _("%s %s %s") % (
                    iscsi_print_format_node(node), is_active, autostart)
            else:
                if opts.iqn == node['iqn']:
                    auth = iscsi_get_auth_type(node)
                    user = iscsi_get_auth_user(node)

                    self.logger.info("%s %s %s %s %s" %
                                     (iscsi_print_format_node(node), is_active,
                                      autostart, auth, user))
                    print >> sys.stdout, _("%s %s %s %s %s") % (
                        iscsi_print_format_node(node), is_active, autostart,
                        auth, user)
                    break

        return True