diff --git a/rwm.py b/rwm.py index c6296672b1139e6212393f1872a6c02858f85247..1a8692ee5ab438c280399c10b7c7c5cf00aa4b42 100755 --- a/rwm.py +++ b/rwm.py @@ -163,8 +163,8 @@ class StorageManager: def storage_create(self, bucket_name, target_username): """create policed bucket""" - if (not bucket_name) or (not target_username): - raise ValueError("must specify value for bucket and user") + if not target_username: + raise ValueError("must specify value for bucket user") bucket = self.bucket_create(bucket_name) tenant, admin_username = bucket.Acl().owner["ID"].split("$") @@ -333,6 +333,7 @@ class StorageManager: def storage_save_state(self, bucket_name): """save storage state into itself""" + # explicit error handling here, it's used during backup process try: bucket_state = self._bucket_state(bucket_name) now = datetime.now().astimezone().isoformat() @@ -481,30 +482,13 @@ class RWM: def storage_create(self, bucket_name, target_username) -> int: """storage create command""" - try: - self.storage_manager.storage_create(bucket_name, target_username) - except (ClientError, BotoCoreError, ValueError) as exc: - logger.error("rwm storage_create error, %s", (exc)) - return 1 + self.storage_manager.storage_create(bucket_name, target_username) return 0 def storage_delete(self, bucket_name) -> int: """storage delete command""" - try: - self.storage_manager.storage_delete(bucket_name) - except (ClientError, BotoCoreError) as exc: - logger.error("rwm storage_delete error, %s", (exc)) - return 1 - return 0 - - def storage_check_policy(self, bucket_name) -> int: - """storage check policy command""" - - ret, msg = (0, "OK") if self.storage_manager.storage_check_policy(bucket_name) else (1, "FAILED") - logger.debug("bucket policy: %s", json.dumps(self.storage_manager.bucket_policy(bucket_name), indent=4)) - print(msg) - return ret + return self.storage_manager.storage_delete(bucket_name) def storage_list(self, show_full=False, name_filter="") -> int: """storage_list command""" @@ -569,9 +553,6 @@ def parse_arguments(argv): storage_delete_cmd_parser = subparsers.add_parser("storage_delete", help="delete storage") storage_delete_cmd_parser.add_argument("bucket_name", help="bucket name") - storage_check_policy_cmd_parser = subparsers.add_parser("storage_check_policy", help="check bucket policies; use --debug to show policy") - storage_check_policy_cmd_parser.add_argument("bucket_name", help="bucket name") - storage_list_cmd_parser = subparsers.add_parser("storage_list", help="list storages") storage_list_cmd_parser.add_argument("--full", action="store_true", help="show object counts") storage_list_cmd_parser.add_argument("--filter", default="", help="name filter regex") @@ -624,8 +605,6 @@ def main(argv=None): # pylint: disable=too-many-branches ret = rwmi.storage_create(args.bucket_name, args.target_username) if args.command == "storage_delete": ret = rwmi.storage_delete(args.bucket_name) - if args.command == "storage_check_policy": - ret = rwmi.storage_check_policy(args.bucket_name) if args.command == "storage_list": ret = rwmi.storage_list(args.full, args.filter) if args.command == "storage_drop_versions": diff --git a/tests/test_default.py b/tests/test_default.py index c9fece7b97cacc16d325a93305ef7f71465cd49c..549de110f691a65dc32e5d2999d50fea5f63bcb3 100644 --- a/tests/test_default.py +++ b/tests/test_default.py @@ -55,8 +55,6 @@ def test_main(tmpworkdir: str): # pylint: disable=unused-argument assert rwm_main(["storage_create", "bucket", "user"]) == 0 with patch.object(rwm.RWM, "storage_delete", mock_ok): assert rwm_main(["storage_delete", "bucket"]) == 0 - with patch.object(rwm.RWM, "storage_check_policy", mock_ok): - assert rwm_main(["storage_check_policy", "bucket"]) == 0 with patch.object(rwm.RWM, "storage_list", mock_ok): assert rwm_main(["storage_list"]) == 0 with patch.object(rwm.RWM, "storage_drop_versions", mock_ok): diff --git a/tests/test_rwm.py b/tests/test_rwm.py index 34002d985c527dd58b748ad2a89f52dea685d12f..1f5628cbb47d21c1dbbbc568b56b6ce3b6475034 100644 --- a/tests/test_rwm.py +++ b/tests/test_rwm.py @@ -5,6 +5,8 @@ from pathlib import Path from subprocess import CompletedProcess from unittest.mock import Mock, patch +import pytest + import rwm @@ -194,8 +196,8 @@ def test_storage_create(tmpworkdir: str, microceph: str, radosuser_admin: rwm.St bucket_name = "testbuck" assert trwm.storage_create(bucket_name, "testnx") == 0 - assert trwm.storage_create("!invalid", "testnx") == 1 - assert trwm.storage_create(bucket_name, "") == 1 + with pytest.raises(ValueError): + trwm.storage_create(bucket_name, "") def test_storage_delete(tmpworkdir: str, microceph: str, radosuser_admin: rwm.StorageManager): # pylint: disable=unused-argument @@ -230,18 +232,6 @@ def test_storage_delete(tmpworkdir: str, microceph: str, radosuser_admin: rwm.St assert trwm.storage_delete(bucket_name) == 0 assert not trwm.storage_manager.bucket_exist(bucket_name) - assert trwm.storage_delete(bucket_name) == 1 - - -def test_storage_check_policy(tmpworkdir: str): # pylint: disable=unused-argument - """test storage check policy""" - - trwm = rwm.RWM({}) - - mock = Mock(return_value=False) - with patch.object(rwm.StorageManager, "storage_check_policy", mock): - assert trwm.storage_check_policy("dummy") == 1 - def test_storage_list(tmpworkdir: str): # pylint: disable=unused-argument """test storage_list""" diff --git a/tests/test_storage.py b/tests/test_storage.py index c6254b3ba28e4ff4c7b58605f54398807432ed18..99d18b94da41bee04a5e5fd782bbcdd088ab348b 100644 --- a/tests/test_storage.py +++ b/tests/test_storage.py @@ -60,7 +60,7 @@ def test_storage_create( radosuser_test2.list_objects(bucket.name) -def test_storage_delete( +def test_storage_object_versioning( tmpworkdir: str, microceph: str, radosuser_admin: rwm.StorageManager,