コード例 #1
0
    def setUp(self):
        super(TestVolumeValidation, self).setUp()
        bdm_v2 = [
            {
                'volume_size': 1,
                'uuid': '6ce0be68',
                'source_type': 'volume',
                'destination_type': 'volume',
                'boot_index': 0,
            },
        ]

        volume_spec = {
            'type': 'os.nova.server',
            'version': '1.0',
            'properties': {
                'flavor': 'FLAV',
                'name': 'FAKE_SERVER_NAME',
                'security_groups': ['HIGH_SECURITY_GROUP'],
                'block_device_mapping_v2': bdm_v2,
            }
        }

        self.vc = mock.Mock()
        self.profile = server.ServerProfile('t', volume_spec)
        self.profile._block_storageclient = self.vc
コード例 #2
0
ファイル: test_nova_server.py プロジェクト: eayunstack/senlin
 def test_do_create_failed(self):
     cc = mock.Mock()
     profile = server.ServerProfile('t', self.spec)
     profile._computeclient = cc
     self._stubout_profile(profile,
                           mock_image=True,
                           mock_flavor=True,
                           mock_keypair=True,
                           mock_net=True)
     node_obj = mock.Mock(id='FAKE_NODE_ID',
                          index=123,
                          cluster_id='FAKE_CLUSTER_ID',
                          data={
                              'placement': {
                                  'zone': 'AZ1',
                                  'servergroup': 'SERVER_GROUP_1'
                              }
                          })
     node_obj.name = 'TEST_SERVER'
     cc.server_create.side_effect = exc.InternalError(
         code=500, message="creation failed.")
     ex = self.assertRaises(exc.EResourceCreation, profile.do_create,
                            node_obj)
     self.assertEqual('Failed in creating server: creation failed.',
                      six.text_type(ex))
     self.assertEqual(0, cc.wait_for_server.call_count)
コード例 #3
0
ファイル: test_nova_server.py プロジェクト: eayunstack/senlin
    def test_do_delete_no_physical_id(self):
        profile = server.ServerProfile('t', self.spec)
        test_server = mock.Mock(physical_id=None)

        res = profile.do_delete(test_server)

        self.assertTrue(res)
コード例 #4
0
    def test_do_recover_bad_operation(self, mock_base_recover):
        profile = server.ServerProfile('t', self.spec)
        node_obj = mock.Mock(physical_id='FAKE_ID')

        res = profile.do_recover(node_obj, operation=[{'name': 'BLAHBLAH'}])

        self.assertFalse(res)
コード例 #5
0
    def setUp(self):
        super(TestAvailabilityZoneValidation, self).setUp()

        self.cc = mock.Mock()
        prof = server.ServerProfile('t', spec)
        prof._computeclient = self.cc
        self.profile = prof
コード例 #6
0
ファイル: test_nova_server.py プロジェクト: eayunstack/senlin
    def test_do_get_details_with_no_network_or_sg(self):
        cc = mock.Mock()
        profile = server.ServerProfile('t', self.spec)
        profile._computeclient = cc
        node_obj = mock.Mock(physical_id='FAKE_ID')

        # Test normal path
        nova_server = mock.Mock()
        nova_server.to_dict.return_value = {
            'addresses': {},
            'flavor': {
                'id': 'FAKE_FLAVOR',
            },
            'id': 'FAKE_ID',
            'image': {
                'id': 'FAKE_IMAGE',
            },
            'security_groups': [],
        }
        cc.server_get.return_value = nova_server
        res = profile.do_get_details(node_obj)
        expected = {
            'flavor': 'FAKE_FLAVOR',
            'id': 'FAKE_ID',
            'image': 'FAKE_IMAGE',
            'addresses': {},
            'security_groups': '',
        }
        self.assertEqual(expected, res)
        cc.server_get.assert_called_once_with('FAKE_ID')
コード例 #7
0
ファイル: test_nova_server.py プロジェクト: eayunstack/senlin
    def test__build_metadata(self):
        obj = mock.Mock(id='NODE_ID', cluster_id='')
        profile = server.ServerProfile('t', self.spec)

        res = profile._build_metadata(obj, None)

        self.assertEqual({'cluster_node_id': 'NODE_ID'}, res)
コード例 #8
0
 def test_do_leave_no_physical_id(self):
     # Test path where server not specified
     profile = server.ServerProfile('t', self.spec)
     profile._novaclient = mock.Mock()
     obj = mock.Mock()
     obj.physical_id = None
     self.assertIsNone(profile.do_leave(obj))
コード例 #9
0
ファイル: test_nova_server.py プロジェクト: eayunstack/senlin
    def test_do_leave_no_physical_id(self):
        profile = server.ServerProfile('t', self.spec)
        node_obj = mock.Mock(physical_id=None)

        res = profile.do_leave(node_obj)

        self.assertFalse(res)
コード例 #10
0
ファイル: test_nova_server.py プロジェクト: eayunstack/senlin
    def test__build_metadata_with_inputs(self):
        obj = mock.Mock(id='NODE_ID', cluster_id='')
        profile = server.ServerProfile('t', self.spec)

        res = profile._build_metadata(obj, {'foo': 'bar'})

        self.assertEqual({'cluster_node_id': 'NODE_ID', 'foo': 'bar'}, res)
コード例 #11
0
ファイル: test_nova_server.py プロジェクト: eayunstack/senlin
    def test_do_join_server_not_created(self):
        # Test path where server not specified
        profile = server.ServerProfile('t', self.spec)
        node_obj = mock.Mock(physical_id=None)

        res = profile.do_join(node_obj, 'FAKE_CLUSTER_ID')

        self.assertFalse(res)
コード例 #12
0
ファイル: test_nova_server.py プロジェクト: eayunstack/senlin
    def test_do_recover_with_list(self, mock_rebuild):
        profile = server.ServerProfile('t', self.spec)
        node_obj = mock.Mock(physical_id='FAKE_ID')

        res = profile.do_recover(node_obj, operation=['REBUILD'])

        self.assertEqual(mock_rebuild.return_value, res)
        mock_rebuild.assert_called_once_with(node_obj)
コード例 #13
0
    def setUp(self):
        super(TestImageValidation, self).setUp()

        self.cc = mock.Mock()
        self.gc = mock.Mock()
        self.profile = server.ServerProfile('t', spec)
        self.profile._computeclient = self.cc
        self.profile._glanceclient = self.gc
コード例 #14
0
    def test_do_join_server_not_created(self):
        # Test path where server not specified
        profile = server.ServerProfile('t', self.spec)
        obj = mock.Mock()
        obj.physical_id = None

        res = profile.do_join(obj, 'FAKE_CLUSTER_ID')
        self.assertEqual({}, res)
コード例 #15
0
ファイル: test_nova_server.py プロジェクト: eayunstack/senlin
    def test_handle_reboot_no_physical_id(self):
        obj = mock.Mock(physical_id=None)
        profile = server.ServerProfile('t', self.spec)

        # do it
        res = profile.handle_reboot(obj, type='SOFT')

        self.assertFalse(res)
コード例 #16
0
ファイル: test_nova_server.py プロジェクト: eayunstack/senlin
    def test_handle_change_password_no_physical_id(self):
        obj = mock.Mock(physical_id=None)
        profile = server.ServerProfile('t', self.spec)

        # do it
        res = profile.handle_change_password(obj, admin_pass='******')

        self.assertFalse(res)
コード例 #17
0
ファイル: test_nova_server.py プロジェクト: eayunstack/senlin
    def test_do_get_details_no_physical_id(self):
        # Test path for server not created
        profile = server.ServerProfile('t', self.spec)
        node_obj = mock.Mock(physical_id='')
        self.assertEqual({}, profile.do_get_details(node_obj))

        node_obj.physical_id = None
        self.assertEqual({}, profile.do_get_details(node_obj))
コード例 #18
0
ファイル: test_nova_server.py プロジェクト: eayunstack/senlin
    def test_do_get_details_with_more_network_or_sg(self):
        cc = mock.Mock()
        profile = server.ServerProfile('t', self.spec)
        profile._computeclient = cc
        node_obj = mock.Mock(physical_id='FAKE_ID')

        # Test normal path
        nova_server = mock.Mock()
        nova_server.to_dict.return_value = {
            'addresses': {
                'private': [{
                    'version': 4,
                    'addr': '10.0.0.3',
                }, {
                    'version': 4,
                    'addr': '192.168.43.3'
                }],
                'public': [{
                    'version': 4,
                    'addr': '172.16.5.3',
                }]
            },
            'flavor': {
                'id': 'FAKE_FLAVOR',
            },
            'id': 'FAKE_ID',
            'image': {
                'id': 'FAKE_IMAGE',
            },
            'security_groups': [{
                'name': 'default',
            }, {
                'name': 'webserver',
            }],
        }
        cc.server_get.return_value = nova_server
        res = profile.do_get_details(node_obj)
        expected = {
            'flavor': 'FAKE_FLAVOR',
            'id': 'FAKE_ID',
            'image': 'FAKE_IMAGE',
            'addresses': {
                'private': [{
                    'version': 4,
                    'addr': '10.0.0.3',
                }, {
                    'version': 4,
                    'addr': '192.168.43.3'
                }],
                'public': [{
                    'version': 4,
                    'addr': '172.16.5.3',
                }]
            },
            'security_groups': ['default', 'webserver'],
        }
        self.assertEqual(expected, res)
        cc.server_get.assert_called_once_with('FAKE_ID')
コード例 #19
0
ファイル: test_nova_server.py プロジェクト: eayunstack/senlin
    def test_do_recover_fallback(self, mock_base_recover):
        profile = server.ServerProfile('t', self.spec)
        node_obj = mock.Mock(physical_id='FAKE_ID')

        res = profile.do_recover(node_obj, operation='blahblah')

        self.assertEqual(mock_base_recover.return_value, res)
        mock_base_recover.assert_called_once_with(node_obj,
                                                  operation='blahblah')
コード例 #20
0
    def test_validate(self):
        cfg.CONF.set_override('default_action_timeout', 119)

        profile = server.ServerProfile('t', self.spec)

        ex = self.assertRaises(exception.InvalidSpec, profile.validate)
        self.assertEqual(
            "Value of the 'timeout' property must be lower than "
            "the upper limit (119).", six.text_type(ex))
コード例 #21
0
ファイル: test_nova_server.py プロジェクト: eayunstack/senlin
    def test_do_rebuild_no_physical_id(self):
        profile = server.ServerProfile('t', self.spec)
        profile._computeclient = mock.Mock()

        test_server = mock.Mock()
        test_server.physical_id = None
        # Test path where server doesn't already exist
        res = profile.do_rebuild(test_server)
        self.assertFalse(res)
コード例 #22
0
ファイル: test_nova_server.py プロジェクト: eayunstack/senlin
    def test_handle_change_password_no_password(self):
        obj = mock.Mock(physical_id='FAKE_ID')
        profile = server.ServerProfile('t', self.spec)
        profile._computeclient = mock.Mock()

        # do it
        res = profile.handle_change_password(obj)

        self.assertFalse(res)
コード例 #23
0
    def test_do_delete_no_physical_id(self):
        # Test path where server doesn't already exist
        nc = mock.Mock()
        profile = server.ServerProfile('t', self.spec)
        profile._novaclient = nc
        test_server = mock.Mock()
        test_server.physical_id = None

        self.assertTrue(profile.do_delete(test_server))
コード例 #24
0
    def test_handle_rebuild_no_physical_id(self):
        profile = server.ServerProfile('t', self.spec)
        profile._computeclient = mock.Mock()

        test_server = mock.Mock()
        test_server.physical_id = None

        res = profile.handle_rebuild(test_server)

        self.assertFalse(res)
コード例 #25
0
ファイル: test_nova_server.py プロジェクト: eayunstack/senlin
    def test_handle_reboot_bad_type(self):
        obj = mock.Mock(physical_id='FAKE_ID')
        profile = server.ServerProfile('t', self.spec)
        profile._computeclient = mock.Mock()

        # do it
        res = profile.handle_reboot(obj, type=['foo'])
        self.assertFalse(res)

        res = profile.handle_reboot(obj, type='foo')
        self.assertFalse(res)
コード例 #26
0
ファイル: test_nova_server.py プロジェクト: eayunstack/senlin
    def test_do_create_invalid_image(self):
        profile = server.ServerProfile('s2', self.spec)
        err = exc.EResourceCreation(type='server', message='boom')
        mock_image = self.patchobject(profile,
                                      '_validate_image',
                                      side_effect=err)
        node_obj = mock.Mock()

        self.assertRaises(exc.EResourceCreation, profile.do_create, node_obj)

        mock_image.assert_called_once_with(node_obj, 'FAKE_IMAGE', 'create')
コード例 #27
0
ファイル: test_nova_server.py プロジェクト: eayunstack/senlin
    def test_handle_change_password_bad_param(self):
        obj = mock.Mock(physical_id='FAKE_ID')
        profile = server.ServerProfile('t', self.spec)
        profile._computeclient = mock.Mock()

        # do it
        res = profile.handle_change_password(obj, admin_pass=['foo'])
        self.assertFalse(res)

        res = profile.handle_change_password(obj, foo='bar')
        self.assertFalse(res)
コード例 #28
0
    def test_do_create_port_and_fixedip_not_defined(self, mock_random_name):
        mock_random_name.return_value = '12345678'
        novaclient = mock.Mock()
        neutronclient = mock.Mock()
        test_server = mock.Mock()
        test_server.name = 'TEST_SERVER'
        test_server.cluster_id = 'FAKE_CLUSTER_ID'
        image = mock.Mock()
        image.id = 'FAKE_IMAGE_ID'
        novaclient.image_get_by_name.return_value = image
        flavor = mock.Mock()
        flavor.id = 'FAKE_FLAVOR_ID'
        novaclient.flavor_find.return_value = flavor
        net = mock.Mock()
        net.id = 'FAKE_NETWORK_ID'
        neutronclient.network_get.return_value = net

        nova_server = mock.Mock()
        nova_server.id = 'FAKE_NOVA_SERVER_ID'
        novaclient.server_create.return_value = nova_server

        spec = {
            'type': 'os.nova.server',
            'version': '1.0',
            'properties': {
                'flavor': 'FLAV',
                'image': 'FAKE_IMAGE',
                'key_name': 'FAKE_KEYNAME',
                'name': 'FAKE_SERVER_NAME',
                'networks': [{
                    'network': 'FAKE_NET'
                }]
            }
        }

        profile = server.ServerProfile('s2', spec)
        profile._novaclient = novaclient
        profile._neutronclient = neutronclient
        server_id = profile.do_create(test_server)

        mock_random_name.assert_called_once_with(8)
        attrs = dict(auto_disk_config=True,
                     flavorRef='FAKE_FLAVOR_ID',
                     imageRef='FAKE_IMAGE_ID',
                     key_name='FAKE_KEYNAME',
                     metadata={'cluster': 'FAKE_CLUSTER_ID'},
                     name='TEST_SERVER-12345678',
                     networks=[{
                         'uuid': 'FAKE_NETWORK_ID'
                     }],
                     timeout=120)

        novaclient.server_create.assert_called_once_with(**attrs)
        self.assertEqual(nova_server.id, server_id)
コード例 #29
0
ファイル: test_nova_server.py プロジェクト: eayunstack/senlin
    def test__build_metadata_for_cluster_node(self):
        obj = mock.Mock(id='NODE_ID', cluster_id='CLUSTER_ID', index=123)
        profile = server.ServerProfile('t', self.spec)

        res = profile._build_metadata(obj, None)

        self.assertEqual(
            {
                'cluster_id': 'CLUSTER_ID',
                'cluster_node_id': 'NODE_ID',
                'cluster_node_index': '123'
            }, res)
コード例 #30
0
ファイル: test_nova_server.py プロジェクト: eayunstack/senlin
    def test_do_create_invalid_keypair(self):
        profile = server.ServerProfile('s2', self.spec)
        self._stubout_profile(profile, mock_image=True, mock_flavor=True)
        err = exc.EResourceCreation(type='server', message='boom')
        mock_kp = self.patchobject(profile,
                                   '_validate_keypair',
                                   side_effect=err)
        node_obj = mock.Mock()

        self.assertRaises(exc.EResourceCreation, profile.do_create, node_obj)

        mock_kp.assert_called_once_with(node_obj, 'FAKE_KEYNAME', 'create')