Exemple #1
0
    def test__add_instance_with_ip_override_invalid_syntax(
            self, mock_template):
        network_ports = {
            'mgmt': ['mgmt'],
            'uplink_0':
            'xe0',
            'downlink_0': [
                {
                    'xe1': {
                        'local_ip': '10.44.0.30',
                        'netmask': '255.255.255.0'
                    }
                },
            ],
        }
        attrs = {
            'image': 'some-image',
            'flavor': 'some-flavor',
        }
        test_server = model.Server('foo', self.mock_context, attrs)
        test_server.network_ports = network_ports
        context = type("Context", (object, ), {})
        # can't use Mock because Mock.name is reserved
        context.name = "context"
        networks = [model.Network(n, context, {}) for n in network_ports]

        with self.assertRaises(SyntaxError):
            test_server._add_instance(mock_template, 'some-server', networks,
                                      'hints')
Exemple #2
0
    def test__add_instance(self, mock_template):

        attrs = {'image': 'some-image', 'flavor': 'some-flavor'}
        test_server = model.Server('foo', self.mock_context, attrs)

        mock_network = mock.Mock()
        mock_network.name = 'some-network'
        mock_network.stack_name = 'some-network-stack'
        mock_network.subnet_stack_name = 'some-network-stack-subnet'

        test_server._add_instance(mock_template, 'some-server',
                                  [mock_network], 'hints')

        mock_template.add_port.assert_called_with(
            'some-server-some-network-port',
            mock_network.stack_name,
            mock_network.subnet_stack_name,
            sec_group_id=self.mock_context.secgroup_name)

        mock_template.add_server.assert_called_with(
            'some-server', 'some-image', 'some-flavor',
            ports=['some-server-some-network-port'],
            user=self.mock_context.user,
            key_name=self.mock_context.keypair_name,
            scheduler_hints='hints')
Exemple #3
0
    def test__add_instance(self, mock_template):
        attrs = {
            'image': 'some-image',
            'flavor': 'some-flavor',
            'floating_ip': '192.168.1.10',
            'floating_ip_assoc': 'some-vm',
            'availability_zone': 'zone'
        }
        test_server = model.Server('foo', self.mock_context, attrs)

        self.mock_context.flavors = ['flavor1', 'flavor2', 'some-flavor']

        mock_network = mock.Mock()
        mock_network.name = 'some-network'
        mock_network.stack_name = 'some-network-stack'
        mock_network.allowed_address_pairs = ["1", "2"]
        mock_network.vnic_type = 'normal'
        mock_network.subnet_stack_name = 'some-network-stack-subnet'
        mock_network.provider = 'sriov'
        mock_network.external_network = 'ext_net'
        mock_network.router = model.Router('some-router', 'some-network',
                                           self.mock_context, 'ext_net')

        test_server._add_instance(mock_template, 'some-server', [mock_network],
                                  'hints')

        mock_template.add_port.assert_called_with(
            'some-server-some-network-port',
            mock_network.stack_name,
            mock_network.subnet_stack_name,
            mock_network.vnic_type,
            sec_group_id=self.mock_context.secgroup_name,
            provider=mock_network.provider,
            allowed_address_pairs=mock_network.allowed_address_pairs)

        mock_template.add_floating_ip.assert_called_with(
            'some-server-fip', mock_network.external_network,
            'some-server-some-network-port',
            'bar-some-network-some-router-if0', 'some-secgroup')

        mock_template.add_floating_ip_association.assert_called_with(
            'some-server-fip-assoc', 'some-server-fip',
            'some-server-some-network-port')

        mock_template.add_server.assert_called_with(
            'some-server',
            'some-image',
            flavor='some-flavor',
            flavors=['flavor1', 'flavor2', 'some-flavor'],
            ports=['some-server-some-network-port'],
            user=self.mock_context.user,
            key_name=self.mock_context.keypair_name,
            user_data='',
            scheduler_hints='hints',
            availability_zone='zone')
Exemple #4
0
    def test_construct_defaults(self):

        attrs = None
        test_server = model.Server('foo', self.mock_context, attrs)

        self.assertEqual(test_server.stack_name, 'foo.bar')
        self.assertEqual(test_server.keypair_name, 'some-keys')
        self.assertEqual(test_server.secgroup_name, 'some-secgroup')
        self.assertEqual(test_server.placement_groups, [])
        self.assertEqual(test_server.instances, 1)
        self.assertIsNone(test_server.floating_ip)
        self.assertIsNone(test_server._image)
        self.assertIsNone(test_server._flavor)
        self.assertIn(test_server, model.Server.list)
Exemple #5
0
    def test__add_instance_misc(self, mock_template):

        user_data = ''
        attrs = {
            'image': 'some-image',
            'flavor': 'flavor1',
            'flavors': ['flavor2'],
            'user_data': user_data
        }
        test_server = model.Server('ServerFlavor-3', self.mock_context, attrs)

        self.mock_context.flavors = ['flavor2']
        self.mock_context.flavor = {'vcpus': 4}
        mock_network = mock.Mock()
        mock_network.name = 'some-network'
        mock_network.stack_name = 'some-network-stack'
        mock_network.subnet_stack_name = 'some-network-stack-subnet'
        mock_network.net_flags = {}

        test_server._add_instance(mock_template, 'ServerFlavor-3',
                                  [mock_network], 'hints')

        mock_template.add_port('ServerFlavor-3-some-network-port',
                               mock_network.stack_name,
                               mock_network.subnet_stack_name,
                               sec_group_id=self.mock_context.secgroup_name)

        mock_template.add_flavor(vcpus=4, ram=2048, disk=1)

        mock_template.add_flavor(vcpus=4,
                                 ram=2048,
                                 disk=1,
                                 extra_specs={
                                     'cat': 1,
                                     'dog': 2,
                                     'dragon': 1000
                                 })

        mock_template.add_server.assert_called_with(
            'ServerFlavor-3',
            'some-image',
            flavor='flavor1',
            flavors=['flavor2'],
            ports=['ServerFlavor-3-some-network-port'],
            user=self.mock_context.user,
            key_name=self.mock_context.keypair_name,
            user_data=user_data,
            scheduler_hints='hints',
            availability_zone=None)
Exemple #6
0
    def test__add_instance_with_ip_override(self, mock_template):
        network_ports = {
            'mgmt': ['mgmt'],
            'uplink_0': [
                {
                    'xe0': {
                        'local_ip': '10.44.0.20',
                        'netmask': '255.255.255.0'
                    }
                },
            ],
            'downlink_0': [
                {
                    'xe1': {
                        'local_ip': '10.44.0.30',
                        'netmask': '255.255.255.0'
                    }
                },
            ],
        }
        attrs = {
            'image': 'some-image',
            'flavor': 'some-flavor',
        }
        test_server = model.Server('foo', self.mock_context, attrs)
        test_server.network_ports = network_ports
        context = type("Context", (object, ), {})
        # can't use Mock because Mock.name is reserved
        context.name = "context"
        networks = [model.Network(n, context, {}) for n in network_ports]

        test_server._add_instance(mock_template, 'some-server', networks,
                                  'hints')
        self.assertEqual(
            test_server.ports, {
                'downlink_0': [{
                    'port': 'xe1',
                    'stack_name': 'some-server-xe1-port'
                }],
                'mgmt': [{
                    'port': 'mgmt',
                    'stack_name': 'some-server-mgmt-port'
                }],
                'uplink_0': [{
                    'port': 'xe0',
                    'stack_name': 'some-server-xe0-port'
                }]
            })
Exemple #7
0
    def test__add_instance(self, mock_template):

        attrs = {
            'image': 'some-image',
            'flavor': 'some-flavor',
            'floating_ip': '192.168.1.10',
            'floating_ip_assoc': 'some-vm'
        }
        test_server = model.Server('foo', self.mock_context, attrs)

        mock_network = mock.Mock()
        mock_network.name = 'some-network'
        mock_network.stack_name = 'some-network-stack'
        mock_network.subnet_stack_name = 'some-network-stack-subnet'
        mock_network.provider = 'sriov'
        mock_network.external_network = 'ext_net'
        mock_network.router = model.Router('some-router', 'some-network',
                                           self.mock_context, 'ext_net')

        test_server._add_instance(mock_template, 'some-server', [mock_network],
                                  'hints')

        mock_template.add_port.assert_called_with(
            'some-server-some-network-port',
            mock_network.stack_name,
            mock_network.subnet_stack_name,
            sec_group_id=self.mock_context.secgroup_name,
            provider=mock_network.provider)

        mock_template.add_floating_ip.assert_called_with(
            'some-server-fip', mock_network.external_network,
            'some-server-some-network-port',
            'bar-some-network-some-router-if0', 'some-secgroup')

        mock_template.add_floating_ip_association.assert_called_with(
            'some-server-fip-assoc', 'some-server-fip',
            'some-server-some-network-port')

        mock_template.add_server.assert_called_with(
            'some-server',
            'some-image',
            'some-flavor',
            ports=['some-server-some-network-port'],
            user=self.mock_context.user,
            key_name=self.mock_context.keypair_name,
            scheduler_hints='hints')
Exemple #8
0
 def test_override_ip_multiple(self):
     network_ports = {
         'mgmt': ['mgmt'],
         'uplink_0': [
             {
                 'xe0': {
                     'local_ip': '10.44.0.20',
                     'netmask': '255.255.255.0'
                 }
             },
             {
                 'xe0': {
                     'local_ip': '10.44.0.21',
                     'netmask': '255.255.255.0'
                 }
             },
         ],
         'downlink_0': [
             {
                 'xe1': {
                     'local_ip': '10.44.0.30',
                     'netmask': '255.255.255.0'
                 }
             },
         ],
     }
     attrs = {
         'image': 'some-image',
         'flavor': 'some-flavor',
     }
     test_server = model.Server('foo', self.mock_context, attrs)
     test_server.interfaces = {
         "xe0": {
             "local_ip": "1.2.3.4",
             "netmask": "255.255.255.0",
         },
         "xe1": {
             "local_ip": "1.2.3.5",
             "netmask": "255.255.255.0"
         }
     }
     test_server.network_ports = network_ports
     test_server.override_ip("uplink_0", {"port": "xe0"})
     self.assertEqual(test_server.interfaces["xe0"],
                      network_ports["uplink_0"][0]["xe0"])
Exemple #9
0
    def test__add_instance_plus_flavor(self, mock_template):

        user_data = ''
        attrs = {
            'image': 'some-image',
            'flavor': 'flavor1',
            'flavors': ['flavor2'],
            'user_data': user_data
        }
        test_server = model.Server('ServerFlavor-2', self.mock_context, attrs)

        self.mock_context.flavors = ['flavor2']
        mock_network = mock.Mock()
        mock_network.allowed_address_pairs = ["1", "2"]
        mock_network.vnic_type = 'normal'
        mock_network.configure_mock(
            name='some-network',
            stack_name='some-network-stack',
            subnet_stack_name='some-network-stack-subnet',
            provider='some-provider')

        test_server._add_instance(mock_template, 'ServerFlavor-2',
                                  [mock_network], 'hints')

        mock_template.add_port.assert_called_with(
            'ServerFlavor-2-some-network-port',
            mock_network.stack_name,
            mock_network.subnet_stack_name,
            mock_network.vnic_type,
            provider=mock_network.provider,
            sec_group_id=self.mock_context.secgroup_name,
            allowed_address_pairs=mock_network.allowed_address_pairs)

        mock_template.add_server.assert_called_with(
            'ServerFlavor-2',
            'some-image',
            flavor='flavor1',
            flavors=['flavor2'],
            ports=['ServerFlavor-2-some-network-port'],
            user=self.mock_context.user,
            key_name=self.mock_context.keypair_name,
            user_data=user_data,
            scheduler_hints='hints',
            availability_zone=None)
Exemple #10
0
    def test__add_instance_with_availablity_zone(self, mock_template):
        attrs = {
            'image': 'some-image',
            'flavor': 'some-flavor',
            'availability_zone': 'zone',
        }
        test_server = model.Server('foo', self.mock_context, attrs)

        test_server._add_instance(mock_template, 'some-server', [], 'hints')

        mock_template.add_server.assert_called_with(
            'some-server',
            'some-image',
            flavor='some-flavor',
            flavors=self.mock_context.flavors,
            ports=[],
            user=self.mock_context.user,
            key_name=self.mock_context.keypair_name,
            user_data='',
            scheduler_hints='hints',
            availability_zone='zone')
Exemple #11
0
    def test__add_instance_with_user_data(self, mock_template):
        user_data = "USER_DATA"
        attrs = {
            'image': 'some-image',
            'flavor': 'some-flavor',
            'user_data': user_data,
        }
        test_server = model.Server('foo', self.mock_context, attrs)

        test_server._add_instance(mock_template, 'some-server', [], 'hints')

        mock_template.add_server.assert_called_with(
            'some-server',
            'some-image',
            flavor='some-flavor',
            flavors=self.mock_context.flavors,
            ports=[],
            user=self.mock_context.user,
            key_name=self.mock_context.keypair_name,
            user_data=user_data,
            scheduler_hints='hints')