From ae7567dc67467cd40ddc598f70b8582a8ed2ee92 Mon Sep 17 00:00:00 2001 From: John Warren Date: Wed, 24 Feb 2016 15:57:04 -0500 Subject: [PATCH] Simplify credentials management Refactor the way credentials/client managers are obtained by the test classes so that it is clear which class attributes reference the client managers with specific credentials. Change-Id: I5e1c6c61406fc26f5b5f50dadf288d5359d2b3ec --- .../simplify-credentials-management.rst | 106 ++++++++++++++++++ 1 file changed, 106 insertions(+) create mode 100644 specs/tempest/simplify-credentials-management.rst diff --git a/specs/tempest/simplify-credentials-management.rst b/specs/tempest/simplify-credentials-management.rst new file mode 100644 index 0000000..b7a606c --- /dev/null +++ b/specs/tempest/simplify-credentials-management.rst @@ -0,0 +1,106 @@ +:: + + This work is licensed under a Creative Commons Attribution 3.0 Unported + License. + + http://creativecommons.org/licenses/by/3.0/legalcode + +.. + +=============================== +Simplify credentials management +=============================== + +https://blueprints.launchpad.net/tempest/+spec/simplify-credentials-management + +Refactor the way credentials/client managers are obtained by the test +classes so that it is clear which class attributes reference the client +managers with specific credentials. + +Problem description +=================== + +Credentials are allocated by defining an array that enumerates the needed +credentials for a given test class. For instance:: + + credentials = [['operator', CONF.object_storage.operator_role], + ['operator_alt', CONF.object_storage.operator_role]] + +When the ``setup_credentials`` class method of the base test class is called, +the client managers associated with credentials are mapped to class attributes +with the prefix ``os_roles``. Credentials can also be allocated in this +manner:: + + credentials = ['primary', 'alt', 'admin'] + +In this case the client managers are aliased to three class attributes, for +instance ``os``, ``manager``, ``os_primary`` are all set to the client +manager using the ``primary`` credentials. This can be confusing for someone +trying to understand a test case, because it is not intuitive for the setting +of a class variable to result in attributes being set and what the names of +those attributes are. + +Proposed change +=============== + +The proposed change is to explicitly assign the attribute values in the given +class's ``setup_credentials`` class method; for instance:: + + cls.os_roles_operator = cls.get_client_manager( + roles=[CONF.object_storage.operator_role], force_new=True) + cls.os_roles_operator_alt = cls.get_client_manager( + roles=[CONF.object_storage.operator_role], force_new=True) + +For classes that use the ``primary``, ``alt`` and/or ``admin`` credentials, the +logic would look like this:: + + cls.os_primary = cls.get_client_manager(credential_type='primary') + +All aliasing would be removed. + +In either case the credential de-allocation logic can remain the way it is. + +Implementation +============== + +Assignee(s) +----------- + +John Warren + +Milestones +---------- + +Work Items +---------- + +- tempest/scenario/test_server_multinode.py and subclasses +- tempest/scenario/test_security_groups_basic_ops.py and subclasses +- tempest/scenario/test_aggregates_basic_ops.py and subclasses +- tempest/scenario/manager.py and subclasses +- tempest/api/database/base.py and subclasses +- tempest/api/compute/base.py and subclasses +- tempest/api/compute/test_authorization.py and subclasses +- tempest/api/compute/servers/test_servers_negative.py and subclasses +- tempest/api/telemetry/base.py and subclasses +- tempest/api/baremetal/admin/base.py and subclasses +- tempest/api/object_storage/base.py and subclasses +- tempest/api/object_storage/test_object_services.py and subclasses +- tempest/api/object_storage/test_account_services.py and subclasses +- tempest/api/object_storage/test_account_quotas.py and subclasses +- tempest/api/object_storage/test_container_acl_negative.py and subclasses +- tempest/api/object_storage/test_account_services_negative.py and subclasses +- tempest/api/object_storage/test_container_sync.py and subclasses +- tempest/api/object_storage/test_container_acl.py and subclasses +- tempest/api/object_storage/test_account_quotas_negative.py and subclasses +- tempest/api/data_processing/base.py and subclasses +- tempest/api/network/admin/test_floating_ips_admin_actions.py and subclasses +- tempest/api/network/base.py and subclasses +- tempest/api/volume/base.py and subclasses +- tempest/api/volume/test_volume_transfers.py and subclasses +- tempest/api/identity/base.py and subclasses +- tempest/api/identity/v3/test_projects.py and subclasses +- tempest/api/identity/v2/test_tenants.py and subclasses +- tempest/api/image/base.py and subclasses +- tempest/api/orchestration/base.py and subclasses +