-#!/bin/bash
+#!/usr/bin/env python
#
# Copyright (C) 2015, 2016 Red Hat <contact@redhat.com>
#
class TestPrepare(Base):
- def test_init_dir(self):
+ def test_init_filestore_dir(self):
parser = argparse.ArgumentParser('ceph-disk')
subparsers = parser.add_subparsers()
main.Prepare.set_subparser(subparsers)
args = parser.parse_args([
'prepare',
data,
+ '--filestore',
])
def set_type(self):
@mock.patch('stat.S_ISBLK')
@mock.patch('ceph_disk.main.is_partition')
- def test_init_dev(self, m_is_partition, m_s_isblk):
+ def test_init_filestore_dev(self, m_is_partition, m_s_isblk):
m_s_isblk.return_value = True
parser = argparse.ArgumentParser('ceph-disk')
args = parser.parse_args([
'prepare',
data,
+ '--filestore',
])
prepare = main.Prepare.factory(args)
assert isinstance(prepare.data, main.PrepareData)
assert isinstance(prepare.journal, main.PrepareJournal)
assert prepare.journal.is_device()
+ def test_init_default_dir(self):
+ parser = argparse.ArgumentParser('ceph-disk')
+ subparsers = parser.add_subparsers()
+ main.Prepare.set_subparser(subparsers)
+
+ data = tempfile.mkdtemp()
+ main.setup_statedir(data)
+ args = parser.parse_args([
+ 'prepare',
+ data,
+ ])
+
+ def set_type(self):
+ self.type = self.FILE
+ with mock.patch.multiple(main.PrepareData,
+ set_type=set_type):
+ prepare = main.Prepare.factory(args)
+ assert isinstance(prepare.data, main.PrepareBluestoreData)
+ assert prepare.data.is_file()
+ prepare.prepare()
+ assert os.path.exists(os.path.join(data, 'fsid'))
+ shutil.rmtree(data)
+
def test_set_subparser(self):
parser = argparse.ArgumentParser('ceph-disk')
subparsers = parser.add_subparsers()
set_type=set_type):
data = main.PrepareData(args)
assert data.args.cluster_uuid == cluster_uuid
+
+
+class TestSecrets(Base):
+
+ @mock.patch('ceph_disk.main.command')
+ def test_secrets(self, m_command):
+ key = "KEY"
+ m_command.side_effect = lambda cmd: (key + "\n", '', 0)
+ s = main.Secrets()
+ assert {"cephx_secret": key} == s.keys
+ assert '{"cephx_secret": "' + key + '"}' == s.get_json()
+
+ @mock.patch('ceph_disk.main.open')
+ @mock.patch('ceph_disk.main.CryptHelpers.get_dmcrypt_keysize')
+ @mock.patch('ceph_disk.main.command')
+ def test_lockbox_secrets(self,
+ m_command,
+ m_get_dmcrypt_keysize,
+ m_open):
+ key = "KEY"
+ m_command.side_effect = lambda cmd: (key + "\n", '', 0)
+ m_get_dmcrypt_keysize.side_effect = lambda args: 32
+
+ class File:
+ def read(self, size):
+ return b'O' * size
+
+ m_open.side_effect = lambda path, mode: File()
+ s = main.LockboxSecrets({})
+ assert {
+ "dmcrypt_key": 'T09PTw==',
+ "cephx_secret": key,
+ "cephx_lockbox_secret": key,
+ } == s.keys