示例#1
0
from __future__ import absolute_import

from roll_engine import constants as _
from roll_engine.utils.log import get_logger

from . import transition

re_logger = get_logger()


class _BrakeFSMixin(object):
    _all = set([_.ROLLOUT_SUCCESS_BRAKED,
                _.ROLLOUT_FAILURE_BRAKED,
                _.ROLLOUT_BRAKED]
               )

    def can_brake(self):
        return self.can_brake()

    @transition(source=_.ROLLING_OUT,
                target=_.ROLLOUT_BRAKED,
                conditions=[can_brake],
                custom=dict(user_action=True, alias='brake'))
    def rolling_out_brake(self):
        pass

    @transition(source=_.BAKE_SUCCESS,
                target=_.ROLLOUT_SUCCESS_BRAKED,
                conditions=[can_brake],
                custom=dict(user_action=True, alias='brake'))
    def rollout_success_brake(selF):
示例#2
0
文件: base.py 项目: wensincai/tars-1
from __future__ import absolute_import

from django.db.models.base import ModelBase
from django.db.models.options import Options

from django_fsm import can_proceed, FSMField

from roll_engine.db import TimestampedModel
from roll_engine.constants import PENDING, REVOKED
from roll_engine.exceptions import StatusError
from roll_engine.utils.log import get_logger

re_logger = get_logger()


class RollEngineOptions(Options):
    @property
    def __parent_model(self):
        if self.proxy:
            return self.proxy_for_model
        else:
            for parent, _ in self.parents.items():
                return parent
        return None

    def __getattr__(self, attr):
        if attr in ('batch_factory', 'task_set', 'smoke_success_status',
                    'salt_timeout'):
            parent = self.__parent_model
            if parent is not None:
                return getattr(parent._meta, attr)
示例#3
0
import logging
import time

from constance import config
from roll_engine.utils.log import get_logger
# from rest_client import get_remix_client

from .verify import Verify
from ansible_playbook.runplaybook import RunPlaybook

es_logger = get_logger()


def choose_deploy_agency(group):
    return globals().get("{0}Agency".format(group.g_type))


class BaseAgency(object):
    def __init__(self, target):
        self.target = target

    def download_package(self, **kwargs):
        raise NotImplementedError()

    def install_app(self, **kwargs):
        raise NotImplementedError()

    def verify_app(self, **kwargs):
        raise NotImplementedError()

    def skip(self, **kwargs):