From defad06ddce8b1f34ce90601e6c0915395aeb64a Mon Sep 17 00:00:00 2001 From: EdLeafe Date: Tue, 6 May 2014 12:00:02 -0500 Subject: [PATCH] Version 1.8.0 - adds Context Objects --- RELEASENOTES.md | 96 +- docs/context_objects.md | 133 ++ docs/getting_started.md | 27 +- docs/html/____init_____8py.html | 6 +- docs/html/annotated.html | 18 +- docs/html/base__identity_8py.html | 13 +- docs/html/classes.html | 149 +- ...1autoscale_1_1AutoScaleClient-members.html | 3 +- ...ase__identity_1_1BaseIdentity-members.html | 179 ++ ...rax_1_1base__identity_1_1BaseIdentity.html | 2118 +++++++++++++++++ ...yrax_1_1base__identity_1_1BaseIdentity.png | Bin 0 -> 416 bytes ...1_1base__identity_1_1Endpoint-members.html | 129 + ...sspyrax_1_1base__identity_1_1Endpoint.html | 410 ++++ ...asspyrax_1_1base__identity_1_1Endpoint.png | Bin 0 -> 384 bytes .../classpyrax_1_1base__identity_1_1Role.html | 135 ++ ..._1_1base__identity_1_1Service-members.html | 127 + ...asspyrax_1_1base__identity_1_1Service.html | 367 +++ ...lasspyrax_1_1base__identity_1_1Service.png | Bin 0 -> 466 bytes ...lasspyrax_1_1base__identity_1_1Tenant.html | 15 +- .../classpyrax_1_1base__identity_1_1User.html | 15 +- ..._1_1cf__wrapper_1_1client_1_1CFClient.html | 20 +- ...pyrax_1_1client_1_1BaseClient-members.html | 3 +- .../classpyrax_1_1client_1_1BaseClient.html | 24 +- ...ge_1_1CloudBlockStorageClient-members.html | 6 +- ...ockstorage_1_1CloudBlockStorageClient.html | 121 +- ...e_1_1CloudBlockStorageManager-members.html | 3 +- ...ckstorage_1_1CloudBlockStorageManager.html | 46 +- ...udBlockStorageSnapshotManager-members.html | 3 +- ...e_1_1CloudBlockStorageSnapshotManager.html | 46 +- ...abases_1_1CloudDatabaseClient-members.html | 3 +- ...1_1clouddns_1_1CloudDNSClient-members.html | 3 +- ...rs_1_1CloudLoadBalancerClient-members.html | 3 +- ...itoring_1_1CloudMonitorClient-members.html | 3 +- ...etworks_1_1CloudNetworkClient-members.html | 3 +- ...x_1_1exceptions_1_1NoClientForService.html | 142 ++ ...ax_1_1exceptions_1_1NoClientForService.png | Bin 0 -> 493 bytes ..._1_1exceptions_1_1NoEndpointForRegion.html | 142 ++ ...x_1_1exceptions_1_1NoEndpointForRegion.png | Bin 0 -> 520 bytes ...1_1exceptions_1_1NoEndpointForService.html | 142 ++ ..._1_1exceptions_1_1NoEndpointForService.png | Bin 0 -> 529 bytes ...sspyrax_1_1exceptions_1_1NoSuchClient.html | 142 ++ ...asspyrax_1_1exceptions_1_1NoSuchClient.png | Bin 0 -> 452 bytes ...pyrax_1_1exceptions_1_1PyraxException.html | 66 +- ...spyrax_1_1exceptions_1_1PyraxException.png | Bin 30385 -> 31494 bytes ...1fakes_1_1FakeAutoScaleClient-members.html | 3 +- ...kes_1_1FakeBlockStorageClient-members.html | 6 +- ...es_1_1FakeBlockStorageManager-members.html | 3 +- ...spyrax_1_1fakes_1_1FakeClient-members.html | 4 +- .../classpyrax_1_1fakes_1_1FakeClient.html | 57 +- ...kes_1_1FakeCloudMonitorClient-members.html | 3 +- ...kes_1_1FakeCloudNetworkClient-members.html | 3 +- ...rax_1_1fakes_1_1FakeDNSClient-members.html | 3 +- ..._1fakes_1_1FakeDatabaseClient-members.html | 3 +- ...yrax_1_1fakes_1_1FakeEndpoint-members.html | 129 + .../classpyrax_1_1fakes_1_1FakeEndpoint.html | 144 ++ .../classpyrax_1_1fakes_1_1FakeEndpoint.png | Bin 0 -> 379 bytes ...yrax_1_1fakes_1_1FakeIdentity-members.html | 98 +- .../classpyrax_1_1fakes_1_1FakeIdentity.html | 35 +- .../classpyrax_1_1fakes_1_1FakeIdentity.png | Bin 540 -> 415 bytes ...1fakes_1_1FakeIdentityService-members.html | 127 + ...pyrax_1_1fakes_1_1FakeIdentityService.html | 290 +++ ...spyrax_1_1fakes_1_1FakeIdentityService.png | Bin 0 -> 460 bytes ...x_1_1fakes_1_1FakeImageClient-members.html | 3 +- ...kes_1_1FakeLoadBalancerClient-members.html | 3 +- ...pyrax_1_1fakes_1_1FakeManager-members.html | 5 +- .../classpyrax_1_1fakes_1_1FakeManager.html | 49 +- ...fakes_1_1FakeNovaVolumeClient-members.html | 3 +- ...x_1_1fakes_1_1FakeQueueClient-members.html | 3 +- ...x_1_1fakes_1_1FakeRaxIdentity-members.html | 128 + ...lasspyrax_1_1fakes_1_1FakeRaxIdentity.html | 144 ++ ...classpyrax_1_1fakes_1_1FakeRaxIdentity.png | Bin 0 -> 445 bytes ..._identity_1_1KeystoneIdentity-members.html | 53 +- ...eystone__identity_1_1KeystoneIdentity.html | 15 +- ...1rax__identity_1_1RaxIdentity-members.html | 51 +- ...ntity_1_1rax__identity_1_1RaxIdentity.html | 125 +- ...entity_1_1rax__identity_1_1RaxIdentity.png | Bin 543 -> 450 bytes ...pyrax_1_1image_1_1ImageClient-members.html | 3 +- ...ax_1_1queueing_1_1QueueClient-members.html | 3 +- ...lasspyrax_1_1queueing_1_1QueueMessage.html | 7 +- ...classpyrax_1_1queueing_1_1QueueMessage.png | Bin 652 -> 422 bytes ...lasspyrax_1_1resource_1_1BaseResource.html | 60 +- ...classpyrax_1_1resource_1_1BaseResource.png | Bin 8431 -> 8110 bytes ...lasspyrax_1_1utils_1_1DotDict-members.html | 119 + docs/html/classpyrax_1_1utils_1_1DotDict.html | 211 ++ docs/html/client_8py.html | 8 +- docs/html/exceptions_8py.html | 6 +- docs/html/fakes_8py.html | 9 +- docs/html/functions.html | 114 +- docs/html/functions_0x61.html | 36 +- docs/html/functions_0x62.html | 3 +- docs/html/functions_0x63.html | 65 +- docs/html/functions_0x64.html | 32 +- docs/html/functions_0x65.html | 17 +- docs/html/functions_0x66.html | 19 +- docs/html/functions_0x67.html | 100 +- docs/html/functions_0x68.html | 5 +- docs/html/functions_0x69.html | 28 +- docs/html/functions_0x6a.html | 3 +- docs/html/functions_0x6b.html | 148 ++ docs/html/functions_0x6c.html | 49 +- docs/html/functions_0x6d.html | 15 +- docs/html/functions_0x6e.html | 30 +- docs/html/functions_0x6f.html | 3 +- docs/html/functions_0x70.html | 27 +- docs/html/functions_0x71.html | 3 +- docs/html/functions_0x72.html | 38 +- docs/html/functions_0x73.html | 40 +- docs/html/functions_0x74.html | 32 +- docs/html/functions_0x75.html | 83 +- docs/html/functions_0x76.html | 5 +- docs/html/functions_0x77.html | 3 +- docs/html/functions_func.html | 114 +- docs/html/functions_func_0x61.html | 32 +- docs/html/functions_func_0x62.html | 3 +- docs/html/functions_func_0x63.html | 41 +- docs/html/functions_func_0x64.html | 42 +- docs/html/functions_func_0x65.html | 3 +- docs/html/functions_func_0x66.html | 17 +- docs/html/functions_func_0x67.html | 98 +- docs/html/functions_func_0x68.html | 3 +- docs/html/functions_func_0x69.html | 3 +- docs/html/functions_func_0x6a.html | 3 +- docs/html/functions_func_0x6b.html | 146 ++ docs/html/functions_func_0x6c.html | 39 +- docs/html/functions_func_0x6d.html | 15 +- docs/html/functions_func_0x6e.html | 3 +- docs/html/functions_func_0x6f.html | 3 +- docs/html/functions_func_0x70.html | 3 +- docs/html/functions_func_0x71.html | 3 +- docs/html/functions_func_0x72.html | 39 +- docs/html/functions_func_0x73.html | 7 +- docs/html/functions_func_0x74.html | 3 +- docs/html/functions_func_0x75.html | 86 +- docs/html/functions_vars.html | 16 +- docs/html/functions_vars_0x63.html | 14 +- docs/html/functions_vars_0x65.html | 12 +- docs/html/functions_vars_0x68.html | 4 +- docs/html/functions_vars_0x69.html | 33 +- docs/html/functions_vars_0x6e.html | 21 +- docs/html/functions_vars_0x70.html | 18 +- docs/html/functions_vars_0x72.html | 21 +- docs/html/functions_vars_0x73.html | 20 +- docs/html/functions_vars_0x74.html | 23 +- docs/html/functions_vars_0x75.html | 13 +- docs/html/functions_vars_0x76.html | 4 +- docs/html/hierarchy.html | 44 +- docs/html/namespacemembers.html | 18 +- docs/html/namespacemembers_func.html | 8 +- docs/html/namespacemembers_vars.html | 12 +- docs/html/namespacepyrax.html | 130 +- .../namespacepyrax_1_1base__identity.html | 39 +- docs/html/namespacepyrax_1_1client.html | 22 +- docs/html/namespacepyrax_1_1exceptions.html | 6 +- docs/html/namespacepyrax_1_1fakes.html | 24 +- docs/html/namespacepyrax_1_1utils.html | 4 +- docs/html/namespacepyrax_1_1version.html | 6 +- docs/html/search/all_5f.js | 6 +- docs/html/search/all_61.js | 15 +- docs/html/search/all_62.js | 2 +- docs/html/search/all_63.js | 12 +- docs/html/search/all_64.js | 8 +- docs/html/search/all_65.js | 5 +- docs/html/search/all_66.js | 12 +- docs/html/search/all_67.js | 18 +- docs/html/search/all_68.js | 2 +- docs/html/search/all_69.js | 2 +- docs/html/search/all_6b.js | 4 +- docs/html/search/all_6c.js | 12 +- docs/html/search/all_6d.js | 12 +- docs/html/search/all_6e.js | 8 +- docs/html/search/all_70.js | 5 +- docs/html/search/all_72.js | 7 +- docs/html/search/all_73.js | 12 +- docs/html/search/all_74.js | 6 +- docs/html/search/all_75.js | 17 +- docs/html/search/all_76.js | 2 +- docs/html/search/classes_62.js | 2 +- docs/html/search/classes_64.js | 1 + docs/html/search/classes_65.js | 1 + docs/html/search/classes_66.js | 6 +- docs/html/search/classes_6e.js | 4 + docs/html/search/classes_72.js | 3 +- docs/html/search/classes_73.js | 1 + docs/html/search/functions_5f.js | 6 +- docs/html/search/functions_61.js | 9 +- docs/html/search/functions_63.js | 10 +- docs/html/search/functions_64.js | 5 +- docs/html/search/functions_66.js | 5 +- docs/html/search/functions_67.js | 18 +- docs/html/search/functions_6b.js | 2 +- docs/html/search/functions_6c.js | 14 +- docs/html/search/functions_6d.js | 12 +- docs/html/search/functions_72.js | 3 + docs/html/search/functions_73.js | 4 +- docs/html/search/functions_75.js | 11 +- docs/html/search/variables_61.js | 6 +- docs/html/search/variables_63.js | 1 + docs/html/search/variables_64.js | 2 +- docs/html/search/variables_65.js | 4 +- docs/html/search/variables_66.js | 1 - docs/html/search/variables_68.js | 2 +- docs/html/search/variables_69.js | 2 +- docs/html/search/variables_6b.js | 2 +- docs/html/search/variables_6e.js | 2 +- docs/html/search/variables_70.js | 5 +- docs/html/search/variables_72.js | 4 +- docs/html/search/variables_73.js | 7 +- docs/html/search/variables_74.js | 6 +- docs/html/search/variables_75.js | 6 +- docs/html/search/variables_76.js | 2 +- docs/html/utils_8py.html | 4 +- docs/html/version_8py.html | 4 +- docs/queues.md | 6 +- pyrax/__init__.py | 198 +- pyrax/base_identity.py | 651 ++++- pyrax/cf_wrapper/client.py | 78 +- pyrax/client.py | 23 +- pyrax/cloudblockstorage.py | 69 +- pyrax/exceptions.py | 12 + pyrax/fakes.py | 102 +- pyrax/identity/keystone_identity.py | 8 +- pyrax/identity/rax_identity.py | 124 +- pyrax/utils.py | 26 + pyrax/version.py | 2 +- tests/unit/test_autoscale.py | 3 +- tests/unit/test_cf_client.py | 26 +- tests/unit/test_client.py | 33 +- tests/unit/test_cloud_blockstorage.py | 70 + tests/unit/test_identity.py | 862 ++++++- tests/unit/test_manager.py | 52 +- tests/unit/test_module.py | 106 +- tests/unit/test_queues.py | 9 +- tests/unit/test_utils.py | 27 +- 233 files changed, 9906 insertions(+), 1818 deletions(-) create mode 100644 docs/context_objects.md create mode 100644 docs/html/classpyrax_1_1base__identity_1_1BaseIdentity-members.html create mode 100644 docs/html/classpyrax_1_1base__identity_1_1BaseIdentity.html create mode 100644 docs/html/classpyrax_1_1base__identity_1_1BaseIdentity.png create mode 100644 docs/html/classpyrax_1_1base__identity_1_1Endpoint-members.html create mode 100644 docs/html/classpyrax_1_1base__identity_1_1Endpoint.html create mode 100644 docs/html/classpyrax_1_1base__identity_1_1Endpoint.png create mode 100644 docs/html/classpyrax_1_1base__identity_1_1Role.html create mode 100644 docs/html/classpyrax_1_1base__identity_1_1Service-members.html create mode 100644 docs/html/classpyrax_1_1base__identity_1_1Service.html create mode 100644 docs/html/classpyrax_1_1base__identity_1_1Service.png create mode 100644 docs/html/classpyrax_1_1exceptions_1_1NoClientForService.html create mode 100644 docs/html/classpyrax_1_1exceptions_1_1NoClientForService.png create mode 100644 docs/html/classpyrax_1_1exceptions_1_1NoEndpointForRegion.html create mode 100644 docs/html/classpyrax_1_1exceptions_1_1NoEndpointForRegion.png create mode 100644 docs/html/classpyrax_1_1exceptions_1_1NoEndpointForService.html create mode 100644 docs/html/classpyrax_1_1exceptions_1_1NoEndpointForService.png create mode 100644 docs/html/classpyrax_1_1exceptions_1_1NoSuchClient.html create mode 100644 docs/html/classpyrax_1_1exceptions_1_1NoSuchClient.png create mode 100644 docs/html/classpyrax_1_1fakes_1_1FakeEndpoint-members.html create mode 100644 docs/html/classpyrax_1_1fakes_1_1FakeEndpoint.html create mode 100644 docs/html/classpyrax_1_1fakes_1_1FakeEndpoint.png create mode 100644 docs/html/classpyrax_1_1fakes_1_1FakeIdentityService-members.html create mode 100644 docs/html/classpyrax_1_1fakes_1_1FakeIdentityService.html create mode 100644 docs/html/classpyrax_1_1fakes_1_1FakeIdentityService.png create mode 100644 docs/html/classpyrax_1_1fakes_1_1FakeRaxIdentity-members.html create mode 100644 docs/html/classpyrax_1_1fakes_1_1FakeRaxIdentity.html create mode 100644 docs/html/classpyrax_1_1fakes_1_1FakeRaxIdentity.png create mode 100644 docs/html/classpyrax_1_1utils_1_1DotDict-members.html create mode 100644 docs/html/classpyrax_1_1utils_1_1DotDict.html create mode 100644 docs/html/functions_0x6b.html create mode 100644 docs/html/functions_func_0x6b.html diff --git a/RELEASENOTES.md b/RELEASENOTES.md index fd74a3d1..f993cd3f 100644 --- a/RELEASENOTES.md +++ b/RELEASENOTES.md @@ -1,5 +1,40 @@ # Release Notes for pyrax +###2014.05.06 - Version 1.8.0 + - Identity + - Added **Context Objects** as a way to encapsulate an authenticated + session. + - Context objects remove the limitation in pyrax of only working with a + single authenticated session at a time. + - Improves the ability to work with multiple providers at once, or across + multiple regions for the same provider. + - More information in the **context_objects.md** document in the docs/ + folder. + + - Cloud Files + - Fixed missing URL quoting for bulk deletes. GitHub #350 + - Multiple improvements to sync_folder_to_container in GitHub #355: + - Added the ability to specify a prefix to be added to the object name + during checking and uploading during a sync + - Sped up sync_folder_to_container by having it pull down a list of + objects all at once to use to compare against instead of checking once + for each file. + - Added verbose logging to sync_folder_to_container (Originally requested + in GitHub #250) + + - General + - Fixed issue where one bad section in the configuration file caused threw + an exception that terminated your app. GitHub #346 + - Removed the need to specify a tenant_id when authenticating with a token. + GitHub #345 + + - Block Storage + - Added missing update methods to Cloud Block Storage. + + - Documentation + - Updated the queues docs to include listing of queues. GitHub #353 + + ###2014.04.07 - Version 1.7.3 - Identity - Updated the identity module and tests to work with the new http library. @@ -77,7 +112,8 @@ ###2014.02.03 - Version 1.6.3 - Cloud Monitoring: - Added back missing error info. GitHub #285 - - Added support for Overviews and Changelogs from Cloud Monitoring. GitHub #267 + - Added support for Overviews and Changelogs from Cloud Monitoring. GitHub + #267 - Autoscale: - Corrected how networks are created when none are specified. GitHub #262 - Added load balancers to sample code for creating a scaling group. @@ -87,12 +123,16 @@ - Cloud Files: - Add `use_servicenet` setting for Cloud Files. GitHub #273 - Fixed bug in passing TTL to `delete_in_seconds()`. GitHub #281 - - Added a fix for GETting 0-byte content with Dynamic Large Objects (multipart files). GitHub #258 - - Include container name in `X-Object-Manifest` header when creating DLO. GitHub #261 - - Use `X-Object-Manifest` instead of `X-Object-Meta-Manifest` when creating DLO. GitHub #260 + - Added a fix for GETting 0-byte content with Dynamic Large Objects + (multipart files). GitHub #258 + - Include container name in `X-Object-Manifest` header when creating DLO. + GitHub #261 + - Use `X-Object-Manifest` instead of `X-Object-Meta-Manifest` when creating + DLO. GitHub #260 - Cloud Load Balancers: - Added `httpsRedirect` param for Cloud Load Balancers. GitHub #277 - - Adding an entry for the `id` attribute to the Node's `to_dict()` method. GitHub #276 + - Adding an entry for the `id` attribute to the Node's `to_dict()` method. + GitHub #276 - Cloud DNS: - Handle empty bodies in GET responses from the Cloud DNS API. GitHub #280 - Cloud Servers: @@ -273,7 +313,8 @@ - Fixed a bug that prevented region from being properly set. Issue #86. ###2013.06.04 - Version 1.4.4 -- Fixed a bug when using environment variables to set the identity_type. Issue #82. +- Fixed a bug when using environment variables to set the identity_type. Issue + #82. ###2013.06.03 - Version 1.4.3 - Added support for having objects automatically deleted from Cloud Files after @@ -288,22 +329,23 @@ ###2013.05.29 - Version 1.4.0 - Added support for **all** OpenStack clouds. Previous versions only supported - Rackspace authentication methods. + Rackspace authentication methods. - Configuration files now support multiple cloud environments in the same file. - You can switch between environments by calling `pyrax.set_environment("env")`, - where `env` is the name of the desired environment. + You can switch between environments by calling + `pyrax.set_environment("env")`, where `env` is the name of the desired + environment. - Configuration settings can now be stored in environment variables. These all - begin with `CLOUD_`; a full list can be found in the [main pyrax - documentation](https://github.com/rackspace/pyrax/tree/master/docs/pyrax_doc.md). + begin with `CLOUD_`; a full list can be found in the [main pyrax + documentation](https://github.com/rackspace/pyrax/tree/master/docs/pyrax_doc.md). - Available regions are now available in the `pyrax.regions` attribute after - authentication. + authentication. - Services that are available for the current cloud provider are now available - in the `pyrax.services` attribute. + in the `pyrax.services` attribute. - Fixed an issue in Cloud Databases in which the `volume` attribute was - sometimes a dict and sometimes an instance of `CloudDatabaseVolume`. Now it - will always be an instance. + sometimes a dict and sometimes an instance of `CloudDatabaseVolume`. Now it + will always be an instance. - Added a smoke test script to the integrated tests. It currently covers the - compute, networking, database, and object_store services. + compute, networking, database, and object_store services. - Removed unnecessary hack for compute URIs. - Cleaned up some naming and formatting inconsistencies. @@ -412,7 +454,7 @@ container class. 'DRAINING' condition (GitHub #6). Modified the rax_identity to accept UTC dates returned from the LON datacenter (GitHub #5). Fixed an issue that prevented HTTP debugging from turning off in swiftclient. - + ###2013.01.15 - Version 1.2.4 - Added support for keychain storage of credentials for authentication. @@ -422,7 +464,8 @@ issue that prevented HTTP debugging from turning off in swiftclient. - Added the 'halfClosed' parameter to the create() method of load balancers. ###2013.01.03 - Version 1.2.2 -- Fixed an issue that was causing calls to cloudservers to needlessly re-authenticate. +- Fixed an issue that was causing calls to cloudservers to needlessly + re-authenticate. ###2012.12.27 - Version 1.2.1 - Removed old class docs that were no longer needed in this release. @@ -437,7 +480,7 @@ issue that prevented HTTP debugging from turning off in swiftclient. - Added a requirement for python-novaclient>=2.10.0. ###2012.12.18 - Version 1.1.6b -- Removed the code that controlled when pyrax connected to services. +- Removed the code that controlled when pyrax connected to services. - Changed the User-agent format to match the other SDKs. ###2012.12.17 - Version 1.1.5b @@ -447,23 +490,28 @@ issue that prevented HTTP debugging from turning off in swiftclient. ###2012.12.13 - Version 1.1.4b - Added the ability to connect to the internal URL for Cloud Files. - Added limit and marker to the base client/manager classes. -- Added the cloudfiles Container and StorageObject classes to the pyrax namespace. +- Added the cloudfiles Container and StorageObject classes to the pyrax + namespace. ###2012.12.10 - Version 1.1.2b - Added a test that was missing in the previous release. ###2012.12.07 - Version 1.1.1b -- Added the ability for developers to customize the User-agent string for their applications. +- Added the ability for developers to customize the User-agent string for their + applications. ###2012.11.26 - Version 1.1.1b - Added Cloud Block Storage support. -- Added the refactored code for Cloud Load Balancers that removes the dependency on the python-cloudlb library. +- Added the refactored code for Cloud Load Balancers that removes the + dependency on the python-cloudlb library. ###2012.11.24 - Version 1.0.4b - Maintenance fix release. ###2012.11.20 -- Improved the handling of CDN calls so they don't fail as often, and are more resilient when they do. +- Improved the handling of CDN calls so they don't fail as often, and are more + resilient when they do. ###2012.11.06 -- Release of the initial beta for pyrax. Supports Cloud Servers, Cloud Files, and Cloud Load Balancers. +- Release of the initial beta for pyrax. Supports Cloud Servers, Cloud Files, + and Cloud Load Balancers. diff --git a/docs/context_objects.md b/docs/context_objects.md new file mode 100644 index 00000000..2a9f4ce6 --- /dev/null +++ b/docs/context_objects.md @@ -0,0 +1,133 @@ +# Context Objects + +Context objects represent a single authenticated session. You can work with as many context objects as you like at the same time without worrying about logging in or out of each one to work with the other. Earlier versions of pyrax (before 1.8.0) only allowed you to work with one authenticated session at a time. + +This ability is useful if you ever need to work with multiple projects (accounts) at the same time, or with multiple users within the same project. + +## Creating a Context Object + +To create a context object, you call: + + ctx = pyrax.create_context({id_type}) + +where `id_type` is either "keystone" or "rackspace". If you've defined the identity type you wish to use in either your `~/.pyrax.cfg` file, or in environment variables, you can omit the id_type from the call: + + ctx = pyrax.create_context() + +If you have multiple **[environments](https://github.com/rackspace/pyrax/blob/master/docs/getting_started.md#configuration-environments)** defined, you may specify the environment to use when creating the context by specifying that name in the `env` parameter: + + ctx = pyrax.create_context(env="{my_special_environment}") + +If you don't specify an environment, the current environment is used. You may also populate the context object with login credential information, as well as the `verify_ssl` setting. The full call with all available parameters is: + + ctx = pyrax.create_context(id_type=None, env=None, username=None, + password=None, tenant_id=None, tenant_name=None, api_key=None, + verify_ssl=None) + +At this point you have an unauthenticated context. You must authenticate before you can do anything useful with a context object. To authenticate you need to provide your credentials if you haven't already when you created the object. You can either set them individually: + + ctx.username = {your_user_name} + ctx.password = {your_password} + +...or you can set them together: + + ctx.set_credentials({your_user_name}, {your_password}) + +...or if you have them stored in a file (see the information on **[credential files](https://github.com/rackspace/pyrax/blob/master/docs/getting_started.md#authenticating)** for how to set one up), you can call: + + ctx.set_credential_file({path/to/your/file}) + +After you have set your credentials, you call: + + ctx.authenticate() + +This submits your credentials, and assuming that they are valid, get back a Service Catalog that contains all of the services and regions that the authenticated user is authorized to use. + +If you have your password stored in your system's keychain, you can set your credentials and authenticate with a single call: + + ctx.keyring_auth({username}) + + +## Working With Context Objects + +Once you have an authenticated context object, you can work with the various services (e.g., object storage, compute, databases) for each region that your provider offers. Examples of regions for Rackspace are **"DFW"**, **"LON"**, **"SYD"**, while HP offers regions such as **"region-a.geo-1"** and **"region-b.geo-1"**. + +Many OpenStack installations only have a single region. In those cases it might seem a little annoying to have to include that. + +### Service Names + +The various services are known by several types of names: descriptive names, project code names, and vendor product names. For example, the **compute** service is known within OpenStack as project **nova**, at Rackspace as the **Cloud Servers** product, and at HP as the **Cloud Compute** product. The descriptive name is the one that is used in these docs, but it is common for developers to use the other variations. The older versions of pyrax (before 1.8.0) primarily used the Rackspace-branded name for the service. + +Pyrax accepts any of these different names as aliases for the services. Here is a partial list of these aliases for many of the current services: + +Code Name | Service Name +---- | ---- +nova | compute +cloudservers | compute +swift | object_store +cloudfiles | object_store +cloud_loadbalancers | load_balancer +trove | database +cloud_databases | database +cinder | volume +cloud_blockstorage | volume +designate | dns +cloud_dns | dns +neutron | network +cloud_networks | network +glance | image +images | image +marconi | queues +queues | queues +cloud_monitoring | monitor +autoscale | autoscale + +### Getting a Client + +The simplest way to get a client is to call: + + client = ctx.get_client({service}, {region}) + +For example, if you want a client to interact with your servers in the ORD region of Rackspace, you call: + + srvr_ord = ctx.get_client("compute", "ORD") + servers = srvr_ord.list() + +The following two statements behave identically, as pyrax maps the code names to the actual service names: + + srvr_ord = ctx.get_client("nova", "ORD") + srvr_ord = ctx.get_client("cloudservers", "ORD") + +Once you have the client, you use it as you would use clients in prior versions of pyrax. As an example, once you have `srvr_ord` defined above, to get a list of your servers in that region, you call: + + servers = srvr_ord.list() + +#### Private (Internal) Clients + +Some services offer internal URLs; these are typically used for communication between resources within the same datacenter. If you are working within a datacenter, these are typically more efficient and reduce or eliminate bandwidth charges with many commercial providers. A typical use case is storing objects in swift from a compute resource in the same datacenter. + +To get a client that works with the internal URL, add the parameter `public=False` to the `get_client()` call: + + storage_ord = ctx.get_client("object_store", "ORD", public=False) + +If there is no internal URL defined for the service, a **`NoEndpointForService`** exception is raised. + +## Shortcuts + +Context objects provide convenient ways to access the clients in order to make working with pyrax simpler. You can use standard dot notation to define your clients: + + srvr_ord = ctx.compute.ORD.client + # - or - + srvr_ord = ctx.ORD.compute.client + +The ordering of service.region and region.service isn't important; either one resolves to the client for that service/region combination. + +Another use of this notation is to get an object with all the services in a given region: + + syd_svcs = ctx.SYD + server_clt = syd_svcs.compute.client + db_clt = syd_svcs.database.client + +Note that the context object _must_ be authenticated before you attempt to access it using dot notation as described here. If the context has not been authenticated, a **`NotAuthenticated`** exception is raised. Also, regions containing periods in their name will not work as shortcuts, since those periods are interpreted by Python as object dot notation. If you're working with a region such as "**region-a.geo-1**", which is one of HP Cloud's regions, you will have to use standard dict syntax to access it: + + compute_client = ctx.compute["region-a.geo-1"].client diff --git a/docs/getting_started.md b/docs/getting_started.md index b4d607ba..06083a0e 100644 --- a/docs/getting_started.md +++ b/docs/getting_started.md @@ -38,6 +38,9 @@ Please note that **all versions of pyrax beginning with 1.4.0 require that you d 1. **Environment Variable** - If you don't have a configuration file, pyrax checks for the environment variable `CLOUD_ID_TYPE`. Set this by executing `export CLOUD_ID_TYPE=keystone` in a bash shell, or by setting it in the System section of the Control Panel in Windows. 1. **Set in Code** - if you can't do either of the above, change the import statement to add `pyrax.set_setting("identity_type", "keystone")` immediately after the `import pyrax` statement. +Note that if you are using the Rackspace Cloud, you would replace "keystone" in the above examples with "rackspace". + + ## Authenticating You can authenticate in any one of three ways: @@ -122,7 +125,7 @@ Please note that if you used `auth_with_token()` to authenticate originally, pyr ## Pyrax Configuration You can control how pyrax behaves through the configuration file. It should be named `~/.pyrax.cfg`. Like the credential file, `~/.pyrax.cfg` is a standard configuration file. Alternatively, you may set these values using environment variables in the OS. Note that the configuration file values take precendence over any environment variables. Environment variables also do not support multiple configurations. -Do **not** include login credentials, such as passwords, in the configuration file. As this is a defined file in a known location, it is a security risk to have your login information stored in clear text. You may use a [credential file](#authenticating) if you wish to store your credentials on disk; this can be named whatever you wish, and placed anywhere on disk, since you pass the full path to the file when authenticating this way. Please note that credentials stored in the configuration file will be ignored, and a warning will be issued if they are found. +**Do not include login credentials**, such as passwords, in the configuration file. As this is a defined file in a known location, it is a security risk to have your login information stored in clear text. You may use a [credential file](#authenticating) if you wish to store your credentials on disk; this can be named whatever you wish, and placed anywhere on disk, since you pass the full path to the file when authenticating this way. Please note that credentials stored in the configuration file will be ignored, and a warning will be issued if they are found. **NOTE**: At the very least, you *must* set the `identity_type` setting so that can use the correct identity class. Prior versions only worked with Rackspace identity, but that is no longer the case. If you don't want to use a configuration file or an environment variable, you can do this in code: @@ -160,6 +163,7 @@ Setting | Affects | Default | Notes | Env. Variable **custom_user_agent** | Customizes the User-agent string sent to the server. | -none- | | CLOUD_USER_AGENT **debug** | When True, causes all HTTP requests and responses to be output to the console to aid in debugging. | False | Previous versions called this setting 'http_debug'. | CLOUD_DEBUG **verify_ssl** | Set this to False to bypass SSL certificate verification. | True | | CLOUD_VERIFY_SSL +**use_servicenet** | By default your connection to Cloud Files uses the public internet. If you're connecting from a cloud server in the same region, though, you have the option of using the internal **Service Net** network connection, which is not only faster, but does not incur bandwidth charges for transfers within the datacenter. | False | | USE_SERVICENET Here is a sample: @@ -206,17 +210,32 @@ As of this writing, Rackspace has three cloud regions in the US: "DFW" (Dallas-F cs_dfw = pyrax.connect_to_cloudservers(region="DFW") cs_ord = pyrax.connect_to_cloudservers(region="ORD") cs_iad = pyrax.connect_to_cloudservers(region="IAD") - dfw_servers = cs_dfw.servers.list() - ord_servers = cs_ord.servers.list() - iad_servers = cs_iad.servers.list() + dfw_servers = cs_dfw.list() + ord_servers = cs_ord.list() + iad_servers = cs_iad.list() all_servers = dfw_servers + ord_servers + iad_servers The important point to keep in mind when dealing with multiple regions is that all of pyrax's `connect_to_*` methods take a region parameter, and return a region-specific object. If you do not explicitly include a region, the default region you defined in your config file is used. If you did not define a default region, pyrax defaults to the "DFW" region. +**Update as of Version 1.8.0**: Pyrax's new [*context objects*](https://github.com/rackspace/pyrax/blob/master/docs/context_objects.md) make it even easier to work with multiple regions. See that document for more in-depth information, but here is the code listed above re-written to use context objects to handle multiple regions: + + import pyrax + ctx = pyrax.create_context() + ctx.keyring_auth() + cs_dfw = ctx.DFW.compute.client + cs_ord = ctx.ORD.compute.client + cs_iad = ctx.IAD.compute.client + dfw_servers = cs_dfw.list() + ord_servers = cs_ord.list() + iad_servers = cs_iad.list() + all_servers = dfw_servers + ord_servers + iad_servers + ## The `Identity` Class pyrax has an `Identity` class that is used to handle authentication and cache credentials. You can access it in your code using the reference `pyrax.identity`. Once authenticated, it stores your credentials and authentication token information. In most cases you do not need to interact with this object directly; pyrax uses it to handle authentication tasks for you. But it is available in case you need more fine-grained control of the authentication process, such as querying endpoints in different regions, or getting a list of user roles. +As of Version 1.8.0 of pyrax, the concept of [**context objects**](https://github.com/rackspace/pyrax/docs/context_objects.md) that encapsulate all of the identity and clients for a given login can be used. + You can check its `authenticated` attribute to determine if authentication was successful; if so, its `token` and `expires` attributes contain the returned authentication information, and its `services` attribute contains a dict with all the service endpoint information. Here is an example of the contents of `services` after authentication (with identifying information obscured): {u'access': diff --git a/docs/html/____init_____8py.html b/docs/html/____init_____8py.html index b041f278..ddcab268 100644 --- a/docs/html/____init_____8py.html +++ b/docs/html/____init_____8py.html @@ -109,6 +109,8 @@  Changes the value of the specified key in the current environment, or in another environment if specified.
def set_default_region  Changes the default_region setting.
+def create_context + Returns an instance of the specified identity class, or if none is specified, an instance of the current setting for 'identity_class'.
def auth_with_token  If you already have a valid token and either a tenant ID or name, you can call this to configure the identity and available services.
def set_credentials @@ -147,6 +149,8 @@  Creates a client for working with Images.
def connect_to_queues  Creates a client for working with Queues.
+def client_class_for_service + Returns the client class registered for the given service, or None if there is no such service, or if no class has been registered.
def get_http_debug def set_http_debug def get_encoding @@ -199,7 +203,7 @@ diff --git a/docs/html/annotated.html b/docs/html/annotated.html index 107aa2e1..3f5851fe 100644 --- a/docs/html/annotated.html +++ b/docs/html/annotated.html @@ -93,8 +93,8 @@ AutoScalePolicy AutoScaleWebhook BadRequestHTTP 400 - Bad request: you sent some malformed data - BaseAuthThis class handles all of the basic authentication requirements for working with an OpenStack Cloud system BaseClientThe base class for all pyrax clients + BaseIdentityThis class handles all of the basic authentication requirements for working with an OpenStack Cloud system BaseManagerManagers interact with a particular type of API (servers, databases, dns, etc.) and provide CRUD operations for them BaseQueueManagerThis class attempts to add in all the common deviations from the API standards that the regular base classes are based on BaseResourceA resource represents a particular instance of an object (server, flavor, etc) @@ -157,8 +157,10 @@ DomainRecordUpdateFailed DomainResultsIteratorResultsIterator subclass for iterating over all domains DomainUpdateFailed + DotDictDictionary subclass that allows accessing keys via dot notation DuplicateQueue DuplicateUser + EndpointHolds the endpoint information, as well as an instance of the appropriate client for that service and region EndpointNotDefined EndpointNotFound EnvironmentNotFound @@ -190,12 +192,13 @@ FakeDNSManager FakeDNSPTRRecord FakeDNSRecord + FakeEndpoint FakeEntity - FakeEntryPoint FakeException FakeFolderUploader FakeIdentityClass that returns canned authentication responses FakeIdentityResponse + FakeIdentityService FakeImage FakeImageClient FakeImageManager @@ -212,13 +215,12 @@ FakeQueueClaim FakeQueueClient FakeQueueManager - FakeQueueMessage + FakeRaxIdentity FakeResponse FakeScalingGroup FakeScalingGroupManager FakeServer FakeService - FakeServiceCatalog FakeStatusChanger FakeStorageObject FakeVirtualIP @@ -289,10 +291,14 @@ NetworkInUse NetworkLabelNotUnique NetworkNotFound + NoClientForService NodeRepresents a Node for a Load Balancer + NoEndpointForRegion + NoEndpointForService NoMoreResults NoReloadError NoSSLTerminationConfiguration + NoSuchClient NoSuchContainer NoSuchDatabase NoSuchDatabaseUser @@ -320,10 +326,12 @@ RaxIdentityThis class handles all of the authentication requirements for working with the Rackspace Cloud RecordResultsIteratorResultsIterator subclass for iterating over all domain records ResultsIteratorThis object will iterate over all the results for a given type of listing, no matter how many items exist + Role ScalingGroup ScalingGroupManager SelfDeletingTempDirectoryConvenience class for dealing with temporary folders and the files within them SelfDeletingTempfileConvenience class for dealing with temporary files + ServiceRepresents an available service from the service catalog ServiceCatalogHelper methods for dealing with a Keystone Service Catalog ServiceNotAvailable ServiceResponseFailure @@ -365,7 +373,7 @@ diff --git a/docs/html/base__identity_8py.html b/docs/html/base__identity_8py.html index 75bce60a..40ed3dbd 100644 --- a/docs/html/base__identity_8py.html +++ b/docs/html/base__identity_8py.html @@ -88,18 +88,25 @@ Classes class  Tenant class  User -class  BaseAuth - This class handles all of the basic authentication requirements for working with an OpenStack Cloud system. More...
+class  Role +class  Service + Represents an available service from the service catalog. More...
+class  Endpoint + Holds the endpoint information, as well as an instance of the appropriate client for that service and region. More...
+class  BaseIdentity + This class handles all of the basic authentication requirements for working with an OpenStack Cloud system. More...

Packages

namespace  pyrax::base_identity

Variables

keyring = None string _pat = r"" string _utc_pat = r"" tuple API_DATE_PATTERN = re.compile(_pat, re.VERBOSE) tuple UTC_API_DATE_PATTERN = re.compile(_utc_pat, re.VERBOSE) string DATE_FORMAT = "%Y-%m-%d %H:%M:%S" + default_region = None @@ -119,7 +126,7 @@ diff --git a/docs/html/classes.html b/docs/html/classes.html index c7efa75e..c72415d0 100644 --- a/docs/html/classes.html +++ b/docs/html/classes.html @@ -85,88 +85,91 @@
A | B | C | D | E | F | H | I | J | K | M | N | O | P | Q | R | S | T | U | V | _
+ + + + + - - - - - - - - - + + + + - - - - - - - - + + + + + + + + - - - - - + + - - + + + + + - - - - - - - - - + + + + + + + + - - - - + + + - - - - - - - - - - + + + + + + + + + - - - - - - - + + + + + + - - - - + + + + + + + +
  A  
-
CloudMonitorOverviewManager (pyrax.cloudmonitoring)   FakeIdentity (pyrax.fakes)   InvalidMonitoringCheckUpdate (pyrax.exceptions)   
  P  
+
CloudNetwork (pyrax.cloudnetworks)   FakeIdentityService (pyrax.fakes)   InvalidNodeParameters (pyrax.exceptions)   ProtocolMismatch (pyrax.exceptions)   
CloudNetworkClient (pyrax.cloudnetworks)   FakeImage (pyrax.fakes)   InvalidPTRRecord (pyrax.exceptions)   PTRRecordCreationFailed (pyrax.exceptions)   
AccessListIDNotFound (pyrax.exceptions)   CloudNetworkManager (pyrax.cloudnetworks)   FakeImageClient (pyrax.fakes)   InvalidQueueName (pyrax.exceptions)   PTRRecordDeletionFailed (pyrax.exceptions)   
AmbiguousEndpoints (pyrax.exceptions)   Connection (pyrax.cf_wrapper.client)   FakeImageManager (pyrax.fakes)   InvalidSessionPersistenceType (pyrax.exceptions)   PTRRecordUpdateFailed (pyrax.exceptions)   
AuthenticationFailed (pyrax.exceptions)   Container (pyrax.cf_wrapper.container)   FakeImageMemberManager (pyrax.fakes)   InvalidSetting (pyrax.exceptions)   PyraxException (pyrax.exceptions)   
AuthorizationFailure (pyrax.exceptions)   
  D  
+
FakeImageTagManager (pyrax.fakes)   InvalidSize (pyrax.exceptions)   
  Q  
CloudMonitorZone (pyrax.cloudmonitoring)   FakeIdentityResponse (pyrax.fakes)   InvalidMonitoringMetricsRequest (pyrax.exceptions)   
AccessListIDNotFound (pyrax.exceptions)   CloudNetwork (pyrax.cloudnetworks)   FakeImage (pyrax.fakes)   InvalidMonitoringMetricsResolution (pyrax.exceptions)   PasswordChangeFailed (pyrax.exceptions)   
AmbiguousEndpoints (pyrax.exceptions)   CloudNetworkClient (pyrax.cloudnetworks)   FakeImageClient (pyrax.fakes)   InvalidNodeCondition (pyrax.exceptions)   ProtocolMismatch (pyrax.exceptions)   
AuthenticationFailed (pyrax.exceptions)   CloudNetworkManager (pyrax.cloudnetworks)   FakeImageManager (pyrax.fakes)   InvalidNodeParameters (pyrax.exceptions)   PTRRecordCreationFailed (pyrax.exceptions)   
AuthorizationFailure (pyrax.exceptions)   Connection (pyrax.cf_wrapper.client)   FakeImageMemberManager (pyrax.fakes)   InvalidPTRRecord (pyrax.exceptions)   PTRRecordDeletionFailed (pyrax.exceptions)   
AuthSystemNotFound (pyrax.exceptions)   Container (pyrax.cf_wrapper.container)   FakeImageTagManager (pyrax.fakes)   InvalidQueueName (pyrax.exceptions)   PTRRecordUpdateFailed (pyrax.exceptions)   
AutoScaleClient (pyrax.autoscale)   
  D  
-
FakeKeyring (pyrax.fakes)   InvalidSessionPersistenceType (pyrax.exceptions)   PyraxException (pyrax.exceptions)   
AutoScalePolicy (pyrax.autoscale)   FakeLoadBalancer (pyrax.fakes)   InvalidSetting (pyrax.exceptions)   
  Q  
-
AutoScaleWebhook (pyrax.autoscale)   DBUpdateUnchanged (pyrax.exceptions)   FakeLoadBalancerClient (pyrax.fakes)   InvalidSize (pyrax.exceptions)   
AuthSystemNotFound (pyrax.exceptions)   FakeKeyring (pyrax.fakes)   InvalidTemporaryURLMethod (pyrax.exceptions)   
AutoScaleClient (pyrax.autoscale)   DBUpdateUnchanged (pyrax.exceptions)   FakeLoadBalancer (pyrax.fakes)   InvalidUploadID (pyrax.exceptions)   Queue (pyrax.queueing)   
AutoScalePolicy (pyrax.autoscale)   DNSCallTimedOut (pyrax.exceptions)   FakeLoadBalancerClient (pyrax.fakes)   InvalidVirtualIPType (pyrax.exceptions)   QueueClaim (pyrax.queueing)   
AutoScaleWebhook (pyrax.autoscale)   DomainCreationFailed (pyrax.exceptions)   FakeLoadBalancerManager (pyrax.fakes)   InvalidVirtualIPVersion (pyrax.exceptions)   QueueClaimManager (pyrax.queueing)   
  B  
-
DNSCallTimedOut (pyrax.exceptions)   FakeLoadBalancerManager (pyrax.fakes)   InvalidTemporaryURLMethod (pyrax.exceptions)   Queue (pyrax.queueing)   
DomainCreationFailed (pyrax.exceptions)   FakeManager (pyrax.fakes)   InvalidUploadID (pyrax.exceptions)   QueueClaim (pyrax.queueing)   
BadRequest (pyrax.exceptions)   DomainDeletionFailed (pyrax.exceptions)   FakeNode (pyrax.fakes)   InvalidVirtualIPType (pyrax.exceptions)   QueueClaimManager (pyrax.queueing)   
BaseAuth (pyrax.base_identity)   DomainRecordAdditionFailed (pyrax.exceptions)   FakeNovaVolumeClient (pyrax.fakes)   InvalidVirtualIPVersion (pyrax.exceptions)   QueueClient (pyrax.queueing)   
BaseClient (pyrax.client)   DomainRecordDeletionFailed (pyrax.exceptions)   FakeQueue (pyrax.fakes)   InvalidVolumeResize (pyrax.exceptions)   QueueClientIDNotDefined (pyrax.exceptions)   
BaseManager (pyrax.manager)   DomainRecordNotFound (pyrax.exceptions)   FakeQueueClaim (pyrax.fakes)   
  J  
-
QueueManager (pyrax.queueing)   
BaseQueueManager (pyrax.queueing)   DomainRecordNotUnique (pyrax.exceptions)   FakeQueueClient (pyrax.fakes)   QueueMessage (pyrax.queueing)   
BaseResource (pyrax.resource)   DomainRecordUpdateFailed (pyrax.exceptions)   FakeQueueManager (pyrax.fakes)   JSONSchemaManager (pyrax.image)   QueueMessageManager (pyrax.queueing)   
BulkDeleter (pyrax.cf_wrapper.client)   DomainResultsIterator (pyrax.clouddns)   FakeQueueMessage (pyrax.fakes)   
  K  
-
  R  
+
DomainDeletionFailed (pyrax.exceptions)   FakeManager (pyrax.fakes)   InvalidVolumeResize (pyrax.exceptions)   QueueClient (pyrax.queueing)   
DomainRecordAdditionFailed (pyrax.exceptions)   FakeNode (pyrax.fakes)   
  J  
+
QueueClientIDNotDefined (pyrax.exceptions)   
BadRequest (pyrax.exceptions)   DomainRecordDeletionFailed (pyrax.exceptions)   FakeNovaVolumeClient (pyrax.fakes)   QueueManager (pyrax.queueing)   
BaseClient (pyrax.client)   DomainRecordNotFound (pyrax.exceptions)   FakeQueue (pyrax.fakes)   JSONSchemaManager (pyrax.image)   QueueMessage (pyrax.queueing)   
BaseIdentity (pyrax.base_identity)   DomainRecordNotUnique (pyrax.exceptions)   FakeQueueClaim (pyrax.fakes)   
  K  
+
QueueMessageManager (pyrax.queueing)   
BaseManager (pyrax.manager)   DomainRecordUpdateFailed (pyrax.exceptions)   FakeQueueClient (pyrax.fakes)   
  R  
BaseQueueManager (pyrax.queueing)   DomainResultsIterator (pyrax.clouddns)   FakeQueueManager (pyrax.fakes)   KeyringModuleNotInstalled (pyrax.exceptions)   
BaseResource (pyrax.resource)   DomainUpdateFailed (pyrax.exceptions)   FakeRaxIdentity (pyrax.fakes)   KeyringPasswordNotFound (pyrax.exceptions)   RaxIdentity (pyrax.identity.rax_identity)   
BulkDeleter (pyrax.cf_wrapper.client)   DotDict (pyrax.utils)   FakeResponse (pyrax.fakes)   KeyringUsernameMissing (pyrax.exceptions)   RecordResultsIterator (pyrax.clouddns)   
  C  
-
DomainUpdateFailed (pyrax.exceptions)   FakeResponse (pyrax.fakes)   
DuplicateQueue (pyrax.exceptions)   FakeScalingGroup (pyrax.fakes)   KeyringModuleNotInstalled (pyrax.exceptions)   RaxIdentity (pyrax.identity.rax_identity)   
CDNFailed (pyrax.exceptions)   DuplicateUser (pyrax.exceptions)   FakeScalingGroupManager (pyrax.fakes)   KeyringPasswordNotFound (pyrax.exceptions)   RecordResultsIterator (pyrax.clouddns)   
CFClient (pyrax.cf_wrapper.client)   
  E  
-
FakeServer (pyrax.fakes)   KeyringUsernameMissing (pyrax.exceptions)   ResultsIterator (pyrax.clouddns)   
ClientException (pyrax.exceptions)   FakeService (pyrax.fakes)   KeystoneIdentity (pyrax.identity.keystone_identity)   
  S  
-
CloudBlockStorageClient (pyrax.cloudblockstorage)   EndpointNotDefined (pyrax.exceptions)   FakeServiceCatalog (pyrax.fakes)   
  M  
+
DuplicateQueue (pyrax.exceptions)   FakeScalingGroup (pyrax.fakes)   KeystoneIdentity (pyrax.identity.keystone_identity)   ResultsIterator (pyrax.clouddns)   
DuplicateUser (pyrax.exceptions)   FakeScalingGroupManager (pyrax.fakes)   
  M  
+
Role (pyrax.base_identity)   
CDNFailed (pyrax.exceptions)   
  E  
+
FakeServer (pyrax.fakes)   
  S  
CloudBlockStorageManager (pyrax.cloudblockstorage)   EndpointNotFound (pyrax.exceptions)   FakeStatusChanger (pyrax.fakes)   ScalingGroup (pyrax.autoscale)   
CloudBlockStorageSnapshot (pyrax.cloudblockstorage)   EnvironmentNotFound (pyrax.exceptions)   FakeStorageObject (pyrax.fakes)   MissingAuthSettings (pyrax.exceptions)   ScalingGroupManager (pyrax.autoscale)   
CFClient (pyrax.cf_wrapper.client)   FakeService (pyrax.fakes)   MissingAuthSettings (pyrax.exceptions)   
ClientException (pyrax.exceptions)   Endpoint (pyrax.base_identity)   FakeStatusChanger (pyrax.fakes)   MissingClaimParameters (pyrax.exceptions)   ScalingGroup (pyrax.autoscale)   
CloudBlockStorageClient (pyrax.cloudblockstorage)   EndpointNotDefined (pyrax.exceptions)   FakeStorageObject (pyrax.fakes)   MissingDBUserParameters (pyrax.exceptions)   ScalingGroupManager (pyrax.autoscale)   
CloudBlockStorageManager (pyrax.cloudblockstorage)   EndpointNotFound (pyrax.exceptions)   FakeVirtualIP (pyrax.fakes)   MissingDNSSettings (pyrax.exceptions)   SelfDeletingTempDirectory (pyrax.utils)   
CloudBlockStorageSnapshot (pyrax.cloudblockstorage)   EnvironmentNotFound (pyrax.exceptions)   Fault (pyrax.cf_wrapper.container)   MissingHealthMonitorSettings (pyrax.exceptions)   SelfDeletingTempfile (pyrax.utils)   
CloudBlockStorageSnapshotManager (pyrax.cloudblockstorage)   
  F  
-
FakeVirtualIP (pyrax.fakes)   MissingClaimParameters (pyrax.exceptions)   SelfDeletingTempDirectory (pyrax.utils)   
CloudBlockStorageVolume (pyrax.cloudblockstorage)   Fault (pyrax.cf_wrapper.container)   MissingDBUserParameters (pyrax.exceptions)   SelfDeletingTempfile (pyrax.utils)   
CloudBlockStorageVolumeType (pyrax.cloudblockstorage)   FakeAutoScaleClient (pyrax.fakes)   FileNotFound (pyrax.exceptions)   MissingDNSSettings (pyrax.exceptions)   ServiceCatalog (pyrax.service_catalog)   
CloudDatabaseBackup (pyrax.clouddatabases)   FakeAutoScalePolicy (pyrax.fakes)   FlavorNotFound (pyrax.exceptions)   MissingHealthMonitorSettings (pyrax.exceptions)   ServiceNotAvailable (pyrax.exceptions)   
CloudDatabaseBackupManager (pyrax.clouddatabases)   FakeAutoScaleWebhook (pyrax.fakes)   FolderNotFound (pyrax.exceptions)   MissingLoadBalancerParameters (pyrax.exceptions)   ServiceResponseFailure (pyrax.exceptions)   
CloudDatabaseClient (pyrax.clouddatabases)   FakeBlockStorageClient (pyrax.fakes)   FolderUploader (pyrax.cf_wrapper.client)   MissingMonitoringCheckDetails (pyrax.exceptions)   Settings (pyrax)   
CloudDatabaseDatabase (pyrax.clouddatabases)   FakeBlockStorageManager (pyrax.fakes)   Forbidden (pyrax.exceptions)   MissingMonitoringCheckGranularity (pyrax.exceptions)   SnapshotNotAvailable (pyrax.exceptions)   
CloudDatabaseDatabaseManager (pyrax.clouddatabases)   FakeBlockStorageSnapshot (pyrax.fakes)   
  H  
-
MissingName (pyrax.exceptions)   StorageObject (pyrax.cf_wrapper.storage_object)   
CloudDatabaseFlavor (pyrax.clouddatabases)   FakeBlockStorageVolume (pyrax.fakes)   MissingTemporaryURLKey (pyrax.exceptions)   SubdomainResultsIterator (pyrax.clouddns)   
CloudDatabaseInstance (pyrax.clouddatabases)   FakeBulkDeleter (pyrax.fakes)   HTTPNotImplemented (pyrax.exceptions)   MonitoringCheckTargetNotSpecified (pyrax.exceptions)   
  T  
+
FileNotFound (pyrax.exceptions)   MissingLoadBalancerParameters (pyrax.exceptions)   Service (pyrax.base_identity)   
CloudBlockStorageVolume (pyrax.cloudblockstorage)   FlavorNotFound (pyrax.exceptions)   MissingMonitoringCheckDetails (pyrax.exceptions)   ServiceCatalog (pyrax.service_catalog)   
CloudBlockStorageVolumeType (pyrax.cloudblockstorage)   FakeAutoScaleClient (pyrax.fakes)   FolderNotFound (pyrax.exceptions)   MissingMonitoringCheckGranularity (pyrax.exceptions)   ServiceNotAvailable (pyrax.exceptions)   
CloudDatabaseBackup (pyrax.clouddatabases)   FakeAutoScalePolicy (pyrax.fakes)   FolderUploader (pyrax.cf_wrapper.client)   MissingName (pyrax.exceptions)   ServiceResponseFailure (pyrax.exceptions)   
CloudDatabaseBackupManager (pyrax.clouddatabases)   FakeAutoScaleWebhook (pyrax.fakes)   Forbidden (pyrax.exceptions)   MissingTemporaryURLKey (pyrax.exceptions)   Settings (pyrax)   
CloudDatabaseClient (pyrax.clouddatabases)   FakeBlockStorageClient (pyrax.fakes)   
  H  
+
MonitoringCheckTargetNotSpecified (pyrax.exceptions)   SnapshotNotAvailable (pyrax.exceptions)   
CloudDatabaseDatabase (pyrax.clouddatabases)   FakeBlockStorageManager (pyrax.fakes)   MonitoringZonesPollMissing (pyrax.exceptions)   StorageObject (pyrax.cf_wrapper.storage_object)   
CloudDatabaseDatabaseManager (pyrax.clouddatabases)   FakeBlockStorageSnapshot (pyrax.fakes)   HTTPNotImplemented (pyrax.exceptions)   
  N  
+
SubdomainResultsIterator (pyrax.clouddns)   
CloudDatabaseFlavor (pyrax.clouddatabases)   FakeBlockStorageVolume (pyrax.fakes)   
  I  
+
  T  
CloudDatabaseManager (pyrax.clouddatabases)   FakeClient (pyrax.fakes)   
  I  
-
MonitoringZonesPollMissing (pyrax.exceptions)   
CloudDatabaseUser (pyrax.clouddatabases)   FakeCloudMonitorCheck (pyrax.fakes)   
  N  
-
Tenant (pyrax.base_identity)   
CloudDatabaseUserManager (pyrax.clouddatabases)   FakeCloudMonitorClient (pyrax.fakes)   IdentityClassNotDefined (pyrax.exceptions)   TenantNotFound (pyrax.exceptions)   
CloudDatabaseVolume (pyrax.clouddatabases)   FakeCloudMonitorEntity (pyrax.fakes)   Image (pyrax.image)   NetworkCIDRInvalid (pyrax.exceptions)   
  U  
+
CloudDatabaseInstance (pyrax.clouddatabases)   FakeBulkDeleter (pyrax.fakes)   NetworkCIDRInvalid (pyrax.exceptions)   
CloudDatabaseManager (pyrax.clouddatabases)   FakeClient (pyrax.fakes)   IdentityClassNotDefined (pyrax.exceptions)   NetworkCIDRMalformed (pyrax.exceptions)   Tenant (pyrax.base_identity)   
CloudDatabaseUser (pyrax.clouddatabases)   FakeCloudMonitorCheck (pyrax.fakes)   Image (pyrax.image)   NetworkCountExceeded (pyrax.exceptions)   TenantNotFound (pyrax.exceptions)   
CloudDatabaseUserManager (pyrax.clouddatabases)   FakeCloudMonitorClient (pyrax.fakes)   ImageClient (pyrax.image)   NetworkInUse (pyrax.exceptions)   
  U  
CloudDNSClient (pyrax.clouddns)   FakeCloudMonitorNotification (pyrax.fakes)   ImageClient (pyrax.image)   NetworkCIDRMalformed (pyrax.exceptions)   
CloudDNSDomain (pyrax.clouddns)   FakeCloudNetwork (pyrax.fakes)   ImageManager (pyrax.image)   NetworkCountExceeded (pyrax.exceptions)   UnattachedNode (pyrax.exceptions)   
CloudDNSManager (pyrax.clouddns)   FakeCloudNetworkClient (pyrax.fakes)   ImageMember (pyrax.image)   NetworkInUse (pyrax.exceptions)   UnattachedVirtualIP (pyrax.exceptions)   
CloudDNSPTRRecord (pyrax.clouddns)   FakeContainer (pyrax.fakes)   ImageMemberManager (pyrax.image)   NetworkLabelNotUnique (pyrax.exceptions)   Unauthorized (pyrax.exceptions)   
CloudDNSRecord (pyrax.clouddns)   FakeCSClient (pyrax.fakes)   ImageTag (pyrax.image)   NetworkNotFound (pyrax.exceptions)   UnicodePathError (pyrax.exceptions)   
CloudLoadBalancer (pyrax.cloudloadbalancers)   FakeDatabaseClient (pyrax.fakes)   ImageTagManager (pyrax.image)   Node (pyrax.cloudloadbalancers)   UnsharableImage (pyrax.exceptions)   
CloudLoadBalancerClient (pyrax.cloudloadbalancers)   FakeDatabaseInstance (pyrax.fakes)   ImageTask (pyrax.image)   NoMoreResults (pyrax.exceptions)   UploadFailed (pyrax.exceptions)   
CloudLoadBalancerManager (pyrax.cloudloadbalancers)   FakeDatabaseManager (pyrax.fakes)   ImageTasksManager (pyrax.image)   NoReloadError (pyrax.exceptions)   User (pyrax.base_identity)   
CloudMonitorAlarm (pyrax.cloudmonitoring)   FakeDatabaseUser (pyrax.fakes)   InternalServerError (pyrax.exceptions)   NoSSLTerminationConfiguration (pyrax.exceptions)   UserNotFound (pyrax.exceptions)   
CloudMonitorChangelogManager (pyrax.cloudmonitoring)   FakeDatabaseVolume (pyrax.fakes)   InvalidCDNMetadata (pyrax.exceptions)   NoSuchContainer (pyrax.exceptions)   
  V  
+
CloudDatabaseVolume (pyrax.clouddatabases)   FakeCloudMonitorEntity (pyrax.fakes)   ImageManager (pyrax.image)   NetworkLabelNotUnique (pyrax.exceptions)   
CloudDNSClient (pyrax.clouddns)   FakeCloudMonitorNotification (pyrax.fakes)   ImageMember (pyrax.image)   NetworkNotFound (pyrax.exceptions)   UnattachedNode (pyrax.exceptions)   
CloudDNSDomain (pyrax.clouddns)   FakeCloudNetwork (pyrax.fakes)   ImageMemberManager (pyrax.image)   NoClientForService (pyrax.exceptions)   UnattachedVirtualIP (pyrax.exceptions)   
CloudDNSManager (pyrax.clouddns)   FakeCloudNetworkClient (pyrax.fakes)   ImageTag (pyrax.image)   Node (pyrax.cloudloadbalancers)   Unauthorized (pyrax.exceptions)   
CloudDNSPTRRecord (pyrax.clouddns)   FakeContainer (pyrax.fakes)   ImageTagManager (pyrax.image)   NoEndpointForRegion (pyrax.exceptions)   UnicodePathError (pyrax.exceptions)   
CloudDNSRecord (pyrax.clouddns)   FakeCSClient (pyrax.fakes)   ImageTask (pyrax.image)   NoEndpointForService (pyrax.exceptions)   UnsharableImage (pyrax.exceptions)   
CloudLoadBalancer (pyrax.cloudloadbalancers)   FakeDatabaseClient (pyrax.fakes)   ImageTasksManager (pyrax.image)   NoMoreResults (pyrax.exceptions)   UploadFailed (pyrax.exceptions)   
CloudLoadBalancerClient (pyrax.cloudloadbalancers)   FakeDatabaseInstance (pyrax.fakes)   InternalServerError (pyrax.exceptions)   NoReloadError (pyrax.exceptions)   User (pyrax.base_identity)   
CloudLoadBalancerManager (pyrax.cloudloadbalancers)   FakeDatabaseManager (pyrax.fakes)   InvalidCDNMetadata (pyrax.exceptions)   NoSSLTerminationConfiguration (pyrax.exceptions)   UserNotFound (pyrax.exceptions)   
CloudMonitorAlarm (pyrax.cloudmonitoring)   FakeDatabaseUser (pyrax.fakes)   InvalidConfigurationFile (pyrax.exceptions)   NoSuchClient (pyrax.exceptions)   
  V  
CloudMonitorCheck (pyrax.cloudmonitoring)   FakeDNSClient (pyrax.fakes)   InvalidConfigurationFile (pyrax.exceptions)   NoSuchDatabase (pyrax.exceptions)   
CloudMonitorCheckType (pyrax.cloudmonitoring)   FakeDNSDevice (pyrax.fakes)   InvalidCredentialFile (pyrax.exceptions)   NoSuchDatabaseUser (pyrax.exceptions)   VirtualIP (pyrax.cloudloadbalancers)   
CloudMonitorClient (pyrax.cloudmonitoring)   FakeDNSDomain (pyrax.fakes)   InvalidDateTimeString (pyrax.exceptions)   NoSuchObject (pyrax.exceptions)   VolumeAttachmentFailed (pyrax.exceptions)   
CloudMonitorEntity (pyrax.cloudmonitoring)   FakeDNSManager (pyrax.fakes)   InvalidDeviceType (pyrax.exceptions)   NotAuthenticated (pyrax.exceptions)   VolumeCloneTooSmall (pyrax.exceptions)   
CloudMonitorEntityManager (pyrax.cloudmonitoring)   FakeDNSPTRRecord (pyrax.fakes)   InvalidEmail (pyrax.exceptions)   NotCDNEnabled (pyrax.exceptions)   VolumeDetachmentFailed (pyrax.exceptions)   
CloudMonitorNotification (pyrax.cloudmonitoring)   FakeDNSRecord (pyrax.fakes)   InvalidImageMember (pyrax.exceptions)   NotFound (pyrax.exceptions)   VolumeNotAvailable (pyrax.exceptions)   
CloudMonitorNotificationManager (pyrax.cloudmonitoring)   FakeEntity (pyrax.fakes)   InvalidImageMemberStatus (pyrax.exceptions)   NoTokenLookupException (pyrax.exceptions)   
  _  
+
CloudMonitorChangelogManager (pyrax.cloudmonitoring)   FakeDatabaseVolume (pyrax.fakes)   InvalidCredentialFile (pyrax.exceptions)   NoSuchContainer (pyrax.exceptions)   
CloudMonitorCheck (pyrax.cloudmonitoring)   FakeDNSClient (pyrax.fakes)   InvalidDateTimeString (pyrax.exceptions)   NoSuchDatabase (pyrax.exceptions)   VirtualIP (pyrax.cloudloadbalancers)   
CloudMonitorCheckType (pyrax.cloudmonitoring)   FakeDNSDevice (pyrax.fakes)   InvalidDeviceType (pyrax.exceptions)   NoSuchDatabaseUser (pyrax.exceptions)   VolumeAttachmentFailed (pyrax.exceptions)   
CloudMonitorClient (pyrax.cloudmonitoring)   FakeDNSDomain (pyrax.fakes)   InvalidEmail (pyrax.exceptions)   NoSuchObject (pyrax.exceptions)   VolumeCloneTooSmall (pyrax.exceptions)   
CloudMonitorEntity (pyrax.cloudmonitoring)   FakeDNSManager (pyrax.fakes)   InvalidImageMember (pyrax.exceptions)   NotAuthenticated (pyrax.exceptions)   VolumeDetachmentFailed (pyrax.exceptions)   
CloudMonitorEntityManager (pyrax.cloudmonitoring)   FakeDNSPTRRecord (pyrax.fakes)   InvalidImageMemberStatus (pyrax.exceptions)   NotCDNEnabled (pyrax.exceptions)   VolumeNotAvailable (pyrax.exceptions)   
CloudMonitorNotification (pyrax.cloudmonitoring)   FakeDNSRecord (pyrax.fakes)   InvalidLoadBalancer (pyrax.exceptions)   NotFound (pyrax.exceptions)   
  _  
CloudMonitorNotificationPlan (pyrax.cloudmonitoring)   FakeEntryPoint (pyrax.fakes)   InvalidLoadBalancer (pyrax.exceptions)   NoUniqueMatch (pyrax.exceptions)   
CloudMonitorNotificationPlanManager (pyrax.cloudmonitoring)   FakeException (pyrax.fakes)   InvalidLoadBalancerParameters (pyrax.exceptions)   
  O  
-
_WaitThread (pyrax.utils)   
CloudMonitorNotificationType (pyrax.cloudmonitoring)   FakeFolderUploader (pyrax.fakes)   InvalidMonitoringCheckDetails (pyrax.exceptions)   
OverLimit (pyrax.exceptions)   
CloudMonitorNotificationManager (pyrax.cloudmonitoring)   FakeEndpoint (pyrax.fakes)   InvalidLoadBalancerParameters (pyrax.exceptions)   NoTokenLookupException (pyrax.exceptions)   
CloudMonitorNotificationPlan (pyrax.cloudmonitoring)   FakeEntity (pyrax.fakes)   InvalidMonitoringCheckDetails (pyrax.exceptions)   NoUniqueMatch (pyrax.exceptions)   _WaitThread (pyrax.utils)   
CloudMonitorNotificationPlanManager (pyrax.cloudmonitoring)   FakeException (pyrax.fakes)   InvalidMonitoringCheckUpdate (pyrax.exceptions)   
  O  
+
CloudMonitorNotificationType (pyrax.cloudmonitoring)   FakeFolderUploader (pyrax.fakes)   InvalidMonitoringMetricsRequest (pyrax.exceptions)   
CloudMonitorOverviewManager (pyrax.cloudmonitoring)   FakeIdentity (pyrax.fakes)   InvalidMonitoringMetricsResolution (pyrax.exceptions)   OverLimit (pyrax.exceptions)   
CloudMonitorZone (pyrax.cloudmonitoring)   FakeIdentityResponse (pyrax.fakes)   InvalidNodeCondition (pyrax.exceptions)   
  P  
+
PasswordChangeFailed (pyrax.exceptions)   
A | B | C | D | E | F | H | I | J | K | M | N | O | P | Q | R | S | T | U | V | _
@@ -188,7 +191,7 @@ diff --git a/docs/html/classpyrax_1_1autoscale_1_1AutoScaleClient-members.html b/docs/html/classpyrax_1_1autoscale_1_1AutoScaleClient-members.html index 668781d3..81e8d1a3 100644 --- a/docs/html/classpyrax_1_1autoscale_1_1AutoScaleClient-members.html +++ b/docs/html/classpyrax_1_1autoscale_1_1AutoScaleClient-members.html @@ -111,6 +111,7 @@ get_timingsBaseClient get_webhookAutoScaleClient http_log_debugBaseClient + identityBaseClient listBaseClient list_policiesAutoScaleClient list_webhooksAutoScaleClient @@ -165,7 +166,7 @@ diff --git a/docs/html/classpyrax_1_1base__identity_1_1BaseIdentity-members.html b/docs/html/classpyrax_1_1base__identity_1_1BaseIdentity-members.html new file mode 100644 index 00000000..112ea5cb --- /dev/null +++ b/docs/html/classpyrax_1_1base__identity_1_1BaseIdentity-members.html @@ -0,0 +1,179 @@ + + + + + +pyrax: Member List + + + + + + + + + + + +
+ + +
+ + + + + + + + + + + +
+
pyrax + +
+
Python Bindings for the Rackspace Cloud
+
+
+ + + + + + +
+
+
+
BaseIdentity Member List
+
+
+This is the complete list of members for BaseIdentity, including all inherited members. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
__getattr__BaseIdentity
__init__BaseIdentity
add_role_to_userBaseIdentity
api_keyBaseIdentity
auth_endpointBaseIdentity
auth_endpointBaseIdentity
auth_tokenBaseIdentity
auth_with_tokenBaseIdentity
authenticateBaseIdentity
authenticatedBaseIdentity
check_tokenBaseIdentity
create_tenantBaseIdentity
create_userBaseIdentity
delete_role_from_userBaseIdentity
delete_tenantBaseIdentity
delete_userBaseIdentity
expiresBaseIdentity
find_user_by_emailBaseIdentity
find_user_by_idBaseIdentity
find_user_by_nameBaseIdentity
get_clientBaseIdentity
get_default_regionBaseIdentity
get_extensionsBaseIdentity
get_roleBaseIdentity
get_tenantBaseIdentity
get_tokenBaseIdentity
get_token_endpointsBaseIdentity
get_userBaseIdentity
http_log_debugBaseIdentity
keyring_authBaseIdentity
list_credentialsBaseIdentity
list_rolesBaseIdentity
list_roles_for_userBaseIdentity
list_tenantsBaseIdentity
list_tokensBaseIdentity
list_usersBaseIdentity
method_deleteBaseIdentity
method_getBaseIdentity
method_headBaseIdentity
method_patchBaseIdentity
method_postBaseIdentity
method_putBaseIdentity
passwordBaseIdentity
regionBaseIdentity
regionsBaseIdentity
reset_api_keyBaseIdentity
revoke_tokenBaseIdentity
service_catalogBaseIdentity
service_mappingBaseIdentity
servicesBaseIdentity
set_credential_fileBaseIdentity
set_credentialsBaseIdentity
tenant_idBaseIdentity
tenant_nameBaseIdentity
tokenBaseIdentity
unauthenticateBaseIdentity
update_tenantBaseIdentity
update_userBaseIdentity
userBaseIdentity
user_agentBaseIdentity
usernameBaseIdentity
verify_sslBaseIdentity
+ +
+ All Classes Namespaces Files Functions Variables Properties
+ + +
+ +
+ + + + + + + diff --git a/docs/html/classpyrax_1_1base__identity_1_1BaseIdentity.html b/docs/html/classpyrax_1_1base__identity_1_1BaseIdentity.html new file mode 100644 index 00000000..a55a6ab1 --- /dev/null +++ b/docs/html/classpyrax_1_1base__identity_1_1BaseIdentity.html @@ -0,0 +1,2118 @@ + + + + + +pyrax: BaseIdentity Class Reference + + + + + + + + + + + +
+ + +
+ + + + + + + + + + + +
+
pyrax + +
+
Python Bindings for the Rackspace Cloud
+
+
+ + + + + + + + + +
+ +
+ + +
+
+ +
+
BaseIdentity Class Reference
+
+
+ +

This class handles all of the basic authentication requirements for working with an OpenStack Cloud system. + More...

+
+Inheritance diagram for BaseIdentity:
+
+
+ + +FakeIdentity + +
+ +

List of all members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

def __init__
 Initializes the attributes for this identity object.
def auth_token
 Simple alias to self.token.
def auth_endpoint
 Abstracts out the logic for connecting to different auth endpoints.
def auth_endpoint
def get_default_region
 In cases where the region has not been specified, return the value to use.
def __getattr__
 Magic to allow for specification of client by region/service or by service/region.
def get_client
 Returns the client object for the specified service and region.
def set_credentials
 Sets the username and password directly.
def set_credential_file
 Reads in the credentials from the supplied file.
def auth_with_token
 If a valid token is already known, this call uses it to generate the service catalog.
def method_head
def method_get
def method_post
def method_put
def method_delete
def method_patch
def authenticate
 Using the supplied credentials, connects to the specified authentication endpoint and attempts to log in.
def keyring_auth
 Uses the keyring module to retrieve the user's password or api_key.
def unauthenticate
 Clears out any credentials, tokens, and service catalog info.
def get_extensions
 Returns a list of extensions enabled on this service.
def get_token
 Returns the auth token, if it is valid.
def list_tokens
 ADMIN ONLY.
def check_token
 ADMIN ONLY.
def revoke_token
 ADMIN ONLY.
def get_token_endpoints
 ADMIN ONLY.
def list_users
 ADMIN ONLY.
def create_user
 ADMIN ONLY.
def find_user_by_name
 Returns a User object by searching for the supplied user name.
def find_user_by_email
 Returns a User object by searching for the supplied user's email address.
def find_user_by_id
 Returns a User object by searching for the supplied user ID.
def get_user
 Returns the user specified by either ID, username or email.
def update_user
 ADMIN ONLY.
def delete_user
 ADMIN ONLY.
def list_roles_for_user
 ADMIN ONLY.
def list_credentials
 Returns a user's non-password credentials.
def reset_api_key
 Not available in basic Keystone identity.
def get_tenant
 Returns the tenant for the current user.
def list_tenants
 ADMIN ONLY.
def create_tenant
 ADMIN ONLY.
def update_tenant
 ADMIN ONLY.
def delete_tenant
 ADMIN ONLY.
def list_roles
 Returns a list of all global roles for users, optionally limited by service.
def get_role
 Returns a Role object representing the specified parameter.
def add_role_to_user
 Adds the specified role to the specified user.
def delete_role_from_user
 Deletes the specified role from the specified user.

+Public Attributes

 username
 password
 tenant_id
 tenant_name
 token
 expires
 region
 verify_ssl
 api_key
 services
 regions
 authenticated
 user_agent
 http_log_debug
 service_mapping
 service_catalog
 user
+

Detailed Description

+

This class handles all of the basic authentication requirements for working with an OpenStack Cloud system.

+

Constructor & Destructor Documentation

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
def __init__ ( self,
 username = None,
 password = None,
 tenant_id = None,
 tenant_name = None,
 auth_endpoint = None,
 api_key = None,
 token = None,
 credential_file = None,
 region = None,
 timeout = None,
 verify_ssl = True 
)
+
+
+ +

Initializes the attributes for this identity object.

+ +
+
+

Member Function Documentation

+ +
+
+ + + + + + + + + + + + + + + + + + +
def __getattr__ ( self,
 att 
)
+
+
+ +

Magic to allow for specification of client by region/service or by service/region.

+

If a service is specified, this should return an object whose endpoints contain keys for each available region for that service. If a region is specified, an object with keys for each service available in that region should be returned.

+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
def add_role_to_user ( self,
 role,
 user 
)
+
+
+ +

Adds the specified role to the specified user.

+

There is no return value upon success. Passing a non-existent role or user raises a NotFound exception.

+ +
+
+ +
+
+ + + + + + + + +
def auth_endpoint ( self)
+
+
+ +

Abstracts out the logic for connecting to different auth endpoints.

+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + +
def auth_endpoint ( self,
 val 
)
+
+
+ +
+
+ +
+
+ + + + + + + + +
def auth_token ( self)
+
+
+ +

Simple alias to self.token.

+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
def auth_with_token ( self,
 token,
 tenant_id = None,
 tenant_name = None 
)
+
+
+ +

If a valid token is already known, this call uses it to generate the service catalog.

+ +

Reimplemented in FakeIdentity.

+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
def authenticate ( self,
 username = None,
 password = None,
 api_key = None,
 tenant_id = None 
)
+
+
+ +

Using the supplied credentials, connects to the specified authentication endpoint and attempts to log in.

+

Credentials can either be passed directly to this method, or previously-stored credentials can be used. If authentication is successful, the token and service catalog information is stored, and clients for each service and region are created.

+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + +
def check_token ( self,
 token = None 
)
+
+
+ +

ADMIN ONLY.

+

Returns True or False, depending on whether the current token is valid.

+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
def create_tenant ( self,
 name,
 description = None,
 enabled = True 
)
+
+
+ +

ADMIN ONLY.

+

Creates a new tenant.

+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
def create_user ( self,
 name,
 email,
 password = None,
 enabled = True 
)
+
+
+ +

ADMIN ONLY.

+

Creates a new user for this tenant (account). The username and email address must be supplied. You may optionally supply the password for this user; if not, the API server generates a password and return it in the 'password' attribute of the resulting User object. NOTE: this is the ONLY time the password is returned; after the initial user creation, there is NO WAY to retrieve the user's password.

+

You may also specify that the user should be created but not active by passing False to the enabled parameter.

+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
def delete_role_from_user ( self,
 role,
 user 
)
+
+
+ +

Deletes the specified role from the specified user.

+

There is no return value upon success. Passing a non-existent role or user raises a NotFound exception.

+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + +
def delete_tenant ( self,
 tenant 
)
+
+
+ +

ADMIN ONLY.

+

Removes the tenant from the system. There is no 'undo' available, so you should be certain that the tenant specified is the tenant you wish to delete.

+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + +
def delete_user ( self,
 user 
)
+
+
+ +

ADMIN ONLY.

+

Removes the user from the system. There is no 'undo' available, so you should be certain that the user specified is the user you wish to delete.

+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + +
def find_user_by_email ( self,
 email 
)
+
+
+ +

Returns a User object by searching for the supplied user's email address.

+

Returns None if there is no match for the given ID.

+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + +
def find_user_by_id ( self,
 uid 
)
+
+
+ +

Returns a User object by searching for the supplied user ID.

+

Returns None if there is no match for the given ID.

+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + +
def find_user_by_name ( self,
 name 
)
+
+
+ +

Returns a User object by searching for the supplied user name.

+

Returns None if there is no match for the given name.

+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
def get_client ( self,
 service,
 region,
 public = True 
)
+
+
+ +

Returns the client object for the specified service and region.

+

By default the public endpoint is used. If you wish to work with a services internal endpoints, specify `public=False`.

+ +
+
+ +
+
+ + + + + + + + +
def get_default_region ( self)
+
+
+ +

In cases where the region has not been specified, return the value to use.

+

Subclasses may use information in the service catalog to determine the appropriate default value.

+ +
+
+ +
+
+ + + + + + + + +
def get_extensions ( self)
+
+
+ +

Returns a list of extensions enabled on this service.

+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + +
def get_role ( self,
 role 
)
+
+
+ +

Returns a Role object representing the specified parameter.

+

The 'role' parameter can be either an existing Role object, or the ID of the role.

+

If an invalid role is passed, a NotFound exception is raised.

+ +
+
+ +
+
+ + + + + + + + +
def get_tenant ( self)
+
+
+ +

Returns the tenant for the current user.

+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + +
def get_token ( self,
 force = False 
)
+
+
+ +

Returns the auth token, if it is valid.

+

If not, calls the auth endpoint to get a new token. Passing 'True' to 'force' forces a call for a new token, even if there already is a valid token.

+ +

Reimplemented in FakeIdentity.

+ +
+
+ +
+
+ + + + + + + + +
def get_token_endpoints ( self)
+
+
+ +

ADMIN ONLY.

+

Returns a list of all endpoints for the current auth token.

+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
def get_user ( self,
 user_id = None,
 username = None,
 email = None 
)
+
+
+ +

Returns the user specified by either ID, username or email.

+

Since more than user can have the same email address, searching by that term returns a list of 1 or more User objects. Searching by username or ID returns a single User.

+

If a user_id that doesn't belong to the current account is searched for, a Forbidden exception is raised. When searching by username or email, a NotFound exception is raised if there is no matching user.

+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + +
def keyring_auth ( self,
 username = None 
)
+
+
+ +

Uses the keyring module to retrieve the user's password or api_key.

+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + +
def list_credentials ( self,
 user = None 
)
+
+
+ +

Returns a user's non-password credentials.

+

If no user is specified, the credentials for the currently authenticated user are returned.

+

You cannot retrieve passwords by this or any other means.

+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
def list_roles ( self,
 service_id = None,
 limit = None,
 marker = None 
)
+
+
+ +

Returns a list of all global roles for users, optionally limited by service.

+

Pagination can be handled through the standard 'limit' and 'marker' parameters.

+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + +
def list_roles_for_user ( self,
 user 
)
+
+
+ +

ADMIN ONLY.

+

Returns a list of roles for the specified user. Each role will be a 3-tuple, consisting of (role_id, role_name, role_description).

+ +
+
+ +
+
+ + + + + + + + +
def list_tenants ( self)
+
+
+ +

ADMIN ONLY.

+

Returns a list of all tenants.

+ +
+
+ +
+
+ + + + + + + + +
def list_tokens ( self)
+
+
+ +

ADMIN ONLY.

+

Returns a dict containing tokens, endpoints, user info, and role metadata.

+ +
+
+ +
+
+ + + + + + + + +
def list_users ( self)
+
+
+ +

ADMIN ONLY.

+

Returns a list of objects for all users for the tenant (account) if this request is issued by a user holding the admin role (identity:user-admin).

+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
def method_delete ( self,
 uri,
 admin = False,
 data = None,
 headers = None,
 std_headers = True 
)
+
+
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
def method_get ( self,
 uri,
 admin = False,
 data = None,
 headers = None,
 std_headers = True 
)
+
+
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
def method_head ( self,
 uri,
 admin = False,
 data = None,
 headers = None,
 std_headers = True 
)
+
+
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
def method_patch ( self,
 uri,
 admin = False,
 data = None,
 headers = None,
 std_headers = True 
)
+
+
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
def method_post ( self,
 uri,
 admin = False,
 data = None,
 headers = None,
 std_headers = True 
)
+
+
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
def method_put ( self,
 uri,
 admin = False,
 data = None,
 headers = None,
 std_headers = True 
)
+
+
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + +
def reset_api_key ( self,
 user = None 
)
+
+
+ +

Not available in basic Keystone identity.

+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + +
def revoke_token ( self,
 token 
)
+
+
+ +

ADMIN ONLY.

+

Returns True or False, depending on whether deletion of the specified token was successful.

+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
def set_credential_file ( self,
 credential_file,
 region = None,
 tenant_id = None,
 authenticate = False 
)
+
+
+ +

Reads in the credentials from the supplied file.

+

It should be a standard config file in the format:

+

[keystone] username = myusername password = top_secret tenant_id = my_id

+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
def set_credentials ( self,
 username,
 password = None,
 region = None,
 tenant_id = None,
 authenticate = False 
)
+
+
+ +

Sets the username and password directly.

+ +
+
+ +
+
+ + + + + + + + +
def unauthenticate ( self)
+
+
+ +

Clears out any credentials, tokens, and service catalog info.

+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
def update_tenant ( self,
 tenant,
 name = None,
 description = None,
 enabled = True 
)
+
+
+ +

ADMIN ONLY.

+

Updates an existing tenant.

+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
def update_user ( self,
 user,
 email = None,
 username = None,
 uid = None,
 enabled = None 
)
+
+
+ +

ADMIN ONLY.

+

Updates the user attributes with the supplied values.

+ +
+
+

Member Data Documentation

+ +
+
+ + + + +
api_key
+
+
+ +
+
+ +
+
+ + + + +
authenticated
+
+
+ +

Reimplemented in FakeIdentity.

+ +
+
+ +
+
+ + + + +
expires
+
+
+ +
+
+ +
+
+ + + + +
http_log_debug
+
+
+ +
+
+ +
+
+ + + + +
password
+
+
+ +

Reimplemented in FakeIdentity.

+ +
+
+ +
+
+ + + + +
region
+
+
+ +
+
+ +
+
+ + + + +
regions
+
+
+ +
+
+ +
+
+ + + + +
service_catalog
+
+
+ +
+
+ +
+
+ + + + +
service_mapping
+
+
+ +
+
+ +
+
+ + + + +
services
+
+
+ +
+
+ +
+
+ + + + +
tenant_id
+
+
+ +

Reimplemented in FakeIdentity.

+ +
+
+ +
+
+ + + + +
tenant_name
+
+
+ +

Reimplemented in FakeIdentity.

+ +
+
+ +
+
+ + + + +
token
+
+
+ +

Reimplemented in FakeIdentity.

+ +
+
+ +
+
+ + + + +
user
+
+
+ +
+
+ +
+
+ + + + +
user_agent
+
+
+ +
+
+ +
+
+ + + + +
username
+
+
+ +

Reimplemented in FakeIdentity.

+ +
+
+ +
+
+ + + + +
verify_ssl
+
+
+ +
+
+
The documentation for this class was generated from the following file: +
+ +
+ All Classes Namespaces Files Functions Variables Properties
+ + +
+ +
+ + + + + + + diff --git a/docs/html/classpyrax_1_1base__identity_1_1BaseIdentity.png b/docs/html/classpyrax_1_1base__identity_1_1BaseIdentity.png new file mode 100644 index 0000000000000000000000000000000000000000..06d7fb9df4dd0b185dac7f970ba0faa145ca3d10 GIT binary patch literal 416 zcmeAS@N?(olHy`uVBq!ia0vp^0U*r53?z4+XPOVBBm#UwT>t<74`jZ0^R=}9&;%e0 zj1L?*z}k679?0b=3GxeO04f53tEWPY7#JA!JzX3_Dj46+J=u3efyZTK-;w|IpJYCW z`7pI#S`odeHA1H1o>Nh-g17TxFUHOTfeV-W7VdcI9?dk}ecOR0=Nt+{s%Kc)xH2D; zxx~I&IAC6-$v%#*9fz;>TW&dWr{VNNRtcwR0%yHSd_|2f%#Cc9`8y|Ow(ayKc@48= z<}sMI2W|D8dbQ=mi2BU;o%Wc@pJy)Z>-d4CiXT zpS&x!ZWg#68YVnT*81Eo&71}M@5m(V(D`cn$4?>hA4B9-!Ij}E*6P6EWbkzLb6Mw< G&;$TAC9aJC literal 0 HcmV?d00001 diff --git a/docs/html/classpyrax_1_1base__identity_1_1Endpoint-members.html b/docs/html/classpyrax_1_1base__identity_1_1Endpoint-members.html new file mode 100644 index 00000000..22e66da2 --- /dev/null +++ b/docs/html/classpyrax_1_1base__identity_1_1Endpoint-members.html @@ -0,0 +1,129 @@ + + + + + +pyrax: Member List + + + + + + + + + + + +
+ + +
+ + + + + + + + + + + +
+
pyrax + +
+
Python Bindings for the Rackspace Cloud
+
+
+ + + + + + +
+
+
+
Endpoint Member List
+
+
+This is the complete list of members for Endpoint, including all inherited members. + + + + + + + + + + + + +
__getattr__Endpoint
__init__Endpoint
attr_mapEndpoint [static]
clientEndpoint
client_privateEndpoint
getEndpoint
identityEndpoint
private_urlEndpoint [static]
public_urlEndpoint [static]
regionEndpoint [static]
serviceEndpoint
tenant_idEndpoint [static]
+ + + + +
+ +
+ + + + + + + diff --git a/docs/html/classpyrax_1_1base__identity_1_1Endpoint.html b/docs/html/classpyrax_1_1base__identity_1_1Endpoint.html new file mode 100644 index 00000000..15a64ae6 --- /dev/null +++ b/docs/html/classpyrax_1_1base__identity_1_1Endpoint.html @@ -0,0 +1,410 @@ + + + + + +pyrax: Endpoint Class Reference + + + + + + + + + + + +
+ + +
+ + + + + + + + + + + +
+
pyrax + +
+
Python Bindings for the Rackspace Cloud
+
+
+ + + + + + + + + +
+ +
+ + +
+ +
+ +

Holds the endpoint information, as well as an instance of the appropriate client for that service and region. + More...

+
+Inheritance diagram for Endpoint:
+
+
+ + +FakeEndpoint + +
+ +

List of all members.

+ + + + + + + + + + + + + + + + + + +

+Public Member Functions

def __init__
 Set local attributes from the supplied dictionary.
def get
 Accepts either 'public' or 'private' as a parameter, and returns the corresponding value for 'public_url' or 'private_url', respectively.
def __getattr__
def client
def client_private

+Public Attributes

 service
 identity

+Static Public Attributes

 public_url = None
 private_url = None
 tenant_id = None
 region = None
dictionary attr_map
+

Detailed Description

+

Holds the endpoint information, as well as an instance of the appropriate client for that service and region.

+

Constructor & Destructor Documentation

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
def __init__ ( self,
 ep_dict,
 service,
 region,
 identity 
)
+
+
+ +

Set local attributes from the supplied dictionary.

+ +
+
+

Member Function Documentation

+ +
+
+ + + + + + + + + + + + + + + + + + +
def __getattr__ ( self,
 att 
)
+
+
+ +
+
+ +
+
+ + + + + + + + +
def client ( self)
+
+
+ +
+
+ +
+
+ + + + + + + + +
def client_private ( self)
+
+
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + +
def get ( self,
 url_type 
)
+
+
+ +

Accepts either 'public' or 'private' as a parameter, and returns the corresponding value for 'public_url' or 'private_url', respectively.

+ +
+
+

Member Data Documentation

+ +
+
+ + + + +
dictionary attr_map [static]
+
+
+Initial value:
{"publicURL": "public_url",
+            "privateURL": "private_url",
+            "tenantId": "tenant_id",
+            }
+
+
+
+ +
+
+ + + + +
identity
+
+
+ +
+
+ +
+
+ + + + +
private_url = None [static]
+
+
+ +
+
+ +
+
+ + + + +
public_url = None [static]
+
+
+ +
+
+ +
+
+ + + + +
region = None [static]
+
+
+ +
+
+ +
+
+ + + + +
service
+
+
+ +
+
+ +
+
+ + + + +
tenant_id = None [static]
+
+
+ +
+
+
The documentation for this class was generated from the following file: +
+ + + + +
+ +
+ + + + + + + diff --git a/docs/html/classpyrax_1_1base__identity_1_1Endpoint.png b/docs/html/classpyrax_1_1base__identity_1_1Endpoint.png new file mode 100644 index 0000000000000000000000000000000000000000..fc90b4c030b014ef11efa6db759f9f3934e85602 GIT binary patch literal 384 zcmeAS@N?(olHy`uVBq!ia0vp^kw6^4!3-o_Z)t`CDTx4|5ZC|z{{xvX-h3_XKQsZz z0^rcw*hfn&IZJIpyO^Uj8W!E0w2pLVj+oyq6CITI4sh6L-?&NjGI^m-A z0f$#C3^pod?@DRUUQyie>Evndh9_DnE4Ai+x%foLNovA^OT~(+;U~5Hrp*qNE0td* z + + + + +pyrax: Role Class Reference + + + + + + + + + + + +
+ + +
+ + + + + + + + + + + +
+
pyrax + +
+
Python Bindings for the Rackspace Cloud
+
+
+ + + + + + + + + +
+ +
+ + +
+
+
+
Role Class Reference
+
+
+ +

Inherits BaseResource.

+
The documentation for this class was generated from the following file: +
+ + + + +
+ +
+ + + + + + + diff --git a/docs/html/classpyrax_1_1base__identity_1_1Service-members.html b/docs/html/classpyrax_1_1base__identity_1_1Service-members.html new file mode 100644 index 00000000..6185c410 --- /dev/null +++ b/docs/html/classpyrax_1_1base__identity_1_1Service-members.html @@ -0,0 +1,127 @@ + + + + + +pyrax: Member List + + + + + + + + + + + +
+ + +
+ + + + + + + + + + + +
+
pyrax + +
+
Python Bindings for the Rackspace Cloud
+
+
+ + + + + + +
+
+
+
Service Member List
+
+ + + + + +
+ +
+ + + + + + + diff --git a/docs/html/classpyrax_1_1base__identity_1_1Service.html b/docs/html/classpyrax_1_1base__identity_1_1Service.html new file mode 100644 index 00000000..2e6ea1f4 --- /dev/null +++ b/docs/html/classpyrax_1_1base__identity_1_1Service.html @@ -0,0 +1,367 @@ + + + + + +pyrax: Service Class Reference + + + + + + + + + + + +
+ + +
+ + + + + + + + + + + +
+
pyrax + +
+
Python Bindings for the Rackspace Cloud
+
+
+ + + + + + + + + +
+ +
+ + +
+
+ +
+
Service Class Reference
+
+
+ +

Represents an available service from the service catalog. + More...

+
+Inheritance diagram for Service:
+
+
+ + +FakeIdentityService + +
+ +

List of all members.

+ + + + + + + + + + + + + + + + +

+Public Member Functions

def __init__
 Parse the catalog entry for a particular service.
def __repr__
def get_client
 Returns an instance of the appropriate client class for the given region.
def regions
 Returns a list of all regions which support this service.

+Public Attributes

 identity
 name
 service_type
 prefix
 clients
 endpoints
+

Detailed Description

+

Represents an available service from the service catalog.

+

Constructor & Destructor Documentation

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
def __init__ ( self,
 identity,
 catalog 
)
+
+
+ +

Parse the catalog entry for a particular service.

+ +

Reimplemented in FakeIdentityService.

+ +
+
+

Member Function Documentation

+ +
+
+ + + + + + + + +
def __repr__ ( self)
+
+
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + +
def get_client ( self,
 region 
)
+
+
+ +

Returns an instance of the appropriate client class for the given region.

+

If there is no endpoint for that region, a NoEndpointForRegion exception is raised.

+ +
+
+ +
+
+ + + + + + + + +
def regions ( self)
+
+
+ +

Returns a list of all regions which support this service.

+ +
+
+

Member Data Documentation

+ +
+
+ + + + +
clients
+
+
+ +

Reimplemented in FakeIdentityService.

+ +
+
+ +
+
+ + + + +
endpoints
+
+
+ +

Reimplemented in FakeIdentityService.

+ +
+
+ +
+
+ + + + +
identity
+
+
+ +

Reimplemented in FakeIdentityService.

+ +
+
+ +
+
+ + + + +
name
+
+
+ +

Reimplemented in FakeIdentityService.

+ +
+
+ +
+
+ + + + +
prefix
+
+
+ +

Reimplemented in FakeIdentityService.

+ +
+
+ +
+
+ + + + +
service_type
+
+
+ +

Reimplemented in FakeIdentityService.

+ +
+
+
The documentation for this class was generated from the following file: +
+ + + + +
+ +
+ + + + + + + diff --git a/docs/html/classpyrax_1_1base__identity_1_1Service.png b/docs/html/classpyrax_1_1base__identity_1_1Service.png new file mode 100644 index 0000000000000000000000000000000000000000..7b938b164d121cad49eb94a2e8d9f73a201b051d GIT binary patch literal 466 zcmeAS@N?(olHy`uVBq!ia0vp^H9#D|!3-qdtb2G6NJ#|vgt-3y{~ySF@#br3|Dg#$ z78oBmaDcV*jy#adQ4-`A%m7pb0#{Fk7%?y~CVIL!hEy=VoqMsbMS;h4uiv5n^`Gn< zysZ`71ZSVU<7R$i;hb;VcCD9Y$~`QW)*@_ohg&9RU*rK+3pIoD2fCSry56*Zlv`=6 zyIXBy=B~2U+D~Hyg}AeA#>I2Jx4ZH?fB;{S#aI^3dN4E1b5Tm^0a8 z-$T=VVvBBBSFHUM^KIFaWwO&A2)#Va&V1c+`{mEYJ6^iX{_jyX`R&Cm-d2|sU+$33 z;FtILy(G3`xBUM-_mb>c_8)&%Z+a-co&A>l4S&h|o4gO-0!9FXr>mdKI;Vst03ImU A1ONa4 literal 0 HcmV?d00001 diff --git a/docs/html/classpyrax_1_1base__identity_1_1Tenant.html b/docs/html/classpyrax_1_1base__identity_1_1Tenant.html index 8e2919f7..ac0109e0 100644 --- a/docs/html/classpyrax_1_1base__identity_1_1Tenant.html +++ b/docs/html/classpyrax_1_1base__identity_1_1Tenant.html @@ -103,17 +103,8 @@
Tenant Class Reference
-
-Inheritance diagram for Tenant:
-
-
- - -BaseResource - -
- -

List of all members.

+ +

Inherits BaseResource.


The documentation for this class was generated from the following file: @@ -135,7 +126,7 @@ diff --git a/docs/html/classpyrax_1_1base__identity_1_1User.html b/docs/html/classpyrax_1_1base__identity_1_1User.html index 15faa985..38acf87a 100644 --- a/docs/html/classpyrax_1_1base__identity_1_1User.html +++ b/docs/html/classpyrax_1_1base__identity_1_1User.html @@ -103,17 +103,8 @@
User Class Reference
-
-Inheritance diagram for User:
-
-
- - -BaseResource - -
- -

List of all members.

+ +

Inherits BaseResource.


The documentation for this class was generated from the following file: @@ -135,7 +126,7 @@ diff --git a/docs/html/classpyrax_1_1cf__wrapper_1_1client_1_1CFClient.html b/docs/html/classpyrax_1_1cf__wrapper_1_1client_1_1CFClient.html index bffbe267..84383088 100644 --- a/docs/html/classpyrax_1_1cf__wrapper_1_1client_1_1CFClient.html +++ b/docs/html/classpyrax_1_1cf__wrapper_1_1client_1_1CFClient.html @@ -2315,7 +2315,19 @@   - ignore_timestamps = False  + ignore_timestamps = False, + + + + +   + object_prefix = "", + + + + +   + verbose = False  @@ -2329,7 +2341,9 @@

Compares the contents of the specified folder, and checks to make sure that the corresponding object is present in the specified container.

If there is no remote object matching the local file, it is created. If a matching object exists, the etag is examined to determine if the object in the container matches the local file; if they differ, the container is updated with the local file if the local file is newer when `ignore_timestamps' is False (default). If `ignore_timestamps` is True, the object is overwritten with the local file contents whenever the etags differ. NOTE: the timestamp of a remote object is the time it was uploaded, not the original modification time of the file stored in that object. Unless 'include_hidden' is True, files beginning with an initial period are ignored.

If the 'delete' option is True, any objects in the container that do not have corresponding files in the local folder are deleted.

-

You can selectively ignore files by passing either a single pattern or a list of patterns; these will be applied to the individual folder and file names, and any names that match any of the 'ignore' patterns will not be uploaded. The patterns should be standard *nix-style shell patterns; e.g., '*pyc' will ignore all files ending in 'pyc', such as 'program.pyc' and 'abcpyc'.

+

You can selectively ignore files by passing either a single pattern or a list of patterns; these will be applied to the individual folder and file names, and any names that match any of the 'ignore' patterns will not be uploaded. The patterns should be standard *nix-style shell patterns; e.g., '*pyc' will ignore all files ending in 'pyc', such as 'program.pyc' and 'abcpyc'.

+

If `object_prefix` is set it will be appended to the object name when it is checked and uploaded to the container. For example, if you use sync_folder_to_container("folderToSync/", myContainer, object_prefix="imgFolder") it will upload the files to the container/imgFolder/... instead of just container/...

+

Set `verbose` to True to make it print what is going on. It will show which files are being uploaded and which ones are not and why.

@@ -2668,7 +2682,7 @@ diff --git a/docs/html/classpyrax_1_1client_1_1BaseClient-members.html b/docs/html/classpyrax_1_1client_1_1BaseClient-members.html index ba11958a..b4eb908a 100644 --- a/docs/html/classpyrax_1_1client_1_1BaseClient-members.html +++ b/docs/html/classpyrax_1_1client_1_1BaseClient-members.html @@ -101,6 +101,7 @@ get_limitsBaseClient get_timingsBaseClient http_log_debugBaseClient + identityBaseClient listBaseClient management_urlBaseClient method_deleteBaseClient @@ -140,7 +141,7 @@ diff --git a/docs/html/classpyrax_1_1client_1_1BaseClient.html b/docs/html/classpyrax_1_1client_1_1BaseClient.html index 6509781b..8b2e2882 100644 --- a/docs/html/classpyrax_1_1client_1_1BaseClient.html +++ b/docs/html/classpyrax_1_1client_1_1BaseClient.html @@ -175,6 +175,7 @@

Public Attributes

 versionidentity  region_name  endpoint_type  service_name @@ -202,6 +203,12 @@   self, + + + +   + identity, + @@ -212,7 +219,7 @@   - endpoint_type = "publicURL", + endpoint_type = None, @@ -864,6 +871,19 @@
+
+ + +
+
+ + + + +
identity
+
+
+
@@ -1019,7 +1039,7 @@ diff --git a/docs/html/classpyrax_1_1cloudblockstorage_1_1CloudBlockStorageClient-members.html b/docs/html/classpyrax_1_1cloudblockstorage_1_1CloudBlockStorageClient-members.html index efd84a65..0562c9f0 100644 --- a/docs/html/classpyrax_1_1cloudblockstorage_1_1CloudBlockStorageClient-members.html +++ b/docs/html/classpyrax_1_1cloudblockstorage_1_1CloudBlockStorageClient-members.html @@ -104,8 +104,10 @@ findallBaseClient getBaseClient get_limitsBaseClient + get_snapshotCloudBlockStorageClient get_timingsBaseClient http_log_debugBaseClient + identityBaseClient listBaseClient list_snapshotsCloudBlockStorageClient list_typesCloudBlockStorageClient @@ -126,6 +128,8 @@ timesBaseClient timingsBaseClient unauthenticateBaseClient + updateCloudBlockStorageClient + update_snapshotCloudBlockStorageClient user_agentBaseClient [static] verify_sslBaseClient versionBaseClient @@ -147,7 +151,7 @@ diff --git a/docs/html/classpyrax_1_1cloudblockstorage_1_1CloudBlockStorageClient.html b/docs/html/classpyrax_1_1cloudblockstorage_1_1CloudBlockStorageClient.html index 7f0626e0..aae1d99e 100644 --- a/docs/html/classpyrax_1_1cloudblockstorage_1_1CloudBlockStorageClient.html +++ b/docs/html/classpyrax_1_1cloudblockstorage_1_1CloudBlockStorageClient.html @@ -134,10 +134,16 @@  Detaches the volume from whatever device it is attached to.
def delete_volume  Deletes the volume.
+def update + Update the specified values on the specified volume.
def create_snapshot  Creates a snapshot of the volume, with an optional name and description.
+def get_snapshot + Returns the snapshot with the specified snapshot ID value.
def delete_snapshot  Deletes the snapshot.
+def update_snapshot + Update the specified values on the specified snapshot.

Static Public Attributes

string name = "Cloud Block Storage" @@ -325,6 +331,35 @@

Detaches the volume from whatever device it is attached to.

+ + + +
+
+ + + + + + + + + + + + + + + + + + +
def get_snapshot ( self,
 snapshot 
)
+
+
+ +

Returns the snapshot with the specified snapshot ID value.

+
@@ -363,6 +398,90 @@

Returns a list of all available volume types.

+ + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
def update ( self,
 volume,
 display_name = None,
 display_description = None 
)
+
+
+ +

Update the specified values on the specified volume.

+

You may specify one or more values to update.

+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
def update_snapshot ( self,
 snapshot,
 display_name = None,
 display_description = None 
)
+
+
+ +

Update the specified values on the specified snapshot.

+

You may specify one or more values to update.

+

Member Data Documentation

@@ -402,7 +521,7 @@ diff --git a/docs/html/classpyrax_1_1cloudblockstorage_1_1CloudBlockStorageManager-members.html b/docs/html/classpyrax_1_1cloudblockstorage_1_1CloudBlockStorageManager-members.html index dc17c7e1..4bf657f0 100644 --- a/docs/html/classpyrax_1_1cloudblockstorage_1_1CloudBlockStorageManager-members.html +++ b/docs/html/classpyrax_1_1cloudblockstorage_1_1CloudBlockStorageManager-members.html @@ -108,6 +108,7 @@ resource_classBaseManager [static] response_keyBaseManager [static] run_hooksBaseManager + updateCloudBlockStorageManager uri_baseBaseManager [static] @@ -127,7 +128,7 @@ diff --git a/docs/html/classpyrax_1_1cloudblockstorage_1_1CloudBlockStorageManager.html b/docs/html/classpyrax_1_1cloudblockstorage_1_1CloudBlockStorageManager.html index 4284e6b3..03e1366c 100644 --- a/docs/html/classpyrax_1_1cloudblockstorage_1_1CloudBlockStorageManager.html +++ b/docs/html/classpyrax_1_1cloudblockstorage_1_1CloudBlockStorageManager.html @@ -125,6 +125,8 @@ Public Member Functions def create  Catches errors that may be returned, and raises more informational exceptions.
+def update + Update the specified values on the specified volume.
def list_snapshots  Pass-through method to allow the list_snapshots() call to be made directly on a volume.
def create_snapshot @@ -232,6 +234,48 @@

Pass-through method to allow the list_snapshots() call to be made directly on a volume.

+ + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
def update ( self,
 volume,
 display_name = None,
 display_description = None 
)
+
+
+ +

Update the specified values on the specified volume.

+

You may specify one or more values to update.

+

The documentation for this class was generated from the following file:
    @@ -255,7 +299,7 @@ diff --git a/docs/html/classpyrax_1_1cloudblockstorage_1_1CloudBlockStorageSnapshotManager-members.html b/docs/html/classpyrax_1_1cloudblockstorage_1_1CloudBlockStorageSnapshotManager-members.html index 4b3c8380..6fe251d4 100644 --- a/docs/html/classpyrax_1_1cloudblockstorage_1_1CloudBlockStorageSnapshotManager-members.html +++ b/docs/html/classpyrax_1_1cloudblockstorage_1_1CloudBlockStorageSnapshotManager-members.html @@ -106,6 +106,7 @@ resource_classBaseManager [static] response_keyBaseManager [static] run_hooksBaseManager + updateCloudBlockStorageSnapshotManager uri_baseBaseManager [static] @@ -125,7 +126,7 @@ diff --git a/docs/html/classpyrax_1_1cloudblockstorage_1_1CloudBlockStorageSnapshotManager.html b/docs/html/classpyrax_1_1cloudblockstorage_1_1CloudBlockStorageSnapshotManager.html index c99c0c83..9eb045f9 100644 --- a/docs/html/classpyrax_1_1cloudblockstorage_1_1CloudBlockStorageSnapshotManager.html +++ b/docs/html/classpyrax_1_1cloudblockstorage_1_1CloudBlockStorageSnapshotManager.html @@ -124,6 +124,8 @@ Public Member Functions def create  Adds exception handling to the default create() call.
    +def update + Update the specified values on the specified snapshot.

    Detailed Description

    Manager class for Cloud Block Storage.

    @@ -173,6 +175,48 @@

    Adds exception handling to the default create() call.

    +
    + + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    def update ( self,
     snapshot,
     display_name = None,
     display_description = None 
    )
    +
    +
    + +

    Update the specified values on the specified snapshot.

    +

    You may specify one or more values to update.

    +

    The documentation for this class was generated from the following file:
      @@ -196,7 +240,7 @@ diff --git a/docs/html/classpyrax_1_1clouddatabases_1_1CloudDatabaseClient-members.html b/docs/html/classpyrax_1_1clouddatabases_1_1CloudDatabaseClient-members.html index 3d95a680..af02a6ec 100644 --- a/docs/html/classpyrax_1_1clouddatabases_1_1CloudDatabaseClient-members.html +++ b/docs/html/classpyrax_1_1clouddatabases_1_1CloudDatabaseClient-members.html @@ -114,6 +114,7 @@ get_userCloudDatabaseClient grant_user_accessCloudDatabaseClient http_log_debugBaseClient + identityBaseClient listBaseClient list_backupsCloudDatabaseClient list_databasesCloudDatabaseClient @@ -164,7 +165,7 @@ diff --git a/docs/html/classpyrax_1_1clouddns_1_1CloudDNSClient-members.html b/docs/html/classpyrax_1_1clouddns_1_1CloudDNSClient-members.html index 0c4346d9..ff92f948 100644 --- a/docs/html/classpyrax_1_1clouddns_1_1CloudDNSClient-members.html +++ b/docs/html/classpyrax_1_1clouddns_1_1CloudDNSClient-members.html @@ -116,6 +116,7 @@ get_subdomain_iteratorCloudDNSClient get_timingsBaseClient http_log_debugBaseClient + identityBaseClient import_domainCloudDNSClient listCloudDNSClient list_next_pageCloudDNSClient @@ -171,7 +172,7 @@ diff --git a/docs/html/classpyrax_1_1cloudloadbalancers_1_1CloudLoadBalancerClient-members.html b/docs/html/classpyrax_1_1cloudloadbalancers_1_1CloudLoadBalancerClient-members.html index 775683cd..ad8cd150 100644 --- a/docs/html/classpyrax_1_1cloudloadbalancers_1_1CloudLoadBalancerClient-members.html +++ b/docs/html/classpyrax_1_1cloudloadbalancers_1_1CloudLoadBalancerClient-members.html @@ -131,6 +131,7 @@ get_timingsBaseClient get_usageCloudLoadBalancerClient http_log_debugBaseClient + identityBaseClient listBaseClient management_urlBaseClient method_deleteBaseClient @@ -184,7 +185,7 @@ diff --git a/docs/html/classpyrax_1_1cloudmonitoring_1_1CloudMonitorClient-members.html b/docs/html/classpyrax_1_1cloudmonitoring_1_1CloudMonitorClient-members.html index 1a959fff..f59150eb 100644 --- a/docs/html/classpyrax_1_1cloudmonitoring_1_1CloudMonitorClient-members.html +++ b/docs/html/classpyrax_1_1cloudmonitoring_1_1CloudMonitorClient-members.html @@ -126,6 +126,7 @@ get_overviewCloudMonitorClient get_timingsBaseClient http_log_debugBaseClient + identityBaseClient listCloudMonitorClient list_alarmsCloudMonitorClient list_check_typesCloudMonitorClient @@ -179,7 +180,7 @@ diff --git a/docs/html/classpyrax_1_1cloudnetworks_1_1CloudNetworkClient-members.html b/docs/html/classpyrax_1_1cloudnetworks_1_1CloudNetworkClient-members.html index 97b6a9c4..d19bd4f9 100644 --- a/docs/html/classpyrax_1_1cloudnetworks_1_1CloudNetworkClient-members.html +++ b/docs/html/classpyrax_1_1cloudnetworks_1_1CloudNetworkClient-members.html @@ -106,6 +106,7 @@ get_server_networksCloudNetworkClient get_timingsBaseClient http_log_debugBaseClient + identityBaseClient listBaseClient management_urlBaseClient method_deleteBaseClient @@ -148,7 +149,7 @@ diff --git a/docs/html/classpyrax_1_1exceptions_1_1NoClientForService.html b/docs/html/classpyrax_1_1exceptions_1_1NoClientForService.html new file mode 100644 index 00000000..706f8815 --- /dev/null +++ b/docs/html/classpyrax_1_1exceptions_1_1NoClientForService.html @@ -0,0 +1,142 @@ + + + + + +pyrax: NoClientForService Class Reference + + + + + + + + + + + +
      + + +
      + + + + + + + + + + + +
      +
      pyrax + +
      +
      Python Bindings for the Rackspace Cloud
      +
      +
      + + + + + + + + + +
      + +
      + + +
      +
      +
      +
      NoClientForService Class Reference
      +
      +
      +
      +Inheritance diagram for NoClientForService:
      +
      +
      + + +PyraxException + +
      +
      The documentation for this class was generated from the following file: +
      + + + + +
      + +
      + + + + + + + diff --git a/docs/html/classpyrax_1_1exceptions_1_1NoClientForService.png b/docs/html/classpyrax_1_1exceptions_1_1NoClientForService.png new file mode 100644 index 0000000000000000000000000000000000000000..8e2a657a2de31c5f5f36b5ee4abb2d192d4831e2 GIT binary patch literal 493 zcmVvTJkN^MxkN^Mxkifve1&Q1r00008bW%=J0RR90|NsC0)yh;d0004eNkl9mYT3mwiR*gis%fOC9_Qd}@f2K6S5+V?`>X&@!>0{*;mq&A_gU}dy{qNS7u`;- z+pojlyRG-Ptl>Ak@XX85i=H!hNZEE^7Za9Ej&$KBEnH*1tdVgUtj!gwYblpVuth8Cxxe zGwa~W!w-SklFHBdn{a~);J!!a@aU?k + + + + +pyrax: NoEndpointForRegion Class Reference + + + + + + + + + + + +
      + + +
      + + + + + + + + + + + +
      +
      pyrax + +
      +
      Python Bindings for the Rackspace Cloud
      +
      +
      + + + + + + + + + +
      + +
      + + +
      +
      +
      +
      NoEndpointForRegion Class Reference
      +
      +
      +
      +Inheritance diagram for NoEndpointForRegion:
      +
      +
      + + +PyraxException + +
      +
      The documentation for this class was generated from the following file: +
      + + + + +
      + +
      + + + + + + + diff --git a/docs/html/classpyrax_1_1exceptions_1_1NoEndpointForRegion.png b/docs/html/classpyrax_1_1exceptions_1_1NoEndpointForRegion.png new file mode 100644 index 0000000000000000000000000000000000000000..0537ef3a52bec12938dc53217d97457db2c6e81e GIT binary patch literal 520 zcmeAS@N?(olHy`uVBq!ia0vp^9Y7qw!3-q7a-LNJQW60^A+G=b{|7Q(y!l$%e`o@b z1;z&s9ANFdBM;+}rLn;{G&b`>zqQK+2*XPjx`cHOK zoLWx_UGXU|?(E~pwTz2;_Vou#=5h7b3>L)`yaEgd&WP`iQdweR9>KKI-nh9kdPxMc z<4a{lRR?>aU0z#-OP@5h7`5cRVVrPn{q&3beK|wZZyeiJeB>UNhVa!xKIJxikLM|= zJq-C#_ma;==N`kw9D`FaxxMOVW-H`v(tC0ucEY9Arh%)Ri&KJ3SFWCAJ7MnSg!`$i zDb0^XC&>1di#*(~@3^P|=ptcVd!eWDjZb7+RJc6OIeHvw*pS8HB+w+#qQIia;Rt4` zh;cM+VK#J8<#3$l_~haWFRl5x?CF<_Wm3*W7IQTzehF$|d&KX5x5hPK&J*P;vRxdJ zzW2L&dFJ#rDlwUqbw@UDVF=wIc*G`TWzoyr+%sDO9j9e=ReXE4_WZRpJ#_KM + + + + +pyrax: NoEndpointForService Class Reference + + + + + + + + + + + +
      + + +
      + + + + + + + + + + + +
      +
      pyrax + +
      +
      Python Bindings for the Rackspace Cloud
      +
      +
      + + + + + + + + + +
      + +
      + + +
      +
      +
      +
      NoEndpointForService Class Reference
      +
      +
      +
      +Inheritance diagram for NoEndpointForService:
      +
      +
      + + +PyraxException + +
      +
      The documentation for this class was generated from the following file: +
      + + + + +
      + +
      + + + + + + + diff --git a/docs/html/classpyrax_1_1exceptions_1_1NoEndpointForService.png b/docs/html/classpyrax_1_1exceptions_1_1NoEndpointForService.png new file mode 100644 index 0000000000000000000000000000000000000000..3f483626ae1a1a2f7a566c8fcc491221e9072f3a GIT binary patch literal 529 zcmV+s0`C2ZP)vTJkN^MxkN^Mxkifve1&Q1r00008bW%=J0RR90|NsC0)yh;d0004?Nkl*b41_aO%KeYL54ORWkY)2DxvN1>?xYouOD|DZAj2UVvF7L zjlYai25N>I4p0Z6H?(n1v~!622O7zEjm8|}G@6~%kwmZ49J+YHH;>S0uU3rKj``-K zrb?)(8#EW68keUm(p*{jHJU36zo-r0;iO4Ulc{abwEdxV{vpl2XTnKEv+tR3a?!A+ zNJARZkcKp*Aq{CrLmJYMhBUq*Q`?Y8VbYN17LD8*ntHs?9VWZp!2}7;Ha?}nu>R5l zjb^sxAH;XsKxfL|u{B_vkS*<(=18D>Qm7p8E(kG&w`kRGq;WUXOh0z{95?LrkgclX zUChnxHjKXMbJPYS<77p%jlU|?cs2eBjr@q(EYn17qQjey`YoLM-=#4Z`>~N`R^j1j zdYWV3EYmc-LUeXgT}}1Anb(w&j`ic7H$K+teqK|n4}?r_2GZ~yPMU9{$<%%T3l$z^ ToV~=N00000NkvXXu0mjfVOsaa literal 0 HcmV?d00001 diff --git a/docs/html/classpyrax_1_1exceptions_1_1NoSuchClient.html b/docs/html/classpyrax_1_1exceptions_1_1NoSuchClient.html new file mode 100644 index 00000000..8456022c --- /dev/null +++ b/docs/html/classpyrax_1_1exceptions_1_1NoSuchClient.html @@ -0,0 +1,142 @@ + + + + + +pyrax: NoSuchClient Class Reference + + + + + + + + + + + +
      + + +
      + + + + + + + + + + + +
      +
      pyrax + +
      +
      Python Bindings for the Rackspace Cloud
      +
      +
      + + + + + + + + + +
      + +
      + + +
      +
      +
      +
      NoSuchClient Class Reference
      +
      +
      +
      +Inheritance diagram for NoSuchClient:
      +
      +
      + + +PyraxException + +
      +
      The documentation for this class was generated from the following file: +
      + + + + +
      + +
      + + + + + + + diff --git a/docs/html/classpyrax_1_1exceptions_1_1NoSuchClient.png b/docs/html/classpyrax_1_1exceptions_1_1NoSuchClient.png new file mode 100644 index 0000000000000000000000000000000000000000..d5f587a1ebe397717dc28b56054c905d37366d38 GIT binary patch literal 452 zcmeAS@N?(olHy`uVBq!ia0vp^DL@>+!3-pCTvxaYq$C1-LR|m<{|{uoc=NTi|Ih>= z3ycpOIKbL@M;^%KC<*clW&kPzfvcxNj2IXggFRgwLn;{G&V9S?umVS0ZSJGL@t=M! zR8ZJDMbxMET5b&i%w`@QBh#z^l)GjnxM}< zK0SHmkB$V`swN|;Ne_-R%5*87vo sCVrbaIm|d#CiqS)Bj*XJCk=lXYu1QPdYing78v9Vp00i_>zopr0Q+Xb#sB~S literal 0 HcmV?d00001 diff --git a/docs/html/classpyrax_1_1exceptions_1_1PyraxException.html b/docs/html/classpyrax_1_1exceptions_1_1PyraxException.html index 95cbabe1..fecf4b4e 100644 --- a/docs/html/classpyrax_1_1exceptions_1_1PyraxException.html +++ b/docs/html/classpyrax_1_1exceptions_1_1PyraxException.html @@ -184,36 +184,40 @@ NetworkInUse NetworkLabelNotUnique NetworkNotFound -NoMoreResults -NoReloadError -NoSSLTerminationConfiguration -NoSuchContainer -NoSuchDatabase -NoSuchDatabaseUser -NoSuchObject -NotAuthenticated -NotCDNEnabled -NoTokenLookupException -PasswordChangeFailed -ProtocolMismatch -PTRRecordCreationFailed -PTRRecordDeletionFailed -PTRRecordUpdateFailed -QueueClientIDNotDefined -ServiceNotAvailable -ServiceResponseFailure -SnapshotNotAvailable -TenantNotFound -UnattachedNode -UnattachedVirtualIP -UnicodePathError -UnsharableImage -UploadFailed -UserNotFound -VolumeAttachmentFailed -VolumeCloneTooSmall -VolumeDetachmentFailed -VolumeNotAvailable +NoClientForService +NoEndpointForRegion +NoEndpointForService +NoMoreResults +NoReloadError +NoSSLTerminationConfiguration +NoSuchClient +NoSuchContainer +NoSuchDatabase +NoSuchDatabaseUser +NoSuchObject +NotAuthenticated +NotCDNEnabled +NoTokenLookupException +PasswordChangeFailed +ProtocolMismatch +PTRRecordCreationFailed +PTRRecordDeletionFailed +PTRRecordUpdateFailed +QueueClientIDNotDefined +ServiceNotAvailable +ServiceResponseFailure +SnapshotNotAvailable +TenantNotFound +UnattachedNode +UnattachedVirtualIP +UnicodePathError +UnsharableImage +UploadFailed +UserNotFound +VolumeAttachmentFailed +VolumeCloneTooSmall +VolumeDetachmentFailed +VolumeNotAvailable
      The documentation for this class was generated from the following file:
        @@ -237,7 +241,7 @@ diff --git a/docs/html/classpyrax_1_1exceptions_1_1PyraxException.png b/docs/html/classpyrax_1_1exceptions_1_1PyraxException.png index b8792e3c5bf2d9046e1985eb2789575818924d6b..b6af77392f541982d538d59d00c220659104c070 100644 GIT binary patch delta 6066 zcmZ8ld03Kp+pTGv7Bid55|=Ce8Z%36lgYJmD>qU@azQgwa{(rO&=irT-mo$=$A!vW zb3=jDlzb5V8cR!3!39)$v~okyht!mea6W3@Z@IqzxSoIbopay!Ip@A>W>-^}RzJ|( z^y%j{t5&TV9a}h?zSrWXgsd9um^THRX+rJp*{;zT9>r+YcmBJt8TYu%NxmJt;Qic2 zcIfNX1+NEua^1A^ol@_pU%YUs{#WfN4z~E5vILk(QI{c7IwU^H9pgi6Q87*!0VT-HWI=|@#{)R=N z@p-S2Y`EyAdp}f$P%jq*#kGFB!Nh#*iD*sShz$_c7A#^}Y$4U(nK*DVP?y@^DDu@4 zXYAeUONj;!CzfS;+S`9_Z;a{P#xWghxXC&#KL!q5ObmV#+!FW5tDjpjU3@UcBoln^ z;bEZYD?jop(jLZ@dK*Ro^$gb@!vP~_AgxD@=9@ZRzH&d93K#Vpac6&_6!1A9C|%dqdfu)O)ywdZ&?}D?u6>Ye|ZoTIvQl zQ?cC^KzDH!#}68%_NRLO>2Z(tHO2jb;#W{8lqOhc3Y7nXE&o%NyBhM_wep9)oqR7E zv*ZR43Q3fVPrJ@hA_cELJ@Rzc&=BZNcDdQjG(SKP$a-KH|JC|YM3s($%gd$14rtAg zM=?cx>(cIO4VK$v9d6tkO{jWi@xj9{oyl;@x&xDd)>7}_<;s@Phef1{XEQw!@ezpO zyyk6?dKVafiYKUFXMJHMp)a+??RSN^Mxe|!!3_Hn<3f5FXyl5=mg*Stq;j5QIbqt% zHI$Y8Q!Bp>d3159Usv%h{NL4_oPXD9JvN}NiQO57z3cgBJRwpMXt^g@t#(Ug&W9nP z#8)a`askxG#W`Z*8(VcO0LmY*!HtXp2UOiD%;7bZWD`SbcOv4jm0L*y!IgC|n6KQ9 zeamaMGC5cum$ngNVX&3Oebbev?lHW=`Vp4$yE`EkpIDX7449ui9ml@|i@Lx!MISp2 zhZ34Qf%csJpr~iO!!MS{k?1?WQer{**gjxR2UNPFu)Rdov=jtgmoYb3*GXqfG` zn}WGp8F>tAg2h6lBq8CQhCf{k#8aN<)wK~2@0?vvUj$pzYHhIK9NAW30Vx|Mqa)}GRw0>QQISMfl zLch~RT|TYqA|8Gj3%(XloO`ga{@Vu0aK@w{Yt1wVAjRRH&`CZA`ui8ci~M~3)Nqf} zBvB7p9KEzQjq^H!*Hx|-g3|RmT6DuAYGRv1&Ln%{W{~3(waszR3c=mcMa%Ep3 z>5UKD1TcO|J#M?$u#Cq!$)o>y>pJXMXLNHU%Av*Tn}&+fJHYaTuXpjBAm%I42%2bY zS`8+69s*pX{HbciZV(iOv?b{HBF;fS8R$E#=f%aR9YnRR0cisA?-@mFy(uTa-8Kuj zm!FQMI@bV8ido|rQEHNE8V?zBTKNC-=Gw->X)PARE-Vt(Bc6C-M{nR3-g*S|T=Y0}9q{}7aa z^@_dR3vAh*fg_+PMJ`6A|BXm1!KF2HYzYmRmLT>`Lq%t#*7~RAIcUtjXzSE7!P0>} zUUrPu+p%ddW(s`yy#ld?k!rk?Xn9T;WPffh^lqmYVPLDhJQ8S}&xYocz}J4`1*IfZ zz)4y+gWwGTTj*e*ituO^;gQC?1bvHrQk(0{D?7e(Zs|9x&fJ)WpBm1rwT1FOz>(e)-@&RCY)jpuo&R}NNtVrlAbK_ z?HyUqV`)XR+_^>JbvRBk!TW+}G*3P}8@@1{m<+!PgLGdwv)jcSVPo4JKKFr&=I0+h zkZoB8aWg&j%y@o55eb#=O4Iyy@s}CdTRQA}7;M8=b2T{qxi9?+Q$9x zu**ko4uZ=&3v1PdvxI{!Ax`&h?=b4{!~MCVXga`MUYYUU%$ssta_Nh!kwe!zj=W7L zb>Y0zND^rkh)B_tcIZKr0(jU~8&LPgX6~!r>1k8)OwN4WMQr4Kxq6X<*dT044N1%_ z>-;8Zb`kC3kT3u1Ly_X1L9^ELS`#~SoCLO&mM!{8Lfa7lX^qr}Eqs4Wx| z!`}eYtr@Amp(t_tz}vUKOl)!_*9?!$?IinGn?iptN*cC|lvl|hJGsMVP_HNJFG<19 z{Rx511uu)a>Fo`2MJ_ptoZF%fbxXb$3k%#uu(QZsG`t(6o@yOfG^VCYlCBBsL+}N? zM^MD)gI1ak-oz;Hc5VaGys^h~&ELud;|GcfMPdL$TuEGzvQ?VU zZ6WQ5AWUU1-NGjXPp*a{t6)nY!%yra4X&)SJuA;|O2J121Yn2+RT8m_+9@tUIF^u3 z?8J6V2H10ROc7w7+R;~^EI>>TIr@i`ZdBD_KkfF{0cK#6f7ov`!=E!{C$#4mX~j9- zlm&rabHZ}lYpxK705t_!+kH%oJnw!x@iw!Hotk1*{LJA1Eg(r*H54hycSM>HShcU^ z<2?sssp{&=@cjevXLN7DeqqqH-&4b&i-)5gi1SN>M@ln8Mo;X%0VB{z(a8DFIhe0_ z@YKq6{I{H`dSUbU8dV1-ON44M^e3z;_!_dQF{tZk#dp4PiOMfShlEa&Tq3H>W&E84N^^0!iFWqZoM`F=kS=6 zWsfu!E|u6OIOd5w1`ah@7nnY6~@!a}vUp4FB2&~ib{_kVY zrptICI!B=XPJFX^`EvhfeeeHb)5hK*tyy$$k2%dhoASA}jH2Aty~TLGa`3wt1}H~Niy zVd}W{{qg78dJTxs4p~}86)58?U;OZC3qV7|!$f1T2HSG&MCpD}BawteT?l-)=MIbq zm1#QZ1%g@1VNkOt%lDs34F*&ge2r9=^ge43j|RHS5u!${=a?dTk1SazG{dKPwST$} zf2d@pJLAJu0O>DsFU>6)JS0 zx@g(Z-)7$jLoT06GRnZYpePVpqOT9@?li)!pKPdD7+bN4n32}u${&rKj!S-nb@6tZ zRXYd}2Y&vo`FK;p7ow#36lPadH6h?@EYjL-)H!nO&*_SEPm>CBI>2%Zx$MZ$1Z;~f zn-1>W)!5utaElp8ZC1*~WhpRC(nd`Wvx}C+6)Jv(Je`TQe)*2UkK^C!cCUuMer%W< zRV67>72ap+5m3?j=%WVMIhNyyjwAG=Idh-(xaWiU#6C?#s2*5~D6;^6lQuih^!4ZG z`(3c#J{YA<8)Nl4Zpd+j{WTT`5=Q1f9%CjMs3QG}|Bp#?Q%%~)@*ic9LD(sBDGI54syBg>& zF|JQ9FmPa{4r!I*!aGe}?WoMT`l%ZCfM!-#GR#4Q8oWI)n*>HG-VFr?RN%PeBnIWx zY2>>Sg)Y`OzmpKSIMKtaAmWKgY^w*m6pRvoa#Mb7*F?N$rWXIjktF;me~}Ks&={vVUu5sK8a89QNs6^c`6TE69$!CPw<%`&hk?i zPsHfCy{}e;_v`R=2r0yIn#JQ^V}!~Ms?QQLsMR%HpOCe1_`>>ZowOuJpJN8aD!&8@^>_A>vij)NS5d%%GKFLfC1@*d9;1fXO zjbeQ@lqzwJPxfTwBzzDyU;PPavBzL+XuT7af<>1sAB(TXk|Y|F095tf^X&o;L7}<; ztBkj;wc)u@&GV}1l>-oIzM9VY@Ou(i7xhrFLENxy5=lz}TI{rFWjBo-?3uMU&b58M zT3=b8S!VMGon#Fqug?fNfTm!|Qm9=)43c?6j5=6y4uL|3LE17wmfO{LW?oNjAKcbhY;I7C zF=n~NkWb58v>$91cZVY8~HV`|yDNCCk+ys?bs!Em;aXDPIeoX*{4GkvbL` znd9_iM|!mM3*xXjO~mIuWSU;(NL4R22RN)EQha}Xsm?A^qxi2GCG0j{O|r%g8qt!| znaJ!oKL-ZA^}Kp5_Yc@Q{wGL4J<+=5d^;dkQynjA4^HFrh&dXAC6q3#B)}EZP=A%? zlCD2L?UZR9y(itX1M3HFLAu_8(SV-bkCA?4GUP;gr;{PmzqETh!!%nLXmO9Tnpg$) zRDx`Q!`=O9rHMl!SE2xobX%&tBQd^qWkvmh0CJ!iSM&)0BP^qB$-)v##o0xxRyA+v z42DLI+2j6f54iLh)J_s`Gfa3}ULDUA_su1%Jbt7Cd=aEe-UWJ{hdS%FLWnSa7K88; zuib~UC3RF~8H=-d#98wHT~Y-$!nV;5qt{1^R1U&%(=?jLJ((*4oVcde0*i$zV!pYP z-gS5!h+pQRIL7N|leC0RVbztD+*EiREi&n)r>&~%x+WU-FFP$)9XOI6vYXaFkhT9s zS6efFtgK0iQOUny&uo9^Crb?E{(-TsdOGQ9Ym*y0PB^P;LNR}f=}pb~I7}U!HXLa; zD;#!1g#IC2!{^?Ek1x;R@4(n7$x3Ly5-7Kqi!$;Z&QXf0?koxP;@a%(UmlCnZB*!j zX@z2n2DE|ygU+U*kYXOAG(_tLj0Jp39^a$&^iyT`w3j@AmO$d>*F84c#0{?{HdK>f zH7jE44AA?aMU^F*9^*-akQph59wRK`h)nb@rPEqwGD}M;4kAJ$4t>7>Y=AD1W$GJ$ z473fDyf$Md6h*P4c{&ShVo6ly86$oD*bOLIAqfff?2LO|NZNo+r(axd8Okzd^2UP3 zkwYBG@F`K!DjQs))xIubq^;g5&XfjuZa1L3YnvSz)>R7MugLZj80Z zcyqDh(72mSFL@VQ6ezy;)n0XuhzGD?Etj^^@kgg%>Iq#o9VVegZf(UUPFoCbZy7Ml zBbt`D;E=8wyy=E~@NIe=r*>-gu4`v$tyI*v%&Vx>gOHMy^FLhvxau@9$;qqHxN7wu z(OUzCmWTZUZ^4zo-1wie&wVt$HKjF**yl{gPS2aX+GXd(tnj@s9urkfn0-rCWqz`? z6#L}LW*g?`W0$XK*-+c)s>BZQBn{mN&?lV6eDCHf$v;hF*X95krA_xG^Vbc)MOII=D2ote3=eueltf_Uy~L3 zqcR6Uox<6L#JJA^^;1sJi~YbzArJA+4Q%?D$FxneW}hF{*Og0jiULZ`~Uq zCfNCsgP6EBMh6vD%$$4cVx9)+;uwKZ&$?8LOljiQaoq1dgYSCX>0fhY9U-X85hndu z!-^3PM>nMeexeBeXTP4h^d(mYBN~x5vA&j_@E}0${9cg6tmuScQe(HE{1JlB&4;Cvow8%?TMfamoZ}(^a4&uMl*6s;%#V5XUu+Z+``9rlmZ-s~w_s4&)8PBqNx_0f+ Szf_m`Rc9UC?U|=9-uN#gzw_V# delta 5245 zcmZ8ldt6d?|F88_TX~tSQbY4MeX2Q2TqWeaLbFn5sfd@*vYD9zQxB4%vaO{pL)XY# zcsI?vc|r0hZjGrWrl6q(9$ho=011U52~j`RUeELTy?+0mf6n`Jdtbge%d0yUSO09e z;nR=TtXj27Qw8&GeD3~H`oRwT^YE_rsIS)0D2bqz_Y&ccm;33uPDwME&apZOfSzgAh&ANRa6M!kTgPdfb@F)(s(xYM~rP+C#*w$mTzjP5} z6rG|qkTh{kU!betsY~q9VkgqmJ--H6W{7Pzq|Sc#eicMjdxEJ4vxC_Bf z^4L`7O1pg2vWmoOy`{OOvG27 zLA4>f%MIE34Pf!)VE+AeH509)@N5+MWVp9wm}^9I?%33fkNi9JexEApS9ta|nS94w zPupytEnhkG>%Rb`n_}t;aqZMy>77~BT5>E5C^;_u;Xx-)LJ zGkP}IGNbuz7od8$5mxtV9yKxZ4`H==MxbrRh7;l=gMD`p_-ZCzm*@Ce}7%k;8<8)Lo4PRzl70$w27q7Vsm5B6MjCMEpq&hEAK;mZ! za+EBrWjx)XCNm67Mck;_G_Bm*%|Q>$ZsQxwpiFC;!?e_;-it8HRPi})TEq?!vgM1^ zY4_;^7NF&XWCVfpln>oYeV&g8r(Df-`;4F&GW8F3$v+s%ONm){p~306P{>WnCAvK~ zLj@*4VpxtU-7;Kn&+i#ebl9^P`Gv8^a#58$=D4<(@uy2TO(KhXlT5L&ko;1agzK(f zwBi0+ybC~9A(G{I!Ua5mKd>G|WATI69>fbRIhN73VSP0hr1H^V!Y?<6BKe$KZL!K~ zg~Qp*Z95NXHzq*mgcNw&QE!E)2V9cR(3OQiZ^J;9;_}dEDL=Gy({3oeG8`a5OtU<@ zSuQ{0`o$u7OAXp)(oHdY1c(0hqp;=spn)!7zqo2~!`?5WIp`PrFe5p5yD|nggwxjH zO)4Gh9+XnGv-fIKD&(-3WPXrx_Ej8yrB<(+g!H+WmG_P0@gwW-NW#tK*)30dohjBn zX33QK-*oJb>je|tMjD~WL~-nb>n@%^Wy&A8HMptx2lb|qApz>n-Uz+8c$r8#?WLI7 zRwflS)bv$47mw}%178wAnP)<4duv*jr;$z4z!WdiL=Zw6$bOn|=SGuq7k2vVQd_Y6 ztXw)~*_Zp5^eE(|;Ad4jw@1ysz7Qams2g3qZhqFHte;%R47h7@b;c!dVrV+_ZtxW) z6=;88tDu=%xC1c1yiz&H7$u&h`C3|7%$>U5fSl5M4Ad0lY3lU9ZikAV=>ZLg3J;t= zq{Vn3F)yzCY%LSUv{&Rg|m54voE z%*Vl=(Z#eVX`>mMx$x26jJDVg>mQVYrskZR5{}!sK(@)*%}K@moY5-kI*In3yY2(TlylN zyEuCnx%04gGg!W3z^_=362Y@aEhEqABAoZ(!+w8z4uR_5&ZY~zermhW4SlQHv?fje z(`Gs;+c0J1gvbPZWhSqIvJ{VDcb%!Xit*PT2ZR5i(nH2MNH(3c6KnE{6(+e5vqJ5a ziy3$q0!+$D-a0N0IcL>74H7U~doaYFx5MxF4WHc7R83FH4gZ@xMY2FG4LtM)Nn>tX(|mY=0)L72C_YC-JIF-;YB0WbP)b|!nS$MCai;wDT#RPKq7!tDMj-)5rloAr!2&WE3I7X-RxPU*BHe$HVD{za)#lW!uej z-w@C_nTA4GIw;D1o!br}TNUj{B9x4Qv9$q` z`Xk7y5rAx{5HO1zQmOKYV8x0VkC`axZD=t? zZnd57l{w|glC&^!+2>0y_1r^%&l<$lq2z*a=oD>|6r(0hvZke<4CObfPGJ77L>7Ld z@n>Z%6FvGY35AflFq`x#LMUY_Xo1D*)m&T zu9h0E#Ov+W{e2kkydmUTMj1Jn*0%xg`v+8OU-#(GnXTlCnK^%YR#wmA{-tPG>C&6@ zP~O1#{z{t}V)ZaP2WS4P8H9#M;tDm70_K$UcM?w}(ocohx`vFb6&@*6vKp_CHfVlO z`UAPeb-&wBPrvEnYj}M2`)n~FFl>UJxTuqlDh+19-0kS&jmiYx)Bv`CBGHY&gW% zH)h~cW1f$vV2uf+dUQT6RV+!Os4xb_hqB|+JuEdn~1j+`ll1_hl%D~@0kyDCw?g(K<~R= zj`>Nl(0R-ZaJ0`E*==svpY;vnD|8f1VLUCH*Dp-Htn@;(iE40c6y9EyhreA}z|rjb zPMHDJq10)&Vb;m$+U`BAD_0U9@LdN`UQ-WwTHy*mi^5I*F|rN{rVuKl^}LO&R`z(i zrac1Ap&BCbB0<#zAwuf4PX(MMcVFnpn-2+`Pa@pH zgZG!Y@GOH=M&`Bk)QRn=Cy1@jrEGK5C@HM0$>TP2%5cAnn7eS5*mbg2KbsSYZoX6s zM=9==nzi;GF8-XrwTW#m5CldivW>vrx9E=zbcww_hxye;!z0UfV;oF6LDRtY_5)TO z-jbZzes7h@_H~)B2(Yq9f60{%@B$<$w5!%f+(&q^OQL=qp;O(OCT1BHnxgna63f1v|VGl(nCfk$qahHQ+pA@Is|#+?Ye{mkfIZ@)ctDK!*1 zBSL@uow68~k1V8$JYB);#=Qalw6&0GLPIB#Z=K{tvg^d7mz6@mI_}9<^p33*EEHQu z4X(hF(Kchjlp@o#_ou~M|9UH(C{R+i!4tr@bypu?!#^D<@oq!0iY6ZKIzeu~qvtbL zM}*VlfWW(GiqlhjGHp8jf570|;tV_Eul%rAk2>1RS*%A6A=kcWFFaN+)%~bM!>QF< zu4>NE{y54;y}$Q{55^%yRFL~`b~g1*=pTJ1CYPh)pNf*dy- z6m_`|yU?PCn)=97wze1MWzrVCjThMIn2$JjZS#$__PEFAe3vgsScz@HaLh4n;|GW7 zC#%WY-AX0+*XBH1AL{3uyz8L$6Ck&C1N6=Wt~hAvi1YJpy^%>EEM2{6A40UHISfhF z+d#`n%?={PV1$}O)Vc!5cCe?L8;7JsmvH7djb+9LIC)6aE)$v|HLTg>Ou24 zyMn7cL@o&>-^)vgeP^0L-0pCwwTrmVp89&ccO#T18|gtQQyoKmV+>b2{hb{`j`t=7 z6hF&p=zwG-F}r>-q@zvW!lEPN7^aEEu7aFlpZJJE!Y$va8T+@DaG>57IA;!CUV<)kv*-?MX74vZ-|u}>*`Tf46_t?98k>~DYxtZpXC!SUkuq2X z1#@-qbyrswTfpg;i{hg+7N@7IRU#%Y49+efJ~3Y^nqH+gL`1O8RFw_gWWV2Fgyjoz zKpLujB$lvc%VQuk?>wHfasf;Uoe{f48=mW});;b^*mKwu3jz4dE`Ku!)Pr4J+el>>Ysk%`T~Jo zR(BwV&&hL63S+zq0Yxv%Z*XI-DYebS)sdpyTIDKhXqX@0^8FoRNjY(w+R`YsxJd%C z4{?qZN*;3uv?2*+w_06X-U)0jjOPZn))}L|stVDpGJNvkqQ~#(fBtaMaL92-(J*nG zzs1qd_YdWtM(I`6M}vQvSp%vnr;shX-{bmH2g#+LEpLxdEg=tB6r7d}7((KU^540G zT0WT(nRM|Be`pB!#$Ri^){cjT+IXRXU`)KF02NhSJXHk`)e559DpgSPcslb2YV|Hkv$b;*fsyb%oefKwo_ z&D;kLqemMQMR_$Xshb*a-M!U%%9=M+mk2JB9#4m{aFwJbQT$jW=S$Wj> z>`>6Ac!3)|BqZ#FAeZ6!aA8)v9DEqD-~Z@v^k0^U`YvPUZd}Z9jEjV(LW|whL>!8P zztPwmmTtJ^PP2B^)autkl^gz1^COnrg-rH7lzo1#@7VnSk2$KMneSETJa9@~UZL9r zE|5xE^P`Tj0`RkSPvXvxY{719&djH4TFamEjpn{Rfs?nHaDTY4BF7|{JIs&3vb(CO z*3fbW2JN&sv8DgmMko|kho>`~Yi>?k;J1J4%YL`z@l)?xMkR2^dm+c?n-rLI-EvZd z(9kWH_n`K?8jC}2pb$&onBZb{eKEWH(N>)Q>(3{xBiEaJW?EcV<&auetN#j``}o5n z%Ha$&NA-a@$R$1*=MvIRL?}MBi|f}fTk;LR=U4}QK0@ewEN}E8pZ6W5rv)=>^Gm1#FJ@bN zhH)VD_K>f~sYtDxZhzVuaC$P!(7#eHee%p#8wkdai)*j-W2QQmDk2Jg16gKiChew6 zneIk1u?IUm(d7NW3sOnaj#JqOjGrQeL91F1E}LE$&LQT$FQ_2Xes-2XyH&u(gNo9M zfZqSODsI2|mhGSq!kCT!lNtHdeP+Z9eENs~1get_timingsBaseClient get_webhookAutoScaleClient http_log_debugBaseClient + identityBaseClient listBaseClient list_policiesAutoScaleClient list_webhooksAutoScaleClient @@ -166,7 +167,7 @@ diff --git a/docs/html/classpyrax_1_1fakes_1_1FakeBlockStorageClient-members.html b/docs/html/classpyrax_1_1fakes_1_1FakeBlockStorageClient-members.html index 46644f73..279bd231 100644 --- a/docs/html/classpyrax_1_1fakes_1_1FakeBlockStorageClient-members.html +++ b/docs/html/classpyrax_1_1fakes_1_1FakeBlockStorageClient-members.html @@ -105,8 +105,10 @@ findallBaseClient getBaseClient get_limitsBaseClient + get_snapshotCloudBlockStorageClient get_timingsBaseClient http_log_debugBaseClient + identityBaseClient listBaseClient list_snapshotsCloudBlockStorageClient list_typesCloudBlockStorageClient @@ -127,6 +129,8 @@ timesBaseClient timingsBaseClient unauthenticateBaseClient + updateCloudBlockStorageClient + update_snapshotCloudBlockStorageClient user_agentBaseClient [static] verify_sslBaseClient versionBaseClient @@ -148,7 +152,7 @@ diff --git a/docs/html/classpyrax_1_1fakes_1_1FakeBlockStorageManager-members.html b/docs/html/classpyrax_1_1fakes_1_1FakeBlockStorageManager-members.html index ac730a3a..2f9a25f3 100644 --- a/docs/html/classpyrax_1_1fakes_1_1FakeBlockStorageManager-members.html +++ b/docs/html/classpyrax_1_1fakes_1_1FakeBlockStorageManager-members.html @@ -109,6 +109,7 @@ resource_classBaseManager [static] response_keyBaseManager [static] run_hooksBaseManager + updateCloudBlockStorageManager uri_baseBaseManager [static] @@ -128,7 +129,7 @@ diff --git a/docs/html/classpyrax_1_1fakes_1_1FakeClient-members.html b/docs/html/classpyrax_1_1fakes_1_1FakeClient-members.html index b1850201..365934ec 100644 --- a/docs/html/classpyrax_1_1fakes_1_1FakeClient-members.html +++ b/docs/html/classpyrax_1_1fakes_1_1FakeClient-members.html @@ -90,6 +90,8 @@
        This is the complete list of members for FakeClient, including all inherited members. + +
        __init__FakeClient
        identityFakeClient
        user_agentFakeClient [static]
        USER_AGENTFakeClient [static]
        @@ -110,7 +112,7 @@ diff --git a/docs/html/classpyrax_1_1fakes_1_1FakeClient.html b/docs/html/classpyrax_1_1fakes_1_1FakeClient.html index 0c9a3b39..752e23db 100644 --- a/docs/html/classpyrax_1_1fakes_1_1FakeClient.html +++ b/docs/html/classpyrax_1_1fakes_1_1FakeClient.html @@ -100,6 +100,8 @@
        FakeClient Class Reference
        @@ -108,12 +110,65 @@

        List of all members.

        + + + +

        +Public Member Functions

        def __init__

        +Public Attributes

         identity

        Static Public Attributes

        string user_agent = "Fake"
        string USER_AGENT = "Fake"
        +

        Constructor & Destructor Documentation

        + +
        +
        + + + + + + + + + + + + + + + + + + + + + + + + +
        def __init__ ( self,
         args,
         kwargs 
        )
        +
        +
        + +
        +

        Member Data Documentation

        + +
        +
        + + + + +
        identity
        +
        +
        + +
        +
        @@ -161,7 +216,7 @@ diff --git a/docs/html/classpyrax_1_1fakes_1_1FakeCloudMonitorClient-members.html b/docs/html/classpyrax_1_1fakes_1_1FakeCloudMonitorClient-members.html index 17dadde6..e0cfba15 100644 --- a/docs/html/classpyrax_1_1fakes_1_1FakeCloudMonitorClient-members.html +++ b/docs/html/classpyrax_1_1fakes_1_1FakeCloudMonitorClient-members.html @@ -126,6 +126,7 @@ get_overviewCloudMonitorClient get_timingsBaseClient http_log_debugBaseClient + identityBaseClient listCloudMonitorClient list_alarmsCloudMonitorClient list_check_typesCloudMonitorClient @@ -179,7 +180,7 @@ diff --git a/docs/html/classpyrax_1_1fakes_1_1FakeCloudNetworkClient-members.html b/docs/html/classpyrax_1_1fakes_1_1FakeCloudNetworkClient-members.html index 591d0a61..b5ae7c94 100644 --- a/docs/html/classpyrax_1_1fakes_1_1FakeCloudNetworkClient-members.html +++ b/docs/html/classpyrax_1_1fakes_1_1FakeCloudNetworkClient-members.html @@ -106,6 +106,7 @@ get_server_networksCloudNetworkClient get_timingsBaseClient http_log_debugBaseClient + identityBaseClient listBaseClient management_urlBaseClient method_deleteBaseClient @@ -148,7 +149,7 @@ diff --git a/docs/html/classpyrax_1_1fakes_1_1FakeDNSClient-members.html b/docs/html/classpyrax_1_1fakes_1_1FakeDNSClient-members.html index 4dadcaa6..724c21a8 100644 --- a/docs/html/classpyrax_1_1fakes_1_1FakeDNSClient-members.html +++ b/docs/html/classpyrax_1_1fakes_1_1FakeDNSClient-members.html @@ -117,6 +117,7 @@ get_subdomain_iteratorCloudDNSClient get_timingsBaseClient http_log_debugBaseClient + identityBaseClient import_domainCloudDNSClient listCloudDNSClient list_next_pageCloudDNSClient @@ -172,7 +173,7 @@ diff --git a/docs/html/classpyrax_1_1fakes_1_1FakeDatabaseClient-members.html b/docs/html/classpyrax_1_1fakes_1_1FakeDatabaseClient-members.html index f211cacc..fdf5998f 100644 --- a/docs/html/classpyrax_1_1fakes_1_1FakeDatabaseClient-members.html +++ b/docs/html/classpyrax_1_1fakes_1_1FakeDatabaseClient-members.html @@ -115,6 +115,7 @@ get_userCloudDatabaseClient grant_user_accessCloudDatabaseClient http_log_debugBaseClient + identityBaseClient listBaseClient list_backupsCloudDatabaseClient list_databasesCloudDatabaseClient @@ -165,7 +166,7 @@ diff --git a/docs/html/classpyrax_1_1fakes_1_1FakeEndpoint-members.html b/docs/html/classpyrax_1_1fakes_1_1FakeEndpoint-members.html new file mode 100644 index 00000000..4b0881e1 --- /dev/null +++ b/docs/html/classpyrax_1_1fakes_1_1FakeEndpoint-members.html @@ -0,0 +1,129 @@ + + + + + +pyrax: Member List + + + + + + + + + + + +
        + + +
        + + + + + + + + + + + +
        +
        pyrax + +
        +
        Python Bindings for the Rackspace Cloud
        +
        +
        + + + + + + +
        +
        +
        +
        FakeEndpoint Member List
        +
        +
        +This is the complete list of members for FakeEndpoint, including all inherited members. + + + + + + + + + + + + +
        __getattr__Endpoint
        __init__Endpoint
        attr_mapEndpoint [static]
        clientEndpoint
        client_privateEndpoint
        getEndpoint
        identityEndpoint
        private_urlEndpoint [static]
        public_urlEndpoint [static]
        regionEndpoint [static]
        serviceEndpoint
        tenant_idEndpoint [static]
        + + + + +
        + +
        + + + + + + + diff --git a/docs/html/classpyrax_1_1fakes_1_1FakeEndpoint.html b/docs/html/classpyrax_1_1fakes_1_1FakeEndpoint.html new file mode 100644 index 00000000..df01ca98 --- /dev/null +++ b/docs/html/classpyrax_1_1fakes_1_1FakeEndpoint.html @@ -0,0 +1,144 @@ + + + + + +pyrax: FakeEndpoint Class Reference + + + + + + + + + + + +
        + + +
        + + + + + + + + + + + +
        +
        pyrax + +
        +
        Python Bindings for the Rackspace Cloud
        +
        +
        + + + + + + + + + +
        + +
        + + +
        +
        +
        +
        FakeEndpoint Class Reference
        +
        +
        +
        +Inheritance diagram for FakeEndpoint:
        +
        +
        + + +Endpoint + +
        + +

        List of all members.

        +
        The documentation for this class was generated from the following file: +
        + + + + +
        + +
        + + + + + + + diff --git a/docs/html/classpyrax_1_1fakes_1_1FakeEndpoint.png b/docs/html/classpyrax_1_1fakes_1_1FakeEndpoint.png new file mode 100644 index 0000000000000000000000000000000000000000..f7725144ffa266ed971ea0990f6f9b63a8f28ba1 GIT binary patch literal 379 zcmeAS@N?(olHy`uVBq!ia0vp^kw6^4!3-o_Z)t`CDTx4|5ZC|z{{xvX-h3_XKQsZz z0^9Q7kP61Pb1w?DC~&y$HGTZQ{*zrp zW7pQF8={5xh;+E`2s)qnb<-9-JFzGGCowXtaE?7!k=g$zG^4GjRf}CLgMW&1B-im@1*ZYz7(JI_K!#CP&ePW|=1n?3O1S_qnu9SGD*m{zQKAPdn9nz5bimGn?i+$*D$3 z7?*e~d*v|ktmerDB2oJHwlQj~bDXC0c8YViH;1M}liOJ@uXB@P_pF$0C|4@GOv*_t z>FRmaqUCK{&D`G=M|)b&?Y}yq>*u}fxyLszT$k}o+UCX&qoP0a-#dNV#BWg`ynFec Skc+^OV(@hJb6Mw<&;$Uok)s*_ literal 0 HcmV?d00001 diff --git a/docs/html/classpyrax_1_1fakes_1_1FakeIdentity-members.html b/docs/html/classpyrax_1_1fakes_1_1FakeIdentity-members.html index 4d1f393b..0d7d0313 100644 --- a/docs/html/classpyrax_1_1fakes_1_1FakeIdentity-members.html +++ b/docs/html/classpyrax_1_1fakes_1_1FakeIdentity-members.html @@ -90,59 +90,71 @@
        This is the complete list of members for FakeIdentity, including all inherited members. + - - - - + + + + + + + - - - - - - - + + + + + + + - - - - - + + + + + + + + - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + - - - - - + + + + + + + + + - - - - - - + + + + + - +
        __getattr__BaseIdentity
        __init__FakeIdentity
        pyrax::identity::rax_identity::RaxIdentity.__init__BaseAuth
        auth_endpointBaseAuth
        auth_endpointBaseAuth
        auth_tokenBaseAuth
        pyrax::base_identity::BaseIdentity.__init__BaseIdentity
        add_role_to_userBaseIdentity
        api_keyBaseIdentity
        auth_endpointBaseIdentity
        auth_endpointBaseIdentity
        auth_tokenBaseIdentity
        auth_with_tokenFakeIdentity
        authenticateFakeIdentity
        pyrax::base_identity::BaseIdentity.authenticateBaseIdentity
        authenticatedFakeIdentity
        check_tokenBaseAuth
        create_tenantBaseAuth
        create_userBaseAuth
        delete_tenantBaseAuth
        delete_userBaseAuth
        expiresBaseAuth [static]
        expiresBaseAuth
        check_tokenBaseIdentity
        create_tenantBaseIdentity
        create_userBaseIdentity
        delete_role_from_userBaseIdentity
        delete_tenantBaseIdentity
        delete_userBaseIdentity
        expiresBaseIdentity
        fake_responseFakeIdentity
        find_user_by_idRaxIdentity
        find_user_by_nameRaxIdentity
        get_default_regionBaseAuth
        get_extensionsBaseAuth
        get_tenantBaseAuth
        find_user_by_emailBaseIdentity
        find_user_by_idBaseIdentity
        find_user_by_nameBaseIdentity
        get_clientBaseIdentity
        get_default_regionBaseIdentity
        get_extensionsBaseIdentity
        get_roleBaseIdentity
        get_tenantBaseIdentity
        get_tokenFakeIdentity
        get_token_endpointsBaseAuth
        get_user_credentialsRaxIdentity
        http_log_debugBaseAuth [static]
        list_credentialsRaxIdentity
        list_roles_for_userBaseAuth
        list_tenantsBaseAuth
        list_tokensBaseAuth
        list_usersBaseAuth
        method_deleteBaseAuth
        method_getBaseAuth
        method_headBaseAuth
        method_patchBaseAuth
        method_postBaseAuth
        method_putBaseAuth
        get_token_endpointsBaseIdentity
        get_userBaseIdentity
        http_log_debugBaseIdentity
        keyring_authBaseIdentity
        list_credentialsBaseIdentity
        list_rolesBaseIdentity
        list_roles_for_userBaseIdentity
        list_tenantsBaseIdentity
        list_tokensBaseIdentity
        list_usersBaseIdentity
        method_deleteBaseIdentity
        method_getBaseIdentity
        method_headBaseIdentity
        method_patchBaseIdentity
        method_postBaseIdentity
        method_putBaseIdentity
        passwordFakeIdentity
        regionBaseAuth
        regionsBaseAuth
        servicesBaseAuth
        set_credential_fileBaseAuth
        set_credentialsBaseAuth
        regionBaseIdentity
        regionsBaseIdentity
        reset_api_keyBaseIdentity
        revoke_tokenBaseIdentity
        service_catalogBaseIdentity
        service_mappingBaseIdentity
        servicesBaseIdentity
        set_credential_fileBaseIdentity
        set_credentialsBaseIdentity
        tenant_idFakeIdentity
        tenant_nameFakeIdentity
        tokenFakeIdentity
        unauthenticateBaseAuth
        update_tenantBaseAuth
        update_userRaxIdentity
        pyrax::base_identity::BaseAuth.update_userBaseAuth
        userBaseAuth
        user_agentBaseAuth [static]
        unauthenticateBaseIdentity
        update_tenantBaseIdentity
        update_userBaseIdentity
        userBaseIdentity
        user_agentBaseIdentity
        usernameFakeIdentity
        verify_sslBaseAuth
        verify_sslBaseIdentity
        - +

        Class that returns canned authentication responses. More...

        @@ -115,8 +115,7 @@
        -RaxIdentity -BaseAuth +BaseIdentity
        @@ -126,9 +125,8 @@ Public Member Functions def __init__ def authenticate - If the user's credentials include an API key, the default behavior will work.
        def auth_with_token - If a valid token is already known, this call will use it to generate the service catalog.
        + If a valid token is already known, this call uses it to generate the service catalog.
        def get_token  Returns the auth token, if it is valid.
        def fake_response @@ -215,9 +213,9 @@
        -

        If a valid token is already known, this call will use it to generate the service catalog.

        +

        If a valid token is already known, this call uses it to generate the service catalog.

        -

        Reimplemented from RaxIdentity.

        +

        Reimplemented from BaseIdentity.

        @@ -236,11 +234,6 @@
        -

        If the user's credentials include an API key, the default behavior will work.

        -

        But if they are using a password, the initial attempt will fail, so try again, but this time using the standard password format.

        - -

        Reimplemented from RaxIdentity.

        -
        @@ -286,9 +279,9 @@

        Returns the auth token, if it is valid.

        -

        If not, calls the auth endpoint to get a new token. Passing 'True' to 'force' will force a call for a new token, even if there already is a valid token.

        +

        If not, calls the auth endpoint to get a new token. Passing 'True' to 'force' forces a call for a new token, even if there already is a valid token.

        -

        Reimplemented from BaseAuth.

        +

        Reimplemented from BaseIdentity.

        @@ -304,7 +297,7 @@
        -

        Reimplemented from RaxIdentity.

        +

        Reimplemented from BaseIdentity.

        @@ -319,7 +312,7 @@
        -

        Reimplemented from RaxIdentity.

        +

        Reimplemented from BaseIdentity.

        @@ -334,7 +327,7 @@
        -

        Reimplemented from BaseAuth.

        +

        Reimplemented from BaseIdentity.

        @@ -349,7 +342,7 @@
        -

        Reimplemented from BaseAuth.

        +

        Reimplemented from BaseIdentity.

        @@ -364,7 +357,7 @@
        -

        Reimplemented from BaseAuth.

        +

        Reimplemented from BaseIdentity.

        @@ -379,7 +372,7 @@
        -

        Reimplemented from RaxIdentity.

        +

        Reimplemented from BaseIdentity.

        @@ -404,7 +397,7 @@ diff --git a/docs/html/classpyrax_1_1fakes_1_1FakeIdentity.png b/docs/html/classpyrax_1_1fakes_1_1FakeIdentity.png index bcbb490ee64e52afd0cb92b56c2c2b78979c20da..fe62271d6c49f52b87d1ddc98517a1a329258b62 100644 GIT binary patch delta 346 zcmV-g0j2(&1fK(t7Ya}a0{{R3xz7Thks&*OE=fc|RCodHoy`t}APj^VO?dxD-UDr^ z6vV@1*G)naK(FN_w{jlTmOvs90I*OJd3X)&Q{Z&V78t}4D30m~6T7!KfHsGW z#tlGu*Q4nRC-53wyv(5`<^r5PZh$Ui3DK;0*Hkb9)tObu-p|3c(Q`@a2Dr)L6QJgQ zP^z}6vYJp$J3FkK!Up!k%>la0lHbF30@=UOr>#EL{1LELGLa3el}w}q|DehVOke^N zn7{-k@C!hYTLCwa1QLN#qAtHEMVSa%p8|vKBVZ6mVDnQf+oH$;QvuNCkkMHkfJQTt zbv0sB-y_haP__)f>Ej0Iuc85E;apQi!3gZm>_QH%g;ZQl-x?T0TZeoH)Y@5y^D3(e s%}(D=x+!d+zhVraW90Ynoj`K?06pLloS?Bk`~Uy|07*qoM6N<$f^O`ai~s-t delta 472 zcmV;}0Vn>S1Dphq7Yc|70{{R3N1~kFks&*Ot4TybRCodHon4N@APj^viNyVnybm^D z8$#0VsA(l5+JG^i{~&qY4szR$o!Sz}2Lb@j)!h=pd=4D8`Bl608c-dr|FTnokRh-` z6|RA@r}xp%fH-I&VQbSi|lhC?< zb`8vzLjoTHvOlADTe+?I5U><7kqs<`Or!&UpvnnMU;-1Ezyv1n1HgmawqvKZ1ag4@ zfT*B?nOyn`INP}Z&ct&dP>n<9UA$ulWDNax+!;_+TsPvlv;dkMs$;>xiMf@B;-v-` z5F(!Wf04rzA53||(mh}=O32~sKq=mTd6laPHRR6@v7%oe`55E)0{*2N; z^iKgxArslaQpiL)@CT}#zyu~RfeB1t0zUu*xozMEl0YI*OVs5~X_Toz`V=_m-U1Hd z5h#ADq?W9YxJ8i0+~NUc{RZD{)lG%3_A0XTgufc7djpiYcyRSNN#^@!Xfs#!MtGr O0000 + + + + +pyrax: Member List + + + + + + + + + + + +
        + + +
        + + + + + + + + + + + +
        +
        pyrax + +
        +
        Python Bindings for the Rackspace Cloud
        +
        +
        + + + + + + +
        +
        +
        +
        FakeIdentityService Member List
        +
        + + + + + +
        + +
        + + + + + + + diff --git a/docs/html/classpyrax_1_1fakes_1_1FakeIdentityService.html b/docs/html/classpyrax_1_1fakes_1_1FakeIdentityService.html new file mode 100644 index 00000000..05998ab2 --- /dev/null +++ b/docs/html/classpyrax_1_1fakes_1_1FakeIdentityService.html @@ -0,0 +1,290 @@ + + + + + +pyrax: FakeIdentityService Class Reference + + + + + + + + + + + +
        + + +
        + + + + + + + + + + + +
        +
        pyrax + +
        +
        Python Bindings for the Rackspace Cloud
        +
        +
        + + + + + + + + + +
        + +
        + + +
        +
        + +
        +
        FakeIdentityService Class Reference
        +
        +
        +
        +Inheritance diagram for FakeIdentityService:
        +
        +
        + + +Service + +
        + +

        List of all members.

        + + + + + + + + + + + +

        +Public Member Functions

        def __init__
         Parse the catalog entry for a particular service.

        +Public Attributes

         identity
         name
         prefix
         service_type
         clients
         endpoints
        +

        Constructor & Destructor Documentation

        + +
        +
        + + + + + + + + + + + + + + + + + + + + + + + + +
        def __init__ ( self,
         identity,
         catalog 
        )
        +
        +
        + +

        Parse the catalog entry for a particular service.

        + +

        Reimplemented from Service.

        + +
        +
        +

        Member Data Documentation

        + +
        +
        + + + + +
        clients
        +
        +
        + +

        Reimplemented from Service.

        + +
        +
        + +
        +
        + + + + +
        endpoints
        +
        +
        + +

        Reimplemented from Service.

        + +
        +
        + +
        +
        + + + + +
        identity
        +
        +
        + +

        Reimplemented from Service.

        + +
        +
        + +
        +
        + + + + +
        name
        +
        +
        + +

        Reimplemented from Service.

        + +
        +
        + +
        +
        + + + + +
        prefix
        +
        +
        + +

        Reimplemented from Service.

        + +
        +
        + +
        +
        + + + + +
        service_type
        +
        +
        + +

        Reimplemented from Service.

        + +
        +
        +
        The documentation for this class was generated from the following file: +
        + + + + +
        + +
        + + + + + + + diff --git a/docs/html/classpyrax_1_1fakes_1_1FakeIdentityService.png b/docs/html/classpyrax_1_1fakes_1_1FakeIdentityService.png new file mode 100644 index 0000000000000000000000000000000000000000..930909eb04c791e03ae8d01f2e9a42b23fc24321 GIT binary patch literal 460 zcmeAS@N?(olHy`uVBq!ia0vp^H9#D|!3-qdtb2G6NJ#|vgt-3y{~ySF@#br3|Dg#$ z78oBmaDcV*jy#adQ4-`A%m7pb0#{Fk7%?y~MtizAhEy=VoqN0QumX=uq4vlB^Y`%o z*cG!W+H0*=vZ`)jbHAk8%j`-uw@SN9Oa%wR9bHU*KDC%*X7IjoGt=8ya#ub**<@V0 zE%myZl<)DxFXg5G(k+4tY-YZiI@z-BxY4#;QDi z{s)QMAK&G(co5I+-?K@)wD{lkL)pGd(m}-XL-}vY4luII6u^i-$^~9MPL-P&>yj;Q zpa1l5nceZuvLEW{$084jo9jPN^bJ09^;GQlT^hSJ{see6t?2EvU(BY%Q1~;zXP;Za z-pG|z9=x)@oUKYs5AoO=ExTX5eY)1ejI^9n;wDQUW$xm6c+q6l1l>(vRXXn%%+BWy ze9L?%tWvjn`;$Ct8$}bNHhmuR71lRCXYaV(x$pnfH|uWCyuDQRrsB`iu(DncT literal 0 HcmV?d00001 diff --git a/docs/html/classpyrax_1_1fakes_1_1FakeImageClient-members.html b/docs/html/classpyrax_1_1fakes_1_1FakeImageClient-members.html index bdbed2b1..d8611d37 100644 --- a/docs/html/classpyrax_1_1fakes_1_1FakeImageClient-members.html +++ b/docs/html/classpyrax_1_1fakes_1_1FakeImageClient-members.html @@ -116,6 +116,7 @@ get_taskImageClient get_timingsBaseClient http_log_debugBaseClient + identityBaseClient import_taskImageClient listImageClient pyrax::client::BaseClient.listBaseClient @@ -162,7 +163,7 @@ diff --git a/docs/html/classpyrax_1_1fakes_1_1FakeLoadBalancerClient-members.html b/docs/html/classpyrax_1_1fakes_1_1FakeLoadBalancerClient-members.html index 22007416..8976ffc1 100644 --- a/docs/html/classpyrax_1_1fakes_1_1FakeLoadBalancerClient-members.html +++ b/docs/html/classpyrax_1_1fakes_1_1FakeLoadBalancerClient-members.html @@ -131,6 +131,7 @@ get_timingsBaseClient get_usageCloudLoadBalancerClient http_log_debugBaseClient + identityBaseClient listBaseClient management_urlBaseClient method_deleteBaseClient @@ -184,7 +185,7 @@ diff --git a/docs/html/classpyrax_1_1fakes_1_1FakeManager-members.html b/docs/html/classpyrax_1_1fakes_1_1FakeManager-members.html index d08162cc..bf9aa66a 100644 --- a/docs/html/classpyrax_1_1fakes_1_1FakeManager-members.html +++ b/docs/html/classpyrax_1_1fakes_1_1FakeManager-members.html @@ -90,8 +90,9 @@
        This is the complete list of members for FakeManager, including all inherited members. + - + @@ -115,7 +116,7 @@ diff --git a/docs/html/classpyrax_1_1fakes_1_1FakeManager.html b/docs/html/classpyrax_1_1fakes_1_1FakeManager.html index a9811c76..9d029013 100644 --- a/docs/html/classpyrax_1_1fakes_1_1FakeManager.html +++ b/docs/html/classpyrax_1_1fakes_1_1FakeManager.html @@ -101,7 +101,7 @@
        FakeManager Class Reference
        @@ -111,16 +111,51 @@
        __init__FakeManager
        actionFakeManager
        apiFakeManager [static]
        apiFakeManager
        createFakeManager
        deleteFakeManager
        findFakeManager
        + - - + +

        Public Member Functions

        def __init__
        def list
        def get
        def delete
        def create
        def find
        def action

        -Static Public Attributes

        tuple api = FakeClient()

        +Public Attributes

         api
        +

        Constructor & Destructor Documentation

        + +
        +
        + + + + + + + + + + + + + + + + + + + + + + + + +
        def __init__ ( self,
         args,
         kwargs 
        )
        +
        +
        + +
        +

        Member Function Documentation

        @@ -299,12 +334,12 @@

        Member Data Documentation

        - +
        - +
        tuple api = FakeClient() [static]api
        @@ -333,7 +368,7 @@ diff --git a/docs/html/classpyrax_1_1fakes_1_1FakeNovaVolumeClient-members.html b/docs/html/classpyrax_1_1fakes_1_1FakeNovaVolumeClient-members.html index 43819b53..60aae029 100644 --- a/docs/html/classpyrax_1_1fakes_1_1FakeNovaVolumeClient-members.html +++ b/docs/html/classpyrax_1_1fakes_1_1FakeNovaVolumeClient-members.html @@ -102,6 +102,7 @@ get_limitsBaseClient get_timingsBaseClient http_log_debugBaseClient + identityBaseClient listBaseClient management_urlBaseClient method_deleteBaseClient @@ -141,7 +142,7 @@ diff --git a/docs/html/classpyrax_1_1fakes_1_1FakeQueueClient-members.html b/docs/html/classpyrax_1_1fakes_1_1FakeQueueClient-members.html index 30f472fb..8d1722ff 100644 --- a/docs/html/classpyrax_1_1fakes_1_1FakeQueueClient-members.html +++ b/docs/html/classpyrax_1_1fakes_1_1FakeQueueClient-members.html @@ -112,6 +112,7 @@ get_statsQueueClient get_timingsBaseClient http_log_debugBaseClient + identityBaseClient listBaseClient list_messagesQueueClient list_messages_by_claimQueueClient @@ -159,7 +160,7 @@ diff --git a/docs/html/classpyrax_1_1fakes_1_1FakeRaxIdentity-members.html b/docs/html/classpyrax_1_1fakes_1_1FakeRaxIdentity-members.html new file mode 100644 index 00000000..fae0df65 --- /dev/null +++ b/docs/html/classpyrax_1_1fakes_1_1FakeRaxIdentity-members.html @@ -0,0 +1,128 @@ + + + + + +pyrax: Member List + + + + + + + + + + + +
        + + +
        + + + + + + + + + + + +
        +
        pyrax + +
        +
        Python Bindings for the Rackspace Cloud
        +
        +
        + + + + + + +
        +
        +
        +
        FakeRaxIdentity Member List
        +
        + + + + + +
        + +
        + + + + + + + diff --git a/docs/html/classpyrax_1_1fakes_1_1FakeRaxIdentity.html b/docs/html/classpyrax_1_1fakes_1_1FakeRaxIdentity.html new file mode 100644 index 00000000..d1462f4f --- /dev/null +++ b/docs/html/classpyrax_1_1fakes_1_1FakeRaxIdentity.html @@ -0,0 +1,144 @@ + + + + + +pyrax: FakeRaxIdentity Class Reference + + + + + + + + + + + +
        + + +
        + + + + + + + + + + + +
        +
        pyrax + +
        +
        Python Bindings for the Rackspace Cloud
        +
        +
        + + + + + + + + + +
        + +
        + + +
        +
        +
        +
        FakeRaxIdentity Class Reference
        +
        +
        +
        +Inheritance diagram for FakeRaxIdentity:
        +
        +
        + + +RaxIdentity + +
        + +

        List of all members.

        +
        The documentation for this class was generated from the following file: +
        + + + + +
        + +
        + + + + + + + diff --git a/docs/html/classpyrax_1_1fakes_1_1FakeRaxIdentity.png b/docs/html/classpyrax_1_1fakes_1_1FakeRaxIdentity.png new file mode 100644 index 0000000000000000000000000000000000000000..c4192b396504b70c7af83f5f7296af97f651d02d GIT binary patch literal 445 zcmeAS@N?(olHy`uVBq!ia0vp^sX!dS!3-qLMZF&bDTx4|5ZC|z{{xvX-h3_XKQsZz z0^K$8m1TaKeU|!r|<@fh3
        - +

        Implements the Keystone-specific behaviors for Identity. More...

        -
        -Inheritance diagram for KeystoneIdentity:
        -
        -
        - - -BaseAuth - -
        + +

        Inherits BaseIdentity.

        List of all members.


        Detailed Description

        @@ -142,7 +135,7 @@ diff --git a/docs/html/classpyrax_1_1identity_1_1rax__identity_1_1RaxIdentity-members.html b/docs/html/classpyrax_1_1identity_1_1rax__identity_1_1RaxIdentity-members.html index fd5e5704..b930b0a6 100644 --- a/docs/html/classpyrax_1_1identity_1_1rax__identity_1_1RaxIdentity-members.html +++ b/docs/html/classpyrax_1_1identity_1_1rax__identity_1_1RaxIdentity-members.html @@ -91,60 +91,17 @@
        - +

        This class handles all of the authentication requirements for working with the Rackspace Cloud. More...

        @@ -116,8 +116,7 @@
        -BaseAuth -FakeIdentity +FakeRaxIdentity
        @@ -131,14 +130,16 @@  If a valid token is already known, this call will use it to generate the service catalog.
        def find_user_by_name  Returns a User object by searching for the supplied user name.
        +def find_user_by_email + Returns a User object by searching for the supplied user's email address.
        def find_user_by_id  Returns a User object by searching for the supplied user ID.
        +def get_user + Returns the user specified by either ID, username or email.
        def update_user  Allows you to update settings for a given user.
        -def list_credentials - Returns a user's non-password credentials.
        -def get_user_credentials - Returns a user's non-password credentials.
        +def reset_api_key + Resets the API key for the specified user, or if no user is specified, for the current user.

        Public Attributes

         username @@ -187,10 +188,6 @@

        If a valid token is already known, this call will use it to generate the service catalog.

        -

        Reimplemented from BaseAuth.

        - -

        Reimplemented in FakeIdentity.

        -
        @@ -201,8 +198,36 @@ def authenticate (   - self) + self, + + + + +   + username = None, + + + + +   + password = None, + + + +   + api_key = None, + + + + +   + tenant_id = None  + + + + ) + @@ -211,9 +236,35 @@

        If the user's credentials include an API key, the default behavior will work.

        But if they are using a password, the initial attempt will fail, so try again, but this time using the standard password format.

        -

        Reimplemented from BaseAuth.

        + + + +
        +
        + + + + + + + + + + + + + + + + + + +
        def find_user_by_email ( self,
         email 
        )
        +
        +
        -

        Reimplemented in FakeIdentity.

        +

        Returns a User object by searching for the supplied user's email address.

        +

        Returns None if there is no match for the given ID.

        @@ -277,12 +328,12 @@ - +
        - + @@ -291,7 +342,19 @@ - + + + + + + + + + + + + + @@ -302,16 +365,18 @@
        -

        Returns a user's non-password credentials.

        +

        Returns the user specified by either ID, username or email.

        +

        Since more than user can have the same email address, searching by that term will return a list of 1 or more User objects. Searching by username or ID will return a single User.

        +

        If a user_id that doesn't belong to the current account is searched for, a Forbidden exception is raised. When searching by username or email, a NotFound exception is raised if there is no matching user.

        - +
        def get_user_credentials def get_user (   self,  user user_id = None,
         username = None,
         email = None 
        - + @@ -320,7 +385,7 @@ - + @@ -331,7 +396,9 @@
        -

        Returns a user's non-password credentials.

        +

        Resets the API key for the specified user, or if no user is specified, for the current user.

        +

        Returns the newly-created API key.

        +

        Resetting an API key does not invalidate any authenticated sessions, nor does it revoke any tokens.

        @@ -406,10 +473,6 @@
        -

        Reimplemented from BaseAuth.

        - -

        Reimplemented in FakeIdentity.

        -
        @@ -423,10 +486,6 @@
        -

        Reimplemented from BaseAuth.

        - -

        Reimplemented in FakeIdentity.

        -
        @@ -440,10 +499,6 @@
        -

        Reimplemented from BaseAuth.

        - -

        Reimplemented in FakeIdentity.

        -

        The documentation for this class was generated from the following file:
          @@ -467,7 +522,7 @@ diff --git a/docs/html/classpyrax_1_1identity_1_1rax__identity_1_1RaxIdentity.png b/docs/html/classpyrax_1_1identity_1_1rax__identity_1_1RaxIdentity.png index 9e28569b7533927082416739b02a2757b4c5a1ba..1afcda7c71c5bda14ead453ed7e5167bb5ca6724 100644 GIT binary patch delta 402 zcmV;D0d4-D1i}L$iBL{Q4GJ0x0000DNk~Le0001G0000`2m=5B05=s&tu z$Z2j{Q1Ecx@WmezRro81{3wdEb{ms0?(!N0@mi82s!XxdfVIhEL|XgrF_Jzr7x z7ab`VYT!c{%Rv^I!kdvb&W*9VoU)+rWlYs2@K&8Ns@D{2X1xlhE*lhSl93GCV^T4v w$Al{xA2x4&`ze(9GH;})=U-p`52s{|FHofwq9Ebi{r~^~07*qoM6N<$f^^5T5C8xG delta 496 zcmV!ypVqGl|6ifAT)qfDHs_cht0!5pBTO$G2QwkBdBx>!gkV@__(=dv$k& zWZ2)r(rH8J|rl9$3e+`V6LjWHFvOlA{BW-Iw1WbucWCK$o6Y0Po=yCu9 z7{CAqFn|I401)JHfSX7Fxj<=Br(iEmE^`JPSx$f>@fZkX=W?t!m&A_)kTvw*aYsN^ zanp#~qY2Q|Py=fm+_;-XC{b#14MN1D_!l+2iNUm|Iobo(rZhEt9VpGafA4a3p^p5$ z!+28IKo9sou(6N#;dcVrpHcdU{wZKeWFi}w5}8N`{y>)l7{CAqFn|FJ;0J)$=17}* z$8}Oi0Es{V0E)b>>c+`bAae-pbhm(=xCcs{>bY!AzzG0ZL;nk)0~T5#m6@HCrJX&{ zlu%6?;P5g5nv^S0Hzu?!MreWAew}g`T2~4w>Jr$ecAxSLn0r@J9Ctap$ki$4tS5yH mtT#6YXdae$AATp0JpKSyRw3PYJSm9)0000
        + @@ -161,7 +162,7 @@ diff --git a/docs/html/classpyrax_1_1queueing_1_1QueueClient-members.html b/docs/html/classpyrax_1_1queueing_1_1QueueClient-members.html index 0b0e13b6..1f9129a0 100644 --- a/docs/html/classpyrax_1_1queueing_1_1QueueClient-members.html +++ b/docs/html/classpyrax_1_1queueing_1_1QueueClient-members.html @@ -111,6 +111,7 @@ + @@ -158,7 +159,7 @@ diff --git a/docs/html/classpyrax_1_1queueing_1_1QueueMessage.html b/docs/html/classpyrax_1_1queueing_1_1QueueMessage.html index add01814..331c6787 100644 --- a/docs/html/classpyrax_1_1queueing_1_1QueueMessage.html +++ b/docs/html/classpyrax_1_1queueing_1_1QueueMessage.html @@ -115,8 +115,7 @@
        -BaseResource -FakeQueueMessage +BaseResource
        @@ -170,8 +169,6 @@
        -

        Reimplemented in FakeQueueMessage.

        -

        Member Function Documentation

        @@ -307,7 +304,7 @@ diff --git a/docs/html/classpyrax_1_1queueing_1_1QueueMessage.png b/docs/html/classpyrax_1_1queueing_1_1QueueMessage.png index d19c53393afb9d13201cd65dd3bd49dd817106d8..e836ae480b18af4f9637149ac98d6fe412cd3fee 100644 GIT binary patch delta 375 zcmV--0f_#L1*QWbiBL{Q4GJ0x0000DNk~Le0001G0000`2m=5B05=s&6uPM3$J>+`$?<^2=@05Imw ze20|U3@8)dmlO<}TG;TFA22@;X+*(Q^`UO&D*>oai*uok>oW9lsG_v3XB1WyijB5! z@p7L{kz$!tj7KeeB3nC``_H9Qf5Fzd0H9pG9llv^p_VF?_v56bH)0I(#|gu~Dp1$I_r9P4ll zO6veeCADtED44ozX}~5-DMnXbgo8iy#-hE6A}XzxD2j}zs6mYgfnWNHO{pb17agP? zRZ1tkVfwblWLecn?{#o4m@d{pYG|N1TVsV`XzccX`_nfJE7g;^sH-Y&{(nyKus@k4 V75|t#N1y-z002ovPDHLkV1h7Yoz4IN delta 607 zcmZ3++{3Ea8Q|y6%O%Cdz`(%k>ERLtq#J>_gM%4JelM(8HBr&3o=Mu%#WAFU@$KA; z(^?cb+LEn~f3JVCmqA2nbCFqEdcA+Jl9oKjxwo6rwx`xUH4|ufFr%TPBk#pMkAV2= zCHox|-o2Xb_u_}U+x_FR!YBH^UOYds@8O{fE^;d_?ppdnCqN-1?Y+gZraq}NO@8sC*T=1e|4+4|8z^^tqswVEDAr`S#IXe%uTIo zxAzb5GIO$W)V#^@lVt^~Km!Ad0s|w50|OI?dEeLJX70i#5={&&?JO=PDVI5e{l0L# zICJihh1*_7h2|r+k7i`7_iS@;dUjuH2IqE8EBSX8t+iXyZ7LfML~?oS)eBbmTNpPl zd6t?|&6Rj^tAxw*MIoGK4{!6{-W&DdxWtl-=f0H+ic@y{in+hCr%rdnU+JwMzE$gg z4tv-3f2Rb`y7E8fO%IYeHr?LBuWH#Q?||R68~nBz?LN3^Uy(G2!vl_vj*j|Q6|Y0z zW@yhfm~%t<#{F|1i|4i$_E;$; AutoScaleWebhook ScalingGroup -Tenant -User -CloudBlockStorageSnapshot -CloudBlockStorageVolume -CloudBlockStorageVolumeType -CloudDatabaseBackup -CloudDatabaseDatabase -CloudDatabaseFlavor -CloudDatabaseInstance -CloudDatabaseUser -CloudDNSDomain -CloudDNSRecord -CloudLoadBalancer -CloudMonitorAlarm -CloudMonitorCheck -CloudMonitorCheckType -CloudMonitorEntity -CloudMonitorNotification -CloudMonitorNotificationPlan -CloudMonitorNotificationType -CloudMonitorZone -CloudNetwork -Image -ImageMember -ImageTag -ImageTask -Queue -QueueClaim -QueueMessage +CloudBlockStorageSnapshot +CloudBlockStorageVolume +CloudBlockStorageVolumeType +CloudDatabaseBackup +CloudDatabaseDatabase +CloudDatabaseFlavor +CloudDatabaseInstance +CloudDatabaseUser +CloudDNSDomain +CloudDNSRecord +CloudLoadBalancer +CloudMonitorAlarm +CloudMonitorCheck +CloudMonitorCheckType +CloudMonitorEntity +CloudMonitorNotification +CloudMonitorNotificationPlan +CloudMonitorNotificationType +CloudMonitorZone +CloudNetwork +Image +ImageMember +ImageTag +ImageTask +Queue +QueueClaim +QueueMessage @@ -412,7 +410,7 @@ @@ -494,7 +492,7 @@ diff --git a/docs/html/classpyrax_1_1resource_1_1BaseResource.png b/docs/html/classpyrax_1_1resource_1_1BaseResource.png index 622bc2ce81466dcd8062ade51615c2d864f624d9..9827a78eaa317471df247c6c93186f9adb83f845 100644 GIT binary patch literal 8110 zcmcIpcT`j9zLjwV%K=4EPe5V7%cBaRNtYReq98?3PX9N{dJCBh1dy5uLV!T>Lh;_Y@4cD#$2hD-zOz_atn=+}|MqYH_IJa|!bEtx z`1VbkHVL0PX>7e|lK`}7liX)XT%&he5QcV4~t z58c4K5~mU~#!m>FTg;0wmt3Cd@tkDSxMs+OTF%BtBP`?QJC=C_Xz?gfo41vKx{<`4 zRovV9eXPijg}lONVEsMoE(UMzO2*+Gna=2i;{0S=Lb~^*iF3BVl%0EUbL!cuX?xy$ zH5B=N6)Vi;J(3Z?B5*m;dIy{?i0BbRBtw8kIEh6B1(K|mNU3UTCx0?mu zUj2i|ta_&ZxMPfTf)0pueREY{Gjud}c9$rsy+hJH?DQUV@Y!Tl7rT+YADiYQwcg~2 zX<8epp657k95bTm$7&=vZ$%MS)*cssqCA7{Jn1epkjy)x0tWzWLT` zVFzrhMG_Ab@}2G;r{R0u7T^oNg+j#))mwD7Ii_0EG!snqr+Eecm`s=o3*!m4??dTM zsx4oaKCUdb=%-SCj(z@Be_(Ez1KyhY_AY(st)J}{AjayAU+l80&X3-H&F8W z*v+1sM(wxFT&Y`NBV04J_}M+WA$08*W5BneO7bH)b|^If0r?;J=pZX46<42)c-PA$ z9@3L)qspFu#Lg7dH}x2?mE{Z}(g;b07cBq@ZAFF?w1_K0aIH4kZbS%{7DFC5Ca}KH zj{#}T9)HUDFPoO#pb6^|lw>oi2Yh<}mR|sZ07$tZEh9q~bBGKY9%-6q{o2J$aKUHP z-bpjlFh0zdgq_0(m;D!-v)|>oo#(dIxp-HaDI9ME81Bwxg)Ecd>yPw<*lOmEdcdr* zQ(9_g-=YX)J77Qb0PW-3IYCoRsnPW^o3P?2Tf%VHZjLqd2@BrJ4}WFj&;Dp>gO4Dc zO1+>Rxd*E3Y}Gj3gn#h))^q*%nCe`6#U#&Qhs4^}&hYA-N`lWyB9*qXHv?VXh`&XN zID%C&2Zm1NmQI+rN64aj#m8076vgM6-NvB2XOx^0S-9xTl(cKnHpVx_Ji;8bggJu@ zgmc2;BSOJJ*k&D4>ef|AM;U(uq<7aKjmMRScDI~Vx;W_h&WTB^4=pn{Ur5wnb>o{yO6?~*%p3=rp zpdIPaE0gNMU8IH_701q;>c#})1KCewqUciFRv9@tr3P9&m0DA#FGYBLhuSke68is9 z;Wb7QH?6BxT^fR5kuZULu}5f?j7ZmoZ=l#%qBVA<^g+CKf5R;YSlgr^vD{r|G#-2& z7j_SwU8yua$gEOdt`F6P7%g{}_jZ*Nt=~6VQCi6kN|DCSI;H+WQt+GV%y?;+INI5L zKhTVTV#1o|_QF;C3SYv0#m{}kY24Slb>9|DlCI3?%G11?M`f=QyVhQg==sDVR2p z67G9Ii}=UNOr<=W(LN;`d7vUu0EW*k?}yMHt_xuYNfEn_78vrG-wCsgcORv9CFPRcC4o0xccoH z=2n!-R6uvaZ*vqQtFl^@dc|Q&_nsbVTBwM(hhc4j!UbWam`)X=1Y!3@F5$@Mc72Hx zF?ngj{dploC(oXdLo&w|&@Vz=lFDLyTHB6DHZN9i&FLB7QKF0Rs%q0OZYY^bqu;nA z^as8Fiw>@t1FLT~+GUdGf-XJ_zHf10m3#dErH_!2u{O=^jf>|L1y<=kZ(3yjob9=e zOfXw**`rlkL)qiTvS>G-bjCv$?ECMDDMbFpfM=w*np;sEW{lZqfI3m;lt~M+F)-K) zi@+t~P?PuT!4fa7&Q{n7SnNrdF4Le4^6;&r;9#5_@->^Z$dNqCsTGQt^{Uf4kLzjg zZA}o>U;O1|A~RgD0EhU3cnSc{fz?>W}?s;t_my@$5r9FgSmt=vVKuo#p%;Ue@a>2$!^$M{@cYY5B?hwp<4GjUSvm1@bA_o2g~{YJFM8rnwq zow&A7vXIS|RVDpfa4`L%9Vr8(B)l=MHy(sHZ!a7O12Pxd<3(z{7EB=WZ3ZVRsC0UV zUL^8~r=l8_Ksrao$hRqtpEJX{#`C|>RjGYGn*6>x7#6VX69-6M%K zh);eUOV{jmtHZE=Kn%w1*SHa*H9=_k-I!R zLjGkXvE9DD1a0HBLkQlsCK-Q=ch=&QkKBW8XgV|9(4zOeXdqD%cKY}Jg)x3y zcIoTS8#B2LLuT50phth-$!}CZe>11gwx&oMpTfz2}xt4rt4ZNM#Zql)* zu%AaNVg>3*u=@Kl2kt~8pQ)^NI6wK{4NUy;>1$ZFH}}5?Kvjj0U+ItTvFlN~ z6p=bUbetvE6~B72A4BGm$_>q)VWG*ryLk7hRYKH4GL(bRVet7c>;^CiQ@h)BOf!Dq&5l^cp>~;yLF> zY2Z@n{E~Z*f9%Cktja%icP?#C_D(9Of70o=5}q*^MgMly4MBWa{n}vx9Hee+{DSC~ zpIPZr7=&XtKh_^U3LbgoA1$qojq@R}`yKle!LsMZT-yn!tmXGs{Uo!FAO-8s{*Os3 zWR|j#Tc;>0v(4{@W4bkioUA#YFwsz^jcd01J`B3N8;A!oLpP(`$3a^q?~;K2z7laH ze?$Te8t+>U9fW*3rrbGmeBH-@kc%4Dv_YodsIAIN>$B8oxV*9im(p?)88POtA}5GJ z>072GX!Ob=Q0{2ioR~AD{6t56ViLAN`<2%4*|R1INY}4ms|5iC zvY6-t>zhqQ^Mua9LcGTDFp@sD`4&3mCl2E#(bTD&W#Jyl*QerRm6s-DjGBPLh*IMS zlFad9KQGjDet8cPt46$1Xl9({yLdq&j+$DTp}IdW^C-xzxv#1O5ol5*%cBw_B4Fa% z9B{e5b;j5G#t=VFiE$gdE1W@(gB?f8%J1Q8n0gSAJzG{vI#l$mY@#Xh^_2oO2@Fb- z_sa)nCNQ%VYTqEo@ZT`{KH4x#Q!B43y(P*DNMw`uhS62eqx?n*qZO+8FE4s&72Og~5Ha`5|`O3{}%y@)|)aodpL;PLR z#;3}=>)>ka_~$v>x>YjWh#!aB0i(2LJlJ+)!=#7rL>U{KDim?YFRqD4E4fnHP-YtO zj3-^rdzhi|-uc`(=l2M)BR^Cl;;M8bi|4$tE|*(2Dyp7Wc081CA zI%It-@WWo^EtiDJxibaqV>c1jzm92vs(nJByXe?pbItzYhe(XA|=otpBNm;akrcr_7V zXqm>(5$d0!QyzvrmNF6M3k`NLc14x2!{MN^aCWpIj7%V z%a{{33E*vMj(L}NiASjnA}_$OPe5{vxxZ6rEod=8iO|&k;M!8g-nx z!jOadD2~r5W@j++19Mjt2s9cz~{{wH$!0uM%25VB3{q>0z;R5Z9;#Peth^)Qa*zG zOlaj=YoVpR$LXi(0iX1{RKRAj_33+^JQXotA=k#QZ`_tv+|@+T9&|6UM9Z@UQBzmx z*8#IR8P(gNB@rU;YvRZ&EV;j5!d{r|zTM&q>ASPpV zLyYv~_$M9;Ww``_w;hO`OjVH#9Hyio{@kY+-hq#in3Eyd3KC|ALwh~r`iiqI zVZXlB5eZKIU1YnO+^W3)>plcd*v1D<6RI=fkKv4m&kfPRdr-u8CLX6gCL$|vTFMRR zQkeMz6zhX9Cg>sf@2&@3MpXRDEE1P=^E(nAZ1V~e81jxO2}LB>eG9vP3m&Z!cg~SO z>sS%~9WZ~jw|!Pp442)rq4hqZgPQ1;ZHW=PrT`Hd6MW-}km1!O5hyP%T3$zEVP-faUwx;Ze_VJY zdkM(yHRPeI9Ha#03d2eW7TOUp{;>jUI_k#XP!m!mnjrd`6x+$n>-+_))0ld;Ws;?d zHFc7JM%5=LmeYk{n{D%^Q`lgd*UR#cDLBw#|N1`Y@BVt~ft-{hc(;ULcR?5pY~Wkw zH+-hC(vnma`fLRZ_&YImxCS#PJ6j_LqfgYf7Cx4}Mn4BEBC~+G zi_S;L1B}(n4;w^{N2_X-53YykTq!Q8BXQtkHkCO3)F}}%PyYsQwi)&Z=kd;xK-F&7 zg=PMRL?KIG(~X`2MY`$WRp5U`5r1;$B`>gk0d(I|WBHk0H~OTU$d@dr+1S{1K@+8H zgbcr%yvdkyt3q#_%KDK`1>*U@QLamq$_E*T!ov0T@T(GkGI0Hu01+JHS*@qdX zFMvhkv%7fwK+GGti ze%Pv$Y$wHCy5w$?C!Sa+{t88%tj(-S=zwj1q<;cJ?tO?ir~0!dxapI|4H;zwq`@tE z{@*o2Y=)#oMXTnYW`T)KyV%6y?^mX;(|rMQ&Vw15?7N}eiF#08a81%&^2AlT3mB-f z=y{RfdS>)2fEhGcUnw3%KLh<1-)u5Jo-R(*o=q(fzw$l5=d{RuUVfULv=6!@jZ^s< zl_>1nAjLnnC&lxf?PWa}eF>4K`$5FKreQOxPhUHeR&wyM!uDg`0`MrS``|Wy8Li%E pEML}s=l5bG)7tN;gXiu%K9mm%Mr+6NFV{DnI&NW{b<8#DzX9ZmWe5NO literal 8431 zcmcIqc{H2(`q$CDudSthQA~BFC@N@CwaiSIwpz>BX^~L-PVFI`E-yukY3zfEHq=gS zwX4_G*xC|mzp2`ZloCrKzgTAOz2|rCy??ah9OwJWaU##>`8=QJc|Knc^>i+C92Pjt z#>U2R^@@f*8`~a;jqLz`vdJ92#MQ&}eN#*8qStjqb>gFUpLxwLr{*qmg14^BjBHugTHH6yCy$(_Zl69eHf ztIPH(vT@7^H+sQ%qh1K^g$}b9t|^i#dHH}mx&oQ6W#!xEnwTL2u z7Fx>qH*25TfP%WrVJ;guu-}qn1u9tJD9$rC2y7YQ<}q+(ItTqUueIhTxFMq};|=lb zdXapjj)kpqA}pAw4u#`*oP?)->AaRcC9 z_W$r$aTcEMso+E^dm>QvclNOF2ZF7~L`5NdzklSIY!DA*!neNYV{6GhEW|Wn2Mm5Z zt*Jp&H@9fJJWBB$gU6LtD%)h_KO40XTu2l#sb)zSfzWBD?uWi9nqvCc^$Q*cjA1LV zH~S)~aL|9L+L-A^6o5rm!n@=#(pWPfD!KEnBhDPrz7m{6=7ZKt-Iq7{GA=+b`fXN^ zAj1>H7bk938u^)J4_2Da8>bkS7umd51v|6vkhu?ooH2qBQXHjp|C^no;Q^?V(uO#= zAGo{c9;*IZ@IOCl?E-Vl9U9E?7J_bn*bN`l*OE{;Cu$8QJ-SRAMU-J2X3s#iKLkIt z)3h+;g6;XeG*63;i{yFO{!&sk+&`y-HC3UNG|I@epEW1OIuGia@>|`Ey#&|a_771- zO&z)M?fS5_@hZJ5yoX4BkpKA!U@K;60|s7AjSn(*Rf|OnTsj2zEfTFw-IaY>rW8gL z)TEw`^J-5wk>1ElC9gXfh0f5#1d|)?a={8LK(rDsU71!Lww?WP%t_oY-Sy0H34Ri- zq`Q?qvK|W){0=nR#|djC7BT)C4u1kAzGsIZ(KY;TnVml1yNCC-$N(Zxre{R01LO(g z9m`qZ$SdydsHWk`3~PTu`;XA7eVF+p4%AUg9_wIgnJxOs{+W8=aR68j~rAmj?6(9iRVJW$w#3SP`|M!nrQU- z(gjFY9;3*@ai_Xi538JTmN)-@sKzv%m2Z#e>+P1-WPMAY%Sa z83ZPg?EGrG+;`v4@5?Kvu92H3MnAl??$RQ4#=pXI;nO24ANS^zoNMwL(zN4nuYav4 zjrH0C^eY5|5L4G17^feeAdia*Na`hu#GKGc9ZG4LYqD*iraI2JI28GY+{5#g_xj&T zh$^31re$U}`}M>q;5!rZp@`D&SDpgJHE5~M&sm*NRaD4Iwj1U1Z~Zq+u*aZ0R^_xq zv!c@{G|LsaB5aBbSL{~JM_S&HFs}-0Lnw^Yj#0+39CS^4spjaYU~jA)Fs4&9uxwYb zaTR(e;1n-DpK<%4r@O;gFrm#z&9!iOy8qri1C4NALX9*8)%pcMy7rq_>y#gprT2m> zRvZLD^!pl#8W}|(RIlFS;J%&X!4cWtmE+O>O@05&HjZtFvaKUPxxu6|Fx|MDoRG(- zL`4a_IW__QKGj1nX{$5GTqoqa=!cO#Uhc9kkNh-;15d)mfPsW4wtrcQz$^YOQl2^T%8waYO-ucO=uL5-|)!@wH zetXNq5ca#RT7Ewx3+g0(eJNM3-yx*B;-7>hi4C-O*o#iagXwWW5oqUX$(i0UtgU}* z;6-S<>k*x=w-~42_&Xkh?=CUk46F87{76xO4v3XgIMxu1j28#j*J9R3g94xcNBu}Z zlF;T2ZFC!qT{7OBozM(bJ9PUg{Juc8eFdVtnX%HbYqAU;6N37eF&9v#RvfBu_5IRc zr6e->N;=-yo!eXGy0HXUwW-SkX_R$Eb+u0bjJcFnGnX9%2PQfz*48QJN_Gr(zR?-z za@*sgKp=WBYVc)Ii?m*ga{BVv$eU*Sy!5#21+nGn%~$z&pN%z#H)V9n>1phOCcj!r zemwmXd0Y@teX|LR295Vab$y;Qr-ju`6>RJNKtvKMew*MCNDis!1UO8_&9yvnN)1Kr>RkY`wG ztqQ-0E`HHzS+vruQ&A%bvqPR2fQ}q(kfM9REeJ`we&aj18?;2X5>irpf-tHJia5$* zGz-B&(719VHx)KFtF`IHEmP+*A>z(pFW|U7W+uS%I8ExMo&S490zQ6cXtf>YLLYJJ0!VW!-?T| zBXJ6%oft+w1{nM*DiisybgG=m4eJBLQt?$5gQUgH5B*K8n2~$2 zck%AVw&u>3HXJQROH-f7(xBz7)}ZCN+`+NgwR%0bE|F}Yn1SVD%_yosj>vkUxI!-#c+AZgQbZ}l3*b~kqcXDtI8hv3trS@Ykm*Yfa4czs$jb5k16t}=Dh z8b%gdEu(&<18~tcRYLXu+3vQw-b?N;E}A_^E!H0;mv!ZxdyMgHRXn9SfFupe^IP6)#IdMoI*PFG^L?UEHSzh;?%uAVsOrUbAM{DlQ_m6qA4+>M;Q!=NxiCsOFko zUhr9atUdUO>JAX@_1NhQE zR{P~LrA`<&I9xh(1ISw~z9hs6VQ(d58`dra#?7jI($M;#-`dUB>%w?rD?0_}3}RdY1RGX|KwYOuZ+X~r}5ndo_xmH%!a=SC@ss+)tC znXooUP+QDOWuzPkLRK_VpCS9m-fz?An%4$p#$3%l>qbU#gi^FYo#R`xxDsx6_x!3W zX!v&O-#0UqjZVT*wzR82!Hl}ihS0MDvda>r7LQ^vsos)<5PeRN2C!Sh(fBDv` z`Qv&7{jl~lek;<7D4&qVH+9a=YLIkjSXtM^PjQStM!73LB^n3Veahbqj#$1+-n$ht zgp~NF%kq`>Y-%#FBlJ6YE?yuWTRaI!k}BZn1IE`B>u6IJv#DTZy2hsQtXV!i68~5? z^f^uc+0>|!+e#==o)Olh0hDUNr@RPSv6;Whz1PiGbaponw%Rk#-yDxJwRQL>40vbf zF{gT}6f5m=$dN~iU}Yx7eK5^_)qDjFhBUpwWoVYw5STqqQ|g^-8HfvX*R&Ya3cjEt zP4>OuK!|{ATE~MVr}NCA!S-guRI}?kowLU&m{Bnh2)+n?($8QyVTGw0kl3^|6dEil$PN@Tf9%AS(|1}_*RG#^!xIw zi|s{jTKk*hQ%ihe3MK#_jIu^eyr^cm$IK6@#TD-nxw1H~(p`>ZxOG!V$;bK!P6Ak) z*3f;(QCiFR6B@L(7g#_g0K#&g8LkqZCs|^s2Mm{?FARAn#8>#ziaJ5HmS`{af{q%O zBHKO-1!fWPZK_$n;Np@D1*juZAEA^|cEnG^?W?;_^fSnvE-=7o@>f*2?x@%n8D=lM z=?T3wiM=AB<=NLf2`pO(N)766s=$U(^xlexjUfMq&>pnG8!#kcv z(d3cUP7&X8R0(1T2A!DUk+c9v?DT(WC$_EKpnnavunE^Fri=U>`^6m z6lWv(>9AF#pAC%jEp89`D?5-tpx>b+S^B;5QE{Wk} z4xqHG`&1w_{RUJn^m;&M2aIfH1Iv677#zOj_o1lH*Q}{K6`$Pay5A<^g}`PL`mHa7 zykv$8S?xN`@Plwc+Ky7CQ-qG|rLIp?t_1zD!38`1Z4)>A~SoWW-0{Ogwk_iIn9 z0z3@4g#7FuvG%4yrDj6$Waj{O7{lML7=?Z%b;g{--JC-(2oCQ;u=Yo+L3WTwg+PSL zaAK0tvuOngi+bO?W{q&+M!m;gz@52=re)mUwGI4_efdTV4>vyjbQ0K*Q&HRp*U4*a z#;7weSKj6yhLs>P1NbFeF!p=Rs+o`ySs=}nquVQ?^EfaDLb`GvJ6_85CJ2Nww-Ghj!LC zKG)dcAh66wO&H)hgqW*i#nVveXV9>FtiDhYd0ibb*P_QJnx<(fwCqyZ zKy`&ktd3RJ5Zz|cwHT*rnevcTDfOJHAx!ot>GdNycx9YB)>Js@9Szji&^YI(dMlB9 z7|!Ic75v*)DutswpFZa*EIqVGRR2LW)Sk^%dkpOZDW_IqE0O@1vu2eVZz8Gv+R4Aq={aX6TowXDm! zqq{fQ{mEqCnVX@fQj~W5Yj)@q4-eO5`(tpVgS!h?{)6gD162{yf8S~!V{%#5*+d9w zrZUzQ_*T1~Dgy|HV&s6&%--V1$6!AY@{$pLMLi3zYEMcBc^YvLQvwXkRlI&+jlW%& zKGWr`EVY5+2PKtvI4cxc7uBX5B=pF@36nPKG*@?}^GJ#~q2nXcRdL>F)!pUtINv^e z@*Q*?z4SENUvdw`Fo8v?cp&z1X#1A>&l}n8keNZuy)Wp#=k~JxJAv)0rjADbPpG^9 E2Sq&D8UO$Q diff --git a/docs/html/classpyrax_1_1utils_1_1DotDict-members.html b/docs/html/classpyrax_1_1utils_1_1DotDict-members.html new file mode 100644 index 00000000..09e97980 --- /dev/null +++ b/docs/html/classpyrax_1_1utils_1_1DotDict-members.html @@ -0,0 +1,119 @@ + + + + + +pyrax: Member List + + + + + + + + + + + +
        + + +
        +
        def list_credentials def reset_api_key (   self,  user user = None 
        get_taskImageClient
        get_timingsBaseClient
        http_log_debugBaseClient
        identityBaseClient
        import_taskImageClient
        listImageClient
        pyrax::client::BaseClient.listBaseClient
        get_statsQueueClient
        get_timingsBaseClient
        http_log_debugBaseClient
        identityBaseClient
        listBaseClient
        list_messagesQueueClient
        list_messages_by_claimQueueClient
        + + + + + + + + + + +
        +
        pyrax + +
        +
        Python Bindings for the Rackspace Cloud
        +
        +
        + + + + + + +
        +
        +
        +
        DotDict Member List
        +
        +
        +This is the complete list of members for DotDict, including all inherited members. + + +
        __getattr__DotDict
        __init__DotDict
        + + + + +
        + +
        + + + + + + + diff --git a/docs/html/classpyrax_1_1utils_1_1DotDict.html b/docs/html/classpyrax_1_1utils_1_1DotDict.html new file mode 100644 index 00000000..0350d787 --- /dev/null +++ b/docs/html/classpyrax_1_1utils_1_1DotDict.html @@ -0,0 +1,211 @@ + + + + + +pyrax: DotDict Class Reference + + + + + + + + + + + +
        + + +
        + + + + + + + + + + + +
        +
        pyrax + +
        +
        Python Bindings for the Rackspace Cloud
        +
        +
        + + + + + + + + + +
        + +
        + + +
        +
        + +
        +
        DotDict Class Reference
        +
        +
        + +

        Dictionary subclass that allows accessing keys via dot notation. + More...

        + +

        List of all members.

        + + + + +

        +Public Member Functions

        def __init__
        def __getattr__
        +

        Detailed Description

        +

        Dictionary subclass that allows accessing keys via dot notation.

        +

        If the key is not present, an AttributeError is raised.

        +

        Constructor & Destructor Documentation

        + +
        +
        + + + + + + + + + + + + + + + + + + + + + + + + +
        def __init__ ( self,
         args,
         kwargs 
        )
        +
        +
        + +
        +
        +

        Member Function Documentation

        + +
        +
        + + + + + + + + + + + + + + + + + + +
        def __getattr__ ( self,
         att 
        )
        +
        +
        + +
        +
        +
        The documentation for this class was generated from the following file: +
        + + + + +
        + +
        + + + + + + + diff --git a/docs/html/client_8py.html b/docs/html/client_8py.html index 4bedfbc6..2dd08956 100644 --- a/docs/html/client_8py.html +++ b/docs/html/client_8py.html @@ -77,7 +77,8 @@
        pyrax/client.py File Reference
        @@ -90,6 +91,9 @@

        Packages

        namespace  pyrax::client +

        +Variables

        +string SAFE_QUOTE_CHARS = "/.?&=," @@ -109,7 +113,7 @@ diff --git a/docs/html/exceptions_8py.html b/docs/html/exceptions_8py.html index 6c676435..bfcbc5f7 100644 --- a/docs/html/exceptions_8py.html +++ b/docs/html/exceptions_8py.html @@ -161,9 +161,13 @@ class  NetworkInUse class  NetworkNotFound class  NetworkLabelNotUnique +class  NoClientForService +class  NoEndpointForRegion +class  NoEndpointForService class  NoMoreResults class  NoReloadError class  NoSSLTerminationConfiguration +class  NoSuchClient class  NoSuchContainer class  NoSuchDatabase class  NoSuchDatabaseUser @@ -240,7 +244,7 @@ diff --git a/docs/html/fakes_8py.html b/docs/html/fakes_8py.html index a7970b6d..75508ba4 100644 --- a/docs/html/fakes_8py.html +++ b/docs/html/fakes_8py.html @@ -96,10 +96,8 @@ class  FakeCSClient class  FakeFolderUploader class  FakeBulkDeleter -class  FakeEntryPoint class  FakeManager class  FakeException -class  FakeServiceCatalog class  FakeKeyring class  FakeEntity class  FakeDatabaseUser @@ -137,7 +135,6 @@ class  FakeCloudMonitorNotification class  FakeQueue class  FakeQueueClaim -class  FakeQueueMessage class  FakeQueueClient class  FakeQueueManager class  FakeImage @@ -145,6 +142,9 @@ class  FakeImageMemberManager class  FakeImageTagManager class  FakeImageManager +class  FakeIdentityService +class  FakeEndpoint +class  FakeRaxIdentity class  FakeIdentity  Class that returns canned authentication responses. More...
        class  FakeIdentityResponse @@ -158,7 +158,6 @@ Variables string example_uri = "http://example.com" dictionary fake_attdict -list fakeEntryPoints string fake_config_file dictionary fake_identity_user_response dictionary fake_identity_tenant_response @@ -185,7 +184,7 @@ diff --git a/docs/html/functions.html b/docs/html/functions.html index 087a23ea..d0b80d2a 100644 --- a/docs/html/functions.html +++ b/docs/html/functions.html @@ -97,6 +97,7 @@
      • h
      • i
      • j
      • +
      • k
      • l
      • m
      • n
      • @@ -129,15 +130,17 @@

        - _ -

          , SelfDeletingTempDirectory
        • __getattr__() -: BaseResource +: BaseIdentity +, BaseResource +, DotDict +, Endpoint
        • __init__() -: ScalingGroup -, BulkDeleter -, CloudMonitorClient -, FakeAutoScaleClient -, FakeAutoScalePolicy -, _WaitThread +: Endpoint +, Node +, FakeDNSDomain +, FakeDNSRecord +, DotDict , ServiceCatalog , BaseResource , QueueMessage @@ -145,76 +148,80 @@

          - _ -

            , BaseManager , Image , FakeIdentity +, FakeIdentityService , FakeImageManager , FakeImageTagManager -, CloudNetworkClient +, FakeImageMemberManager , FakeImageClient , FakeImage -, FakeQueueManager -, FakeQueueClient -, FakeQueueMessage +, VirtualIP +, FakeDNSDevice , FakeQueueClaim , FakeQueue , FakeCloudMonitorNotification , FakeCloudMonitorCheck , FakeCloudMonitorEntity , FakeCloudMonitorClient -, FakeAutoScaleWebhook -, FakeScalingGroupManager -, Container -, AmbiguousEndpoints , FakeScalingGroup -, FakeCloudNetwork , FakeCloudNetworkClient -, FakeDNSDevice -, FakeDNSRecord -, FakeDNSDomain +, FakeAutoScaleWebhook +, FakeAutoScalePolicy +, BaseIdentity +, CloudLoadBalancerClient +, FakeCloudNetwork +, FakeAutoScaleClient +, CloudMonitorCheck +, CFClient , FakeDNSManager , FakeDNSClient -, ClientException +, FakeNode , FakeLoadBalancer , FakeLoadBalancerManager , FakeLoadBalancerClient , FakeBlockStorageClient -, FakeBlockStorageSnapshot +, CloudMonitorAlarm , FakeBlockStorageVolume -, ScalingGroupManager -, StorageObject +, FakeBlockStorageManager +, FakeNovaVolumeClient , FakeDatabaseClient , FakeDatabaseManager , FakeDatabaseInstance , FakeDatabaseVolume -, FakeEntity -, FakeServiceCatalog -, FakeEntryPoint -, FakeImageMemberManager +, FakeScalingGroupManager +, FakeManager +, FakeBulkDeleter , FakeFolderUploader -, FakeStorageObject -, FakeService -, BaseClient , FakeCSClient -, AutoScalePolicy -, CloudBlockStorageVolume -, FakeBulkDeleter -, CloudMonitorAlarm -, CloudMonitorCheck -, CloudLoadBalancerClient -, FakeNode -, Node +, FakeService +, FakeStorageObject +, FakeClient +, FakeQueueManager +, CloudMonitorClient +, Connection +, CloudNetworkClient +, AmbiguousEndpoints +, FolderUploader +, ClientException +, FakeQueueClient +, BulkDeleter , CloudLoadBalancer , ResultsIterator -, FakeBlockStorageManager -, CloudDNSPTRRecord +, CloudDNSManager +, FakeBlockStorageSnapshot +, CloudDatabaseInstance , CloudDatabaseVolume +, CloudBlockStorageVolume +, _WaitThread +, ScalingGroup +, Container +, StorageObject +, ScalingGroupManager +, BaseClient +, FakeEntity +, AutoScalePolicy , AutoScaleWebhook -, CloudDatabaseInstance -, BaseAuth -, CloudDNSManager -, FakeNovaVolumeClient -, CFClient -, FolderUploader -, Connection -, VirtualIP +, CloudDNSPTRRecord +, Service
          • __iter__() : ResultsIterator @@ -226,12 +233,13 @@

            - _ -

              : Fault
            • __repr__() -: Container -, Node +: VirtualIP +, Container +, CloudDNSPTRRecord , StorageObject +, Node +, Service , BaseResource -, VirtualIP -, CloudDNSPTRRecord
            • __str__() : ClientException @@ -256,7 +264,7 @@

              - _ -

                diff --git a/docs/html/functions_0x61.html b/docs/html/functions_0x61.html index e84076af..26520817 100644 --- a/docs/html/functions_0x61.html +++ b/docs/html/functions_0x61.html @@ -97,6 +97,7 @@
              • h
              • i
              • j
              • +
              • k
              • l
              • m
              • n
              • @@ -180,6 +181,9 @@

                - a -

                  , CloudDNSDomain , CloudDNSManager +
                • add_role_to_user() +: BaseIdentity +
                • add_ssl_termination() : CloudLoadBalancer , CloudLoadBalancerManager @@ -189,14 +193,14 @@

                  - a -

                    : Image
                  • add_virtualip() -: CloudLoadBalancer -, CloudLoadBalancerManager +: CloudLoadBalancerManager +, CloudLoadBalancer , CloudLoadBalancerClient
                  • add_webhook() -: ScalingGroup +: AutoScalePolicy +, ScalingGroup , ScalingGroupManager -, AutoScalePolicy , AutoScaleClient
                  • address @@ -213,8 +217,11 @@

                    - a -

                      : CloudLoadBalancerClient
                    • api -: FakeManager -, BaseManager +: BaseManager +, FakeManager +
                    • +
                    • api_key +: BaseIdentity
                    • att : _WaitThread @@ -226,28 +233,31 @@

                      - a -

                      @@ -268,7 +278,7 @@

                      - a -

                        diff --git a/docs/html/functions_0x62.html b/docs/html/functions_0x62.html index 19495761..b0415703 100644 --- a/docs/html/functions_0x62.html +++ b/docs/html/functions_0x62.html @@ -97,6 +97,7 @@
                      • h
                      • i
                      • j
                      • +
                      • k
                      • l
                      • m
                      • n
                      • @@ -148,7 +149,7 @@

                        - b -

                          diff --git a/docs/html/functions_0x63.html b/docs/html/functions_0x63.html index b920ba9a..f13140e3 100644 --- a/docs/html/functions_0x63.html +++ b/docs/html/functions_0x63.html @@ -97,6 +97,7 @@
                        • h
                        • i
                        • j
                        • +
                        • k
                        • l
                        • m
                        • n
                        • @@ -190,7 +191,7 @@

                          - c -

                            : FakeStatusChanger
                          • check_token() -: BaseAuth +: BaseIdentity
                          • cidr : CloudNetwork @@ -217,10 +218,18 @@

                            - c -

                              , StorageObject , FakeStorageObject , FakeService +, Endpoint
                            • client_id : QueueClient
                            • +
                            • client_private() +: Endpoint +
                            • +
                            • clients +: Service +, FakeIdentityService +
                            • code : ClientException
                            • @@ -250,16 +259,16 @@

                              - c -

                              • container_meta_prefix : CFClient
                              • -
                              • content -: FakeResponse -, FakeIdentityResponse +
                              • content() +: FakeIdentityResponse +, FakeResponse
                              • content_caching : CloudLoadBalancer
                              • content_type -: FakeStorageObject -, StorageObject +: StorageObject +, FakeStorageObject
                              • cooldown() : ScalingGroup @@ -268,45 +277,45 @@

                                - c -

                                  : StorageObject
                                • copy_object() -: CFClient -, Container +: Container +, CFClient
                                • create() -: CloudMonitorClient -, FakeManager -, CloudMonitorNotificationPlanManager -, CloudBlockStorageManager +: ImageTasksManager +, QueueManager , CloudBlockStorageSnapshotManager -, CloudMonitorNotificationManager +, CloudBlockStorageManager , BaseClient -, QueueManager -, QueueClient +, CloudMonitorNotificationManager +, FakeManager , ImageMemberManager +, CloudMonitorNotificationPlanManager , BaseManager -, ImageTasksManager +, CloudMonitorClient +, QueueClient , CloudNetworkClient
                                • create_alarm() -: CloudMonitorEntity +: CloudMonitorEntityManager +, CloudMonitorEntity , CloudMonitorCheck , CloudMonitorClient -, CloudMonitorEntityManager
                                • create_backup() : CloudDatabaseInstance -, CloudDatabaseManager , CloudDatabaseClient +, CloudDatabaseManager
                                • create_check() -: CloudMonitorClient -, CloudMonitorEntityManager +: CloudMonitorEntityManager +, CloudMonitorClient
                                • create_container() : CFClient
                                • create_database() -: CloudDatabaseClient -, CloudDatabaseInstance +: CloudDatabaseInstance +, CloudDatabaseClient
                                • create_entity() : CloudMonitorClient @@ -318,17 +327,17 @@

                                  - c -

                                  @@ -349,7 +358,7 @@

                                  - c -

                                    diff --git a/docs/html/functions_0x64.html b/docs/html/functions_0x64.html index ab5b2a5a..087b04c2 100644 --- a/docs/html/functions_0x64.html +++ b/docs/html/functions_0x64.html @@ -97,6 +97,7 @@
                                  • h
                                  • i
                                  • j
                                  • +
                                  • k
                                  • l
                                  • m
                                  • n
                                  • @@ -244,8 +245,8 @@

                                    - d -

                                      : CloudMonitorClient
                                    • delete_object() -: CFClient -, Container +: Container +, CFClient
                                    • delete_object_in_seconds() : CFClient @@ -261,9 +262,12 @@

                                      - d -

                                        , CloudDNSClient
                                      • delete_record() -: CloudDNSDomain +: CloudDNSClient +, CloudDNSDomain , CloudDNSManager -, CloudDNSClient +
                                      • +
                                      • delete_role_from_user() +: BaseIdentity
                                      • delete_session_persistence() : CloudLoadBalancerManager @@ -272,25 +276,25 @@

                                        - d -

                                          : CloudBlockStorageClient
                                        • delete_ssl_termination() -: CloudLoadBalancerClient -, CloudLoadBalancer +: CloudLoadBalancer , CloudLoadBalancerManager +, CloudLoadBalancerClient
                                        • delete_tag() : Image
                                        • delete_tenant() -: BaseAuth +: BaseIdentity
                                        • delete_user() -: BaseAuth +: CloudDatabaseClient , CloudDatabaseInstance -, CloudDatabaseClient +, BaseIdentity
                                        • delete_virtualip() -: CloudLoadBalancer +: CloudLoadBalancerClient , CloudLoadBalancerManager -, CloudLoadBalancerClient +, CloudLoadBalancer
                                        • delete_volume() : CloudBlockStorageClient @@ -323,8 +327,8 @@

                                          - d -

                                            , CloudBlockStorageSnapshot
                                          • display_name -: CloudBlockStorageVolume -, CloudBlockStorageSnapshot +: CloudBlockStorageSnapshot +, CloudBlockStorageVolume
                                          • domain : ResultsIterator @@ -358,7 +362,7 @@

                                            - d -

                                              diff --git a/docs/html/functions_0x65.html b/docs/html/functions_0x65.html index fd788d1e..f574b1bb 100644 --- a/docs/html/functions_0x65.html +++ b/docs/html/functions_0x65.html @@ -97,6 +97,7 @@
                                            • h
                                            • i
                                            • j
                                            • +
                                            • k
                                            • l
                                            • m
                                            • n
                                            • @@ -124,11 +125,13 @@

                                              - e -

                                                : BaseClient
                                              • endpoints -: AmbiguousEndpoints +: Service +, AmbiguousEndpoints +, FakeIdentityService
                                              • entity -: CloudMonitorCheck -, CloudMonitorAlarm +: CloudMonitorAlarm +, CloudMonitorCheck
                                              • env_dct : Settings @@ -147,12 +150,12 @@

                                                - e -

                                                  : AutoScalePolicy
                                                • execute_policy() -: AutoScaleClient -, ScalingGroup +: ScalingGroup , ScalingGroupManager +, AutoScaleClient
                                                • expires -: BaseAuth +: BaseIdentity
                                                • export() : CloudDNSDomain @@ -187,7 +190,7 @@

                                                  - e -

                                                    diff --git a/docs/html/functions_0x66.html b/docs/html/functions_0x66.html index 7f2d607d..c6ae6b68 100644 --- a/docs/html/functions_0x66.html +++ b/docs/html/functions_0x66.html @@ -97,6 +97,7 @@
                                                  • h
                                                  • i
                                                  • j
                                                  • +
                                                  • k
                                                  • l
                                                  • m
                                                  • n
                                                  • @@ -156,17 +157,23 @@

                                                    - f -

                                                      : CloudDNSDomain , CloudDNSClient +
                                                    • find_user_by_email() +: RaxIdentity +, BaseIdentity +
                                                    • find_user_by_id() -: RaxIdentity +: BaseIdentity +, RaxIdentity
                                                    • find_user_by_name() -: RaxIdentity +: BaseIdentity +, RaxIdentity
                                                    • findall() -: BaseClient -, BaseManager -, CloudDNSManager +: CloudDNSManager , CloudMonitorClient +, BaseManager +, BaseClient
                                                    • flavor : CloudDatabaseInstance @@ -199,7 +206,7 @@

                                                      - f -

                                                        diff --git a/docs/html/functions_0x67.html b/docs/html/functions_0x67.html index 9a3814c3..fd29b2b8 100644 --- a/docs/html/functions_0x67.html +++ b/docs/html/functions_0x67.html @@ -97,6 +97,7 @@
                                                      • h
                                                      • i
                                                      • j
                                                      • +
                                                      • k
                                                      • l
                                                      • m
                                                      • n
                                                      • @@ -119,23 +120,24 @@

                                                        - g -

                                                        • get() : Settings , AutoScalePolicy -, StorageObject -, CloudDatabaseInstance +, Endpoint +, CloudDatabaseManager +, FakeManager , FakeEntity +, CloudDatabaseInstance , BaseManager -, CloudDNSRecord , QueueManager +, StorageObject +, CloudDNSRecord , BaseResource -, BaseClient , CloudMonitorCheck -, CloudMonitorAlarm , AutoScaleWebhook -, CloudDatabaseVolume +, BaseClient +, CloudMonitorAlarm , CloudMonitorClient +, CloudDatabaseVolume , CloudNetwork -, CloudDatabaseManager , FakeResponse -, FakeManager
                                                        • get_absolute_limits() : CloudDNSClient @@ -182,6 +184,10 @@

                                                          - g -

                                                            : Queue , QueueClient +
                                                          • get_client() +: Service +, BaseIdentity +
                                                          • get_configuration() : ScalingGroup , ScalingGroupManager @@ -226,7 +232,12 @@

                                                            - g -

                                                              , CloudDatabaseClient
                                                            • get_default_region() -: BaseAuth +: BaseIdentity +
                                                            • +
                                                            • get_details +: CloudDatabaseFlavor +, CloudDatabaseBackup +, BaseResource
                                                            • GET_DETAILS : CloudDNSRecord @@ -234,9 +245,6 @@

                                                              - g -

                                                              • get_details : CloudDatabaseDatabase , CloudDatabaseUser -, CloudDatabaseFlavor -, CloudDatabaseBackup -, BaseResource
                                                              • get_device() : Node @@ -253,7 +261,7 @@

                                                                - g -

                                                                  , CloudLoadBalancerClient
                                                                • get_extensions() -: BaseAuth +: BaseIdentity
                                                                • get_flavor() : CloudDatabaseClient @@ -303,26 +311,26 @@

                                                                  - g -

                                                                    : Image
                                                                  • get_message() -: Queue -, QueueClient +: QueueClient +, Queue
                                                                  • get_metadata() -: CloudLoadBalancer +: QueueClient , Container , StorageObject +, CloudLoadBalancer , CloudLoadBalancerManager , Node , CloudLoadBalancerClient , QueueManager -, QueueClient
                                                                  • get_metadata_for_node() : CloudLoadBalancer , CloudLoadBalancerClient
                                                                  • get_metric_data_points() -: CloudMonitorEntity -, CloudMonitorEntityManager +: CloudMonitorEntityManager +, CloudMonitorEntity , CloudMonitorCheck , CloudMonitorClient
                                                                  • @@ -358,9 +366,9 @@

                                                                    - g -

                                                                      : FakeKeyring
                                                                    • get_policy() -: ScalingGroup +: AutoScaleClient , ScalingGroupManager -, AutoScaleClient +, ScalingGroup
                                                                    • get_protocols() : FakeService @@ -376,6 +384,9 @@

                                                                      - g -

                                                                      • get_record_iterator() : CloudDNSClient
                                                                      • +
                                                                      • get_role() +: BaseIdentity +
                                                                      • get_server_networks() : CloudNetworkClient , CloudNetwork @@ -384,19 +395,22 @@

                                                                        - g -

                                                                          : CloudLoadBalancerManager , CloudLoadBalancerClient +
                                                                        • get_snapshot() +: CloudBlockStorageClient +
                                                                        • get_ssl_termination() -: CloudLoadBalancerManager -, CloudLoadBalancer +: CloudLoadBalancer , CloudLoadBalancerClient +, CloudLoadBalancerManager
                                                                        • get_state() -: AutoScaleClient -, ScalingGroupManager +: ScalingGroupManager +, AutoScaleClient , ScalingGroup
                                                                        • get_stats() -: QueueManager -, QueueClient +: QueueClient +, QueueManager , CloudLoadBalancerManager
                                                                        • get_subdomain_iterator() @@ -414,19 +428,18 @@

                                                                          - g -

                                                                            : CFClient
                                                                          • get_tenant() -: BaseAuth +: BaseIdentity
                                                                          • get_timings() : BaseClient
                                                                          • get_token() -: FakeIdentity -, ServiceCatalog -, FakeServiceCatalog -, BaseAuth +: ServiceCatalog +, FakeIdentity +, BaseIdentity
                                                                          • get_token_endpoints() -: BaseAuth +: BaseIdentity
                                                                          • get_type() : CloudMonitorNotificationManager @@ -435,31 +448,30 @@

                                                                            - g -

                                                                              : CFClient
                                                                            • get_usage() -: CloudLoadBalancer +: CloudLoadBalancerClient , CloudLoadBalancerManager -, CloudLoadBalancerClient , FakeService +, CloudLoadBalancer
                                                                            • get_user() -: CloudDatabaseClient +: RaxIdentity , CloudDatabaseInstance -
                                                                            • -
                                                                            • get_user_credentials() -: RaxIdentity +, BaseIdentity +, CloudDatabaseClient
                                                                            • get_webhook() : ScalingGroupManager -, AutoScaleClient , AutoScalePolicy +, AutoScaleClient
                                                                            • getheaders() : FakeResponse
                                                                            • grant_user_access() -: CloudDatabaseUserManager -, CloudDatabaseClient -, CloudDatabaseInstance +: CloudDatabaseInstance , CloudDatabaseUser +, CloudDatabaseUserManager +, CloudDatabaseClient
                                                                            • groupConfiguration : FakeScalingGroup @@ -483,7 +495,7 @@

                                                                              - g -

                                                                                diff --git a/docs/html/functions_0x68.html b/docs/html/functions_0x68.html index b513d485..d8d11692 100644 --- a/docs/html/functions_0x68.html +++ b/docs/html/functions_0x68.html @@ -97,6 +97,7 @@
                                                                              • h
                                                                              • i
                                                                              • j
                                                                              • +
                                                                              • k
                                                                              • l
                                                                              • m
                                                                              • n
                                                                              • @@ -132,7 +133,7 @@

                                                                                - h -

                                                                                • http_log_debug : Connection , BaseClient -, BaseAuth +, BaseIdentity , CFClient
                                                                                • http_status @@ -169,7 +170,7 @@

                                                                                  - h -

                                                                                    diff --git a/docs/html/functions_0x69.html b/docs/html/functions_0x69.html index a0f20c2e..5629a7b9 100644 --- a/docs/html/functions_0x69.html +++ b/docs/html/functions_0x69.html @@ -97,6 +97,7 @@
                                                                                  • h
                                                                                  • i
                                                                                  • j
                                                                                  • +
                                                                                  • k
                                                                                  • l
                                                                                  • m
                                                                                  • n
                                                                                  • @@ -135,21 +136,28 @@

                                                                                    - i -

                                                                                      , FakeCloudMonitorNotification , FakeQueueManager , VirtualIP +, FakeService +, FakeStatusChanger +, FakeImageMemberManager +, FakeImageTagManager +, FakeDNSDomain , Queue , ImageMember , BaseResource , QueueClaim -, QueueMessage , FakeImageManager -, FakeImageTagManager -, FakeService -, FakeStatusChanger -, FakeImageMemberManager -, FakeDNSDomain +, QueueMessage , FakeEntity , FakeDNSDevice , FakeCloudNetwork +
                                                                                    • identity +: Service +, Endpoint +, BaseClient +, FakeClient +, FakeIdentityService +
                                                                                    • ignore : FolderUploader
                                                                                    • @@ -168,9 +176,9 @@

                                                                                      - i -

                                                                                      • image_tasks() : JSONSchemaManager
                                                                                      • -
                                                                                      • images() -: JSONSchemaManager -, FakeCSClient +
                                                                                      • images +: FakeCSClient +, JSONSchemaManager
                                                                                      • import_domain() : CloudDNSManager @@ -211,7 +219,7 @@

                                                                                        - i -

                                                                                          diff --git a/docs/html/functions_0x6a.html b/docs/html/functions_0x6a.html index a8c56740..319f4089 100644 --- a/docs/html/functions_0x6a.html +++ b/docs/html/functions_0x6a.html @@ -97,6 +97,7 @@
                                                                                        • h
                                                                                        • i
                                                                                        • j
                                                                                        • +
                                                                                        • k
                                                                                        • l
                                                                                        • m
                                                                                        • n
                                                                                        • @@ -139,7 +140,7 @@

                                                                                          - j -

                                                                                            diff --git a/docs/html/functions_0x6b.html b/docs/html/functions_0x6b.html new file mode 100644 index 00000000..9d9b9b03 --- /dev/null +++ b/docs/html/functions_0x6b.html @@ -0,0 +1,148 @@ + + + + + +pyrax: Class Members + + + + + + + + + + + +
                                                                                            + + +
                                                                                            + + + + + + + + + + + +
                                                                                            +
                                                                                            pyrax + +
                                                                                            +
                                                                                            Python Bindings for the Rackspace Cloud
                                                                                            +
                                                                                            +
                                                                                            + + + + + + + +
                                                                                            +
                                                                                            +
                                                                                            Here is a list of all class members with links to the classes they belong to:
                                                                                            + +

                                                                                            - k -

                                                                                            +
                                                                                            + + + + +
                                                                                            + +
                                                                                            + + + + + + + diff --git a/docs/html/functions_0x6c.html b/docs/html/functions_0x6c.html index 5262616c..ba05f5f2 100644 --- a/docs/html/functions_0x6c.html +++ b/docs/html/functions_0x6c.html @@ -97,6 +97,7 @@
                                                                                          • h
                                                                                          • i
                                                                                          • j
                                                                                          • +
                                                                                          • k
                                                                                          • l
                                                                                          • m
                                                                                          • n
                                                                                          • @@ -179,7 +180,7 @@

                                                                                            - l -

                                                                                              : CFClient
                                                                                            • list_credentials() -: RaxIdentity +: BaseIdentity
                                                                                            • list_databases() : CloudDatabaseInstance @@ -262,62 +263,62 @@

                                                                                              - l -

                                                                                                : CloudDNSClient , CloudDNSManager +
                                                                                              • list_roles() +: BaseIdentity +
                                                                                              • list_roles_for_user() -: BaseAuth +: BaseIdentity
                                                                                              • list_snapshots() -: CloudBlockStorageVolume +: CloudBlockStorageManager , CloudBlockStorageClient -, CloudBlockStorageManager +, CloudBlockStorageVolume
                                                                                              • list_subdirs() : Container
                                                                                              • list_subdomains() -: CloudDNSClient +: CloudDNSManager , CloudDNSDomain -, CloudDNSManager +, CloudDNSClient
                                                                                              • list_subdomains_next_page() -: CloudDNSClient -, CloudDNSManager +: CloudDNSManager +, CloudDNSClient
                                                                                              • list_subdomains_previous_page() -: CloudDNSClient -, CloudDNSManager +: CloudDNSManager +, CloudDNSClient
                                                                                              • list_tasks() : ImageClient
                                                                                              • list_tenants() -: BaseAuth +: BaseIdentity
                                                                                              • list_tokens() -: BaseAuth +: BaseIdentity
                                                                                              • list_types() -: CloudMonitorNotificationManager -, CloudBlockStorageClient +: CloudBlockStorageClient +, CloudMonitorNotificationManager
                                                                                              • list_user_access() -: CloudDatabaseInstance +: CloudDatabaseUser +, CloudDatabaseInstance , CloudDatabaseUserManager -, CloudDatabaseUser , CloudDatabaseClient
                                                                                              • list_users() -: CloudDatabaseInstance -, BaseAuth +: BaseIdentity +, CloudDatabaseInstance , CloudDatabaseClient
                                                                                              • list_webhooks() -: AutoScaleClient +: ScalingGroupManager , ScalingGroup -, ScalingGroupManager , AutoScalePolicy -
                                                                                              • -
                                                                                              • load() -: FakeEntryPoint +, AutoScaleClient
                                                                                              • loadbalancers : FakeService @@ -344,7 +345,7 @@

                                                                                                - l -

                                                                                                  diff --git a/docs/html/functions_0x6d.html b/docs/html/functions_0x6d.html index 20d38521..cfbb7d8d 100644 --- a/docs/html/functions_0x6d.html +++ b/docs/html/functions_0x6d.html @@ -97,6 +97,7 @@
                                                                                                • h
                                                                                                • i
                                                                                                • j
                                                                                                • +
                                                                                                • k
                                                                                                • l
                                                                                                • m
                                                                                                • n
                                                                                                • @@ -164,29 +165,29 @@

                                                                                                  - m -

                                                                                                    : ScalingGroup
                                                                                                  • method_delete() -: BaseAuth +: BaseIdentity , BaseClient
                                                                                                  • method_get() : CloudDNSClient , BaseClient -, BaseAuth +, BaseIdentity
                                                                                                  • method_head() : BaseClient -, BaseAuth +, BaseIdentity
                                                                                                  • method_patch() : BaseClient -, BaseAuth +, BaseIdentity
                                                                                                  • method_post() : BaseClient -, BaseAuth +, BaseIdentity
                                                                                                  • method_put() : BaseClient -, BaseAuth +, BaseIdentity
                                                                                                  • min_entities() : ScalingGroup @@ -217,7 +218,7 @@

                                                                                                    - m -

                                                                                                      diff --git a/docs/html/functions_0x6e.html b/docs/html/functions_0x6e.html index a8dffb17..65273342 100644 --- a/docs/html/functions_0x6e.html +++ b/docs/html/functions_0x6e.html @@ -97,6 +97,7 @@
                                                                                                    • h
                                                                                                    • i
                                                                                                    • j
                                                                                                    • +
                                                                                                    • k
                                                                                                    • l
                                                                                                    • m
                                                                                                    • n
                                                                                                    • @@ -118,15 +119,15 @@

                                                                                                      - n -

                                                                                                      • name : AutoScaleClient -, Container -, BaseClient -, CloudDatabaseUser -, CloudNetworkClient +, Service +, StorageObject +, CloudBlockStorageClient +, CloudNetwork +, CloudMonitorNotification , CloudMonitorNotificationType +, CloudNetworkClient , CloudMonitorNotificationPlan -, FakeStorageObject , CloudMonitorAlarm -, CloudMonitorNotification , CloudMonitorZone , CloudMonitorCheck , CloudMonitorEntity @@ -136,20 +137,21 @@

                                                                                                        - n -

                                                                                                          , QueueClient , Queue , ImageClient +, FakeIdentityService , FakeScalingGroup -, CloudDatabaseClient -, FakeEntryPoint +, CloudDatabaseUser +, FakeStorageObject , FakeDNSDomain -, CloudBlockStorageSnapshot -, CloudNetwork +, BaseClient , CloudMonitorClient , CloudLoadBalancerClient , CloudDNSClient -, CloudDNSRecord , CloudDNSPTRRecord -, StorageObject +, CloudDatabaseClient +, CloudDNSRecord +, Container +, CloudBlockStorageSnapshot , CloudBlockStorageVolume -, CloudBlockStorageClient
                                                                                                        • NAME_ATTR : BaseResource @@ -183,7 +185,7 @@

                                                                                                          - n -

                                                                                                            diff --git a/docs/html/functions_0x6f.html b/docs/html/functions_0x6f.html index f12c387a..fdae7419 100644 --- a/docs/html/functions_0x6f.html +++ b/docs/html/functions_0x6f.html @@ -97,6 +97,7 @@
                                                                                                          • h
                                                                                                          • i
                                                                                                          • j
                                                                                                          • +
                                                                                                          • k
                                                                                                          • l
                                                                                                          • m
                                                                                                          • n
                                                                                                          • @@ -150,7 +151,7 @@

                                                                                                            - o -

                                                                                                              diff --git a/docs/html/functions_0x70.html b/docs/html/functions_0x70.html index 7cea3513..c6a3bf6c 100644 --- a/docs/html/functions_0x70.html +++ b/docs/html/functions_0x70.html @@ -97,6 +97,7 @@
                                                                                                            • h
                                                                                                            • i
                                                                                                            • j
                                                                                                            • +
                                                                                                            • k
                                                                                                            • l
                                                                                                            • m
                                                                                                            • n
                                                                                                            • @@ -126,9 +127,9 @@

                                                                                                              - p -

                                                                                                                , VirtualIP
                                                                                                              • password -: FakeIdentity -, RaxIdentity -, BaseAuth +: RaxIdentity +, BaseIdentity +, FakeIdentity
                                                                                                              • password_set : FakeKeyring @@ -139,10 +140,10 @@

                                                                                                                - p -

                                                                                                                  , AutoScaleClient
                                                                                                                • plural_response_key -: BaseManager -, QueueMessageManager +: QueueMessageManager , FakeDNSManager , FakeImageManager +, BaseManager
                                                                                                                • policies : ScalingGroup @@ -158,12 +159,19 @@

                                                                                                                  - p -

                                                                                                                    , FakeLoadBalancer
                                                                                                                  • post_message() -: Queue -, QueueClient +: QueueClient +, Queue +
                                                                                                                  • +
                                                                                                                  • prefix +: FakeIdentityService +, Service
                                                                                                                  • priority : CloudDNSRecord
                                                                                                                  • +
                                                                                                                  • private_url +: Endpoint +
                                                                                                                  • projectid() : BaseClient
                                                                                                                  • @@ -176,6 +184,9 @@

                                                                                                                    - p -

                                                                                                                    • PUBLIC_NET_ID : CloudNetworkClient
                                                                                                                    • +
                                                                                                                    • public_url +: Endpoint +
                                                                                                                    • purge() : StorageObject
                                                                                                                    • @@ -201,7 +212,7 @@

                                                                                                                      - p -

                                                                                                                        diff --git a/docs/html/functions_0x71.html b/docs/html/functions_0x71.html index 0e1851d8..feb8ca91 100644 --- a/docs/html/functions_0x71.html +++ b/docs/html/functions_0x71.html @@ -97,6 +97,7 @@
                                                                                                                      • h
                                                                                                                      • i
                                                                                                                      • j
                                                                                                                      • +
                                                                                                                      • k
                                                                                                                      • l
                                                                                                                      • m
                                                                                                                      • n
                                                                                                                      • @@ -138,7 +139,7 @@

                                                                                                                        - q -

                                                                                                                          diff --git a/docs/html/functions_0x72.html b/docs/html/functions_0x72.html index 358538ab..2c3d263b 100644 --- a/docs/html/functions_0x72.html +++ b/docs/html/functions_0x72.html @@ -97,6 +97,7 @@
                                                                                                                        • h
                                                                                                                        • i
                                                                                                                        • j
                                                                                                                        • +
                                                                                                                        • k
                                                                                                                        • l
                                                                                                                        • m
                                                                                                                        • n
                                                                                                                        • @@ -127,24 +128,26 @@

                                                                                                                          - r -

                                                                                                                            : FakeResponse
                                                                                                                          • region -: BaseAuth +: Endpoint +, BaseIdentity
                                                                                                                          • region_name : BaseClient
                                                                                                                          • regions -: BaseAuth +: BaseIdentity +, Service
                                                                                                                          • release_claim() : Queue , QueueClient
                                                                                                                          • reload -: AutoScalePolicy +: BaseResource +, AutoScalePolicy , AutoScaleWebhook , CloudMonitorCheck , CloudMonitorAlarm -, BaseResource
                                                                                                                          • remove_container_from_cache() : CFClient @@ -187,13 +190,17 @@

                                                                                                                            - r -

                                                                                                                            • required_field_names() : CloudMonitorCheckType
                                                                                                                            • +
                                                                                                                            • reset_api_key() +: BaseIdentity +, RaxIdentity +
                                                                                                                            • reset_timings() : BaseClient
                                                                                                                            • resize() -: CloudDatabaseVolume +: CloudDatabaseClient +, CloudDatabaseVolume , CloudDatabaseInstance -, CloudDatabaseClient
                                                                                                                            • resize_volume() : CloudDatabaseInstance @@ -227,15 +234,18 @@

                                                                                                                              - r -

                                                                                                                                , ResultsIterator
                                                                                                                              • resume() -: AutoScaleClient +: ScalingGroup +, AutoScaleClient , ScalingGroupManager -, ScalingGroup +
                                                                                                                              • +
                                                                                                                              • revoke_token() +: BaseIdentity
                                                                                                                              • revoke_user_access() : CloudDatabaseClient -, CloudDatabaseUserManager , CloudDatabaseInstance , CloudDatabaseUser +, CloudDatabaseUserManager
                                                                                                                              • root_folder : FolderUploader @@ -244,12 +254,12 @@

                                                                                                                                - r -

                                                                                                                                  : CloudDatabaseClient , CloudDatabaseInstance -
                                                                                                                                • run() -: _WaitThread -, FolderUploader +
                                                                                                                                • run +: FakeFolderUploader , BulkDeleter +, _WaitThread , FakeBulkDeleter -, FakeFolderUploader +, FolderUploader
                                                                                                                                • run_hooks() : BaseManager @@ -273,7 +283,7 @@

                                                                                                                                  - r -

                                                                                                                                    diff --git a/docs/html/functions_0x73.html b/docs/html/functions_0x73.html index fbc17c64..03c172a4 100644 --- a/docs/html/functions_0x73.html +++ b/docs/html/functions_0x73.html @@ -97,6 +97,7 @@
                                                                                                                                  • h
                                                                                                                                  • i
                                                                                                                                  • j
                                                                                                                                  • +
                                                                                                                                  • k
                                                                                                                                  • l
                                                                                                                                  • m
                                                                                                                                  • n
                                                                                                                                  • @@ -127,14 +128,27 @@

                                                                                                                                    - s -

                                                                                                                                    • servers : FakeCSClient
                                                                                                                                    • +
                                                                                                                                    • service +: Endpoint +
                                                                                                                                    • +
                                                                                                                                    • service_catalog +: BaseIdentity +
                                                                                                                                    • +
                                                                                                                                    • service_mapping +: BaseIdentity +
                                                                                                                                    • service_name : BaseClient
                                                                                                                                    • SERVICE_NET_ID : CloudNetworkClient
                                                                                                                                    • +
                                                                                                                                    • service_type +: Service +, FakeIdentityService +
                                                                                                                                    • services -: BaseAuth +: BaseIdentity
                                                                                                                                    • session_persistence : CloudLoadBalancer @@ -169,10 +183,10 @@

                                                                                                                                      - s -

                                                                                                                                        , CloudLoadBalancerClient
                                                                                                                                      • set_credential_file() -: BaseAuth +: BaseIdentity
                                                                                                                                      • set_credentials() -: BaseAuth +: BaseIdentity
                                                                                                                                      • set_delay() : CloudDNSClient @@ -183,14 +197,14 @@

                                                                                                                                        - s -

                                                                                                                                          , CloudLoadBalancerClient
                                                                                                                                        • set_metadata() -: CloudLoadBalancerClient -, Node -, QueueManager -, QueueClient -, Container +: Container , StorageObject , CloudLoadBalancer , CloudLoadBalancerManager +, Node +, CloudLoadBalancerClient +, QueueManager +, QueueClient
                                                                                                                                        • set_metadata_for_node() : CloudLoadBalancer @@ -222,12 +236,12 @@

                                                                                                                                          - s -

                                                                                                                                            : FakeDatabaseVolume , CloudDatabaseVolume -
                                                                                                                                          • status -: FakeBlockStorageSnapshot -, FakeStatusChanger +
                                                                                                                                          • status() +: FakeResponse +, FakeBlockStorageSnapshot , FakeResponse , Node -, FakeResponse +, FakeStatusChanger
                                                                                                                                          • status_code : FakeResponse @@ -260,7 +274,7 @@

                                                                                                                                            - s -

                                                                                                                                              diff --git a/docs/html/functions_0x74.html b/docs/html/functions_0x74.html index f08fc796..d154b932 100644 --- a/docs/html/functions_0x74.html +++ b/docs/html/functions_0x74.html @@ -97,6 +97,7 @@
                                                                                                                                            • h
                                                                                                                                            • i
                                                                                                                                            • j
                                                                                                                                            • +
                                                                                                                                            • k
                                                                                                                                            • l
                                                                                                                                            • m
                                                                                                                                            • n
                                                                                                                                            • @@ -117,16 +118,17 @@

                                                                                                                                              - t -

                                                                                                                                              • tenant_id -: BaseAuth +: Endpoint +, BaseIdentity , FakeIdentity
                                                                                                                                              • tenant_name -: BaseAuth +: BaseIdentity , FakeIdentity
                                                                                                                                              • test_notification() -: CloudMonitorClient -, CloudMonitorNotificationManager +: CloudMonitorNotificationManager +, CloudMonitorClient
                                                                                                                                              • timeout : BaseClient @@ -142,25 +144,25 @@

                                                                                                                                                - t -

                                                                                                                                                @@ -181,7 +183,7 @@

                                                                                                                                                - t -

                                                                                                                                                  diff --git a/docs/html/functions_0x75.html b/docs/html/functions_0x75.html index 75f188e1..ef52a965 100644 --- a/docs/html/functions_0x75.html +++ b/docs/html/functions_0x75.html @@ -97,6 +97,7 @@
                                                                                                                                                • h
                                                                                                                                                • i
                                                                                                                                                • j
                                                                                                                                                • +
                                                                                                                                                • k
                                                                                                                                                • l
                                                                                                                                                • m
                                                                                                                                                • n
                                                                                                                                                • @@ -117,31 +118,34 @@

                                                                                                                                                  - u -

                                                                                                                                                  • unauthenticate() -: BaseAuth +: BaseIdentity , BaseClient
                                                                                                                                                  • update() : ScalingGroupManager -, CloudDatabaseUserManager +, CloudBlockStorageManager +, CloudLoadBalancerManager +, Node +, CloudBlockStorageSnapshotManager +, CloudLoadBalancerClient , CloudMonitorEntity +, AutoScalePolicy +, CloudBlockStorageClient , CloudMonitorCheck -, CloudDatabaseUser , CloudMonitorNotification +, CloudDatabaseUserManager , CloudMonitorAlarm -, AutoScalePolicy -, CloudDNSRecord , Image +, ScalingGroup +, AutoScaleWebhook +, CloudDatabaseUser , ImageManager -, CloudDNSDomain , ImageClient +, CloudDNSRecord , QueueClaimManager -, ScalingGroup -, AutoScaleWebhook -, CloudLoadBalancer -, CloudLoadBalancerManager , AutoScaleClient -, Node -, CloudLoadBalancerClient +, CloudDNSDomain +, CloudLoadBalancer
                                                                                                                                                  • update_alarm() : CloudMonitorEntity @@ -157,8 +161,8 @@

                                                                                                                                                    - u -

                                                                                                                                                      , QueueClient
                                                                                                                                                    • update_domain() -: CloudDNSClient -, CloudDNSManager +: CloudDNSManager +, CloudDNSClient
                                                                                                                                                    • update_entity() : CloudMonitorEntityManager @@ -202,9 +206,9 @@

                                                                                                                                                      - u -

                                                                                                                                                        , CloudMonitorClient
                                                                                                                                                      • update_policy() -: ScalingGroupManager +: AutoScaleClient , ScalingGroup -, AutoScaleClient +, ScalingGroupManager
                                                                                                                                                      • update_ptr_record() : CloudDNSManager @@ -215,31 +219,34 @@

                                                                                                                                                        - u -

                                                                                                                                                          , CloudDNSManager , CloudDNSClient +
                                                                                                                                                        • update_snapshot() +: CloudBlockStorageClient +
                                                                                                                                                        • update_ssl_termination() : CloudLoadBalancer -, CloudLoadBalancerManager , CloudLoadBalancerClient +, CloudLoadBalancerManager
                                                                                                                                                        • update_tenant() -: BaseAuth +: BaseIdentity
                                                                                                                                                        • update_user() -: BaseAuth -, CloudDatabaseClient -, RaxIdentity +: RaxIdentity , CloudDatabaseInstance +, BaseIdentity +, CloudDatabaseClient
                                                                                                                                                        • update_webhook() : ScalingGroupManager +, AutoScalePolicy , AutoScaleClient , ScalingGroup -, AutoScalePolicy
                                                                                                                                                        • update_webhook_metadata() : AutoScalePolicy -, AutoScaleClient -, ScalingGroupManager , ScalingGroup +, ScalingGroupManager +, AutoScaleClient
                                                                                                                                                        • upload_file() : CFClient @@ -259,46 +266,42 @@

                                                                                                                                                          - u -

                                                                                                                                                          @@ -319,7 +322,7 @@

                                                                                                                                                          - u -

                                                                                                                                                            diff --git a/docs/html/functions_0x76.html b/docs/html/functions_0x76.html index 798676fe..ad26f58f 100644 --- a/docs/html/functions_0x76.html +++ b/docs/html/functions_0x76.html @@ -97,6 +97,7 @@
                                                                                                                                                          • h
                                                                                                                                                          • i
                                                                                                                                                          • j
                                                                                                                                                          • +
                                                                                                                                                          • k
                                                                                                                                                          • l
                                                                                                                                                          • m
                                                                                                                                                          • n
                                                                                                                                                          • @@ -120,7 +121,7 @@

                                                                                                                                                            - v -

                                                                                                                                                              : _WaitThread
                                                                                                                                                            • verify_ssl -: BaseAuth +: BaseIdentity , BaseClient
                                                                                                                                                            • version @@ -153,7 +154,7 @@

                                                                                                                                                              - v -

                                                                                                                                                                diff --git a/docs/html/functions_0x77.html b/docs/html/functions_0x77.html index 4ca7f42d..228e782f 100644 --- a/docs/html/functions_0x77.html +++ b/docs/html/functions_0x77.html @@ -97,6 +97,7 @@
                                                                                                                                                              • h
                                                                                                                                                              • i
                                                                                                                                                              • j
                                                                                                                                                              • +
                                                                                                                                                              • k
                                                                                                                                                              • l
                                                                                                                                                              • m
                                                                                                                                                              • n
                                                                                                                                                              • @@ -138,7 +139,7 @@

                                                                                                                                                                - w -

                                                                                                                                                                  diff --git a/docs/html/functions_func.html b/docs/html/functions_func.html index cbdf3c76..6f136d8d 100644 --- a/docs/html/functions_func.html +++ b/docs/html/functions_func.html @@ -97,6 +97,7 @@
                                                                                                                                                                • h
                                                                                                                                                                • i
                                                                                                                                                                • j
                                                                                                                                                                • +
                                                                                                                                                                • k
                                                                                                                                                                • l
                                                                                                                                                                • m
                                                                                                                                                                • n
                                                                                                                                                                • @@ -127,15 +128,17 @@

                                                                                                                                                                  - _ -

                                                                                                                                                                    , SelfDeletingTempDirectory
                                                                                                                                                                  • __getattr__() -: BaseResource +: BaseIdentity +, BaseResource +, DotDict +, Endpoint
                                                                                                                                                                  • __init__() -: ScalingGroup -, BulkDeleter -, CloudMonitorClient -, FakeAutoScaleClient -, FakeAutoScalePolicy -, _WaitThread +: Endpoint +, Node +, FakeDNSDomain +, FakeDNSRecord +, DotDict , ServiceCatalog , BaseResource , QueueMessage @@ -143,76 +146,80 @@

                                                                                                                                                                    - _ -

                                                                                                                                                                      , BaseManager , Image , FakeIdentity +, FakeIdentityService , FakeImageManager , FakeImageTagManager -, CloudNetworkClient +, FakeImageMemberManager , FakeImageClient , FakeImage -, FakeQueueManager -, FakeQueueClient -, FakeQueueMessage +, VirtualIP +, FakeDNSDevice , FakeQueueClaim , FakeQueue , FakeCloudMonitorNotification , FakeCloudMonitorCheck , FakeCloudMonitorEntity , FakeCloudMonitorClient -, FakeAutoScaleWebhook -, FakeScalingGroupManager -, Container -, AmbiguousEndpoints , FakeScalingGroup -, FakeCloudNetwork , FakeCloudNetworkClient -, FakeDNSDevice -, FakeDNSRecord -, FakeDNSDomain +, FakeAutoScaleWebhook +, FakeAutoScalePolicy +, BaseIdentity +, CloudLoadBalancerClient +, FakeCloudNetwork +, FakeAutoScaleClient +, CloudMonitorCheck +, CFClient , FakeDNSManager , FakeDNSClient -, ClientException +, FakeNode , FakeLoadBalancer , FakeLoadBalancerManager , FakeLoadBalancerClient , FakeBlockStorageClient -, FakeBlockStorageSnapshot +, CloudMonitorAlarm , FakeBlockStorageVolume -, ScalingGroupManager -, StorageObject +, FakeBlockStorageManager +, FakeNovaVolumeClient , FakeDatabaseClient , FakeDatabaseManager , FakeDatabaseInstance , FakeDatabaseVolume -, FakeEntity -, FakeServiceCatalog -, FakeEntryPoint -, FakeImageMemberManager +, FakeScalingGroupManager +, FakeManager +, FakeBulkDeleter , FakeFolderUploader -, FakeStorageObject -, FakeService -, BaseClient , FakeCSClient -, AutoScalePolicy -, CloudBlockStorageVolume -, FakeBulkDeleter -, CloudMonitorAlarm -, CloudMonitorCheck -, CloudLoadBalancerClient -, FakeNode -, Node +, FakeService +, FakeStorageObject +, FakeClient +, FakeQueueManager +, CloudMonitorClient +, Connection +, CloudNetworkClient +, AmbiguousEndpoints +, FolderUploader +, ClientException +, FakeQueueClient +, BulkDeleter , CloudLoadBalancer , ResultsIterator -, FakeBlockStorageManager -, CloudDNSPTRRecord +, CloudDNSManager +, FakeBlockStorageSnapshot +, CloudDatabaseInstance , CloudDatabaseVolume +, CloudBlockStorageVolume +, _WaitThread +, ScalingGroup +, Container +, StorageObject +, ScalingGroupManager +, BaseClient +, FakeEntity +, AutoScalePolicy , AutoScaleWebhook -, CloudDatabaseInstance -, BaseAuth -, CloudDNSManager -, FakeNovaVolumeClient -, CFClient -, FolderUploader -, Connection -, VirtualIP +, CloudDNSPTRRecord +, Service
                                                                                                                                                                    • __iter__() : ResultsIterator @@ -224,12 +231,13 @@

                                                                                                                                                                      - _ -

                                                                                                                                                                        : Fault
                                                                                                                                                                      • __repr__() -: Container -, Node +: VirtualIP +, Container +, CloudDNSPTRRecord , StorageObject +, Node +, Service , BaseResource -, VirtualIP -, CloudDNSPTRRecord
                                                                                                                                                                      • __str__() : ClientException @@ -254,7 +262,7 @@

                                                                                                                                                                        - _ -

                                                                                                                                                                          diff --git a/docs/html/functions_func_0x61.html b/docs/html/functions_func_0x61.html index 4b93699a..d0dca82f 100644 --- a/docs/html/functions_func_0x61.html +++ b/docs/html/functions_func_0x61.html @@ -97,6 +97,7 @@
                                                                                                                                                                        • h
                                                                                                                                                                        • i
                                                                                                                                                                        • j
                                                                                                                                                                        • +
                                                                                                                                                                        • k
                                                                                                                                                                        • l
                                                                                                                                                                        • m
                                                                                                                                                                        • n
                                                                                                                                                                        • @@ -167,10 +168,13 @@

                                                                                                                                                                          - a -

                                                                                                                                                                            , CloudDNSManager , CloudDNSClient +
                                                                                                                                                                          • add_role_to_user() +: BaseIdentity +
                                                                                                                                                                          • add_ssl_termination() -: CloudLoadBalancer +: CloudLoadBalancerClient +, CloudLoadBalancer , CloudLoadBalancerManager -, CloudLoadBalancerClient
                                                                                                                                                                          • add_tag() : Image @@ -181,10 +185,10 @@

                                                                                                                                                                            - a -

                                                                                                                                                                              , CloudLoadBalancerClient
                                                                                                                                                                            • add_webhook() -: ScalingGroupManager -, AutoScalePolicy -, AutoScaleClient +: AutoScaleClient , ScalingGroup +, AutoScalePolicy +, ScalingGroupManager
                                                                                                                                                                            • algorithms() : CloudLoadBalancerClient @@ -193,26 +197,26 @@

                                                                                                                                                                              - a -

                                                                                                                                                                              @@ -233,7 +237,7 @@

                                                                                                                                                                              - a -

                                                                                                                                                                                diff --git a/docs/html/functions_func_0x62.html b/docs/html/functions_func_0x62.html index afe25f5e..fb1a7747 100644 --- a/docs/html/functions_func_0x62.html +++ b/docs/html/functions_func_0x62.html @@ -97,6 +97,7 @@
                                                                                                                                                                              • h
                                                                                                                                                                              • i
                                                                                                                                                                              • j
                                                                                                                                                                              • +
                                                                                                                                                                              • k
                                                                                                                                                                              • l
                                                                                                                                                                              • m
                                                                                                                                                                              • n
                                                                                                                                                                              • @@ -136,7 +137,7 @@

                                                                                                                                                                                - b -

                                                                                                                                                                                  diff --git a/docs/html/functions_func_0x63.html b/docs/html/functions_func_0x63.html index a7c0107d..e7e9d75e 100644 --- a/docs/html/functions_func_0x63.html +++ b/docs/html/functions_func_0x63.html @@ -97,6 +97,7 @@
                                                                                                                                                                                • h
                                                                                                                                                                                • i
                                                                                                                                                                                • j
                                                                                                                                                                                • +
                                                                                                                                                                                • k
                                                                                                                                                                                • l
                                                                                                                                                                                • m
                                                                                                                                                                                • n
                                                                                                                                                                                • @@ -150,7 +151,7 @@

                                                                                                                                                                                  - c -

                                                                                                                                                                                    , CloudDNSClient
                                                                                                                                                                                  • check_token() -: BaseAuth +: BaseIdentity
                                                                                                                                                                                  • claim() : QueueClaimManager @@ -164,6 +165,12 @@

                                                                                                                                                                                    - c -

                                                                                                                                                                                      , CloudLoadBalancerManager , CloudLoadBalancerClient +
                                                                                                                                                                                    • client() +: Endpoint +
                                                                                                                                                                                    • +
                                                                                                                                                                                    • client_private() +: Endpoint +
                                                                                                                                                                                    • content() : FakeIdentityResponse
                                                                                                                                                                                    • @@ -178,30 +185,30 @@

                                                                                                                                                                                      - c -

                                                                                                                                                                                        , Container
                                                                                                                                                                                      • create() -: CloudMonitorNotificationManager +: CloudBlockStorageManager +, CloudBlockStorageSnapshotManager +, CloudMonitorNotificationManager , CloudMonitorNotificationPlanManager , CloudMonitorClient , CloudNetworkClient , FakeManager -, CloudBlockStorageSnapshotManager -, ImageMemberManager , ImageTasksManager +, BaseManager , QueueManager , QueueClient -, BaseManager +, ImageMemberManager , BaseClient -, CloudBlockStorageManager
                                                                                                                                                                                      • create_alarm() : CloudMonitorClient , CloudMonitorEntityManager -, CloudMonitorEntity , CloudMonitorCheck +, CloudMonitorEntity
                                                                                                                                                                                      • create_backup() -: CloudDatabaseInstance +: CloudDatabaseManager +, CloudDatabaseInstance , CloudDatabaseClient -, CloudDatabaseManager
                                                                                                                                                                                      • create_check() : CloudMonitorEntityManager @@ -211,8 +218,8 @@

                                                                                                                                                                                        - c -

                                                                                                                                                                                          : CFClient
                                                                                                                                                                                        • create_database() -: CloudDatabaseClient -, CloudDatabaseInstance +: CloudDatabaseInstance +, CloudDatabaseClient
                                                                                                                                                                                        • create_entity() : CloudMonitorClient @@ -224,16 +231,16 @@

                                                                                                                                                                                          - c -

                                                                                                                                                                                          @@ -255,7 +262,7 @@

                                                                                                                                                                                          - c -

                                                                                                                                                                                            diff --git a/docs/html/functions_func_0x64.html b/docs/html/functions_func_0x64.html index 102c36a4..be1badf2 100644 --- a/docs/html/functions_func_0x64.html +++ b/docs/html/functions_func_0x64.html @@ -97,6 +97,7 @@
                                                                                                                                                                                          • h
                                                                                                                                                                                          • i
                                                                                                                                                                                          • j
                                                                                                                                                                                          • +
                                                                                                                                                                                          • k
                                                                                                                                                                                          • l
                                                                                                                                                                                          • m
                                                                                                                                                                                          • n
                                                                                                                                                                                          • @@ -235,27 +236,30 @@

                                                                                                                                                                                            - d -

                                                                                                                                                                                              : CloudMonitorClient
                                                                                                                                                                                            • delete_object() -: Container -, CFClient +: CFClient +, Container
                                                                                                                                                                                            • delete_object_in_seconds() -: Container -, CFClient +: CFClient +, Container
                                                                                                                                                                                            • delete_policy() -: ScalingGroupManager -, ScalingGroup +: ScalingGroup +, ScalingGroupManager , AutoScaleClient
                                                                                                                                                                                            • delete_ptr_records() -: CloudDNSManager -, CloudDNSClient +: CloudDNSClient +, CloudDNSManager
                                                                                                                                                                                            • delete_record() : CloudDNSClient , CloudDNSDomain , CloudDNSManager
                                                                                                                                                                                            • +
                                                                                                                                                                                            • delete_role_from_user() +: BaseIdentity +
                                                                                                                                                                                            • delete_session_persistence() : CloudLoadBalancerManager
                                                                                                                                                                                            • @@ -263,34 +267,34 @@

                                                                                                                                                                                              - d -

                                                                                                                                                                                                : CloudBlockStorageClient
                                                                                                                                                                                              • delete_ssl_termination() -: CloudLoadBalancer +: CloudLoadBalancerClient +, CloudLoadBalancer , CloudLoadBalancerManager -, CloudLoadBalancerClient
                                                                                                                                                                                              • delete_tag() : Image
                                                                                                                                                                                              • delete_tenant() -: BaseAuth +: BaseIdentity
                                                                                                                                                                                              • delete_user() -: CloudDatabaseInstance -, BaseAuth +: BaseIdentity , CloudDatabaseClient +, CloudDatabaseInstance
                                                                                                                                                                                              • delete_virtualip() -: CloudLoadBalancerClient +: CloudLoadBalancerManager , CloudLoadBalancer -, CloudLoadBalancerManager +, CloudLoadBalancerClient
                                                                                                                                                                                              • delete_volume() : CloudBlockStorageClient
                                                                                                                                                                                              • delete_webhook() -: AutoScaleClient -, ScalingGroup +: AutoScalePolicy +, AutoScaleClient , ScalingGroupManager -, AutoScalePolicy +, ScalingGroup
                                                                                                                                                                                              • detach() : CloudBlockStorageVolume @@ -322,7 +326,7 @@

                                                                                                                                                                                                - d -

                                                                                                                                                                                                  diff --git a/docs/html/functions_func_0x65.html b/docs/html/functions_func_0x65.html index 4d4c514a..8e316fa9 100644 --- a/docs/html/functions_func_0x65.html +++ b/docs/html/functions_func_0x65.html @@ -97,6 +97,7 @@
                                                                                                                                                                                                • h
                                                                                                                                                                                                • i
                                                                                                                                                                                                • j
                                                                                                                                                                                                • +
                                                                                                                                                                                                • k
                                                                                                                                                                                                • l
                                                                                                                                                                                                • m
                                                                                                                                                                                                • n
                                                                                                                                                                                                • @@ -158,7 +159,7 @@

                                                                                                                                                                                                  - e -

                                                                                                                                                                                                    diff --git a/docs/html/functions_func_0x66.html b/docs/html/functions_func_0x66.html index bcec6082..9a9c6140 100644 --- a/docs/html/functions_func_0x66.html +++ b/docs/html/functions_func_0x66.html @@ -97,6 +97,7 @@
                                                                                                                                                                                                  • h
                                                                                                                                                                                                  • i
                                                                                                                                                                                                  • j
                                                                                                                                                                                                  • +
                                                                                                                                                                                                  • k
                                                                                                                                                                                                  • l
                                                                                                                                                                                                  • m
                                                                                                                                                                                                  • n
                                                                                                                                                                                                  • @@ -148,17 +149,23 @@

                                                                                                                                                                                                    - f -

                                                                                                                                                                                                      : CloudDNSClient , CloudDNSDomain +
                                                                                                                                                                                                    • find_user_by_email() +: BaseIdentity +, RaxIdentity +
                                                                                                                                                                                                    • find_user_by_id() -: RaxIdentity +: BaseIdentity +, RaxIdentity
                                                                                                                                                                                                    • find_user_by_name() -: RaxIdentity +: BaseIdentity +, RaxIdentity
                                                                                                                                                                                                    • findall() -: BaseManager +: CloudDNSManager , CloudMonitorClient +, BaseManager , BaseClient -, CloudDNSManager
                                                                                                                                                                                                    • folder_name_from_path() : FolderUploader @@ -182,7 +189,7 @@

                                                                                                                                                                                                      - f -

                                                                                                                                                                                                        diff --git a/docs/html/functions_func_0x67.html b/docs/html/functions_func_0x67.html index e2282ba0..c7cf3ef5 100644 --- a/docs/html/functions_func_0x67.html +++ b/docs/html/functions_func_0x67.html @@ -97,6 +97,7 @@
                                                                                                                                                                                                      • h
                                                                                                                                                                                                      • i
                                                                                                                                                                                                      • j
                                                                                                                                                                                                      • +
                                                                                                                                                                                                      • k
                                                                                                                                                                                                      • l
                                                                                                                                                                                                      • m
                                                                                                                                                                                                      • n
                                                                                                                                                                                                      • @@ -117,23 +118,24 @@

                                                                                                                                                                                                        - g -

                                                                                                                                                                                                        • get() : Settings , AutoScalePolicy -, StorageObject -, CloudDatabaseInstance +, Endpoint +, CloudDatabaseManager +, FakeManager , FakeEntity +, CloudDatabaseInstance , BaseManager -, CloudDNSRecord , QueueManager +, StorageObject +, CloudDNSRecord , BaseResource -, BaseClient , CloudMonitorCheck -, CloudMonitorAlarm , AutoScaleWebhook -, CloudDatabaseVolume +, BaseClient +, CloudMonitorAlarm , CloudMonitorClient +, CloudDatabaseVolume , CloudNetwork -, CloudDatabaseManager , FakeResponse -, FakeManager
                                                                                                                                                                                                        • get_absolute_limits() : CloudDNSClient @@ -180,6 +182,10 @@

                                                                                                                                                                                                          - g -

                                                                                                                                                                                                            : Queue , QueueClient +
                                                                                                                                                                                                          • get_client() +: Service +, BaseIdentity +
                                                                                                                                                                                                          • get_configuration() : ScalingGroup , ScalingGroupManager @@ -224,7 +230,7 @@

                                                                                                                                                                                                            - g -

                                                                                                                                                                                                              , CloudDatabaseClient
                                                                                                                                                                                                            • get_default_region() -: BaseAuth +: BaseIdentity
                                                                                                                                                                                                            • get_device() : Node @@ -236,12 +242,12 @@

                                                                                                                                                                                                              - g -

                                                                                                                                                                                                                : CloudMonitorClient
                                                                                                                                                                                                              • get_error_page() -: CloudLoadBalancerClient -, CloudLoadBalancer +: CloudLoadBalancer , CloudLoadBalancerManager +, CloudLoadBalancerClient
                                                                                                                                                                                                              • get_extensions() -: BaseAuth +: BaseIdentity
                                                                                                                                                                                                              • get_flavor() : CloudDatabaseClient @@ -295,12 +301,12 @@

                                                                                                                                                                                                                - g -

                                                                                                                                                                                                                  , QueueClient
                                                                                                                                                                                                                • get_metadata() -: Container -, Node +: CloudLoadBalancerClient , StorageObject +, Container , CloudLoadBalancer , CloudLoadBalancerManager -, CloudLoadBalancerClient +, Node , QueueManager , QueueClient
                                                                                                                                                                                                                • @@ -309,10 +315,10 @@

                                                                                                                                                                                                                  - g -

                                                                                                                                                                                                                    , CloudLoadBalancerClient
                                                                                                                                                                                                                  • get_metric_data_points() -: CloudMonitorEntity +: CloudMonitorClient +, CloudMonitorEntity , CloudMonitorEntityManager , CloudMonitorCheck -, CloudMonitorClient
                                                                                                                                                                                                                  • get_monitoring_zone() : CloudMonitorClient @@ -346,9 +352,9 @@

                                                                                                                                                                                                                    - g -

                                                                                                                                                                                                                      : FakeKeyring
                                                                                                                                                                                                                    • get_policy() -: ScalingGroup +: AutoScaleClient +, ScalingGroup , ScalingGroupManager -, AutoScaleClient
                                                                                                                                                                                                                    • get_protocols() : FakeService @@ -358,34 +364,40 @@

                                                                                                                                                                                                                      - g -

                                                                                                                                                                                                                      • get_record() : CloudDNSManager -, CloudDNSDomain , CloudDNSClient +, CloudDNSDomain
                                                                                                                                                                                                                      • get_record_iterator() : CloudDNSClient
                                                                                                                                                                                                                      • +
                                                                                                                                                                                                                      • get_role() +: BaseIdentity +
                                                                                                                                                                                                                      • get_server_networks() -: CloudNetwork -, CloudNetworkClient +: CloudNetworkClient +, CloudNetwork
                                                                                                                                                                                                                      • get_session_persistence() -: CloudLoadBalancerManager -, CloudLoadBalancerClient +: CloudLoadBalancerClient +, CloudLoadBalancerManager +
                                                                                                                                                                                                                      • +
                                                                                                                                                                                                                      • get_snapshot() +: CloudBlockStorageClient
                                                                                                                                                                                                                      • get_ssl_termination() -: CloudLoadBalancerClient -, CloudLoadBalancer +: CloudLoadBalancer +, CloudLoadBalancerClient , CloudLoadBalancerManager
                                                                                                                                                                                                                      • get_state() : ScalingGroup -, AutoScaleClient , ScalingGroupManager +, AutoScaleClient
                                                                                                                                                                                                                      • get_stats() -: QueueManager +: CloudLoadBalancerManager , QueueClient -, CloudLoadBalancerManager +, QueueManager
                                                                                                                                                                                                                      • get_subdomain_iterator() : CloudDNSClient @@ -394,15 +406,15 @@

                                                                                                                                                                                                                        - g -

                                                                                                                                                                                                                          : ImageClient
                                                                                                                                                                                                                        • get_temp_url() -: CFClient -, Container +: Container +, CFClient , StorageObject
                                                                                                                                                                                                                        • get_temp_url_key() : CFClient
                                                                                                                                                                                                                        • get_tenant() -: BaseAuth +: BaseIdentity
                                                                                                                                                                                                                        • get_timings() : BaseClient @@ -410,11 +422,10 @@

                                                                                                                                                                                                                          - g -

                                                                                                                                                                                                                          • get_token() : FakeIdentity , ServiceCatalog -, FakeServiceCatalog -, BaseAuth +, BaseIdentity
                                                                                                                                                                                                                          • get_token_endpoints() -: BaseAuth +: BaseIdentity
                                                                                                                                                                                                                          • get_type() : CloudMonitorNotificationManager @@ -425,29 +436,28 @@

                                                                                                                                                                                                                            - g -

                                                                                                                                                                                                                            @@ -468,7 +478,7 @@

                                                                                                                                                                                                                            - g -

                                                                                                                                                                                                                              diff --git a/docs/html/functions_func_0x68.html b/docs/html/functions_func_0x68.html index aabec7d7..bbe0d1c1 100644 --- a/docs/html/functions_func_0x68.html +++ b/docs/html/functions_func_0x68.html @@ -97,6 +97,7 @@
                                                                                                                                                                                                                            • h
                                                                                                                                                                                                                            • i
                                                                                                                                                                                                                            • j
                                                                                                                                                                                                                            • +
                                                                                                                                                                                                                            • k
                                                                                                                                                                                                                            • l
                                                                                                                                                                                                                            • m
                                                                                                                                                                                                                            • n
                                                                                                                                                                                                                            • @@ -139,7 +140,7 @@

                                                                                                                                                                                                                              - h -

                                                                                                                                                                                                                                diff --git a/docs/html/functions_func_0x69.html b/docs/html/functions_func_0x69.html index d2b7bd31..312d6732 100644 --- a/docs/html/functions_func_0x69.html +++ b/docs/html/functions_func_0x69.html @@ -97,6 +97,7 @@
                                                                                                                                                                                                                              • h
                                                                                                                                                                                                                              • i
                                                                                                                                                                                                                              • j
                                                                                                                                                                                                                              • +
                                                                                                                                                                                                                              • k
                                                                                                                                                                                                                              • l
                                                                                                                                                                                                                              • m
                                                                                                                                                                                                                              • n
                                                                                                                                                                                                                              • @@ -165,7 +166,7 @@

                                                                                                                                                                                                                                - i -

                                                                                                                                                                                                                                  diff --git a/docs/html/functions_func_0x6a.html b/docs/html/functions_func_0x6a.html index bb9d226e..85445215 100644 --- a/docs/html/functions_func_0x6a.html +++ b/docs/html/functions_func_0x6a.html @@ -97,6 +97,7 @@
                                                                                                                                                                                                                                • h
                                                                                                                                                                                                                                • i
                                                                                                                                                                                                                                • j
                                                                                                                                                                                                                                • +
                                                                                                                                                                                                                                • k
                                                                                                                                                                                                                                • l
                                                                                                                                                                                                                                • m
                                                                                                                                                                                                                                • n
                                                                                                                                                                                                                                • @@ -137,7 +138,7 @@

                                                                                                                                                                                                                                  - j -

                                                                                                                                                                                                                                    diff --git a/docs/html/functions_func_0x6b.html b/docs/html/functions_func_0x6b.html new file mode 100644 index 00000000..63299112 --- /dev/null +++ b/docs/html/functions_func_0x6b.html @@ -0,0 +1,146 @@ + + + + + +pyrax: Class Members - Functions + + + + + + + + + + + +
                                                                                                                                                                                                                                    + + +
                                                                                                                                                                                                                                    + + + + + + + + + + + +
                                                                                                                                                                                                                                    +
                                                                                                                                                                                                                                    pyrax + +
                                                                                                                                                                                                                                    +
                                                                                                                                                                                                                                    Python Bindings for the Rackspace Cloud
                                                                                                                                                                                                                                    +
                                                                                                                                                                                                                                    +
                                                                                                                                                                                                                                    + + + + + + + +
                                                                                                                                                                                                                                    +
                                                                                                                                                                                                                                    +  + +

                                                                                                                                                                                                                                    - k -

                                                                                                                                                                                                                                    +
                                                                                                                                                                                                                                    + + + + +
                                                                                                                                                                                                                                    + +
                                                                                                                                                                                                                                    + + + + + + + diff --git a/docs/html/functions_func_0x6c.html b/docs/html/functions_func_0x6c.html index 73f72bf2..29569d3d 100644 --- a/docs/html/functions_func_0x6c.html +++ b/docs/html/functions_func_0x6c.html @@ -97,6 +97,7 @@
                                                                                                                                                                                                                                  • h
                                                                                                                                                                                                                                  • i
                                                                                                                                                                                                                                  • j
                                                                                                                                                                                                                                  • +
                                                                                                                                                                                                                                  • k
                                                                                                                                                                                                                                  • l
                                                                                                                                                                                                                                  • m
                                                                                                                                                                                                                                  • n
                                                                                                                                                                                                                                  • @@ -170,7 +171,7 @@

                                                                                                                                                                                                                                    - l -

                                                                                                                                                                                                                                      : CFClient
                                                                                                                                                                                                                                    • list_credentials() -: RaxIdentity +: BaseIdentity
                                                                                                                                                                                                                                    • list_databases() : CloudDatabaseInstance @@ -248,21 +249,24 @@

                                                                                                                                                                                                                                      - l -

                                                                                                                                                                                                                                        : CloudDNSManager , CloudDNSClient +
                                                                                                                                                                                                                                      • list_roles() +: BaseIdentity +
                                                                                                                                                                                                                                      • list_roles_for_user() -: BaseAuth +: BaseIdentity
                                                                                                                                                                                                                                      • list_snapshots() -: CloudBlockStorageClient -, CloudBlockStorageManager +: CloudBlockStorageManager , CloudBlockStorageVolume +, CloudBlockStorageClient
                                                                                                                                                                                                                                      • list_subdirs() : Container
                                                                                                                                                                                                                                      • list_subdomains() -: CloudDNSDomain +: CloudDNSClient +, CloudDNSDomain , CloudDNSManager -, CloudDNSClient
                                                                                                                                                                                                                                      • list_subdomains_next_page() : CloudDNSManager @@ -276,34 +280,31 @@

                                                                                                                                                                                                                                        - l -

                                                                                                                                                                                                                                        @@ -324,7 +325,7 @@

                                                                                                                                                                                                                                        - l -

                                                                                                                                                                                                                                          diff --git a/docs/html/functions_func_0x6d.html b/docs/html/functions_func_0x6d.html index 86a38488..2b75e7dc 100644 --- a/docs/html/functions_func_0x6d.html +++ b/docs/html/functions_func_0x6d.html @@ -97,6 +97,7 @@
                                                                                                                                                                                                                                        • h
                                                                                                                                                                                                                                        • i
                                                                                                                                                                                                                                        • j
                                                                                                                                                                                                                                        • +
                                                                                                                                                                                                                                        • k
                                                                                                                                                                                                                                        • l
                                                                                                                                                                                                                                        • m
                                                                                                                                                                                                                                        • n
                                                                                                                                                                                                                                        • @@ -133,29 +134,29 @@

                                                                                                                                                                                                                                          - m -

                                                                                                                                                                                                                                            : ScalingGroup
                                                                                                                                                                                                                                          • method_delete() -: BaseAuth +: BaseIdentity , BaseClient
                                                                                                                                                                                                                                          • method_get() -: BaseAuth +: BaseIdentity , BaseClient , CloudDNSClient
                                                                                                                                                                                                                                          • method_head() : BaseClient -, BaseAuth +, BaseIdentity
                                                                                                                                                                                                                                          • method_patch() -: BaseAuth +: BaseIdentity , BaseClient
                                                                                                                                                                                                                                          • method_post() -: BaseAuth +: BaseIdentity , BaseClient
                                                                                                                                                                                                                                          • method_put() : BaseClient -, BaseAuth +, BaseIdentity
                                                                                                                                                                                                                                          • min_entities() : ScalingGroup @@ -186,7 +187,7 @@

                                                                                                                                                                                                                                            - m -

                                                                                                                                                                                                                                              diff --git a/docs/html/functions_func_0x6e.html b/docs/html/functions_func_0x6e.html index 70f678b4..b37f9e50 100644 --- a/docs/html/functions_func_0x6e.html +++ b/docs/html/functions_func_0x6e.html @@ -97,6 +97,7 @@
                                                                                                                                                                                                                                            • h
                                                                                                                                                                                                                                            • i
                                                                                                                                                                                                                                            • j
                                                                                                                                                                                                                                            • +
                                                                                                                                                                                                                                            • k
                                                                                                                                                                                                                                            • l
                                                                                                                                                                                                                                            • m
                                                                                                                                                                                                                                            • n
                                                                                                                                                                                                                                            • @@ -146,7 +147,7 @@

                                                                                                                                                                                                                                              - n -

                                                                                                                                                                                                                                                diff --git a/docs/html/functions_func_0x6f.html b/docs/html/functions_func_0x6f.html index eae1e318..48fb0472 100644 --- a/docs/html/functions_func_0x6f.html +++ b/docs/html/functions_func_0x6f.html @@ -97,6 +97,7 @@
                                                                                                                                                                                                                                              • h
                                                                                                                                                                                                                                              • i
                                                                                                                                                                                                                                              • j
                                                                                                                                                                                                                                              • +
                                                                                                                                                                                                                                              • k
                                                                                                                                                                                                                                              • l
                                                                                                                                                                                                                                              • m
                                                                                                                                                                                                                                              • n
                                                                                                                                                                                                                                              • @@ -136,7 +137,7 @@

                                                                                                                                                                                                                                                - o -

                                                                                                                                                                                                                                                  diff --git a/docs/html/functions_func_0x70.html b/docs/html/functions_func_0x70.html index 0131f77b..fbe6b716 100644 --- a/docs/html/functions_func_0x70.html +++ b/docs/html/functions_func_0x70.html @@ -97,6 +97,7 @@
                                                                                                                                                                                                                                                • h
                                                                                                                                                                                                                                                • i
                                                                                                                                                                                                                                                • j
                                                                                                                                                                                                                                                • +
                                                                                                                                                                                                                                                • k
                                                                                                                                                                                                                                                • l
                                                                                                                                                                                                                                                • m
                                                                                                                                                                                                                                                • n
                                                                                                                                                                                                                                                • @@ -157,7 +158,7 @@

                                                                                                                                                                                                                                                  - p -

                                                                                                                                                                                                                                                    diff --git a/docs/html/functions_func_0x71.html b/docs/html/functions_func_0x71.html index 7de9060b..62d029be 100644 --- a/docs/html/functions_func_0x71.html +++ b/docs/html/functions_func_0x71.html @@ -97,6 +97,7 @@
                                                                                                                                                                                                                                                  • h
                                                                                                                                                                                                                                                  • i
                                                                                                                                                                                                                                                  • j
                                                                                                                                                                                                                                                  • +
                                                                                                                                                                                                                                                  • k
                                                                                                                                                                                                                                                  • l
                                                                                                                                                                                                                                                  • m
                                                                                                                                                                                                                                                  • n
                                                                                                                                                                                                                                                  • @@ -136,7 +137,7 @@

                                                                                                                                                                                                                                                    - q -

                                                                                                                                                                                                                                                      diff --git a/docs/html/functions_func_0x72.html b/docs/html/functions_func_0x72.html index 941387e7..643b36dc 100644 --- a/docs/html/functions_func_0x72.html +++ b/docs/html/functions_func_0x72.html @@ -97,6 +97,7 @@
                                                                                                                                                                                                                                                    • h
                                                                                                                                                                                                                                                    • i
                                                                                                                                                                                                                                                    • j
                                                                                                                                                                                                                                                    • +
                                                                                                                                                                                                                                                    • k
                                                                                                                                                                                                                                                    • l
                                                                                                                                                                                                                                                    • m
                                                                                                                                                                                                                                                    • n
                                                                                                                                                                                                                                                    • @@ -121,6 +122,9 @@

                                                                                                                                                                                                                                                      - r -

                                                                                                                                                                                                                                                      • read_config() : Settings
                                                                                                                                                                                                                                                      • +
                                                                                                                                                                                                                                                      • regions() +: Service +
                                                                                                                                                                                                                                                      • release_claim() : Queue , QueueClient @@ -146,8 +150,8 @@

                                                                                                                                                                                                                                                        - r -

                                                                                                                                                                                                                                                          , AutoScaleClient
                                                                                                                                                                                                                                                        • replace_launch_config() -: ScalingGroupManager -, AutoScaleClient +: AutoScaleClient +, ScalingGroupManager
                                                                                                                                                                                                                                                        • replace_policy() : ScalingGroupManager @@ -163,43 +167,50 @@

                                                                                                                                                                                                                                                          - r -

                                                                                                                                                                                                                                                          • required_field_names() : CloudMonitorCheckType
                                                                                                                                                                                                                                                          • +
                                                                                                                                                                                                                                                          • reset_api_key() +: BaseIdentity +, RaxIdentity +
                                                                                                                                                                                                                                                          • reset_timings() : BaseClient
                                                                                                                                                                                                                                                          • resize() -: CloudDatabaseVolume -, CloudDatabaseInstance +: CloudDatabaseInstance +, CloudDatabaseVolume , CloudDatabaseClient
                                                                                                                                                                                                                                                          • resize_volume() : CloudDatabaseInstance
                                                                                                                                                                                                                                                          • restart() -: CloudDatabaseInstance -, CloudDatabaseClient +: CloudDatabaseClient +, CloudDatabaseInstance
                                                                                                                                                                                                                                                          • restore_backup() : CloudDatabaseManager , CloudDatabaseClient
                                                                                                                                                                                                                                                          • resume() -: ScalingGroupManager +: ScalingGroup , AutoScaleClient -, ScalingGroup +, ScalingGroupManager +
                                                                                                                                                                                                                                                          • +
                                                                                                                                                                                                                                                          • revoke_token() +: BaseIdentity
                                                                                                                                                                                                                                                          • revoke_user_access() -: CloudDatabaseUser -, CloudDatabaseInstance +: CloudDatabaseClient +, CloudDatabaseUser , CloudDatabaseUserManager -, CloudDatabaseClient +, CloudDatabaseInstance
                                                                                                                                                                                                                                                          • root_user_status() : CloudDatabaseClient , CloudDatabaseInstance
                                                                                                                                                                                                                                                          • run() -: BulkDeleter -, _WaitThread +: _WaitThread +, BulkDeleter , FolderUploader
                                                                                                                                                                                                                                                          • run_hooks() @@ -224,7 +235,7 @@

                                                                                                                                                                                                                                                            - r -

                                                                                                                                                                                                                                                              diff --git a/docs/html/functions_func_0x73.html b/docs/html/functions_func_0x73.html index 372430fe..c8e8d8c0 100644 --- a/docs/html/functions_func_0x73.html +++ b/docs/html/functions_func_0x73.html @@ -97,6 +97,7 @@
                                                                                                                                                                                                                                                            • h
                                                                                                                                                                                                                                                            • i
                                                                                                                                                                                                                                                            • j
                                                                                                                                                                                                                                                            • +
                                                                                                                                                                                                                                                            • k
                                                                                                                                                                                                                                                            • l
                                                                                                                                                                                                                                                            • m
                                                                                                                                                                                                                                                            • n
                                                                                                                                                                                                                                                            • @@ -149,10 +150,10 @@

                                                                                                                                                                                                                                                              - s -

                                                                                                                                                                                                                                                                , CloudLoadBalancerClient
                                                                                                                                                                                                                                                              • set_credential_file() -: BaseAuth +: BaseIdentity
                                                                                                                                                                                                                                                              • set_credentials() -: BaseAuth +: BaseIdentity
                                                                                                                                                                                                                                                              • set_delay() : CloudDNSClient @@ -228,7 +229,7 @@

                                                                                                                                                                                                                                                                - s -

                                                                                                                                                                                                                                                                  diff --git a/docs/html/functions_func_0x74.html b/docs/html/functions_func_0x74.html index 0a1ead4e..bb6c5b26 100644 --- a/docs/html/functions_func_0x74.html +++ b/docs/html/functions_func_0x74.html @@ -97,6 +97,7 @@
                                                                                                                                                                                                                                                                • h
                                                                                                                                                                                                                                                                • i
                                                                                                                                                                                                                                                                • j
                                                                                                                                                                                                                                                                • +
                                                                                                                                                                                                                                                                • k
                                                                                                                                                                                                                                                                • l
                                                                                                                                                                                                                                                                • m
                                                                                                                                                                                                                                                                • n
                                                                                                                                                                                                                                                                • @@ -141,7 +142,7 @@

                                                                                                                                                                                                                                                                  - t -

                                                                                                                                                                                                                                                                    diff --git a/docs/html/functions_func_0x75.html b/docs/html/functions_func_0x75.html index e37a4162..5cbab7ee 100644 --- a/docs/html/functions_func_0x75.html +++ b/docs/html/functions_func_0x75.html @@ -97,6 +97,7 @@
                                                                                                                                                                                                                                                                  • h
                                                                                                                                                                                                                                                                  • i
                                                                                                                                                                                                                                                                  • j
                                                                                                                                                                                                                                                                  • +
                                                                                                                                                                                                                                                                  • k
                                                                                                                                                                                                                                                                  • l
                                                                                                                                                                                                                                                                  • m
                                                                                                                                                                                                                                                                  • n
                                                                                                                                                                                                                                                                  • @@ -115,31 +116,34 @@

                                                                                                                                                                                                                                                                    - u -

                                                                                                                                                                                                                                                                    • unauthenticate() -: BaseAuth +: BaseIdentity , BaseClient
                                                                                                                                                                                                                                                                    • update() : ScalingGroupManager -, CloudDatabaseUserManager +, CloudBlockStorageManager +, CloudLoadBalancerManager +, Node +, CloudBlockStorageSnapshotManager +, CloudLoadBalancerClient , CloudMonitorEntity +, AutoScalePolicy +, CloudBlockStorageClient , CloudMonitorCheck -, CloudDatabaseUser , CloudMonitorNotification +, CloudDatabaseUserManager , CloudMonitorAlarm -, AutoScalePolicy -, CloudDNSRecord , Image +, ScalingGroup +, AutoScaleWebhook +, CloudDatabaseUser , ImageManager -, CloudDNSDomain , ImageClient +, CloudDNSRecord , QueueClaimManager -, ScalingGroup -, AutoScaleWebhook -, CloudLoadBalancer -, CloudLoadBalancerManager , AutoScaleClient -, Node -, CloudLoadBalancerClient +, CloudDNSDomain +, CloudLoadBalancer
                                                                                                                                                                                                                                                                    • update_alarm() : CloudMonitorEntity @@ -155,8 +159,8 @@

                                                                                                                                                                                                                                                                      - u -

                                                                                                                                                                                                                                                                        , QueueClient
                                                                                                                                                                                                                                                                      • update_domain() -: CloudDNSClient -, CloudDNSManager +: CloudDNSManager +, CloudDNSClient
                                                                                                                                                                                                                                                                      • update_entity() : CloudMonitorEntityManager @@ -177,67 +181,70 @@

                                                                                                                                                                                                                                                                        - u -

                                                                                                                                                                                                                                                                          , AutoScaleClient
                                                                                                                                                                                                                                                                        • update_metadata() -: CloudLoadBalancer -, ScalingGroup +: ScalingGroup , ScalingGroupManager , AutoScaleWebhook , AutoScaleClient +, CloudLoadBalancer , CloudLoadBalancerManager , Node , CloudLoadBalancerClient
                                                                                                                                                                                                                                                                        • update_metadata_for_node() -: CloudLoadBalancer -, CloudLoadBalancerClient +: CloudLoadBalancerClient +, CloudLoadBalancer
                                                                                                                                                                                                                                                                        • update_node() -: CloudLoadBalancerClient -, CloudLoadBalancer +: CloudLoadBalancer , CloudLoadBalancerManager +, CloudLoadBalancerClient
                                                                                                                                                                                                                                                                        • update_notification() : CloudMonitorNotificationManager , CloudMonitorClient
                                                                                                                                                                                                                                                                        • update_policy() -: ScalingGroupManager +: AutoScaleClient , ScalingGroup -, AutoScaleClient +, ScalingGroupManager
                                                                                                                                                                                                                                                                        • update_ptr_record() -: CloudDNSClient -, CloudDNSManager +: CloudDNSManager +, CloudDNSClient
                                                                                                                                                                                                                                                                        • update_record() -: CloudDNSManager +: CloudDNSDomain , CloudDNSClient -, CloudDNSDomain +, CloudDNSManager +
                                                                                                                                                                                                                                                                        • +
                                                                                                                                                                                                                                                                        • update_snapshot() +: CloudBlockStorageClient
                                                                                                                                                                                                                                                                        • update_ssl_termination() -: CloudLoadBalancer -, CloudLoadBalancerClient +: CloudLoadBalancerClient , CloudLoadBalancerManager +, CloudLoadBalancer
                                                                                                                                                                                                                                                                        • update_tenant() -: BaseAuth +: BaseIdentity
                                                                                                                                                                                                                                                                        • update_user() -: CloudDatabaseClient +: RaxIdentity +, CloudDatabaseClient , CloudDatabaseInstance -, RaxIdentity -, BaseAuth +, BaseIdentity
                                                                                                                                                                                                                                                                        • update_webhook() -: AutoScaleClient -, ScalingGroup +: ScalingGroup +, AutoScaleClient , AutoScalePolicy , ScalingGroupManager
                                                                                                                                                                                                                                                                        • update_webhook_metadata() -: ScalingGroup -, AutoScaleClient -, ScalingGroupManager +: AutoScaleClient , AutoScalePolicy +, ScalingGroup +, ScalingGroupManager
                                                                                                                                                                                                                                                                        • upload_file() : CFClient @@ -253,8 +260,7 @@

                                                                                                                                                                                                                                                                          - u -

                                                                                                                                                                                                                                                                          @@ -275,7 +281,7 @@

                                                                                                                                                                                                                                                                          - u -

                                                                                                                                                                                                                                                                            diff --git a/docs/html/functions_vars.html b/docs/html/functions_vars.html index 76d88532..cacec994 100644 --- a/docs/html/functions_vars.html +++ b/docs/html/functions_vars.html @@ -132,19 +132,25 @@

                                                                                                                                                                                                                                                                            - a -

                                                                                                                                                                                                                                                                            @@ -165,7 +171,7 @@

                                                                                                                                                                                                                                                                            - a -

                                                                                                                                                                                                                                                                              diff --git a/docs/html/functions_vars_0x63.html b/docs/html/functions_vars_0x63.html index 7f26f747..ecf4d1fc 100644 --- a/docs/html/functions_vars_0x63.html +++ b/docs/html/functions_vars_0x63.html @@ -152,6 +152,10 @@

                                                                                                                                                                                                                                                                              - c -

                                                                                                                                                                                                                                                                              • client_id : QueueClient
                                                                                                                                                                                                                                                                              • +
                                                                                                                                                                                                                                                                              • clients +: Service +, FakeIdentityService +
                                                                                                                                                                                                                                                                              • code : ClientException
                                                                                                                                                                                                                                                                              • @@ -170,10 +174,10 @@

                                                                                                                                                                                                                                                                                - c -

                                                                                                                                                                                                                                                                                  : CFClient
                                                                                                                                                                                                                                                                                • container -: BulkDeleter +: FakeStorageObject , StorageObject +, BulkDeleter , FolderUploader -, FakeStorageObject
                                                                                                                                                                                                                                                                                • container_meta_prefix : CFClient @@ -182,8 +186,8 @@

                                                                                                                                                                                                                                                                                  - c -

                                                                                                                                                                                                                                                                                  @@ -204,7 +208,7 @@

                                                                                                                                                                                                                                                                                  - c -

                                                                                                                                                                                                                                                                                    diff --git a/docs/html/functions_vars_0x65.html b/docs/html/functions_vars_0x65.html index e05ae9ae..39ba358e 100644 --- a/docs/html/functions_vars_0x65.html +++ b/docs/html/functions_vars_0x65.html @@ -117,11 +117,13 @@

                                                                                                                                                                                                                                                                                    - e -

                                                                                                                                                                                                                                                                                      : BaseClient
                                                                                                                                                                                                                                                                                    • endpoints -: AmbiguousEndpoints +: Service +, FakeIdentityService +, AmbiguousEndpoints
                                                                                                                                                                                                                                                                                    • entity -: CloudMonitorAlarm -, CloudMonitorCheck +: CloudMonitorCheck +, CloudMonitorAlarm
                                                                                                                                                                                                                                                                                    • env_dct : Settings @@ -131,7 +133,7 @@

                                                                                                                                                                                                                                                                                      - e -

                                                                                                                                                                                                                                                                                        , StorageObject
                                                                                                                                                                                                                                                                                      • expires -: BaseAuth +: BaseIdentity
                                                                                                                                                                                                                                                                                      • extra_args : SubdomainResultsIterator @@ -156,7 +158,7 @@

                                                                                                                                                                                                                                                                                        - e -

                                                                                                                                                                                                                                                                                          diff --git a/docs/html/functions_vars_0x68.html b/docs/html/functions_vars_0x68.html index 39ae21a2..af6bfd01 100644 --- a/docs/html/functions_vars_0x68.html +++ b/docs/html/functions_vars_0x68.html @@ -124,7 +124,7 @@

                                                                                                                                                                                                                                                                                          - h -

                                                                                                                                                                                                                                                                                            , QueueMessage
                                                                                                                                                                                                                                                                                          • http_log_debug -: BaseAuth +: BaseIdentity , Connection , BaseClient
                                                                                                                                                                                                                                                                                          • @@ -159,7 +159,7 @@

                                                                                                                                                                                                                                                                                            - h -

                                                                                                                                                                                                                                                                                              diff --git a/docs/html/functions_vars_0x69.html b/docs/html/functions_vars_0x69.html index 8ac7e02c..c19f9cd3 100644 --- a/docs/html/functions_vars_0x69.html +++ b/docs/html/functions_vars_0x69.html @@ -121,6 +121,11 @@

                                                                                                                                                                                                                                                                                              - i -

                                                                                                                                                                                                                                                                                                , FakeAutoScalePolicy , FakeAutoScaleWebhook , FakeBlockStorageVolume +, FakeScalingGroupManager +, FakeScalingGroup +, FakeServer +, FakeBlockStorageSnapshot +, FakeCloudMonitorEntity , BaseResource , QueueClaim , QueueMessage @@ -128,21 +133,23 @@

                                                                                                                                                                                                                                                                                                - i -

                                                                                                                                                                                                                                                                                                  , FakeImageTagManager , FakeImageMemberManager , FakeQueueManager -, FakeCloudMonitorNotification , FakeCloudMonitorCheck -, FakeCloudMonitorEntity -, FakeScalingGroupManager -, FakeScalingGroup -, FakeServer -, FakeBlockStorageSnapshot -, FakeCloudNetwork -, FakeDNSDevice -, FakeDNSDomain -, FakeStatusChanger , FakeLoadBalancer +, FakeCloudMonitorNotification , VirtualIP , FakeService +, FakeStatusChanger +, FakeDNSDomain +, FakeCloudNetwork , FakeEntity +, FakeDNSDevice + +
                                                                                                                                                                                                                                                                                                • identity +: BaseClient +, Service +, FakeClient +, FakeIdentityService +, Endpoint
                                                                                                                                                                                                                                                                                                • ignore : FolderUploader @@ -151,8 +158,8 @@

                                                                                                                                                                                                                                                                                                  - i -

                                                                                                                                                                                                                                                                                                    : FakeCSClient
                                                                                                                                                                                                                                                                                                  • instance -: CloudDatabaseVolume -, FakeDatabaseVolume +: FakeDatabaseVolume +, CloudDatabaseVolume
                                                                                                                                                                                                                                                                                                  • interval : _WaitThread @@ -179,7 +186,7 @@

                                                                                                                                                                                                                                                                                                    - i -

                                                                                                                                                                                                                                                                                                      diff --git a/docs/html/functions_vars_0x6e.html b/docs/html/functions_vars_0x6e.html index aa0732ec..4e08db9d 100644 --- a/docs/html/functions_vars_0x6e.html +++ b/docs/html/functions_vars_0x6e.html @@ -115,27 +115,28 @@

                                                                                                                                                                                                                                                                                                      - n -

                                                                                                                                                                                                                                                                                                      • name : AutoScaleClient -, Container -, BaseClient -, CloudDNSRecord +, Service +, StorageObject +, CloudDatabaseClient , FakeDNSDomain , SelfDeletingTempDirectory , SelfDeletingTempfile , QueueClient , Queue -, FakeScalingGroup -, CloudDNSPTRRecord , ImageClient -, FakeEntryPoint +, FakeScalingGroup +, CloudDNSRecord +, FakeIdentityService , FakeStorageObject , CloudNetworkClient , CloudMonitorClient , CloudLoadBalancerClient -, CloudBlockStorageClient , CloudDNSClient -, StorageObject -, CloudDatabaseClient +, BaseClient +, CloudDNSPTRRecord +, Container , CloudDatabaseUser +, CloudBlockStorageClient
                                                                                                                                                                                                                                                                                                      • NAME_ATTR : BaseResource @@ -166,7 +167,7 @@

                                                                                                                                                                                                                                                                                                        - n -

                                                                                                                                                                                                                                                                                                          diff --git a/docs/html/functions_vars_0x70.html b/docs/html/functions_vars_0x70.html index a6708956..c795c7b5 100644 --- a/docs/html/functions_vars_0x70.html +++ b/docs/html/functions_vars_0x70.html @@ -123,9 +123,9 @@

                                                                                                                                                                                                                                                                                                          - p -

                                                                                                                                                                                                                                                                                                            , VirtualIP
                                                                                                                                                                                                                                                                                                          • password -: FakeIdentity -, RaxIdentity -, BaseAuth +: RaxIdentity +, BaseIdentity +, FakeIdentity
                                                                                                                                                                                                                                                                                                          • password_set : FakeKeyring @@ -146,15 +146,25 @@

                                                                                                                                                                                                                                                                                                            - p -

                                                                                                                                                                                                                                                                                                            @@ -174,7 +184,7 @@

                                                                                                                                                                                                                                                                                                            - p -

                                                                                                                                                                                                                                                                                                              diff --git a/docs/html/functions_vars_0x72.html b/docs/html/functions_vars_0x72.html index 1c592b33..7a6ec547 100644 --- a/docs/html/functions_vars_0x72.html +++ b/docs/html/functions_vars_0x72.html @@ -117,20 +117,21 @@

                                                                                                                                                                                                                                                                                                              - r -

                                                                                                                                                                                                                                                                                                                : FakeResponse
                                                                                                                                                                                                                                                                                                              • region -: BaseAuth +: Endpoint +, BaseIdentity
                                                                                                                                                                                                                                                                                                              • region_name : BaseClient
                                                                                                                                                                                                                                                                                                              • regions -: BaseAuth +: BaseIdentity
                                                                                                                                                                                                                                                                                                              • reload -: CloudMonitorAlarm +: CloudMonitorCheck +, CloudMonitorAlarm , BaseResource , AutoScalePolicy , AutoScaleWebhook -, CloudMonitorCheck
                                                                                                                                                                                                                                                                                                              • request_id : ClientException @@ -141,8 +142,8 @@

                                                                                                                                                                                                                                                                                                                - r -

                                                                                                                                                                                                                                                                                                                  , BaseManager
                                                                                                                                                                                                                                                                                                                • response_key -: BaseManager -, FakeDNSManager +: FakeDNSManager +, BaseManager
                                                                                                                                                                                                                                                                                                                • response_type : FakeIdentityResponse @@ -152,15 +153,15 @@

                                                                                                                                                                                                                                                                                                                  - r -

                                                                                                                                                                                                                                                                                                                  @@ -181,7 +182,7 @@

                                                                                                                                                                                                                                                                                                                  - r -

                                                                                                                                                                                                                                                                                                                    diff --git a/docs/html/functions_vars_0x73.html b/docs/html/functions_vars_0x73.html index d50e0201..f681f495 100644 --- a/docs/html/functions_vars_0x73.html +++ b/docs/html/functions_vars_0x73.html @@ -119,14 +119,27 @@

                                                                                                                                                                                                                                                                                                                    - s -

                                                                                                                                                                                                                                                                                                                    • servers : FakeCSClient
                                                                                                                                                                                                                                                                                                                    • +
                                                                                                                                                                                                                                                                                                                    • service +: Endpoint +
                                                                                                                                                                                                                                                                                                                    • +
                                                                                                                                                                                                                                                                                                                    • service_catalog +: BaseIdentity +
                                                                                                                                                                                                                                                                                                                    • +
                                                                                                                                                                                                                                                                                                                    • service_mapping +: BaseIdentity +
                                                                                                                                                                                                                                                                                                                    • service_name : BaseClient
                                                                                                                                                                                                                                                                                                                    • SERVICE_NET_ID : CloudNetworkClient
                                                                                                                                                                                                                                                                                                                    • +
                                                                                                                                                                                                                                                                                                                    • service_type +: Service +, FakeIdentityService +
                                                                                                                                                                                                                                                                                                                    • services -: BaseAuth +: BaseIdentity
                                                                                                                                                                                                                                                                                                                    • size : CloudDatabaseVolume @@ -137,8 +150,7 @@

                                                                                                                                                                                                                                                                                                                      - s -

                                                                                                                                                                                                                                                                                                                      @@ -160,7 +172,7 @@

                                                                                                                                                                                                                                                                                                                      - s -

                                                                                                                                                                                                                                                                                                                        diff --git a/docs/html/functions_vars_0x74.html b/docs/html/functions_vars_0x74.html index d33b0381..0ac3a531 100644 --- a/docs/html/functions_vars_0x74.html +++ b/docs/html/functions_vars_0x74.html @@ -114,11 +114,12 @@

                                                                                                                                                                                                                                                                                                                        - t -

                                                                                                                                                                                                                                                                                                                        • tenant_id -: BaseAuth +: Endpoint +, BaseIdentity , FakeIdentity
                                                                                                                                                                                                                                                                                                                        • tenant_name -: BaseAuth +: BaseIdentity , FakeIdentity
                                                                                                                                                                                                                                                                                                                        • timeout @@ -131,25 +132,25 @@

                                                                                                                                                                                                                                                                                                                          - t -

                                                                                                                                                                                                                                                                                                                          @@ -170,7 +171,7 @@

                                                                                                                                                                                                                                                                                                                          - t -

                                                                                                                                                                                                                                                                                                                            diff --git a/docs/html/functions_vars_0x75.html b/docs/html/functions_vars_0x75.html index 5e4167ad..ccfb33dc 100644 --- a/docs/html/functions_vars_0x75.html +++ b/docs/html/functions_vars_0x75.html @@ -129,11 +129,11 @@

                                                                                                                                                                                                                                                                                                                            - u -

                                                                                                                                                                                                                                                                                                                              , FakeDatabaseVolume
                                                                                                                                                                                                                                                                                                                            • user -: BaseAuth +: BaseIdentity
                                                                                                                                                                                                                                                                                                                            • user_agent -: BaseClient -, BaseAuth +: BaseIdentity +, FakeService
                                                                                                                                                                                                                                                                                                                            • USER_AGENT : FakeClient @@ -141,14 +141,13 @@

                                                                                                                                                                                                                                                                                                                              - u -

                                                                                                                                                                                                                                                                                                                              @@ -169,7 +168,7 @@

                                                                                                                                                                                                                                                                                                                              - u -

                                                                                                                                                                                                                                                                                                                                diff --git a/docs/html/functions_vars_0x76.html b/docs/html/functions_vars_0x76.html index a75e75d0..4e1c8c57 100644 --- a/docs/html/functions_vars_0x76.html +++ b/docs/html/functions_vars_0x76.html @@ -117,7 +117,7 @@

                                                                                                                                                                                                                                                                                                                                - v -

                                                                                                                                                                                                                                                                                                                                  : _WaitThread
                                                                                                                                                                                                                                                                                                                                • verify_ssl -: BaseAuth +: BaseIdentity , BaseClient
                                                                                                                                                                                                                                                                                                                                • version @@ -150,7 +150,7 @@

                                                                                                                                                                                                                                                                                                                                  - v -

                                                                                                                                                                                                                                                                                                                                • +
                                                                                                                                                                                                                                                                                                                                • RaxIdentity +
                                                                                                                                                                                                                                                                                                                                • ResultsIterator
                                                                                                                                                                                                                                                                                                                                • +
                                                                                                                                                                                                                                                                                                                                • Role
                                                                                                                                                                                                                                                                                                                                • SelfDeletingTempDirectory
                                                                                                                                                                                                                                                                                                                                • SelfDeletingTempfile
                                                                                                                                                                                                                                                                                                                                • +
                                                                                                                                                                                                                                                                                                                                • Service +
                                                                                                                                                                                                                                                                                                                                • ServiceCatalog
                                                                                                                                                                                                                                                                                                                                • Settings
                                                                                                                                                                                                                                                                                                                                • StorageObject
                                                                                                                                                                                                                                                                                                                                • +
                                                                                                                                                                                                                                                                                                                                • Tenant
                                                                                                                                                                                                                                                                                                                                • +
                                                                                                                                                                                                                                                                                                                                • User
                                                                                                                                                                                                                                                                                                                                • VirtualIP @@ -478,7 +488,7 @@ diff --git a/docs/html/namespacemembers.html b/docs/html/namespacemembers.html index a3f29d8f..59d9029d 100644 --- a/docs/html/namespacemembers.html +++ b/docs/html/namespacemembers.html @@ -213,6 +213,9 @@

                                                                                                                                                                                                                                                                                                                                  - c -

                                                                                                                                                                                                                                                                                                                                  • clear_credentials() : pyrax
                                                                                                                                                                                                                                                                                                                                  • +
                                                                                                                                                                                                                                                                                                                                  • client_class_for_service() +: pyrax +
                                                                                                                                                                                                                                                                                                                                  • cloud_blockstorage : pyrax
                                                                                                                                                                                                                                                                                                                                  • @@ -285,6 +288,9 @@

                                                                                                                                                                                                                                                                                                                                    - c -

                                                                                                                                                                                                                                                                                                                                    @@ -306,7 +312,8 @@

                                                                                                                                                                                                                                                                                                                                    - d -

                                                                                                                                                                                                                                                                                                                                      : pyrax::image
                                                                                                                                                                                                                                                                                                                                    • default_region -: pyrax +: pyrax::base_identity +, pyrax
                                                                                                                                                                                                                                                                                                                                    • DEFAULT_RETRY : pyrax::clouddns @@ -367,9 +374,6 @@

                                                                                                                                                                                                                                                                                                                                      - f -

                                                                                                                                                                                                                                                                                                                                      • fake_identity_user_response : pyrax::fakes
                                                                                                                                                                                                                                                                                                                                      • -
                                                                                                                                                                                                                                                                                                                                      • fakeEntryPoints -: pyrax::fakes -
                                                                                                                                                                                                                                                                                                                                      • FAULT : pyrax::cf_wrapper::container
                                                                                                                                                                                                                                                                                                                                      • @@ -460,6 +464,7 @@

                                                                                                                                                                                                                                                                                                                                        - i -

                                                                                                                                                                                                                                                                                                                                          - k -

                                                                                                                                                                                                                                                                                                                                          • keyring : pyrax +, pyrax::base_identity
                                                                                                                                                                                                                                                                                                                                          • keyring_auth() : pyrax @@ -589,6 +594,9 @@

                                                                                                                                                                                                                                                                                                                                            - s -

                                                                                                                                                                                                                                                                                                                                            • safe_issubclass() : pyrax::utils
                                                                                                                                                                                                                                                                                                                                            • +
                                                                                                                                                                                                                                                                                                                                            • SAFE_QUOTE_CHARS +: pyrax::client +
                                                                                                                                                                                                                                                                                                                                            • ServerClientException : pyrax::exceptions
                                                                                                                                                                                                                                                                                                                                            • @@ -703,7 +711,7 @@

                                                                                                                                                                                                                                                                                                                                              - w -

                                                                                                                                                                                                                                                                                                                                                diff --git a/docs/html/namespacemembers_func.html b/docs/html/namespacemembers_func.html index a12c8f78..81fd5a9c 100644 --- a/docs/html/namespacemembers_func.html +++ b/docs/html/namespacemembers_func.html @@ -153,6 +153,9 @@

                                                                                                                                                                                                                                                                                                                                                - c -

                                                                                                                                                                                                                                                                                                                                                • clear_credentials() : pyrax
                                                                                                                                                                                                                                                                                                                                                • +
                                                                                                                                                                                                                                                                                                                                                • client_class_for_service() +: pyrax +
                                                                                                                                                                                                                                                                                                                                                • coerce_string_to_list() : pyrax::utils
                                                                                                                                                                                                                                                                                                                                                • @@ -192,6 +195,9 @@

                                                                                                                                                                                                                                                                                                                                                  - c -

                                                                                                                                                                                                                                                                                                                                                  • connect_to_services() : pyrax
                                                                                                                                                                                                                                                                                                                                                  • +
                                                                                                                                                                                                                                                                                                                                                  • create_context() +: pyrax +
                                                                                                                                                                                                                                                                                                                                                  @@ -394,7 +400,7 @@

                                                                                                                                                                                                                                                                                                                                                  - w -

                                                                                                                                                                                                                                                                                                                                                    diff --git a/docs/html/namespacemembers_vars.html b/docs/html/namespacemembers_vars.html index f4cb9b9d..15a6d489 100644 --- a/docs/html/namespacemembers_vars.html +++ b/docs/html/namespacemembers_vars.html @@ -223,7 +223,8 @@

                                                                                                                                                                                                                                                                                                                                                    - d -

                                                                                                                                                                                                                                                                                                                                                      : pyrax::image
                                                                                                                                                                                                                                                                                                                                                    • default_region -: pyrax +: pyrax::base_identity +, pyrax
                                                                                                                                                                                                                                                                                                                                                    • DEFAULT_RETRY : pyrax::clouddns @@ -278,9 +279,6 @@

                                                                                                                                                                                                                                                                                                                                                      - f -

                                                                                                                                                                                                                                                                                                                                                      • fake_identity_user_response : pyrax::fakes
                                                                                                                                                                                                                                                                                                                                                      • -
                                                                                                                                                                                                                                                                                                                                                      • fakeEntryPoints -: pyrax::fakes -
                                                                                                                                                                                                                                                                                                                                                      • FAULT : pyrax::cf_wrapper::container
                                                                                                                                                                                                                                                                                                                                                      • @@ -319,6 +317,7 @@

                                                                                                                                                                                                                                                                                                                                                        - i -

                                                                                                                                                                                                                                                                                                                                                          - k -

                                                                                                                                                                                                                                                                                                                                                          • keyring : pyrax +, pyrax::base_identity
                                                                                                                                                                                                                                                                                                                                                          • keywords : setup @@ -415,6 +414,9 @@

                                                                                                                                                                                                                                                                                                                                                            - r -

                                                                                                                                                                                                                                                                                                                                                              - s -

                                                                                                                                                                                                                                                                                                                                                                +
                                                                                                                                                                                                                                                                                                                                                              • SAFE_QUOTE_CHARS +: pyrax::client +
                                                                                                                                                                                                                                                                                                                                                              • ServerClientException : pyrax::exceptions
                                                                                                                                                                                                                                                                                                                                                              • @@ -489,7 +491,7 @@

                                                                                                                                                                                                                                                                                                                                                                - v -

                                                                                                                                                                                                                                                                                                                                                                  diff --git a/docs/html/namespacepyrax.html b/docs/html/namespacepyrax.html index 75c714af..38cae68a 100644 --- a/docs/html/namespacepyrax.html +++ b/docs/html/namespacepyrax.html @@ -127,6 +127,8 @@  Changes the value of the specified key in the current environment, or in another environment if specified.
                                                                                                                                                                                                                                                                                                                                                                  def set_default_region  Changes the default_region setting.
                                                                                                                                                                                                                                                                                                                                                                  +def create_context + Returns an instance of the specified identity class, or if none is specified, an instance of the current setting for 'identity_class'.
                                                                                                                                                                                                                                                                                                                                                                  def auth_with_token  If you already have a valid token and either a tenant ID or name, you can call this to configure the identity and available services.
                                                                                                                                                                                                                                                                                                                                                                  def set_credentials @@ -165,6 +167,8 @@  Creates a client for working with Images.
                                                                                                                                                                                                                                                                                                                                                                  def connect_to_queues  Creates a client for working with Queues.
                                                                                                                                                                                                                                                                                                                                                                  +def client_class_for_service + Returns the client class registered for the given service, or None if there is no such service, or if no class has been registered.
                                                                                                                                                                                                                                                                                                                                                                  def get_http_debug def set_http_debug def get_encoding @@ -258,7 +262,8 @@

                                                                                                                                                                                                                                                                                                                                                                  Generally you will not need to call this directly; passing in your credentials via set_credentials() and set_credential_file() will call authenticate() on the identity object by default.

                                                                                                                                                                                                                                                                                                                                                                  But for situations where you set your credentials manually or otherwise need finer control over the authentication sequence, this method will call the identity object's authenticate() method, and an AuthenticationFailed exception will be raised if your credentials have not been properly set first.

                                                                                                                                                                                                                                                                                                                                                                  -

                                                                                                                                                                                                                                                                                                                                                                  Normally after successful authentication, connections to the various services will be made. However, passing False to the `connect` parameter will skip the service connection step.

                                                                                                                                                                                                                                                                                                                                                                  +

                                                                                                                                                                                                                                                                                                                                                                  Normally after successful authentication, connections to the various services will be made. However, passing False to the `connect` parameter will skip the service connection step.

                                                                                                                                                                                                                                                                                                                                                                  +

                                                                                                                                                                                                                                                                                                                                                                  The 'connect' parameter is retained for backwards compatibility. It no longer has any effect.

                                                                                                                                                                                                                                                                                                                                                                  @@ -278,6 +283,25 @@

                                                                                                                                                                                                                                                                                                                                                                  De-authenticate by clearing all the names back to None.

                                                                                                                                                                                                                                                                                                                                                                  + + + +
                                                                                                                                                                                                                                                                                                                                                                  +
                                                                                                                                                                                                                                                                                                                                                                  + + + + + + + + +
                                                                                                                                                                                                                                                                                                                                                                  def pyrax.client_class_for_service ( service)
                                                                                                                                                                                                                                                                                                                                                                  +
                                                                                                                                                                                                                                                                                                                                                                  +
                                                                                                                                                                                                                                                                                                                                                                  + +

                                                                                                                                                                                                                                                                                                                                                                  Returns the client class registered for the given service, or None if there is no such service, or if no class has been registered.

                                                                                                                                                                                                                                                                                                                                                                  +
                                                                                                                                                                                                                                                                                                                                                                  @@ -427,7 +451,13 @@   - public = None  + public = None, + + + + +   + context = None  @@ -453,6 +483,12 @@   region = None, + + + +   + context = None, + @@ -549,6 +585,72 @@

                                                                                                                                                                                                                                                                                                                                                                  Establishes authenticated connections to the various cloud APIs.

                                                                                                                                                                                                                                                                                                                                                                  + + + +
                                                                                                                                                                                                                                                                                                                                                                  +
                                                                                                                                                                                                                                                                                                                                                                  + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                                                                                                                                                                                                                                                                                                                                                                  def pyrax.create_context ( id_type = None,
                                                                                                                                                                                                                                                                                                                                                                   env = None,
                                                                                                                                                                                                                                                                                                                                                                   username = None,
                                                                                                                                                                                                                                                                                                                                                                   password = None,
                                                                                                                                                                                                                                                                                                                                                                   tenant_id = None,
                                                                                                                                                                                                                                                                                                                                                                   tenant_name = None,
                                                                                                                                                                                                                                                                                                                                                                   api_key = None,
                                                                                                                                                                                                                                                                                                                                                                   verify_ssl = None 
                                                                                                                                                                                                                                                                                                                                                                  )
                                                                                                                                                                                                                                                                                                                                                                  +
                                                                                                                                                                                                                                                                                                                                                                  +
                                                                                                                                                                                                                                                                                                                                                                  + +

                                                                                                                                                                                                                                                                                                                                                                  Returns an instance of the specified identity class, or if none is specified, an instance of the current setting for 'identity_class'.

                                                                                                                                                                                                                                                                                                                                                                  +

                                                                                                                                                                                                                                                                                                                                                                  You may optionally set the environment by passing the name of that environment in the 'env' parameter.

                                                                                                                                                                                                                                                                                                                                                                  +
                                                                                                                                                                                                                                                                                                                                                                  @@ -915,16 +1017,18 @@
                                                                                                                                                                                                                                                                                                                                                                  Initial value:
                                                                                                                                                                                                                                                                                                                                                                  00001 {
                                                                                                                                                                                                                                                                                                                                                                  -00002         "database": CloudDatabaseClient,
                                                                                                                                                                                                                                                                                                                                                                  -00003         "load_balancer": CloudLoadBalancerClient,
                                                                                                                                                                                                                                                                                                                                                                  -00004         "volume": CloudBlockStorageClient,
                                                                                                                                                                                                                                                                                                                                                                  -00005         "dns": CloudDNSClient,
                                                                                                                                                                                                                                                                                                                                                                  -00006         "compute:network": CloudNetworkClient,
                                                                                                                                                                                                                                                                                                                                                                  -00007         "monitor": CloudMonitorClient,
                                                                                                                                                                                                                                                                                                                                                                  -00008         "autoscale": AutoScaleClient,
                                                                                                                                                                                                                                                                                                                                                                  -00009         "image": ImageClient,
                                                                                                                                                                                                                                                                                                                                                                  -00010         "queues": QueueClient,
                                                                                                                                                                                                                                                                                                                                                                  -00011         }
                                                                                                                                                                                                                                                                                                                                                                  +00002         "object_store": _cf.CFClient,
                                                                                                                                                                                                                                                                                                                                                                  +00003         "compute": _cs_client.Client,
                                                                                                                                                                                                                                                                                                                                                                  +00004         "database": CloudDatabaseClient,
                                                                                                                                                                                                                                                                                                                                                                  +00005         "load_balancer": CloudLoadBalancerClient,
                                                                                                                                                                                                                                                                                                                                                                  +00006         "volume": CloudBlockStorageClient,
                                                                                                                                                                                                                                                                                                                                                                  +00007         "dns": CloudDNSClient,
                                                                                                                                                                                                                                                                                                                                                                  +00008         "compute:network": CloudNetworkClient,
                                                                                                                                                                                                                                                                                                                                                                  +00009         "monitor": CloudMonitorClient,
                                                                                                                                                                                                                                                                                                                                                                  +00010         "autoscale": AutoScaleClient,
                                                                                                                                                                                                                                                                                                                                                                  +00011         "image": ImageClient,
                                                                                                                                                                                                                                                                                                                                                                  +00012         "queues": QueueClient,
                                                                                                                                                                                                                                                                                                                                                                  +00013         }
                                                                                                                                                                                                                                                                                                                                                                   
                                                                                                                                                                                                                                                                                                                                                                  @@ -1284,7 +1388,7 @@ diff --git a/docs/html/namespacepyrax_1_1base__identity.html b/docs/html/namespacepyrax_1_1base__identity.html index daeb70be..84944f13 100644 --- a/docs/html/namespacepyrax_1_1base__identity.html +++ b/docs/html/namespacepyrax_1_1base__identity.html @@ -108,15 +108,22 @@ Classes class  Tenant class  User -class  BaseAuth - This class handles all of the basic authentication requirements for working with an OpenStack Cloud system. More...
                                                                                                                                                                                                                                                                                                                                                                  +class  Role +class  Service + Represents an available service from the service catalog. More...
                                                                                                                                                                                                                                                                                                                                                                  +class  Endpoint + Holds the endpoint information, as well as an instance of the appropriate client for that service and region. More...
                                                                                                                                                                                                                                                                                                                                                                  +class  BaseIdentity + This class handles all of the basic authentication requirements for working with an OpenStack Cloud system. More...

                                                                                                                                                                                                                                                                                                                                                                  Variables

                                                                                                                                                                                                                                                                                                                                                                  keyring = None string _pat = r"" string _utc_pat = r"" tuple API_DATE_PATTERN = re.compile(_pat, re.VERBOSE) tuple UTC_API_DATE_PATTERN = re.compile(_utc_pat, re.VERBOSE) string DATE_FORMAT = "%Y-%m-%d %H:%M:%S" + default_region = None

                                                                                                                                                                                                                                                                                                                                                                  Variable Documentation

                                                                                                                                                                                                                                                                                                                                                                  @@ -169,6 +176,32 @@
                                                                                                                                                                                                                                                                                                                                                                  +
                                                                                                                                                                                                                                                                                                                                                                  + + +
                                                                                                                                                                                                                                                                                                                                                                  +
                                                                                                                                                                                                                                                                                                                                                                  + + + + +
                                                                                                                                                                                                                                                                                                                                                                  default_region = None
                                                                                                                                                                                                                                                                                                                                                                  +
                                                                                                                                                                                                                                                                                                                                                                  +
                                                                                                                                                                                                                                                                                                                                                                  + +
                                                                                                                                                                                                                                                                                                                                                                  +
                                                                                                                                                                                                                                                                                                                                                                  + +
                                                                                                                                                                                                                                                                                                                                                                  +
                                                                                                                                                                                                                                                                                                                                                                  + + + + +
                                                                                                                                                                                                                                                                                                                                                                  keyring = None
                                                                                                                                                                                                                                                                                                                                                                  +
                                                                                                                                                                                                                                                                                                                                                                  +
                                                                                                                                                                                                                                                                                                                                                                  +
                                                                                                                                                                                                                                                                                                                                                                  @@ -202,7 +235,7 @@ diff --git a/docs/html/namespacepyrax_1_1client.html b/docs/html/namespacepyrax_1_1client.html index 4d6fd603..cbc3c8c4 100644 --- a/docs/html/namespacepyrax_1_1client.html +++ b/docs/html/namespacepyrax_1_1client.html @@ -97,7 +97,8 @@
                                                                                                                                                                                                                                                                                                                                                                  pyrax::client Namespace Reference
                                                                                                                                                                                                                                                                                                                                                                  @@ -107,7 +108,24 @@ Classes class  BaseClient  The base class for all pyrax clients. More...
                                                                                                                                                                                                                                                                                                                                                                  +

                                                                                                                                                                                                                                                                                                                                                                  +Variables

                                                                                                                                                                                                                                                                                                                                                                  +string SAFE_QUOTE_CHARS = "/.?&=," +

                                                                                                                                                                                                                                                                                                                                                                  Variable Documentation

                                                                                                                                                                                                                                                                                                                                                                  + +
                                                                                                                                                                                                                                                                                                                                                                  +
                                                                                                                                                                                                                                                                                                                                                                  + + + + +
                                                                                                                                                                                                                                                                                                                                                                  string SAFE_QUOTE_CHARS = "/.?&=,"
                                                                                                                                                                                                                                                                                                                                                                  +
                                                                                                                                                                                                                                                                                                                                                                  +
                                                                                                                                                                                                                                                                                                                                                                  + +
                                                                                                                                                                                                                                                                                                                                                                  +
                                                                                                                                                                                                                                                                                                                                                                  - -
                                                                                                                                                                                                                                                                                                                                                                  -
                                                                                                                                                                                                                                                                                                                                                                  - - - - -
                                                                                                                                                                                                                                                                                                                                                                  list fakeEntryPoints
                                                                                                                                                                                                                                                                                                                                                                  -
                                                                                                                                                                                                                                                                                                                                                                  -
                                                                                                                                                                                                                                                                                                                                                                  -Initial value: -
                                                                                                                                                                                                                                                                                                                                                                  -
                                                                                                                                                                                                                                                                                                                                                                  @@ -108,7 +108,7 @@ diff --git a/docs/queues.md b/docs/queues.md index 6c490181..05cbe0bf 100644 --- a/docs/queues.md +++ b/docs/queues.md @@ -44,12 +44,16 @@ Queues require a unique name. If you try to create a queue with a name that alre queue = pq.create("my_unique_queue") -There is currently no way to list existing queues, so if you need to determine whether a queue by a specific name exists, call: +If you wish to check a given queue already exists, you may do so as follows: exists = pq.queue_exists("name_to_check") This call returns `True` or `False`, depending on the existence of a queue with the given name. +## Listing queues +The code below shows how you can list all the queues in a given region: + + qs = pyrax.queues.list() ## Posting a Message to a Queue Messages can be any type of data, as long as they do not exceed 256 KB in length. The message body can be simple values, or a chunk of XML, or a list of JSON values, or anything else. pyrax handles the JSON-encoding required to post the message. diff --git a/pyrax/__init__.py b/pyrax/__init__.py index 57e37bee..38d05b92 100755 --- a/pyrax/__init__.py +++ b/pyrax/__init__.py @@ -35,14 +35,15 @@ It also adds in CDN functionality that is Rackspace-specific. """ + +from __future__ import absolute_import from functools import wraps import inspect import logging import os +import six.moves.configparser as ConfigParser import warnings -from six.moves import configparser - # keyring is an optional import try: import keyring @@ -59,21 +60,21 @@ from . import http from . import version - import cf_wrapper.client as _cf + from .cf_wrapper import client as _cf from novaclient import exceptions as _cs_exceptions from novaclient import auth_plugin as _cs_auth_plugin from novaclient.v1_1 import client as _cs_client from novaclient.v1_1.servers import Server as CloudServer - from autoscale import AutoScaleClient - from clouddatabases import CloudDatabaseClient - from cloudloadbalancers import CloudLoadBalancerClient - from cloudblockstorage import CloudBlockStorageClient - from clouddns import CloudDNSClient - from cloudnetworks import CloudNetworkClient - from cloudmonitoring import CloudMonitorClient - from image import ImageClient - from queueing import QueueClient + from .autoscale import AutoScaleClient + from .clouddatabases import CloudDatabaseClient + from .cloudloadbalancers import CloudLoadBalancerClient + from .cloudblockstorage import CloudBlockStorageClient + from .clouddns import CloudDNSClient + from .cloudnetworks import CloudNetworkClient + from .cloudmonitoring import CloudMonitorClient + from .image import ImageClient + from .queueing import QueueClient except ImportError: # See if this is the result of the importing of version.py in setup.py callstack = inspect.stack() @@ -118,6 +119,8 @@ services = tuple() _client_classes = { + "object_store": _cf.CFClient, + "compute": _cs_client.Client, "database": CloudDatabaseClient, "load_balancer": CloudLoadBalancerClient, "volume": CloudBlockStorageClient, @@ -168,7 +171,7 @@ class Settings(object): "verify_ssl": "CLOUD_VERIFY_SSL", "use_servicenet": "USE_SERVICENET", } - _settings = {"default": dict.fromkeys(env_dct.keys())} + _settings = {"default": dict.fromkeys(list(env_dct.keys()))} _default_set = False @@ -210,7 +213,7 @@ def set(self, key, val, env=None): else: if env not in self._settings: raise exc.EnvironmentNotFound("There is no environment named " - "'%s'." % env) + "'%s'." % env) dct = self._settings[env] if key not in dct: raise exc.InvalidSetting("The setting '%s' is not defined." % key) @@ -257,7 +260,7 @@ def _setEnvironment(self, val): @property def environments(self): - return self._settings.keys() + return list(self._settings.keys()) def read_config(self, config_file): @@ -265,17 +268,17 @@ def read_config(self, config_file): Parses the specified configuration file and stores the values. Raises an InvalidConfigurationFile exception if the file is not well-formed. """ - cfg = configparser.SafeConfigParser() + cfg = ConfigParser.SafeConfigParser() try: cfg.read(config_file) - except configparser.MissingSectionHeaderError as e: + except ConfigParser.MissingSectionHeaderError as e: # The file exists, but doesn't have the correct format. raise exc.InvalidConfigurationFile(e) def safe_get(section, option, default=None): try: return cfg.get(section, option) - except (configparser.NoSectionError, configparser.NoOptionError): + except (ConfigParser.NoSectionError, ConfigParser.NoOptionError): return default # A common mistake is including credentials in the config file. If any @@ -297,8 +300,9 @@ def safe_get(section, option, default=None): dct = self._settings[section_name] = {} dct["region"] = safe_get(section, "region", default_region) ityp = safe_get(section, "identity_type") - dct["identity_type"] = _id_type(ityp) - dct["identity_class"] = _import_identity(ityp) + if ityp: + dct["identity_type"] = _id_type(ityp) + dct["identity_class"] = _import_identity(ityp) # Handle both the old and new names for this setting. debug = safe_get(section, "debug") if debug is None: @@ -377,18 +381,46 @@ def set_default_region(region): default_region = region -def _create_identity(): +def create_context(id_type=None, env=None, username=None, password=None, + tenant_id=None, tenant_name=None, api_key=None, verify_ssl=None): + """ + Returns an instance of the specified identity class, or if none is + specified, an instance of the current setting for 'identity_class'. + + You may optionally set the environment by passing the name of that + environment in the 'env' parameter. + """ + if env: + set_environment(env) + return _create_identity(id_type=id_type, username=username, + password=password, tenant_id=tenant_id, tenant_name=tenant_name, + api_key=api_key, verify_ssl=verify_ssl, return_context=True) + + +def _create_identity(id_type=None, username=None, password=None, tenant_id=None, + tenant_name=None, api_key=None, verify_ssl=None, + return_context=False): """ Creates an instance of the current identity_class and assigns it to the - module-level name 'identity'. + module-level name 'identity' by default. If 'return_context' is True, the + module-level 'identity' is untouched, and instead the instance is returned. """ - global identity - cls = settings.get("identity_class") + if id_type: + cls = _import_identity(id_type) + else: + cls = settings.get("identity_class") if not cls: raise exc.IdentityClassNotDefined("No identity class has " "been defined for the current environment.") - verify_ssl = get_setting("verify_ssl") - identity = cls(verify_ssl=verify_ssl) + if verify_ssl is None: + verify_ssl = get_setting("verify_ssl") + context = cls(username=username, password=password, tenant_id=tenant_id, + tenant_name=tenant_name, api_key=api_key, verify_ssl=verify_ssl) + if return_context: + return context + else: + global identity + identity = context def _assure_identity(fnc): @@ -412,13 +444,16 @@ def _wrapped(*args, **kwargs): return _wrapped -@_assure_identity -def _safe_region(region=None): +def _safe_region(region=None, context=None): """Value to use when no region is specified.""" ret = region or settings.get("region") + context = context or identity if not ret: # Nothing specified; get the default from the identity object. - ret = identity.get_default_region() + if not context: + _create_identity() + context = identity + ret = context.get_default_region() if not ret: # Use the first available region try: @@ -452,9 +487,8 @@ def set_credentials(username, api_key=None, password=None, region=None, region = _safe_region(region) tenant_id = tenant_id or settings.get("tenant_id") identity.set_credentials(username=username, password=pw_key, - tenant_id=tenant_id, region=region) - if authenticate: - _auth_and_connect(region=region) + tenant_id=tenant_id, region=region, authenticate=authenticate) + connect_to_services(region=region) @_assure_identity @@ -479,9 +513,9 @@ def set_credential_file(cred_file, region=None, authenticate=True): for that region, and set the default region for connections. """ region = _safe_region(region) - identity.set_credential_file(cred_file, region=region) - if authenticate: - _auth_and_connect(region=region) + identity.set_credential_file(cred_file, region=region, + authenticate=authenticate) + connect_to_services(region=region) def keyring_auth(username=None, region=None, authenticate=True): @@ -514,23 +548,6 @@ def keyring_auth(username=None, region=None, authenticate=True): authenticate=authenticate) -def _auth_and_connect(region=None, connect=True): - """ - Handles the call to authenticate, and if successful, connects to the - various services. - """ - global default_region - identity.authenticated = False - default_region = region or default_region - try: - identity.authenticate() - except exc.AuthenticationFailed: - clear_credentials() - raise - if connect: - connect_to_services(region=region) - - @_assure_identity def authenticate(connect=True): """ @@ -545,8 +562,11 @@ def authenticate(connect=True): Normally after successful authentication, connections to the various services will be made. However, passing False to the `connect` parameter will skip the service connection step. + + The 'connect' parameter is retained for backwards compatibility. It no + longer has any effect. """ - _auth_and_connect(connect=connect) + identity.authenticate() def plug_hole_in_swiftclient_auth(clt, url): @@ -610,46 +630,50 @@ def connect_to_services(region=None): queues = connect_to_queues(region=region) -def _get_service_endpoint(svc, region=None, public=True): +def _get_service_endpoint(context, svc, region=None, public=True): """ Parses the services dict to get the proper endpoint for the given service. """ region = _safe_region(region) - url_type = {True: "public_url", False: "internal_url"}[public] - ep = identity.services.get(svc, {}).get("endpoints", {}).get( - region, {}).get(url_type) + # If a specific context is passed, use that. Otherwise, use the global + # identity reference. + context = context or identity + url_type = {True: "public", False: "private"}[public] + svc_obj = context.services.get(svc) + if not svc_obj: + return None + ep = svc_obj.endpoints.get(region, {}).get(url_type) if not ep: # Try the "ALL" region, and substitute the actual region - ep = identity.services.get(svc, {}).get("endpoints", {}).get( - "ALL", {}).get(url_type) + ep = svc_obj.endpoints.get("ALL", {}).get(url_type) return ep -@_require_auth -def connect_to_cloudservers(region=None, **kwargs): +def connect_to_cloudservers(region=None, context=None, **kwargs): """Creates a client for working with cloud servers.""" + context = context or identity _cs_auth_plugin.discover_auth_systems() id_type = get_setting("identity_type") if id_type != "keystone": auth_plugin = _cs_auth_plugin.load_plugin(id_type) else: auth_plugin = None - region = _safe_region(region) - mgt_url = _get_service_endpoint("compute", region) + region = _safe_region(region, context=context) + mgt_url = _get_service_endpoint(context, "compute", region) cloudservers = None if not mgt_url: # Service is not available return insecure = not get_setting("verify_ssl") - cloudservers = _cs_client.Client(identity.username, identity.password, - project_id=identity.tenant_id, auth_url=identity.auth_endpoint, + cloudservers = _cs_client.Client(context.username, context.password, + project_id=context.tenant_id, auth_url=context.auth_endpoint, auth_system=id_type, region_name=region, service_type="compute", auth_plugin=auth_plugin, insecure=insecure, http_log_debug=_http_debug, **kwargs) agt = cloudservers.client.USER_AGENT cloudservers.client.USER_AGENT = _make_agent_name(agt) cloudservers.client.management_url = mgt_url - cloudservers.client.auth_token = identity.token + cloudservers.client.auth_token = context.token cloudservers.exceptions = _cs_exceptions # Add some convenience methods cloudservers.list_images = cloudservers.images.list @@ -677,8 +701,7 @@ def list_snapshots(): return cloudservers -@_require_auth -def connect_to_cloudfiles(region=None, public=None): +def connect_to_cloudfiles(region=None, public=None, context=None): """ Creates a client for working with cloud files. The default is to connect to the public URL; if you need to work with the ServiceNet connection, pass @@ -688,23 +711,26 @@ def connect_to_cloudfiles(region=None, public=None): is_public = not bool(get_setting("use_servicenet")) else: is_public = public - - region = _safe_region(region) - cf_url = _get_service_endpoint("object_store", region, public=is_public) + # If a specific context is passed, use that. Otherwise, use the global + # identity reference. + context = context or identity + region = _safe_region(region, context=context) + cf_url = _get_service_endpoint(context, "object_store", region, + public=is_public) cloudfiles = None if not cf_url: # Service is not available return - cdn_url = _get_service_endpoint("object_cdn", region) + cdn_url = _get_service_endpoint(context, "object_cdn", region) ep_type = {True: "publicURL", False: "internalURL"}[is_public] - opts = {"tenant_id": identity.tenant_name, "auth_token": identity.token, - "endpoint_type": ep_type, "tenant_name": identity.tenant_name, + opts = {"tenant_id": context.tenant_name, "auth_token": context.token, + "endpoint_type": ep_type, "tenant_name": context.tenant_name, "object_storage_url": cf_url, "object_cdn_url": cdn_url, "region_name": region} verify_ssl = get_setting("verify_ssl") - cloudfiles = _cf.CFClient(identity.auth_endpoint, identity.username, - identity.password, tenant_name=identity.tenant_name, - preauthurl=cf_url, preauthtoken=identity.token, auth_version="2", + cloudfiles = _cf.CFClient(context.auth_endpoint, context.username, + context.password, tenant_name=context.tenant_name, + preauthurl=cf_url, preauthtoken=context.token, auth_version="2", os_options=opts, verify_ssl=verify_ssl, http_log_debug=_http_debug) cloudfiles.user_agent = _make_agent_name(cloudfiles.user_agent) return cloudfiles @@ -713,13 +739,13 @@ def connect_to_cloudfiles(region=None, public=None): @_require_auth def _create_client(ep_name, region, public=True): region = _safe_region(region) - ep = _get_service_endpoint(ep_name.split(":")[0], region, public=public) + ep = _get_service_endpoint(None, ep_name.split(":")[0], region, public=public) if not ep: return verify_ssl = get_setting("verify_ssl") cls = _client_classes[ep_name] - client = cls(region_name=region, management_url=ep, verify_ssl=verify_ssl, - http_log_debug=_http_debug) + client = cls(identity, region_name=region, management_url=ep, + verify_ssl=verify_ssl, http_log_debug=_http_debug) client.user_agent = _make_agent_name(client.user_agent) return client @@ -769,16 +795,24 @@ def connect_to_queues(region=None, public=True): return _create_client(ep_name="queues", region=region, public=public) +def client_class_for_service(service): + """ + Returns the client class registered for the given service, or None if there + is no such service, or if no class has been registered. + """ + return _client_classes.get(service) + + def get_http_debug(): return _http_debug -@_assure_identity def set_http_debug(val): global _http_debug _http_debug = val # Set debug on the various services - identity.http_log_debug = val + if identity: + identity.http_log_debug = val for svc in (cloudservers, cloudfiles, cloud_loadbalancers, cloud_blockstorage, cloud_databases, cloud_dns, cloud_networks, autoscale, images, queues): diff --git a/pyrax/base_identity.py b/pyrax/base_identity.py index 3fc99900..405ef302 100644 --- a/pyrax/base_identity.py +++ b/pyrax/base_identity.py @@ -1,18 +1,24 @@ #!/usr/bin/env python # -*- coding: utf-8 -*- -from __future__ import print_function +from __future__ import absolute_import + +import six.moves.configparser as ConfigParser import datetime import json import re +import requests -from six.moves import configparser +try: + import keyring +except ImportError: + keyring = None import pyrax -import pyrax.exceptions as exc -from pyrax.resource import BaseResource -import pyrax.utils as utils +from . import exceptions as exc +from .resource import BaseResource +from . import utils _pat = r""" @@ -33,6 +39,9 @@ UTC_API_DATE_PATTERN = re.compile(_utc_pat, re.VERBOSE) DATE_FORMAT = "%Y-%m-%d %H:%M:%S" +# Default region for all services. Can be individually overridden if needed +default_region = None + class Tenant(BaseResource): pass @@ -42,36 +51,254 @@ class User(BaseResource): pass -class BaseAuth(object): +class Role(BaseResource): + pass + + +class Service(object): + """ + Represents an available service from the service catalog. + """ + def __init__(self, identity, catalog): + """ + Parse the catalog entry for a particular service. + """ + self.identity = identity + self.name = catalog.get("name") + # Replace any dashes with underscores. + fulltype = catalog["type"].replace("-", "_") + # Some provider-specific services are prefixed with that info. + try: + self.prefix, self.service_type = fulltype.split(":") + except ValueError: + self.prefix = "" + self.service_type = fulltype + if self.service_type == "compute": + if self.name.lower() == "cloudservers": + # First-generation Rackspace cloud servers + return + self.clients = {} + self.endpoints = utils.DotDict() + eps = catalog.get("endpoints", []) + for ep in eps: + rgn = ep.get("region", "ALL") + self.endpoints[rgn] = Endpoint(ep, self.service_type, rgn, identity) + return + + + def __repr__(self): + memloc = hex(id(self)) + return "<'%s' Service object at %s>" % (self.service_type, memloc) + + + def _ep_for_region(self, region): + """ + Given a region, returns the Endpoint for that region, or the Endpoint + for the ALL region if no match is found. If no match is found, None + is returned, and it is up to the calling method to handle it + appropriately. + """ + rgn = region.upper() + try: + rgn_ep = [ep for ep in list(self.endpoints.values()) + if ep.region.upper() == rgn][0] + except IndexError: + # See if there is an 'ALL' region. + try: + rgn_ep = [ep for ep in list(self.endpoints.values()) + if ep.region.upper() == "ALL"][0] + except IndexError: + rgn_ep = None + return rgn_ep + + + def get_client(self, region): + """ + Returns an instance of the appropriate client class for the given + region. If there is no endpoint for that region, a NoEndpointForRegion + exception is raised. + """ + ep = self._ep_for_region(region) + if not ep: + raise exc.NoEndpointForRegion("There is no endpoint defined for the " + "region '%s' for the '%s' service." % (region, + self.service_type)) + return ep.client + + + @property + def regions(self): + """ + Returns a list of all regions which support this service. + """ + return list(self.endpoints.keys()) + + + +class Endpoint(object): + """ + Holds the endpoint information, as well as an instance of the appropriate + client for that service and region. + """ + public_url = None + private_url = None + tenant_id = None + region = None + _client = None + _client_private = None + attr_map = {"publicURL": "public_url", + "privateURL": "private_url", + "tenantId": "tenant_id", + } + + + def __init__(self, ep_dict, service, region, identity): + """ + Set local attributes from the supplied dictionary. + """ + self.service = service + self.region = region + self.identity = identity + for key, val in list(ep_dict.items()): + att_name = self.attr_map.get(key, key) + setattr(self, att_name, val) + + + def _get_client(self, public=True): + client_att = "_client" if public else "_client_private" + clt = getattr(self, client_att) + if isinstance(clt, exc.NoClientForService): + # Already failed + raise clt + if clt is not None: + return clt + # Create the client + clt_class = pyrax.client_class_for_service(self.service) + if clt_class is None: + noclass = exc.NoClientForService("No client for the '%s' service " + "has been registered." % self.service) + setattr(self, client_att, noclass) + raise noclass + url_att = "public_url" if public else "private_url" + url = getattr(self, url_att) + if not url: + nourl = exc.NoEndpointForService("No %s endpoint is available for " + "the '%s' service." % (url_att, self.service)) + setattr(self, client_att, nourl) + raise nourl + clt = self._create_client(clt_class, url, public=public) + setattr(self, client_att, clt) + return clt + + + def get(self, url_type): + """ + Accepts either 'public' or 'private' as a parameter, and returns the + corresponding value for 'public_url' or 'private_url', respectively. + """ + lowtype = url_type.lower() + if lowtype == "public": + return self.public_url + elif lowtype == "private": + return self.private_url + else: + raise ValueError("Valid values are 'public' or 'private'; " + "received '%s'." % url_type) + + + def __getattr__(self, att): + clt = self.client + ret = getattr(clt, att, None) + if ret: + return ret + else: + raise AttributeError("Endpoint for service '%s' in region '%s' " + "has no attribute '%s'." % (self.service, self.region, att)) + + + @property + def client(self): + return self._get_client(public=True) + + + @property + def client_private(self): + return self._get_client(public=False) + + + def _create_client(self, clt_class, url, public=True): + """ + Creates a client instance for the service. + """ + verify_ssl = pyrax.get_setting("verify_ssl") + if self.service == "object_store": + # Swiftclient requires different parameters. + client = pyrax.connect_to_cloudfiles(region=self.region, + public=public, context=self.identity) + elif self.service == "compute": + # Novaclient also requires special handling. + client = pyrax.connect_to_cloudservers(region=self.region, + context=self.identity) + else: + client = clt_class(self.identity, region_name=self.region, + management_url=url, verify_ssl=verify_ssl) + return client + + + +class BaseIdentity(object): """ This class handles all of the basic authentication requirements for working with an OpenStack Cloud system. """ - username = "" - password = "" - token = "" - expires = "" - tenant_id = "" - tenant_name = "" - authenticated = False - user_agent = "pyrax" - http_log_debug = False - _default_region = None - - - def __init__(self, username=None, password=None, token=None, - credential_file=None, region=None, timeout=None, verify_ssl=True): + _creds_style = "password" + def __init__(self, username=None, password=None, tenant_id=None, + tenant_name=None, auth_endpoint=None, api_key=None, token=None, + credential_file=None, region=None, timeout=None, verify_ssl=True): + """ + Initializes the attributes for this identity object. + """ self.username = username self.password = password + self.tenant_id = tenant_id + self.tenant_name = tenant_name self.token = token + self.expires = None self.region = region self._creds_file = credential_file self._timeout = timeout - self.services = {} - self.regions = set() self.verify_ssl = verify_ssl - self._auth_endpoint = None + self._auth_endpoint = auth_endpoint + self.api_key = api_key + self.services = utils.DotDict() + self.regions = utils.DotDict() + self._default_creds_style = "password" + self.authenticated = False + self.user_agent = "pyrax" + self.http_log_debug = False + self._default_region = None + self.service_mapping = { + "cloudservers": "compute", + "nova": "compute", + "cloudfiles": "object_store", + "swift": "object_store", + "cloud_loadbalancers": "load_balancer", + "cloud_databases": "database", + "trove": "database", + "cloud_blockstorage": "volume", + "cinder": "volume", + "cloud_dns": "dns", + "designate": "dns", + "cloud_networks": "network", + "neutron": "network", + "cloud_monitoring": "monitor", + "autoscale": "autoscale", + "images": "image", + "glance": "image", + "queues": "queues", + "marconi": "queues", + } @property @@ -82,7 +309,9 @@ def auth_token(self): @property def auth_endpoint(self): - """Abstracts out the logic for connecting to different auth endpoints.""" + """ + Abstracts out the logic for connecting to different auth endpoints. + """ return self._get_auth_endpoint() @@ -92,9 +321,10 @@ def auth_endpoint(self, val): def _get_auth_endpoint(self): - """Each subclass will have to implement its own method.""" - raise NotImplementedError("The _get_auth_endpoint() method must be " - "defined in Auth subclasses.") + """ + Broken out in case subclasses need to determine endpoints dynamically. + """ + return self._auth_endpoint or pyrax.get_setting("auth_endpoint") def get_default_region(self): @@ -106,6 +336,55 @@ def get_default_region(self): return self._default_region + def __getattr__(self, att): + """ + Magic to allow for specification of client by region/service or by + service/region. + + If a service is specified, this should return an object whose endpoints + contain keys for each available region for that service. If a region is + specified, an object with keys for each service available in that + region should be returned. + """ + if not self.authenticated: + raise exc.NotAuthenticated("Authentication required before " + "accessing the context.") + # First see if it's a service + att = self.service_mapping.get(att) or att + svc = self.services.get(att) + if svc is not None: + return svc.endpoints + # Either invalid service, or a region + ret = utils.DotDict([(stype, svc.endpoints.get(att)) + for stype, svc in list(self.services.items()) + if svc.endpoints.get(att) is not None]) + ret._att_mapper.update(self.service_mapping) + if ret: + return ret + # Invalid attribute + raise AttributeError("No such attribute '%s'." % att) + + + def get_client(self, service, region, public=True): + """ + Returns the client object for the specified service and region. + + By default the public endpoint is used. If you wish to work with a + services internal endpoints, specify `public=False`. + """ + clt = ep = None + mapped_service = self.service_mapping.get(service) or service + svc = self.services.get(mapped_service) + if svc: + ep = svc.endpoints.get(region) + if ep: + clt = ep.client if public else ep.client_private + if not clt: + raise exc.NoSuchClient("There is no client available for the " + "service '%s' in the region '%s'." % (service, region)) + return clt + + def set_credentials(self, username, password=None, region=None, tenant_id=None, authenticate=False): """Sets the username and password directly.""" @@ -119,7 +398,7 @@ def set_credentials(self, username, password=None, region=None, def set_credential_file(self, credential_file, region=None, - tenant_id=tenant_id, authenticate=False): + tenant_id=None, authenticate=False): """ Reads in the credentials from the supplied file. It should be a standard config file in the format: @@ -131,19 +410,19 @@ def set_credential_file(self, credential_file, region=None, """ self._creds_file = credential_file - cfg = configparser.SafeConfigParser() + cfg = ConfigParser.SafeConfigParser() try: if not cfg.read(credential_file): - # If the specified file does not exist, the parser will - # return an empty list + # If the specified file does not exist, the parser returns an + # empty list. raise exc.FileNotFound("The specified credential file '%s' " "does not exist" % credential_file) - except configparser.MissingSectionHeaderError as e: + except ConfigParser.MissingSectionHeaderError as e: # The file exists, but doesn't have the correct format. raise exc.InvalidCredentialFile(e) try: self._read_credential_file(cfg) - except (configparser.NoSectionError, configparser.NoOptionError) as e: + except (ConfigParser.NoSectionError, ConfigParser.NoOptionError) as e: raise exc.InvalidCredentialFile(e) if region: self.region = region @@ -153,29 +432,30 @@ def set_credential_file(self, credential_file, region=None, def auth_with_token(self, token, tenant_id=None, tenant_name=None): """ - If a valid token is already known, this call will use it to generate - the service catalog. + If a valid token is already known, this call uses it to generate the + service catalog. """ - resp = self._call_token_auth(token, tenant_id, tenant_name) - resp_body = resp.json() + resp, resp_body = self._call_token_auth(token, tenant_id, tenant_name) self._parse_response(resp_body) self.authenticated = True def _call_token_auth(self, token, tenant_id, tenant_name): - if not any((tenant_id, tenant_name)): - raise exc.MissingAuthSettings("You must supply either the tenant " - "name or tenant ID") + key = val = None if tenant_id: key = "tenantId" val = tenant_id - else: + elif tenant_name: key = "tenantName" val = tenant_name + body = {"auth": { - key: val, "token": {"id": token}, }} + + if(key and val): + body["auth"][key] = val + headers = {"Content-Type": "application/json", "Accept": "application/json", } @@ -188,7 +468,7 @@ def _call_token_auth(self, token, tenant_id, tenant_name): elif resp.status_code > 299: msg = resp_body[resp_body.keys()[0]]["message"] raise exc.AuthenticationFailed("%s - %s." % (resp.reason, msg)) - return resp + return resp, resp_body def _read_credential_file(self, cfg): @@ -200,7 +480,7 @@ def _read_credential_file(self, cfg): self.tenant_id = cfg.get("keystone", "tenant_id") - def _get_credentials(self): + def _format_credentials(self): """ Returns the current credentials in the format expected by the authentication service. @@ -243,6 +523,10 @@ def method_patch(self, uri, admin=False, data=None, headers=None, def _call(self, mthd, uri, admin, data, headers, std_headers): + """ + Handles all the common functionality required for API calls. Returns + the resulting response object. + """ if not uri.startswith("http"): uri = "/".join((self.auth_endpoint.rstrip("/"), uri)) if admin: @@ -263,13 +547,25 @@ def _call(self, mthd, uri, admin, data, headers, std_headers): return pyrax.http.request(mthd, uri, **kwargs) - def authenticate(self): + def authenticate(self, username=None, password=None, api_key=None, + tenant_id=None): """ Using the supplied credentials, connects to the specified - authentication endpoint and attempts to log in. If successful, - records the token information. + authentication endpoint and attempts to log in. + + Credentials can either be passed directly to this method, or + previously-stored credentials can be used. If authentication is + successful, the token and service catalog information is stored, and + clients for each service and region are created. """ - creds = self._get_credentials() + self.username = username or self.username or pyrax.get_setting( + "username") + # Different identity systems may pass these under inconsistent names. + self.password = password or self.password or api_key or self.api_key + self.api_key = api_key or self.api_key or self.password + self.tenant_id = tenant_id or self.tenant_id or pyrax.get_setting( + "tenant_id") + creds = self._format_credentials() headers = {"Content-Type": "application/json", "Accept": "application/json", } @@ -282,12 +578,14 @@ def authenticate(self): "credentials received") elif 500 <= resp.status_code < 600: # Internal Server Error - error_msg = resp.content or "Service Currently Unavailable" + try: + error_msg = resp_body[list(resp_body.keys())[0]]["message"] + except KeyError: + error_msg = "Service Currently Unavailable" raise exc.InternalServerError(error_msg) - elif 299 < resp.status_code < 500: - msg_dict = resp.json() + elif resp.status_code > 299: try: - msg = msg_dict[msg_dict.keys()[0]]["message"] + msg = resp_body[list(resp_body.keys())[0]]["message"] except KeyError: msg = None if msg: @@ -307,31 +605,8 @@ def _parse_response(self, resp): self.tenant_id = token["tenant"]["id"] self.tenant_name = token["tenant"]["name"] self.expires = self._parse_api_time(token["expires"]) - svc_cat = access.get("serviceCatalog") - self.services = {} - for svc in svc_cat: - # Replace any dashes with underscores. - # Also, some service types are extensions that have vendor-specific - # identifiers; strip them. - typ = svc["type"].replace("-", "_").split(":")[-1] - if typ == "compute": - if svc["name"].lower() == "cloudservers": - # First-generation Rackspace cloud servers - continue - self.services[typ] = dict(name=svc["name"], endpoints={}) - svc_ep = self.services[typ]["endpoints"] - for ep in svc["endpoints"]: - rgn = ep.get("region", "ALL") - self.regions.add(rgn) - svc_ep[rgn] = {} - svc_ep[rgn]["public_url"] = ep["publicURL"] - try: - svc_ep[rgn]["internal_url"] = ep["internalURL"] - except KeyError: - pass - self.regions.discard("ALL") - pyrax.regions = tuple(self.regions) - pyrax.services = tuple(self.services.keys()) + self.service_catalog = access.get("serviceCatalog") + self._parse_service_catalog() user = access["user"] self.user = {} self.user["id"] = user["id"] @@ -339,13 +614,69 @@ def _parse_response(self, resp): self.user["roles"] = user["roles"] + def _parse_service_catalog(self): + self.services = utils.DotDict() + self.regions = set() + for svc in self.service_catalog: + service = Service(self, svc) + if not hasattr(service, "endpoints"): + # Not an OpenStack service + continue + setattr(self.services, service.service_type, service) + self.regions.update(list(service.endpoints.keys())) + # Update the 'ALL' services to include all available regions. + self.regions.discard("ALL") + for nm, svc in list(self.services.items()): + eps = svc.endpoints + ep = eps.pop("ALL", None) + if ep: + for rgn in self.regions: + eps[rgn] = ep + + + def keyring_auth(self, username=None): + """ + Uses the keyring module to retrieve the user's password or api_key. + """ + if not keyring: + # Module not installed + raise exc.KeyringModuleNotInstalled("The 'keyring' Python module " + "is not installed on this system.") + if username is None: + username = pyrax.get_setting("keyring_username") + if not username: + raise exc.KeyringUsernameMissing("No username specified for " + "keyring authentication.") + password = keyring.get_password("pyrax", username) + if password is None: + raise exc.KeyringPasswordNotFound("No password was found for the " + "username '%s'." % username) + style = self._creds_style or self._default_creds_style + # Keyring username may be different than the credentials. Use the + # existing username, if present; otherwise, use the supplied username. + username = self.username or username + if style == "apikey": + return self.authenticate(username=username, api_key=password) + else: + return self.authenticate(username=username, password=password) + + def unauthenticate(self): """ - Clears all authentication information. + Clears out any credentials, tokens, and service catalog info. """ - self.token = self.expires = self.tenant_id = self.tenant_name = "" + self.username = "" + self.password = "" + self.tenant_id = "" + self.tenant_name = "" + self.token = "" + self.expires = None + self.region = "" + self._creds_file = None + self.api_key = "" + self.services = utils.DotDict() + self.regions = utils.DotDict() self.authenticated = False - self.services = {} def _standard_headers(self): @@ -368,8 +699,9 @@ def get_extensions(self): def get_token(self, force=False): - """Returns the auth token, if it is valid. If not, calls the auth endpoint - to get a new token. Passing 'True' to 'force' will force a call for a new + """ + Returns the auth token, if it is valid. If not, calls the auth endpoint + to get a new token. Passing 'True' to 'force' forces a call for a new token, even if there already is a valid token. """ self.authenticated = self._has_valid_token() @@ -413,6 +745,18 @@ def check_token(self, token=None): return 200 <= resp.status_code < 300 + def revoke_token(self, token): + """ + ADMIN ONLY. Returns True or False, depending on whether deletion of the + specified token was successful. + """ + resp, resp_body = self.method_delete("tokens/%s" % token, admin=True) + if resp.status_code in (401, 403): + raise exc.AuthorizationFailure("You must be an admin to make this " + "call.") + return 200 <= resp.status_code < 300 + + def get_token_endpoints(self): """ ADMIN ONLY. Returns a list of all endpoints for the current auth token. @@ -435,15 +779,15 @@ def list_users(self): if resp.status_code in (401, 403, 404): raise exc.AuthorizationFailure("You are not authorized to list " "users.") - # The API is inconsistent; if only one user exists, it will not return + # The API is inconsistent; if only one user exists, it does not return # a list. if "users" in resp_body: users = resp_body["users"] else: - users = [resp_body] + users = resp_body # The returned values may contain password data. Strip that out. for user in users: - bad_keys = [key for key in user.keys() + bad_keys = [key for key in list(user.keys()) if "password" in key.lower()] for bad_key in bad_keys: user.pop(bad_key) @@ -454,10 +798,10 @@ def create_user(self, name, email, password=None, enabled=True): """ ADMIN ONLY. Creates a new user for this tenant (account). The username and email address must be supplied. You may optionally supply the - password for this user; if not, the API server will generate a password - and return it in the 'password' attribute of the resulting User object. - NOTE: this is the ONLY time the password will be returned; after the - initial user creation, there is NO WAY to retrieve the user's password. + password for this user; if not, the API server generates a password and + return it in the 'password' attribute of the resulting User object. + NOTE: this is the ONLY time the password is returned; after the initial + user creation, there is NO WAY to retrieve the user's password. You may also specify that the user should be created but not active by passing False to the enabled parameter. @@ -473,7 +817,7 @@ def create_user(self, name, email, password=None, enabled=True): data["user"]["OS-KSADM:password"] = password resp, resp_body = self.method_post("users", data=data, admin=True) if resp.status_code == 201: - return User(self, resp_body) + return User(self, resp_body.get("user", resp_body)) elif resp.status_code in (401, 403, 404): raise exc.AuthorizationFailure("You are not authorized to create " "users.") @@ -487,6 +831,45 @@ def create_user(self, name, email, password=None, enabled=True): raise exc.BadRequest(message) + def find_user_by_name(self, name): + """ + Returns a User object by searching for the supplied user name. Returns + None if there is no match for the given name. + """ + raise NotImplementedError("This method is not supported.") + + + def find_user_by_email(self, email): + """ + Returns a User object by searching for the supplied user's email + address. Returns None if there is no match for the given ID. + """ + raise NotImplementedError("This method is not supported.") + + + def find_user_by_id(self, uid): + """ + Returns a User object by searching for the supplied user ID. Returns + None if there is no match for the given ID. + """ + raise NotImplementedError("This method is not supported.") + + + def get_user(self, user_id=None, username=None, email=None): + """ + Returns the user specified by either ID, username or email. + + Since more than user can have the same email address, searching by that + term returns a list of 1 or more User objects. Searching by username or + ID returns a single User. + + If a user_id that doesn't belong to the current account is searched + for, a Forbidden exception is raised. When searching by username or + email, a NotFound exception is raised if there is no matching user. + """ + raise NotImplementedError("This method is not supported.") + + # Can we really update the ID? Docs seem to say we can def update_user(self, user, email=None, username=None, uid=None, enabled=None): @@ -542,6 +925,29 @@ def list_roles_for_user(self, user): return roles + def list_credentials(self, user=None): + """ + Returns a user's non-password credentials. If no user is specified, the + credentials for the currently authenticated user are returned. + + You cannot retrieve passwords by this or any other means. + """ + if not user: + user = self.user + user_id = utils.get_id(user) + uri = "users/%s/OS-KSADM/credentials" % user_id + resp, resp_body = self.method_get(uri) + return resp_body.get("credentials") + + + def reset_api_key(self, user=None): + """ + Not available in basic Keystone identity. + """ + raise NotImplementedError("The reset_api_key method is not " + "implemented.") + + def get_tenant(self): """ Returns the tenant for the current user. @@ -618,14 +1024,75 @@ def delete_tenant(self, tenant): raise exc.TenantNotFound("Tenant '%s' does not exist." % tenant) + def list_roles(self, service_id=None, limit=None, marker=None): + """ + Returns a list of all global roles for users, optionally limited by + service. Pagination can be handled through the standard 'limit' and + 'marker' parameters. + """ + uri = "OS-KSADM/roles" + pagination_items = [] + if service_id is not None: + pagination_items.append("serviceId=%s" % service_id) + if limit is not None: + pagination_items.append("limit=%s" % limit) + if marker is not None: + pagination_items.append("marker=%s" % marker) + pagination = "&".join(pagination_items) + if pagination: + uri = "%s?%s" % (uri, pagination) + resp, resp_body = self.method_get(uri) + roles = resp_body.get("roles", []) + return [Role(self, role) for role in roles] + + + def get_role(self, role): + """ + Returns a Role object representing the specified parameter. The 'role' + parameter can be either an existing Role object, or the ID of the role. + + If an invalid role is passed, a NotFound exception is raised. + """ + uri = "OS-KSADM/roles/%s" % utils.get_id(role) + resp, resp_body = self.method_get(uri) + role = Role(self, resp_body.get("role")) + return role + + + def add_role_to_user(self, role, user): + """ + Adds the specified role to the specified user. + + There is no return value upon success. Passing a non-existent role or + user raises a NotFound exception. + """ + uri = "users/%s/roles/OS-KSADM/%s" % (utils.get_id(user), + utils.get_id(role)) + resp, resp_body = self.method_put(uri) + + + def delete_role_from_user(self, role, user): + """ + Deletes the specified role from the specified user. + + There is no return value upon success. Passing a non-existent role or + user raises a NotFound exception. + """ + uri = "users/%s/roles/OS-KSADM/%s" % (utils.get_id(user), + utils.get_id(role)) + resp, resp_body = self.method_delete(uri) + + @staticmethod def _parse_api_time(timestr): """ - Typical expiration times returned from the auth server are in this format: + Typical expiration times returned from the auth server are in this + format: 2012-05-02T14:27:40.000-05:00 They can also be returned as a UTC value in this format: 2012-05-02T14:27:40.000Z - This method returns a proper datetime object from either of these formats. + This method returns a proper datetime object from either of these + formats. """ try: reg_groups = API_DATE_PATTERN.match(timestr).groups() diff --git a/pyrax/cf_wrapper/client.py b/pyrax/cf_wrapper/client.py index 10bc1d7c..dbf38867 100644 --- a/pyrax/cf_wrapper/client.py +++ b/pyrax/cf_wrapper/client.py @@ -1,6 +1,7 @@ #!/usr/bin/env python # -*- coding: utf-8 -*- +import logging import datetime from functools import wraps import hashlib @@ -138,6 +139,13 @@ def _convert_list_last_modified_to_local(attdict): return attdict +def _quote(val): + if isinstance(val, six.text_type): + val = val.encode("utf-8") + return urllib.quote(val) + + + class CFClient(object): """ Wraps the calls to swiftclient with objects representing Containers @@ -893,7 +901,8 @@ def _upload_folder_in_background(self, folder_path, container, ignore, def sync_folder_to_container(self, folder_path, container, delete=False, - include_hidden=False, ignore=None, ignore_timestamps=False): + include_hidden=False, ignore=None, ignore_timestamps=False, + object_prefix="", verbose=False): """ Compares the contents of the specified folder, and checks to make sure that the corresponding object is present in the specified container. If @@ -916,22 +925,43 @@ def sync_folder_to_container(self, folder_path, container, delete=False, file names, and any names that match any of the 'ignore' patterns will not be uploaded. The patterns should be standard *nix-style shell patterns; e.g., '*pyc' will ignore all files ending in 'pyc', such as - 'program.pyc' and 'abcpyc'. """ + 'program.pyc' and 'abcpyc'. + + If `object_prefix` is set it will be appended to the object name when + it is checked and uploaded to the container. For example, if you use + sync_folder_to_container("folderToSync/", myContainer, + object_prefix="imgFolder") it will upload the files to the + container/imgFolder/... instead of just container/... + + Set `verbose` to True to make it print what is going on. It will + show which files are being uploaded and which ones are not and why. + """ cont = self.get_container(container) self._local_files = [] + # Load a list of all the remote objects so we don't have to keep + # hitting the service + if verbose: + log = logging.getLogger("pyrax") + log.info("Loading remote object list (prefix=%s)", object_prefix) + data = cont.get_objects(prefix=object_prefix, full_listing=True) + self._remote_files = dict((d.name, d) for d in data) self._sync_folder_to_container(folder_path, cont, prefix="", delete=delete, include_hidden=include_hidden, ignore=ignore, - ignore_timestamps=ignore_timestamps) + ignore_timestamps=ignore_timestamps, + object_prefix=object_prefix, verbose=verbose) + # Unset the _remote_files + self._remote_files = None def _sync_folder_to_container(self, folder_path, cont, prefix, delete, - include_hidden, ignore, ignore_timestamps): + include_hidden, ignore, ignore_timestamps, object_prefix, verbose): """ This is the internal method that is called recursively to handle nested folder structures. """ fnames = os.listdir(folder_path) ignore = utils.coerce_string_to_list(ignore) + log = logging.getLogger("pyrax") if not include_hidden: ignore.append(".*") for fname in fnames: @@ -944,17 +974,20 @@ def _sync_folder_to_container(self, folder_path, cont, prefix, delete, subprefix = "%s/%s" % (prefix, subprefix) self._sync_folder_to_container(pth, cont, prefix=subprefix, delete=delete, include_hidden=include_hidden, - ignore=ignore, ignore_timestamps=ignore_timestamps) + ignore=ignore, ignore_timestamps=ignore_timestamps, + object_prefix=object_prefix, verbose=verbose) continue - self._local_files.append(os.path.join(prefix, fname)) + self._local_files.append(os.path.join(object_prefix, prefix, fname)) local_etag = utils.get_checksum(pth) fullname = fname + fullname_with_prefix = "%s/%s" % (object_prefix, fname) if prefix: fullname = "%s/%s" % (prefix, fname) + fullname_with_prefix = "%s/%s/%s" % (object_prefix, prefix, fname) try: - obj = cont.get_object(fullname) + obj = self._remote_files[fullname_with_prefix] obj_etag = obj.etag - except exc.NoSuchObject: + except KeyError: obj = None obj_etag = None if local_etag != obj_etag: @@ -968,19 +1001,29 @@ def _sync_folder_to_container(self, folder_path, cont, prefix, delete, local_mod_str = local_mod.isoformat() if obj_time_str >= local_mod_str: # Remote object is newer + if verbose: + log.info("%s NOT UPLOADED because remote object is " + "newer", fullname) continue - cont.upload_file(pth, obj_name=fullname, etag=local_etag, - return_none=True) + cont.upload_file(pth, obj_name=fullname_with_prefix, + etag=local_etag, return_none=True) + if verbose: + log.info("%s UPLOADED", fullname) + else: + if verbose: + log.info("%s NOT UPLOADED because it already exists", + fullname) if delete and not prefix: - self._delete_objects_not_in_list(cont) + self._delete_objects_not_in_list(cont, object_prefix) - def _delete_objects_not_in_list(self, cont): + def _delete_objects_not_in_list(self, cont, object_prefix=""): """ Finds all the objects in the specified container that are not present in the self._local_files list, and deletes them. """ - objnames = set(cont.get_object_names(full_listing=True)) + objnames = set(cont.get_object_names(prefix=object_prefix, + full_listing=True)) localnames = set(self._local_files) to_delete = list(objnames.difference(localnames)) # We don't need to wait around for this to complete. Store the thread @@ -1420,12 +1463,7 @@ def cdn_request(self, method, path=[], data="", hdrs=None): Taken directly from the cloudfiles library and modified for use here. """ - def quote(val): - if isinstance(val, six.text_type): - val = val.encode("utf-8") - return urllib.quote(val) - - pth = "/".join([quote(elem) for elem in path]) + pth = "/".join([_quote(elem) for elem in path]) uri_path = urlparse.urlparse(self.uri).path path = "%s/%s" % (uri_path.rstrip("/"), pth) headers = {"Content-Length": str(len(data)), @@ -1546,7 +1584,7 @@ def run(self): this_batch, object_names = (object_names[:MAX_BULK_DELETE], object_names[MAX_BULK_DELETE:]) obj_paths = ("%s/%s" % (cname, nm) for nm in this_batch) - body = "\n".join(obj_paths) + body = _quote("\n".join(obj_paths)) pth = "%s/?bulk-delete=1" % parsed.path conn.request(method, pth, body, headers) resp = conn.getresponse() diff --git a/pyrax/client.py b/pyrax/client.py index e601a754..4cd33af9 100644 --- a/pyrax/client.py +++ b/pyrax/client.py @@ -1,3 +1,6 @@ +#!/usr/bin/env python +# -*- coding: utf-8 -*- + # Copyright 2010 Jacob Kaplan-Moss # Copyright 2011 OpenStack LLC. # Copyright 2011 Piston Cloud Computing, Inc. @@ -20,16 +23,19 @@ OpenStack Client interface. Handles the REST calls and responses. """ +from __future__ import absolute_import + import json import logging import requests import time import urllib -import urlparse +from six.moves.urllib import parse as urlparse import pyrax import pyrax.exceptions as exc +SAFE_QUOTE_CHARS = "/.?&=," class BaseClient(object): """ @@ -40,10 +46,11 @@ class BaseClient(object): # Each client subclass should set their own name. name = "base" - def __init__(self, region_name=None, endpoint_type="publicURL", + def __init__(self, identity, region_name=None, endpoint_type=None, management_url=None, service_name=None, timings=False, verify_ssl=True, http_log_debug=False, timeout=None): self.version = "v1.1" + self.identity = identity self.region_name = region_name self.endpoint_type = endpoint_type self.service_name = service_name @@ -114,7 +121,7 @@ def findall(self, **kwargs): def unauthenticate(self): """Clears all of our authentication information.""" - pyrax.identity.unauthenticate() + self.identity.unauthenticate() def get_timings(self): @@ -181,7 +188,7 @@ def _api_request(self, uri, method, **kwargs): the request after authenticating if the initial request returned and Unauthorized exception. """ - id_svc = pyrax.identity + id_svc = self.identity if not all((self.management_url, id_svc.token, id_svc.tenant_id)): id_svc.authenticate() @@ -196,11 +203,11 @@ def _api_request(self, uri, method, **kwargs): if pos < 2: # Don't escape the scheme or netloc continue - parsed[pos] = urllib.quote(parsed[pos], safe="/.?&=,") + parsed[pos] = urllib.quote(parsed[pos], safe=SAFE_QUOTE_CHARS) safe_uri = urlparse.urlunparse(parsed) else: safe_uri = "%s%s" % (self.management_url, - urllib.quote(uri, safe="/.?&=,")) + urllib.quote(uri, safe=SAFE_QUOTE_CHARS)) # Perform the request once. If we get a 401 back then it # might be because the auth token expired, so try to # re-authenticate and try again. If it still fails, bail. @@ -258,7 +265,7 @@ def authenticate(self): to modify this method. Please post your findings on GitHub so that others can benefit. """ - return pyrax.identity.authenticate() + return self.identity.authenticate() @property @@ -267,4 +274,4 @@ def projectid(self): The older parts of this code used 'projectid'; this wraps that reference. """ - return pyrax.identity.tenant_id + return self.identity.tenant_id diff --git a/pyrax/cloudblockstorage.py b/pyrax/cloudblockstorage.py index befeb612..acc18d77 100644 --- a/pyrax/cloudblockstorage.py +++ b/pyrax/cloudblockstorage.py @@ -27,6 +27,7 @@ import pyrax.exceptions as exc from pyrax.manager import BaseManager from pyrax.resource import BaseResource +import pyrax.utils as utils MIN_SIZE = 100 @@ -129,7 +130,9 @@ class CloudBlockStorageVolume(BaseResource): def __init__(self, *args, **kwargs): super(CloudBlockStorageVolume, self).__init__(*args, **kwargs) region = self.manager.api.region_name - self._nova_volumes = pyrax.connect_to_cloudservers(region).volumes + context = self.manager.api.identity + cs = pyrax.connect_to_cloudservers(region=region, context=context) + self._nova_volumes = cs.volumes def attach_to_instance(self, instance, mountpoint): @@ -286,6 +289,24 @@ def create(self, *args, **kwargs): raise + def update(self, volume, display_name=None, display_description=None): + """ + Update the specified values on the specified volume. You may specify + one or more values to update. + """ + uri = "/%s/%s" % (self.uri_base, utils.get_id(volume)) + param_dict = {} + if display_name: + param_dict["display_name"] = display_name + if display_description: + param_dict["display_description"] = display_description + if not param_dict: + # Nothing to do! + return + body = {"volume": param_dict} + resp, resp_body = self.api.method_put(uri, body=body) + + def list_snapshots(self): """ Pass-through method to allow the list_snapshots() call to be made @@ -354,6 +375,24 @@ def create(self, name, volume, description=None, force=False): return snap + def update(self, snapshot, display_name=None, display_description=None): + """ + Update the specified values on the specified snapshot. You may specify + one or more values to update. + """ + uri = "/%s/%s" % (self.uri_base, utils.get_id(snapshot)) + param_dict = {} + if display_name: + param_dict["display_name"] = display_name + if display_description: + param_dict["display_description"] = display_description + if not param_dict: + # Nothing to do! + return + body = {"snapshot": param_dict} + resp, resp_body = self.api.method_put(uri, body=body) + + class CloudBlockStorageClient(BaseClient): """ This is the primary class for interacting with Cloud Block Storage. @@ -404,6 +443,16 @@ def delete_volume(self, volume, force=False): return volume.delete(force=force) + @assure_volume + def update(self, volume, display_name=None, display_description=None): + """ + Update the specified values on the specified volume. You may specify + one or more values to update. + """ + return self._manager.update(volume, display_name=display_name, + display_description=display_description) + + @assure_volume def create_snapshot(self, volume, name=None, description=None, force=False): """ @@ -416,7 +465,25 @@ def create_snapshot(self, volume, name=None, description=None, force=False): description=description, force=force) + def get_snapshot(self, snapshot): + """ + Returns the snapshot with the specified snapshot ID value. + """ + return self._snapshot_manager.get(snapshot) + + @assure_snapshot def delete_snapshot(self, snapshot): """Deletes the snapshot.""" return snapshot.delete() + + + def update_snapshot(self, snapshot, display_name=None, + display_description=None): + """ + Update the specified values on the specified snapshot. You may specify + one or more values to update. + """ + return self._snapshot_manager.update(snapshot, + display_name=display_name, + display_description=display_description) diff --git a/pyrax/exceptions.py b/pyrax/exceptions.py index f9547dd0..58808e66 100644 --- a/pyrax/exceptions.py +++ b/pyrax/exceptions.py @@ -245,6 +245,15 @@ class NetworkNotFound(PyraxException): class NetworkLabelNotUnique(PyraxException): pass +class NoClientForService(PyraxException): + pass + +class NoEndpointForRegion(PyraxException): + pass + +class NoEndpointForService(PyraxException): + pass + class NoMoreResults(PyraxException): pass @@ -254,6 +263,9 @@ class NoReloadError(PyraxException): class NoSSLTerminationConfiguration(PyraxException): pass +class NoSuchClient(PyraxException): + pass + class NoSuchContainer(PyraxException): pass diff --git a/pyrax/fakes.py b/pyrax/fakes.py index b5b72313..89c77738 100644 --- a/pyrax/fakes.py +++ b/pyrax/fakes.py @@ -56,6 +56,9 @@ from pyrax.queueing import QueueManager import pyrax.exceptions as exc +from pyrax.base_identity import BaseIdentity +from pyrax.base_identity import Endpoint +from pyrax.base_identity import Service from pyrax.identity.rax_identity import RaxIdentity from pyrax.identity.keystone_identity import KeystoneIdentity import pyrax.utils as utils @@ -98,6 +101,10 @@ class FakeClient(object): user_agent = "Fake" USER_AGENT = "Fake" + def __init__(self, *args, **kwargs): + super(FakeClient, self).__init__(*args, **kwargs) + self.identity = FakeIdentity() + class FakeContainer(Container): def _fetch_cdn_data(self): @@ -165,7 +172,8 @@ def get_usage(self): class FakeCSClient(FakeService): def __init__(self, *args, **kwargs): - super(FakeCSClient, self).__init__(*args, **kwargs) + ident = FakeIdentity() + super(FakeCSClient, self).__init__(ident, *args, **kwargs) def dummy(self): pass @@ -202,21 +210,10 @@ def fake_run(self): self.completed = True -class FakeEntryPoint(object): - def __init__(self, name): - self.name = name - - def load(self): - def dummy(*args, **kwargs): - return self.name - return dummy - -fakeEntryPoints = [FakeEntryPoint("a"), FakeEntryPoint("b"), - FakeEntryPoint("c")] - - class FakeManager(object): - api = FakeClient() + def __init__(self, *args, **kwargs): + super(FakeManager, self).__init__(*args, **kwargs) + self.api = FakeClient() def list(self): pass @@ -241,25 +238,6 @@ class FakeException(BaseException): pass -class FakeServiceCatalog(object): - def __init__(self, *args, **kwargs): - pass - - def get_token(self): - return "fake_token" - - def url_for(self, attr=None, filter_value=None, - service_type=None, endpoint_type="publicURL", - service_name=None, volume_service_name=None): - if filter_value == "ALL": - raise exc.AmbiguousEndpoints - elif filter_value == "KEY": - raise KeyError - elif filter_value == "EP": - raise exc.EndpointNotFound - return "http://example.com" - - class FakeKeyring(object): password_set = False @@ -315,7 +293,8 @@ class FakeDatabaseClient(CloudDatabaseClient): def __init__(self, *args, **kwargs): self._manager = FakeDatabaseManager(self) self._flavor_manager = FakeManager() - super(FakeDatabaseClient, self).__init__("fakeuser", + ident = FakeIdentity() + super(FakeDatabaseClient, self).__init__(ident, "fakeuser", "fakepassword", *args, **kwargs) @@ -326,8 +305,9 @@ def __init__(self, *args, **kwargs): class FakeBlockStorageManager(CloudBlockStorageManager): def __init__(self, api=None, *args, **kwargs): + ident = FakeIdentity() if api is None: - api = FakeBlockStorageClient() + api = FakeBlockStorageClient(ident) super(FakeBlockStorageManager, self).__init__(api, *args, **kwargs) @@ -350,13 +330,15 @@ class FakeBlockStorageClient(CloudBlockStorageClient): def __init__(self, *args, **kwargs): self._types_manager = FakeManager() self._snapshot_manager = FakeManager() - super(FakeBlockStorageClient, self).__init__("fakeuser", + ident = FakeIdentity() + super(FakeBlockStorageClient, self).__init__(ident, "fakeuser", "fakepassword", *args, **kwargs) class FakeLoadBalancerClient(CloudLoadBalancerClient): def __init__(self, *args, **kwargs): - super(FakeLoadBalancerClient, self).__init__("fakeuser", + ident = FakeIdentity() + super(FakeLoadBalancerClient, self).__init__(ident, "fakeuser", "fakepassword", *args, **kwargs) @@ -409,7 +391,8 @@ def status(self): class FakeDNSClient(CloudDNSClient): def __init__(self, *args, **kwargs): - super(FakeDNSClient, self).__init__("fakeuser", + ident = FakeIdentity() + super(FakeDNSClient, self).__init__(ident, "fakeuser", "fakepassword", *args, **kwargs) @@ -447,7 +430,8 @@ def __init__(self, *args, **kwargs): class FakeCloudNetworkClient(CloudNetworkClient): def __init__(self, *args, **kwargs): - super(FakeCloudNetworkClient, self).__init__("fakeuser", + ident = FakeIdentity() + super(FakeCloudNetworkClient, self).__init__(ident, "fakeuser", "fakepassword", *args, **kwargs) @@ -463,8 +447,9 @@ def __init__(self, *args, **kwargs): class FakeAutoScaleClient(AutoScaleClient): def __init__(self, *args, **kwargs): + ident = FakeIdentity() self._manager = FakeManager() - super(FakeAutoScaleClient, self).__init__(*args, **kwargs) + super(FakeAutoScaleClient, self).__init__(ident, *args, **kwargs) class FakeAutoScalePolicy(AutoScalePolicy): @@ -500,7 +485,8 @@ def __init__(self, name=None, info=None, *args, **kwargs): class FakeCloudMonitorClient(CloudMonitorClient): def __init__(self, *args, **kwargs): - super(FakeCloudMonitorClient, self).__init__("fakeuser", + ident = FakeIdentity() + super(FakeCloudMonitorClient, self).__init__(ident, "fakeuser", "fakepassword", *args, **kwargs) @@ -547,20 +533,10 @@ def __init__(self, *args, **kwargs): **kwargs) -class FakeQueueMessage(QueueMessage): - def __init__(self, *args, **kwargs): - id_ = utils.random_unicode() - href = "http://example.com/%s" % id_ - info = kwargs.pop("info", {"href": href}) - info["name"] = utils.random_unicode() - mgr = kwargs.pop("manager", FakeQueueManager()) - super(FakeQueueMessage, self).__init__(manager=mgr, info=info, *args, - **kwargs) - - class FakeQueueClient(QueueClient): def __init__(self, *args, **kwargs): - super(FakeQueueClient, self).__init__("fakeuser", + ident = FakeIdentity() + super(FakeQueueClient, self).__init__(ident, "fakeuser", "fakepassword", *args, **kwargs) @@ -615,7 +591,23 @@ def __init__(self, api=None, *args, **kwargs): self.id = utils.random_ascii() -class FakeIdentity(RaxIdentity): +class FakeIdentityService(Service): + def __init__(self, *args, **kwargs): + self.identity = FakeIdentity() + self.name = "fake" + self.prefix = "" + self.service_type = "fake" + self.clients = {} + self.endpoints = utils.DotDict() + + +class FakeEndpoint(Endpoint): + pass + +class FakeRaxIdentity(RaxIdentity): + pass + +class FakeIdentity(BaseIdentity): """Class that returns canned authentication responses.""" def __init__(self, *args, **kwargs): super(FakeIdentity, self).__init__(*args, **kwargs) diff --git a/pyrax/identity/keystone_identity.py b/pyrax/identity/keystone_identity.py index a36b7013..323dcc40 100644 --- a/pyrax/identity/keystone_identity.py +++ b/pyrax/identity/keystone_identity.py @@ -1,12 +1,14 @@ #!/usr/bin/env python # -*- coding: utf-8 -*- +from __future__ import absolute_import + import pyrax -from pyrax.base_identity import BaseAuth -import pyrax.exceptions as exc +from ..base_identity import BaseIdentity +from .. import exceptions as exc -class KeystoneIdentity(BaseAuth): +class KeystoneIdentity(BaseIdentity): """ Implements the Keystone-specific behaviors for Identity. In most cases you will want to create specific subclasses to implement the diff --git a/pyrax/identity/rax_identity.py b/pyrax/identity/rax_identity.py index 0a622454..3fd7b629 100644 --- a/pyrax/identity/rax_identity.py +++ b/pyrax/identity/rax_identity.py @@ -1,17 +1,20 @@ #!/usr/bin/env python # -*- coding: utf-8 -*- -from six.moves import configparser +from __future__ import absolute_import -from pyrax.base_identity import BaseAuth -from pyrax.base_identity import User -import pyrax.exceptions as exc -import pyrax.utils as utils +from six.moves import configparser as ConfigParser + +import pyrax +from ..base_identity import BaseIdentity +from ..base_identity import User +from .. import exceptions as exc +from .. import utils as utils AUTH_ENDPOINT = "https://identity.api.rackspacecloud.com/v2.0/" -class RaxIdentity(BaseAuth): +class RaxIdentity(BaseIdentity): """ This class handles all of the authentication requirements for working with the Rackspace Cloud. @@ -31,12 +34,12 @@ def _read_credential_file(self, cfg): self.username = cfg.get("rackspace_cloud", "username") try: self.password = cfg.get("rackspace_cloud", "api_key", raw=True) - except configparser.NoOptionError as e: + except ConfigParser.NoOptionError as e: # Allow either the use of either 'api_key' or 'password'. self.password = cfg.get("rackspace_cloud", "password", raw=True) - def _get_credentials(self): + def _format_credentials(self): """ Returns the current credentials in the format expected by the authentication service. Note that by default Rackspace credentials @@ -47,23 +50,26 @@ def _get_credentials(self): if self._creds_style == "apikey": return {"auth": {"RAX-KSKEY:apiKeyCredentials": {"username": "%s" % self.username, - "apiKey": "%s" % self.password}}} + "apiKey": "%s" % self.api_key}}} else: # Return in the default password-style - return super(RaxIdentity, self)._get_credentials() + return super(RaxIdentity, self)._format_credentials() - def authenticate(self): + def authenticate(self, username=None, password=None, api_key=None, + tenant_id=None): """ If the user's credentials include an API key, the default behavior will work. But if they are using a password, the initial attempt will fail, so try again, but this time using the standard password format. """ try: - super(RaxIdentity, self).authenticate() + super(RaxIdentity, self).authenticate(username=username, + password=password, api_key=api_key, tenant_id=tenant_id) except exc.AuthenticationFailed: self._creds_style = "password" - super(RaxIdentity, self).authenticate() + super(RaxIdentity, self).authenticate(username=username, + password=password, api_key=api_key, tenant_id=tenant_id) def auth_with_token(self, token, tenant_id=None, tenant_name=None): @@ -80,16 +86,16 @@ def auth_with_token(self, token, tenant_id=None, tenant_name=None): # object_store endpoints. We can then add these to the initial # endpoints returned by the primary tenant ID, and then continue with # the auth process. - main_resp = self._call_token_auth(token, tenant_id, tenant_name) - main_body = main_resp.json() + main_resp, main_body = self._call_token_auth(token, tenant_id, + tenant_name) # Get the swift tenant ID roles = main_body["access"]["user"]["roles"] ostore = [role for role in roles if role["name"] == "object-store:default"] if ostore: ostore_tenant_id = ostore[0]["tenantId"] - ostore_resp = self._call_token_auth(token, ostore_tenant_id, None) - ostore_body = ostore_resp.json() + ostore_resp, ostore_body = self._call_token_auth(token, + ostore_tenant_id, None) ostore_cat = ostore_body["access"]["serviceCatalog"] main_cat = main_body["access"]["serviceCatalog"] main_cat.extend(ostore_cat) @@ -111,8 +117,15 @@ def find_user_by_name(self, name): Returns a User object by searching for the supplied user name. Returns None if there is no match for the given name. """ - uri = "users?name=%s" % name - return self._find_user(uri) + return self.get_user(username=name) + + + def find_user_by_email(self, email): + """ + Returns a User object by searching for the supplied user's email + address. Returns None if there is no match for the given ID. + """ + return self.get_user(email=email) def find_user_by_id(self, uid): @@ -120,17 +133,42 @@ def find_user_by_id(self, uid): Returns a User object by searching for the supplied user ID. Returns None if there is no match for the given ID. """ - uri = "users/%s" % uid - return self._find_user(uri) + return self.get_user(user_id=uid) - def _find_user(self, uri): - """Handles the 'find' code for both name and ID searches.""" + def get_user(self, user_id=None, username=None, email=None): + """ + Returns the user specified by either ID, username or email. + + Since more than user can have the same email address, searching by that + term will return a list of 1 or more User objects. Searching by + username or ID will return a single User. + + If a user_id that doesn't belong to the current account is searched + for, a Forbidden exception is raised. When searching by username or + email, a NotFound exception is raised if there is no matching user. + """ + if user_id: + uri = "/users/%s" % user_id + elif username: + uri = "/users?name=%s" % username + elif email: + uri = "/users?email=%s" % email + else: + raise ValueError("You must include one of 'user_id', " + "'username', or 'email' when calling get_user().") resp, resp_body = self.method_get(uri) - if resp.status_code in (403, 404): - return None - user_info = resp_body["user"] - return User(self, user_info) + if resp.status_code == 404: + raise exc.NotFound("No such user exists.") + users = resp_body.get("users", []) + if users: + return [User(self, user) for user in users] + else: + user = resp_body.get("user", {}) + if user: + return User(self, user) + else: + raise exc.NotFound("No such user exists.") def update_user(self, user, email=None, username=None, @@ -151,25 +189,25 @@ def update_user(self, user, email=None, username=None, upd["enabled"] = enabled data = {"user": upd} resp, resp_body = self.method_put(uri, data=data) + if resp.status_code in (401, 403, 404): + raise exc.AuthorizationFailure("You are not authorized to update " + "users.") return User(self, resp_body) - def list_credentials(self, user): - """ - Returns a user's non-password credentials. + def reset_api_key(self, user=None): """ - user_id = utils.get_id(user) - uri = "users/%s/OS-KSADM/credentials" % user_id - resp, resp_body = self.method_get(uri) - return resp_body.get("credentials") - + Resets the API key for the specified user, or if no user is specified, + for the current user. Returns the newly-created API key. - def get_user_credentials(self, user): + Resetting an API key does not invalidate any authenticated sessions, + nor does it revoke any tokens. """ - Returns a user's non-password credentials. - """ - user_id = utils.get_id(user) - base_uri = "users/%s/OS-KSADM/credentials/RAX-KSKEY:apiKeyCredentials" - uri = base_uri % user_id - resp, resp_body = self.method_get(uri) - return resp_body + if user is None: + user_id = utils.get_id(self) + else: + user_id = utils.get_id(user) + uri = "users/%s/OS-KSADM/credentials/" % user_id + uri += "RAX-KSKEY:apiKeyCredentials/RAX-AUTH/reset" + resp, resp_body = self.method_post(uri) + return resp_body.get("RAX-KSKEY:apiKeyCredentials", {}).get("apiKey") diff --git a/pyrax/utils.py b/pyrax/utils.py index 8c07d7d6..194cb054 100644 --- a/pyrax/utils.py +++ b/pyrax/utils.py @@ -111,6 +111,32 @@ def __exit__(self, type, value, traceback): shutil.rmtree(self.name) + +class DotDict(dict): + """ + Dictionary subclass that allows accessing keys via dot notation. + + If the key is not present, an AttributeError is raised. + """ + _att_mapper = {} + _fail = object() + + def __init__(self, *args, **kwargs): + super(DotDict, self).__init__(*args, **kwargs) + + def __getattr__(self, att): + att = self._att_mapper.get(att, att) + ret = self.get(att, self._fail) + if ret is self._fail: + raise AttributeError("'%s' object has no attribute '%s'" % + (self.__class__.__name__, att)) + return ret + + __setattr__ = dict.__setitem__ + __delattr__ = dict.__delitem__ + + + def get_checksum(content, encoding="utf8", block_size=8192): """ Returns the MD5 checksum in hex for the given content. If 'content' diff --git a/pyrax/version.py b/pyrax/version.py index 36d21841..b95d72d0 100644 --- a/pyrax/version.py +++ b/pyrax/version.py @@ -1,4 +1,4 @@ #!/usr/bin/env python # -*- coding: utf-8 -*- -version = "1.7.3" +version = "1.8.0" diff --git a/tests/unit/test_autoscale.py b/tests/unit/test_autoscale.py index f37620db..8c32ee86 100644 --- a/tests/unit/test_autoscale.py +++ b/tests/unit/test_autoscale.py @@ -26,7 +26,8 @@ def __init__(self, *args, **kwargs): super(AutoscaleTest, self).__init__(*args, **kwargs) def setUp(self): - self.scaling_group = fakes.FakeScalingGroup() + self.identity = fakes.FakeIdentity() + self.scaling_group = fakes.FakeScalingGroup(self.identity) def tearDown(self): pass diff --git a/tests/unit/test_cf_client.py b/tests/unit/test_cf_client.py index 6b1af5a8..df7ff295 100644 --- a/tests/unit/test_cf_client.py +++ b/tests/unit/test_cf_client.py @@ -1326,36 +1326,22 @@ class FakeResp(object): def test_converted_last_modified_times_head_and_list_match(self): head_last_modified_string = "Mon, 7 Apr 2014 17:34:25 UTC" list_last_modified_string = "2014-04-07T17:34:24.112333" - converted_head_datetime = _convert_head_object_last_modified_to_local( - head_last_modified_string) - - attdict = { - "last_modified": list_last_modified_string - } - + head_last_modified_string) + attdict = {"last_modified": list_last_modified_string} converted_list_attributes = _convert_list_last_modified_to_local( - attdict=attdict) - + attdict=attdict) converted_list_date = converted_list_attributes["last_modified"] - self.assertEqual(converted_head_datetime, converted_list_date) - def test_list_last_modified_times_does_not_round_up_for_zero_microseconds(self): + def test_list_last_mod_does_not_round_up_for_zero_microseconds(self): list_last_modified_string = "2014-04-07T17:34:24.000000" - - attdict = { - "last_modified": list_last_modified_string - } - + attdict = {"last_modified": list_last_modified_string} converted_list_attributes = _convert_list_last_modified_to_local( - attdict=attdict) - + attdict=attdict) converted_list_date = converted_list_attributes["last_modified"] - self.assertTrue(converted_list_date.endswith(":24")) - if __name__ == "__main__": unittest.main() diff --git a/tests/unit/test_client.py b/tests/unit/test_client.py index e5c36716..d7153e42 100644 --- a/tests/unit/test_client.py +++ b/tests/unit/test_client.py @@ -30,10 +30,10 @@ def __init__(self, *args, **kwargs): def setUp(self): save_conf = client.BaseClient._configure_manager client.BaseClient._configure_manager = Mock() - self.client = client.BaseClient() + self.identity = pyrax.identity = ID_CLS() + self.client = client.BaseClient(self.identity) client.BaseClient._configure_manager = save_conf self.client._manager = fakes.FakeManager() - self.id_svc = pyrax.identity = ID_CLS() def tearDown(self): self.client = None @@ -54,7 +54,7 @@ def test_base_client(self): save_conf = client.BaseClient._configure_manager client.BaseClient._configure_manager = Mock() - bc = client.BaseClient(region_name=region_name, + bc = client.BaseClient(identity=self.identity, region_name=region_name, endpoint_type=endpoint_type, management_url=management_url, service_name=service_name, timings=timings, http_log_debug=http_log_debug, timeout=timeout,) @@ -69,7 +69,7 @@ def test_base_client(self): client.BaseClient._configure_manager = save_conf def test_configure_manager(self): - self.assertRaises(NotImplementedError, client.BaseClient) + self.assertRaises(NotImplementedError, client.BaseClient, self.identity) def test_list(self): mgr = self.client._manager @@ -129,7 +129,7 @@ def test_findall(self): def test_unauthenticate(self): clt = self.client - id_svc = self.id_svc + id_svc = clt.identity clt.unauthenticate() self.assertEqual(id_svc.token, "") @@ -238,7 +238,7 @@ def test_time_request(self): def test_api_request_expired(self): clt = self.client - id_svc = self.id_svc + id_svc = clt.identity sav_auth = id_svc.authenticate returns = [exc.Unauthorized(""), (fakes.FakeIdentityResponse(), fakes.fake_identity_response)] @@ -265,7 +265,7 @@ def auth_resp(*args, **kwargs): def test_api_request_not_authed(self): clt = self.client - id_svc = self.id_svc + id_svc = clt.identity sav_auth = id_svc.authenticate id_svc.authenticate = Mock() sav_req = clt.request @@ -283,7 +283,7 @@ def test_api_request_not_authed(self): def test_api_request_auth_failed(self): clt = self.client - id_svc = self.id_svc + id_svc = clt.identity sav_auth = id_svc.authenticate id_svc.authenticate = Mock() sav_req = clt.request @@ -298,7 +298,7 @@ def test_api_request_auth_failed(self): def test_api_request_service_unavailable(self): clt = self.client - id_svc = self.id_svc + id_svc = clt.identity sav_auth = id_svc.authenticate id_svc.authenticate = Mock() sav_req = clt.request @@ -314,7 +314,7 @@ def test_api_request_service_unavailable(self): def test_api_request_url_quoting(self): clt = self.client - id_svc = self.id_svc + id_svc = clt.identity sav_mgt = clt.management_url clt.management_url = "/FAKE" sav_auth = id_svc.authenticate @@ -332,7 +332,7 @@ def test_api_request_url_quoting(self): def test_api_request_url_safe_quoting(self): clt = self.client - id_svc = self.id_svc + id_svc = clt.identity sav_mgt = clt.management_url clt.management_url = "/FAKE" sav_auth = id_svc.authenticate @@ -404,15 +404,16 @@ def test_method_patch(self): def test_authenticate(self): clt = self.client - sav_auth = pyrax.identity.authenticate - pyrax.identity.authenticate = Mock() + sav_auth = clt.identity.authenticate + clt.identity.authenticate = Mock() ret = clt.authenticate() - pyrax.identity.authenticate.assert_called_once_with() - pyrax.identity.authenticate = sav_auth + clt.identity.authenticate.assert_called_once_with() + clt.identity.authenticate = sav_auth def test_project_id(self): clt = self.client - self.id_svc.tenant_id = "FAKE" + id_svc = clt.identity + id_svc.tenant_id = "FAKE" self.assertEqual(clt.projectid, "FAKE") diff --git a/tests/unit/test_cloud_blockstorage.py b/tests/unit/test_cloud_blockstorage.py index 7398cb1f..51fce631 100644 --- a/tests/unit/test_cloud_blockstorage.py +++ b/tests/unit/test_cloud_blockstorage.py @@ -189,6 +189,27 @@ def test_create_snapshot_bad_request_other(self): name=name, description=desc, force=False) BaseManager.create = sav + def test_update_volume(self): + clt = self.client + vol = self.volume + mgr = clt._manager + mgr.api.method_put = Mock(return_value=(None, None)) + name = utils.random_unicode() + desc = utils.random_unicode() + exp_uri = "/%s/%s" % (mgr.uri_base, vol.id) + exp_body = {"volume": {"display_name": name, + "display_description": desc}} + mgr.update(vol, display_name=name, display_description=desc) + mgr.api.method_put.assert_called_once_with(exp_uri, body=exp_body) + + def test_update_volume_empty(self): + clt = self.client + vol = self.volume + mgr = clt._manager + mgr.api.method_put = Mock(return_value=(None, None)) + mgr.update(vol) + self.assertEqual(mgr.api.method_put.call_count, 0) + def test_list_types(self): clt = self.client clt._types_manager.list = Mock() @@ -469,6 +490,55 @@ def test_snapshot_description_property(self): snap.description = nm self.assertEqual(snap.description, snap.display_description) + def test_update_snapshot(self): + clt = self.client + snap = self.snapshot + mgr = clt._snapshot_manager + mgr.api.method_put = Mock(return_value=(None, None)) + name = utils.random_unicode() + desc = utils.random_unicode() + exp_uri = "/%s/%s" % (mgr.uri_base, snap.id) + exp_body = {"snapshot": {"display_name": name, + "display_description": desc}} + mgr.update(snap, display_name=name, display_description=desc) + mgr.api.method_put.assert_called_once_with(exp_uri, body=exp_body) + + def test_update_snapshot_empty(self): + clt = self.client + snap = self.snapshot + mgr = clt._snapshot_manager + mgr.api.method_put = Mock(return_value=(None, None)) + mgr.update(snap) + self.assertEqual(mgr.api.method_put.call_count, 0) + + def test_clt_update_volume(self): + clt = self.client + vol = self.volume + name = utils.random_unicode() + desc = utils.random_unicode() + clt._manager.update = Mock() + clt.update(vol, display_name=name, display_description=desc) + clt._manager.update.assert_called_once_with(vol, display_name=name, + display_description=desc) + + def test_clt_update_snapshot(self): + clt = self.client + snap = self.snapshot + name = utils.random_unicode() + desc = utils.random_unicode() + clt._snapshot_manager.update = Mock() + clt.update_snapshot(snap, display_name=name, display_description=desc) + clt._snapshot_manager.update.assert_called_once_with(snap, + display_name=name, display_description=desc) + + def test_get_snapshot(self): + clt = self.client + mgr = clt._snapshot_manager + mgr.get = Mock() + snap = utils.random_unicode() + clt.get_snapshot(snap) + mgr.get.assert_called_once_with(snap) + if __name__ == "__main__": unittest.main() diff --git a/tests/unit/test_identity.py b/tests/unit/test_identity.py index 987ecf3e..4ce356e9 100644 --- a/tests/unit/test_identity.py +++ b/tests/unit/test_identity.py @@ -10,8 +10,8 @@ import unittest import urllib2 -from mock import patch from mock import MagicMock as Mock +from mock import patch import pyrax import pyrax.utils as utils @@ -35,7 +35,7 @@ def __init__(self, *args, **kwargs): super(IdentityTest, self).__init__(*args, **kwargs) self.username = "TESTUSER" self.password = "TESTPASSWORD" - self.base_identity_class = pyrax.base_identity.BaseAuth + self.base_identity_class = base_identity.BaseIdentity self.keystone_identity_class = pyrax.keystone_identity.KeystoneIdentity self.rax_identity_class = pyrax.rax_identity.RaxIdentity self.id_classes = {"keystone": self.keystone_identity_class, @@ -45,11 +45,262 @@ def _get_clean_identity(self): return self.rax_identity_class() def setUp(self): - pass + self.identity = fakes.FakeIdentity() + self.service = fakes.FakeIdentityService() def tearDown(self): pass + def test_svc_repr(self): + svc = self.service + rep = svc.__repr__() + self.assertTrue(svc.service_type in rep) + + def test_svc_ep_for_region(self): + svc = self.service + region = utils.random_unicode().upper() + bad_region = utils.random_unicode().upper() + good_url = utils.random_unicode() + bad_url = utils.random_unicode() + good_ep = fakes.FakeEndpoint({"public_url": good_url}, svc.service_type, + region, self.identity) + bad_ep = fakes.FakeEndpoint({"public_url": bad_url}, svc.service_type, + bad_region, self.identity) + svc.endpoints = utils.DotDict({region: good_ep, bad_region: bad_ep}) + ep = svc._ep_for_region(region) + self.assertEqual(ep, good_ep) + + def test_svc_ep_for_region_all(self): + svc = self.service + region = "ALL" + good_url = utils.random_unicode() + bad_url = utils.random_unicode() + good_ep = fakes.FakeEndpoint({"public_url": good_url}, svc.service_type, + region, self.identity) + bad_ep = fakes.FakeEndpoint({"public_url": bad_url}, svc.service_type, + region, self.identity) + svc.endpoints = utils.DotDict({region: good_ep, "other": bad_ep}) + ep = svc._ep_for_region("notthere") + self.assertEqual(ep, good_ep) + + def test_svc_ep_for_region_not_found(self): + svc = self.service + region = utils.random_unicode().upper() + good_url = utils.random_unicode() + bad_url = utils.random_unicode() + good_ep = fakes.FakeEndpoint({"public_url": good_url}, svc.service_type, + region, self.identity) + bad_ep = fakes.FakeEndpoint({"public_url": bad_url}, svc.service_type, + region, self.identity) + svc.endpoints = utils.DotDict({region: good_ep, "other": bad_ep}) + ep = svc._ep_for_region("notthere") + self.assertIsNone(ep) + + def test_svc_get_client(self): + svc = self.service + clt = utils.random_unicode() + region = utils.random_unicode() + + class FakeEPForRegion(object): + client = clt + + svc._ep_for_region = Mock(return_value=FakeEPForRegion()) + ret = svc.get_client(region) + self.assertEqual(ret, clt) + + def test_svc_get_client_none(self): + svc = self.service + region = utils.random_unicode() + svc._ep_for_region = Mock(return_value=None) + self.assertRaises(exc.NoEndpointForRegion, svc.get_client, region) + + def test_svc_regions(self): + svc = self.service + key1 = utils.random_unicode() + val1 = utils.random_unicode() + key2 = utils.random_unicode() + val2 = utils.random_unicode() + svc.endpoints = {key1: val1, key2: val2} + regions = svc.regions + self.assertEqual(len(regions), 2) + self.assertTrue(key1 in regions) + self.assertTrue(key2 in regions) + + def test_ep_get_client_already_failed(self): + svc = self.service + ep_dict = {"publicURL": "http://example.com", "tenantId": "aa"} + rgn = utils.random_unicode().upper() + ep = fakes.FakeEndpoint(ep_dict, svc, rgn, self.identity) + ep._client = exc.NoClientForService() + self.assertRaises(exc.NoClientForService, ep._get_client) + + def test_ep_get_client_exists(self): + svc = self.service + ep_dict = {"publicURL": "http://example.com", "tenantId": "aa"} + rgn = utils.random_unicode().upper() + ep = fakes.FakeEndpoint(ep_dict, svc, rgn, self.identity) + clt = utils.random_unicode() + ep._client = clt + ret = ep._get_client() + self.assertEqual(ret, clt) + + def test_ep_get_client_none(self): + svc = self.service + ep_dict = {"publicURL": "http://example.com", "tenantId": "aa"} + rgn = utils.random_unicode().upper() + ep = fakes.FakeEndpoint(ep_dict, svc, rgn, self.identity) + sav = pyrax.client_class_for_service + pyrax.client_class_for_service = Mock(return_value=None) + self.assertRaises(exc.NoClientForService, ep._get_client) + pyrax.client_class_for_service = sav + + def test_ep_get_client_no_url(self): + svc = self.service + ep_dict = {"publicURL": "http://example.com", "tenantId": "aa"} + rgn = utils.random_unicode().upper() + ep = fakes.FakeEndpoint(ep_dict, svc, rgn, self.identity) + sav = pyrax.client_class_for_service + ep.public_url = None + pyrax.client_class_for_service = Mock(return_value=object) + self.assertRaises(exc.NoEndpointForService, ep._get_client) + pyrax.client_class_for_service = sav + + def test_ep_get_client(self): + svc = self.service + ep_dict = {"publicURL": "http://example.com", "tenantId": "aa"} + rgn = utils.random_unicode().upper() + ep = fakes.FakeEndpoint(ep_dict, svc, rgn, self.identity) + sav = pyrax.client_class_for_service + ep.public_url = utils.random_unicode() + pyrax.client_class_for_service = Mock(return_value=object) + fake = utils.random_unicode() + ep._create_client = Mock(return_value=fake) + ret = ep._get_client() + self.assertEqual(ret, fake) + self.assertEqual(ep._client, fake) + pyrax.client_class_for_service = sav + + def test_ep_get(self): + svc = self.service + pub = utils.random_unicode() + priv = utils.random_unicode() + ep_dict = {"publicURL": pub, "privateURL": priv, "tenantId": "aa"} + rgn = utils.random_unicode().upper() + ep = fakes.FakeEndpoint(ep_dict, svc, rgn, self.identity) + ret = ep.get("public") + self.assertEqual(ret, pub) + ret = ep.get("private") + self.assertEqual(ret, priv) + self.assertRaises(ValueError, ep.get, "invalid") + + def test_ep_getattr(self): + svc = self.service + pub = utils.random_unicode() + priv = utils.random_unicode() + ep_dict = {"publicURL": pub, "privateURL": priv, "tenantId": "aa"} + rgn = utils.random_unicode().upper() + ep = fakes.FakeEndpoint(ep_dict, svc, rgn, self.identity) + svc_att = "exists" + att_val = utils.random_unicode() + setattr(svc, svc_att, att_val) + ep._get_client = Mock(return_value=svc) + ret = ep.exists + self.assertEqual(ret, att_val) + self.assertRaises(AttributeError, getattr, ep, "bogus") + + def test_ep_client_prop(self): + svc = self.service + pub = utils.random_unicode() + priv = utils.random_unicode() + ep_dict = {"publicURL": pub, "privateURL": priv, "tenantId": "aa"} + rgn = utils.random_unicode().upper() + ep = fakes.FakeEndpoint(ep_dict, svc, rgn, self.identity) + clt = utils.random_unicode() + ep._get_client = Mock(return_value=clt) + ret = ep.client + self.assertEqual(ret, clt) + + def test_ep_client_private_prop(self): + svc = self.service + pub = utils.random_unicode() + priv = utils.random_unicode() + ep_dict = {"publicURL": pub, "privateURL": priv, "tenantId": "aa"} + rgn = utils.random_unicode().upper() + ep = fakes.FakeEndpoint(ep_dict, svc, rgn, self.identity) + clt = utils.random_unicode() + ep._get_client = Mock(return_value=clt) + ret = ep.client_private + self.assertEqual(ret, clt) + + def test_ep_create_client_obj_store(self): + svc = self.service + pub = utils.random_unicode() + priv = utils.random_unicode() + ep_dict = {"publicURL": pub, "privateURL": priv, "tenantId": "aa"} + rgn = utils.random_unicode().upper() + ep = fakes.FakeEndpoint(ep_dict, svc, rgn, self.identity) + vssl = random.choice((True, False)) + public = random.choice((True, False)) + sav_gs = pyrax.get_setting + pyrax.get_setting = Mock(return_value=vssl) + sav_conn = pyrax.connect_to_cloudfiles + fake_client = object() + pyrax.connect_to_cloudfiles = Mock(return_value=fake_client) + ep.service = "object_store" + ret = ep._create_client(None, None, public) + self.assertEqual(ret, fake_client) + pyrax.connect_to_cloudfiles.assert_called_once_with(region=ep.region, + public=public, context=ep.identity) + pyrax.connect_to_cloudfiles = sav_conn + pyrax.get_setting = sav_gs + + def test_ep_create_client_compute(self): + svc = self.service + pub = utils.random_unicode() + priv = utils.random_unicode() + ep_dict = {"publicURL": pub, "privateURL": priv, "tenantId": "aa"} + rgn = utils.random_unicode().upper() + ep = fakes.FakeEndpoint(ep_dict, svc, rgn, self.identity) + vssl = random.choice((True, False)) + public = random.choice((True, False)) + sav_gs = pyrax.get_setting + pyrax.get_setting = Mock(return_value=vssl) + sav_conn = pyrax.connect_to_cloudservers + fake_client = object() + pyrax.connect_to_cloudservers = Mock(return_value=fake_client) + ep.service = "compute" + ret = ep._create_client(None, None, public) + self.assertEqual(ret, fake_client) + pyrax.connect_to_cloudservers.assert_called_once_with(region=ep.region, + context=ep.identity) + pyrax.connect_to_cloudservers = sav_conn + pyrax.get_setting = sav_gs + + def test_ep_create_client_all_other(self): + svc = self.service + pub = utils.random_unicode() + priv = utils.random_unicode() + ep_dict = {"publicURL": pub, "privateURL": priv, "tenantId": "aa"} + rgn = utils.random_unicode().upper() + ep = fakes.FakeEndpoint(ep_dict, svc, rgn, self.identity) + vssl = random.choice((True, False)) + public = random.choice((True, False)) + url = utils.random_unicode() + sav_gs = pyrax.get_setting + pyrax.get_setting = Mock(return_value=vssl) + + class FakeClientClass(object): + def __init__(self, identity, region_name, management_url, + verify_ssl): + self.identity = identity + self.region_name = region_name + self.management_url = management_url + self.verify_ssl = verify_ssl + + ret = ep._create_client(FakeClientClass, url, public) + self.assertTrue(isinstance(ret, FakeClientClass)) + pyrax.get_setting = sav_gs + def test_init(self): for cls in self.id_classes.values(): ident = cls(username=self.username, password=self.password) @@ -94,6 +345,24 @@ def test_auth_with_token_id(self): self.assertEqual(ident.tenant_id, tenant_id) resp.content["access"]["token"]["tenant"]["id"] = sav + def test_auth_with_token_without_tenant_id(self): + for cls in self.id_classes.values(): + ident = cls() + tok = utils.random_unicode() + tenant_id = None + resp = fakes.FakeIdentityResponse() + # Need to stuff this into the standard response + sav = resp.content["access"]["token"]["tenant"]["id"] + resp.content["access"]["token"]["tenant"]["id"] = tenant_id + ident.method_post = Mock(return_value=(resp, resp.json())) + ident.auth_with_token(tok, tenant_id=tenant_id) + ident.method_post.assert_called_once_with("tokens", + headers={'Content-Type': 'application/json', 'Accept': + 'application/json'}, std_headers=False, data={'auth': + {'token': {'id': tok}}}) + self.assertEqual(ident.tenant_id, tenant_id) + resp.content["access"]["token"]["tenant"]["id"] = sav + def test_auth_with_token_id_auth_fail(self): for cls in self.id_classes.values(): ident = cls() @@ -118,12 +387,6 @@ def test_auth_with_token_id_auth_fail_general(self): self.assertRaises(exc.AuthenticationFailed, ident.auth_with_token, tok, tenant_id=tenant_id) - def test_auth_with_token_missing(self): - for cls in self.id_classes.values(): - ident = cls() - self.assertRaises(exc.MissingAuthSettings, ident.auth_with_token, - utils.random_unicode()) - def test_auth_with_token_rax(self): ident = self.rax_identity_class() mid = utils.random_unicode() @@ -137,15 +400,13 @@ def json(self): return self.info resp_main = FakeResp() - resp_main.info = {"access": { - "serviceCatalog": [{"a": "a", "name": "a", "type": "a"}], + resp_main_body = {"access": { + "serviceCatalog": [{"a": "a", "name": "a", "type": "a"}, + {"b": "b", "name": "b", "type": "b"}], "user": {"roles": [{"tenantId": oid, "name": "object-store:default"}], }}} - resp_obj = FakeResp() - resp_obj.info = {"access": { - "serviceCatalog": [{"b": "b", "name": "b", "type": "b"}]}} - ident._call_token_auth = Mock(side_effect=(resp_main, resp_obj)) + ident._call_token_auth = Mock(return_value=(resp_main, resp_main_body)) def fake_parse(dct): svcs = dct.get("access", {}).get("serviceCatalog", {}) @@ -157,7 +418,6 @@ def fake_parse(dct): self.assertTrue("a" in pyrax.services) self.assertTrue("b" in pyrax.services) - def test_set_credentials(self): for cls in self.id_classes.values(): ident = cls() @@ -231,11 +491,66 @@ def test_set_credential_file_keystone(self): self.assertEqual(ident.username, user) self.assertEqual(ident.password, password) + def test_keyring_auth_no_keyring(self): + ident = self.identity + sav = pyrax.base_identity.keyring + pyrax.base_identity.keyring = None + self.assertRaises(exc.KeyringModuleNotInstalled, ident.keyring_auth) + pyrax.base_identity.keyring = sav + + def test_keyring_auth_no_username(self): + ident = self.identity + sav = pyrax.get_setting + pyrax.get_setting = Mock(return_value=None) + self.assertRaises(exc.KeyringUsernameMissing, ident.keyring_auth) + pyrax.get_setting = sav + + def test_keyring_auth_no_password(self): + ident = self.identity + sav = pyrax.base_identity.keyring.get_password + pyrax.base_identity.keyring.get_password = Mock(return_value=None) + self.assertRaises(exc.KeyringPasswordNotFound, ident.keyring_auth, + "fake") + pyrax.base_identity.keyring.get_password = sav + + def test_keyring_auth_apikey(self): + ident = self.identity + ident.authenticate = Mock() + sav = pyrax.base_identity.keyring.get_password + pw = utils.random_unicode() + pyrax.base_identity.keyring.get_password = Mock(return_value=pw) + user = utils.random_unicode() + ident._creds_style = "apikey" + ident.keyring_auth(username=user) + ident.authenticate.assert_called_once_with(username=user, api_key=pw) + pyrax.base_identity.keyring.get_password = sav + + def test_keyring_auth_password(self): + ident = self.identity + ident.authenticate = Mock() + sav = pyrax.base_identity.keyring.get_password + pw = utils.random_unicode() + pyrax.base_identity.keyring.get_password = Mock(return_value=pw) + user = utils.random_unicode() + ident._creds_style = "password" + ident.keyring_auth(username=user) + ident.authenticate.assert_called_once_with(username=user, password=pw) + pyrax.base_identity.keyring.get_password = sav + + def test_get_extensions(self): + ident = self.identity + v1 = utils.random_unicode() + v2 = utils.random_unicode() + resp_body = {"extensions": {"values": [v1, v2]}} + ident.method_get = Mock(return_value=(None, resp_body)) + ret = ident.get_extensions() + self.assertEqual(ret, [v1, v2]) + def test_get_credentials_rax(self): ident = self.rax_identity_class(username=self.username, - password=self.password) + api_key=self.password) ident._creds_style = "apikey" - creds = ident._get_credentials() + creds = ident._format_credentials() user = creds["auth"]["RAX-KSKEY:apiKeyCredentials"]["username"] key = creds["auth"]["RAX-KSKEY:apiKeyCredentials"]["apiKey"] self.assertEqual(self.username, user) @@ -245,7 +560,7 @@ def test_get_credentials_rax_password(self): ident = self.rax_identity_class(username=self.username, password=self.password) ident._creds_style = "password" - creds = ident._get_credentials() + creds = ident._format_credentials() user = creds["auth"]["passwordCredentials"]["username"] key = creds["auth"]["passwordCredentials"]["password"] self.assertEqual(self.username, user) @@ -254,7 +569,7 @@ def test_get_credentials_rax_password(self): def test_get_credentials_keystone(self): ident = self.keystone_identity_class(username=self.username, password=self.password) - creds = ident._get_credentials() + creds = ident._format_credentials() user = creds["auth"]["passwordCredentials"]["username"] key = creds["auth"]["passwordCredentials"]["password"] self.assertEqual(self.username, user) @@ -288,16 +603,44 @@ def test_authenticate_fail_other(self): savrequest = pyrax.http.request fake_resp = fakes.FakeIdentityResponse() fake_resp.status_code = 500 - fake_body = fakes.fake_identity_response - fake_resp.json = Mock(return_value={u'unauthorized': { - u'message': u'Username or api key is invalid', u'code': 500}}) + fake_body = {u'unauthorized': { + u'message': u'Username or api key is invalid', u'code': 500}} pyrax.http.request = Mock(return_value=(fake_resp, fake_body)) self.assertRaises(exc.InternalServerError, ident.authenticate) pyrax.http.request = savrequest - def test_endpoint_defined(self): - ident = self.base_identity_class() - self.assertRaises(NotImplementedError, ident._get_auth_endpoint) + def test_authenticate_fail_no_message(self): + ident = self.rax_identity_class(username="BAD", password="BAD") + savrequest = pyrax.http.request + fake_resp = fakes.FakeIdentityResponse() + fake_resp.status_code = 500 + fake_body = {u'unauthorized': { + u'bogus': u'Username or api key is invalid', u'code': 500}} + pyrax.http.request = Mock(return_value=(fake_resp, fake_body)) + self.assertRaises(exc.InternalServerError, ident.authenticate) + pyrax.http.request = savrequest + + def test_authenticate_fail_gt_299(self): + ident = self.rax_identity_class(username="BAD", password="BAD") + savrequest = pyrax.http.request + fake_resp = fakes.FakeIdentityResponse() + fake_resp.status_code = 444 + fake_body = {u'unauthorized': { + u'message': u'Username or api key is invalid', u'code': 500}} + pyrax.http.request = Mock(return_value=(fake_resp, fake_body)) + self.assertRaises(exc.AuthenticationFailed, ident.authenticate) + pyrax.http.request = savrequest + + def test_authenticate_fail_gt_299ino_message(self): + ident = self.rax_identity_class(username="BAD", password="BAD") + savrequest = pyrax.http.request + fake_resp = fakes.FakeIdentityResponse() + fake_resp.status_code = 444 + fake_body = {u'unauthorized': { + u'bogus': u'Username or api key is invalid', u'code': 500}} + pyrax.http.request = Mock(return_value=(fake_resp, fake_body)) + self.assertRaises(exc.AuthenticationFailed, ident.authenticate) + pyrax.http.request = savrequest def test_rax_endpoints(self): ident = self.rax_identity_class() @@ -311,15 +654,82 @@ def test_auth_token(self): ident.token = test_token self.assertEqual(ident.auth_token, test_token) + def test_auth_endpoint(self): + for cls in self.id_classes.values(): + ident = cls() + test_ep = utils.random_unicode() + ident._get_auth_endpoint = Mock(return_value=test_ep) + self.assertEqual(ident.auth_endpoint, test_ep) + + def test_set_auth_endpoint(self): + for cls in self.id_classes.values(): + ident = cls() + test_ep = utils.random_unicode() + ident.auth_endpoint = test_ep + self.assertEqual(ident._auth_endpoint, test_ep) + def test_regions(self): ident = self.base_identity_class() fake_resp = fakes.FakeIdentityResponse() ident._parse_response(fake_resp.json()) expected = ("DFW", "ORD", "SYD", "FAKE") - self.assertEqual(len(pyrax.regions), len(expected)) + self.assertEqual(len(ident.regions), len(expected)) for rgn in expected: - self.assert_(rgn in pyrax.regions) + self.assertTrue(rgn in ident.regions) + def test_getattr_service(self): + ident = self.base_identity_class() + ident.authenticated = True + svc = self.service + pub = utils.random_unicode() + priv = utils.random_unicode() + ep_dict = {"publicURL": pub, "privateURL": priv, "tenantId": "aa"} + rgn = "FOO" + ep = fakes.FakeEndpoint(ep_dict, svc, rgn, self.identity) + self.service.endpoints = {rgn: ep} + ident.services = {"fake": self.service} + ret = ident.fake + self.assertEqual(ret, self.service.endpoints) + + def test_getattr_region(self): + ident = self.base_identity_class() + ident.authenticated = True + svc = self.service + pub = utils.random_unicode() + priv = utils.random_unicode() + ep_dict = {"publicURL": pub, "privateURL": priv, "tenantId": "aa"} + rgn = "FOO" + ep = fakes.FakeEndpoint(ep_dict, svc, rgn, self.identity) + self.service.endpoints = {rgn: ep} + ident.services = {"fake": self.service} + ret = ident.FOO + self.assertEqual(ret, {"fake": ep}) + + def test_getattr_fail(self): + ident = self.base_identity_class() + ident.authenticated = True + svc = self.service + pub = utils.random_unicode() + priv = utils.random_unicode() + ep_dict = {"publicURL": pub, "privateURL": priv, "tenantId": "aa"} + rgn = "FOO" + ep = fakes.FakeEndpoint(ep_dict, svc, rgn, self.identity) + self.service.endpoints = {rgn: ep} + ident.services = {"fake": self.service} + self.assertRaises(AttributeError, getattr, ident, "BAR") + + def test_getattr_not_authed(self): + ident = self.base_identity_class() + ident.authenticated = False + svc = self.service + pub = utils.random_unicode() + priv = utils.random_unicode() + ep_dict = {"publicURL": pub, "privateURL": priv, "tenantId": "aa"} + rgn = "FOO" + ep = fakes.FakeEndpoint(ep_dict, svc, rgn, self.identity) + self.service.endpoints = {rgn: ep} + ident.services = {"fake": self.service} + self.assertRaises(exc.NotAuthenticated, getattr, ident, "BAR") def test_http_methods(self): ident = self.base_identity_class() @@ -350,6 +760,10 @@ def test_http_methods(self): std_headers=std_headers) ident._call.assert_called_with("DELETE", uri, False, data, headers, std_headers) + ident.method_patch(uri, admin=False, data=data, headers=headers, + std_headers=std_headers) + ident._call.assert_called_with("PATCH", uri, False, data, + headers, std_headers) def test_call(self): ident = self.base_identity_class() @@ -410,101 +824,124 @@ def test_list_users(self): resp.response_type = "users" ident.method_get = Mock(return_value=(resp, resp.json())) ret = ident.list_users() - self.assert_(isinstance(ret, list)) + self.assertTrue(isinstance(ret, list)) + are_users = [isinstance(itm, pyrax.rax_identity.User) for itm in ret] + self.assertTrue(all(are_users)) + + def test_list_users_alt_body(self): + ident = self.rax_identity_class() + resp = fakes.FakeIdentityResponse() + resp.response_type = "users" + alt = fakes.fake_identity_user_response.get("users") + alt[0]["password"] = "foo" + ident.method_get = Mock(return_value=(resp, alt)) + ret = ident.list_users() + self.assertTrue(isinstance(ret, list)) are_users = [isinstance(itm, pyrax.rax_identity.User) for itm in ret] - self.assert_(all(are_users)) + self.assertTrue(all(are_users)) - def test_find_user(self): + def test_list_users_fail(self): ident = self.rax_identity_class() resp = fakes.FakeIdentityResponse() resp.response_type = "users" - ident._call = Mock(return_value=(resp, resp.json())) - fake_uri = utils.random_unicode() - ret = ident._find_user(fake_uri) - self.assert_(isinstance(ret, pyrax.rax_identity.User)) + resp.status_code = 401 + ident.method_get = Mock(return_value=(resp, resp.json())) + self.assertRaises(exc.AuthorizationFailure, ident.list_users) - def test_find_user_by_name(self): + def test_find_user_by_name_rax(self): ident = self.rax_identity_class() - ident._find_user = Mock() + ident.get_user = Mock() fake_name = utils.random_unicode() ret = ident.find_user_by_name(fake_name) - ident._find_user.assert_called_with("users?name=%s" % fake_name) + ident.get_user.assert_called_with(username=fake_name) + + def test_find_user_by_email_rax(self): + ident = self.rax_identity_class() + ident.get_user = Mock() + fake_email = utils.random_unicode() + ret = ident.find_user_by_email(fake_email) + ident.get_user.assert_called_with(email=fake_email) - def test_find_user_by_id(self): + def test_find_user_by_id_rax(self): ident = self.rax_identity_class() - ident._find_user = Mock() + ident.get_user = Mock() fake_id = utils.random_unicode() ret = ident.find_user_by_id(fake_id) - ident._find_user.assert_called_with("users/%s" % fake_id) + ident.get_user.assert_called_with(user_id=fake_id) - def test_create_user(self): + def test_find_user_fail_rax(self): ident = self.rax_identity_class() resp = fakes.FakeIdentityResponse() resp.response_type = "users" - ident.method_post = Mock(return_value=(resp, resp.json())) - fake_name = utils.random_unicode() - fake_email = utils.random_unicode() - fake_password = utils.random_unicode() - ident.create_user(fake_name, fake_email, fake_password) - cargs = ident.method_post.call_args - self.assertEqual(len(cargs), 2) - self.assertEqual(cargs[0], ("users", )) - data = cargs[1]["data"]["user"] - self.assertEqual(data["username"], fake_name) - self.assert_(fake_password in data.values()) - - def test_update_user(self): + resp.status_code = 404 + ident.method_get = Mock(return_value=(resp, resp.json())) + fake_user = utils.random_unicode() + self.assertRaises(exc.NotFound, ident.get_user, username=fake_user) + + def test_find_user_fail_base(self): + ident = self.identity + fake = utils.random_unicode() + self.assertRaises(NotImplementedError, ident.find_user_by_name, fake) + self.assertRaises(NotImplementedError, ident.find_user_by_email, fake) + self.assertRaises(NotImplementedError, ident.find_user_by_id, fake) + self.assertRaises(NotImplementedError, ident.get_user, fake) + + def test_get_user_by_id(self): ident = self.rax_identity_class() resp = fakes.FakeIdentityResponse() resp.response_type = "users" - ident.method_put = Mock(return_value=(resp, resp.json())) - fake_name = utils.random_unicode() - fake_email = utils.random_unicode() - fake_username = utils.random_unicode() - fake_uid = utils.random_unicode() - fake_region = utils.random_unicode() - fake_enabled = random.choice((True, False)) - ident.update_user(fake_name, email=fake_email, username=fake_username, - uid=fake_uid, defaultRegion=fake_region, enabled=fake_enabled) - cargs = ident.method_put.call_args - self.assertEqual(len(cargs), 2) - self.assertEqual(cargs[0], ("users/%s" % fake_name, )) - data = cargs[1]["data"]["user"] - self.assertEqual(data["enabled"], fake_enabled) - self.assertEqual(data["username"], fake_username) - self.assert_(fake_email in data.values()) - self.assert_(fake_region in data.values()) - - - def test_find_user_by_name(self): + resp_body = resp.json().copy() + del resp_body["users"] + fake = utils.random_unicode() + ident.method_get = Mock(return_value=(resp, resp_body)) + ret = ident.get_user(user_id=fake) + self.assertTrue(isinstance(ret, base_identity.User)) + + def test_get_user_by_username(self): ident = self.rax_identity_class() - ident._find_user = Mock() - fake_name = utils.random_unicode() - ret = ident.find_user_by_name(fake_name) - ident._find_user.assert_called_with("users?name=%s" % fake_name) - - def test_find_user_by_id(self): + resp = fakes.FakeIdentityResponse() + resp.response_type = "users" + resp_body = resp.json().copy() + del resp_body["users"] + fake = utils.random_unicode() + ident.method_get = Mock(return_value=(resp, resp_body)) + ret = ident.get_user(username=fake) + self.assertTrue(isinstance(ret, base_identity.User)) + + def test_get_user_by_email(self): ident = self.rax_identity_class() - ident._find_user = Mock() - fake_id = utils.random_unicode() - ret = ident.find_user_by_id(fake_id) - ident._find_user.assert_called_with("users/%s" % fake_id) + resp = fakes.FakeIdentityResponse() + resp.response_type = "users" + resp_body = resp.json() + fake = utils.random_unicode() + ident.method_get = Mock(return_value=(resp, resp_body)) + ret = ident.get_user(email=fake) + self.assertTrue(isinstance(ret[0], base_identity.User)) - def test_find_user_fail(self): + def test_get_user_missing_params(self): ident = self.rax_identity_class() resp = fakes.FakeIdentityResponse() resp.response_type = "users" - resp.status_code = 404 ident.method_get = Mock(return_value=(resp, resp.json())) - fake_uri = utils.random_unicode() - ret = ident._find_user(fake_uri) - self.assertIsNone(ret) + self.assertRaises(ValueError, ident.get_user) + + def test_get_user_not_found(self): + ident = self.rax_identity_class() + resp = fakes.FakeIdentityResponse() + resp.response_type = "users" + resp_body = resp.json().copy() + del resp_body["users"] + del resp_body["user"] + fake = utils.random_unicode() + ident.method_get = Mock(return_value=(resp, resp_body)) + self.assertRaises(exc.NotFound, ident.get_user, username=fake) def test_create_user(self): for cls in self.id_classes.values(): ident = cls() resp = fakes.FakeIdentityResponse() resp.response_type = "users" + resp.status_code = 201 ident.method_post = Mock(return_value=(resp, resp.json())) fake_name = utils.random_unicode() fake_email = utils.random_unicode() @@ -515,7 +952,7 @@ def test_create_user(self): self.assertEqual(cargs[0], ("users", )) data = cargs[1]["data"]["user"] self.assertEqual(data["username"], fake_name) - self.assert_(fake_password in data.values()) + self.assertTrue(fake_password in data.values()) def test_create_user_not_authorized(self): for cls in self.id_classes.values(): @@ -530,6 +967,19 @@ def test_create_user_not_authorized(self): self.assertRaises(exc.AuthorizationFailure, ident.create_user, fake_name, fake_email, fake_password) + def test_create_user_duplicate(self): + for cls in self.id_classes.values(): + ident = cls() + resp = fakes.FakeIdentityResponse() + resp.response_type = "users" + resp.status_code = 409 + ident.method_post = Mock(return_value=(resp, resp.json())) + fake_name = utils.random_unicode() + fake_email = utils.random_unicode() + fake_password = utils.random_unicode() + self.assertRaises(exc.DuplicateUser, ident.create_user, + fake_name, fake_email, fake_password) + def test_create_user_bad_email(self): for cls in self.id_classes.values(): ident = cls() @@ -558,6 +1008,20 @@ def test_create_user_not_found(self): self.assertRaises(exc.AuthorizationFailure, ident.create_user, fake_name, fake_email, fake_password) + def test_create_user_other(self): + for cls in self.id_classes.values(): + ident = cls() + resp = fakes.FakeIdentityResponse() + resp.response_type = "users" + resp.status_code = 400 + resp_body = {"badRequest": {"message": "fake"}} + ident.method_post = Mock(return_value=(resp, resp_body)) + fake_name = utils.random_unicode() + fake_email = utils.random_unicode() + fake_password = utils.random_unicode() + self.assertRaises(exc.BadRequest, ident.create_user, + fake_name, fake_email, fake_password) + def test_update_user(self): for cls in self.id_classes.values(): ident = cls() @@ -581,9 +1045,29 @@ def test_update_user(self): data = cargs[1]["data"]["user"] self.assertEqual(data["enabled"], fake_enabled) self.assertEqual(data["username"], fake_username) - self.assert_(fake_email in data.values()) + self.assertTrue(fake_email in data.values()) if isinstance(ident, self.rax_identity_class): - self.assert_(fake_region in data.values()) + self.assertTrue(fake_region in data.values()) + + def test_update_user_fail(self): + for cls in self.id_classes.values(): + ident = cls() + resp = fakes.FakeIdentityResponse() + resp.response_type = "users" + resp.status_code = 401 + ident.method_put = Mock(return_value=(resp, resp.json())) + fake_name = utils.random_unicode() + fake_email = utils.random_unicode() + fake_username = utils.random_unicode() + fake_uid = utils.random_unicode() + fake_region = utils.random_unicode() + fake_enabled = random.choice((True, False)) + kwargs = {"email": fake_email, "username": fake_username, + "uid": fake_uid, "enabled": fake_enabled} + if isinstance(ident, self.rax_identity_class): + kwargs["defaultRegion"] = fake_region + self.assertRaises(exc.AuthorizationFailure, ident.update_user, + fake_name, **kwargs) def test_delete_user(self): for cls in self.id_classes.values(): @@ -597,7 +1081,7 @@ def test_delete_user(self): self.assertEqual(len(cargs), 2) self.assertEqual(cargs[0], ("users/%s" % fake_name, )) - def test_delete_user_fail(self): + def test_delete_user_not_found(self): for cls in self.id_classes.values(): ident = cls() resp = fakes.FakeIdentityResponse() @@ -607,6 +1091,17 @@ def test_delete_user_fail(self): fake_name = utils.random_unicode() self.assertRaises(exc.UserNotFound, ident.delete_user, fake_name) + def test_delete_user_fail(self): + for cls in self.id_classes.values(): + ident = cls() + resp = fakes.FakeIdentityResponse() + resp.response_type = "users" + resp.status_code = 401 + ident.method_delete = Mock(return_value=(resp, resp.json())) + fake_name = utils.random_unicode() + self.assertRaises(exc.AuthorizationFailure, ident.delete_user, + fake_name) + def test_list_roles_for_user(self): for cls in self.id_classes.values(): ident = cls() @@ -621,6 +1116,16 @@ def test_list_roles_for_user(self): self.assertTrue("name" in role) self.assertTrue("id" in role) + def test_list_roles_for_user_fail(self): + for cls in self.id_classes.values(): + ident = cls() + resp = fakes.FakeIdentityResponse() + resp.response_type = "users" + resp.status_code = 401 + ident.method_get = Mock(return_value=(resp, resp.json())) + self.assertRaises(exc.AuthorizationFailure, + ident.list_roles_for_user, "fake") + def test_list_credentials(self): ident = self.rax_identity_class() resp = fakes.FakeIdentityResponse() @@ -631,18 +1136,21 @@ def test_list_credentials(self): ident.list_credentials(fake_name) cargs = ident.method_get.call_args called_uri = cargs[0][0] - self.assert_("/credentials" in called_uri) - self.assert_("users/%s/" % fake_name in called_uri) + self.assertTrue("/credentials" in called_uri) + self.assertTrue("users/%s/" % fake_name in called_uri) - def test_get_user_credentials(self): - ident = self.rax_identity_class() - ident.method_get = Mock(return_value=(None, None)) - fake_name = utils.random_unicode() - ident.get_user_credentials(fake_name) + def test_list_credentials_no_user(self): + ident = self.identity + ident.user = fakes.FakeEntity() + resp = fakes.FakeIdentityResponse() + resp.response_type = "users" + resp.status_code = 200 + ident.method_get = Mock(return_value=(resp, resp.json())) + ident.list_credentials() cargs = ident.method_get.call_args called_uri = cargs[0][0] - self.assert_("/credentials" in called_uri) - self.assert_("users/%s/" % fake_name in called_uri) + self.assertTrue("/credentials" in called_uri) + self.assertTrue("users/%s/" % ident.user.id in called_uri) def test_get_keystone_endpoint(self): ident = self.keystone_identity_class() @@ -691,7 +1199,7 @@ def test_has_valid_token(self): utils.add_method(ident, lambda self: "", "_get_auth_endpoint") ident.authenticate() valid = ident._has_valid_token() - self.assert_(valid) + self.assertTrue(valid) ident.expires = datetime.datetime.now() - datetime.timedelta(1) valid = ident._has_valid_token() self.assertFalse(valid) @@ -709,7 +1217,7 @@ def test_list_token(self): tokens = ident.list_tokens() ident.method_get.assert_called_with("tokens/%s" % ident.token, admin=True) - self.assert_("token" in tokens) + self.assertTrue("token" in tokens) def test_list_token_fail(self): for cls in self.id_classes.values(): @@ -729,7 +1237,7 @@ def test_check_token(self): valid = ident.check_token() ident.method_head.assert_called_with("tokens/%s" % ident.token, admin=True) - self.assert_(valid) + self.assertTrue(valid) def test_check_token_fail_auth(self): for cls in self.id_classes.values(): @@ -752,6 +1260,29 @@ def test_check_token_fail_valid(self): admin=True) self.assertFalse(valid) + def test_revoke_token(self): + for cls in self.id_classes.values(): + ident = cls() + resp = fakes.FakeIdentityResponse() + resp.response_type = "tokens" + token = ident.token = utils.random_unicode() + ident.method_delete = Mock(return_value=(resp, resp.json())) + valid = ident.revoke_token(token) + ident.method_delete.assert_called_with("tokens/%s" % ident.token, + admin=True) + self.assertTrue(valid) + + def test_revoke_token_fail(self): + for cls in self.id_classes.values(): + ident = cls() + resp = fakes.FakeIdentityResponse() + resp.response_type = "tokens" + resp.status_code = 401 + token = ident.token = utils.random_unicode() + ident.method_delete = Mock(return_value=(resp, resp.json())) + self.assertRaises(exc.AuthorizationFailure, ident.revoke_token, + token) + def test_get_token_endpoints(self): for cls in self.id_classes.values(): ident = cls() @@ -759,10 +1290,57 @@ def test_get_token_endpoints(self): resp.response_type = "endpoints" ident.method_get = Mock(return_value=(resp, resp.json())) eps = ident.get_token_endpoints() - self.assert_(isinstance(eps, list)) + self.assertTrue(isinstance(eps, list)) ident.method_get.assert_called_with("tokens/%s/endpoints" % ident.token, admin=True) + def test_get_token_endpoints_fail(self): + for cls in self.id_classes.values(): + ident = cls() + resp = fakes.FakeIdentityResponse() + resp.response_type = "endpoints" + resp.status_code = 401 + ident.method_get = Mock(return_value=(resp, resp.json())) + self.assertRaises(exc.AuthorizationFailure, + ident.get_token_endpoints) + + def test_reset_api_key(self): + ident = self.identity + self.assertRaises(NotImplementedError, ident.reset_api_key) + + def test_reset_api_key_rax(self): + ident = self.rax_identity_class() + user = utils.random_unicode() + nm = utils.random_unicode() + key = utils.random_unicode() + resp = fakes.FakeResponse() + resp_body = {"RAX-KSKEY:apiKeyCredentials": { + "username": nm, "apiKey": key}} + ident.method_post = Mock(return_value=(resp, resp_body)) + exp_uri = "users/%s/OS-KSADM/credentials/" % user + exp_uri += "RAX-KSKEY:apiKeyCredentials/RAX-AUTH/reset" + ret = ident.reset_api_key(user) + self.assertEqual(ret, key) + ident.method_post.assert_called_once_with(exp_uri) + + @patch("pyrax.utils.get_id") + def test_reset_api_key_rax_no_user(self, mock_get_id): + ident = self.rax_identity_class() + user = utils.random_unicode() + mock_get_id.return_value = user + ident.authenticated = True + nm = utils.random_unicode() + key = utils.random_unicode() + resp = fakes.FakeResponse() + resp_body = {"RAX-KSKEY:apiKeyCredentials": { + "username": nm, "apiKey": key}} + ident.method_post = Mock(return_value=(resp, resp_body)) + exp_uri = "users/%s/OS-KSADM/credentials/" % user + exp_uri += "RAX-KSKEY:apiKeyCredentials/RAX-AUTH/reset" + ret = ident.reset_api_key() + self.assertEqual(ret, key) + ident.method_post.assert_called_once_with(exp_uri) + def test_get_tenant(self): for cls in self.id_classes.values(): ident = cls() @@ -770,7 +1348,16 @@ def test_get_tenant(self): resp.response_type = "tenants" ident.method_get = Mock(return_value=(resp, resp.json())) tenant = ident.get_tenant() - self.assert_(isinstance(tenant, base_identity.Tenant)) + self.assertTrue(isinstance(tenant, base_identity.Tenant)) + + def test_get_tenant_none(self): + for cls in self.id_classes.values(): + ident = cls() + resp = fakes.FakeIdentityResponse() + resp.response_type = "tenants" + ident._list_tenants = Mock(return_value=[]) + tenant = ident.get_tenant() + self.assertIsNone(tenant) def test_list_tenants(self): for cls in self.id_classes.values(): @@ -779,10 +1366,10 @@ def test_list_tenants(self): resp.response_type = "tenants" ident.method_get = Mock(return_value=(resp, resp.json())) tenants = ident.list_tenants() - self.assert_(isinstance(tenants, list)) + self.assertTrue(isinstance(tenants, list)) are_tenants = [isinstance(itm, base_identity.Tenant) for itm in tenants] - self.assert_(all(are_tenants)) + self.assertTrue(all(are_tenants)) def test_list_tenants_auth_fail(self): for cls in self.id_classes.values(): @@ -811,7 +1398,7 @@ def test_create_tenant(self): fake_name = utils.random_unicode() fake_desc = utils.random_unicode() tenant = ident.create_tenant(fake_name, description=fake_desc) - self.assert_(isinstance(tenant, base_identity.Tenant)) + self.assertTrue(isinstance(tenant, base_identity.Tenant)) cargs = ident.method_post.call_args self.assertEqual(len(cargs), 2) self.assertEqual(cargs[0], ("tenants", )) @@ -830,7 +1417,7 @@ def test_update_tenant(self): fake_desc = utils.random_unicode() tenant = ident.update_tenant(fake_id, name=fake_name, description=fake_desc) - self.assert_(isinstance(tenant, base_identity.Tenant)) + self.assertTrue(isinstance(tenant, base_identity.Tenant)) cargs = ident.method_put.call_args self.assertEqual(len(cargs), 2) self.assertEqual(cargs[0], ("tenants/%s" % fake_id, )) @@ -858,6 +1445,57 @@ def test_delete_tenantfail(self): fake_id = utils.random_unicode() self.assertRaises(exc.TenantNotFound, ident.delete_tenant, fake_id) + def test_list_roles(self): + ident = self.identity + nm = utils.random_unicode() + id_ = utils.random_unicode() + svcid = utils.random_unicode() + limit = utils.random_unicode() + marker = utils.random_unicode() + resp = fakes.FakeResponse() + resp_body = {"roles": [{"name": nm, "id": id_}]} + ident.method_get = Mock(return_value=(resp, resp_body)) + exp_uri = "OS-KSADM/roles?serviceId=%s&limit=%s&marker=%s" % (svcid, + limit, marker) + ret = ident.list_roles(service_id=svcid, limit=limit, marker=marker) + ident.method_get.assert_called_once_with(exp_uri) + self.assertEqual(len(ret), 1) + role = ret[0] + self.assertTrue(isinstance(role, base_identity.Role)) + + def test_get_role(self): + ident = self.identity + role = utils.random_unicode() + nm = utils.random_unicode() + id_ = utils.random_unicode() + resp = fakes.FakeResponse() + resp_body = {"role": {"name": nm, "id": id_}} + ident.method_get = Mock(return_value=(resp, resp_body)) + exp_uri = "OS-KSADM/roles/%s" % role + ret = ident.get_role(role) + ident.method_get.assert_called_once_with(exp_uri) + self.assertTrue(isinstance(ret, base_identity.Role)) + self.assertEqual(ret.name, nm) + self.assertEqual(ret.id, id_) + + def test_add_role_to_user(self): + ident = self.identity + role = utils.random_unicode() + user = utils.random_unicode() + ident.method_put = Mock(return_value=(None, None)) + exp_uri = "users/%s/roles/OS-KSADM/%s" % (user, role) + ident.add_role_to_user(role, user) + ident.method_put.assert_called_once_with(exp_uri) + + def test_delete_role_from_user(self): + ident = self.identity + role = utils.random_unicode() + user = utils.random_unicode() + ident.method_delete = Mock(return_value=(None, None)) + exp_uri = "users/%s/roles/OS-KSADM/%s" % (user, role) + ident.delete_role_from_user(role, user) + ident.method_delete.assert_called_once_with(exp_uri) + def test_parse_api_time_us(self): test_date = "2012-01-02T05:20:30.000-05:00" expected = datetime.datetime(2012, 1, 2, 10, 20, 30) diff --git a/tests/unit/test_manager.py b/tests/unit/test_manager.py index 481fb881..c5eb79da 100644 --- a/tests/unit/test_manager.py +++ b/tests/unit/test_manager.py @@ -29,16 +29,23 @@ def tearDown(self): def test_list(self): mgr = self.manager - sav = mgr._list mgr._list = Mock() mgr.uri_base = "test" mgr.list() mgr._list.assert_called_once_with("/test", return_raw=False) - mgr._list = sav + + def test_under_list_return_raw(self): + mgr = self.manager + uri = utils.random_unicode() + resp = utils.random_unicode() + resp_body = utils.random_unicode() + mgr.api.method_get = Mock(return_value=(resp, resp_body)) + ret = mgr._list(uri, return_raw=True) + mgr.api.method_get.assert_called_once_with(uri) + self.assertEqual(ret, (resp, resp_body)) def test_list_paged(self): mgr = self.manager - sav = mgr._list mgr._list = Mock() mgr.uri_base = "test" fake_limit = random.randint(10, 20) @@ -46,11 +53,9 @@ def test_list_paged(self): mgr.list(limit=fake_limit, marker=fake_marker) expected_uri = "/test?limit=%s&marker=%s" % (fake_limit, fake_marker) mgr._list.assert_called_once_with(expected_uri, return_raw=False) - mgr._list = sav def test_head(self): mgr = self.manager - sav = mgr._head mgr._head = Mock() mgr.uri_base = "test" x = fakes.FakeException() @@ -58,11 +63,19 @@ def test_head(self): mgr.head(x) expected = "/%s/%s" % ("test", x.id) mgr._head.assert_called_once_with(expected) - mgr._head = sav + + def test_under_head(self): + mgr = self.manager + uri = utils.random_unicode() + resp = utils.random_unicode() + resp_body = utils.random_unicode() + mgr.api.method_head = Mock(return_value=(resp, resp_body)) + ret = mgr._head(uri) + mgr.api.method_head.assert_called_once_with(uri) + self.assertEqual(ret, resp) def test_get(self): mgr = self.manager - sav = mgr._get mgr._get = Mock() mgr.uri_base = "test" x = fakes.FakeException() @@ -70,7 +83,6 @@ def test_get(self): mgr.get(x) expected = "/%s/%s" % ("test", x.id) mgr._get.assert_called_once_with(expected) - mgr._get = sav def test_api_get(self): mgr = self.manager @@ -82,7 +94,6 @@ def test_api_get(self): def test_create(self): mgr = self.manager - sav = mgr._create mgr._create = Mock() mgr.uri_base = "test" mgr._create_body = Mock(return_value="body") @@ -90,11 +101,9 @@ def test_create(self): mgr.create(nm) mgr._create.assert_called_once_with("/test", "body", return_none=False, return_raw=False, return_response=False) - mgr._create = sav def test_delete(self): mgr = self.manager - sav = mgr._delete mgr._delete = Mock() mgr.uri_base = "test" x = fakes.FakeException() @@ -102,7 +111,6 @@ def test_delete(self): mgr.delete(x) expected = "/%s/%s" % ("test", x.id) mgr._delete.assert_called_once_with(expected) - mgr._delete = sav def test_under_list_post(self): mgr = self.manager @@ -132,7 +140,6 @@ def test_under_list_get(self): def test_under_create_return_none(self): mgr = self.manager - sav_rh = mgr.run_hooks mgr.run_hooks = Mock() mgr.api.method_post = Mock() resp = fakes.FakeResponse() @@ -141,11 +148,9 @@ def test_under_create_return_none(self): ret = mgr._create(fake_url, "", return_none=True, return_raw=False) self.assertIsNone(ret) mgr.api.method_post.assert_called_once_with(fake_url, body="") - mgr.run_hooks = sav_rh def test_under_create_return_raw(self): mgr = self.manager - sav_rh = mgr.run_hooks mgr.run_hooks = Mock() mgr.api.method_post = Mock() resp = object() @@ -155,11 +160,9 @@ def test_under_create_return_raw(self): ret = mgr._create(fake_url, "", return_none=False, return_raw=True) self.assertEqual(ret, body["fakes"]) mgr.api.method_post.assert_called_once_with(fake_url, body="") - mgr.run_hooks = sav_rh def test_under_create_return_resource(self): mgr = self.manager - sav_rh = mgr.run_hooks mgr.run_hooks = Mock() mgr.api.method_post = Mock() resp = fakes.FakeResponse() @@ -170,7 +173,6 @@ def test_under_create_return_resource(self): ret = mgr._create(fake_url, "", return_none=False, return_raw=False) self.assertTrue(isinstance(ret, fakes.FakeEntity)) mgr.api.method_post.assert_called_once_with(fake_url, body="") - mgr.run_hooks = sav_rh def test_under_delete(self): mgr = self.manager @@ -180,7 +182,6 @@ def test_under_delete(self): def test_under_update(self): mgr = self.manager - sav_rh = mgr.run_hooks mgr.run_hooks = Mock() mgr.api.method_put = Mock() resp = fakes.FakeResponse() @@ -191,7 +192,6 @@ def test_under_update(self): ret = mgr._update(fake_url, "") mgr.api.method_put.assert_called_once_with(fake_url, body="") self.assertEqual(ret, body) - mgr.run_hooks = sav_rh def test_action(self): mgr = self.manager @@ -204,30 +204,24 @@ def test_action(self): def test_find_no_match(self): mgr = self.manager - sav_fa = mgr.findall mgr.findall = Mock(return_value=[]) mgr.resource_class = fakes.FakeEntity self.assertRaises(exc.NotFound, mgr.find) - mgr.findall = sav_fa def test_find_mult_match(self): mgr = self.manager - sav_fa = mgr.findall mtch = fakes.FakeEntity() mgr.resource_class = fakes.FakeEntity mgr.findall = Mock(return_value=[mtch, mtch]) self.assertRaises(exc.NoUniqueMatch, mgr.find) - mgr.findall = sav_fa def test_find_single_match(self): mgr = self.manager - sav_fa = mgr.findall mtch = fakes.FakeEntity() mgr.resource_class = fakes.FakeEntity mgr.findall = Mock(return_value=[mtch]) ret = mgr.find() self.assertEqual(ret, mtch) - mgr.findall = sav_fa def test_findall(self): mgr = self.manager @@ -237,13 +231,11 @@ def test_findall(self): o2.some_att = "bad" o3 = fakes.FakeEntity() o3.some_att = "ok" - sav = mgr.list mgr.list = Mock(return_value=[o1, o2, o3]) ret = mgr.findall(some_att="ok") self.assertTrue(o1 in ret) self.assertFalse(o2 in ret) self.assertTrue(o3 in ret) - mgr.list = sav def test_findall_bad_att(self): mgr = self.manager @@ -253,22 +245,18 @@ def test_findall_bad_att(self): o2.some_att = "bad" o3 = fakes.FakeEntity() o3.some_att = "ok" - sav = mgr.list mgr.list = Mock(return_value=[o1, o2, o3]) ret = mgr.findall(some_att="ok", bad_att="oops") self.assertFalse(o1 in ret) self.assertFalse(o2 in ret) self.assertFalse(o3 in ret) - mgr.list = sav def test_add_hook(self): mgr = self.manager - sav = mgr._hooks_map tfunc = Mock() mgr.add_hook("test", tfunc) self.assertTrue("test" in mgr._hooks_map) self.assertTrue(tfunc in mgr._hooks_map["test"]) - mgr._hooks_map = sav def test_run_hooks(self): mgr = self.manager diff --git a/tests/unit/test_module.py b/tests/unit/test_module.py index 8eb4dc53..cf808447 100644 --- a/tests/unit/test_module.py +++ b/tests/unit/test_module.py @@ -28,6 +28,7 @@ def __init__(self, *args, **kwargs): super(PyraxInitTest, self).__init__(*args, **kwargs) self.username = "fakeuser" self.password = "fakeapikey" + self.tenant_id = "faketenantid" def setUp(self): vers = pyrax.version.version @@ -44,6 +45,7 @@ def setUp(self): "tenant_name": None, "user_agent": "pyrax/%s" % vers, "use_servicenet": False, + "verify_ssl": False, }, "alternate": { "auth_endpoint": "ALT_AUTH", @@ -57,6 +59,7 @@ def setUp(self): "tenant_name": None, "user_agent": "pyrax/%s" % vers, "use_servicenet": False, + "verify_ssl": False, }} pyrax.identity = fakes.FakeIdentity() pyrax.identity.authenticated = True @@ -109,6 +112,26 @@ def fake_import(nm): self.assertEqual(ret, cls) pyrax.utils.import_class = sav + def test_create_context(self): + sav = pyrax._create_identity + pyrax._create_identity = Mock() + id_type = utils.random_unicode() + username = utils.random_unicode() + password = utils.random_unicode() + tenant_id = utils.random_unicode() + tenant_name = utils.random_unicode() + api_key = utils.random_unicode() + verify_ssl = utils.random_unicode() + pyrax.create_context(id_type=id_type, username=username, + password=password, tenant_id=tenant_id, + tenant_name=tenant_name, api_key=api_key, + verify_ssl=verify_ssl) + pyrax._create_identity.assert_called_once_with(id_type=id_type, + username=username, password=password, tenant_id=tenant_id, + tenant_name=tenant_name, api_key=api_key, + verify_ssl=verify_ssl, return_context=True) + pyrax._create_identity = sav + def test_settings_get(self): def_ep = pyrax.get_setting("auth_endpoint", "default") alt_ep = pyrax.get_setting("auth_endpoint", "alternate") @@ -128,6 +151,47 @@ def test_settings_get_from_env(self): pyrax._import_identity = sav_imp os.environ = sav_env + def test_settings_set_bad_env(self): + key = utils.random_unicode() + val = utils.random_unicode() + self.assertRaises(exc.EnvironmentNotFound, pyrax.settings.set, key, + val, "bad_env") + + def test_settings_set_bad_key(self): + key = utils.random_unicode() + val = utils.random_unicode() + self.assertRaises(exc.InvalidSetting, pyrax.settings.set, key, val) + + def test_settings_set_region(self): + key = "region" + val = utils.random_unicode() + pyrax.settings.set(key, val) + self.assertEqual(pyrax.get_setting(key), val) + + def test_settings_set_region_no_identity(self): + key = "region" + val = utils.random_unicode() + sav = pyrax.identity + pyrax.identity = None + ret = pyrax.settings.set(key, val) + self.assertIsNone(ret) + pyrax.identity = sav + + def test_settings_set_verify_ssl(self): + key = "verify_ssl" + val = utils.random_unicode() + pyrax.settings.set(key, val) + self.assertEqual(pyrax.get_setting(key), val) + + def test_settings_set_verify_ssl_no_identity(self): + key = "verify_ssl" + val = utils.random_unicode() + sav = pyrax.identity + pyrax.identity = None + ret = pyrax.settings.set(key, val) + self.assertIsNone(ret) + pyrax.identity = sav + def test_read_config(self): dummy_cfg = fakes.fake_config_file sav_region = pyrax.default_region @@ -180,33 +244,35 @@ def test_set_credentials(self): pyrax.set_credentials(self.username, self.password) self.assertEqual(pyrax.identity.username, self.username) self.assertEqual(pyrax.identity.password, self.password) - self.assert_(pyrax.identity.authenticated) + self.assertTrue(pyrax.identity.authenticated) def test_set_bad_credentials(self): self.assertRaises(exc.AuthenticationFailed, pyrax.set_credentials, "bad", "creds") - self.assertIsNone(pyrax.identity) + self.assertFalse(pyrax.identity.authenticated) def test_set_credential_file(self): with utils.SelfDeletingTempfile() as tmpname: with open(tmpname, "wb") as tmp: - tmp.write("[rackspace_cloud]\n") + tmp.write("[keystone]\n") tmp.write("username = %s\n" % self.username) - tmp.write("api_key = %s\n" % self.password) + tmp.write("password = %s\n" % self.password) + tmp.write("tenant_id = %s\n" % self.tenant_id) pyrax.set_credential_file(tmpname) self.assertEqual(pyrax.identity.username, self.username) self.assertEqual(pyrax.identity.password, self.password) - self.assert_(pyrax.identity.authenticated) + self.assertTrue(pyrax.identity.authenticated) def test_set_bad_credential_file(self): with utils.SelfDeletingTempfile() as tmpname: with open(tmpname, "wb") as tmp: - tmp.write("[rackspace_cloud]\n") + tmp.write("[keystone]\n") tmp.write("username = bad\n") - tmp.write("api_key = creds\n") + tmp.write("password = creds\n") + tmp.write("tenant_id = stuff\n") self.assertRaises(exc.AuthenticationFailed, pyrax.set_credential_file, tmpname) - self.assertIsNone(pyrax.identity) + self.assertFalse(pyrax.identity.authenticated) def test_keyring_auth_no_module(self): pyrax.keyring = None @@ -247,7 +313,7 @@ def test_clear_credentials(self): pyrax.cloud_loadbalancers = object() pyrax.cloud_databases = object() default_region = object() - self.assert_(pyrax.identity.authenticated) + self.assertTrue(pyrax.identity.authenticated) self.assertIsNotNone(pyrax.cloudfiles) pyrax.clear_credentials() self.assertIsNone(pyrax.identity) @@ -322,11 +388,29 @@ def test_safe_region(self): pyrax.identity.get_default_region = orig_defreg pyrax.set_setting("region", orig_reg) + def test_safe_region_no_context(self): + reg = None + sav_ident = pyrax.identity + sav_create = pyrax._create_identity + + def set_ident(): + pyrax.identity = sav_ident + + pyrax._create_identity = Mock(side_effect=set_ident) + sav_get = pyrax.settings.get + pyrax.settings.get = Mock(return_value=None) + pyrax.identity = None + ret = pyrax._safe_region(reg) + self.assertIsNotNone(ret) + pyrax._create_identity = sav_create + pyrax.identity = sav_ident + pyrax.settings.get = sav_get + def test_make_agent_name(self): test_agent = "TEST" ret = pyrax._make_agent_name(test_agent) - self.assert_(ret.endswith(test_agent)) - self.assert_(ret.startswith(pyrax.USER_AGENT)) + self.assertTrue(ret.endswith(test_agent)) + self.assertTrue(ret.startswith(pyrax.USER_AGENT)) def test_connect_to_services(self): pyrax.connect_to_services() diff --git a/tests/unit/test_queues.py b/tests/unit/test_queues.py index 981fe57b..423f1939 100644 --- a/tests/unit/test_queues.py +++ b/tests/unit/test_queues.py @@ -45,7 +45,8 @@ def __init__(self, *args, **kwargs): super(QueuesTest, self).__init__(*args, **kwargs) def setUp(self): - self.client = fakes.FakeQueueClient() + self.identity = fakes.FakeIdentity() + self.client = fakes.FakeQueueClient(self.identity) self.client._manager = fakes.FakeQueueManager(self.client) self.queue = fakes.FakeQueue() self.queue.manager = self.client._manager @@ -562,7 +563,7 @@ def test_api_request(self): fake_body = utils.random_ascii() clt._time_request = Mock(return_value=(fake_resp, fake_body)) clt.management_url = utils.random_unicode() - id_svc = pyrax.identity + id_svc = clt.identity sav = id_svc.authenticate id_svc.authenticate = Mock() ret = clt._api_request(uri, method, **kwargs) @@ -577,7 +578,7 @@ def test_api_request_missing_clt_id(self): err = exc.BadRequest("400", 'The "Client-ID" header is required.') clt._time_request = Mock(side_effect=err) clt.management_url = utils.random_unicode() - id_svc = pyrax.identity + id_svc = clt.identity sav = id_svc.authenticate id_svc.authenticate = Mock() self.assertRaises(exc.QueueClientIDNotDefined, clt._api_request, uri, @@ -592,7 +593,7 @@ def test_api_request_other_error(self): err = exc.BadRequest("400", "Some other message") clt._time_request = Mock(side_effect=err) clt.management_url = utils.random_unicode() - id_svc = pyrax.identity + id_svc = clt.identity sav = id_svc.authenticate id_svc.authenticate = Mock() self.assertRaises(exc.BadRequest, clt._api_request, uri, diff --git a/tests/unit/test_utils.py b/tests/unit/test_utils.py index 1f37e5d5..6c3f3c5f 100644 --- a/tests/unit/test_utils.py +++ b/tests/unit/test_utils.py @@ -15,9 +15,10 @@ from mock import patch from mock import MagicMock as Mock -import pyrax.utils as utils +from pyrax import base_identity import pyrax.exceptions as exc from pyrax import fakes +import pyrax.utils as utils FAKE_CONTENT = "x" * 100 @@ -54,6 +55,14 @@ def test_self_deleting_temp_directory(self): # Directory shoud be deleted after exiting the block self.assertFalse(os.path.exists(tmp)) + def test_dot_dict(self): + key = "fake" + val = utils.random_unicode() + dct = {key: val} + dd = utils.DotDict(dct) + self.assertEqual(dd.fake, val) + self.assertRaises(AttributeError, getattr, dd, "bogus") + def test_get_checksum_from_string(self): test = utils.random_ascii() md = hashlib.md5() @@ -192,7 +201,8 @@ def dummy(): self.assertTrue(utils.isunauthenticated(dummy)) def test_safe_issubclass_good(self): - ret = utils.safe_issubclass(fakes.FakeIdentity, fakes.RaxIdentity) + ret = utils.safe_issubclass(fakes.FakeIdentity, + base_identity.BaseIdentity) self.assertTrue(ret) def test_safe_issubclass_bad(self): @@ -326,6 +336,19 @@ def test_rfc2822_format_fail(self): fmtd = utils.rfc2822_format(now) self.assertEqual(fmtd, now) + def test_dict_to_qs(self): + k1 = utils.random_unicode() + v1 = utils.random_unicode() + k2 = utils.random_unicode() + v2 = None + k3 = utils.random_unicode() + v3 = utils.random_unicode() + dct = {k1: v1, k2: v2, k3: v3} + qs = utils.dict_to_qs(dct) + self.assertTrue("%s=%s" % (k1, v1) in qs) + self.assertFalse("%s=%s" % (k2, v2) in qs) + self.assertTrue("%s=%s" % (k3, v3) in qs) + def test_match_pattern(self): ignore_pat = "*.bad" self.assertTrue(utils.match_pattern("some.bad", ignore_pat))