示例#1
0
    def create_group(self, **kwargs):
        """
        :return: a tuple of the scaling group with (the helper's pool) and
            the server name prefix used for the scaling group.
        """
        if self.clbs:
            # allow us to override the CLB setup
            kwargs.setdefault(
                'use_lbs',
                [clb.scaling_group_spec() for clb in self.clbs])

        kwargs.setdefault("flavor_ref", flavor_ref)
        kwargs.setdefault("min_entities", 0)

        server_name_prefix = "{}-{}".format(
            random_string(), reactor.seconds())
        if "server_name_prefix" in kwargs:
            server_name_prefix = "{}-{}".format(kwargs['server_name_prefix'],
                                                server_name_prefix)
        kwargs['server_name_prefix'] = server_name_prefix

        return (
            ScalingGroup(
                group_config=create_scaling_group_dict(**kwargs),
                treq=self.treq,
                pool=self.pool),
            server_name_prefix)
示例#2
0
    def setUp(self):
        """Create our simulated clock and scaling group."""
        self.clock = Clock()
        self.pool = object()
        self.treq = object()
        self.queried_server_ids = []

        class FakeRCS(object):
            endpoints = {'nova': 'novaurl'}
            token = "token"

        @attributes(['id', 'pool', 'treq'])
        class FakeNova(object):
            def get_addresses(nova_self, rcs):
                self.assertIs(nova_self.pool, self.pool)
                self.assertIs(nova_self.treq, self.treq)
                self.queried_server_ids.append(nova_self.id)
                return defer.succeed({
                    'addresses': {
                        'private': [
                            {'addr': '10.0.0.{0}'.format(
                                len(self.queried_server_ids)),
                             'version': 4}
                        ]
                    }
                })

        self.rcs = FakeRCS()
        self.sg = ScalingGroup(group_config={}, pool=self.pool,
                               reactor=self.clock, treq=self.treq,
                               server_client=FakeNova)
示例#3
0
    def setUp(self):
        """Create our simulated clock and scaling group.  We link the group
        to the clock, giving us explicit (and, for the purposes of our test,
        synchronous) control over the scaling group's concept of elapsed time.
        """

        self.clock = Clock()
        self.sg = ScalingGroup(group_config={}, pool=None, reactor=self.clock)
        self.counter = 0
示例#4
0
    def setUp(self):
        """
        Establish an HTTP connection pool and commonly used resources for each
        test. The HTTP connection pool is important for maintaining a clean
        Twisted reactor.
        """
        self.helper = TestHelper(self)
        self.rcs = TestResources()
        self.identity = get_identity(self.helper.pool)

        scaling_group_config = {
            'launchConfiguration': {
                'args': {
                    'stack': {
                        'template': {
                            'heat_template_version': '2015-04-30',
                            'resources': {
                                'rand': {
                                    'type': 'OS::Heat::RandomString'
                                }
                            }
                        }
                    }
                },
                'type': 'launch_stack'
            },
            'groupConfiguration': {
                'name': 'test_launch_stack',
                'cooldown': 0,
                'minEntities': 0,
                'maxEntities': 10
            },
            'scalingPolicies': [],
        }

        self.group = ScalingGroup(group_config=scaling_group_config,
                                  treq=self.helper.treq,
                                  pool=self.helper.pool)

        return self.identity.authenticate_user(
            self.rcs, resources=get_resource_mapping(), region=region)