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()
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)
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)
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)
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)