)]}'
{"doc/source/library/credential_providers.rst":[{"author":{"_account_id":23186,"name":"Felipe Monteiro","email":"felipe.carneiro.monteiro@gmail.com","username":"felipe.monteiro"},"change_message_id":"599f2ff0cc91ac1109a9d0e20781b20b0902ee27","unresolved":false,"context_lines":[{"line_number":5,"context_line":""},{"line_number":6,"context_line":"These library interfaces are used to deal with allocating credentials on demand"},{"line_number":7,"context_line":"either dynamically by calling keystone to allocate new credentials, or from"},{"line_number":8,"context_line":"a list of preprovisioned credentials. These 2 modules provide are"},{"line_number":9,"context_line":"implementations of the same abstract credential providers class and can be"},{"line_number":10,"context_line":"used interchangably. However, each implementation has some additional parameters"},{"line_number":11,"context_line":"that are used to influence the behavior of the modules. The api reference at the"}],"source_content_type":"text/x-rst","patch_set":1,"id":"1f1a1f67_07c76a98","line":8,"range":{"start_line":8,"start_character":54,"end_line":8,"end_character":65},"updated":"2017-07-17 19:10:50.000000000","message":"pick either verb","commit_id":"d335d8df6e73e10d612f9406ebd7496897ded318"},{"author":{"_account_id":23186,"name":"Felipe Monteiro","email":"felipe.carneiro.monteiro@gmail.com","username":"felipe.monteiro"},"change_message_id":"599f2ff0cc91ac1109a9d0e20781b20b0902ee27","unresolved":false,"context_lines":[{"line_number":8,"context_line":"a list of preprovisioned credentials. These 2 modules provide are"},{"line_number":9,"context_line":"implementations of the same abstract credential providers class and can be"},{"line_number":10,"context_line":"used interchangably. However, each implementation has some additional parameters"},{"line_number":11,"context_line":"that are used to influence the behavior of the modules. The api reference at the"},{"line_number":12,"context_line":"bottom of this doc shows the interface definitions for both modules, however that"},{"line_number":13,"context_line":"may be a bit opaque. You can see some examples of how to leverage this interface"},{"line_number":14,"context_line":"below."}],"source_content_type":"text/x-rst","patch_set":1,"id":"1f1a1f67_a76796b7","line":11,"range":{"start_line":11,"start_character":60,"end_line":11,"end_character":63},"updated":"2017-07-17 19:10:50.000000000","message":"API","commit_id":"d335d8df6e73e10d612f9406ebd7496897ded318"},{"author":{"_account_id":23186,"name":"Felipe Monteiro","email":"felipe.carneiro.monteiro@gmail.com","username":"felipe.monteiro"},"change_message_id":"599f2ff0cc91ac1109a9d0e20781b20b0902ee27","unresolved":false,"context_lines":[{"line_number":15,"context_line":""},{"line_number":16,"context_line":"Examples"},{"line_number":17,"context_line":"--------"},{"line_number":18,"context_line":"This example is from tempest itself (from tempest/common/credentials_factory.py"},{"line_number":19,"context_line":"just modified slightly) and is how it initializes the credential provider based"},{"line_number":20,"context_line":"on config::"},{"line_number":21,"context_line":""}],"source_content_type":"text/x-rst","patch_set":1,"id":"1f1a1f67_c76a927f","line":18,"range":{"start_line":18,"start_character":21,"end_line":18,"end_character":28},"updated":"2017-07-17 19:10:50.000000000","message":"Tempest (just to be consistent with Jordan\u0027s changes in https://review.openstack.org/#/c/460128/6/tempest/README.rst)","commit_id":"d335d8df6e73e10d612f9406ebd7496897ded318"},{"author":{"_account_id":1921,"name":"Andrea Frittoli","email":"andrea.frittoli@gmail.com","username":"andrea-frittoli"},"change_message_id":"6b64148051e321dd6ca51d1e856c8d2d71c3bb97","unresolved":false,"context_lines":[{"line_number":35,"context_line":"      if CONF.auth.use_dynamic_credentials or force_tenant_isolation:"},{"line_number":36,"context_line":"          admin_creds \u003d get_configured_admin_credentials("},{"line_number":37,"context_line":"              fill_in\u003dTrue, identity_version\u003didentity_version)"},{"line_number":38,"context_line":"          return dynamic_creds.DynamicCredentialProvider("},{"line_number":39,"context_line":"              name\u003dname,"},{"line_number":40,"context_line":"              network_resources\u003dnetwork_resources,"},{"line_number":41,"context_line":"              identity_version\u003didentity_version,"},{"line_number":42,"context_line":"              admin_creds\u003dadmin_creds,"},{"line_number":43,"context_line":"              identity_admin_domain_scope\u003dCONF.identity.admin_domain_scope,"},{"line_number":44,"context_line":"              identity_admin_role\u003dCONF.identity.admin_role,"},{"line_number":45,"context_line":"              extra_roles\u003dCONF.auth.tempest_roles,"},{"line_number":46,"context_line":"              neutron_available\u003dCONF.service_available.neutron,"},{"line_number":47,"context_line":"              project_network_cidr\u003dCONF.network.project_network_cidr,"},{"line_number":48,"context_line":"              project_network_mask_bits\u003dCONF.network.project_network_mask_bits,"},{"line_number":49,"context_line":"              public_network_id\u003dCONF.network.public_network_id,"},{"line_number":50,"context_line":"              create_networks\u003d(CONF.auth.create_isolated_networks and not"},{"line_number":51,"context_line":"                               CONF.network.shared_physical_network),"},{"line_number":52,"context_line":"              resource_prefix\u003dCONF.resources_prefix,"},{"line_number":53,"context_line":"              credentials_domain\u003dCONF.auth.default_credentials_domain_name,"},{"line_number":54,"context_line":"              admin_role\u003dCONF.identity.admin_role)"},{"line_number":55,"context_line":"      else:"},{"line_number":56,"context_line":"          if CONF.auth.test_accounts_file:"},{"line_number":57,"context_line":"              # Most params are not relevant for pre-created accounts"}],"source_content_type":"text/x-rst","patch_set":3,"id":"1f1a1f67_5e10e9a8","line":54,"range":{"start_line":38,"start_character":0,"end_line":54,"end_character":50},"updated":"2017-07-21 15:51:23.000000000","message":"The new parameters (see my two patches) are missing.\nI wonder why you preferred not to use the helpers here and instead list every parameter?","commit_id":"0bd0abf04703cecfad4ca8a96333a7031cf0a2fa"},{"author":{"_account_id":5196,"name":"Matthew Treinish","email":"mtreinish@kortar.org","username":"treinish"},"change_message_id":"9e57623dd9a2785a89cb5fe435ba77ff1e6b24b6","unresolved":false,"context_lines":[{"line_number":35,"context_line":"      if CONF.auth.use_dynamic_credentials or force_tenant_isolation:"},{"line_number":36,"context_line":"          admin_creds \u003d get_configured_admin_credentials("},{"line_number":37,"context_line":"              fill_in\u003dTrue, identity_version\u003didentity_version)"},{"line_number":38,"context_line":"          return dynamic_creds.DynamicCredentialProvider("},{"line_number":39,"context_line":"              name\u003dname,"},{"line_number":40,"context_line":"              network_resources\u003dnetwork_resources,"},{"line_number":41,"context_line":"              identity_version\u003didentity_version,"},{"line_number":42,"context_line":"              admin_creds\u003dadmin_creds,"},{"line_number":43,"context_line":"              identity_admin_domain_scope\u003dCONF.identity.admin_domain_scope,"},{"line_number":44,"context_line":"              identity_admin_role\u003dCONF.identity.admin_role,"},{"line_number":45,"context_line":"              extra_roles\u003dCONF.auth.tempest_roles,"},{"line_number":46,"context_line":"              neutron_available\u003dCONF.service_available.neutron,"},{"line_number":47,"context_line":"              project_network_cidr\u003dCONF.network.project_network_cidr,"},{"line_number":48,"context_line":"              project_network_mask_bits\u003dCONF.network.project_network_mask_bits,"},{"line_number":49,"context_line":"              public_network_id\u003dCONF.network.public_network_id,"},{"line_number":50,"context_line":"              create_networks\u003d(CONF.auth.create_isolated_networks and not"},{"line_number":51,"context_line":"                               CONF.network.shared_physical_network),"},{"line_number":52,"context_line":"              resource_prefix\u003dCONF.resources_prefix,"},{"line_number":53,"context_line":"              credentials_domain\u003dCONF.auth.default_credentials_domain_name,"},{"line_number":54,"context_line":"              admin_role\u003dCONF.identity.admin_role)"},{"line_number":55,"context_line":"      else:"},{"line_number":56,"context_line":"          if CONF.auth.test_accounts_file:"},{"line_number":57,"context_line":"              # Most params are not relevant for pre-created accounts"}],"source_content_type":"text/x-rst","patch_set":3,"id":"1f1a1f67_1efef137","line":54,"range":{"start_line":38,"start_character":0,"end_line":54,"end_character":50},"in_reply_to":"1f1a1f67_5e10e9a8","updated":"2017-07-21 15:56:07.000000000","message":"I\u0027ll add the new params, I wrote this before that. I opted to show the full param list here, because this the library interface docs, not the how to use cred_factory doc. The cred factory module is pretty much the only place we use this so it just was an easy example to copy and paste from.","commit_id":"0bd0abf04703cecfad4ca8a96333a7031cf0a2fa"},{"author":{"_account_id":1921,"name":"Andrea Frittoli","email":"andrea.frittoli@gmail.com","username":"andrea-frittoli"},"change_message_id":"6b64148051e321dd6ca51d1e856c8d2d71c3bb97","unresolved":false,"context_lines":[{"line_number":54,"context_line":"              admin_role\u003dCONF.identity.admin_role)"},{"line_number":55,"context_line":"      else:"},{"line_number":56,"context_line":"          if CONF.auth.test_accounts_file:"},{"line_number":57,"context_line":"              # Most params are not relevant for pre-created accounts"},{"line_number":58,"context_line":"              return preprov_creds.PreProvisionedCredentialProvider("},{"line_number":59,"context_line":"                  name\u003dname, identity_version\u003didentity_version,"},{"line_number":60,"context_line":"                  accounts_lock_dir\u003dlockutils.get_lock_path(CONF),"},{"line_number":61,"context_line":"                  test_accounts_file\u003dCONF.auth.test_accounts_file,"},{"line_number":62,"context_line":"                  object_storage_operator_role\u003dCONF.object_storage.operator_role,"},{"line_number":63,"context_line":"                  object_storage_reseller_admin_role\u003dreseller_admin_role,"},{"line_number":64,"context_line":"                  credentials_domain\u003dCONF.auth.default_credentials_domain_name,"},{"line_number":65,"context_line":"                  admin_role\u003dCONF.identity.admin_role)"},{"line_number":66,"context_line":"          else:"},{"line_number":67,"context_line":"              raise exceptions.InvalidConfiguration("},{"line_number":68,"context_line":"                  \u0027A valid credential provider is needed\u0027)"}],"source_content_type":"text/x-rst","patch_set":3,"id":"1f1a1f67_3e276d15","line":65,"range":{"start_line":57,"start_character":0,"end_line":65,"end_character":54},"updated":"2017-07-21 15:51:23.000000000","message":"ditto","commit_id":"0bd0abf04703cecfad4ca8a96333a7031cf0a2fa"},{"author":{"_account_id":23186,"name":"Felipe Monteiro","email":"felipe.carneiro.monteiro@gmail.com","username":"felipe.monteiro"},"change_message_id":"b1ad9be5ce7393c3bba668776bf20aefa018163f","unresolved":false,"context_lines":[{"line_number":78,"context_line":"allocating and removing credentials are the same across both the dynamic"},{"line_number":79,"context_line":"and preprovisioned credentials. These are defined in the abstract"},{"line_number":80,"context_line":"CredentialProvider class. At a high level the credentials provider enables"},{"line_number":81,"context_line":"you to get 3 basic types of credentials at once (per object) a primary, alt, and"},{"line_number":82,"context_line":"admin. You\u0027re also able to allocate a credential by role. These credentials are"},{"line_number":83,"context_line":"tracked by the provider object and delete must manually be called otherwise"},{"line_number":84,"context_line":"the created resources will not be deleted (or returned to the pool in the case"}],"source_content_type":"text/x-rst","patch_set":3,"id":"1f1a1f67_75f55256","line":81,"range":{"start_line":81,"start_character":59,"end_line":81,"end_character":60},"updated":"2017-07-19 18:49:15.000000000","message":"):\n\n(colon for enumerating list)","commit_id":"0bd0abf04703cecfad4ca8a96333a7031cf0a2fa"}]}
