Example #1
0
 def setUp(self):
     super(HaProxyConfigTest, self).setUp()
     self.stack = utils.parse_stack(template_format.parse(lb_template))
     resource_name = 'LoadBalancer'
     lb_defn = self.stack.t.resource_definitions(self.stack)[resource_name]
     self.lb = lb.LoadBalancer(resource_name, lb_defn, self.stack)
     self.lb.client_plugin = mock.Mock()
Example #2
0
    def test_loadbalancer(self):
        t = template_format.parse(lb_template)
        s = utils.parse_stack(t)
        s.store()
        resource_name = 'LoadBalancer'
        lb_defn = s.t.resource_definitions(s)[resource_name]
        rsrc = lb.LoadBalancer(resource_name, lb_defn, s)

        nova.NovaClientPlugin._create = mock.Mock(return_value=self.fc)

        initial_md = {
            'AWS::CloudFormation::Init': {
                'config': {
                    'files': {
                        '/etc/haproxy/haproxy.cfg': {
                            'content': 'initial'
                        }
                    }
                }
            }
        }
        ha_cfg = '\n'.join([
            '\nglobal', '    daemon', '    maxconn 256',
            '    stats socket /tmp/.haproxy-stats', '\ndefaults',
            '    mode http\n    timeout connect 5000ms',
            '    timeout client 50000ms',
            '    timeout server 50000ms\n\nfrontend http',
            '    bind *:80\n    default_backend servers',
            '\nbackend servers\n    balance roundrobin',
            '    option http-server-close',
            '    option forwardfor\n    option httpchk',
            '\n    server server1 1.2.3.4:80',
            '    server server2 0.0.0.0:80\n'
        ])
        expected_md = {
            'AWS::CloudFormation::Init': {
                'config': {
                    'files': {
                        '/etc/haproxy/haproxy.cfg': {
                            'content': ha_cfg
                        }
                    }
                }
            }
        }

        md = mock.Mock()
        md.metadata_get.return_value = copy.deepcopy(initial_md)
        rsrc.nested = mock.Mock(return_value={'LB_instance': md})

        prop_diff = {'Instances': ['WikiServerOne1', 'WikiServerOne2']}
        props = copy.copy(rsrc.properties.data)
        props.update(prop_diff)
        update_defn = rsrc_defn.ResourceDefinition(rsrc.name, rsrc.type(),
                                                   props)
        rsrc.handle_update(update_defn, {}, prop_diff)
        self.assertIsNone(rsrc.handle_update(rsrc.t, {}, {}))
        md.metadata_get.assert_called_once_with()
        md.metadata_set.assert_called_once_with(expected_md)
Example #3
0
    def setup_loadbalancer(self, include_magic=True):
        template = template_format.parse(lb_template)
        if not include_magic:
            del template['Parameters']['KeyName']
            del template['Parameters']['LbFlavor']
        stack = utils.parse_stack(template)

        resource_name = 'LoadBalancer'
        lb_defn = stack.t.resource_definitions(stack)[resource_name]
        return lb.LoadBalancer(resource_name, lb_defn, stack)
Example #4
0
    def setup_loadbalancer(self, include_magic=True, cache_data=None, hc=None):
        template = template_format.parse(lb_template)
        if not include_magic:
            del template['Parameters']['KeyName']
            del template['Parameters']['LbFlavor']
            del template['Parameters']['LbImageId']
        if hc is not None:
            props = template['Resources']['LoadBalancer']['Properties']
            props['HealthCheck'] = hc
        self.stack = utils.parse_stack(template, cache_data=cache_data)

        resource_name = 'LoadBalancer'
        lb_defn = self.stack.t.resource_definitions(self.stack)[resource_name]
        return lb.LoadBalancer(resource_name, lb_defn, self.stack)
Example #5
0
    def test_child_params_default_sec_gr(self):
        template = template_format.parse(lb_template)
        del template['Parameters']['KeyName']
        del template['Parameters']['LbFlavor']
        del template['Resources']['LoadBalancer']['Properties'][
            'SecurityGroups']
        stack = utils.parse_stack(template)

        resource_name = 'LoadBalancer'
        lb_defn = stack.t.resource_definitions(stack)[resource_name]
        rsrc = lb.LoadBalancer(resource_name, lb_defn, stack)
        params = rsrc.child_params()
        # None value means, that will be used default [] for parameter
        expected = {'SecurityGroups': None}
        self.assertEqual(expected, params)