コード例 #1
0
    def test_get_stack_order_raises_exception_on_cyclic_dependency(self):
        stacks = {
            'app1':
            StackConfig({
                'template-url': 'horst.yml',
                'parameters': {
                    'a': '|Ref|app2.id'
                }
            }),
            'app2':
            StackConfig({
                'template-url': 'horst.yml',
                'parameters': {
                    'a': '|Ref|app3.id'
                }
            }),
            'app3':
            StackConfig({
                'template-url': 'horst.yml',
                'parameters': {
                    'a': '|Ref|app1.id'
                }
            })
        }

        with self.assertRaises(CyclicDependencyException):
            DependencyResolver.get_stack_order(stacks)
コード例 #2
0
    def test_get_stack_order_raises_exception_on_cyclic_dependency(self):
        stacks = {
            'app1': StackConfig({'template-url': 'horst.yml', 'parameters': {'a': '|Ref|app2.id'}}),
            'app2': StackConfig({'template-url': 'horst.yml', 'parameters': {'a': '|Ref|app3.id'}}),
            'app3': StackConfig({'template-url': 'horst.yml', 'parameters': {'a': '|Ref|app1.id'}})
        }

        with self.assertRaises(CyclicDependencyException):
            DependencyResolver.get_stack_order(stacks)
コード例 #3
0
    def test_get_stack_order_raises_exception_on_cyclic_dependency(self):
        stacks = {
            "app1": StackConfig({"template-url": "horst.yml", "parameters": {"a": "|Ref|app2.id"}}),
            "app2": StackConfig({"template-url": "horst.yml", "parameters": {"a": "|Ref|app3.id"}}),
            "app3": StackConfig({"template-url": "horst.yml", "parameters": {"a": "|Ref|app1.id"}}),
        }

        with self.assertRaises(CyclicDependencyException):
            DependencyResolver.get_stack_order(stacks)
コード例 #4
0
    def test_get_stack_order_includes_independent_stacks(self):
        stacks = {
            'default-sg':
            StackConfig({'template-url': 'horst.yml'}),
            'app1':
            StackConfig({
                'template-url': 'horst.yml',
                'parameters': {
                    'a': '|Ref|vpc.id',
                    'b': '|Ref|default-sg.id'
                }
            }),
            'app2':
            StackConfig({
                'template-url': 'horst.yml',
                'parameters': {
                    'a': '|Ref|vpc.id',
                    'b': '|Ref|default-sg.id',
                    'c': 'Ref::app1.id'
                }
            }),
            'vpc':
            StackConfig({
                'template-url': 'horst.yml',
                'parameters': {
                    'logBucketName': 'is24-cloudtrail-logs',
                    'includeGlobalServices': False
                }
            })
        }

        result = 4

        self.assertEqual(result,
                         len(DependencyResolver.get_stack_order(stacks)))
コード例 #5
0
    def test_get_stack_order_accepts_stacks_without_parameters_key(self):
        stacks = {'default-sg': {},
                  'app1': None,
                  'app2': {},
                  'vpc': {},
                  }

        result = 4

        self.assertEqual(result, len(DependencyResolver.get_stack_order(stacks)))
コード例 #6
0
    def test_get_stack_order_accepts_stacks_without_parameters_key(self):
        stacks = {'default-sg': {},
                  'app1': None,
                  'app2': {},
                  'vpc': {},
                  }

        result = 4

        self.assertEqual(result, len(DependencyResolver.get_stack_order(stacks)))
コード例 #7
0
    def test_get_stack_order_includes_independent_stacks(self):
        stacks = {'default-sg': StackConfig({'template-url': 'horst.yml'}),
                  'app1': StackConfig(
                      {'template-url': 'horst.yml', 'parameters': {'a': '|Ref|vpc.id', 'b': '|Ref|default-sg.id'}}),
                  'app2': StackConfig({'template-url': 'horst.yml',
                                       'parameters': {'a': '|Ref|vpc.id', 'b': '|Ref|default-sg.id',
                                                      'c': 'Ref::app1.id'}}),
                  'vpc': StackConfig({'template-url': 'horst.yml',
                                      'parameters': {'logBucketName': 'is24-cloudtrail-logs',
                                                     'includeGlobalServices': False}})
                  }

        result = 4

        self.assertEqual(result, len(DependencyResolver.get_stack_order(stacks)))
コード例 #8
0
    def test_get_stack_order_returns_a_valid_order_from_ref_in_list(self):
        stacks = {'default-sg': StackConfig({'template-url': 'horst.yml', 'parameters': {'a': ['|Ref|vpc.id']}}),
                  'app1': StackConfig(
                      {'template-url': 'horst.yml', 'parameters': {'a': ['|Ref|vpc.id'], 'b': ['|Ref|default-sg.id']}}),
                  'app2': StackConfig({'template-url': 'horst.yml',
                                       'parameters': {'a': ['|Ref|vpc.id'], 'b': ['|Ref|default-sg.id'],
                                                      'c': ['|Ref|app1.id']}}),
                  'vpc': StackConfig({'template-url': 'horst.yml',
                                      'parameters': {'logBucketName': 'is24-cloudtrail-logs',
                                                     'includeGlobalServices': False}})
                  }

        expected = ['vpc', 'default-sg', 'app1', 'app2']

        self.assertEqual(expected, DependencyResolver.get_stack_order(stacks))
コード例 #9
0
    def test_get_stack_order_returns_a_valid_order(self):
        stacks = {'default-sg': StackConfig({'template-url': 'horst.yml', 'parameters': {'a': '|Ref|vpc.id'}}),
                  'app1': StackConfig(
                      {'template-url': 'horst.yml', 'parameters': {'a': '|Ref|vpc.id', 'b': '|Ref|default-sg.id'}}),
                  'app2': StackConfig({'template-url': 'horst.yml',
                                       'parameters': {'a': '|Ref|vpc.id', 'b': '|Ref|default-sg.id',
                                                      'c': '|Ref|app1.id'}}),
                  'vpc': StackConfig({'template-url': 'horst.yml',
                                      'parameters': {'logBucketName': 'is24-cloudtrail-logs',
                                                     'includeGlobalServices': False}})
                  }

        expected = ['vpc', 'default-sg', 'app1', 'app2']

        self.assertEqual(expected, DependencyResolver.get_stack_order(stacks))
コード例 #10
0
    def test_get_stack_order_includes_independent_stacks(self):
        stacks = {
            "default-sg": StackConfig({"template-url": "horst.yml"}),
            "app1": StackConfig(
                {"template-url": "horst.yml", "parameters": {"a": "|Ref|vpc.id", "b": "|Ref|default-sg.id"}}
            ),
            "app2": StackConfig(
                {
                    "template-url": "horst.yml",
                    "parameters": {"a": "|Ref|vpc.id", "b": "|Ref|default-sg.id", "c": "Ref::app1.id"},
                }
            ),
            "vpc": StackConfig(
                {
                    "template-url": "horst.yml",
                    "parameters": {"logBucketName": "is24-cloudtrail-logs", "includeGlobalServices": False},
                }
            ),
        }

        result = 4

        self.assertEqual(result, len(DependencyResolver.get_stack_order(stacks)))
コード例 #11
0
    def test_get_stack_order_returns_a_valid_order(self):
        stacks = {
            "default-sg": StackConfig({"template-url": "horst.yml", "parameters": {"a": "|Ref|vpc.id"}}),
            "app1": StackConfig(
                {"template-url": "horst.yml", "parameters": {"a": "|Ref|vpc.id", "b": "|Ref|default-sg.id"}}
            ),
            "app2": StackConfig(
                {
                    "template-url": "horst.yml",
                    "parameters": {"a": "|Ref|vpc.id", "b": "|Ref|default-sg.id", "c": "|Ref|app1.id"},
                }
            ),
            "vpc": StackConfig(
                {
                    "template-url": "horst.yml",
                    "parameters": {"logBucketName": "is24-cloudtrail-logs", "includeGlobalServices": False},
                }
            ),
        }

        expected = ["vpc", "default-sg", "app1", "app2"]

        self.assertEqual(expected, DependencyResolver.get_stack_order(stacks))
コード例 #12
0
    def test_get_stack_order_accepts_stacks_without_parameters_key(self):
        stacks = {"default-sg": {}, "app1": None, "app2": {}, "vpc": {}}

        result = 4

        self.assertEqual(result, len(DependencyResolver.get_stack_order(stacks)))