def __init__(self,
                 cluster,
                 nodes,
                 affected_nodes=None,
                 task_ids=None,
                 events=None):
        """Initializes.

        :param cluster: Cluster instance
        :param nodes: the sequence of nodes for deploy
        :param affected_nodes: the list of nodes, that affected by deployment
        :param task_ids: Only specified tasks will be executed,
                         If None, all tasks will be executed
        :param events: the events (see TaskEvents)
        """
        if affected_nodes:
            self.affected_node_ids = frozenset(n.uid for n in affected_nodes)
            self.deployment_nodes = copy.copy(nodes)
            self.deployment_nodes.extend(affected_nodes)
        else:
            self.deployment_nodes = nodes
            self.affected_node_ids = frozenset()
        self.cluster = cluster
        self.role_resolver = RoleResolver(self.deployment_nodes)
        self.task_serializer = DeployTaskSerializer()
        self.task_processor = TaskProcessor()
        self.tasks_connections = collections.defaultdict(dict)
        self.tasks_dictionary = dict()
        self.task_filter = self.make_task_filter(task_ids)
        self.events = events
    def __init__(self, cluster, nodes):
        """Initializes.

        :param cluster: Cluster instance
        :param nodes: the sequence of nodes for deploy
        """
        self.cluster = cluster
        self.role_resolver = RoleResolver(nodes)
        self.task_serializer = DeployTaskSerializer()
        self.task_processor = TaskProcessor()
        self.tasks_per_node = collections.defaultdict(dict)
Beispiel #3
0
    def __init__(self, cluster, nodes, role_resolver=None):
        """Initialises.

        :param cluster: the cluster object instance
        :param nodes: the list of nodes for deployment
        :param role_resolver: the instance of BaseRoleResolver
        """

        self.cluster = cluster
        self.nodes = nodes
        self.role_resolver = role_resolver or RoleResolver(nodes)
    def __init__(self, cluster, nodes, task_ids=None):
        """Initializes.

        :param cluster: Cluster instance
        :param nodes: the sequence of nodes for deploy
        :param task_ids: Only specified tasks will be executed,
                         If None, all tasks will be executed
        """
        self.cluster = cluster
        self.role_resolver = RoleResolver(nodes)
        self.task_serializer = DeployTaskSerializer()
        self.task_processor = TaskProcessor()
        self.tasks_per_node = collections.defaultdict(dict)
        self.task_filter = self.make_task_filter(task_ids)
    def stage_tasks_serialize(self, tasks, nodes):
        """Serialize tasks for certain stage

        :param stage: oneof consts.STAGES
        :param nodes: list of node db objects
        """
        serialized = []
        role_resolver = RoleResolver(nodes)

        for task in tasks:

            if self.graph.should_exclude_task(task['id']):
                continue

            serializer = self.serializers.get_stage_serializer(task)(
                task, self.cluster, nodes, role_resolver=role_resolver)

            if not serializer.should_execute():
                continue

            serialized.extend(serializer.serialize())
        return serialized
    def setUpClass(cls):
        cls.tasks = [{
            'id': 'task1',
            'roles': ['controller'],
            'type': 'puppet',
            'version': '2.0.0',
            'condition': {
                'yaql_exp': '$.public_ssl.hostname = localhost'
            },
            'parameters': {},
            'requires': ['task3'],
            'required_for': ['task2'],
            'cross_depends': [{
                'name': 'task2',
                'role': 'compute'
            }],
            'cross_depended_by': [{
                'name': 'task3',
                'role': 'cinder'
            }]
        }, {
            'id': 'task2',
            'roles': ['compute', 'controller'],
            'type': 'puppet',
            'version': '2.0.0',
            'condition': {
                'yaql_exp': '$.public_ssl.hostname != localhost'
            },
            'parameters': {},
            'cross_depends': [{
                'name': 'task3',
                'role': 'cinder'
            }]
        }, {
            'id': 'task3',
            'roles': ['cinder', 'controller'],
            'type': 'puppet',
            'version': '2.0.0',
            'condition': 'settings:public_ssl.hostname != "localhost"',
            'parameters': {},
            'cross_depends': [{
                'name': 'task3',
                'role': '/.*/'
            }],
            'cross_depended_by': [{
                'name': 'task2',
                'role': 'self'
            }]
        }, {
            'id': 'task4',
            'roles': ['controller'],
            'type': 'puppet',
            'version': '2.0.0',
            'parameters': {},
            'cross_depended_by': [{
                'name': 'task3'
            }]
        }]

        cls.nodes = [
            mock.MagicMock(uid='1', roles=['controller']),
            mock.MagicMock(uid='2', roles=['compute']),
            mock.MagicMock(uid='3', roles=['cinder']),
            mock.MagicMock(uid='4', roles=['custom']),
        ]

        cls.context = lcm.TransactionContext({
            '1': {
                'cluster': {
                    'id': 1
                },
                'release': {
                    'version': 'liberty-9.0'
                },
                'openstack_version': 'liberty-9.0',
                'public_ssl': {
                    'hostname': 'localhost'
                },
                'attributes': {
                    'a_str': 'text1',
                    'a_int': 1
                }
            },
            '2': {
                'cluster': {
                    'id': 1
                },
                'release': {
                    'version': 'liberty-9.0'
                },
                'openstack_version': 'liberty-9.0',
                'public_ssl': {
                    'hostname': 'localhost'
                },
                'attributes': {
                    'a_str': 'text2',
                    'a_int': 2
                }
            },
            '3': {
                'cluster': {
                    'id': 1
                },
                'release': {
                    'version': 'liberty-9.0'
                },
                'openstack_version': 'liberty-9.0',
                'public_ssl': {
                    'hostname': 'localhost'
                },
                'attributes': {
                    'a_str': 'text3',
                    'a_int': 3
                }
            },
            '4': {
                'cluster': {
                    'id': 1
                },
                'release': {
                    'version': 'liberty-9.0'
                },
                'openstack_version': 'liberty-9.0',
                'public_ssl': {
                    'hostname': 'localhost'
                },
                'attributes': {
                    'a_str': 'text3',
                    'a_int': 3
                }
            }
        })

        with mock.patch('nailgun.utils.role_resolver.objects') as m_objects:
            m_objects.Node.all_roles = lambda x: x.roles
            cls.role_resolver = RoleResolver(cls.nodes)
 def initialize(self, cluster):
     self.all_nodes = objects.Cluster.get_nodes_not_for_deletion(cluster)
     self.role_resolver = RoleResolver(self.all_nodes)
     self.initialized = cluster.id
Beispiel #8
0
 def __init__(self, task, cluster, nodes, role_resolver=None):
     super(StandardConfigRolesHook, self).__init__(task, cluster)
     self.nodes = nodes
     self.role_resolver = role_resolver or RoleResolver(nodes)