Ejemplo n.º 1
0
def test_build_alb_context(test_projects):
    context = cfngen.build_context('project-with-alb', stackname='project-with-alb--test')
    context = utils.remove_ordereddict(context)
    expected = {'certificate': 'arn:aws:iam::...:...',
                'idle_timeout': '60',
                'listeners': {'listener1': {'forward': 'target-group1',
                                            'port': 80,
                                            'protocol': 'http'},
                              'listener2': {'forward': 'target-group1',
                                            'port': 443,
                                            'protocol': 'https'},
                              'listener3': {'forward': 'target-group2',
                                            'port': 8001,
                                            'protocol': 'https'}},
                'stickiness': {'cookie-name': 'dummy-cookie', 'type': 'cookie'},
                'subnets': ['subnet-1d4eb46a', 'subnet-7a31dd46'],
                'target_groups': {'target-group1': {'healthcheck': {'healthy_threshold': 2,
                                                                    'interval': 5,
                                                                    'path': '/ping',
                                                                    'timeout': 4,
                                                                    'unhealthy_threshold': 2},
                                                    'port': 80,
                                                    'protocol': 'http'},
                                  'target-group2': {'healthcheck': {'healthy_threshold': 2,
                                                                    'interval': 5,
                                                                    'path': '/ping',
                                                                    'timeout': 4,
                                                                    'unhealthy_threshold': 2},
                                                    'port': 8001,
                                                    'protocol': 'http'}}}
    assert context['alb'] == expected
Ejemplo n.º 2
0
 def _wrapper(*args, **kwargs):
     res = func(*args, **kwargs)
     errcho(
         'output:')  # printing to stderr avoids corrupting structured data
     if isstr(res):
         print(res)
     else:
         print(pformat(remove_ordereddict(res)))
     return res
Ejemplo n.º 3
0
    def test_merge_default_snippet(self):
        "merging a snippet into the defaults ensures all projects get that new default"
        # all projects now get 999 cpus. perfectly sane requirement.
        project_data = project.project_data('dummy1')
        project_data = utils.remove_ordereddict(project_data)

        expected_data = json.load(open(self.dummy1_config, 'r'))
        expected_data['vagrant']['cpus'] = 999
        self.assertEqual(project_data, expected_data)
Ejemplo n.º 4
0
    def test_merge_default_snippet(self):
        "merging a snippet into the defaults ensures all projects get that new default"
        # all projects now get 999 cpus. perfectly sane requirement.
        project_data = project.project_data('dummy1')
        project_data = utils.remove_ordereddict(project_data)

        expected_data = json.load(open(self.dummy1_config, 'r'))
        expected_data['vagrant']['cpus'] = 999
        self.assertEqual(project_data, expected_data)
 def test_deep_merge_default_snippet2_project3(self):
     """merging a snippet into the defaults ensures all projects and their alternative configuration 
     also get that new default, even if it's deeply nested"""
     snippet = {'defaults':
                    {'aws': {
                        'rds': {
                            'subnets': ['subnet-baz']}}}}
     project_data = project_files.project_data('dummy3', self.dummy_yaml, [snippet])
     project_data = utils.remove_ordereddict(project_data)
     self.assertEqual(project_data['aws-alt']['alt-config1']['rds']['subnets'][0], 'subnet-baz')
Ejemplo n.º 6
0
 def _wrapper(*args, **kwargs):
     if _sole_task(func.__name__):
         res = func(*args, **kwargs)
         errcho('output:') # printing to stderr avoids corrupting structured data
         if isstr(res):
             print(res)
         else:
             print(pformat(remove_ordereddict(res)))
         return res
     return func(*args, **kwargs)
 def test_deep_merge_default_snippet2_project3(self):
     """merging a snippet into the defaults ensures all projects and their alternative configuration
     also get that new default, even if it's deeply nested"""
     snippet = {'defaults':
                {'aws': {
                    'rds': {
                        'subnets': ['subnet-baz']}}}}
     project_data = project_files.project_data('dummy3', self.dummy_yaml, [snippet])
     project_data = utils.remove_ordereddict(project_data)
     self.assertEqual(project_data['aws-alt']['alt-config1']['rds']['subnets'][0], 'subnet-baz')
Ejemplo n.º 8
0
 def _wrapper(*args, **kwargs):
     if _sole_task(func.__name__):
         res = func(*args, **kwargs)
         print 'output:\n'
         if isinstance(res, str) or isinstance(res, unicode):
             print res
         else:
             print pformat(remove_ordereddict(res))
         return res
     return func(*args, **kwargs)
Ejemplo n.º 9
0
 def test_configurations(self):
     expected = [
         ('dummy1', self.dummy1_config),
         ('dummy2', self.dummy2_config),
         ('dummy3', self.dummy3_config),
     ]
     for pname, expected_path in expected:
         expected_data = json.load(open(expected_path, 'r'))
         project_data = project.project_data(pname)
         project_data = utils.remove_ordereddict(project_data)
         self.assertEqual(expected_data, project_data)
Ejemplo n.º 10
0
 def test_configurations(self):
     expected = [
         ('dummy1', self.dummy1_config),
         ('dummy2', self.dummy2_config),
         ('dummy3', self.dummy3_config),
     ]
     for pname, expected_path in expected:
         expected_data = json.load(open(expected_path, 'r'))
         project_data = project.project_data(pname)
         project_data = utils.remove_ordereddict(project_data)
         self.assertEqual(expected_data, project_data)
Ejemplo n.º 11
0
 def _wrapper(*args, **kwargs):
     if _sole_task(func.__name__):
         res = func(*args, **kwargs)
         errcho('output:'
                )  # printing to stderr avoids corrupting structured data
         if isinstance(res, str) or isinstance(res, unicode):
             print res
         else:
             print pformat(remove_ordereddict(res))
         return res
     return func(*args, **kwargs)
Ejemplo n.º 12
0
    def test_merge_multiple_default_snippets(self):
        """merging multiple overlapping snippets into the defaults
        ensures all projects get the new defaults"""
        # all projects now get 999 cpus. perfectly sane requirement.
        project_data = project.project_data('dummy1')
        project_data = utils.remove_ordereddict(project_data)

        expected_data = json.load(open(self.dummy1_config, 'r'))
        expected_data['vagrant']['cpus'] = 999
        expected_data['vagrant']['cpucap'] = 111

        self.assertEqual(project_data, expected_data)
Ejemplo n.º 13
0
    def test_merge_multiple_default_snippets(self):
        """merging multiple overlapping snippets into the defaults
        ensures all projects get the new defaults"""
        # all projects now get 999 cpus. perfectly sane requirement.
        project_data = project.project_data('dummy1')
        project_data = utils.remove_ordereddict(project_data)

        expected_data = json.load(open(self.dummy1_config, 'r'))
        expected_data['vagrant']['cpus'] = 999
        expected_data['vagrant']['cpucap'] = 111

        self.assertEqual(project_data, expected_data)
    def test_deep_merge_project_snippet(self):
        """merging a snippet into the defaults ensures all projects get that new default,
        even alternative configurations, even if it's deeply nested"""

        # dummy1 ordinarily has no RDS settings at all.
        # by updating the project settings, I expect it to now have the rds section with the overrides
        snippet = {'dummy1':
                   {'aws': {
                       'rds': {
                           'subnets': ['subnet-baz']}}}}
        project_data = project_files.project_data('dummy1', self.dummy_yaml, [snippet])
        project_data = utils.remove_ordereddict(project_data)
        self.assertEqual(project_data['aws']['rds']['subnets'][0], 'subnet-baz')
    def test_deep_merge_project_snippet(self):
        """merging a snippet into the defaults ensures all projects get that new default, 
        even alternative configurations, even if it's deeply nested"""

        # dummy1 ordinarily has no RDS settings at all.
        # by updating the project settings, I expect it to now have the rds section with the overrides
        snippet = {'dummy1':
                       {'aws': {
                           'rds': {
                               'subnets': ['subnet-baz']}}}}
        project_data = project_files.project_data('dummy1', self.dummy_yaml, [snippet])
        project_data = utils.remove_ordereddict(project_data)
        self.assertEqual(project_data['aws']['rds']['subnets'][0], 'subnet-baz')
    def test_merge_default_snippet(self):
        "merging a snippet into the defaults ensures all projects get that new default"
        # all projects now get 999 cpus. perfectly sane requirement.
        snippet = {'defaults':
                   {'vagrant': {
                       'cpus': 999}}}
        project_data = project_files.project_data('dummy1', self.dummy_yaml, [snippet])
        project_data = utils.remove_ordereddict(project_data)

        # load up the expected fixture and switch the value ...
        expected_data = json.load(open(self.dummy1_config, 'r'))
        expected_data['vagrant']['cpus'] = 999
        # ... then compare to actual
        self.assertEqual(project_data, expected_data)
    def test_merge_default_snippet(self):
        "merging a snippet into the defaults ensures all projects get that new default"
        # all projects now get 999 cpus. perfectly sane requirement.
        snippet = {'defaults':
                       {'vagrant': {
                           'cpus': 999}}}
        project_data = project_files.project_data('dummy1', self.dummy_yaml, [snippet])
        project_data = utils.remove_ordereddict(project_data)

        # load up the expected fixture and switch the value ...
        expected_data = json.load(open(self.dummy1_config, 'r'))
        expected_data['vagrant']['cpus'] = 999
        # ... then compare to actual
        self.assertEqual(project_data, expected_data)
    def test_deep_merge_default_snippet_but_excluded(self):
        """merging a snippet into the defaults ensures all projects get that new default.
        snippet is ignored if project is excluding that section"""

        cases = [
            {'defaults': {'aws': {'rds': {'subnets': ['subnet-baz']}}}},
            {'defaults': {'aws': {'ext': {'size': 999}}}},
            {'defaults': {'aws-alt': {'rds': {'storage': 999}}}},
            {'defaults': {'aws-alt': {'ext': {'size': 999}}}},
        ]
        for snippet in cases:
            project_data = project_files.project_data('dummy1', self.dummy_yaml, [snippet])
            project_data = utils.remove_ordereddict(project_data)
            expected_data = json.load(open(self.dummy1_config, 'r'))
            # dummy1 project has no rds, ext or alt-aws configs using those. nothing should have changed
            self.assertEqual(project_data, expected_data)
    def test_deep_merge_project_snippet_altconfig(self):
        """merging a snippet into the defaults ensures all projects get that new default,
        even alternative configurations, even if it's deeply nested"""

        # dummy3 only has no RDS settings in it's alt-config section
        # by updating the project settings, I expect it to now have the rds section with the overrides
        # and for the altconfigs to replicate that
        snippet = {'dummy3':
                   {'aws': {
                       'rds': {
                           'subnets': ['subnet-baz']}}}}
        project_data = project_files.project_data('dummy3', self.dummy_yaml, [snippet])
        project_data = utils.remove_ordereddict(project_data)

        self.assertEqual(project_data['aws']['rds']['subnets'][0], 'subnet-baz')
        self.assertEqual(project_data['aws-alt']['alt-config1']['rds']['subnets'][0], 'subnet-baz')
    def test_deep_merge_project_snippet_altconfig(self):
        """merging a snippet into the defaults ensures all projects get that new default, 
        even alternative configurations, even if it's deeply nested"""

        # dummy3 only has no RDS settings in it's alt-config section
        # by updating the project settings, I expect it to now have the rds section with the overrides
        # and for the altconfigs to replicate that
        snippet = {'dummy3':
                       {'aws': {
                           'rds': {
                               'subnets': ['subnet-baz']}}}}
        project_data = project_files.project_data('dummy3', self.dummy_yaml, [snippet])
        project_data = utils.remove_ordereddict(project_data)

        self.assertEqual(project_data['aws']['rds']['subnets'][0], 'subnet-baz')
        self.assertEqual(project_data['aws-alt']['alt-config1']['rds']['subnets'][0], 'subnet-baz')
 def test_deep_merge_default_snippet_but_excluded(self):
     """merging a snippet into the defaults ensures all projects get that new default. 
     snippet is ignored if project is excluding that section"""
     
     cases = [
         {'defaults': {'aws': {'rds': {'subnets': ['subnet-baz']}}}},
         {'defaults': {'aws': {'ext': {'size': 999}}}},
         {'defaults': {'aws-alt': {'rds': {'storage': 999}}}},
         {'defaults': {'aws-alt': {'ext': {'size': 999}}}},
     ]
     for snippet in cases:
         project_data = project_files.project_data('dummy1', self.dummy_yaml, [snippet])
         project_data = utils.remove_ordereddict(project_data)
         expected_data = json.load(open(self.dummy1_config, 'r'))
         # dummy1 project has no rds, ext or alt-aws configs using those. nothing should have changed
         self.assertEqual(project_data, expected_data)
    def test_merge_multiple_default_snippets(self):
        """merging multiple overlapping snippets into the defaults
        ensures all projects get the new defaults"""
        # all projects now get 999 cpus. perfectly sane requirement.
        snippet = {'defaults':
                   {'vagrant': {
                       'cpucap': 10,  # to be overriden by the override
                       'cpus': 999}}}
        snippet2 = {'defaults':
                    {'vagrant': {
                        'cpucap': 111}}}
        snippet_list = [snippet, snippet2]
        project_data = project_files.project_data('dummy1', self.dummy_yaml, snippet_list)
        project_data = utils.remove_ordereddict(project_data)

        expected_data = json.load(open(self.dummy1_config, 'r'))
        expected_data['vagrant']['cpus'] = 999
        expected_data['vagrant']['cpucap'] = 111
        self.assertEqual(project_data, expected_data)
 def test_merge_multiple_default_snippets(self):
     """merging multiple overlapping snippets into the defaults 
     ensures all projects get the new defaults"""
     # all projects now get 999 cpus. perfectly sane requirement.
     snippet = {'defaults':
                    {'vagrant': {
                        'cpucap': 10,  # to be overriden by the override
                        'cpus': 999}}}
     snippet2 = {'defaults':
                     {'vagrant': {
                         'cpucap': 111}}}
     snippet_list = [snippet, snippet2]
     project_data = project_files.project_data('dummy1', self.dummy_yaml, snippet_list)
     project_data = utils.remove_ordereddict(project_data)
     
     expected_data = json.load(open(self.dummy1_config, 'r'))
     expected_data['vagrant']['cpus'] = 999
     expected_data['vagrant']['cpucap'] = 111        
     self.assertEqual(project_data, expected_data)
    def test_deep_merge_default_snippet_altconfig(self):
        """merging a snippet into the defaults ensures all projects get that new default,
        even alternative configurations, even if it's deeply nested"""

        # dummy2 project DOES NOT provide any subnet overrides. it should inherit this override
        snippet = {'defaults':
                   {'aws': {
                       'rds': {
                           'subnets': ['subnet-baz']}}}}
        project_data = project_files.project_data('dummy2', self.dummy_yaml, [snippet])
        project_data = utils.remove_ordereddict(project_data)

        self.assertEqual(project_data['aws']['rds']['subnets'][0], 'subnet-baz')
        self.assertEqual(project_data['aws-alt']['alt-config1']['rds']['subnets'][0], 'subnet-baz')
        self.assertEqual(project_data['aws-alt']['fresh']['rds']['subnets'][0], 'subnet-baz')

        # load up the expected fixture and switch the value ...
        expected_data = json.load(open(self.dummy2_config, 'r'))
        expected_data['aws']['rds']['subnets'] = ['subnet-baz']
        expected_data['aws-alt']['alt-config1']['rds']['subnets'] = ['subnet-baz']
        expected_data['aws-alt']['fresh']['rds']['subnets'] = ['subnet-baz']

        # ... then compare to actual
        self.assertEqual(expected_data, project_data)
    def test_deep_merge_default_snippet_altconfig(self):
        """merging a snippet into the defaults ensures all projects get that new default, 
        even alternative configurations, even if it's deeply nested"""

        # dummy2 project DOES NOT provide any subnet overrides. it should inherit this override
        snippet = {'defaults':
                       {'aws': {
                           'rds': {
                               'subnets': ['subnet-baz']}}}}
        project_data = project_files.project_data('dummy2', self.dummy_yaml, [snippet])
        project_data = utils.remove_ordereddict(project_data)
        
        self.assertEqual(project_data['aws']['rds']['subnets'][0], 'subnet-baz')
        self.assertEqual(project_data['aws-alt']['alt-config1']['rds']['subnets'][0], 'subnet-baz')
        self.assertEqual(project_data['aws-alt']['fresh']['rds']['subnets'][0], 'subnet-baz')

        # load up the expected fixture and switch the value ...
        expected_data = json.load(open(self.dummy2_config, 'r'))
        expected_data['aws']['rds']['subnets'] = ['subnet-baz']
        expected_data['aws-alt']['alt-config1']['rds']['subnets'] = ['subnet-baz']
        expected_data['aws-alt']['fresh']['rds']['subnets'] = ['subnet-baz']

        # ... then compare to actual
        self.assertEqual(expected_data, project_data)
Ejemplo n.º 26
0
def project_config(pname):
    return core_utils.remove_ordereddict(project.project_data(pname))
Ejemplo n.º 27
0
def project_config(pname):
    return core_utils.remove_ordereddict(project.project_data(pname))