]> git.proxmox.com Git - ceph.git/blobdiff - ceph/src/ceph-disk/tests/test_prepare.py
update sources to v12.1.2
[ceph.git] / ceph / src / ceph-disk / tests / test_prepare.py
index 6ab8ca49a4034fd00a008983119c1754b7fb8a13..8539e70b1a2f7f1ed36df2e1240f9271be815d54 100644 (file)
@@ -1,4 +1,4 @@
-#!/bin/bash
+#!/usr/bin/env python
 #
 # Copyright (C) 2015, 2016 Red Hat <contact@redhat.com>
 #
@@ -45,7 +45,7 @@ class Base(object):
 
 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)
@@ -55,6 +55,7 @@ class TestPrepare(Base):
         args = parser.parse_args([
             'prepare',
             data,
+            '--filestore',
         ])
 
         def set_type(self):
@@ -72,7 +73,7 @@ class TestPrepare(Base):
 
     @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')
@@ -85,6 +86,7 @@ class TestPrepare(Base):
         args = parser.parse_args([
             'prepare',
             data,
+            '--filestore',
         ])
         prepare = main.Prepare.factory(args)
         assert isinstance(prepare.data, main.PrepareData)
@@ -92,6 +94,29 @@ class TestPrepare(Base):
         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()
@@ -398,3 +423,37 @@ class TestPrepareData(Base):
                                  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