)]}'
{"specs/test-accounts.rst":[{"author":{"_account_id":1192,"name":"David Kranz","email":"dkranz@redhat.com","username":"david-kranz"},"change_message_id":"db4e165f1683cbba637aab956746f90526addff1","unresolved":false,"context_lines":[{"line_number":43,"context_line":"            cls.os \u003d clients.Manager()"},{"line_number":44,"context_line":""},{"line_number":45,"context_line":"        if CONF.compute.allow_tenant_isolation:"},{"line_number":46,"context_line":"            cls.os \u003d clients.Manager(cls.isolated_creds.get_alt_creds())"},{"line_number":47,"context_line":"        else:"},{"line_number":48,"context_line":"            cls.os \u003d clients.AltManager()"},{"line_number":49,"context_line":""}],"source_content_type":"text/x-rst","patch_set":5,"id":"1ae5cdf2_17f2ac05","line":46,"updated":"2014-06-12 19:03:44.000000000","message":"cls.os_alt","commit_id":"db3e8502673faacd467c244242272884b873d891"},{"author":{"_account_id":1921,"name":"Andrea Frittoli","email":"andrea.frittoli@gmail.com","username":"andrea-frittoli"},"change_message_id":"17b828227359342bc80454a840b2bbd8f81a1dc8","unresolved":false,"context_lines":[{"line_number":43,"context_line":"            cls.os \u003d clients.Manager()"},{"line_number":44,"context_line":""},{"line_number":45,"context_line":"        if CONF.compute.allow_tenant_isolation:"},{"line_number":46,"context_line":"            cls.os \u003d clients.Manager(cls.isolated_creds.get_alt_creds())"},{"line_number":47,"context_line":"        else:"},{"line_number":48,"context_line":"            cls.os \u003d clients.AltManager()"},{"line_number":49,"context_line":""}],"source_content_type":"text/x-rst","patch_set":5,"id":"1ae5cdf2_f8644d4a","line":46,"in_reply_to":"1ae5cdf2_17f2ac05","updated":"2014-06-19 21:33:55.000000000","message":"ok","commit_id":"db3e8502673faacd467c244242272884b873d891"},{"author":{"_account_id":1192,"name":"David Kranz","email":"dkranz@redhat.com","username":"david-kranz"},"change_message_id":"db4e165f1683cbba637aab956746f90526addff1","unresolved":false,"context_lines":[{"line_number":66,"context_line":".."},{"line_number":67,"context_line":""},{"line_number":68,"context_line":"The `get_account` method relies on tenant isolation or on configured"},{"line_number":69,"context_line":"accounts depending on configuration."},{"line_number":70,"context_line":""},{"line_number":71,"context_line":"Extend tenant isolation so that it can create support reusing accounts."},{"line_number":72,"context_line":"Once a test is completed it releases the accounts it requested, and"}],"source_content_type":"text/x-rst","patch_set":5,"id":"1ae5cdf2_d7284488","line":69,"updated":"2014-06-12 19:03:44.000000000","message":"What are the new conf options associated with this?","commit_id":"db3e8502673faacd467c244242272884b873d891"},{"author":{"_account_id":1921,"name":"Andrea Frittoli","email":"andrea.frittoli@gmail.com","username":"andrea-frittoli"},"change_message_id":"17b828227359342bc80454a840b2bbd8f81a1dc8","unresolved":false,"context_lines":[{"line_number":66,"context_line":".."},{"line_number":67,"context_line":""},{"line_number":68,"context_line":"The `get_account` method relies on tenant isolation or on configured"},{"line_number":69,"context_line":"accounts depending on configuration."},{"line_number":70,"context_line":""},{"line_number":71,"context_line":"Extend tenant isolation so that it can create support reusing accounts."},{"line_number":72,"context_line":"Once a test is completed it releases the accounts it requested, and"}],"source_content_type":"text/x-rst","patch_set":5,"id":"1ae5cdf2_586e2130","line":69,"in_reply_to":"1ae5cdf2_d7284488","updated":"2014-06-19 21:33:55.000000000","message":"user and user_alt are replaced by a list of users\ntenant isolation on/off","commit_id":"db3e8502673faacd467c244242272884b873d891"},{"author":{"_account_id":1192,"name":"David Kranz","email":"dkranz@redhat.com","username":"david-kranz"},"change_message_id":"db4e165f1683cbba637aab956746f90526addff1","unresolved":false,"context_lines":[{"line_number":79,"context_line":"tenant isolation to be able to work as in the previous steps, but with"},{"line_number":80,"context_line":"preconfigured accounts only, in case admin credentials are not"},{"line_number":81,"context_line":"available."},{"line_number":82,"context_line":""},{"line_number":83,"context_line":"A potential solution would be to add two environment variables to"},{"line_number":84,"context_line":".testr.conf: ``OS_TEST_CONCURRENCY`` and ``OS_PROCESS_ID``. The first"},{"line_number":85,"context_line":"one indicates the amount of parallel processes, and is already available"}],"source_content_type":"text/x-rst","patch_set":5,"id":"1ae5cdf2_77c1307f","line":82,"updated":"2014-06-12 19:03:44.000000000","message":"When I started thinking about this a while back I envisioned each account (user/alt) assigned to a single testr invocation, perhaps even with the account names derived by index from a base name. Dynamically locking and reassigning accounts to test classes as they run seems more complicated and fragile. Is there an advantage to doing it that way?","commit_id":"db3e8502673faacd467c244242272884b873d891"},{"author":{"_account_id":1921,"name":"Andrea Frittoli","email":"andrea.frittoli@gmail.com","username":"andrea-frittoli"},"change_message_id":"17b828227359342bc80454a840b2bbd8f81a1dc8","unresolved":false,"context_lines":[{"line_number":79,"context_line":"tenant isolation to be able to work as in the previous steps, but with"},{"line_number":80,"context_line":"preconfigured accounts only, in case admin credentials are not"},{"line_number":81,"context_line":"available."},{"line_number":82,"context_line":""},{"line_number":83,"context_line":"A potential solution would be to add two environment variables to"},{"line_number":84,"context_line":".testr.conf: ``OS_TEST_CONCURRENCY`` and ``OS_PROCESS_ID``. The first"},{"line_number":85,"context_line":"one indicates the amount of parallel processes, and is already available"}],"source_content_type":"text/x-rst","patch_set":5,"id":"1ae5cdf2_f8160da6","line":82,"in_reply_to":"1ae5cdf2_77c1307f","updated":"2014-06-19 21:33:55.000000000","message":"I guess my text is a bit inconsistent here. In L77-81 I talk about locking on accounts across processes. Which I agree is complicated and potentially fragile. It gives more flexibility, but maybe we don\u0027t need it, or not now.\n\nThe main thing I\u0027d like to avoid is to rely on IDs in account names or something like that. And I wanted to have a solution that can be easily adapt to future changes like having more than two accounts required for running the tests.\n\nSo the solution I proposed in L83-91 does actually perform a static assignment of accounts to testr processes, only it does that by taking the list of accounts and splitting it based on process ID and overall number of processes. I was thinking of an hashing algorithm to randomize a bit, but it could simply be something like for each process p, accounts Nx+p are dedicated to it, with x in range(# of accounts) and N\u003dtotal number of processes.","commit_id":"db3e8502673faacd467c244242272884b873d891"},{"author":{"_account_id":1921,"name":"Andrea Frittoli","email":"andrea.frittoli@gmail.com","username":"andrea-frittoli"},"change_message_id":"17b828227359342bc80454a840b2bbd8f81a1dc8","unresolved":false,"context_lines":[{"line_number":94,"context_line":"are executed. At the moment two per process is typically enough, if we"},{"line_number":95,"context_line":"exclude identity tests. But there may be tests using more in future."},{"line_number":96,"context_line":"If a test requests accounts and there are none available it will"},{"line_number":97,"context_line":"receive and AccountNotAvailable exception and fail."},{"line_number":98,"context_line":""},{"line_number":99,"context_line":""},{"line_number":100,"context_line":"Alternatives"}],"source_content_type":"text/x-rst","patch_set":5,"id":"1ae5cdf2_7822fd01","line":97,"updated":"2014-06-19 21:33:55.000000000","message":"Or we could run something before tempest that is aware of both the concurrency and of tempest.conf, and fails if there are not enough accounts configured, which gives a faster failure.","commit_id":"db3e8502673faacd467c244242272884b873d891"},{"author":{"_account_id":5196,"name":"Matthew Treinish","email":"mtreinish@kortar.org","username":"treinish"},"change_message_id":"80f3c36e52c5b84fb88a7db74d3574a904305adc","unresolved":false,"context_lines":[{"line_number":53,"context_line":""},{"line_number":54,"context_line":"::"},{"line_number":55,"context_line":""},{"line_number":56,"context_line":"        cls.required_accounts \u003d 2"},{"line_number":57,"context_line":""},{"line_number":58,"context_line":"\t# This may raise an AccountNotAvailable"},{"line_number":59,"context_line":"        accounts \u003d [cls.get_account(roles\u003d[swiftoperator]) for x in range(cls.required_accounts)]"}],"source_content_type":"text/x-rst","patch_set":6,"id":"1ae5cdf2_e2ac4e39","line":56,"updated":"2014-06-23 16:32:05.000000000","message":"I don\u0027t think we need this at a class level. But, I guess that really depends on how build the allocator, but my concern is if we have a test that requires multiple accounts with different roles. Right now the assumption is that there are 3 possible required accounts tenant pairs that can be provided during setupclass: user, admin, and alt. having this number requires that they are all the same role though. \n\nHaving just a count won\u0027t handle the admin case, because it requries a separate role from the other 2. While you could argue that admin is above this layer and shouldn\u0027t be included here. I\u0027m pretty sure we have tests that require admin creds that create tenant scoped resources to perform admin actions on, but the expectation is that they are scoped to the admin users tenant.","commit_id":"6fc76e8d32a1c57b08be4e49fca9c00919f51478"},{"author":{"_account_id":5196,"name":"Matthew Treinish","email":"mtreinish@kortar.org","username":"treinish"},"change_message_id":"80f3c36e52c5b84fb88a7db74d3574a904305adc","unresolved":false,"context_lines":[{"line_number":55,"context_line":""},{"line_number":56,"context_line":"        cls.required_accounts \u003d 2"},{"line_number":57,"context_line":""},{"line_number":58,"context_line":"\t# This may raise an AccountNotAvailable"},{"line_number":59,"context_line":"        accounts \u003d [cls.get_account(roles\u003d[swiftoperator]) for x in range(cls.required_accounts)]"},{"line_number":60,"context_line":"        managers \u003d [clients.Manager(x) for x in accounts]"},{"line_number":61,"context_line":""}],"source_content_type":"text/x-rst","patch_set":6,"id":"1ae5cdf2_82d2aa59","line":58,"updated":"2014-06-23 16:32:05.000000000","message":"Hard tab...","commit_id":"6fc76e8d32a1c57b08be4e49fca9c00919f51478"},{"author":{"_account_id":5196,"name":"Matthew Treinish","email":"mtreinish@kortar.org","username":"treinish"},"change_message_id":"80f3c36e52c5b84fb88a7db74d3574a904305adc","unresolved":false,"context_lines":[{"line_number":75,"context_line":"for all users."},{"line_number":76,"context_line":""},{"line_number":77,"context_line":"The `get_account` method relies on tenant isolation or on configured"},{"line_number":78,"context_line":"accounts depending on the above configuration settings."},{"line_number":79,"context_line":""},{"line_number":80,"context_line":"Extend tenant isolation so that it can create support reusing accounts."},{"line_number":81,"context_line":"Once a test is completed it releases the accounts it requested, and"}],"source_content_type":"text/x-rst","patch_set":6,"id":"1ae5cdf2_e73d40be","line":78,"updated":"2014-06-23 16:32:05.000000000","message":"Just curious what is the expected behavior if both a list and tenant_isolation are set in config? It\u0027s probably worth mentioning here. IMO teant isolation should trump the list...","commit_id":"6fc76e8d32a1c57b08be4e49fca9c00919f51478"},{"author":{"_account_id":5196,"name":"Matthew Treinish","email":"mtreinish@kortar.org","username":"treinish"},"change_message_id":"80f3c36e52c5b84fb88a7db74d3574a904305adc","unresolved":false,"context_lines":[{"line_number":91,"context_line":"1 and ``OS_TEST_CONCURRENCY``, different for every process."},{"line_number":92,"context_line":"We could do something like ``OS_PROCESS_ID\u003d$(script that yeld a sequence of integers)``."},{"line_number":93,"context_line":"get_account would than be able to select a subset of the accounts for the"},{"line_number":94,"context_line":"specific process based on ``OS_PROCESS_ID`` and ``OS_TEST_CONCURRENCY``."},{"line_number":95,"context_line":""},{"line_number":96,"context_line":"With that in place extend once more tenant isolation to be able to work"},{"line_number":97,"context_line":"as in the previous steps, but with preconfigured accounts only, in case"}],"source_content_type":"text/x-rst","patch_set":6,"id":"1ae5cdf2_07aa2c1a","line":94,"updated":"2014-06-23 16:32:05.000000000","message":"So what this comes down to is having some external to the code information which we can use for making cred assignment decisions. Honestly, I see 2 approaches here:\n\n1. We add support to testrepository to handle this through an env variable, or\nsome other external globablly accesible method, so we can do a check and fail\nfast. Like what you proposed here. I\u0027d rather see something like this added to\ntestrepository than have us hack it outside of the tooling. \n\nMy only concern with doing this approach is making testrepository a hard requirement for tempest vs a soft like we have now, which will break some people. (although I really don\u0027t care about those people)\n\n2. We play it dumb, don\u0027t care what the concurrency is and if there isn\u0027t an\navailable account for use when one is allocated things just fail. We can then just\nassign an id for each account from the conf list and use an external file/dir and treat it as a pseudo lock, but instead of blocking/waiting for an available one, if all the id\u0027s are assigned we fail.\n\nPersonally, I think #2 would be better in the short term and we can move to 1 when/if we decide to implement the required reporting from testrepository.","commit_id":"6fc76e8d32a1c57b08be4e49fca9c00919f51478"},{"author":{"_account_id":5196,"name":"Matthew Treinish","email":"mtreinish@kortar.org","username":"treinish"},"change_message_id":"80f3c36e52c5b84fb88a7db74d3574a904305adc","unresolved":false,"context_lines":[{"line_number":95,"context_line":""},{"line_number":96,"context_line":"With that in place extend once more tenant isolation to be able to work"},{"line_number":97,"context_line":"as in the previous steps, but with preconfigured accounts only, in case"},{"line_number":98,"context_line":"admin credentials are not available."},{"line_number":99,"context_line":""},{"line_number":100,"context_line":"How many accounts will tests require may vary depending on which tests"},{"line_number":101,"context_line":"are executed. At the moment two per process is typically enough, if we"}],"source_content_type":"text/x-rst","patch_set":6,"id":"1ae5cdf2_c714c44f","line":98,"updated":"2014-06-23 16:32:05.000000000","message":"Would we really reuse/modify  the code from isolated_creds, or should we implement a new class that has the same api as isolated_creds. I think the code paths might be different enough that it makes sense to have a metaclass for cred reserveration and have both isolated_creds and test_accounts use that. So when get_accounts() is called above which subclass it uses is based on the bool tenant isolation config flag.","commit_id":"6fc76e8d32a1c57b08be4e49fca9c00919f51478"},{"author":{"_account_id":1192,"name":"David Kranz","email":"dkranz@redhat.com","username":"david-kranz"},"change_message_id":"5b66429ec89c470e179b9eec90cdf488f9efce0c","unresolved":false,"context_lines":[{"line_number":99,"context_line":""},{"line_number":100,"context_line":"How many accounts will tests require may vary depending on which tests"},{"line_number":101,"context_line":"are executed. At the moment two per process is typically enough, if we"},{"line_number":102,"context_line":"exclude identity tests. But there may be tests using more in future."},{"line_number":103,"context_line":"We assume the worst case and require CONCURRENCY x max(cls.required_accounts)"},{"line_number":104,"context_line":"to be configured. We run a check before running the tests that compares"},{"line_number":105,"context_line":"concurrency with configured accounts and fails fast in case of mismatch."}],"source_content_type":"text/x-rst","patch_set":6,"id":"1ae5cdf2_2e29ca9b","line":102,"updated":"2014-06-23 13:00:18.000000000","message":"Identity tests may need to be treated differently in some way as many of them are actually testing account manipulation.","commit_id":"6fc76e8d32a1c57b08be4e49fca9c00919f51478"},{"author":{"_account_id":5196,"name":"Matthew Treinish","email":"mtreinish@kortar.org","username":"treinish"},"change_message_id":"80f3c36e52c5b84fb88a7db74d3574a904305adc","unresolved":false,"context_lines":[{"line_number":99,"context_line":""},{"line_number":100,"context_line":"How many accounts will tests require may vary depending on which tests"},{"line_number":101,"context_line":"are executed. At the moment two per process is typically enough, if we"},{"line_number":102,"context_line":"exclude identity tests. But there may be tests using more in future."},{"line_number":103,"context_line":"We assume the worst case and require CONCURRENCY x max(cls.required_accounts)"},{"line_number":104,"context_line":"to be configured. We run a check before running the tests that compares"},{"line_number":105,"context_line":"concurrency with configured accounts and fails fast in case of mismatch."}],"source_content_type":"text/x-rst","patch_set":6,"id":"1ae5cdf2_ed6e0797","line":102,"in_reply_to":"1ae5cdf2_2e29ca9b","updated":"2014-06-23 16:32:05.000000000","message":"The identity tests don\u0027t use tenant isolation because it doesn\u0027t make any sense, the same is true of using this. Those tests operate above the scope of these resources and I think most, if not all already require admin creds.","commit_id":"6fc76e8d32a1c57b08be4e49fca9c00919f51478"},{"author":{"_account_id":5196,"name":"Matthew Treinish","email":"mtreinish@kortar.org","username":"treinish"},"change_message_id":"80f3c36e52c5b84fb88a7db74d3574a904305adc","unresolved":false,"context_lines":[{"line_number":103,"context_line":"We assume the worst case and require CONCURRENCY x max(cls.required_accounts)"},{"line_number":104,"context_line":"to be configured. We run a check before running the tests that compares"},{"line_number":105,"context_line":"concurrency with configured accounts and fails fast in case of mismatch."},{"line_number":106,"context_line":""},{"line_number":107,"context_line":""},{"line_number":108,"context_line":"Alternatives"},{"line_number":109,"context_line":"------------"}],"source_content_type":"text/x-rst","patch_set":6,"id":"1ae5cdf2_a2796684","line":106,"updated":"2014-06-23 16:32:05.000000000","message":"How are you going to handle admin or other roles on the accounts? The basic idea is that we don\u0027t have admin for this so we can\u0027t just assign the roles like we do a lot of places (outside of isolated_creds too) Are you going to define subset lists with all the roles from config and if an account with that role is required use the subset list instead?\n\nI think it\u0027s worth mentioning how this will be handled.","commit_id":"6fc76e8d32a1c57b08be4e49fca9c00919f51478"},{"author":{"_account_id":1192,"name":"David Kranz","email":"dkranz@redhat.com","username":"david-kranz"},"change_message_id":"5b66429ec89c470e179b9eec90cdf488f9efce0c","unresolved":false,"context_lines":[{"line_number":111,"context_line":"to test processes. This may allow reducing the number of accounts required,"},{"line_number":112,"context_line":"as not all processes will use all accounts at all times."},{"line_number":113,"context_line":"However implementing this could be complex and it could lead to more fragile"},{"line_number":114,"context_line":"test runs."},{"line_number":115,"context_line":""},{"line_number":116,"context_line":"Implementation"},{"line_number":117,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"}],"source_content_type":"text/x-rst","patch_set":6,"id":"1ae5cdf2_6e33d213","line":114,"updated":"2014-06-23 13:00:18.000000000","message":"IMO this is not worth doing. Accounts are cheap.","commit_id":"6fc76e8d32a1c57b08be4e49fca9c00919f51478"},{"author":{"_account_id":5196,"name":"Matthew Treinish","email":"mtreinish@kortar.org","username":"treinish"},"change_message_id":"80f3c36e52c5b84fb88a7db74d3574a904305adc","unresolved":false,"context_lines":[{"line_number":111,"context_line":"to test processes. This may allow reducing the number of accounts required,"},{"line_number":112,"context_line":"as not all processes will use all accounts at all times."},{"line_number":113,"context_line":"However implementing this could be complex and it could lead to more fragile"},{"line_number":114,"context_line":"test runs."},{"line_number":115,"context_line":""},{"line_number":116,"context_line":"Implementation"},{"line_number":117,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"}],"source_content_type":"text/x-rst","patch_set":6,"id":"1ae5cdf2_8739dca5","line":114,"in_reply_to":"1ae5cdf2_6e33d213","updated":"2014-06-23 16:32:05.000000000","message":"While I think this would be fun to implement, I agree we don\u0027t need it, it\u0027s just a configuration issue if too few accounts are specified.","commit_id":"6fc76e8d32a1c57b08be4e49fca9c00919f51478"},{"author":{"_account_id":5196,"name":"Matthew Treinish","email":"mtreinish@kortar.org","username":"treinish"},"change_message_id":"80f3c36e52c5b84fb88a7db74d3574a904305adc","unresolved":false,"context_lines":[{"line_number":112,"context_line":"as not all processes will use all accounts at all times."},{"line_number":113,"context_line":"However implementing this could be complex and it could lead to more fragile"},{"line_number":114,"context_line":"test runs."},{"line_number":115,"context_line":""},{"line_number":116,"context_line":"Implementation"},{"line_number":117,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":118,"context_line":""}],"source_content_type":"text/x-rst","patch_set":6,"id":"1ae5cdf2_22e2b6a0","line":115,"updated":"2014-06-23 16:32:05.000000000","message":"Just thinking out loud, but the other thing that I think might be useful, which is probably outside the scope of this spec, is a tool that will figure out the total number of required creds and provides a estimate of a safe number of creds to provide in config given a concurrency.","commit_id":"6fc76e8d32a1c57b08be4e49fca9c00919f51478"},{"author":{"_account_id":6683,"name":"Pavel Sedlák","email":"psedlak@redhat.com","username":"psedlak"},"change_message_id":"27b0c09544929785fbbb10c7b895c8d153b4b214","unresolved":false,"context_lines":[{"line_number":36,"context_line":""},{"line_number":37,"context_line":"- A configured credentials provider, which uses credentials statically"},{"line_number":38,"context_line":"  configured in tempest.conf. This can be used when admin credentials are not"},{"line_number":39,"context_line":"  available in the configuration"},{"line_number":40,"context_line":"- A dynamic credentials provider, which uses the existing tenant isolation"},{"line_number":41,"context_line":"  logic to generate credentials on the fly using identity admin credentials"},{"line_number":42,"context_line":""}],"source_content_type":"text/x-rst","patch_set":7,"id":"baada198_94ec9594","line":39,"updated":"2014-07-16 14:05:12.000000000","message":"maybe extend to something like \u0027in the environment, or their usage for testing is not favored\u0027?","commit_id":"2991699dd54f632aeb948a06afadc6369ffec00e"},{"author":{"_account_id":1921,"name":"Andrea Frittoli","email":"andrea.frittoli@gmail.com","username":"andrea-frittoli"},"change_message_id":"df38b18250f427e2ffab4ca7adbdd2671b59aca0","unresolved":false,"context_lines":[{"line_number":36,"context_line":""},{"line_number":37,"context_line":"- A configured credentials provider, which uses credentials statically"},{"line_number":38,"context_line":"  configured in tempest.conf. This can be used when admin credentials are not"},{"line_number":39,"context_line":"  available in the configuration"},{"line_number":40,"context_line":"- A dynamic credentials provider, which uses the existing tenant isolation"},{"line_number":41,"context_line":"  logic to generate credentials on the fly using identity admin credentials"},{"line_number":42,"context_line":""}],"source_content_type":"text/x-rst","patch_set":7,"id":"baada198_3db6e989","line":39,"in_reply_to":"baada198_94ec9594","updated":"2014-08-01 08:23:49.000000000","message":"done","commit_id":"2991699dd54f632aeb948a06afadc6369ffec00e"},{"author":{"_account_id":6683,"name":"Pavel Sedlák","email":"psedlak@redhat.com","username":"psedlak"},"change_message_id":"27b0c09544929785fbbb10c7b895c8d153b4b214","unresolved":false,"context_lines":[{"line_number":44,"context_line":"into a separate ``credentials_factory`` class, which provides the correct"},{"line_number":45,"context_line":"implementation of tenant isolation to tests based on configuration."},{"line_number":46,"context_line":"The ``credentials_factory`` is the sole responsible for reading configuration"},{"line_number":47,"context_line":"related to configuration, and the existing ``get_credentials`` methods from"},{"line_number":48,"context_line":"auth.py should be dropped, and the corresponding logic implemented in the"},{"line_number":49,"context_line":"configured credentials provider."},{"line_number":50,"context_line":""}],"source_content_type":"text/x-rst","patch_set":7,"id":"baada198_d49d2d0c","line":47,"updated":"2014-07-16 14:05:12.000000000","message":"configuration related to configuration","commit_id":"2991699dd54f632aeb948a06afadc6369ffec00e"},{"author":{"_account_id":1921,"name":"Andrea Frittoli","email":"andrea.frittoli@gmail.com","username":"andrea-frittoli"},"change_message_id":"df38b18250f427e2ffab4ca7adbdd2671b59aca0","unresolved":false,"context_lines":[{"line_number":44,"context_line":"into a separate ``credentials_factory`` class, which provides the correct"},{"line_number":45,"context_line":"implementation of tenant isolation to tests based on configuration."},{"line_number":46,"context_line":"The ``credentials_factory`` is the sole responsible for reading configuration"},{"line_number":47,"context_line":"related to configuration, and the existing ``get_credentials`` methods from"},{"line_number":48,"context_line":"auth.py should be dropped, and the corresponding logic implemented in the"},{"line_number":49,"context_line":"configured credentials provider."},{"line_number":50,"context_line":""}],"source_content_type":"text/x-rst","patch_set":7,"id":"baada198_7d7221e4","line":47,"in_reply_to":"baada198_d49d2d0c","updated":"2014-08-01 08:23:49.000000000","message":"done","commit_id":"2991699dd54f632aeb948a06afadc6369ffec00e"},{"author":{"_account_id":6683,"name":"Pavel Sedlák","email":"psedlak@redhat.com","username":"psedlak"},"change_message_id":"27b0c09544929785fbbb10c7b895c8d153b4b214","unresolved":false,"context_lines":[{"line_number":46,"context_line":"The ``credentials_factory`` is the sole responsible for reading configuration"},{"line_number":47,"context_line":"related to configuration, and the existing ``get_credentials`` methods from"},{"line_number":48,"context_line":"auth.py should be dropped, and the corresponding logic implemented in the"},{"line_number":49,"context_line":"configured credentials provider."},{"line_number":50,"context_line":""},{"line_number":51,"context_line":"Change from something like this repeated in various slightly different flavours:"},{"line_number":52,"context_line":""}],"source_content_type":"text/x-rst","patch_set":7,"id":"baada198_14aec52f","line":49,"updated":"2014-07-16 14:05:12.000000000","message":"maybe change configured -\u003e dynamic?","commit_id":"2991699dd54f632aeb948a06afadc6369ffec00e"},{"author":{"_account_id":1921,"name":"Andrea Frittoli","email":"andrea.frittoli@gmail.com","username":"andrea-frittoli"},"change_message_id":"df38b18250f427e2ffab4ca7adbdd2671b59aca0","unresolved":false,"context_lines":[{"line_number":46,"context_line":"The ``credentials_factory`` is the sole responsible for reading configuration"},{"line_number":47,"context_line":"related to configuration, and the existing ``get_credentials`` methods from"},{"line_number":48,"context_line":"auth.py should be dropped, and the corresponding logic implemented in the"},{"line_number":49,"context_line":"configured credentials provider."},{"line_number":50,"context_line":""},{"line_number":51,"context_line":"Change from something like this repeated in various slightly different flavours:"},{"line_number":52,"context_line":""}],"source_content_type":"text/x-rst","patch_set":7,"id":"baada198_5d0abd27","line":49,"in_reply_to":"baada198_14aec52f","updated":"2014-08-01 08:23:49.000000000","message":"this seems correct to me as it is.","commit_id":"2991699dd54f632aeb948a06afadc6369ffec00e"},{"author":{"_account_id":6683,"name":"Pavel Sedlák","email":"psedlak@redhat.com","username":"psedlak"},"change_message_id":"27b0c09544929785fbbb10c7b895c8d153b4b214","unresolved":false,"context_lines":[{"line_number":106,"context_line":""},{"line_number":107,"context_line":"How many accounts will tests require may vary depending on which tests"},{"line_number":108,"context_line":"are executed. At the moment two per process is typically enough, if we"},{"line_number":109,"context_line":"exclude identity tests, which we can do because the mostly require admin"},{"line_number":110,"context_line":"credentials anyways, so they would not run without admin credentials"},{"line_number":111,"context_line":"configured. Still it may happen that no account is available when test request"},{"line_number":112,"context_line":"it. In this case we the test will fail with AccountNotAvailable."}],"source_content_type":"text/x-rst","patch_set":7,"id":"baada198_8f6722b7","line":109,"updated":"2014-07-16 14:05:12.000000000","message":"because the[y]","commit_id":"2991699dd54f632aeb948a06afadc6369ffec00e"},{"author":{"_account_id":1921,"name":"Andrea Frittoli","email":"andrea.frittoli@gmail.com","username":"andrea-frittoli"},"change_message_id":"df38b18250f427e2ffab4ca7adbdd2671b59aca0","unresolved":false,"context_lines":[{"line_number":106,"context_line":""},{"line_number":107,"context_line":"How many accounts will tests require may vary depending on which tests"},{"line_number":108,"context_line":"are executed. At the moment two per process is typically enough, if we"},{"line_number":109,"context_line":"exclude identity tests, which we can do because the mostly require admin"},{"line_number":110,"context_line":"credentials anyways, so they would not run without admin credentials"},{"line_number":111,"context_line":"configured. Still it may happen that no account is available when test request"},{"line_number":112,"context_line":"it. In this case we the test will fail with AccountNotAvailable."}],"source_content_type":"text/x-rst","patch_set":7,"id":"baada198_e0fda809","line":109,"in_reply_to":"baada198_8f6722b7","updated":"2014-08-01 08:23:49.000000000","message":"done","commit_id":"2991699dd54f632aeb948a06afadc6369ffec00e"},{"author":{"_account_id":6683,"name":"Pavel Sedlák","email":"psedlak@redhat.com","username":"psedlak"},"change_message_id":"27b0c09544929785fbbb10c7b895c8d153b4b214","unresolved":false,"context_lines":[{"line_number":146,"context_line":"  the modified configuration options"},{"line_number":147,"context_line":"- Implement a credentials_factory"},{"line_number":148,"context_line":"- Adapt tests and test base classes (in multiple steps)"},{"line_number":149,"context_line":""},{"line_number":150,"context_line":"Dependencies"},{"line_number":151,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":152,"context_line":""}],"source_content_type":"text/x-rst","patch_set":7,"id":"baada198_0fe152fe","line":149,"updated":"2014-07-16 14:05:12.000000000","message":"maybe add here \u0027- add unittests/periodic job for validation\u0027","commit_id":"2991699dd54f632aeb948a06afadc6369ffec00e"},{"author":{"_account_id":5196,"name":"Matthew Treinish","email":"mtreinish@kortar.org","username":"treinish"},"change_message_id":"7b0c1a0f9a3eb026cf26e45fd607a943cf6b35f0","unresolved":false,"context_lines":[{"line_number":109,"context_line":"exclude identity tests, which we can do because they mostly require admin"},{"line_number":110,"context_line":"credentials anyways, so they would not run without admin credentials"},{"line_number":111,"context_line":"configured. Still it may happen that no account is available when test request"},{"line_number":112,"context_line":"it. In this case we the test will fail with AccountNotAvailable."},{"line_number":113,"context_line":""},{"line_number":114,"context_line":"Assumptions"},{"line_number":115,"context_line":"-----------"}],"source_content_type":"text/x-rst","patch_set":8,"id":"baada198_902ed6f8","line":112,"updated":"2014-08-02 06:25:48.000000000","message":"So based on the actual code right now it will raise an invalid configuration error, but it doesn\u0027t really matter.","commit_id":"5e18215ecb5145d88dfc6ad64fcee92a9269197c"}]}
