示例#1
0
 def test_private_url_without_install(self):
     with pytest.raises(
             StateCheckError,
             message=
             'Executing info action without install should raise an error'):
         vdisk = Vdisk(name='vdisk', data=self.valid_data)
         vdisk.url()
示例#2
0
 def test_valid_data(self):
     vdisk = Vdisk(name='vdisk', data=self.valid_data)
     vdisk.api.services.get = MagicMock()
     vdisk.validate()
     data = self.valid_data.copy()
     data['zerodb'] = ''
     data['nsName'] = ''
     data['password'] = vdisk.data['password']
     assert vdisk.data == data
     assert vdisk.data['password'] is not ''
示例#3
0
    def test_private_url(self):
        vdisk = Vdisk(name='vdisk', data=self.valid_data)
        vdisk.data['nsName'] = 'ns_name'
        vdisk.state.set('actions', 'install', 'ok')
        vdisk.api = MagicMock()
        vdisk._zerodb.schedule_action = MagicMock(
            return_value=task_mock('url'))

        assert vdisk.private_url() == 'url'
        vdisk._zerodb.schedule_action.assert_called_once_with(
            'namespace_private_url', args={'name': 'ns_name'})
示例#4
0
    def test_info(self):
        vdisk = Vdisk(name='vdisk', data=self.valid_data)
        vdisk.data['nsName'] = 'ns_name'
        vdisk.state.set('actions', 'install', 'ok')
        vdisk.api = MagicMock()
        task = task_mock('info')
        vdisk._zerodb.schedule_action = MagicMock(return_value=task)

        assert vdisk.info() == 'info'
        vdisk._zerodb.schedule_action.assert_called_once_with(
            'namespace_info', args={'name': vdisk.data['nsName']})
示例#5
0
 def test_install(self):
     vdisk = Vdisk(name='vdisk', data=self.valid_data)
     node = MagicMock()
     node.schedule_action = MagicMock(return_value=task_mock(('instance',
                                                              'ns_name')))
     vdisk.api = MagicMock()
     vdisk.api.services.get = MagicMock(return_value=node)
     vdisk.install()
     args = {
         'disktype': vdisk.data['diskType'].upper(),
         'mode': 'user',
         'password': vdisk.data['password'],
         'public': False,
         'size': int(vdisk.data['size']),
     }
     node.schedule_action.assert_called_once_with('create_zdb_namespace',
                                                  args)
     vdisk.state.check('actions', 'install', 'ok')
     assert vdisk.data['nsName'] == 'ns_name'
     assert vdisk.data['zerodb'] == 'instance'
示例#6
0
 def test_uninstall(self):
     vdisk = Vdisk(name='vdisk', data=self.valid_data)
     vdisk.data['nsName'] = 'ns_name'
     vdisk.state.set('actions', 'install', 'ok')
     vdisk.api = MagicMock()
     vdisk.uninstall()
     vdisk._zerodb.schedule_action.assert_called_once_with(
         'namespace_delete', args={'name': 'ns_name'})
示例#7
0
    def test_no_node_installed(self):
        with pytest.raises(
                RuntimeError,
                message=
                'template should fail to install if no service node is installed'
        ):
            vdisk = Vdisk(name='vdisk', data=self.valid_data)
            vdisk.api.services.get = MagicMock(
                side_effect=ServiceNotFoundError)
            vdisk.validate()

        with pytest.raises(
                RuntimeError,
                message=
                'template should fail to install if no service node is installed'
        ):
            vdisk = Vdisk(name='vdisk', data=self.valid_data)
            node = MagicMock()
            node.state.check = MagicMock(side_effect=StateCheckError)
            vdisk.api.services.get = MagicMock(return_value=node)
            vdisk.validate()
示例#8
0
 def test_zerodb_property(self):
     vdisk = Vdisk(name='vdisk', data=self.valid_data)
     vdisk.api.services.get = MagicMock(return_value='zerodb')
     assert vdisk._zerodb == 'zerodb'
示例#9
0
    def test_invalid_data(self):
        with pytest.raises(
                ValueError,
                message=
                'template should fail to instantiate if data dict is missing the diskType'
        ):
            vdisk = Vdisk(name='vdisk', data={})
            vdisk.api.services.get = MagicMock()
            vdisk.validate()

        with pytest.raises(
                ValueError,
                message=
                'template should fail to instantiate if data dict is missing the size'
        ):
            vdisk = Vdisk(name='vdisk', data={'diskType': 'hdd'})
            vdisk.api.services.get = MagicMock()
            vdisk.validate()

        with pytest.raises(
                ValueError,
                message=
                'template should fail to instantiate if data dict is missing the label'
        ):
            vdisk = Vdisk(name='vdisk', data={'diskType': 'hdd', 'size': 5})
            vdisk.api.services.get = MagicMock()
            vdisk.validate()