Exemple #1
0
    def _create_vm_list_db_for_failed_instance(self, session, notification_id,
                                               notification_uuid):
        try:
            conf_recover_starter_dic = self.rc_config.get_value(
                'recover_starter')

            interval_to_be_retry = conf_recover_starter_dic.get(
                "interval_to_be_retry")
            max_retry_cnt = conf_recover_starter_dic.get("max_retry_cnt")

            msg = "Do get_one_vm_list_by_uuid_create_at_last."
            LOG.info(msg)
            result = dbapi.get_one_vm_list_by_uuid_create_at_last(
                session, notification_uuid)
            msg = "Succeeded in get_one_vm_list_by_uuid_create_at_last. " \
                + "Return_value = " + str(result)
            LOG.info(msg)

            primary_id = None
            # row_cnt is always 0 or 1
            if not result:
                primary_id = self.rc_util_db.insert_vm_list_db(
                    session, notification_id, notification_uuid, 0)

                return primary_id
            else:
                result_progress = result.progress
                result_create_at = result.create_at
                result_retry_cnt = result.retry_cnt

                delta = self._compare_timestamp(datetime.datetime.now(),
                                                result_create_at)
                if result_progress == 2 and \
                        delta <= long(interval_to_be_retry):
                    if result_retry_cnt < long(max_retry_cnt):
                        primary_id = self.rc_util_db.insert_vm_list_db(
                            session, notification_id, notification_uuid,
                            result_retry_cnt + 1)

                        return primary_id
                    else:
                        # Not insert vm_list db.
                        msg = "Do not insert a record" \
                            + " into vm_list db because retry_cnt about " \
                            + notification_uuid \
                            + " is over " \
                            + max_retry_cnt \
                            + " times."
                        LOG.warning(msg)

                        return None
                elif result_progress == 2 and \
                        delta > long(interval_to_be_retry):
                    primary_id = self.rc_util_db.insert_vm_list_db(
                        session, notification_id, notification_uuid, 0)

                    return primary_id
                else:
                    # Not insert vm_list db.
                    msg = "Do not insert a record " \
                        + "into vm_list db because progress of " \
                        + notification_uuid \
                        + " is " \
                        + str(result_progress)
                    LOG.warning(msg)

                    return None

        except KeyError:
            error_type, error_value, traceback_ = sys.exc_info()
            tb_list = traceback.format_tb(traceback_)
            LOG.error(error_type)
            LOG.error(error_value)
            for tb in tb_list:
                LOG.error(tb)
            raise KeyError
Exemple #2
0
    def _create_vm_list_db_for_failed_instance(self, session, notification_id, notification_uuid):
        try:
            conf_recover_starter_dic = self.rc_config.get_value("recover_starter")

            interval_to_be_retry = conf_recover_starter_dic.get("interval_to_be_retry")
            max_retry_cnt = conf_recover_starter_dic.get("max_retry_cnt")
            result = dbapi.get_one_vm_list_by_uuid_create_at_last(session, notification_uuid)

            primary_id = None
            # row_cnt is always 0 or 1
            if not result:
                primary_id = self.rc_util_db.insert_vm_list_db(session, notification_id, notification_uuid, 0)
                return primary_id
            else:
                result_progress = result.progress
                result_create_at = result.create_at
                result_retry_cnt = result.retry_cnt

                delta = self._compare_timestamp(datetime.datetime.now(), result_create_at)
                if result_progress == 2 and delta <= long(interval_to_be_retry):
                    if result_retry_cnt < long(max_retry_cnt):
                        primary_id = self.rc_util_db.insert_vm_list_db(
                            session, notification_id, notification_uuid, result_retry_cnt + 1
                        )
                        return primary_id
                    else:
                        # Not insert vm_list db.
                        self.rc_util.syslogout_ex("RecoveryControllerStarter_0004", syslog.LOG_INFO)
                        msg = (
                            "Do not insert a record"
                            + " into vm_list db because retry_cnt about "
                            + notification_uuid
                            + " is over "
                            + max_retry_cnt
                            + " times."
                        )
                        self.rc_util.syslogout(msg, syslog.LOG_INFO)
                        return None
                elif result_progress == 2 and delta > long(interval_to_be_retry):
                    primary_id = self.rc_util_db.insert_vm_list_db(session, notification_id, notification_uuid, 0)
                    return primary_id
                else:
                    # Not insert vm_list db.
                    self.rc_util.syslogout_ex("RecoveryControllerStarter_0005", syslog.LOG_INFO)
                    msg = (
                        "Do not insert a record "
                        + "into vm_list db because progress of "
                        + notification_uuid
                        + " is "
                        + str(result_progress)
                    )
                    self.rc_util.syslogout(msg, syslog.LOG_INFO)
                    return None

        except KeyError:
            self.rc_util.syslogout_ex("RecoveryControllerStarter_0007", syslog.LOG_ERR)
            error_type, error_value, traceback_ = sys.exc_info()
            tb_list = traceback.format_tb(traceback_)
            self.rc_util.syslogout(error_type, syslog.LOG_ERR)
            self.rc_util.syslogout(error_value, syslog.LOG_ERR)
            for tb in tb_list:
                self.rc_util.syslogout(tb, syslog.LOG_ERR)
            raise KeyError
    def _create_vm_list_db_for_failed_instance(self, session, notification_id,
                                               notification_uuid):
        try:
            conf_recover_starter_dic = self.rc_config.get_value(
                'recover_starter')

            interval_to_be_retry = conf_recover_starter_dic.get(
                "interval_to_be_retry")
            max_retry_cnt = conf_recover_starter_dic.get("max_retry_cnt")
            result = dbapi.get_one_vm_list_by_uuid_create_at_last(
                session, notification_uuid)

            primary_id = None
            # row_cnt is always 0 or 1
            if not result:
                primary_id = self.rc_util_db.insert_vm_list_db(
                    session, notification_id, notification_uuid, 0)
                return primary_id
            else:
                result_progress = result.progress
                result_create_at = result.create_at
                result_retry_cnt = result.retry_cnt

                delta = self._compare_timestamp(datetime.datetime.now(),
                                                result_create_at)
                if result_progress == 2 and \
                        delta <= long(interval_to_be_retry):
                    if result_retry_cnt < long(max_retry_cnt):
                        primary_id = self.rc_util_db.insert_vm_list_db(
                            session, notification_id, notification_uuid,
                            result_retry_cnt + 1)
                        return primary_id
                    else:
                        # Not insert vm_list db.
                        self.rc_util.syslogout_ex(
                            "RecoveryControllerStarter_0004", syslog.LOG_INFO)
                        msg = "Do not insert a record" \
                            + " into vm_list db because retry_cnt about " \
                            + notification_uuid \
                            + " is over " \
                            + max_retry_cnt \
                            + " times."
                        self.rc_util.syslogout(msg, syslog.LOG_INFO)
                        return None
                elif result_progress == 2 and \
                        delta > long(interval_to_be_retry):
                    primary_id = self.rc_util_db.insert_vm_list_db(
                        session, notification_id, notification_uuid, 0)
                    return primary_id
                else:
                    # Not insert vm_list db.
                    self.rc_util.syslogout_ex("RecoveryControllerStarter_0005",
                                              syslog.LOG_INFO)
                    msg = "Do not insert a record " \
                        + "into vm_list db because progress of " \
                        + notification_uuid \
                        + " is " \
                        + str(result_progress)
                    self.rc_util.syslogout(msg, syslog.LOG_INFO)
                    return None

        except KeyError:
            self.rc_util.syslogout_ex("RecoveryControllerStarter_0007",
                                      syslog.LOG_ERR)
            error_type, error_value, traceback_ = sys.exc_info()
            tb_list = traceback.format_tb(traceback_)
            self.rc_util.syslogout(error_type, syslog.LOG_ERR)
            self.rc_util.syslogout(error_value, syslog.LOG_ERR)
            for tb in tb_list:
                self.rc_util.syslogout(tb, syslog.LOG_ERR)
            raise KeyError
Exemple #4
0
    def _create_vm_list_db_for_failed_instance(self,
                                               session,
                                               notification_id,
                                               notification_uuid):
        try:
            conf_recover_starter_dic = self.rc_config.get_value(
                'recover_starter')

            interval_to_be_retry = conf_recover_starter_dic.get(
                "interval_to_be_retry")
            max_retry_cnt = conf_recover_starter_dic.get("max_retry_cnt")

            msg = "Do get_one_vm_list_by_uuid_create_at_last."
            LOG.info(msg)
            result = dbapi.get_one_vm_list_by_uuid_create_at_last(
                session, notification_uuid)
            msg = "Succeeded in get_one_vm_list_by_uuid_create_at_last. " \
                + "Return_value = " + str(result)
            LOG.info(msg)

            primary_id = None
            # row_cnt is always 0 or 1
            if not result:
                primary_id = self.rc_util_db.insert_vm_list_db(
                    session, notification_id, notification_uuid, 0)

                return primary_id
            else:
                result_progress = result.progress
                result_create_at = result.create_at
                result_retry_cnt = result.retry_cnt

                delta = self._compare_timestamp(
                    datetime.datetime.now(), result_create_at)
                if result_progress == 2 and \
                        delta <= long(interval_to_be_retry):
                    if result_retry_cnt < long(max_retry_cnt):
                        primary_id = self.rc_util_db.insert_vm_list_db(
                            session,
                            notification_id,
                            notification_uuid,
                            result_retry_cnt + 1)

                        return primary_id
                    else:
                        # Not insert vm_list db.
                        msg = "Do not insert a record" \
                            + " into vm_list db because retry_cnt about " \
                            + notification_uuid \
                            + " is over " \
                            + max_retry_cnt \
                            + " times."
                        LOG.warning(msg)

                        return None
                elif result_progress == 2 and \
                        delta > long(interval_to_be_retry):
                    primary_id = self.rc_util_db.insert_vm_list_db(
                        session, notification_id, notification_uuid, 0)

                    return primary_id
                else:
                    # Not insert vm_list db.
                    msg = "Do not insert a record " \
                        + "into vm_list db because progress of " \
                        + notification_uuid \
                        + " is " \
                        + str(result_progress)
                    LOG.warning(msg)

                    return None

        except KeyError:
            error_type, error_value, traceback_ = sys.exc_info()
            tb_list = traceback.format_tb(traceback_)
            LOG.error(error_type)
            LOG.error(error_value)
            for tb in tb_list:
                LOG.error(tb)
            raise KeyError