Exemplo n.º 1
0
 def test_unit_in_new_machine_to_lxc_from_lxd_container(self):
     cs = changeset.ChangeSet({
         'services': {
             'django-new-lxd': {
                 'charm': 'cs:trusty/django-42',
                 'num_units': 1,
                 'to': 'lxd:new',
             },
         },
         'machines': {},
     })
     cs.services_added = {
         'django-new-lxd': 'deploy-4',
     }
     handler = changeset.handle_units(cs)
     self.assertIsNone(handler)
     self.assertEqual([
         {
             'id': 'addMachines-1',
             'method': 'addMachines',
             'args': [{
                 'containerType': 'lxc'
             }],
             'requires': [],
         },
         {
             'id': 'addUnit-0',
             'method': 'addUnit',
             'args': ['$deploy-4', '$addMachines-1'],
             'requires': ['deploy-4', 'addMachines-1'],
         },
     ], cs.recv())
 def test_unit_in_new_machine(self):
     cs = changeset.ChangeSet({
         'services': {
             'django-new': {
                 'charm': 'cs:trusty/django-42',
                 'num_units': 1,
                 'to': 'new',
             },
         },
         'machines': {},
     })
     cs.services_added = {
         'django-new': 'deploy-1',
     }
     handler = changeset.handle_units(cs)
     self.assertIsNone(handler)
     self.assertEqual(
         [
             {
                 'id': 'addMachines-1',
                 'method': 'addMachines',
                 'args': [{}],
                 'requires': [],
             },
             {
                 'id': 'addUnit-0',
                 'method': 'addUnit',
                 'args': ['$deploy-1', '$addMachines-1'],
                 'requires': ['deploy-1', 'addMachines-1'],
             },
         ],
         cs.recv())
Exemplo n.º 3
0
 def test_unit_in_preexisting_machine(self):
     cs = changeset.ChangeSet({
         'services': OrderedDict((
             ('django-machine', {
                 'charm': 'cs:trusty/django-42',
                 'num_units': 1,
                 'to': '42',
             }),
         )),
         'machines': {42: {}},
     })
     cs.services_added = {
         'django-machine': 'addService-3',
     }
     cs.machines_added = {
         '42': 'addMachines-42',
     }
     handler = changeset.handle_units(cs)
     self.assertIsNone(handler)
     self.assertEqual(
         [
             {
                 'id': 'addUnit-0',
                 'method': 'addUnit',
                 'args': ['$addService-3', 1, '$addMachines-42'],
                 'requires': ['addService-3', 'addMachines-42'],
             },
         ],
         cs.recv())
Exemplo n.º 4
0
 def test_unit_in_preexisting_machine(self):
     cs = changeset.ChangeSet({
         'services': {
             'django-machine': {
                 'charm': 'cs:trusty/django-42',
                 'num_units': 1,
                 'to': '42',
             },
         },
         'machines': {
             42: {}
         },
     })
     cs.services_added = {
         'django-machine': 'deploy-3',
     }
     cs.machines_added = {
         '42': 'addMachines-42',
     }
     handler = changeset.handle_units(cs)
     self.assertIsNone(handler)
     self.assertEqual([
         {
             'id': 'addUnit-0',
             'method': 'addUnit',
             'args': ['$deploy-3', '$addMachines-42'],
             'requires': ['deploy-3', 'addMachines-42'],
         },
     ], cs.recv())
Exemplo n.º 5
0
 def test_unit_colocation_to_unit(self):
     cs = changeset.ChangeSet({
         'services': {
             'django-new': {
                 'charm': 'cs:trusty/django-42',
                 'num_units': 1,
             },
             'django-unit': {
                 'charm': 'cs:trusty/django-42',
                 'num_units': 1,
                 'to': 'django-new/0',
             },
         },
         'machines': {},
     })
     cs.services_added = {
         'django-new': 'deploy-1',
         'django-unit': 'deploy-2',
     }
     handler = changeset.handle_units(cs)
     self.assertIsNone(handler)
     self.assertEqual([
         {
             'id': 'addUnit-0',
             'method': 'addUnit',
             'args': ['$deploy-1', None],
             'requires': ['deploy-1'],
         },
         {
             'id': 'addUnit-1',
             'method': 'addUnit',
             'args': ['$deploy-2', '$addUnit-0'],
             'requires': ['deploy-2', 'addUnit-0'],
         },
     ], cs.recv())
Exemplo n.º 6
0
 def test_unit_in_new_machine_container(self):
     cs = changeset.ChangeSet({
         'services': OrderedDict((
             ('django-new-lxc', {
                 'charm': 'cs:trusty/django-42',
                 'num_units': 1,
                 'to': 'lxc:new',
             }),
         )),
         'machines': {},
     })
     cs.services_added = {
         'django-new-lxc': 'addService-4',
     }
     handler = changeset.handle_units(cs)
     self.assertIsNone(handler)
     self.assertEqual(
         [
             {
                 'id': 'addMachines-1',
                 'method': 'addMachines',
                 'args': [{'containerType': 'lxc'}],
                 'requires': [],
             },
             {
                 'id': 'addUnit-0',
                 'method': 'addUnit',
                 'args': ['$addService-4', 1, '$addMachines-1'],
                 'requires': ['addService-4', 'addMachines-1'],
             },
         ],
         cs.recv())
Exemplo n.º 7
0
 def test_v3_placement_unit_in_bootstrap_node(self):
     cs = changeset.ChangeSet({
         'services': OrderedDict((
             ('django', {
                 'charm': 'cs:trusty/django-42',
                 'num_units': 1,
                 'to': '0',
             }),
         )),
     })
     cs.services_added = {
         'django': 'addService-1',
     }
     handler = changeset.handle_units(cs)
     self.assertIsNone(handler)
     self.assertEqual(
         [
             {
                 'id': 'addUnit-0',
                 'method': 'addUnit',
                 'args': ['$addService-1', 1, '0'],
                 'requires': ['addService-1'],
             },
         ],
         cs.recv())
Exemplo n.º 8
0
 def test_v3_placement_unit_in_unit(self):
     cs = changeset.ChangeSet({
         'services': {
             'wordpress': {
                 'charm': 'cs:utopic/wordpress-0',
                 'num_units': 1,
             },
             'django': {
                 'charm': 'cs:trusty/django-42',
                 'num_units': 1,
                 'to': 'wordpress=0',
             },
         },
     })
     cs.services_added = {
         'django': 'deploy-1',
         'wordpress': 'deploy-42',
     }
     handler = changeset.handle_units(cs)
     self.assertIsNone(handler)
     self.assertEqual([
         {
             'id': 'addUnit-0',
             'method': 'addUnit',
             'args': ['$deploy-1', '$addUnit-1'],
             'requires': ['deploy-1', 'addUnit-1'],
         },
         {
             'id': 'addUnit-1',
             'method': 'addUnit',
             'args': ['$deploy-42', None],
             'requires': ['deploy-42'],
         },
     ], cs.recv())
    def test_placement_unit_in_service(self):
        cs = changeset.ChangeSet({
            'services': {
                'wordpress': {
                    'charm': 'cs:utopic/wordpress-0',
                    'num_units': 3,
                },
                'django': {
                    'charm': 'cs:trusty/django-42',
                    'num_units': 2,
                    'to': ['wordpress'],
                },
            },
            'machines': {},
        })
        cs.services_added = {
            'django': 'deploy-1',
            'wordpress': 'deploy-42',
        }
        handler = changeset.handle_units(cs)
        self.assertIsNone(handler)
        self.assertEqual(
            [
                {
                    'id': 'addUnit-0',
                    'method': 'addUnit',
                    'args': ['$deploy-1', '$addUnit-2'],
                    'requires': ['deploy-1', 'addUnit-2'],
                },
                {
                    'id': 'addUnit-1',
                    'method': 'addUnit',
                    'args': ['$deploy-1', '$addUnit-3'],
                    'requires': ['deploy-1', 'addUnit-3'],
                },
                {
                    'id': 'addUnit-2',
                    'method': 'addUnit',
                    'args': ['$deploy-42', None],
                    'requires': ['deploy-42'],
                },
                {

                    'id': 'addUnit-3',
                    'method': 'addUnit',
                    'args': ['$deploy-42', None],
                    'requires': ['deploy-42'],
                },
                {
                    'id': 'addUnit-4',
                    'method': 'addUnit',
                    'args': ['$deploy-42', None],
                    'requires': ['deploy-42'],
                },
            ],
            cs.recv())
Exemplo n.º 10
0
 def test_unit_colocation_to_container_in_unit(self):
     cs = changeset.ChangeSet({
         'services': OrderedDict((
             ('django-new', {
                 'charm': 'cs:trusty/django-42',
                 'num_units': 1,
             }),
             ('django-unit-lxc', {
                 'charm': 'cs:trusty/django-42',
                 'num_units': 1,
                 'to': 'lxc:django-new/0',
             }),
         )),
         'machines': {},
     })
     cs.services_added = {
         'django-new': 'addService-1',
         'django-unit-lxc': 'addService-5',
     }
     handler = changeset.handle_units(cs)
     self.assertIsNone(handler)
     self.maxDiff = None
     self.assertEqual(
         [
             {
                 'id': 'addUnit-0',
                 'method': 'addUnit',
                 'args': ['$addService-1', 1, None],
                 'requires': ['addService-1'],
             },
             {
                 'id': 'addMachines-2',
                 'method': 'addMachines',
                 'args': [{
                     'containerType': 'lxc',
                     'parentId': '$addUnit-0',
                 }],
                 'requires': ['addUnit-0'],
             },
             {
                 'id': 'addUnit-1',
                 'method': 'addUnit',
                 'args': ['$addService-5', 1, '$addMachines-2'],
                 'requires': ['addService-5', 'addMachines-2'],
             },
         ],
         cs.recv())
Exemplo n.º 11
0
 def test_unit_colocation_to_lxc_from_lxd_in_unit(self):
     cs = changeset.ChangeSet({
         'services': {
             'django-new': {
                 'charm': 'cs:trusty/django-42',
                 'num_units': 1,
             },
             'django-unit-lxd': {
                 'charm': 'cs:trusty/django-42',
                 'num_units': 1,
                 'to': 'lxd:django-new/0',
             },
         },
         'machines': {},
     })
     cs.services_added = {
         'django-new': 'deploy-1',
         'django-unit-lxd': 'deploy-5',
     }
     handler = changeset.handle_units(cs)
     self.assertIsNone(handler)
     self.maxDiff = None
     self.assertEqual([
         {
             'id': 'addUnit-0',
             'method': 'addUnit',
             'args': ['$deploy-1', None],
             'requires': ['deploy-1'],
         },
         {
             'id': 'addMachines-2',
             'method': 'addMachines',
             'args': [{
                 'containerType': 'lxc',
                 'parentId': '$addUnit-0',
             }],
             'requires': ['addUnit-0'],
         },
         {
             'id': 'addUnit-1',
             'method': 'addUnit',
             'args': ['$deploy-5', '$addMachines-2'],
             'requires': ['deploy-5', 'addMachines-2'],
         },
     ], cs.recv())
Exemplo n.º 12
0
 def test_v3_placement_unit_in_lxc_in_unit(self):
     cs = changeset.ChangeSet({
         'services': OrderedDict((
             ('wordpress', {
                 'charm': 'cs:utopic/wordpress-0',
                 'num_units': 1,
             }),
             ('django', {
                 'charm': 'cs:trusty/django-42',
                 'num_units': 1,
                 'to': 'lxc:wordpress=0',
             }),
         )),
     })
     cs.services_added = {
         'django': 'addService-1',
         'wordpress': 'addService-42',
     }
     handler = changeset.handle_units(cs)
     self.assertIsNone(handler)
     self.assertEqual(
         [
             {
                 'id': 'addUnit-0',
                 'method': 'addUnit',
                 'args': ['$addService-42', 1, None],
                 'requires': ['addService-42'],
             },
             {
                 'id': 'addMachines-2',
                 'method': 'addMachines',
                 'args': [{
                     'containerType': 'lxc',
                     'parentId': '$addUnit-0',
                 }],
                 'requires': ['addUnit-0'],
             },
             {
                 'id': 'addUnit-1',
                 'method': 'addUnit',
                 'args': ['$addService-1', 1, '$addMachines-2'],
                 'requires': ['addService-1', 'addMachines-2'],
             },
         ],
         cs.recv())
Exemplo n.º 13
0
 def test_unit_in_preexisting_machine_container(self):
     cs = changeset.ChangeSet({
         'services': {
             'django-machine-lxc': {
                 'charm': 'cs:trusty/django-42',
                 'num_units': 1,
                 'to': 'lxc:0',
             },
         },
         'machines': {0: {}},
     })
     cs.services_added = {
         'django-machine-lxc': 'deploy-6',
     }
     cs.machines_added = {
         '0': 'addMachines-47',
     }
     handler = changeset.handle_units(cs)
     self.assertIsNone(handler)
     self.assertEqual(
         [
             {
                 'id': 'addMachines-1',
                 'method': 'addMachines',
                 'args': [{
                     'containerType': 'lxc',
                     'parentId': '$addMachines-47',
                 }],
                 'requires': ['addMachines-47'],
             },
             {
                 'id': 'addUnit-0',
                 'method': 'addUnit',
                 'args': ['$deploy-6', '$addMachines-1'],
                 'requires': ['deploy-6', 'addMachines-1'],
             },
         ],
         cs.recv())
Exemplo n.º 14
0
 def test_unit_in_preexisting_machine_container(self):
     cs = changeset.ChangeSet({
         'services': {
             'django-machine-lxc': {
                 'charm': 'cs:trusty/django-42',
                 'num_units': 1,
                 'to': 'lxc:0',
             },
         },
         'machines': {
             0: {}
         },
     })
     cs.services_added = {
         'django-machine-lxc': 'deploy-6',
     }
     cs.machines_added = {
         '0': 'addMachines-47',
     }
     handler = changeset.handle_units(cs)
     self.assertIsNone(handler)
     self.assertEqual([
         {
             'id': 'addMachines-1',
             'method': 'addMachines',
             'args': [{
                 'containerType': 'lxc',
                 'parentId': '$addMachines-47',
             }],
             'requires': ['addMachines-47'],
         },
         {
             'id': 'addUnit-0',
             'method': 'addUnit',
             'args': ['$deploy-6', '$addMachines-1'],
             'requires': ['deploy-6', 'addMachines-1'],
         },
     ], cs.recv())
Exemplo n.º 15
0
 def test_v3_placement_unit_in_bootstrap_node(self):
     cs = changeset.ChangeSet({
         'services': {
             'django': {
                 'charm': 'cs:trusty/django-42',
                 'num_units': 1,
                 'to': '0',
             },
         },
     })
     cs.services_added = {
         'django': 'deploy-1',
     }
     handler = changeset.handle_units(cs)
     self.assertIsNone(handler)
     self.assertEqual([
         {
             'id': 'addUnit-0',
             'method': 'addUnit',
             'args': ['$deploy-1', '0'],
             'requires': ['deploy-1'],
         },
     ], cs.recv())
Exemplo n.º 16
0
 def test_subordinate_service(self):
     cs = changeset.ChangeSet({'services': {'logger': {'charm': 'logger'}}})
     changeset.handle_units(cs)
     self.assertEqual([], cs.recv())
Exemplo n.º 17
0
 def test_no_units(self):
     cs = changeset.ChangeSet({'services': {}})
     changeset.handle_units(cs)
     self.assertEqual([], cs.recv())
Exemplo n.º 18
0
 def test_handler(self):
     cs = changeset.ChangeSet({
         'services': OrderedDict((
             ('django', {
                 'charm': 'cs:trusty/django-42',
                 'num_units': 1,
                 'to': '42',
             }),
             ('mysql', {
                 'charm': 'cs:utopic/mysql-47',
                 'num_units': 0,
             }),
             ('haproxy', {
                 'charm': 'cs:precise/haproxy-0',
                 'num_units': 2,
             }),
             ('rails', {
                 'charm': 'cs:precise/rails-1',
                 'num_units': 1,
                 'to': ['0'],
             }),
         )),
         'machines': {0: {}, 42: {}},
     })
     cs.services_added = {
         'django': 'addService-1',
         'mysql': 'addService-2',
         'haproxy': 'addService-3',
         'rails': 'addService-4',
     }
     cs.machines_added = {
         '0': 'addMachines-0',
         '42': 'addMachines-42',
     }
     handler = changeset.handle_units(cs)
     self.assertIsNone(handler)
     self.assertEqual(
         [
             {
                 'id': 'addUnit-0',
                 'method': 'addUnit',
                 'args': ['$addService-1', 1, '$addMachines-42'],
                 'requires': ['addService-1', 'addMachines-42'],
             },
             {
                 'id': 'addUnit-1',
                 'method': 'addUnit',
                 'args': ['$addService-3', 1, None],
                 'requires': ['addService-3'],
             },
             {
                 'id': 'addUnit-2',
                 'method': 'addUnit',
                 'args': ['$addService-3', 1, None],
                 'requires': ['addService-3'],
             },
             {
                 'id': 'addUnit-3',
                 'method': 'addUnit',
                 'args': ['$addService-4', 1, '$addMachines-0'],
                 'requires': ['addService-4', 'addMachines-0'],
             },
         ],
         cs.recv())
Exemplo n.º 19
0
 def test_placement_unit_in_container_in_service(self):
     cs = changeset.ChangeSet({
         'services': {
             'wordpress': {
                 'charm': 'cs:utopic/wordpress-0',
                 'num_units': 1,
             },
             'rails': {
                 'charm': 'cs:utopic/rails-0',
                 'num_units': 2,
             },
             'django': {
                 'charm': 'cs:trusty/django-42',
                 'num_units': 3,
                 'to': ['lxc:wordpress', 'kvm:rails'],
             },
         },
         'machines': {},
     })
     cs.services_added = {
         'django': 'deploy-1',
         'wordpress': 'deploy-42',
         'rails': 'deploy-47',
     }
     handler = changeset.handle_units(cs)
     self.assertIsNone(handler)
     self.assertEqual(
         [
             {
                 'id': 'addMachines-6',
                 'method': 'addMachines',
                 'args': [{
                     'containerType': 'lxc',
                     'parentId': '$addUnit-5',
                 }],
                 'requires': ['addUnit-5'],
             },
             {
                 'id': 'addUnit-0',
                 'method': 'addUnit',
                 'args': ['$deploy-1', '$addMachines-6'],
                 'requires': ['deploy-1', 'addMachines-6'],
             },
             {
                 'id': 'addMachines-7',
                 'method': 'addMachines',
                 'args': [{
                     'containerType': 'kvm',
                     'parentId': '$addUnit-3',
                 }],
                 'requires': ['addUnit-3'],
             },
             {
                 'id': 'addUnit-1',
                 'method': 'addUnit',
                 'args': ['$deploy-1', '$addMachines-7'],
                 'requires': ['deploy-1', 'addMachines-7'],
             },
             {
                 'id': 'addMachines-8',
                 'method': 'addMachines',
                 'args': [{
                     'containerType': 'kvm',
                     'parentId': '$addUnit-4',
                 }],
                 'requires': ['addUnit-4'],
             },
             {
                 'id': 'addUnit-2',
                 'method': 'addUnit',
                 'args': ['$deploy-1', '$addMachines-8'],
                 'requires': ['deploy-1', 'addMachines-8'],
             },
             {
                 'id': 'addUnit-3',
                 'method': 'addUnit',
                 'args': ['$deploy-47', None],
                 'requires': ['deploy-47'],
             },
             {
                 'id': 'addUnit-4',
                 'method': 'addUnit',
                 'args': ['$deploy-47', None],
                 'requires': ['deploy-47'],
             },
             {
                 'id': 'addUnit-5',
                 'method': 'addUnit',
                 'args': ['$deploy-42', None],
                 'requires': ['deploy-42'],
             },
         ],
         cs.recv())
Exemplo n.º 20
0
 def test_placement_unit_in_container_in_service(self):
     cs = changeset.ChangeSet({
         'services': {
             'wordpress': {
                 'charm': 'cs:utopic/wordpress-0',
                 'num_units': 1,
             },
             'rails': {
                 'charm': 'cs:utopic/rails-0',
                 'num_units': 2,
             },
             'django': {
                 'charm': 'cs:trusty/django-42',
                 'num_units': 3,
                 'to': ['lxc:wordpress', 'kvm:rails'],
             },
         },
         'machines': {},
     })
     cs.services_added = {
         'django': 'deploy-1',
         'wordpress': 'deploy-42',
         'rails': 'deploy-47',
     }
     handler = changeset.handle_units(cs)
     self.assertIsNone(handler)
     self.assertEqual([
         {
             'id': 'addMachines-6',
             'method': 'addMachines',
             'args': [{
                 'containerType': 'lxc',
                 'parentId': '$addUnit-5',
             }],
             'requires': ['addUnit-5'],
         },
         {
             'id': 'addUnit-0',
             'method': 'addUnit',
             'args': ['$deploy-1', '$addMachines-6'],
             'requires': ['deploy-1', 'addMachines-6'],
         },
         {
             'id': 'addMachines-7',
             'method': 'addMachines',
             'args': [{
                 'containerType': 'kvm',
                 'parentId': '$addUnit-3',
             }],
             'requires': ['addUnit-3'],
         },
         {
             'id': 'addUnit-1',
             'method': 'addUnit',
             'args': ['$deploy-1', '$addMachines-7'],
             'requires': ['deploy-1', 'addMachines-7'],
         },
         {
             'id': 'addMachines-8',
             'method': 'addMachines',
             'args': [{
                 'containerType': 'kvm',
                 'parentId': '$addUnit-4',
             }],
             'requires': ['addUnit-4'],
         },
         {
             'id': 'addUnit-2',
             'method': 'addUnit',
             'args': ['$deploy-1', '$addMachines-8'],
             'requires': ['deploy-1', 'addMachines-8'],
         },
         {
             'id': 'addUnit-3',
             'method': 'addUnit',
             'args': ['$deploy-47', None],
             'requires': ['deploy-47'],
         },
         {
             'id': 'addUnit-4',
             'method': 'addUnit',
             'args': ['$deploy-47', None],
             'requires': ['deploy-47'],
         },
         {
             'id': 'addUnit-5',
             'method': 'addUnit',
             'args': ['$deploy-42', None],
             'requires': ['deploy-42'],
         },
     ], cs.recv())
Exemplo n.º 21
0
 def test_no_units(self):
     cs = changeset.ChangeSet({'services': {}})
     changeset.handle_units(cs)
     self.assertEqual([], cs.recv())
Exemplo n.º 22
0
 def test_subordinate_service(self):
     cs = changeset.ChangeSet({'services': {'logger': {'charm': 'logger'}}})
     changeset.handle_units(cs)
     self.assertEqual([], cs.recv())
Exemplo n.º 23
0
 def test_handler(self):
     cs = changeset.ChangeSet({
         'services': {
             'django': {
                 'charm': 'cs:trusty/django-42',
                 'num_units': 1,
                 'to': '42',
             },
             'mysql': {
                 'charm': 'cs:utopic/mysql-47',
                 'num_units': 0,
             },
             'haproxy': {
                 'charm': 'cs:precise/haproxy-0',
                 'num_units': 2,
             },
             'rails': {
                 'charm': 'cs:precise/rails-1',
                 'num_units': 1,
                 'to': ['0'],
             },
         },
         'machines': {
             0: {},
             42: {}
         },
     })
     cs.services_added = {
         'django': 'deploy-1',
         'mysql': 'deploy-2',
         'haproxy': 'deploy-3',
         'rails': 'deploy-4',
     }
     cs.machines_added = {
         '0': 'addMachines-0',
         '42': 'addMachines-42',
     }
     handler = changeset.handle_units(cs)
     self.assertIsNone(handler)
     self.assertEqual([
         {
             'id': 'addUnit-0',
             'method': 'addUnit',
             'args': ['$deploy-1', '$addMachines-42'],
             'requires': ['deploy-1', 'addMachines-42'],
         },
         {
             'id': 'addUnit-1',
             'method': 'addUnit',
             'args': ['$deploy-3', None],
             'requires': ['deploy-3'],
         },
         {
             'id': 'addUnit-2',
             'method': 'addUnit',
             'args': ['$deploy-3', None],
             'requires': ['deploy-3'],
         },
         {
             'id': 'addUnit-3',
             'method': 'addUnit',
             'args': ['$deploy-4', '$addMachines-0'],
             'requires': ['deploy-4', 'addMachines-0'],
         },
     ], cs.recv())