示例#1
0
文件: task.py 项目: nebril/fuel-web
    def _check_controllers_count(cls, task):
        cluster = task.cluster
        min_controllers = objects.Release.get_min_controller_count(
            cluster.release)

        controllers = objects.Cluster.get_nodes_by_role(
            task.cluster, 'controller')
        # we should make sure that cluster has at least one controller
        if len(controllers) < min_controllers:
            raise errors.NotEnoughControllers(
                "Not enough controllers, %s mode requires at least %s "
                "controller(s)" % (cluster.mode, min_controllers))

        if cluster.status in (consts.CLUSTER_STATUSES.operational,
                              consts.CLUSTER_STATUSES.error,
                              consts.CLUSTER_STATUSES.update_error):
            # get a list of deployed controllers - which are going
            # don't to be changed
            deployed_controllers = filter(
                lambda node: all([
                    node.pending_addition is False, node.pending_deletion is
                    False
                ]), controllers)

            # we should fail in case of user remove all controllers and add
            # new in one task, since that's affect cluster's availability
            if not deployed_controllers:
                raise errors.NotEnoughControllers(
                    "Not enough deployed controllers - deployed cluster "
                    "requires at least 1 deployed controller.")
示例#2
0
    def __check_controllers_count(cls, task):
        controllers_count = len(
            filter(lambda node: node.role == 'controller', task.cluster.nodes))
        cluster_mode = task.cluster.mode

        if cluster_mode == 'multinode' and controllers_count < 1:
            raise errors.NotEnoughControllers(
                "Not enough controllers, %s mode requires at least 1 "
                "controller" % (cluster_mode))
        elif cluster_mode == 'ha' and controllers_count < 3:
            raise errors.NotEnoughControllers(
                "Not enough controllers, %s mode requires at least 3 "
                "controllers" % (cluster_mode))