From 82aed3979d042b62b218b9533e0f4d7c49aecdb1 Mon Sep 17 00:00:00 2001 From: EdLeafe Date: Wed, 4 Sep 2013 10:03:09 -0500 Subject: [PATCH] Version 1.5.0 - Adds support for Cloud Monitoring and Autoscale. --- RELEASENOTES.md | 6 + docs/autoscaling.md | 321 +++ docs/cloud_monitoring.md | 235 +++ docs/html/____init_____8py.html | 8 +- docs/html/annotated.html | 28 +- docs/html/autoscale_8py.html | 122 ++ docs/html/classes.html | 104 +- ...1autoscale_1_1AutoScaleClient-members.html | 171 ++ ...pyrax_1_1autoscale_1_1AutoScaleClient.html | 1098 ++++++++++ ...spyrax_1_1autoscale_1_1AutoScaleClient.png | Bin 0 -> 431 bytes ...1autoscale_1_1AutoScalePolicy-members.html | 141 ++ ...pyrax_1_1autoscale_1_1AutoScalePolicy.html | 565 +++++ ...spyrax_1_1autoscale_1_1AutoScalePolicy.png | Bin 0 -> 445 bytes ...autoscale_1_1AutoScaleWebhook-members.html | 135 ++ ...yrax_1_1autoscale_1_1AutoScaleWebhook.html | 356 ++++ ...pyrax_1_1autoscale_1_1AutoScaleWebhook.png | Bin 0 -> 459 bytes ..._1_1autoscale_1_1ScalingGroup-members.html | 164 ++ ...asspyrax_1_1autoscale_1_1ScalingGroup.html | 1190 +++++++++++ ...lasspyrax_1_1autoscale_1_1ScalingGroup.png | Bin 0 -> 421 bytes ...oscale_1_1ScalingGroupManager-members.html | 153 ++ ...x_1_1autoscale_1_1ScalingGroupManager.html | 1128 ++++++++++ ...ax_1_1autoscale_1_1ScalingGroupManager.png | Bin 0 -> 541 bytes .../classpyrax_1_1client_1_1BaseClient.html | 28 +- .../classpyrax_1_1client_1_1BaseClient.png | Bin 1191 -> 1473 bytes ...nitoring_1_1CloudMonitorAlarm-members.html | 135 ++ ...1cloudmonitoring_1_1CloudMonitorAlarm.html | 342 +++ ..._1cloudmonitoring_1_1CloudMonitorAlarm.png | Bin 0 -> 441 bytes ...nitoring_1_1CloudMonitorCheck-members.html | 138 ++ ...1cloudmonitoring_1_1CloudMonitorCheck.html | 541 +++++ ..._1cloudmonitoring_1_1CloudMonitorCheck.png | Bin 0 -> 448 bytes ...ring_1_1CloudMonitorCheckType-members.html | 134 ++ ...udmonitoring_1_1CloudMonitorCheckType.html | 220 ++ ...oudmonitoring_1_1CloudMonitorCheckType.png | Bin 0 -> 507 bytes ...itoring_1_1CloudMonitorClient-members.html | 188 ++ ...cloudmonitoring_1_1CloudMonitorClient.html | 1865 +++++++++++++++++ ...1cloudmonitoring_1_1CloudMonitorClient.png | Bin 0 -> 438 bytes ...itoring_1_1CloudMonitorEntity-members.html | 142 ++ ...cloudmonitoring_1_1CloudMonitorEntity.html | 571 +++++ ...1cloudmonitoring_1_1CloudMonitorEntity.png | Bin 0 -> 450 bytes ..._1_1CloudMonitorEntityManager-members.html | 146 ++ ...nitoring_1_1CloudMonitorEntityManager.html | 909 ++++++++ ...onitoring_1_1CloudMonitorEntityManager.png | Bin 0 -> 561 bytes ...g_1_1CloudMonitorNotification-members.html | 133 ++ ...onitoring_1_1CloudMonitorNotification.html | 205 ++ ...monitoring_1_1CloudMonitorNotification.png | Bin 0 -> 489 bytes ...oudMonitorNotificationManager-members.html | 137 ++ ...ng_1_1CloudMonitorNotificationManager.html | 339 +++ ...ing_1_1CloudMonitorNotificationManager.png | Bin 0 -> 600 bytes ...1CloudMonitorNotificationPlan-members.html | 132 ++ ...oring_1_1CloudMonitorNotificationPlan.html | 174 ++ ...toring_1_1CloudMonitorNotificationPlan.png | Bin 0 -> 524 bytes ...onitorNotificationPlanManager-members.html | 133 ++ ..._1CloudMonitorNotificationPlanManager.html | 213 ++ ...1_1CloudMonitorNotificationPlanManager.png | Bin 0 -> 626 bytes ...1CloudMonitorNotificationType-members.html | 132 ++ ...oring_1_1CloudMonitorNotificationType.html | 174 ++ ...toring_1_1CloudMonitorNotificationType.png | Bin 0 -> 548 bytes ...onitoring_1_1CloudMonitorZone-members.html | 132 ++ ..._1cloudmonitoring_1_1CloudMonitorZone.html | 174 ++ ...1_1cloudmonitoring_1_1CloudMonitorZone.png | Bin 0 -> 444 bytes ..._1_1exceptions_1_1InvalidLoadBalancer.html | 142 ++ ...x_1_1exceptions_1_1InvalidLoadBalancer.png | Bin 0 -> 498 bytes ...ions_1_1InvalidMonitoringCheckDetails.html | 142 ++ ...tions_1_1InvalidMonitoringCheckDetails.png | Bin 0 -> 593 bytes ...tions_1_1InvalidMonitoringCheckUpdate.html | 142 ++ ...ptions_1_1InvalidMonitoringCheckUpdate.png | Bin 0 -> 583 bytes ...ns_1_1InvalidMonitoringMetricsRequest.html | 142 ++ ...ons_1_1InvalidMonitoringMetricsRequest.png | Bin 0 -> 603 bytes ...1_1InvalidMonitoringMetricsResolution.html | 142 ++ ..._1_1InvalidMonitoringMetricsResolution.png | Bin 0 -> 609 bytes ...ions_1_1MissingMonitoringCheckDetails.html | 142 ++ ...tions_1_1MissingMonitoringCheckDetails.png | Bin 0 -> 610 bytes ..._1_1MissingMonitoringCheckGranularity.html | 142 ++ ...s_1_1MissingMonitoringCheckGranularity.png | Bin 0 -> 642 bytes ..._1_1MonitoringCheckTargetNotSpecified.html | 142 ++ ...s_1_1MonitoringCheckTargetNotSpecified.png | Bin 0 -> 638 bytes ...eptions_1_1MonitoringZonesPollMissing.html | 142 ++ ...ceptions_1_1MonitoringZonesPollMissing.png | Bin 0 -> 574 bytes ...pyrax_1_1exceptions_1_1PyraxException.html | 175 +- ...spyrax_1_1exceptions_1_1PyraxException.png | Bin 22772 -> 26397 bytes .../classpyrax_1_1manager_1_1BaseManager.html | 39 +- .../classpyrax_1_1manager_1_1BaseManager.png | Bin 1248 -> 3325 bytes ...lasspyrax_1_1resource_1_1BaseResource.html | 45 +- ...classpyrax_1_1resource_1_1BaseResource.png | Bin 3663 -> 6582 bytes docs/html/cloudmonitoring_8py.html | 143 ++ docs/html/exceptions_8py.html | 11 +- docs/html/files.html | 4 +- docs/html/functions.html | 51 +- docs/html/functions_0x61.html | 21 +- docs/html/functions_0x63.html | 33 +- docs/html/functions_0x64.html | 82 +- docs/html/functions_0x65.html | 14 +- docs/html/functions_0x66.html | 15 +- docs/html/functions_0x67.html | 121 +- docs/html/functions_0x6c.html | 71 +- docs/html/functions_0x6d.html | 25 +- docs/html/functions_0x6e.html | 31 +- docs/html/functions_0x6f.html | 5 +- docs/html/functions_0x70.html | 16 +- docs/html/functions_0x72.html | 28 +- docs/html/functions_0x73.html | 19 +- docs/html/functions_0x74.html | 18 +- docs/html/functions_0x75.html | 88 +- docs/html/functions_func.html | 52 +- docs/html/functions_func_0x61.html | 22 +- docs/html/functions_func_0x63.html | 38 +- docs/html/functions_func_0x64.html | 77 +- docs/html/functions_func_0x65.html | 15 +- docs/html/functions_func_0x66.html | 20 +- docs/html/functions_func_0x67.html | 120 +- docs/html/functions_func_0x68.html | 3 +- docs/html/functions_func_0x69.html | 3 +- docs/html/functions_func_0x6c.html | 82 +- docs/html/functions_func_0x6d.html | 16 +- docs/html/functions_func_0x6e.html | 13 +- docs/html/functions_func_0x6f.html | 142 ++ docs/html/functions_func_0x70.html | 11 +- docs/html/functions_func_0x72.html | 21 +- docs/html/functions_func_0x73.html | 3 +- docs/html/functions_func_0x74.html | 7 +- docs/html/functions_func_0x75.html | 76 +- docs/html/functions_vars.html | 37 +- docs/html/hierarchy.html | 28 +- docs/html/namespacemembers.html | 23 +- docs/html/namespacemembers_func.html | 19 +- docs/html/namespacemembers_vars.html | 11 +- docs/html/namespacepyrax.html | 78 +- docs/html/namespacepyrax_1_1autoscale.html | 139 ++ .../namespacepyrax_1_1cloudmonitoring.html | 174 ++ docs/html/namespacepyrax_1_1exceptions.html | 11 +- docs/html/namespacepyrax_1_1utils.html | 65 +- docs/html/namespacepyrax_1_1version.html | 6 +- docs/html/namespaces.html | 4 +- docs/html/search/all_5f.js | 3 +- docs/html/search/all_61.js | 9 +- docs/html/search/all_63.js | 28 +- docs/html/search/all_64.js | 9 +- docs/html/search/all_65.js | 3 + docs/html/search/all_66.js | 6 +- docs/html/search/all_67.js | 20 +- docs/html/search/all_69.js | 5 + docs/html/search/all_6c.js | 15 +- docs/html/search/all_6d.js | 7 + docs/html/search/all_6e.js | 2 +- docs/html/search/all_6f.js | 1 + docs/html/search/all_70.js | 7 + docs/html/search/all_72.js | 4 +- docs/html/search/all_73.js | 5 +- docs/html/search/all_74.js | 2 + docs/html/search/all_75.js | 15 +- docs/html/search/classes_61.js | 5 +- docs/html/search/classes_63.js | 12 + docs/html/search/classes_69.js | 5 + docs/html/search/classes_6d.js | 6 +- docs/html/search/classes_73.js | 2 + docs/html/search/files_61.html | 25 + docs/html/search/files_61.js | 4 + docs/html/search/files_63.js | 1 + docs/html/search/functions_5f.js | 2 +- docs/html/search/functions_61.js | 2 + docs/html/search/functions_63.js | 10 +- docs/html/search/functions_64.js | 9 +- docs/html/search/functions_65.js | 2 + docs/html/search/functions_66.js | 6 +- docs/html/search/functions_67.js | 20 +- docs/html/search/functions_6c.js | 17 +- docs/html/search/functions_6d.js | 3 + docs/html/search/functions_6e.js | 1 + docs/html/search/functions_6f.js | 2 +- docs/html/search/functions_70.js | 3 + docs/html/search/functions_72.js | 2 + docs/html/search/functions_74.js | 4 +- docs/html/search/functions_75.js | 13 +- docs/html/search/namespaces_70.js | 4 +- docs/html/search/search.js | 4 +- docs/html/search/variables_5f.js | 1 + docs/html/search/variables_61.js | 3 +- docs/html/search/variables_63.js | 1 + docs/html/search/variables_65.js | 1 + docs/html/search/variables_6e.js | 2 +- docs/html/search/variables_70.js | 2 + docs/html/search/variables_72.js | 2 +- docs/html/search/variables_73.js | 1 + docs/html/utils_8py.html | 8 +- docs/html/version_8py.html | 4 +- pyrax/__init__.py | 43 +- pyrax/autoscale.py | 1023 +++++++++ pyrax/cloudmonitoring.py | 1219 +++++++++++ pyrax/exceptions.py | 27 + pyrax/manager.py | 21 +- pyrax/utils.py | 59 +- pyrax/version.py | 2 +- samples/autoscale/add_policy.py | 81 + samples/autoscale/add_webhook.py | 100 + samples/autoscale/create_scaling_group.py | 100 + samples/autoscale/delete_policy.py | 82 + samples/autoscale/delete_scaling_group.py | 54 + samples/autoscale/delete_webhook.py | 100 + samples/cloud_monitoring/create_alarm.py | 59 + samples/cloud_monitoring/create_check.py | 63 + samples/cloud_monitoring/create_entity.py | 43 + .../cloud_monitoring/create_notification.py | 63 + samples/cloud_monitoring/util.py | 52 + tests/unit/fakes.py | 93 +- tests/unit/test_autoscale.py | 1111 ++++++++++ tests/unit/test_cloud_monitoring.py | 1481 +++++++++++++ tests/unit/test_utils.py | 49 +- 207 files changed, 22681 insertions(+), 585 deletions(-) create mode 100644 docs/autoscaling.md create mode 100644 docs/cloud_monitoring.md create mode 100644 docs/html/autoscale_8py.html create mode 100644 docs/html/classpyrax_1_1autoscale_1_1AutoScaleClient-members.html create mode 100644 docs/html/classpyrax_1_1autoscale_1_1AutoScaleClient.html create mode 100644 docs/html/classpyrax_1_1autoscale_1_1AutoScaleClient.png create mode 100644 docs/html/classpyrax_1_1autoscale_1_1AutoScalePolicy-members.html create mode 100644 docs/html/classpyrax_1_1autoscale_1_1AutoScalePolicy.html create mode 100644 docs/html/classpyrax_1_1autoscale_1_1AutoScalePolicy.png create mode 100644 docs/html/classpyrax_1_1autoscale_1_1AutoScaleWebhook-members.html create mode 100644 docs/html/classpyrax_1_1autoscale_1_1AutoScaleWebhook.html create mode 100644 docs/html/classpyrax_1_1autoscale_1_1AutoScaleWebhook.png create mode 100644 docs/html/classpyrax_1_1autoscale_1_1ScalingGroup-members.html create mode 100644 docs/html/classpyrax_1_1autoscale_1_1ScalingGroup.html create mode 100644 docs/html/classpyrax_1_1autoscale_1_1ScalingGroup.png create mode 100644 docs/html/classpyrax_1_1autoscale_1_1ScalingGroupManager-members.html create mode 100644 docs/html/classpyrax_1_1autoscale_1_1ScalingGroupManager.html create mode 100644 docs/html/classpyrax_1_1autoscale_1_1ScalingGroupManager.png create mode 100644 docs/html/classpyrax_1_1cloudmonitoring_1_1CloudMonitorAlarm-members.html create mode 100644 docs/html/classpyrax_1_1cloudmonitoring_1_1CloudMonitorAlarm.html create mode 100644 docs/html/classpyrax_1_1cloudmonitoring_1_1CloudMonitorAlarm.png create mode 100644 docs/html/classpyrax_1_1cloudmonitoring_1_1CloudMonitorCheck-members.html create mode 100644 docs/html/classpyrax_1_1cloudmonitoring_1_1CloudMonitorCheck.html create mode 100644 docs/html/classpyrax_1_1cloudmonitoring_1_1CloudMonitorCheck.png create mode 100644 docs/html/classpyrax_1_1cloudmonitoring_1_1CloudMonitorCheckType-members.html create mode 100644 docs/html/classpyrax_1_1cloudmonitoring_1_1CloudMonitorCheckType.html create mode 100644 docs/html/classpyrax_1_1cloudmonitoring_1_1CloudMonitorCheckType.png create mode 100644 docs/html/classpyrax_1_1cloudmonitoring_1_1CloudMonitorClient-members.html create mode 100644 docs/html/classpyrax_1_1cloudmonitoring_1_1CloudMonitorClient.html create mode 100644 docs/html/classpyrax_1_1cloudmonitoring_1_1CloudMonitorClient.png create mode 100644 docs/html/classpyrax_1_1cloudmonitoring_1_1CloudMonitorEntity-members.html create mode 100644 docs/html/classpyrax_1_1cloudmonitoring_1_1CloudMonitorEntity.html create mode 100644 docs/html/classpyrax_1_1cloudmonitoring_1_1CloudMonitorEntity.png create mode 100644 docs/html/classpyrax_1_1cloudmonitoring_1_1CloudMonitorEntityManager-members.html create mode 100644 docs/html/classpyrax_1_1cloudmonitoring_1_1CloudMonitorEntityManager.html create mode 100644 docs/html/classpyrax_1_1cloudmonitoring_1_1CloudMonitorEntityManager.png create mode 100644 docs/html/classpyrax_1_1cloudmonitoring_1_1CloudMonitorNotification-members.html create mode 100644 docs/html/classpyrax_1_1cloudmonitoring_1_1CloudMonitorNotification.html create mode 100644 docs/html/classpyrax_1_1cloudmonitoring_1_1CloudMonitorNotification.png create mode 100644 docs/html/classpyrax_1_1cloudmonitoring_1_1CloudMonitorNotificationManager-members.html create mode 100644 docs/html/classpyrax_1_1cloudmonitoring_1_1CloudMonitorNotificationManager.html create mode 100644 docs/html/classpyrax_1_1cloudmonitoring_1_1CloudMonitorNotificationManager.png create mode 100644 docs/html/classpyrax_1_1cloudmonitoring_1_1CloudMonitorNotificationPlan-members.html create mode 100644 docs/html/classpyrax_1_1cloudmonitoring_1_1CloudMonitorNotificationPlan.html create mode 100644 docs/html/classpyrax_1_1cloudmonitoring_1_1CloudMonitorNotificationPlan.png create mode 100644 docs/html/classpyrax_1_1cloudmonitoring_1_1CloudMonitorNotificationPlanManager-members.html create mode 100644 docs/html/classpyrax_1_1cloudmonitoring_1_1CloudMonitorNotificationPlanManager.html create mode 100644 docs/html/classpyrax_1_1cloudmonitoring_1_1CloudMonitorNotificationPlanManager.png create mode 100644 docs/html/classpyrax_1_1cloudmonitoring_1_1CloudMonitorNotificationType-members.html create mode 100644 docs/html/classpyrax_1_1cloudmonitoring_1_1CloudMonitorNotificationType.html create mode 100644 docs/html/classpyrax_1_1cloudmonitoring_1_1CloudMonitorNotificationType.png create mode 100644 docs/html/classpyrax_1_1cloudmonitoring_1_1CloudMonitorZone-members.html create mode 100644 docs/html/classpyrax_1_1cloudmonitoring_1_1CloudMonitorZone.html create mode 100644 docs/html/classpyrax_1_1cloudmonitoring_1_1CloudMonitorZone.png create mode 100644 docs/html/classpyrax_1_1exceptions_1_1InvalidLoadBalancer.html create mode 100644 docs/html/classpyrax_1_1exceptions_1_1InvalidLoadBalancer.png create mode 100644 docs/html/classpyrax_1_1exceptions_1_1InvalidMonitoringCheckDetails.html create mode 100644 docs/html/classpyrax_1_1exceptions_1_1InvalidMonitoringCheckDetails.png create mode 100644 docs/html/classpyrax_1_1exceptions_1_1InvalidMonitoringCheckUpdate.html create mode 100644 docs/html/classpyrax_1_1exceptions_1_1InvalidMonitoringCheckUpdate.png create mode 100644 docs/html/classpyrax_1_1exceptions_1_1InvalidMonitoringMetricsRequest.html create mode 100644 docs/html/classpyrax_1_1exceptions_1_1InvalidMonitoringMetricsRequest.png create mode 100644 docs/html/classpyrax_1_1exceptions_1_1InvalidMonitoringMetricsResolution.html create mode 100644 docs/html/classpyrax_1_1exceptions_1_1InvalidMonitoringMetricsResolution.png create mode 100644 docs/html/classpyrax_1_1exceptions_1_1MissingMonitoringCheckDetails.html create mode 100644 docs/html/classpyrax_1_1exceptions_1_1MissingMonitoringCheckDetails.png create mode 100644 docs/html/classpyrax_1_1exceptions_1_1MissingMonitoringCheckGranularity.html create mode 100644 docs/html/classpyrax_1_1exceptions_1_1MissingMonitoringCheckGranularity.png create mode 100644 docs/html/classpyrax_1_1exceptions_1_1MonitoringCheckTargetNotSpecified.html create mode 100644 docs/html/classpyrax_1_1exceptions_1_1MonitoringCheckTargetNotSpecified.png create mode 100644 docs/html/classpyrax_1_1exceptions_1_1MonitoringZonesPollMissing.html create mode 100644 docs/html/classpyrax_1_1exceptions_1_1MonitoringZonesPollMissing.png create mode 100644 docs/html/cloudmonitoring_8py.html create mode 100644 docs/html/functions_func_0x6f.html create mode 100644 docs/html/namespacepyrax_1_1autoscale.html create mode 100644 docs/html/namespacepyrax_1_1cloudmonitoring.html create mode 100644 docs/html/search/files_61.html create mode 100644 docs/html/search/files_61.js create mode 100644 pyrax/autoscale.py create mode 100644 pyrax/cloudmonitoring.py create mode 100644 samples/autoscale/add_policy.py create mode 100644 samples/autoscale/add_webhook.py create mode 100644 samples/autoscale/create_scaling_group.py create mode 100644 samples/autoscale/delete_policy.py create mode 100644 samples/autoscale/delete_scaling_group.py create mode 100644 samples/autoscale/delete_webhook.py create mode 100644 samples/cloud_monitoring/create_alarm.py create mode 100644 samples/cloud_monitoring/create_check.py create mode 100644 samples/cloud_monitoring/create_entity.py create mode 100644 samples/cloud_monitoring/create_notification.py create mode 100644 samples/cloud_monitoring/util.py create mode 100644 tests/unit/test_autoscale.py create mode 100644 tests/unit/test_cloud_monitoring.py diff --git a/RELEASENOTES.md b/RELEASENOTES.md index 690ec99a..983880f5 100644 --- a/RELEASENOTES.md +++ b/RELEASENOTES.md @@ -1,5 +1,11 @@ # Release Notes for pyrax +###2013.09.04 - Version 1.5.0 +- Added support for the Rackspace Cloud Monitoring service +- Added support for the Rackspace Autoscale service +- Fixed an issue where parameters to the manger.create() method were passed + incorrectly. + ###2013.08.21 - Version 1.4.11 - Fixed issue #161: different locales caused date parsing error. - Fixed issue #166: passwords with non-ASCII characters were causing parsing diff --git a/docs/autoscaling.md b/docs/autoscaling.md new file mode 100644 index 00000000..568c3420 --- /dev/null +++ b/docs/autoscaling.md @@ -0,0 +1,321 @@ +# Autoscaling + +## Basic Concepts +Autoscale is a service that enables you to scale your application by adding or removing servers based on monitoring events, a schedule, or arbitrary webhooks. + +Please note that _this is a Rackspace-specific service_. It is not available in any other OpenStack cloud, so if you add it to your application, keep the code isolated if you need to run your application on non-Rackspace clouds. + +Autoscale functions by linking three services: + +* Monitoring (such as Monitoring as a Service) +* Autoscale API +* Servers and Load Balancers + + +## Workflow + +An Autoscaling group is monitored by Rackspace Cloud Monitoring. When Monitoring triggers an alarm for high utilization within the Autoscaling group, a webhook is triggered. The webhook calls the autoscale service, which consults a policy in accordance with the webhook. The policy determines how many additional Cloud Servers should be added or removed in accordance with the alarm. + +Alarms may trigger scaling up or scaling down. Scale down events always remove the oldest server in the group. + +Cooldowns allow you to ensure that you don't scale up or down too fast. When a scaling policy runs, both the scaling policy cooldown and the group cooldown start. Any additional requests to the group are discarded while the group cooldown is active. Any additional requests to the specific policy are discarded when the policy cooldown is active. + +It is important to remember that Autoscale does not configure anything within a server. This means that all images should be self-provisioning. It is up to you to make sure that your services are configured to function properly when the server is started. We recommend using something like Chef, Salt, or Puppet. + + +## Using Autoscaling in pyrax +Once you have authenticated, you can reference the Autoscaling service via `pyrax.autoscaling`. That is a lot to type over and over in your code, so it is easier if you include the following line at the beginning of your code: + + au = pyrax.autoscaling + +Then you can simply use the alias `au` to reference the service. All of the code samples in this document assume that `au` has been defined this way. + + +## The Scaling Group +The **Scaling Group** is the basic unit of Autoscaling. It determines the minimum and maximum number of servers that exist at any time for the group, the cooldown period between Autoscaling events, the configuration for each new server, the load balancer to add these servers to (optional), and any policies that are used for this group. + +### Listing Your Scaling Groups +The `list()` method displays all the Scaling Groups currently defined in your account: + + print au.list() + +This returns a list of `ScalingGroup` objects: + + [, + ] + +To see the [launch configuration](#launch-configuration) for a group, call the `get_launch_config()` method: + + groups = au.list() + group = groups[0] + print group.get_launch_config() + +This returns a dict with the current values for its launch configuration: + + {'disk_config': u'AUTO', + 'flavor': 2, + 'image': u'7789e8ca-b9df-495f-b47d-736a5f7b885a', + 'load_balancers': [{u'loadBalancerId': 175295, u'port': 80}], + 'metadata': {u'somekey': u'somevalue'}, + 'name': u'rrr', + 'networks': [{u'uuid': u'11111111-1111-1111-1111-111111111111'}], + 'personality': [], + 'type': u'launch_server'} + +### Getting the Current State of a Scaling Group +It is sometimes helpful to determine what the current state of a scaling group is in terms of whether it is scaling up, scaling down, or stable. To do this, call the scaling group's `get_state()` method, or call the client's `get_state()`, passing in the desired scaling group: + + print sg.get_state() + # or + print au.get_state(sg) + +This returns a dict with the following structure: + + {'active': [u'21d0bce0-c7b9-46f8-80a2-9575bef8b83a', u'3e2c9eac-d7c2-4999-9a17-a6a7ca5d10e7'], + 'desired_capacity': 2, + 'paused': False, + 'pending_capacity': 0, + 'active_capacity': 2} + +The `active` key holds a list of the IDs of the servers created as part of this scaling group. The `paused` key shows whether or not the scaling group's response to alarms is active or not. There are 3 'capacity'-related keys: `active_capacity`, `desired_capacity`, and `pending_capacity`: + +Key | Respresents +---- | ---- +**active_capacity** | The number of active servers that are part of this scaling group +**desired_capacity** | The target number of servers for this scaling group, based on the combination of configuration settings and monitoring alarm responses +**pending_capacity** | The number of servers which are in the process of being created (when positive) or destroyed (when negative). + +### Pausing a Scaling Group's Policies +If you wish to pause the execution of a scaling group's policies for any reason, call its `pause()` method, or the `pause()` method of the client: + + sg.pause() + # or + au.pause(sg) + +There is a corresponding `resume()` method for when you want to re-activate the policies: + + sg.resume() + # or + au.resume(sg) + +### Creating a Scaling Group +To create a scaling group, you call the `create()` method of the client with the desired parameter values: + + sg = au.create("MyScalingGroup", cooldown=120, min_entities=2, + max_entities=16, launch_config_type="launch_server", + server_name="sg_test", flavor=3, image=my_image_id, + disk_config="AUTO", metadata={"mykey": "myvalue"}, + load_balancers=(1234, 80)) + +This creates the Scaling Group with the name "MyScalingGroup", and returns a `ScalingGroup` object representing the new group. Since the `min_entities` is 2, it immediately creates 2 servers for the group, based on the image whose ID is in the variable `my_image_id`. When they are created, they are then added to the load balancer whose ID is `1234`, and receive requests on port 80. + +Note that the `server_name` parameter represents a base string to which Autoscale prepends a 10-character prefix to create a unique name for each server. The prefix always begins with 'as' and is followed by 8 random hex digits. For example, if you set the server_name to 'testgroup', and the scaling group creates 3 servers, their names would look like these: + + as5defddd4-testgroup + as92e512fe-testgroup + asedcf7587-testgroup + +#### Parameters +Parameter | Required | Default | Notes +---- | ---- | ---- | ---- +**name** | yes | | +**cooldown** | yes | | Period in seconds after a scaling event in which further events are ignored +**min_entities** | yes | | +**max_entities** | yes | | +**launch_config_type** | yes | | Only option currently is`launch_server` +**flavor** | yes | | Flavor to use for each server that is launched +**server_name** | yes | | The base name for servers created by Autoscale. +**image** | yes | | Either a Cloud Servers Image object, or its ID. This is the image that all new servers are created from. +**disk_config** | no | MANUAL | Determines if the server's disk is partitioned to the full size of the flavor ('AUTO') or just to the size of the image ('MANUAL'). +**metadata** | no | | Arbitrary key-value pairs you want to associate with your servers. +**personality** | no | | Small text files that are created on the new servers. _Personality_ is discussed in the [Rackspace Cloud Servers documentation](http://docs.rackspace.com/servers/api/v2/cs-devguide/content/Server_Personality-d1e2543.html) +**networks** | no | | The networks to which you want to attach new servers. See the [Create Servers documentation](http://docs.rackspace.com/servers/api/v2/cs-devguide/content/CreateServers.html) for the required format. +**load_balancers** | no | | Either a list of (id, port) tuples or a single such tuple, representing the loadbalancer(s) to add the new servers to. +**scaling_policies** | no | | You can define the scaling policies when you create the group, or add them later. + +### Updating a Scaling Group +You can modify the settings for a scaling group by calling its `update()` method. The available settings you may change are: `name`, `cooldown`, `min_entities`, `max_entities`, and `metadata`. To update a scaling group, pass one or more of these as keyword arguments. For example, to change the cooldown period to 2 minutes and increase the maximum entities to 16, you call: + + sg.update(cooldown=120, max_entities=16) + +where `sg` is a reference to the scaling group. Similarly, you can make the call on the autoscale client itself, passing in the reference to the scaling group you wish to update: + + au.update(sg, cooldown=120, max_entities=16) + +**Note**: If you pass any metadata values in this call, it must be the full set of metadata for the Scaling Group, since the underlying API call **overwrites** any existing metadata. If you simply wish to update an existing metadata key, or add a new key/value pair, you must call the `update_metadata(new_meta)` method instead. This call preserves your existing key/value pairs, and only updates it with your changes. + +### Deleting a Scaling Group +To remove a scaling group, call its `delete()` method: + + sg.delete() + +You can also call the `delete()` method of the client itself, passing in the scaling group to delete: + + au.delete(sg) + +Note: you cannot delete a scaling group that has active servers in it. You must first delete the servers by setting the `min_entities` and `max_entities` to zero: + + sg.update(min_entities=0, max_entities=0) + +Once the servers are deleted you can then delete the scaling group. + + +## Launch Configurations +Each scaling group has an associated **launch configuration**. This determines the properties of servers that are created in response to a scaling event. + +The `server_name` represents a base string to which Autoscale prepends a 10-character prefix. The prefix always begins with 'as' and is followed by 8 random hex digits. For example, if you set the `server_name` to 'testgroup', and the scaling group creates 3 servers, their names would look like these: + + as5defddd4-testgroup + as92e512fe-testgroup + asedcf7587-testgroup + +To see the launch configuration for a given scaling group, call: + + sg.get_launch_config() + # or + au.get_launch_config(sg) + +### Updating the Launch Configuration +You can also modify the launch configuration for your scaling group by calling the `update_launch_config()` method. This method lets you update any of the following setttings: `server_name`, `flavor`, `image`, `disk_config`, `metadata`, `personality`, `networks`, `load_balancers`. You may update one or more of these parameters in the call. For example, to change the scaling group to use a different image, call: + + sg.update_launch_config(image=new_image_id) + +You may also make the call on the autoscale client itself, passing in the scaling group you want to modify: + + au.update_launch_config(sg, image=new_image_id) + +**Note**: If you pass any metadata values in this call, it must be the full set of metadata for the Launch Configuration, since the underlying API call **overwrites** any existing metadata. If you simply wish to update an existing metadata key in your launch configuration, or add a new key/value pair, you must call the `update_launch_metadata()` method instead. This call preserves your existing key/value pairs, and only updates with your changes. + + +## Policies +When an alarm is triggered in Cloud Monitoring, it calls the webhook associated with a particular policy. The policy is designed to update the scaling group to increase or decrease the number of servers in response to the particular alarm. + +To list the policies for a given scaling group, call its `list_policies()` method: + + policies = sg.list_policies() + +You can also call this directly on the client, passing in the scaling group for which you want to get a list of its policies: + + policies = au.list_policies(sg) + +### Creating a Policy +To add a policy to a scaling group, call the `add_policy()` method: + + policy = sg.add_policy(name, policy_type, cooldown, + change, is_percent) + # or + policy = au.add_policy(sg, name, policy_type, cooldown, + change, is_percent) + +#### Parameters +Parameter | Required | Default | Notes +---- | ---- | ---- | ---- +**name** | yes | | +**policy_type** | yes | | Only available type now is 'webhook' +**cooldown** | yes | | Period in seconds after a policy execution in which further events are ignored. This is separate from the overall cooldown for the scaling group. +**change** | yes | | Can be positive or negative, which makes this a scale-up or scale-down policy, respectively. +**is_percent** | no | False | Determines whether the value passed in the `change` parameter is interpreted an absolute number, or a percentage. + +### Updating a Policy +You may update a policy at any time, passing in any or all of the above parameters to change that value. For example, to change the cooldown to 60 seconds, and the number of servers to remove to 3, call: + + policy.update(cooldown=60, change=-3) + +You may also call the `update_policy()` method of either the scaling group for this policy, or the autoscale client itself. Either of the following two calls is equivalent to the call above: + + sg.update_policy(policy, cooldown=60, change=-3) + # or + au.update_policy(sg, policy, cooldown=60, change=-3) + +### Executing a Policy +You don't need to wait for an alarm to be triggered in Cloud Monitoring in order to execute a particular policy. If desired, you may do so manually by calling the policy's `execute()` method: + + policy.execute() + +You can also call the execute_policy() method of either the policy's scaling group, or on the client itself: + + sg.execute_policy(policy) + # or + au.execute_policy(sg, policy) + +### Deleting a Policy +To remove a policy, call its `delete()` method: + + policy.delete() + +You can also call the delete_policy() method of either the policy's scaling group or on the client itself: + + sg.delete_policy(policy) + # or + au.delete_policy(sg, policy) + + +## Webhooks +When an alarm is triggered in Cloud Monitoring, it calls the associated webhook, which in turn causes the policy for that webhook to be executed. + +To list the webhooks for a given policy, call its `list_webhooks()` method: + + webhooks = policy.list_webhooks() + +You can also call this directly on either the scaling group or the client, passing in the policy for which you want the list of webhooks: + + webhooks = sg.list_webhooks(policy) + # or + webhooks = au.list_webhooks(sg, policy) + +### Creating a webhook +To add a webhook to a policy, call the `add_webhook()` method: + + webhook = policy.add_webhook(name, metadata) + # or + webhook = sg.add_webhook(policy, name, metadata) + # or + webhook = au.add_webhook(sg, policy, name, metadata) + +The `name` parameter is required; the `metadata` parameter is optional. + +### Updating a webhook +You may update a webhook at any time to change either its name or its metadata: + + webhook.update(name="something_new", + metadata={"owner": "webteam"}) + +You may also call the `update_webhook()` method of either the policy for this webhook, or the scaling group for that policy, or the autoscale client itself. Any of the following calls is equivalent to the call above: + + policy.update_webhook(webhook, name="something_new", + metadata={"owner": "webteam"}) + # or + sg.update_webhook(policy, webhook, name="something_new", + metadata={"owner": "webteam"}) + # or + au.update_webhook(sg, policy, webhook, name="something_new", + metadata={"owner": "webteam"}) + +**Note**: If you pass any metadata values in this call, it must be the full set of metadata for the Webhook, since the underlying API call **overwrites** any existing metadata. If you simply wish to update an existing metadata key, or add a new key/value pair, you must call the `webhook.update_metadata(new_meta)` method instead (or the corresponding `au.update_webhook_metadata(sg, policy, webhook, new_meta)`). This call preserves your existing key/value pairs, and only updates it with your changes. + +### Deleting a webhook +When you wish to remove a webhook, call its `delete()` method: + + webhook.delete() + +You can also call the `delete_webhook()` method of the webhook's policy, or the policy's scaling group, or on the client itself: + + policy.delete_webhook(webhook) + # or + sg.delete_webhook(policy, webhook) + # or + au.delete_webhook(sg, policy, webhook) + + + + + + + + diff --git a/docs/cloud_monitoring.md b/docs/cloud_monitoring.md new file mode 100644 index 00000000..c021e6cd --- /dev/null +++ b/docs/cloud_monitoring.md @@ -0,0 +1,235 @@ +# Cloud Monitoring + +## Basic Concepts +Rackspace Cloud Monitoring provides timely and accurate information about how your resources are performing. It supplies you with key information that can help you manage your business by enabling you to keep track of your cloud resources and receive instant notification when a resource needs your attention. You can quickly create multiple monitors with predefined checks, such as PING, HTTPS, SMTP, and many others. + +## Monitoring in pyrax +Once you have authenticated, you can reference the monitoring service via `pyrax.cloud_monitoring`. You interact with Cloud Monitoring through this object. + +For the sake of brevity and convenience, it is common to define abbreviated aliases for the modules. All the code in this document assumes that you have added the following line at the top of your script: + + cm = pyrax.cloud_monitoring + +Note that as of this writing, pyrax only supports **remote monitoring**. There is a second type of monitoring that is currently in Preview mode that uses a *Monitoring Agent* installed on your device. + + +## Key Terminology +### Entity +In Rackspace Cloud Monitoring, an entity is the object or resource that you want to monitor. It can be any object or device that you want to monitor. It is commonly a web server, but it might also be a website, a web page, or a web service. + +When you create an entity, you will specify characteristics that describe what you are monitoring. At a minimum you must specify a name for the entity. The name is a user-friendly label or description that helps you identify the resource. You can also specify other attributes of the entity, such the entity's IP address, and any metadata that you'd like to associate with the entity. + +### Check +Once you've created an entity, you can configure one or more checks for it. A check is the building block of the monitoring system, and is always associated with an entity. The check specifies the parts or pieces of the entity that you want to monitor, the monitoring frequency, how many monitoring zones are launching the check, and so on. Basically, it contains the specific details of how you are monitoring the entity. + +You can associate one or more checks with an entity. An entity must have at least one check, but by creating multiple checks for an entity, you can monitor several different aspects of a single resource. + +For each check you create within the monitoring system, you'll designate a check type. The check type tells the monitoring system which method to use, such as PING, HTTP, SMTP, and so on, when investigating the monitored resource. Rackspace Cloud Monitoring check types are fully described [here](http://docs.rackspace.com/cm/api/v1.0/cm-devguide/content/appendix-check-types.html). + +Note that if something happens to your resource, the check does not trigger a notification action. Rather, the alarms that you create separately and associate with the check trigger the notifications. + +### Monitoring Zones +When you create a check, you specify which monitoring zone(s) you want to launch the check from. A monitoring zone is the point of origin, or "launch point", of the check. This concept of a monitoring zone is similar to that of a datacenter, however in the monitoring system, you can think of it more as a geographical region. + +You can launch checks for a particular entity from multiple monitoring zones. This allows you to observe the performance of an entity from different regions of the world. It is also a way to prevent false alarms. For example, if the check from one monitoring zone reports that an entity is down, a second or third monitoring zone might report that the entity is up and running. This gives you a better picture of an entity's overall health. + +### Collectors +A collector collects data from the monitoring zone and is mapped directly to an individual machine or a virtual machine. Monitoring zones contain many collectors, all of which will be within the IP address range listed in the response. Note that there may also be unallocated IP addresses or unrelated machines within that IP address range. + +### Monitoring Agent +Note: The Monitoring Agent is a Preview feature. + +The agent provides insight into the internals of your servers with checks for information such as load average and network usage. The agent runs as a single small service that runs scheduled checks and pushes metrics to the rest of Cloud Monitoring so the metrics can be analyzed, alerted on, and archived. These metrics are gathered via checks using agent check types, and can be used with the other Cloud Monitoring primitives such as alarms. See Section B.2, “[Agent Check Types](http://docs.rackspace.com/cm/api/v1.0/cm-devguide/content/appendix-check-types-agent.html)” for a list of agent check types. + +### Alarms +An alarm contains a set of rules that determine when the monitoring system sends a notification. You can create multiple alarms for the different check types associated with an entity. For example, if your entity is a web server that hosts your company's website, you can create one alarm to monitor the server itself, and another alarm to monitor the website. + +The alarms language provides you with scoping parameters that let you pinpoint the value that will trigger the alarm. The scoping parameters are inherently flexible, so that you can set up multiple checks to trigger a single alarm. The alarm language supplies an adaptable triggering system that makes it easy for you to define different formulas for each alarm that monitors an entity's uptime. To learn how to use the alarm language to create robust monitors, see [Alert Triggering and Alarms](http://docs.rackspace.com/cm/api/v1.0/cm-devguide/content/alerts-language.html). + +### Notifications +A notification is an informational message that you receive from the monitoring system when an alarm is triggered. You can set up notifications to alert a single individual or an entire team. Rackspace Cloud Monitoring currently supports calling webhooks, sending email, and the PagerDuty web service for notifications. + +### Notification Plans +A notification plan contains a set of notification rules to execute when an alarm is triggered. A notification plan can contain multiple notifications for each of the following states: + +* Critical +* Warning +* OK + + +## How Cloud Monitoring Works +Cloud Monitoring helps you keep a keen eye on all of your resources, from web sites to web servers, routers, load balancers, and more. Use the following Monitoring workflow: + +* Create an entity to represent the item you want to monitor. For example, the entity might represent a web site. +* Attach a predefined check to the entity. For example, you could use the PING check to monitor your web site's public IP address. +* Run your checks from multiple monitoring zones to provide redundant monitoring as well as voting logic to avoid false alarms. +* Create a notification to define an action that Cloud Monitoring uses to communicate with you when a problem occurs. For example, you might define a notification that specifies an email that Cloud Monitoring will send when a condition is met. +* Create notification plans which allow you to organize a set of several notifications, or actions, that are taken for different severities. +* Define one or more alarms for each check. An alarm lets you specify trigger conditions for the various metrics returned by the check. When a specific condition is met, the alarm is triggered and your notification plan is put into action. For example, your alarm may indicate a PING response time. If this time elapses, the alarm could send you an email. + +## Create an Entity +The first step in working with Cloud Monitoring is to create an `entity`, which represents the device to monitor. To do so, you specify the characteristics of the device, which include one or more IP addresses. The parameter `ip_addresses` is a dictionary, with the keys being a string that can be used to identify the address (known as an *alias* to other parts of the API), and the value the IPv4 or IPv6 address for the entity. You can include as many addresses as you need. You can also include optional metadata to help you identify what the entity represents in your system. + + ent = cm.create_entity(name="sample_entity", ip_addresses={"example": "1.2.34"}, + metadata={"description": "Just a test entity"}) + +## Create a Check +There are numerous types of checks, and each requires its own parameters, and offers its own combination of metrics. The list of all [available check types](http://docs.rackspace.com/cm/api/v1.0/cm-devguide/content/appendix-check-types.html) shows how extensive your monitoring options are. + +### Check Types +As an example, create a check on the HTTP server for the entity. This check will try to connect to the server and retrieve the specified URL using the specified method, optionally with the password and user for authentication, using SSL, and checking the body with a regex. This can be used to test that a web application running on a server is responding without generating error messages. It can also test if the SSL certificate is valid. + +From the table in the Available Check Types link above, you can find that the ID of the desired check type is `remote.http`. You can also get a list of all check types by calling: + + chk_types = cm.list_check_types() + +This returns a list of `CloudMonitorCheckType` objects. Each object has an attribute named `fields` that lists the parameters for that type, with each indicating whether the field is required or optional, its name, and a brief description. As an example, here is the `fields` attribute for the `remote.http` check type: + + [{u'description': u'Target URL', + u'name': u'url', + u'optional': False}, + {u'description': u'Body match regular expression (body is limited to 100k)', + u'name': u'body', + u'optional': True}, + {u'description': u'Arbitrary headers which are sent with the request.', + u'name': u'headers', + u'optional': True}, + {u'description': u'Body match regular expressions (body is limited to 100k, matches are truncated to 80 characters)', + u'name': u'body_matches', + u'optional': True}, + {u'description': u'HTTP method (default: GET)', + u'name': u'method', + u'optional': True}, + {u'description': u'Optional auth user', + u'name': u'auth_user', + u'optional': True}, + {u'description': u'Optional auth password', + u'name': u'auth_password', + u'optional': True}, + {u'description': u'Follow redirects (default: true)', + u'name': u'follow_redirects', + u'optional': True}, + {u'description': u'Specify a request body (limited to 1024 characters). If following a redirect, payload will only be sent to first location', + u'name': u'payload', + u'optional': True}] + +Note that most of the parameters are optional; the only required parameter is **url**. If you only include that, the monitor will simply check that a plain GET on that URL gets some sort of response. By adding additional parameters to the check, you can make the tests that the check carries out much more specific. + + +### Monitoring Zones +To list the available Monitoring Zones, call: + + cm.list_monitoring_zones() + +This returns a list of `CloudMonitorZone` objects: + + [, + , + , + , + , + ] + +The most important piece of information in a `CloudMonitorZone` is the `id`, which you pass in the `monitoring_zones_poll` argument of `create_check`. + +## Create the Check +To create the check, run the following: + + chk = cm.create_check(ent, label="sample_check", check_type="remote.http", + details={"url": "http://example.com/some_page"}, period=900, + timeout=20, monitoring_zones_poll=["mzdfw", "mzlon", "mzsyd"], + target_hostname="http://example.com") + +This will create an HTTP check on the entity `ent` for the page `http://example.com/some_page` that will run every 15 minutes from the Dallas, London, and Sydney monitoring zones. + +There are several parameters for `create_check()`: + +Parameter | Required? | Default | Description +------ | ------ | ------ | ------ +**label** | no | -blank- | An optional label for this check +**name** | no | -blank- | Synonym for 'label' +**check_type** | yes | | The type of check to create. Can be either a `CloudMonitorCheckType` instance, or its ID. +**details** | no | None | A dictionary for the parameters needed for this type of check. +**disabled** | no | False | Passing `disabled=True` creates the check, but it will not be run until the check is enabled. +**metadata** | no | None | Arbitrary key/value pairs you can associate with this check +**monitoring_zones_poll** | yes | | Either a list or a single monitoring zone. Can be either `CloudMonitoringZone` instances, or their IDs. +**period** | no | (account setting) | How often to run the check, in seconds. Can range between 30 and 1800. +**timeout** | no | None | How long to wait before failing the check. Must be less than the period. +**target_hostname** | Mutually exclusive with `target_alias` | None | Either the IP address or the fully qualified domain name of the target of the check. +**target_alias** | Mutually exclusive with `target_hostname` | None | A key in the 'ip_addresses' dictionary of the entity for this check. + +Note that you must supply either a `target_hostname` or a `target_alias`, but not both. + +## Create a Notification + +There are three supported notification types; `email`, `webhook`, and `pagerduty`, by which you can be notified of alarms. To see the details for each type, call: + + `cm.list_notification_types()` + +This returns a list of `CloudMonitorNotificationType` objects: + + [, + , + ] + +The `id` value is then passed in as the `notification_type` parameter to `create_notification()`. + + +## Create the Notification + +To create the notification, run the following: + + email = cm.create_notification("email", label="my_email_notification", + details={"address": "me@example.com") + +This will create an email notification that will notify the caller at *me@example.com*. + +The `create_notification()` method contains several parameters: + +Parameter | Required? | Default | Description +------ | ------ | ------ | ------ +**notification_type** | yes | | A `CloudMonitoringNotificationType`, or a string matching a supported type's `id` attribute +**label** | no | None | Friendly name for the notification +**details** | no | None | A dictionary of details for your `notification_type` + +## Create the Notification Plan + +Notification Plans outline the specific notifications to contact under three conditions: **OK**, **Warning**, and **Critical** states. The `create_notification_plan()` method contains several parameters: + +Parameter | Required? | Default | Description +------ | ------ | ------ | ------ +**label** | no | | Text to identify this plan +**name** | no | | Text to name this plan +**critical_state** | no | None | A `CloudMonitorNotification` object to be notified when an alarm reaches the critical state +**ok_state** | no | None | A `CloudMonitorNotification` object to be notified when an alarm reaches the ok state +**warning_state** | no | None | A `CloudMonitorNotification` object to be notified when an alarm reaches the warning state + +Using one or more notifications you've created, call: + + plan = cm.create_notification_plan(label="default", ok_state=ok_hook, warning_state=warning_email, critical_state=critical_email) + +Once created, a Notification Plan is used to configure an Alarm. + +## Create an Alarm + +Alarms build on the previously covered topics, and introduce a mini-language used to specify the situation in which a notification plan should be executed. The alarm language is fully explained in [Appendix A](http://docs.rackspace.com/cm/api/v1.0/cm-devguide/content/alerts-language.html) of the Cloud Monitoring documentation. + +### Metrics + +The mini-language operates on *metrics*, which are values stored relating to a *check* you have created. To see the list of supported metrics for a given check, call: + + check.list_metrics() + +If your check has not yet collected any metrics, which is dependent on the *period* you have configured for your check along with when you're making the request, it could be an empty list. If metrics are available, they'll be returned as a list of strings in the format **monitoringZone.metricName**. For a **remote.ping** check, you may receive metrics like the following: + + [u'mzdfw.available', u'mzdfw.average'] + +Those metrics can then be used to construct the criteria string in ``cm.create_alarm``. + +## Create the Alarm + +Once you have created an entity, a check, and a notification plan, you can create an alarm using the mini-language. For example: + + alarm = cm.create_alarm(entity, check, np, "if (rate(metric['average']) > 10) { return new AlarmStatus(WARNING); } return new AlarmStatus(OK);") + +This alarm will alert the *warning* notification in the notification plan when your check's **average** metric measures over 10. Otherwise, the the alarm will report that your check turned out *OK*. diff --git a/docs/html/____init_____8py.html b/docs/html/____init_____8py.html index edd27b6d..f426e001 100644 --- a/docs/html/____init_____8py.html +++ b/docs/html/____init_____8py.html @@ -139,6 +139,10 @@  Creates a client for working with cloud dns.
def connect_to_cloud_networks  Creates a client for working with cloud networks.
+def connect_to_cloud_monitoring + Creates a client for working with cloud monitoring.
+def connect_to_autoscale + Creates a client for working with AutoScale.
def get_http_debug def set_http_debug def get_encoding @@ -155,6 +159,8 @@  cloud_blockstorage = None  cloud_dns = None  cloud_networks = None + cloud_monitoring = None + autoscale = None  default_region = None string default_encoding = "utf-8" dictionary settings = {} @@ -186,7 +192,7 @@ diff --git a/docs/html/annotated.html b/docs/html/annotated.html index 0ec599f0..70c7a1ca 100644 --- a/docs/html/annotated.html +++ b/docs/html/annotated.html @@ -89,6 +89,9 @@ AuthenticationFailed AuthorizationFailure AuthSystemNotFound + AutoScaleClientThis is the primary class for interacting with AutoScale + 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 @@ -117,6 +120,18 @@ CloudLoadBalancerRepresents a Cloud Load Balancer instance CloudLoadBalancerClientThis is the primary class for interacting with Cloud Load Balancers CloudLoadBalancerManager + CloudMonitorAlarmAlarms bind alerting rules, entities, and notification plans into a logical unit + CloudMonitorCheckRepresents a check defined for an entity + CloudMonitorCheckTypeRepresents the type of monitor check to be run + CloudMonitorClientThis is the base client for creating and managing Cloud Monitoring + CloudMonitorEntity + CloudMonitorEntityManagerHandles all of the entity-specific requests + CloudMonitorNotificationRepresents an action to take when an alarm is triggered + CloudMonitorNotificationManagerHandles all of the requests dealing with notifications + CloudMonitorNotificationPlanA Notification plan is a list of the notification actions to take when an alarm is triggered + CloudMonitorNotificationPlanManagerHandles all of the requests dealing with Notification Plans + CloudMonitorNotificationTypeRepresents a class of action to take when an alarm is triggered + CloudMonitorZoneRepresents a location from which Cloud Monitoring collects data CloudNetworkThis represents a network in the cloud CloudNetworkClientThis is the base client for creating and managing Cloud Networks CloudNetworkManagerDoes nothing special, but is used in testing @@ -149,7 +164,12 @@ InvalidCredentialFile InvalidDateTimeString InvalidDeviceType + InvalidLoadBalancer InvalidLoadBalancerParameters + InvalidMonitoringCheckDetails + InvalidMonitoringCheckUpdate + InvalidMonitoringMetricsRequest + InvalidMonitoringMetricsResolution InvalidNodeCondition InvalidNodeParameters InvalidPTRRecord @@ -169,8 +189,12 @@ MissingDNSSettings MissingHealthMonitorSettings MissingLoadBalancerParameters + MissingMonitoringCheckDetails + MissingMonitoringCheckGranularity MissingName MissingTemporaryURLKey + MonitoringCheckTargetNotSpecified + MonitoringZonesPollMissing NetworkCIDRInvalid NetworkCIDRMalformed NetworkCountExceeded @@ -200,6 +224,8 @@ 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 + ScalingGroup + ScalingGroupManager SelfDeletingTempDirectoryConvenience class for dealing with temporary folders and the files within them SelfDeletingTempfileConvenience class for dealing with temporary files ServiceCatalogHelper methods for dealing with a Keystone Service Catalog @@ -240,7 +266,7 @@ diff --git a/docs/html/autoscale_8py.html b/docs/html/autoscale_8py.html new file mode 100644 index 00000000..c6ad94f5 --- /dev/null +++ b/docs/html/autoscale_8py.html @@ -0,0 +1,122 @@ + + + + + +pyrax: pyrax/autoscale.py File Reference + + + + + + + + + + + +
+ + +
+ + + + + + + + + + + +
+
pyrax + +
+
Python Bindings for the Rackspace Cloud
+
+
+ + + + + +
+
+ +
+
pyrax/autoscale.py File Reference
+
+
+ + + + + + + + + + +

+Classes

class  ScalingGroup
class  ScalingGroupManager
class  AutoScalePolicy
class  AutoScaleWebhook
class  AutoScaleClient
 This is the primary class for interacting with AutoScale. More...

+Packages

namespace  pyrax::autoscale
+
+ + + + +
+ +
+ + + + + + + diff --git a/docs/html/classes.html b/docs/html/classes.html index 612341d8..e1052b47 100644 --- a/docs/html/classes.html +++ b/docs/html/classes.html @@ -85,61 +85,67 @@
A | B | C | D | E | F | H | I | K | M | N | O | P | R | S | T | U | V | _
- - - - - - - + + - - - - + + + + + + + + + + + - - + + - - - - - - + - + + + + + + + + - - - - - + + + + + - - - - - - - - + + + + + + - - + +
  A  
-
CloudLoadBalancer (pyrax.cloudloadbalancers)   
  I  
-
NetworkCIDRMalformed (pyrax.exceptions)   SelfDeletingTempfile (pyrax.utils)   
CloudLoadBalancerClient (pyrax.cloudloadbalancers)   NetworkCountExceeded (pyrax.exceptions)   ServiceCatalog (pyrax.service_catalog)   
AccessListIDNotFound (pyrax.exceptions)   CloudLoadBalancerManager (pyrax.cloudloadbalancers)   IdentityClassNotDefined (pyrax.exceptions)   NetworkInUse (pyrax.exceptions)   ServiceNotAvailable (pyrax.exceptions)   
AmbiguousEndpoints (pyrax.exceptions)   CloudNetwork (pyrax.cloudnetworks)   InvalidCDNMetadata (pyrax.exceptions)   NetworkLabelNotUnique (pyrax.exceptions)   Settings (pyrax)   
AuthenticationFailed (pyrax.exceptions)   CloudNetworkClient (pyrax.cloudnetworks)   InvalidConfigurationFile (pyrax.exceptions)   NetworkNotFound (pyrax.exceptions)   SnapshotNotAvailable (pyrax.exceptions)   
AuthorizationFailure (pyrax.exceptions)   CloudNetworkManager (pyrax.cloudnetworks)   InvalidCredentialFile (pyrax.exceptions)   Node (pyrax.cloudloadbalancers)   StorageObject (pyrax::cf_wrapper::storage_object)   
AuthSystemNotFound (pyrax.exceptions)   Connection (pyrax.cf_wrapper.client)   InvalidDateTimeString (pyrax.exceptions)   NoMoreResults (pyrax.exceptions)   SubdomainResultsIterator (pyrax.clouddns)   
  B  
-
Container (pyrax.cf_wrapper.container)   InvalidDeviceType (pyrax.exceptions)   NoReloadError (pyrax.exceptions)   
  T  
+
CloudLoadBalancerManager (pyrax.cloudloadbalancers)   FolderNotFound (pyrax.exceptions)   MissingHealthMonitorSettings (pyrax.exceptions)   RecordResultsIterator (pyrax.clouddns)   
CloudMonitorAlarm (pyrax.cloudmonitoring)   FolderUploader (pyrax.cf_wrapper.client)   MissingLoadBalancerParameters (pyrax.exceptions)   ResultsIterator (pyrax.clouddns)   
AccessListIDNotFound (pyrax.exceptions)   CloudMonitorCheck (pyrax.cloudmonitoring)   Forbidden (pyrax.exceptions)   MissingMonitoringCheckDetails (pyrax.exceptions)   
  S  
  D  
-
InvalidLoadBalancerParameters (pyrax.exceptions)   NoSSLTerminationConfiguration (pyrax.exceptions)   
BadRequest (pyrax.exceptions)   InvalidNodeCondition (pyrax.exceptions)   NoSuchContainer (pyrax.exceptions)   Tenant (pyrax.base_identity)   
BaseAuth (pyrax.base_identity)   DNSCallTimedOut (pyrax.exceptions)   InvalidNodeParameters (pyrax.exceptions)   NoSuchDatabase (pyrax.exceptions)   TenantNotFound (pyrax.exceptions)   
BaseClient (pyrax.client)   DomainCreationFailed (pyrax.exceptions)   InvalidPTRRecord (pyrax.exceptions)   NoSuchDatabaseUser (pyrax.exceptions)   
  U  
+
AmbiguousEndpoints (pyrax.exceptions)   CloudMonitorCheckType (pyrax.cloudmonitoring)   
  H  
+
MissingMonitoringCheckGranularity (pyrax.exceptions)   
AuthenticationFailed (pyrax.exceptions)   CloudMonitorClient (pyrax.cloudmonitoring)   MissingName (pyrax.exceptions)   ScalingGroup (pyrax.autoscale)   
AuthorizationFailure (pyrax.exceptions)   CloudMonitorEntity (pyrax.cloudmonitoring)   HTTPNotImplemented (pyrax.exceptions)   MissingTemporaryURLKey (pyrax.exceptions)   ScalingGroupManager (pyrax.autoscale)   
AuthSystemNotFound (pyrax.exceptions)   CloudMonitorEntityManager (pyrax.cloudmonitoring)   
  I  
+
MonitoringCheckTargetNotSpecified (pyrax.exceptions)   SelfDeletingTempDirectory (pyrax.utils)   
AutoScaleClient (pyrax.autoscale)   CloudMonitorNotification (pyrax.cloudmonitoring)   MonitoringZonesPollMissing (pyrax.exceptions)   SelfDeletingTempfile (pyrax.utils)   
AutoScalePolicy (pyrax.autoscale)   CloudMonitorNotificationManager (pyrax.cloudmonitoring)   IdentityClassNotDefined (pyrax.exceptions)   
  N  
+
ServiceCatalog (pyrax.service_catalog)   
AutoScaleWebhook (pyrax.autoscale)   CloudMonitorNotificationPlan (pyrax.cloudmonitoring)   InvalidCDNMetadata (pyrax.exceptions)   ServiceNotAvailable (pyrax.exceptions)   
  B  
+
CloudMonitorNotificationPlanManager (pyrax.cloudmonitoring)   InvalidConfigurationFile (pyrax.exceptions)   NetworkCIDRInvalid (pyrax.exceptions)   Settings (pyrax)   
CloudMonitorNotificationType (pyrax.cloudmonitoring)   InvalidCredentialFile (pyrax.exceptions)   NetworkCIDRMalformed (pyrax.exceptions)   SnapshotNotAvailable (pyrax.exceptions)   
BadRequest (pyrax.exceptions)   CloudMonitorZone (pyrax.cloudmonitoring)   InvalidDateTimeString (pyrax.exceptions)   NetworkCountExceeded (pyrax.exceptions)   StorageObject (pyrax::cf_wrapper::storage_object)   
BaseAuth (pyrax.base_identity)   CloudNetwork (pyrax.cloudnetworks)   InvalidDeviceType (pyrax.exceptions)   NetworkInUse (pyrax.exceptions)   SubdomainResultsIterator (pyrax.clouddns)   
BaseClient (pyrax.client)   CloudNetworkClient (pyrax.cloudnetworks)   InvalidLoadBalancer (pyrax.exceptions)   NetworkLabelNotUnique (pyrax.exceptions)   
  T  
BaseManager (pyrax.manager)   DomainDeletionFailed (pyrax.exceptions)   InvalidSessionPersistenceType (pyrax.exceptions)   NoSuchObject (pyrax.exceptions)   
BaseResource (pyrax.resource)   DomainRecordAdditionFailed (pyrax.exceptions)   InvalidSetting (pyrax.exceptions)   NotAuthenticated (pyrax.exceptions)   UnattachedNode (pyrax.exceptions)   
BaseManager (pyrax.manager)   CloudNetworkManager (pyrax.cloudnetworks)   InvalidLoadBalancerParameters (pyrax.exceptions)   NetworkNotFound (pyrax.exceptions)   
BaseResource (pyrax.resource)   Connection (pyrax.cf_wrapper.client)   InvalidMonitoringCheckDetails (pyrax.exceptions)   Node (pyrax.cloudloadbalancers)   Tenant (pyrax.base_identity)   
  C  
-
DomainRecordDeletionFailed (pyrax.exceptions)   InvalidSize (pyrax.exceptions)   NotCDNEnabled (pyrax.exceptions)   UnattachedVirtualIP (pyrax.exceptions)   
DomainRecordNotFound (pyrax.exceptions)   InvalidTemporaryURLMethod (pyrax.exceptions)   NotFound (pyrax.exceptions)   Unauthorized (pyrax.exceptions)   
CDNFailed (pyrax.exceptions)   DomainRecordNotUnique (pyrax.exceptions)   InvalidUploadID (pyrax.exceptions)   NoTokenLookupException (pyrax.exceptions)   UnicodePathError (pyrax.exceptions)   
CFClient (pyrax.cf_wrapper.client)   DomainRecordUpdateFailed (pyrax.exceptions)   InvalidVirtualIPType (pyrax.exceptions)   NoUniqueMatch (pyrax.exceptions)   UploadFailed (pyrax.exceptions)   
ClientException (pyrax.exceptions)   DomainResultsIterator (pyrax.clouddns)   InvalidVirtualIPVersion (pyrax.exceptions)   
  O  
-
User (pyrax.base_identity)   
CloudBlockStorageClient (pyrax.cloudblockstorage)   DomainUpdateFailed (pyrax.exceptions)   InvalidVolumeResize (pyrax.exceptions)   UserNotFound (pyrax.exceptions)   
CloudBlockStorageSnapshot (pyrax.cloudblockstorage)   DuplicateUser (pyrax.exceptions)   
  K  
-
OverLimit (pyrax.exceptions)   
  V  
+
Container (pyrax.cf_wrapper.container)   InvalidMonitoringCheckUpdate (pyrax.exceptions)   NoMoreResults (pyrax.exceptions)   TenantNotFound (pyrax.exceptions)   
  D  
+
InvalidMonitoringMetricsRequest (pyrax.exceptions)   NoReloadError (pyrax.exceptions)   
  U  
CloudBlockStorageVolume (pyrax.cloudblockstorage)   
  E  
-
  P  
+
CDNFailed (pyrax.exceptions)   InvalidMonitoringMetricsResolution (pyrax.exceptions)   NoSSLTerminationConfiguration (pyrax.exceptions)   
CFClient (pyrax.cf_wrapper.client)   DNSCallTimedOut (pyrax.exceptions)   InvalidNodeCondition (pyrax.exceptions)   NoSuchContainer (pyrax.exceptions)   UnattachedNode (pyrax.exceptions)   
ClientException (pyrax.exceptions)   DomainCreationFailed (pyrax.exceptions)   InvalidNodeParameters (pyrax.exceptions)   NoSuchDatabase (pyrax.exceptions)   UnattachedVirtualIP (pyrax.exceptions)   
CloudBlockStorageClient (pyrax.cloudblockstorage)   DomainDeletionFailed (pyrax.exceptions)   InvalidPTRRecord (pyrax.exceptions)   NoSuchDatabaseUser (pyrax.exceptions)   Unauthorized (pyrax.exceptions)   
CloudBlockStorageSnapshot (pyrax.cloudblockstorage)   DomainRecordAdditionFailed (pyrax.exceptions)   InvalidSessionPersistenceType (pyrax.exceptions)   NoSuchObject (pyrax.exceptions)   UnicodePathError (pyrax.exceptions)   
CloudBlockStorageVolume (pyrax.cloudblockstorage)   DomainRecordDeletionFailed (pyrax.exceptions)   InvalidSetting (pyrax.exceptions)   NotAuthenticated (pyrax.exceptions)   UploadFailed (pyrax.exceptions)   
CloudBlockStorageVolumeType (pyrax.cloudblockstorage)   DomainRecordNotFound (pyrax.exceptions)   InvalidSize (pyrax.exceptions)   NotCDNEnabled (pyrax.exceptions)   User (pyrax.base_identity)   
CloudDatabaseClient (pyrax.clouddatabases)   DomainRecordNotUnique (pyrax.exceptions)   InvalidTemporaryURLMethod (pyrax.exceptions)   NotFound (pyrax.exceptions)   UserNotFound (pyrax.exceptions)   
CloudDatabaseDatabase (pyrax.clouddatabases)   DomainRecordUpdateFailed (pyrax.exceptions)   InvalidUploadID (pyrax.exceptions)   NoTokenLookupException (pyrax.exceptions)   
  V  
CloudBlockStorageVolumeType (pyrax.cloudblockstorage)   KeyringModuleNotInstalled (pyrax.exceptions)   VirtualIP (pyrax.cloudloadbalancers)   
CloudDatabaseClient (pyrax.clouddatabases)   EndpointNotDefined (pyrax.exceptions)   KeyringPasswordNotFound (pyrax.exceptions)   PasswordChangeFailed (pyrax.exceptions)   VolumeAttachmentFailed (pyrax.exceptions)   
CloudDatabaseDatabase (pyrax.clouddatabases)   EndpointNotFound (pyrax.exceptions)   KeyringUsernameMissing (pyrax.exceptions)   ProtocolMismatch (pyrax.exceptions)   VolumeDetachmentFailed (pyrax.exceptions)   
CloudDatabaseFlavor (pyrax.clouddatabases)   EnvironmentNotFound (pyrax.exceptions)   KeystoneIdentity (pyrax.identity.keystone_identity)   PTRRecordCreationFailed (pyrax.exceptions)   VolumeNotAvailable (pyrax.exceptions)   
CloudDatabaseInstance (pyrax.clouddatabases)   
  F  
-
  M  
-
PTRRecordDeletionFailed (pyrax.exceptions)   
  _  
+
CloudDatabaseFlavor (pyrax.clouddatabases)   DomainResultsIterator (pyrax.clouddns)   InvalidVirtualIPType (pyrax.exceptions)   NoUniqueMatch (pyrax.exceptions)   
CloudDatabaseInstance (pyrax.clouddatabases)   DomainUpdateFailed (pyrax.exceptions)   InvalidVirtualIPVersion (pyrax.exceptions)   
  O  
+
VirtualIP (pyrax.cloudloadbalancers)   
CloudDatabaseManager (pyrax.clouddatabases)   DuplicateUser (pyrax.exceptions)   InvalidVolumeResize (pyrax.exceptions)   VolumeAttachmentFailed (pyrax.exceptions)   
CloudDatabaseUser (pyrax.clouddatabases)   
  E  
+
  K  
+
OverLimit (pyrax.exceptions)   VolumeDetachmentFailed (pyrax.exceptions)   
CloudDatabaseUserManager (pyrax.clouddatabases)   
  P  
+
VolumeNotAvailable (pyrax.exceptions)   
CloudDatabaseVolume (pyrax.clouddatabases)   EndpointNotDefined (pyrax.exceptions)   KeyringModuleNotInstalled (pyrax.exceptions)   
  _  
CloudDatabaseManager (pyrax.clouddatabases)   PTRRecordUpdateFailed (pyrax.exceptions)   
CloudDatabaseUser (pyrax.clouddatabases)   Fault (pyrax.cf_wrapper.container)   MissingAuthSettings (pyrax.exceptions)   PyraxException (pyrax.exceptions)   _WaitThread (pyrax.utils)   
CloudDatabaseUserManager (pyrax.clouddatabases)   FileNotFound (pyrax.exceptions)   MissingDNSSettings (pyrax.exceptions)   
  R  
-
CloudDatabaseVolume (pyrax.clouddatabases)   FlavorNotFound (pyrax.exceptions)   MissingHealthMonitorSettings (pyrax.exceptions)   
CloudDNSClient (pyrax.clouddns)   FolderNotFound (pyrax.exceptions)   MissingLoadBalancerParameters (pyrax.exceptions)   RaxIdentity (pyrax.identity.rax_identity)   
CloudDNSDomain (pyrax.clouddns)   FolderUploader (pyrax.cf_wrapper.client)   MissingName (pyrax.exceptions)   RecordResultsIterator (pyrax.clouddns)   
CloudDNSManager (pyrax.clouddns)   Forbidden (pyrax.exceptions)   MissingTemporaryURLKey (pyrax.exceptions)   ResultsIterator (pyrax.clouddns)   
CloudDNSPTRRecord (pyrax.clouddns)   
  H  
-
  N  
-
  S  
+
CloudDNSClient (pyrax.clouddns)   EndpointNotFound (pyrax.exceptions)   KeyringPasswordNotFound (pyrax.exceptions)   PasswordChangeFailed (pyrax.exceptions)   
CloudDNSDomain (pyrax.clouddns)   EnvironmentNotFound (pyrax.exceptions)   KeyringUsernameMissing (pyrax.exceptions)   ProtocolMismatch (pyrax.exceptions)   _WaitThread (pyrax.utils)   
CloudDNSManager (pyrax.clouddns)   
  F  
+
KeystoneIdentity (pyrax.identity.keystone_identity)   PTRRecordCreationFailed (pyrax.exceptions)   
CloudDNSPTRRecord (pyrax.clouddns)   
  M  
+
PTRRecordDeletionFailed (pyrax.exceptions)   
CloudDNSRecord (pyrax.clouddns)   Fault (pyrax.cf_wrapper.container)   PTRRecordUpdateFailed (pyrax.exceptions)   
CloudLoadBalancer (pyrax.cloudloadbalancers)   FileNotFound (pyrax.exceptions)   MissingAuthSettings (pyrax.exceptions)   PyraxException (pyrax.exceptions)   
CloudLoadBalancerClient (pyrax.cloudloadbalancers)   FlavorNotFound (pyrax.exceptions)   MissingDNSSettings (pyrax.exceptions)   
  R  
CloudDNSRecord (pyrax.clouddns)   
HTTPNotImplemented (pyrax.exceptions)   NetworkCIDRInvalid (pyrax.exceptions)   SelfDeletingTempDirectory (pyrax.utils)   
RaxIdentity (pyrax.identity.rax_identity)   
A | B | C | D | E | F | H | I | K | M | N | O | P | R | S | T | U | V | _
@@ -161,7 +167,7 @@ diff --git a/docs/html/classpyrax_1_1autoscale_1_1AutoScaleClient-members.html b/docs/html/classpyrax_1_1autoscale_1_1AutoScaleClient-members.html new file mode 100644 index 00000000..c4cb887e --- /dev/null +++ b/docs/html/classpyrax_1_1autoscale_1_1AutoScaleClient-members.html @@ -0,0 +1,171 @@ + + + + + +pyrax: Member List + + + + + + + + + + + +
+ + +
+ + + + + + + + + + + +
+
pyrax + +
+
Python Bindings for the Rackspace Cloud
+
+
+ + + + + + +
+
+
+
AutoScaleClient Member List
+
+
+This is the complete list of members for AutoScaleClient, including all inherited members. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
__init__BaseClient
add_policyAutoScaleClient
add_webhookAutoScaleClient
authenticateBaseClient
createBaseClient
deleteBaseClient
delete_policyAutoScaleClient
delete_webhookAutoScaleClient
disable_ssl_certificate_validationBaseClient
endpoint_typeBaseClient
execute_policyAutoScaleClient
findBaseClient
findallBaseClient
force_exception_to_status_codeBaseClient
getBaseClient
get_configurationAutoScaleClient
get_launch_configAutoScaleClient
get_policyAutoScaleClient
get_stateAutoScaleClient
get_timingsBaseClient
get_webhookAutoScaleClient
http_log_debugBaseClient
http_log_reqBaseClient
http_log_respBaseClient
listBaseClient
list_policiesAutoScaleClient
list_webhooksAutoScaleClient
management_urlBaseClient
method_deleteBaseClient
method_getBaseClient
method_postBaseClient
method_putBaseClient
nameAutoScaleClient [static]
pauseAutoScaleClient
projectidBaseClient
region_nameBaseClient
requestBaseClient
reset_timingsBaseClient
resumeAutoScaleClient
service_nameBaseClient
service_typeBaseClient
timesBaseClient
timingsBaseClient
unauthenticateBaseClient
updateAutoScaleClient
update_launch_configAutoScaleClient
update_launch_metadataAutoScaleClient
update_metadataAutoScaleClient
update_policyAutoScaleClient
update_webhookAutoScaleClient
update_webhook_metadataAutoScaleClient
user_agentBaseClient [static]
verify_sslBaseClient
versionBaseClient
+ + + + +
+ +
+ + + + + + + diff --git a/docs/html/classpyrax_1_1autoscale_1_1AutoScaleClient.html b/docs/html/classpyrax_1_1autoscale_1_1AutoScaleClient.html new file mode 100644 index 00000000..68ad13a3 --- /dev/null +++ b/docs/html/classpyrax_1_1autoscale_1_1AutoScaleClient.html @@ -0,0 +1,1098 @@ + + + + + +pyrax: AutoScaleClient Class Reference + + + + + + + + + + + +
+ + +
+ + + + + + + + + + + +
+
pyrax + +
+
Python Bindings for the Rackspace Cloud
+
+
+ + + + + + + + + +
+ +
+ + +
+
+ +
+
AutoScaleClient Class Reference
+
+
+ +

This is the primary class for interacting with AutoScale. + More...

+
+Inheritance diagram for AutoScaleClient:
+
+
+ + +BaseClient + +
+ +

List of all members.

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

+Public Member Functions

def get_state
 Returns the current state of the specified scaling group.
def pause
 Pauses all execution of the policies for the specified scaling group.
def resume
 Resumes execution of the policies for the specified scaling group.
def update
 Updates an existing ScalingGroup.
def update_metadata
 Adds the given metadata dict to the existing metadata for the scaling group.
def get_configuration
 Returns the scaling group's configuration in a dictionary.
def get_launch_config
 Returns the launch configuration for the specified scaling group.
def update_launch_config
 Updates the server launch configuration for an existing scaling group.
def update_launch_metadata
 Adds the given metadata dict to the existing metadata for the scaling group's launch configuration.
def add_policy
 Adds a policy with the given values to the specified scaling group.
def list_policies
 Returns a list of all policies defined for the specified scaling group.
def get_policy
 Gets the detail for the specified policy.
def update_policy
 Updates the specified policy.
def execute_policy
 Executes the specified policy for the scaling group.
def delete_policy
 Deletes the specified policy from the scaling group.
def add_webhook
 Adds a webhook to the specified policy.
def list_webhooks
 Returns a list of all webhooks defined for the specified policy.
def get_webhook
 Gets the detail for the specified webhook.
def update_webhook
 Updates the specified webhook.
def update_webhook_metadata
 Adds the given metadata dict to the existing metadata for the specified webhook.
def delete_webhook
 Deletes the specified webhook from the policy.

+Static Public Attributes

string name = "Autoscale"
+

Detailed Description

+

This is the primary class for interacting with AutoScale.

+

Member Function Documentation

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
def add_policy ( self,
 scaling_group,
 name,
 policy_type,
 cooldown,
 change,
 is_percent = False 
)
+
+
+ +

Adds a policy with the given values to the specified scaling group.

+

The 'change' parameter is treated as an absolute amount, unless 'is_percent' is True, in which case it is treated as a percentage.

+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
def add_webhook ( self,
 scaling_group,
 policy,
 name,
 metadata = None 
)
+
+
+ +

Adds a webhook to the specified policy.

+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
def delete_policy ( self,
 scaling_group,
 policy 
)
+
+
+ +

Deletes the specified policy from the scaling group.

+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
def delete_webhook ( self,
 scaling_group,
 policy,
 webhook 
)
+
+
+ +

Deletes the specified webhook from the policy.

+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
def execute_policy ( self,
 scaling_group,
 policy 
)
+
+
+ +

Executes the specified policy for the scaling group.

+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + +
def get_configuration ( self,
 scaling_group 
)
+
+
+ +

Returns the scaling group's configuration in a dictionary.

+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + +
def get_launch_config ( self,
 scaling_group 
)
+
+
+ +

Returns the launch configuration for the specified scaling group.

+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
def get_policy ( self,
 scaling_group,
 policy 
)
+
+
+ +

Gets the detail for the specified policy.

+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + +
def get_state ( self,
 scaling_group 
)
+
+
+ +

Returns the current state of the specified scaling group.

+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
def get_webhook ( self,
 scaling_group,
 policy,
 webhook 
)
+
+
+ +

Gets the detail for the specified webhook.

+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + +
def list_policies ( self,
 scaling_group 
)
+
+
+ +

Returns a list of all policies defined for the specified scaling group.

+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
def list_webhooks ( self,
 scaling_group,
 policy 
)
+
+
+ +

Returns a list of all webhooks defined for the specified policy.

+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + +
def pause ( self,
 scaling_group 
)
+
+
+ +

Pauses all execution of the policies for the specified scaling group.

+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + +
def resume ( self,
 scaling_group 
)
+
+
+ +

Resumes execution of the policies for the specified scaling group.

+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
def update ( self,
 scaling_group,
 name = None,
 cooldown = None,
 min_entities = None,
 max_entities = None,
 metadata = None 
)
+
+
+ +

Updates an existing ScalingGroup.

+

One or more of the attributes can be specified.

+

NOTE: if you specify metadata, it will *replace* any existing metadata. If you want to add to it, you either need to pass the complete dict of metadata, or call the update_metadata() method.

+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
def update_launch_config ( self,
 scaling_group,
 server_name = None,
 image = None,
 flavor = None,
 disk_config = None,
 metadata = None,
 personality = None,
 networks = None,
 load_balancers = None 
)
+
+
+ +

Updates the server launch configuration for an existing scaling group.

+

One or more of the available attributes can be specified.

+

NOTE: if you specify metadata, it will *replace* any existing metadata. If you want to add to it, you either need to pass the complete dict of metadata, or call the update_launch_metadata() method.

+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
def update_launch_metadata ( self,
 scaling_group,
 metadata 
)
+
+
+ +

Adds the given metadata dict to the existing metadata for the scaling group's launch configuration.

+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
def update_metadata ( self,
 scaling_group,
 metadata 
)
+
+
+ +

Adds the given metadata dict to the existing metadata for the scaling group.

+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
def update_policy ( self,
 scaling_group,
 policy,
 name = None,
 policy_type = None,
 cooldown = None,
 change = None,
 is_percent = False 
)
+
+
+ +

Updates the specified policy.

+

One or more of the parameters may be specified.

+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
def update_webhook ( self,
 scaling_group,
 policy,
 webhook,
 name = None,
 metadata = None 
)
+
+
+ +

Updates the specified webhook.

+

One or more of the parameters may be specified.

+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
def update_webhook_metadata ( self,
 scaling_group,
 policy,
 webhook,
 metadata 
)
+
+
+ +

Adds the given metadata dict to the existing metadata for the specified webhook.

+ +
+
+

Member Data Documentation

+ +
+
+ + + + +
string name = "Autoscale" [static]
+
+
+ +

Reimplemented from BaseClient.

+ +
+
+
The documentation for this class was generated from the following file: +
+ + + + +
+ +
+ + + + + + + diff --git a/docs/html/classpyrax_1_1autoscale_1_1AutoScaleClient.png b/docs/html/classpyrax_1_1autoscale_1_1AutoScaleClient.png new file mode 100644 index 0000000000000000000000000000000000000000..4027f4f87976e08976a4c613d911e15fa9cddad8 GIT binary patch literal 431 zcmeAS@N?(olHy`uVBq!ia0vp^X+Rvn!3-qtD1CSUq$C1-LR|m<{|{uoc=NTi|Ih>= z3ycpOIKbL@M;^%KC<*clW&kPzfvcxNj2IXg?L1u^Ln;{G&OO=3WXR(Z+&ks}{}jH+ zm~%!B5|IsB?QJ)n?)i4fa(VO#ukG3ioS$nY7!H`NvMP+7oF=>F=o{xVJ3q-MWd*&B zocuy*@&l$_e?oh%9?O-uyk?vAYhV6<(wp_46uWBMACogovpp7}|E9y$tUKiXJ6`Mi zx>2ur8?GhHR{nqY#-GxK?@SU~ev12?@M71V&r++U_FTY^2Sf-wJFey{k=P>W1}0{3 z@HmAzx%@j+!+wl0lR2SId|L=(o3e+S#QYl$_m6H)2%WCGY>#+Dh@6Us=giVC)vMv#N!H9ryY08=mu&$bQmNcw97grN`gr25GSgRf*SJA98#~2E3ue+6MnS- PLzltR)z4*}Q$iB}ypp#z literal 0 HcmV?d00001 diff --git a/docs/html/classpyrax_1_1autoscale_1_1AutoScalePolicy-members.html b/docs/html/classpyrax_1_1autoscale_1_1AutoScalePolicy-members.html new file mode 100644 index 00000000..2f43024e --- /dev/null +++ b/docs/html/classpyrax_1_1autoscale_1_1AutoScalePolicy-members.html @@ -0,0 +1,141 @@ + + + + + +pyrax: Member List + + + + + + + + + + + +
+ + +
+ + + + + + + + + + + +
+
pyrax + +
+
Python Bindings for the Rackspace Cloud
+
+
+ + + + + + +
+
+
+
AutoScalePolicy Member List
+
+ + + + + +
+ +
+ + + + + + + diff --git a/docs/html/classpyrax_1_1autoscale_1_1AutoScalePolicy.html b/docs/html/classpyrax_1_1autoscale_1_1AutoScalePolicy.html new file mode 100644 index 00000000..5a07fcf9 --- /dev/null +++ b/docs/html/classpyrax_1_1autoscale_1_1AutoScalePolicy.html @@ -0,0 +1,565 @@ + + + + + +pyrax: AutoScalePolicy Class Reference + + + + + + + + + + + +
+ + +
+ + + + + + + + + + + +
+
pyrax + +
+
Python Bindings for the Rackspace Cloud
+
+
+ + + + + + + + + +
+ +
+ + +
+
+ +
+
AutoScalePolicy Class Reference
+
+
+
+Inheritance diagram for AutoScalePolicy:
+
+
+ + +BaseResource + +
+ +

List of all members.

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

+Public Member Functions

def __init__
def get
 Gets the details for this policy.
def delete
 Deletes this policy.
def update
 Updates this policy.
def execute
 Executes this policy.
def add_webhook
 Adds a webhook to this policy.
def list_webhooks
 Returns a list of all webhooks for this policy.
def get_webhook
 Gets the detail for the specified webhook.
def update_webhook
 Updates the specified webhook.
def update_webhook_metadata
 Adds the given metadata dict to the existing metadata for the specified webhook.
def delete_webhook
 Deletes the specified webhook from this policy.

+Public Attributes

 scaling_group

+Static Public Attributes

 reload = get
+

Constructor & Destructor Documentation

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
def __init__ ( self,
 manager,
 info,
 scaling_group,
 args,
 kwargs 
)
+
+
+ +
+
+

Member Function Documentation

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
def add_webhook ( self,
 name,
 metadata = None 
)
+
+
+ +

Adds a webhook to this policy.

+ +
+
+ +
+
+ + + + + + + + +
def delete ( self)
+
+
+ +

Deletes this policy.

+ +

Reimplemented from BaseResource.

+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + +
def delete_webhook ( self,
 webhook 
)
+
+
+ +

Deletes the specified webhook from this policy.

+ +
+
+ +
+
+ + + + + + + + +
def execute ( self)
+
+
+ +

Executes this policy.

+ +
+
+ +
+
+ + + + + + + + +
def get ( self)
+
+
+ +

Gets the details for this policy.

+ +

Reimplemented from BaseResource.

+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + +
def get_webhook ( self,
 webhook 
)
+
+
+ +

Gets the detail for the specified webhook.

+ +
+
+ +
+
+ + + + + + + + +
def list_webhooks ( self)
+
+
+ +

Returns a list of all webhooks for this policy.

+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
def update ( self,
 name = None,
 policy_type = None,
 cooldown = None,
 change = None,
 is_percent = False 
)
+
+
+ +

Updates this policy.

+

One or more of the parameters may be specified.

+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
def update_webhook ( self,
 webhook,
 name = None,
 metadata = None 
)
+
+
+ +

Updates the specified webhook.

+

One or more of the parameters may be specified.

+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
def update_webhook_metadata ( self,
 webhook,
 metadata 
)
+
+
+ +

Adds the given metadata dict to the existing metadata for the specified webhook.

+ +
+
+

Member Data Documentation

+ +
+
+ + + + +
reload = get [static]
+
+
+ +

Reimplemented from BaseResource.

+ +
+
+ +
+
+ + + + +
scaling_group
+
+
+ +
+
+
The documentation for this class was generated from the following file: +
+ + + + +
+ +
+ + + + + + + diff --git a/docs/html/classpyrax_1_1autoscale_1_1AutoScalePolicy.png b/docs/html/classpyrax_1_1autoscale_1_1AutoScalePolicy.png new file mode 100644 index 0000000000000000000000000000000000000000..63686a43d4188ad92c889fd9878a11b03d114dc4 GIT binary patch literal 445 zcmeAS@N?(olHy`uVBq!ia0vp^nLr%C!3-pIHCN{XDTx4|5ZC|z{{xvX-h3_XKQsZz z0^^QSIaZ`8D!F zUCs-f=Sto6>)ckhR=BTmOSSI%6&mlueNYwS#YZ@UEAVTJ)I#7wH zSJ0$MQdw6xGk5v-ZJBdCEJb|D`;oJOV$m8>|yMQzopr0RNiEX8-^I literal 0 HcmV?d00001 diff --git a/docs/html/classpyrax_1_1autoscale_1_1AutoScaleWebhook-members.html b/docs/html/classpyrax_1_1autoscale_1_1AutoScaleWebhook-members.html new file mode 100644 index 00000000..de20c5d8 --- /dev/null +++ b/docs/html/classpyrax_1_1autoscale_1_1AutoScaleWebhook-members.html @@ -0,0 +1,135 @@ + + + + + +pyrax: Member List + + + + + + + + + + + +
+ + +
+ + + + + + + + + + + +
+
pyrax + +
+
Python Bindings for the Rackspace Cloud
+
+
+ + + + + + +
+
+
+
AutoScaleWebhook Member List
+
+ + + + + +
+ +
+ + + + + + + diff --git a/docs/html/classpyrax_1_1autoscale_1_1AutoScaleWebhook.html b/docs/html/classpyrax_1_1autoscale_1_1AutoScaleWebhook.html new file mode 100644 index 00000000..e3a5c6e2 --- /dev/null +++ b/docs/html/classpyrax_1_1autoscale_1_1AutoScaleWebhook.html @@ -0,0 +1,356 @@ + + + + + +pyrax: AutoScaleWebhook Class Reference + + + + + + + + + + + +
+ + +
+ + + + + + + + + + + +
+
pyrax + +
+
Python Bindings for the Rackspace Cloud
+
+
+ + + + + + + + + +
+ +
+ + +
+
+ +
+
AutoScaleWebhook Class Reference
+
+
+
+Inheritance diagram for AutoScaleWebhook:
+
+
+ + +BaseResource + +
+ +

List of all members.

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

+Public Member Functions

def __init__
def get
 Gets the details for the object.
def update
 Updates this webhook.
def update_metadata
 Adds the given metadata dict to the existing metadata for this webhook.
def delete
 Deletes this webhook.

+Public Attributes

 policy

+Static Public Attributes

 reload = get
+

Constructor & Destructor Documentation

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
def __init__ ( self,
 manager,
 info,
 policy,
 args,
 kwargs 
)
+
+
+ +
+
+

Member Function Documentation

+ +
+
+ + + + + + + + +
def delete ( self)
+
+
+ +

Deletes this webhook.

+ +

Reimplemented from BaseResource.

+ +
+
+ +
+
+ + + + + + + + +
def get ( self)
+
+
+ +

Gets the details for the object.

+ +

Reimplemented from BaseResource.

+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
def update ( self,
 name = None,
 metadata = None 
)
+
+
+ +

Updates this webhook.

+

One or more of the parameters may be specified.

+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + +
def update_metadata ( self,
 metadata 
)
+
+
+ +

Adds the given metadata dict to the existing metadata for this webhook.

+ +
+
+

Member Data Documentation

+ +
+
+ + + + +
policy
+
+
+ +
+
+ +
+
+ + + + +
reload = get [static]
+
+
+ +

Reimplemented from BaseResource.

+ +
+
+
The documentation for this class was generated from the following file: +
+ + + + +
+ +
+ + + + + + + diff --git a/docs/html/classpyrax_1_1autoscale_1_1AutoScaleWebhook.png b/docs/html/classpyrax_1_1autoscale_1_1AutoScaleWebhook.png new file mode 100644 index 0000000000000000000000000000000000000000..aba59c0f90a43a7467b10de2d94351ae22763a3c GIT binary patch literal 459 zcmeAS@N?(olHy`uVBq!ia0vp^RX`lT!3-oHZkX5xq$C1-LR|m<{|{uoc=NTi|Ih>= z3ycpOIKbL@M;^%KC<*clW&kPzfvcxNj2IXgqdZ+4Ln;{G&b_(mumVTh(zzf1%KwZ} z;8=9_QtQc+`LkzmecE{R-n8^v8t2_FG5q?Lp`;X*Q>pr!B`W`T%6ymY3{U;6Q)(to zJpcEOgL&|;sV}GY?B()K&(by7dNt+R94rfdb>2#W5Yor~$I6QWz{zEf6_2SA% z_rHsy_}`Z8yXLYs@_Xrz=Bu;Mt>il{$!Bumy4&*JPuEtw&)u)K>zYZK9Eec*wM-T$ z<-p7fBj!s_G2=>2<#|!PXs+-xc0t$wf6R8y$&s3J^-}u$hJyhHpLtE96&D>cUwq); z_t4KKYi?-12|j=1Q^L}f8*En_Ol*(OJ<3_~>OgKu^X*ss2LF8a%=Veg^!cWl`)!-8 z>mFBmB(bjDq@3ZK<>1XOaa6CIvs-JoP~OFj9>Lyy8S-MTaxr}`4%KV!J^XdA+2m)} s-EGTuzopr0GV3Sj{pDw literal 0 HcmV?d00001 diff --git a/docs/html/classpyrax_1_1autoscale_1_1ScalingGroup-members.html b/docs/html/classpyrax_1_1autoscale_1_1ScalingGroup-members.html new file mode 100644 index 00000000..eaf0da0d --- /dev/null +++ b/docs/html/classpyrax_1_1autoscale_1_1ScalingGroup-members.html @@ -0,0 +1,164 @@ + + + + + +pyrax: Member List + + + + + + + + + + + +
+ + +
+ + + + + + + + + + + +
+
pyrax + +
+
Python Bindings for the Rackspace Cloud
+
+
+ + + + + + +
+
+
+
ScalingGroup Member List
+
+ + + + + +
+ +
+ + + + + + + diff --git a/docs/html/classpyrax_1_1autoscale_1_1ScalingGroup.html b/docs/html/classpyrax_1_1autoscale_1_1ScalingGroup.html new file mode 100644 index 00000000..b918ab2b --- /dev/null +++ b/docs/html/classpyrax_1_1autoscale_1_1ScalingGroup.html @@ -0,0 +1,1190 @@ + + + + + +pyrax: ScalingGroup Class Reference + + + + + + + + + + + +
+ + +
+ + + + + + + + + + + +
+
pyrax + +
+
Python Bindings for the Rackspace Cloud
+
+
+ + + + + + + + + +
+ +
+ + +
+
+ +
+
ScalingGroup Class Reference
+
+
+
+Inheritance diagram for ScalingGroup:
+
+
+ + +BaseResource + +
+ +

List of all members.

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

+Public Member Functions

def __init__
def get_state
 Returns the current state of this scaling group.
def pause
 Pauses all execution of the policies for this scaling group.
def resume
 Resumes execution of the policies for this scaling group.
def update
 Updates this ScalingGroup.
def update_metadata
 Adds the given metadata dict to the existing metadata for this scaling group.
def get_configuration
 Returns the scaling group configuration in a dictionary.
def get_launch_config
 Returns the launch configuration for this scaling group.
def update_launch_config
 Updates the server launch configuration for this scaling group.
def update_launch_metadata
 Adds the given metadata dict to the existing metadata for this scaling group's launch configuration.
def add_policy
 Adds a policy with the given values to this scaling group.
def list_policies
 Returns a list of all policies defined for this scaling group.
def get_policy
 Gets the detail for the specified policy.
def update_policy
 Updates the specified policy.
def execute_policy
 Executes the specified policy for this scaling group.
def delete_policy
 Deletes the specified policy from this scaling group.
def add_webhook
 Adds a webhook to the specified policy.
def list_webhooks
 Returns a list of all webhooks for the specified policy.
def update_webhook
 Updates the specified webhook.
def update_webhook_metadata
 Adds the given metadata dict to the existing metadata for the specified webhook.
def delete_webhook
 Deletes the specified webhook from the specified policy.
def policy_count
def name
 The following property declarations allow access to the base attributes of the ScalingGroup held in the 'groupConfiguration' dict as if they were native attributes.
def name
def cooldown
def cooldown
def metadata
def metadata
def min_entities
def min_entities
def max_entities
def max_entities

+Public Attributes

 policies
+

Constructor & Destructor Documentation

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

Member Function Documentation

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
def add_policy ( self,
 name,
 policy_type,
 cooldown,
 change,
 is_percent = False 
)
+
+
+ +

Adds a policy with the given values to this scaling group.

+

The 'change' parameter is treated as an absolute amount, unless 'is_percent' is True, in which case it is treated as a percentage.

+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
def add_webhook ( self,
 policy,
 name,
 metadata = None 
)
+
+
+ +

Adds a webhook to the specified policy.

+ +
+
+ +
+
+ + + + + + + + +
def cooldown ( self)
+
+
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + +
def cooldown ( self,
 val 
)
+
+
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + +
def delete_policy ( self,
 policy 
)
+
+
+ +

Deletes the specified policy from this scaling group.

+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
def delete_webhook ( self,
 policy,
 webhook 
)
+
+
+ +

Deletes the specified webhook from the specified policy.

+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + +
def execute_policy ( self,
 policy 
)
+
+
+ +

Executes the specified policy for this scaling group.

+ +
+
+ +
+
+ + + + + + + + +
def get_configuration ( self)
+
+
+ +

Returns the scaling group configuration in a dictionary.

+ +
+
+ +
+
+ + + + + + + + +
def get_launch_config ( self)
+
+
+ +

Returns the launch configuration for this scaling group.

+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + +
def get_policy ( self,
 policy 
)
+
+
+ +

Gets the detail for the specified policy.

+ +
+
+ +
+
+ + + + + + + + +
def get_state ( self)
+
+
+ +

Returns the current state of this scaling group.

+ +
+
+ +
+
+ + + + + + + + +
def list_policies ( self)
+
+
+ +

Returns a list of all policies defined for this scaling group.

+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + +
def list_webhooks ( self,
 policy 
)
+
+
+ +

Returns a list of all webhooks for the specified policy.

+ +
+
+ +
+
+ + + + + + + + +
def max_entities ( self)
+
+
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + +
def max_entities ( self,
 val 
)
+
+
+ +
+
+ +
+
+ + + + + + + + +
def metadata ( self)
+
+
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + +
def metadata ( self,
 val 
)
+
+
+ +
+
+ +
+
+ + + + + + + + +
def min_entities ( self)
+
+
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + +
def min_entities ( self,
 val 
)
+
+
+ +
+
+ +
+
+ + + + + + + + +
def name ( self)
+
+
+ +

The following property declarations allow access to the base attributes of the ScalingGroup held in the 'groupConfiguration' dict as if they were native attributes.

+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + +
def name ( self,
 val 
)
+
+
+ +
+
+ +
+
+ + + + + + + + +
def pause ( self)
+
+
+ +

Pauses all execution of the policies for this scaling group.

+ +
+
+ +
+
+ + + + + + + + +
def policy_count ( self)
+
+
+ +
+
+ +
+
+ + + + + + + + +
def resume ( self)
+
+
+ +

Resumes execution of the policies for this scaling group.

+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
def update ( self,
 name = None,
 cooldown = None,
 min_entities = None,
 max_entities = None,
 metadata = None 
)
+
+
+ +

Updates this ScalingGroup.

+

One or more of the attributes can be specified.

+

NOTE: if you specify metadata, it will *replace* any existing metadata. If you want to add to it, you either need to pass the complete dict of metadata, or call the update_metadata() method.

+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
def update_launch_config ( self,
 server_name = None,
 image = None,
 flavor = None,
 disk_config = None,
 metadata = None,
 personality = None,
 networks = None,
 load_balancers = None 
)
+
+
+ +

Updates the server launch configuration for this scaling group.

+

One or more of the available attributes can be specified.

+

NOTE: if you specify metadata, it will *replace* any existing metadata. If you want to add to it, you either need to pass the complete dict of metadata, or call the update_launch_metadata() method.

+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + +
def update_launch_metadata ( self,
 metadata 
)
+
+
+ +

Adds the given metadata dict to the existing metadata for this scaling group's launch configuration.

+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + +
def update_metadata ( self,
 metadata 
)
+
+
+ +

Adds the given metadata dict to the existing metadata for this scaling group.

+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
def update_policy ( self,
 policy,
 name = None,
 policy_type = None,
 cooldown = None,
 change = None,
 is_percent = False 
)
+
+
+ +

Updates the specified policy.

+

One or more of the parameters may be specified.

+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
def update_webhook ( self,
 policy,
 webhook,
 name = None,
 metadata = None 
)
+
+
+ +

Updates the specified webhook.

+

One or more of the parameters may be specified.

+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
def update_webhook_metadata ( self,
 policy,
 webhook,
 metadata 
)
+
+
+ +

Adds the given metadata dict to the existing metadata for the specified webhook.

+ +
+
+

Member Data Documentation

+ +
+
+ + + + +
policies
+
+
+ +
+
+
The documentation for this class was generated from the following file: +
+ + + + +
+ +
+ + + + + + + diff --git a/docs/html/classpyrax_1_1autoscale_1_1ScalingGroup.png b/docs/html/classpyrax_1_1autoscale_1_1ScalingGroup.png new file mode 100644 index 0000000000000000000000000000000000000000..2016235735f0d2848f2c13771c40c41bee836ba0 GIT binary patch literal 421 zcmeAS@N?(olHy`uVBq!ia0vp^aX=iv!3-pqvl;0CDTx4|5ZC|z{{xvX-h3_XKQsZz z0^{mdKI;Vst0P;J+WB>pF literal 0 HcmV?d00001 diff --git a/docs/html/classpyrax_1_1autoscale_1_1ScalingGroupManager-members.html b/docs/html/classpyrax_1_1autoscale_1_1ScalingGroupManager-members.html new file mode 100644 index 00000000..e6f1f8aa --- /dev/null +++ b/docs/html/classpyrax_1_1autoscale_1_1ScalingGroupManager-members.html @@ -0,0 +1,153 @@ + + + + + +pyrax: Member List + + + + + + + + + + + +
+ + +
+ + + + + + + + + + + +
+
pyrax + +
+
Python Bindings for the Rackspace Cloud
+
+
+ + + + + + +
+
+
+
ScalingGroupManager Member List
+
+ + + + + +
+ +
+ + + + + + + diff --git a/docs/html/classpyrax_1_1autoscale_1_1ScalingGroupManager.html b/docs/html/classpyrax_1_1autoscale_1_1ScalingGroupManager.html new file mode 100644 index 00000000..2d1f7202 --- /dev/null +++ b/docs/html/classpyrax_1_1autoscale_1_1ScalingGroupManager.html @@ -0,0 +1,1128 @@ + + + + + +pyrax: ScalingGroupManager Class Reference + + + + + + + + + + + +
+ + +
+ + + + + + + + + + + +
+
pyrax + +
+
Python Bindings for the Rackspace Cloud
+
+
+ + + + + + + + + +
+ +
+ + +
+
+ +
+
ScalingGroupManager Class Reference
+
+
+
+Inheritance diagram for ScalingGroupManager:
+
+
+ + +BaseManager + +
+ +

List of all members.

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

+Public Member Functions

def __init__
def get_state
 Returns the current state of the specified scaling group as a dictionary.
def pause
 Pauses all execution of the policies for the specified scaling group.
def resume
 Resumes execution of the policies for the specified scaling group.
def get_configuration
 Returns the scaling group's configuration in a dictionary.
def update
 Updates an existing ScalingGroup.
def update_metadata
 Adds the given metadata dict to the existing metadata for the scaling group.
def get_launch_config
 Returns the launch configuration for the specified scaling group.
def update_launch_config
 Updates the server launch configuration for an existing scaling group.
def update_launch_metadata
 Adds the given metadata dict to the existing metadata for the scaling group's launch configuration.
def add_policy
 Adds a policy with the given values to the specified scaling group.
def list_policies
 Returns a list of all policies defined for the specified scaling group.
def get_policy
 Gets the detail for the specified policy.
def update_policy
 Updates the specified policy.
def execute_policy
 Executes the specified policy for this scaling group.
def delete_policy
 Deletes the specified policy from the scaling group.
def add_webhook
 Adds a webhook to the specified policy.
def list_webhooks
 Returns a list of all webhooks for the specified policy.
def get_webhook
 Gets the detail for the specified webhook.
def update_webhook
 Updates the specified webhook.
def update_webhook_metadata
 Adds the given metadata dict to the existing metadata for the specified webhook.
def delete_webhook
 Deletes the specified webhook from the specified policy.
+

Constructor & Destructor Documentation

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
def __init__ ( self,
 api,
 resource_class = None,
 response_key = None,
 plural_response_key = None,
 uri_base = None 
)
+
+
+ +

Reimplemented from BaseManager.

+ +
+
+

Member Function Documentation

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
def add_policy ( self,
 scaling_group,
 name,
 policy_type,
 cooldown,
 change,
 is_percent = False 
)
+
+
+ +

Adds a policy with the given values to the specified scaling group.

+

The 'change' parameter is treated as an absolute amount, unless 'is_percent' is True, in which case it is treated as a percentage.

+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
def add_webhook ( self,
 scaling_group,
 policy,
 name,
 metadata = None 
)
+
+
+ +

Adds a webhook to the specified policy.

+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
def delete_policy ( self,
 scaling_group,
 policy 
)
+
+
+ +

Deletes the specified policy from the scaling group.

+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
def delete_webhook ( self,
 scaling_group,
 policy,
 webhook 
)
+
+
+ +

Deletes the specified webhook from the specified policy.

+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
def execute_policy ( self,
 scaling_group,
 policy 
)
+
+
+ +

Executes the specified policy for this scaling group.

+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + +
def get_configuration ( self,
 scaling_group 
)
+
+
+ +

Returns the scaling group's configuration in a dictionary.

+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + +
def get_launch_config ( self,
 scaling_group 
)
+
+
+ +

Returns the launch configuration for the specified scaling group.

+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
def get_policy ( self,
 scaling_group,
 policy 
)
+
+
+ +

Gets the detail for the specified policy.

+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + +
def get_state ( self,
 scaling_group 
)
+
+
+ +

Returns the current state of the specified scaling group as a dictionary.

+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
def get_webhook ( self,
 scaling_group,
 policy,
 webhook 
)
+
+
+ +

Gets the detail for the specified webhook.

+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + +
def list_policies ( self,
 scaling_group 
)
+
+
+ +

Returns a list of all policies defined for the specified scaling group.

+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
def list_webhooks ( self,
 scaling_group,
 policy 
)
+
+
+ +

Returns a list of all webhooks for the specified policy.

+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + +
def pause ( self,
 scaling_group 
)
+
+
+ +

Pauses all execution of the policies for the specified scaling group.

+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + +
def resume ( self,
 scaling_group 
)
+
+
+ +

Resumes execution of the policies for the specified scaling group.

+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
def update ( self,
 scaling_group,
 name = None,
 cooldown = None,
 min_entities = None,
 max_entities = None,
 metadata = None 
)
+
+
+ +

Updates an existing ScalingGroup.

+

One or more of the attributes can be specified.

+

NOTE: if you specify metadata, it will *replace* any existing metadata. If you want to add to it, you either need to pass the complete dict of metadata, or call the update_metadata() method.

+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
def update_launch_config ( self,
 scaling_group,
 server_name = None,
 image = None,
 flavor = None,
 disk_config = None,
 metadata = None,
 personality = None,
 networks = None,
 load_balancers = None 
)
+
+
+ +

Updates the server launch configuration for an existing scaling group.

+

One or more of the available attributes can be specified.

+

NOTE: if you specify metadata, it will *replace* any existing metadata. If you want to add to it, you either need to pass the complete dict of metadata, or call the update_launch_metadata() method.

+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
def update_launch_metadata ( self,
 scaling_group,
 metadata 
)
+
+
+ +

Adds the given metadata dict to the existing metadata for the scaling group's launch configuration.

+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
def update_metadata ( self,
 scaling_group,
 metadata 
)
+
+
+ +

Adds the given metadata dict to the existing metadata for the scaling group.

+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
def update_policy ( self,
 scaling_group,
 policy,
 name = None,
 policy_type = None,
 cooldown = None,
 change = None,
 is_percent = False 
)
+
+
+ +

Updates the specified policy.

+

One or more of the parameters may be specified.

+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
def update_webhook ( self,
 scaling_group,
 policy,
 webhook,
 name = None,
 metadata = None 
)
+
+
+ +

Updates the specified webhook.

+

One or more of the parameters may be specified.

+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
def update_webhook_metadata ( self,
 scaling_group,
 policy,
 webhook,
 metadata 
)
+
+
+ +

Adds the given metadata dict to the existing metadata for the specified webhook.

+ +
+
+
The documentation for this class was generated from the following file: +
+ + + + +
+ +
+ + + + + + + diff --git a/docs/html/classpyrax_1_1autoscale_1_1ScalingGroupManager.png b/docs/html/classpyrax_1_1autoscale_1_1ScalingGroupManager.png new file mode 100644 index 0000000000000000000000000000000000000000..0e81d702442d896012a05b9280b0a54484a6f16e GIT binary patch literal 541 zcmeAS@N?(olHy`uVBq!ia0vp^JwP15!3-q-Jj#s#QW60^A+G=b{|7Q(y!l$%e`o@b z1;z&s9ANFdBM;XLn;{G&b=MPqR8WNGVki2|LVUT zob+0Dp43?9yYd9ftjQA&WLN56IrV$14>M1~vcm#`7f*=&dY)KTmV8R_O|gND!p~@X zO`iI~Z{ic9t3(c6HYnBpyHb|<#q@;f{AWyz(<3aJKc1M&e9hqHj9Jw_8a7$i6lP5P zVa)G#HL6CZhu`V`T&-RC&(0{ea$nz5-IkTPBWu%s7v1(ZDdE2RYnkJBHp{hImYUg% z&HU)y6fSKb&$&53yZDxw=kv!2+j13WO$C!n69Rl272s%idTw`|+Zc{ndST-jMCTA%6eLcY{RGcyy9 z -CloudBlockStorageClient -CloudDatabaseClient -CloudDNSClient -CloudLoadBalancerClient -CloudNetworkClient +AutoScaleClient +CloudBlockStorageClient +CloudDatabaseClient +CloudDNSClient +CloudLoadBalancerClient +CloudMonitorClient +CloudNetworkClient @@ -316,6 +318,8 @@

Creates a new resource.

+

Reimplemented in CloudMonitorClient.

+ @@ -345,7 +349,7 @@

Deletes a specific resource.

-

Reimplemented in CloudNetworkClient.

+

Reimplemented in CloudMonitorClient, and CloudNetworkClient.

@@ -377,6 +381,8 @@

Finds a single item with attributes matching ``**kwargs``.

This isn't very efficient: it loads the entire list then filters on the Python side.

+

Reimplemented in CloudMonitorClient.

+ @@ -407,6 +413,8 @@

Finds all items with attributes matching ``**kwargs``.

This isn't very efficient: it loads the entire list then filters on the Python side.

+

Reimplemented in CloudMonitorClient.

+ @@ -436,6 +444,8 @@

Gets a specific resource.

+

Reimplemented in CloudMonitorClient.

+ @@ -560,7 +570,7 @@

Returns a list of all resources.

-

Reimplemented in CloudDNSClient.

+

Reimplemented in CloudMonitorClient, and CloudDNSClient.

@@ -873,7 +883,7 @@ @@ -1002,7 +1012,7 @@ diff --git a/docs/html/classpyrax_1_1client_1_1BaseClient.png b/docs/html/classpyrax_1_1client_1_1BaseClient.png index c07862af909577531e88ed3e2458e160f573ea98..ea0e2a72572087b3059e3b1fafec356099199a0a 100644 GIT binary patch delta 1434 zcmYjR2{7AP98UhE%~2((vz1hoN)c2$rH=8Ji7Tv4oJF^amZg+ly0%BsmMLwW8`{!# z6+zu~b%`u?N;HmT%A$2t)e>g~A%yH-kC~nM&G)|dz2EQm-kW*fD?l}4hzWF82L<$A zGz+%h|`gB5PI$0@<=6GFcEYos;$Q_@VVi^v|Mu~`>{03oDo^->AT#3!CggP}U^n%(k)9S7xP4GNvZ~#k zCS1#3IWz5IwWTwRC1!UiI9!d;yEch(q~@bYoQcWxNPRs&e05@ewZAKDCf}+91-XvT~d)3 z3svgEp@OenM0ZItm(JDRL8w|X#%2;Cvnpdrj2tQTTW07{s7v0qq@$H+4{bw8=8vcD z-t9)~dr@$|ALDkU4zP)>Gl;szcJp8t@I?k~b7t1(J%Yy{Rqh^S zZ>(KFxkfIGT#RG(O_4r7V%Zy5>SUXU%AQ-9a>t1oCqhG3tUTJC=R5mvQHJ%ySf;J& zs@?bwBAkpd>|8saQ)jw zFrv7UGo87&Vz~<$>O(FHA@ z<+0EWn3b2qJWJwo1;qg*Wx9Yfu3=t(RVO8*rzE%Z(uck6YyLF$ zKb^*k-gtl}dG#I#e2Gh4Nf=VB29{nmw9d@pZCR+vbtWxbe=ReHtJDg`e{c)S7Yk5@ zej@_0v4{9BqPHYA2ESjqd(78-!%z)S;5Ch^(n|{65gsRBN&8_Vt(q!y@#)6qry^^W z6M-igTE2k7T_B$rNE zOcwKv99o>uEL(YM$|`$oKk%*_42rpDxc-AgcwA~bXVD#>EasMaw)l`cq|N6uB0nPn zYZ^WpnMJLnOt!=n7h(mlps1BL!BLHhM?uO*w6hyCUjA^zpnp_&HCt*HmVld3;oy#m zh+1qCYHERP!ePixB#{_6CCI)g$6Q7Z)d~D=ysxGekrB(Shqmo3P|TAm24u{DQCgVa QpzjvuWammPqny6|AL$;Jpa1{> delta 1150 zcmV-^1cCd(3#SPoiBL{Q4GJ0x0000DNk~Le0009t0000`2m=5B0Qe!ml#wAie*`v3 zL_t(|0qvd1lG`v01qDyl{QoECAT9vK1(fLt%j%a@Vl9+fAe*=zWL;$AFgs*VX+R?c zX$V0YLRgtdLy!h(2-36%h)8=-xG0qe&%cS;Azva*Z&bWkyN)#E@zR8b6aNhjCf$^8 zkwYZijx^-C(gaD;U(;ah*?fdFf8>$UNbVU)g}yY!MWi7Q?KDS_C;TI!pBQQKS)?II z6IC!mR60$i4IvGAwlrCfWKnq*X~@&15s}jkkwcCnAH=Ilm3WYEL>lruX+R@L0~#Sn zLkQ9k!pcM%f;31&kOnkDkcN;oD|6#8JLCcRr38c^4Iv+O<`-)SK^j6nf9nj^5P~#> zd{!GuKnT(hf;5C64IxNF2+|NjkcJSXAp~g%K^n5pL=&=O*d3vS@{1@bA(T*3LMWl6 zgit~W9F$NZ4U|wK4U|wqNeQ8Zk`h7*C2&wei8N3`i8N3`2_+?j5=u%4C6ts9N+{pW z&(i!ZeHxTdZb|v`+BUj`e^5fX4<#jp5=x|j5=x|DqM<|@CK}2wkw!%1^?FI|MmaB6 zuZI)8;n(M-n_G`_l+X!$d2pZ6gLZqOy~yVcl1EH)jVVVg&2PArcGaAFYU!dLPjx(h zqpDh(I9Xks_QSiwt3w($yQT30&q?D#yDN9mRCfyRYH#Juxr8IFrRF>v`lP`x&={#RNSl2(ERb$5`^a1CqitK!oW}8I2DUBaF zR7>rMvs@!eCrdHc#ahq<>y=Fl!Sey*S~{o=km^fzU7AHZSJj3zYQn<9tu*Czwe-~a zG|E2X%9=jOUYwAoe+^umzPu^@nnGJ3%?Mc+@j7(OH6u-jWw;gwl{E`t^Z|3yG{|a; zGpJy2DqEzls$OY=rmC@+=92cLqE@{pR#=OR??_`ijm0%^wj+7bJ|RufY1Cn7dfQxY zNn^`(tz29St;!Z-y&v$VG^TKsKts zf4kBCLYmmY>oO0yR!ehzVW+ZbWu$%9^#N<7ISZFxFd>brs%xZChFsxV6H!Q3+3S}{ zV>X@Ze>c$nP8wC#Ij+UhG}l6JlUCBZK47Ud>b~<&u_nDxJ!$GvL|L2C7>&Eqm@VGi z+~|s<5_*9ve^XoU;C{55(##>(&iJ{8lrEOqTsx(y)O7R#j#~OESVyRDjP`Bg5E_%*{1@YHfdtqW)UF*xcOvsE?HRD3$){qUXT_`d?>^C + + + + +pyrax: Member List + + + + + + + + + + + +
+ + +
+ + + + + + + + + + + +
+
pyrax + +
+
Python Bindings for the Rackspace Cloud
+
+
+ + + + + + +
+
+
+
CloudMonitorAlarm Member List
+
+ + + + + +
+ +
+ + + + + + + diff --git a/docs/html/classpyrax_1_1cloudmonitoring_1_1CloudMonitorAlarm.html b/docs/html/classpyrax_1_1cloudmonitoring_1_1CloudMonitorAlarm.html new file mode 100644 index 00000000..af986ba5 --- /dev/null +++ b/docs/html/classpyrax_1_1cloudmonitoring_1_1CloudMonitorAlarm.html @@ -0,0 +1,342 @@ + + + + + +pyrax: CloudMonitorAlarm Class Reference + + + + + + + + + + + +
+ + +
+ + + + + + + + + + + +
+
pyrax + +
+
Python Bindings for the Rackspace Cloud
+
+
+ + + + + + + + + +
+ +
+ + +
+
+ +
+
CloudMonitorAlarm Class Reference
+
+
+ +

Alarms bind alerting rules, entities, and notification plans into a logical unit. + More...

+
+Inheritance diagram for CloudMonitorAlarm:
+
+
+ + +BaseResource + +
+ +

List of all members.

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

+Public Member Functions

def __init__
def update
 Updates this alarm.
def get
 Fetches the current state of the alarm from the API and updates the object.
def name

+Public Attributes

 entity

+Static Public Attributes

 reload = get
+

Detailed Description

+

Alarms bind alerting rules, entities, and notification plans into a logical unit.

+

Constructor & Destructor Documentation

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
def __init__ ( self,
 manager,
 info,
 entity,
 key = None,
 loaded = False 
)
+
+
+ +
+
+

Member Function Documentation

+ +
+
+ + + + + + + + +
def get ( self)
+
+
+ +

Fetches the current state of the alarm from the API and updates the object.

+ +

Reimplemented from BaseResource.

+ +
+
+ +
+
+ + + + + + + + +
def name ( self)
+
+
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
def update ( self,
 criteria = None,
 disabled = False,
 label = None,
 name = None,
 metadata = None 
)
+
+
+ +

Updates this alarm.

+ +
+
+

Member Data Documentation

+ +
+
+ + + + +
entity
+
+
+ +
+
+ +
+
+ + + + +
reload = get [static]
+
+
+ +

Reimplemented from BaseResource.

+ +
+
+
The documentation for this class was generated from the following file: +
+ + + + +
+ +
+ + + + + + + diff --git a/docs/html/classpyrax_1_1cloudmonitoring_1_1CloudMonitorAlarm.png b/docs/html/classpyrax_1_1cloudmonitoring_1_1CloudMonitorAlarm.png new file mode 100644 index 0000000000000000000000000000000000000000..cfdc9889dd6e0381d20a5f0dc49ff1e1d58f71e4 GIT binary patch literal 441 zcmeAS@N?(olHy`uVBq!ia0vp^l|UT8!3-q1+O=ANlth3}i0l9V|AEXGZ@!lHADRGU zf$@O@2Ut7r$OE|?B|(0{3_wL7aP?G(5d#CGho_5UNCo5Dxwrcc8*sSTu6*+U|C3sS z8$V`6@76fAz|2pwotbUv`iGBGA8!6BaWY?xnL*8e%@+L$pP$b8=DKOh@^G08m&D!V zm+w^bUh?N+>e8i4tgg4(Y3sBLomIOuk^7y_%{eQsEjST0{pzzPHyz}xa-(CHhAuZ+ z|Fizr9iLlI?U;?09Z#$FzMXo0>dj}>vr{I?dwttfaQxBQl-`L&s zS-tnKr6qsad-(}(bGGwdOPzR0wy0FcsQ*&*?K^efOpWJ0oF(%lKGPNK;`#pHHrX@I Wlrmcv + + + + +pyrax: Member List + + + + + + + + + + + +
+ + +
+ + + + + + + + + + + +
+
pyrax + +
+
Python Bindings for the Rackspace Cloud
+
+
+ + + + + + +
+
+
+
CloudMonitorCheck Member List
+
+ + + + + +
+ +
+ + + + + + + diff --git a/docs/html/classpyrax_1_1cloudmonitoring_1_1CloudMonitorCheck.html b/docs/html/classpyrax_1_1cloudmonitoring_1_1CloudMonitorCheck.html new file mode 100644 index 00000000..0d4fa992 --- /dev/null +++ b/docs/html/classpyrax_1_1cloudmonitoring_1_1CloudMonitorCheck.html @@ -0,0 +1,541 @@ + + + + + +pyrax: CloudMonitorCheck Class Reference + + + + + + + + + + + +
+ + +
+ + + + + + + + + + + +
+
pyrax + +
+
Python Bindings for the Rackspace Cloud
+
+
+ + + + + + + + + +
+ +
+ + +
+
+ +
+
CloudMonitorCheck Class Reference
+
+
+ +

Represents a check defined for an entity. + More...

+
+Inheritance diagram for CloudMonitorCheck:
+
+
+ + +BaseResource + +
+ +

List of all members.

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

+Public Member Functions

def __init__
def name
def get
 Reloads the check with its current values.
def update
 Updates an existing check with any of the parameters.
def delete
 Removes this check from its entity.
def list_metrics
 Returns a list of all the metrics associated with this check.
def get_metric_data_points
 Returns the data points for a given metric for the given period.
def create_alarm
 Creates an alarm that binds this check with a notification plan.

+Public Attributes

 entity

+Static Public Attributes

 reload = get
+

Detailed Description

+

Represents a check defined for an entity.

+

Constructor & Destructor Documentation

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
def __init__ ( self,
 manager,
 info,
 entity,
 key = None,
 loaded = False 
)
+
+
+ +
+
+

Member Function Documentation

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
def create_alarm ( self,
 notification_plan,
 criteria = None,
 disabled = False,
 label = None,
 name = None,
 metadata = None 
)
+
+
+ +

Creates an alarm that binds this check with a notification plan.

+ +
+
+ +
+
+ + + + + + + + +
def delete ( self)
+
+
+ +

Removes this check from its entity.

+ +

Reimplemented from BaseResource.

+ +
+
+ +
+
+ + + + + + + + +
def get ( self)
+
+
+ +

Reloads the check with its current values.

+ +

Reimplemented from BaseResource.

+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
def get_metric_data_points ( self,
 metric,
 start,
 end,
 points = None,
 resolution = None,
 stats = None 
)
+
+
+ +

Returns the data points for a given metric for the given period.

+

The 'start' and 'end' times must be specified; they can be be either Python date/datetime values, or a Unix timestamp.

+

The 'points' parameter represents the number of points to return. The 'resolution' parameter represents the granularity of the data. You must specify either 'points' or 'resolution'. The allowed values for resolution are: FULL MIN5 MIN20 MIN60 MIN240 MIN1440

+

Finally, the 'stats' parameter specifies the stats you want returned. By default only the 'average' is returned. You omit this parameter, pass in a single value, or pass in a list of values. The allowed values are: average variance min max

+ +
+
+ +
+
+ + + + + + + + +
def list_metrics ( self)
+
+
+ +

Returns a list of all the metrics associated with this check.

+ +
+
+ +
+
+ + + + + + + + +
def name ( self)
+
+
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
def update ( self,
 label = None,
 name = None,
 disabled = None,
 metadata = None,
 monitoring_zones_poll = None,
 timeout = None,
 period = None,
 target_alias = None,
 target_hostname = None,
 target_receiver = None 
)
+
+
+ +

Updates an existing check with any of the parameters.

+ +
+
+

Member Data Documentation

+ +
+
+ + + + +
entity
+
+
+ +
+
+ +
+
+ + + + +
reload = get [static]
+
+
+ +

Reimplemented from BaseResource.

+ +
+
+
The documentation for this class was generated from the following file: +
+ + + + +
+ +
+ + + + + + + diff --git a/docs/html/classpyrax_1_1cloudmonitoring_1_1CloudMonitorCheck.png b/docs/html/classpyrax_1_1cloudmonitoring_1_1CloudMonitorCheck.png new file mode 100644 index 0000000000000000000000000000000000000000..4679c8d8c5af44fec2a3b889c1afde03189d5f40 GIT binary patch literal 448 zcmeAS@N?(olHy`uVBq!ia0vp^H9#D|!3-qdtb2G6NJ#|vgt-3y{~ySF@#br3|Dg#$ z78oBmaDcV*jy#adQ4-`A%m7pb0#{Fk7%?y~`g^)KhEy=VoqMqFumX?E%& zpVxn_F}OE(9`n^5)p_+(-{T$j^gFU7~8xpuN+{QQ!oGxuL`T*JwyKVgmdLch2@dn1(hh%Zpl z+s~EX(0xzsL{yVznyu=rmfSO}F}a$;3fA6od&Pb!&wS;l_xNkl`vbovnctt({1M`6 zJoDJxM)OaZ6(8dT?kI?*UgwjYeOKybdg{SjZ_m~JufKO^<=wnL`N4*H^2xe)^mhNK hQl0Zb{Q&cE{zpzySARG8UIYd=gQu&X%Q~loCIG;N%J2XH literal 0 HcmV?d00001 diff --git a/docs/html/classpyrax_1_1cloudmonitoring_1_1CloudMonitorCheckType-members.html b/docs/html/classpyrax_1_1cloudmonitoring_1_1CloudMonitorCheckType-members.html new file mode 100644 index 00000000..16d1e0c8 --- /dev/null +++ b/docs/html/classpyrax_1_1cloudmonitoring_1_1CloudMonitorCheckType-members.html @@ -0,0 +1,134 @@ + + + + + +pyrax: Member List + + + + + + + + + + + +
+ + +
+ + + + + + + + + + + +
+
pyrax + +
+
Python Bindings for the Rackspace Cloud
+
+
+ + + + + + +
+
+
+
CloudMonitorCheckType Member List
+
+ + + + + +
+ +
+ + + + + + + diff --git a/docs/html/classpyrax_1_1cloudmonitoring_1_1CloudMonitorCheckType.html b/docs/html/classpyrax_1_1cloudmonitoring_1_1CloudMonitorCheckType.html new file mode 100644 index 00000000..b493bb19 --- /dev/null +++ b/docs/html/classpyrax_1_1cloudmonitoring_1_1CloudMonitorCheckType.html @@ -0,0 +1,220 @@ + + + + + +pyrax: CloudMonitorCheckType Class Reference + + + + + + + + + + + +
+ + +
+ + + + + + + + + + + +
+
pyrax + +
+
Python Bindings for the Rackspace Cloud
+
+
+ + + + + + + + + +
+ +
+ + +
+
+ +
+
CloudMonitorCheckType Class Reference
+
+
+ +

Represents the type of monitor check to be run. + More...

+
+Inheritance diagram for CloudMonitorCheckType:
+
+
+ + +BaseResource + +
+ +

List of all members.

+ + + + + + + + +

+Public Member Functions

def field_names
 Returns a list of all field names for this check type.
def required_field_names
 Returns a list of the names of all required fields for this check type.
def optional_field_names
 Returns a list of the names of all optional fields for this check type.
+

Detailed Description

+

Represents the type of monitor check to be run.

+

Each check type

+

Member Function Documentation

+ +
+
+ + + + + + + + +
def field_names ( self)
+
+
+ +

Returns a list of all field names for this check type.

+ +
+
+ +
+
+ + + + + + + + +
def optional_field_names ( self)
+
+
+ +

Returns a list of the names of all optional fields for this check type.

+ +
+
+ +
+
+ + + + + + + + +
def required_field_names ( self)
+
+
+ +

Returns a list of the names of all required fields for this check type.

+ +
+
+
The documentation for this class was generated from the following file: +
+ + + + +
+ +
+ + + + + + + diff --git a/docs/html/classpyrax_1_1cloudmonitoring_1_1CloudMonitorCheckType.png b/docs/html/classpyrax_1_1cloudmonitoring_1_1CloudMonitorCheckType.png new file mode 100644 index 0000000000000000000000000000000000000000..b3232bd2a81acee49ca4783960a196ff23b844c3 GIT binary patch literal 507 zcmeAS@N?(olHy`uVBq!ia0vp^Gk`dNgBeI(TJCcSNJ#|vgt-3y{~ySF@#br3|Dg#$ z78oBmaDcV*jy#adQ4-`A%m7pb0#{Fk7%?y~c6quuhEy=VoqKW8VFeD?rE@?2x382J zV7YRoWHOI+_1tY`d%E18sI7lGcgxi8+NsPE2Z|a51uu%<`kU~p*sq#zjjDTHrt@Qc z$=cT<&kx*k`!(^MNAk187r&&0#qO@moL0>6+C;p0=Icp39D(P%u3k%+9ryE=Fm$Sd^8tQu(}UYcBLYTT>_CJ)hM& z!R9|hPiy7|i*K6O{@-3bVlSk*^f~( z^__&@rbteao_j3YeM^Gf3A2d)=Lf8IFiLNFZxzgAm%N`bc-7^EnCILEn@>qRk~G-f zy4!1SN5-_3+R25P57%_shIkyysbh$~KBM~EitaVqbNy|X6{q%?7A{qncsu*i$^5>_ tucoHF))kJ}a&LZBCo@k%d82Bsz0*X6(>IEZF9KtV!PC{xWt~$(695R;-eLd% literal 0 HcmV?d00001 diff --git a/docs/html/classpyrax_1_1cloudmonitoring_1_1CloudMonitorClient-members.html b/docs/html/classpyrax_1_1cloudmonitoring_1_1CloudMonitorClient-members.html new file mode 100644 index 00000000..8f903b2a --- /dev/null +++ b/docs/html/classpyrax_1_1cloudmonitoring_1_1CloudMonitorClient-members.html @@ -0,0 +1,188 @@ + + + + + +pyrax: Member List + + + + + + + + + + + +
+ + +
+ + + + + + + + + + + +
+
pyrax + +
+
Python Bindings for the Rackspace Cloud
+
+
+ + + + + + +
+
+
+
CloudMonitorClient Member List
+
+
+This is the complete list of members for CloudMonitorClient, including all inherited members. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
__init__CloudMonitorClient
pyrax::client::BaseClient.__init__BaseClient
authenticateBaseClient
createCloudMonitorClient
create_alarmCloudMonitorClient
create_checkCloudMonitorClient
create_entityCloudMonitorClient
create_notificationCloudMonitorClient
create_notification_planCloudMonitorClient
deleteCloudMonitorClient
delete_alarmCloudMonitorClient
delete_checkCloudMonitorClient
delete_entityCloudMonitorClient
delete_notificationCloudMonitorClient
delete_notification_planCloudMonitorClient
disable_ssl_certificate_validationBaseClient
endpoint_typeBaseClient
findCloudMonitorClient
find_all_checksCloudMonitorClient
findallCloudMonitorClient
force_exception_to_status_codeBaseClient
getCloudMonitorClient
get_accountCloudMonitorClient
get_alarmCloudMonitorClient
get_auditsCloudMonitorClient
get_checkCloudMonitorClient
get_check_typeCloudMonitorClient
get_entityCloudMonitorClient
get_limitsCloudMonitorClient
get_metric_data_pointsCloudMonitorClient
get_monitoring_zoneCloudMonitorClient
get_notificationCloudMonitorClient
get_notification_planCloudMonitorClient
get_notification_typeCloudMonitorClient
get_timingsBaseClient
http_log_debugBaseClient
http_log_reqBaseClient
http_log_respBaseClient
listCloudMonitorClient
list_alarmsCloudMonitorClient
list_check_typesCloudMonitorClient
list_checksCloudMonitorClient
list_entitiesCloudMonitorClient
list_metricsCloudMonitorClient
list_monitoring_zonesCloudMonitorClient
list_notification_plansCloudMonitorClient
list_notification_typesCloudMonitorClient
list_notificationsCloudMonitorClient
management_urlBaseClient
method_deleteBaseClient
method_getBaseClient
method_postBaseClient
method_putBaseClient
nameCloudMonitorClient
projectidBaseClient
region_nameBaseClient
requestBaseClient
reset_timingsBaseClient
service_nameBaseClient
service_typeBaseClient
test_notificationCloudMonitorClient
timesBaseClient
timingsBaseClient
unauthenticateBaseClient
update_alarmCloudMonitorClient
update_checkCloudMonitorClient
update_entityCloudMonitorClient
update_notificationCloudMonitorClient
user_agentBaseClient [static]
verify_sslBaseClient
versionBaseClient
+ + + + +
+ +
+ + + + + + + diff --git a/docs/html/classpyrax_1_1cloudmonitoring_1_1CloudMonitorClient.html b/docs/html/classpyrax_1_1cloudmonitoring_1_1CloudMonitorClient.html new file mode 100644 index 00000000..d0434aaf --- /dev/null +++ b/docs/html/classpyrax_1_1cloudmonitoring_1_1CloudMonitorClient.html @@ -0,0 +1,1865 @@ + + + + + +pyrax: CloudMonitorClient Class Reference + + + + + + + + + + + +
+ + +
+ + + + + + + + + + + +
+
pyrax + +
+
Python Bindings for the Rackspace Cloud
+
+
+ + + + + + + + + +
+ +
+ + +
+
+ +
+
CloudMonitorClient Class Reference
+
+
+ +

This is the base client for creating and managing Cloud Monitoring. + More...

+
+Inheritance diagram for CloudMonitorClient:
+
+
+ + +BaseClient + +
+ +

List of all members.

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

+Public Member Functions

def __init__
def get_account
 Returns a dict with the following keys: id, webhook_token, and metadata.
def get_limits
 Returns a dict with the resource and rate limits for the account.
def get_audits
 Every write operation performed against the API (PUT, POST or DELETE) generates an audit record that is stored for 30 days.
def list_entities
def get_entity
def create_entity
def update_entity
 Only the agent_id and metadata are able to be updated via the API.
def delete_entity
 Deletes the specified entity.
def list_check_types
def get_check_type
def list_checks
def create_check
 Creates a check on the entity with the specified attributes.
def get_check
 Returns the current check for the given entity.
def find_all_checks
 Finds all checks for a given entity with attributes matching ``**kwargs``.
def update_check
 Updates an existing check with any of the parameters.
def delete_check
 Deletes the specified check from the entity.
def list_metrics
 Returns a list of all the metrics associated with the specified check.
def get_metric_data_points
 Returns the data points for a given metric for the given period.
def list_notifications
 Returns a list of all defined notifications.
def get_notification
 Returns the CloudMonitorNotification object for the specified ID.
def test_notification
 This allows you to test either an existing notification, or a potential notification before creating it.
def create_notification
 Defines a notification for handling an alarm.
def update_notification
 Updates the specified notification with the supplied details.
def delete_notification
 Deletes the specified notification.
def create_notification_plan
 Creates a notification plan to be executed when a monitoring check triggers an alarm.
def list_notification_plans
 Returns a list of all defined notification plans.
def get_notification_plan
 Returns the CloudMonitorNotificationPlan object for the specified ID.
def delete_notification_plan
 Deletes the specified notification plan.
def create_alarm
 Creates an alarm that binds the check on the given entity with a notification plan.
def update_alarm
 Updates an existing alarm on the given entity.
def list_alarms
 Returns a list of all the alarms created on the specified entity.
def get_alarm
 Returns the alarm with the specified ID for the entity.
def delete_alarm
 Deletes the specified alarm.
def list_notification_types
def get_notification_type
def list_monitoring_zones
 Returns a list of all available monitoring zones.
def get_monitoring_zone
 Returns the monitoring zone for the given ID.
def list
 The following methods are defined in the generic client class, but don't have meaning in monitoring, as there is not a single resource that defines this module.
def get
 Not applicable in Cloud Monitoring.
def create
 Not applicable in Cloud Monitoring.
def delete
 Not applicable in Cloud Monitoring.
def find
 Not applicable in Cloud Monitoring.
def findall
 Not applicable in Cloud Monitoring.

+Public Attributes

 name
+

Detailed Description

+

This is the base client for creating and managing Cloud Monitoring.

+

Constructor & Destructor Documentation

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

Member Function Documentation

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

Not applicable in Cloud Monitoring.

+ +

Reimplemented from BaseClient.

+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
def create_alarm ( self,
 entity,
 check,
 notification_plan,
 criteria = None,
 disabled = False,
 label = None,
 name = None,
 metadata = None 
)
+
+
+ +

Creates an alarm that binds the check on the given entity with a notification plan.

+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
def create_check ( self,
 entity,
 label = None,
 name = None,
 check_type = None,
 disabled = False,
 metadata = None,
 details = None,
 monitoring_zones_poll = None,
 timeout = None,
 period = None,
 target_alias = None,
 target_hostname = None,
 target_receiver = None,
 test_only = False,
 include_debug = False 
)
+
+
+ +

Creates a check on the entity with the specified attributes.

+

The 'details' parameter should be a dict with the keys as the option name, and the value as the desired setting.

+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
def create_entity ( self,
 label = None,
 name = None,
 agent = None,
 ip_addresses = None,
 metadata = None 
)
+
+
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
def create_notification ( self,
 notification_type,
 label = None,
 name = None,
 details = None 
)
+
+
+ +

Defines a notification for handling an alarm.

+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
def create_notification_plan ( self,
 label = None,
 name = None,
 critical_state = None,
 ok_state = None,
 warning_state = None 
)
+
+
+ +

Creates a notification plan to be executed when a monitoring check triggers an alarm.

+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + +
def delete ( self,
 item 
)
+
+
+ +

Not applicable in Cloud Monitoring.

+ +

Reimplemented from BaseClient.

+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
def delete_alarm ( self,
 entity,
 alarm 
)
+
+
+ +

Deletes the specified alarm.

+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
def delete_check ( self,
 entity,
 check 
)
+
+
+ +

Deletes the specified check from the entity.

+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + +
def delete_entity ( self,
 entity 
)
+
+
+ +

Deletes the specified entity.

+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + +
def delete_notification ( self,
 notification 
)
+
+
+ +

Deletes the specified notification.

+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + +
def delete_notification_plan ( self,
 notification_plan 
)
+
+
+ +

Deletes the specified notification plan.

+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + +
def find ( self,
 kwargs 
)
+
+
+ +

Not applicable in Cloud Monitoring.

+ +

Reimplemented from BaseClient.

+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
def find_all_checks ( self,
 entity,
 kwargs 
)
+
+
+ +

Finds all checks for a given entity with attributes matching ``**kwargs``.

+

This isn't very efficient: it loads the entire list then filters on the Python side.

+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + +
def findall ( self,
 kwargs 
)
+
+
+ +

Not applicable in Cloud Monitoring.

+ +

Reimplemented from BaseClient.

+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + +
def get ( self,
 item 
)
+
+
+ +

Not applicable in Cloud Monitoring.

+ +

Reimplemented from BaseClient.

+ +
+
+ +
+
+ + + + + + + + +
def get_account ( self)
+
+
+ +

Returns a dict with the following keys: id, webhook_token, and metadata.

+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
def get_alarm ( self,
 entity,
 alarm_id 
)
+
+
+ +

Returns the alarm with the specified ID for the entity.

+ +
+
+ +
+
+ + + + + + + + +
def get_audits ( self)
+
+
+ +

Every write operation performed against the API (PUT, POST or DELETE) generates an audit record that is stored for 30 days.

+

Audits record a variety of information about the request including the method, URL, headers, query string, transaction ID, the request body and the response code. They also store information about the action performed including a JSON list of the previous state of any modified objects. For example, if you perform an update on an entity, this will record the state of the entity before modification.

+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
def get_check ( self,
 entity,
 check 
)
+
+
+ +

Returns the current check for the given entity.

+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + +
def get_check_type ( self,
 check_type 
)
+
+
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + +
def get_entity ( self,
 entity 
)
+
+
+ +
+
+ +
+
+ + + + + + + + +
def get_limits ( self)
+
+
+ +

Returns a dict with the resource and rate limits for the account.

+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
def get_metric_data_points ( self,
 entity,
 check,
 metric,
 start,
 end,
 points = None,
 resolution = None,
 stats = None 
)
+
+
+ +

Returns the data points for a given metric for the given period.

+

The 'start' and 'end' times must be specified; they can be be either Python date/datetime values, or a Unix timestamp.

+

The 'points' parameter represents the number of points to return. The 'resolution' parameter represents the granularity of the data. You must specify either 'points' or 'resolution'. The allowed values for resolution are: FULL MIN5 MIN20 MIN60 MIN240 MIN1440

+

Finally, the 'stats' parameter specifies the stats you want returned. By default only the 'average' is returned. You omit this parameter, pass in a single value, or pass in a list of values. The allowed values are: average variance min max

+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + +
def get_monitoring_zone ( self,
 mz_id 
)
+
+
+ +

Returns the monitoring zone for the given ID.

+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + +
def get_notification ( self,
 notification_id 
)
+
+
+ +

Returns the CloudMonitorNotification object for the specified ID.

+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + +
def get_notification_plan ( self,
 notification_plan_id 
)
+
+
+ +

Returns the CloudMonitorNotificationPlan object for the specified ID.

+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + +
def get_notification_type ( self,
 nt_id 
)
+
+
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
def list ( self,
 limit = None,
 marker = None 
)
+
+
+ +

The following methods are defined in the generic client class, but don't have meaning in monitoring, as there is not a single resource that defines this module.

+

Not applicable in Cloud Monitoring.

+ +

Reimplemented from BaseClient.

+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + +
def list_alarms ( self,
 entity 
)
+
+
+ +

Returns a list of all the alarms created on the specified entity.

+ +
+
+ +
+
+ + + + + + + + +
def list_check_types ( self)
+
+
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + +
def list_checks ( self,
 entity 
)
+
+
+ +
+
+ +
+
+ + + + + + + + +
def list_entities ( self)
+
+
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
def list_metrics ( self,
 entity,
 check 
)
+
+
+ +

Returns a list of all the metrics associated with the specified check.

+ +
+
+ +
+
+ + + + + + + + +
def list_monitoring_zones ( self)
+
+
+ +

Returns a list of all available monitoring zones.

+ +
+
+ +
+
+ + + + + + + + +
def list_notification_plans ( self)
+
+
+ +

Returns a list of all defined notification plans.

+ +
+
+ +
+
+ + + + + + + + +
def list_notification_types ( self)
+
+
+ +
+
+ +
+
+ + + + + + + + +
def list_notifications ( self)
+
+
+ +

Returns a list of all defined notifications.

+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
def test_notification ( self,
 notification = None,
 notification_type = None,
 details = None 
)
+
+
+ +

This allows you to test either an existing notification, or a potential notification before creating it.

+

The actual notification comes from the same server where the actual alert messages come from. This allow you to, among other things, verify that your firewall is configured properly.

+

To test an existing notification, pass it as the 'notification' parameter and leave the other parameters empty. To pre-test a notification before creating it, leave 'notification' empty, but pass in the 'notification_type' and 'details'.

+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
def update_alarm ( self,
 entity,
 alarm,
 criteria = None,
 disabled = False,
 label = None,
 name = None,
 metadata = None 
)
+
+
+ +

Updates an existing alarm on the given entity.

+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
def update_check ( self,
 entity,
 check,
 label = None,
 name = None,
 disabled = None,
 metadata = None,
 monitoring_zones_poll = None,
 timeout = None,
 period = None,
 target_alias = None,
 target_hostname = None,
 target_receiver = None 
)
+
+
+ +

Updates an existing check with any of the parameters.

+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
def update_entity ( self,
 entity,
 agent = None,
 metadata = None 
)
+
+
+ +

Only the agent_id and metadata are able to be updated via the API.

+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
def update_notification ( self,
 notification,
 details 
)
+
+
+ +

Updates the specified notification with the supplied details.

+ +
+
+

Member Data Documentation

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

Reimplemented from BaseClient.

+ +
+
+
The documentation for this class was generated from the following file: +
+ + + + +
+ +
+ + + + + + + diff --git a/docs/html/classpyrax_1_1cloudmonitoring_1_1CloudMonitorClient.png b/docs/html/classpyrax_1_1cloudmonitoring_1_1CloudMonitorClient.png new file mode 100644 index 0000000000000000000000000000000000000000..6308f3d0de235cb88745a3c9a04c289074863136 GIT binary patch literal 438 zcmeAS@N?(olHy`uVBq!ia0vp^6+j%o!3-pyx;pL#QW60^A+G=b{|7Q(y!l$%e`o@b z1;z&s9ANFdBM;n|&xxTM@JagZgQ;lRb&#ct<<&-_~|esHUlK@J&>qjedeOUsO{wAY-@PjIFK2uI^nb{!T^Xjz5#{+T+5V<4A06Sg{I}rv zwaWchE+sP + + + + +pyrax: Member List + + + + + + + + + + + +
+ + +
+ + + + + + + + + + + +
+
pyrax + +
+
Python Bindings for the Rackspace Cloud
+
+
+ + + + + + +
+
+
+
CloudMonitorEntity Member List
+
+ + + + + +
+ +
+ + + + + + + diff --git a/docs/html/classpyrax_1_1cloudmonitoring_1_1CloudMonitorEntity.html b/docs/html/classpyrax_1_1cloudmonitoring_1_1CloudMonitorEntity.html new file mode 100644 index 00000000..5904241b --- /dev/null +++ b/docs/html/classpyrax_1_1cloudmonitoring_1_1CloudMonitorEntity.html @@ -0,0 +1,571 @@ + + + + + +pyrax: CloudMonitorEntity Class Reference + + + + + + + + + + + +
+ + +
+ + + + + + + + + + + +
+
pyrax + +
+
Python Bindings for the Rackspace Cloud
+
+
+ + + + + + + + + +
+ +
+ + +
+
+ +
+
CloudMonitorEntity Class Reference
+
+
+
+Inheritance diagram for CloudMonitorEntity:
+
+
+ + +BaseResource + +
+ +

List of all members.

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

+Public Member Functions

def update
 Only the agent_id and metadata are able to be updated via the API.
def list_checks
 Returns a list of all CloudMonitorChecks defined for this entity.
def delete_check
 Deletes the specified check from this entity.
def list_metrics
 Returns a list of all the metrics associated with the specified check.
def get_metric_data_points
 Returns the data points for a given metric for the given period.
def create_alarm
 Creates an alarm that binds the check on this entity with a notification plan.
def update_alarm
 Updates an existing alarm on this entity.
def list_alarms
 Returns a list of all the alarms created on this entity.
def get_alarm
 Returns the alarm with the specified ID for this entity.
def delete_alarm
 Deletes the specified alarm.
def name
+

Member Function Documentation

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
def create_alarm ( self,
 check,
 notification_plan,
 criteria = None,
 disabled = False,
 label = None,
 name = None,
 metadata = None 
)
+
+
+ +

Creates an alarm that binds the check on this entity with a notification plan.

+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + +
def delete_alarm ( self,
 alarm 
)
+
+
+ +

Deletes the specified alarm.

+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + +
def delete_check ( self,
 check 
)
+
+
+ +

Deletes the specified check from this entity.

+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + +
def get_alarm ( self,
 alarm 
)
+
+
+ +

Returns the alarm with the specified ID for this entity.

+

If a CloudMonitorAlarm instance is passed, returns a new CloudMonitorAlarm object with the current state from the API.

+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
def get_metric_data_points ( self,
 check,
 metric,
 start,
 end,
 points = None,
 resolution = None,
 stats = None 
)
+
+
+ +

Returns the data points for a given metric for the given period.

+

The 'start' and 'end' times must be specified; they can be be either Python date/datetime values, or a Unix timestamp.

+

The 'points' parameter represents the number of points to return. The 'resolution' parameter represents the granularity of the data. You must specify either 'points' or 'resolution'. The allowed values for resolution are: FULL MIN5 MIN20 MIN60 MIN240 MIN1440

+

Finally, the 'stats' parameter specifies the stats you want returned. By default only the 'average' is returned. You omit this parameter, pass in a single value, or pass in a list of values. The allowed values are: average variance min max

+ +
+
+ +
+
+ + + + + + + + +
def list_alarms ( self)
+
+
+ +

Returns a list of all the alarms created on this entity.

+ +
+
+ +
+
+ + + + + + + + +
def list_checks ( self)
+
+
+ +

Returns a list of all CloudMonitorChecks defined for this entity.

+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + +
def list_metrics ( self,
 check 
)
+
+
+ +

Returns a list of all the metrics associated with the specified check.

+ +
+
+ +
+
+ + + + + + + + +
def name ( self)
+
+
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
def update ( self,
 agent = None,
 metadata = None 
)
+
+
+ +

Only the agent_id and metadata are able to be updated via the API.

+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
def update_alarm ( self,
 alarm,
 criteria = None,
 disabled = False,
 label = None,
 name = None,
 metadata = None 
)
+
+
+ +

Updates an existing alarm on this entity.

+ +
+
+
The documentation for this class was generated from the following file: +
+ + + + +
+ +
+ + + + + + + diff --git a/docs/html/classpyrax_1_1cloudmonitoring_1_1CloudMonitorEntity.png b/docs/html/classpyrax_1_1cloudmonitoring_1_1CloudMonitorEntity.png new file mode 100644 index 0000000000000000000000000000000000000000..5bbf838d50425e29b6ccc8a32ba1344b65df575f GIT binary patch literal 450 zcmeAS@N?(olHy`uVBq!ia0vp^*7S0rr1o0rpP$(G`o5nr@!t9l$9K#-85&MdHGEZB=tsGzZ^ZO3V;|5iCQ^vLuEyk&?k0n+zgtzzZt9TUif8i^GLsNOG5m1_Knp_JHAT&e0-ks`XRCQ zud^3et$S74WapjX6zG@}V`aY6bvtK(ci};!2l}O#cFa9!6uzwSb@p{Nk5{*)=R65} z;l57)X2-s{x2M&;dA@JM){NrzbH#uEUA?Dc`qfqTckJIwb#kw>e;-W!dhN4T$LsSO lq<8Wi{qI<`|46T7{Yxpy>+`sRtbqZ};OXk;vd$@?2>`3;)_VW| literal 0 HcmV?d00001 diff --git a/docs/html/classpyrax_1_1cloudmonitoring_1_1CloudMonitorEntityManager-members.html b/docs/html/classpyrax_1_1cloudmonitoring_1_1CloudMonitorEntityManager-members.html new file mode 100644 index 00000000..88e3d460 --- /dev/null +++ b/docs/html/classpyrax_1_1cloudmonitoring_1_1CloudMonitorEntityManager-members.html @@ -0,0 +1,146 @@ + + + + + +pyrax: Member List + + + + + + + + + + + +
+ + +
+ + + + + + + + + + + +
+
pyrax + +
+
Python Bindings for the Rackspace Cloud
+
+
+ + + + + + +
+
+
+
CloudMonitorEntityManager Member List
+
+ + + + + +
+ +
+ + + + + + + diff --git a/docs/html/classpyrax_1_1cloudmonitoring_1_1CloudMonitorEntityManager.html b/docs/html/classpyrax_1_1cloudmonitoring_1_1CloudMonitorEntityManager.html new file mode 100644 index 00000000..53961f42 --- /dev/null +++ b/docs/html/classpyrax_1_1cloudmonitoring_1_1CloudMonitorEntityManager.html @@ -0,0 +1,909 @@ + + + + + +pyrax: CloudMonitorEntityManager Class Reference + + + + + + + + + + + +
+ + +
+ + + + + + + + + + + +
+
pyrax + +
+
Python Bindings for the Rackspace Cloud
+
+
+ + + + + + + + + +
+ +
+ + +
+
+ +
+
CloudMonitorEntityManager Class Reference
+
+
+ +

Handles all of the entity-specific requests. + More...

+
+Inheritance diagram for CloudMonitorEntityManager:
+
+
+ + +BaseManager + +
+ +

List of all members.

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

+Public Member Functions

def update_entity
 Updates the specified entity's values with the supplied parameters.
def list_checks
 Returns a list of all CloudMonitorChecks defined for this entity.
def create_check
 Creates a check on the entity with the specified attributes.
def find_all_checks
 Finds all checks for a given entity with attributes matching ``**kwargs``.
def update_check
def get_check
 Returns the current version of the check for the entity.
def delete_check
 Deletes the specified check from the entity.
def list_metrics
 Returns a list of all the metrics associated with the specified check.
def get_metric_data_points
 Returns the data points for a given metric for the given period.
def create_alarm
 Creates an alarm that binds the check on the given entity with a notification plan.
def update_alarm
 Updates an existing alarm on the given entity.
def list_alarms
 Returns a list of all the alarms created on the specified entity.
def get_alarm
 Returns the alarm with the specified ID for this entity.
def delete_alarm
 Deletes the specified alarm.
+

Detailed Description

+

Handles all of the entity-specific requests.

+

Member Function Documentation

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
def create_alarm ( self,
 entity,
 check,
 notification_plan,
 criteria = None,
 disabled = False,
 label = None,
 name = None,
 metadata = None 
)
+
+
+ +

Creates an alarm that binds the check on the given entity with a notification plan.

+

Note that the 'criteria' parameter, if supplied, should be a string representing the DSL for describing alerting conditions and their output states. Pyrax does not do any validation of these criteria statements; it is up to you as the developer to understand the language and correctly form the statement. This alarm language is documented online in the Cloud Monitoring section of http://docs.rackspace.com.

+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
def create_check ( self,
 entity,
 label = None,
 name = None,
 check_type = None,
 details = None,
 disabled = False,
 metadata = None,
 monitoring_zones_poll = None,
 timeout = None,
 period = None,
 target_alias = None,
 target_hostname = None,
 target_receiver = None,
 test_only = False,
 include_debug = False 
)
+
+
+ +

Creates a check on the entity with the specified attributes.

+

The 'details' parameter should be a dict with the keys as the option name, and the value as the desired setting.

+

If the 'test_only' parameter is True, then the check is not created; instead, the check is run and the results of the test run returned. If 'include_debug' is True, additional debug information is returned. According to the current Cloud Monitoring docs: "Currently debug information is only available for the + remote.http check and includes the response body."

+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
def delete_alarm ( self,
 entity,
 alarm 
)
+
+
+ +

Deletes the specified alarm.

+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
def delete_check ( self,
 entity,
 check 
)
+
+
+ +

Deletes the specified check from the entity.

+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
def find_all_checks ( self,
 entity,
 kwargs 
)
+
+
+ +

Finds all checks for a given entity with attributes matching ``**kwargs``.

+

This isn't very efficient: it loads the entire list then filters on the Python side.

+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
def get_alarm ( self,
 entity,
 alarm 
)
+
+
+ +

Returns the alarm with the specified ID for this entity.

+

If a CloudMonitorAlarm instance is passed, returns a new CloudMonitorAlarm object with the current state from the API.

+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
def get_check ( self,
 entity,
 check 
)
+
+
+ +

Returns the current version of the check for the entity.

+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
def get_metric_data_points ( self,
 entity,
 check,
 metric,
 start,
 end,
 points = None,
 resolution = None,
 stats = None 
)
+
+
+ +

Returns the data points for a given metric for the given period.

+

The 'start' and 'end' times must be specified; they can be be either Python date/datetime values, a string representing a date/datetime in either of 'YYYY-MM-DD HH:MM:SS' or 'YYYY-MM-DD' formats, or a Unix timestamp:

+

The 'points' parameter represents the number of points to return. The 'resolution' parameter represents the granularity of the data. You must specify either 'points' or 'resolution', but not both. The allowed values for resolution are: 'FULL', 'MIN5', 'MIN20', 'MIN60', 'MIN240', and 'MIN1440'.

+

Finally, the 'stats' parameter specifies the stats you want returned. By default only the 'average' is returned. You omit this parameter, pass in a single value, or pass in a list of values. The allowed values are: 'average', 'variance', 'min', and 'max'

+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + +
def list_alarms ( self,
 entity 
)
+
+
+ +

Returns a list of all the alarms created on the specified entity.

+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + +
def list_checks ( self,
 entity 
)
+
+
+ +

Returns a list of all CloudMonitorChecks defined for this entity.

+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
def list_metrics ( self,
 entity,
 check 
)
+
+
+ +

Returns a list of all the metrics associated with the specified check.

+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
def update_alarm ( self,
 entity,
 alarm,
 criteria = None,
 disabled = False,
 label = None,
 name = None,
 metadata = None 
)
+
+
+ +

Updates an existing alarm on the given entity.

+

See the comments on the 'create_alarm()' regarding the criteria parameter.

+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
def update_check ( self,
 check,
 label = None,
 name = None,
 disabled = None,
 metadata = None,
 monitoring_zones_poll = None,
 timeout = None,
 period = None,
 target_alias = None,
 target_hostname = None,
 target_receiver = None 
)
+
+
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
def update_entity ( self,
 entity,
 agent = None,
 metadata = None 
)
+
+
+ +

Updates the specified entity's values with the supplied parameters.

+ +
+
+
The documentation for this class was generated from the following file: +
+ + + + +
+ +
+ + + + + + + diff --git a/docs/html/classpyrax_1_1cloudmonitoring_1_1CloudMonitorEntityManager.png b/docs/html/classpyrax_1_1cloudmonitoring_1_1CloudMonitorEntityManager.png new file mode 100644 index 0000000000000000000000000000000000000000..9a66d22cb70f584a4c069748cbd8cf6e559a83a7 GIT binary patch literal 561 zcmeAS@N?(olHy`uVBq!ia0vp^tAIFwgBeKfTPSxPNJ#|vgt-3y{~ySF@#br3|Dg#$ z78oBmaDcV*jy#adQ4-`A%m7pb0#{Fk7%?y~9`JN=45?szJ2!UIVFixXrE^dIn_eR? zz*sLdd)u-*GU{u41AaIhx&DR6_|j*=6b8{1|3#;EbhvHG+9y@ou6o>n=c(3}IWa$< zsk)xk_WP$$R9|cOH$70&MSh;qymcW(ktdG4&NAKocHysvSs&IUcrs48l2W%YbfemZ zJ)T=u2V4z5xz_b7XU=lt-bb6aR-Jeew0G5dA^G&{jBnakTv-=dCi`G}{%Z58cV1VF zch`l69WVc+FUAniSjB(EK)E(G=e}We{*_$r!&2;}w-0S#b8=;8&lAWiFFe0P`Xt!KGK+)noIYxILTYwe-Qg-_z0pSH2J1yYYa6#m9%M9q(>5 zX6R1v+aecs?eS5`?u_}OlrT4^AYOpEqXpR;TQf)^B!guQut8vfvNQ)$Pqx)skQAxz+x;cc8c3@oB40 zn)mpzXJj37{l|Gl`Piw4e(`Jlla@=^cD`lEU7N)oD4KkdB_Jf0eaDk+v&yao#&laf x&n`&UbDdk7n*Vh5reA3b99Xj?t{6P#Pg$h0k@ + + + + +pyrax: Member List + + + + + + + + + + + +
+ + +
+ + + + + + + + + + + +
+
pyrax + +
+
Python Bindings for the Rackspace Cloud
+
+
+ + + + + + +
+
+
+
CloudMonitorNotification Member List
+
+ + + + + +
+ +
+ + + + + + + diff --git a/docs/html/classpyrax_1_1cloudmonitoring_1_1CloudMonitorNotification.html b/docs/html/classpyrax_1_1cloudmonitoring_1_1CloudMonitorNotification.html new file mode 100644 index 00000000..fd3bd654 --- /dev/null +++ b/docs/html/classpyrax_1_1cloudmonitoring_1_1CloudMonitorNotification.html @@ -0,0 +1,205 @@ + + + + + +pyrax: CloudMonitorNotification Class Reference + + + + + + + + + + + +
+ + +
+ + + + + + + + + + + +
+
pyrax + +
+
Python Bindings for the Rackspace Cloud
+
+
+ + + + + + + + + +
+ +
+ + +
+
+ +
+
CloudMonitorNotification Class Reference
+
+
+ +

Represents an action to take when an alarm is triggered. + More...

+
+Inheritance diagram for CloudMonitorNotification:
+
+
+ + +BaseResource + +
+ +

List of all members.

+ + + + + +

+Public Member Functions

def name
def update
 Updates this notification with the supplied details.
+

Detailed Description

+

Represents an action to take when an alarm is triggered.

+

Member Function Documentation

+ +
+
+ + + + + + + + +
def name ( self)
+
+
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + +
def update ( self,
 details 
)
+
+
+ +

Updates this notification with the supplied details.

+ +
+
+
The documentation for this class was generated from the following file: +
+ + + + +
+ +
+ + + + + + + diff --git a/docs/html/classpyrax_1_1cloudmonitoring_1_1CloudMonitorNotification.png b/docs/html/classpyrax_1_1cloudmonitoring_1_1CloudMonitorNotification.png new file mode 100644 index 0000000000000000000000000000000000000000..078e70c4730f432400b16a2dd558be1ec2ad9164 GIT binary patch literal 489 zcmeAS@N?(olHy`uVBq!ia0vp^(}6gEgBeIFuMu|#QW60^A+G=b{|7Q(y!l$%e`o@b z1;z&s9ANFdBM;>+I|cf`Nt?(Hu&gheEYw%sE<=@iuUsv z34uFr^gmG&-+96nsG>Ut#$2hmOtrOz3sSQawjIy?{!osq=T;@Qyv8I^AXK!j>sZ z)jD3xl@6Cr6e^waX4khJrwj^woz@533OyU+P>ug+HH9-`4Z~_%i3+L7)Dg#Z8m literal 0 HcmV?d00001 diff --git a/docs/html/classpyrax_1_1cloudmonitoring_1_1CloudMonitorNotificationManager-members.html b/docs/html/classpyrax_1_1cloudmonitoring_1_1CloudMonitorNotificationManager-members.html new file mode 100644 index 00000000..86e0be71 --- /dev/null +++ b/docs/html/classpyrax_1_1cloudmonitoring_1_1CloudMonitorNotificationManager-members.html @@ -0,0 +1,137 @@ + + + + + +pyrax: Member List + + + + + + + + + + + +
+ + +
+ + + + + + + + + + + +
+
pyrax + +
+
Python Bindings for the Rackspace Cloud
+
+
+ + + + + + +
+
+
+
CloudMonitorNotificationManager Member List
+
+ + + + + +
+ +
+ + + + + + + diff --git a/docs/html/classpyrax_1_1cloudmonitoring_1_1CloudMonitorNotificationManager.html b/docs/html/classpyrax_1_1cloudmonitoring_1_1CloudMonitorNotificationManager.html new file mode 100644 index 00000000..f0d1ae42 --- /dev/null +++ b/docs/html/classpyrax_1_1cloudmonitoring_1_1CloudMonitorNotificationManager.html @@ -0,0 +1,339 @@ + + + + + +pyrax: CloudMonitorNotificationManager Class Reference + + + + + + + + + + + +
+ + +
+ + + + + + + + + + + +
+
pyrax + +
+
Python Bindings for the Rackspace Cloud
+
+
+ + + + + + + + + +
+ +
+ + +
+
+ +
+
CloudMonitorNotificationManager Class Reference
+
+
+ +

Handles all of the requests dealing with notifications. + More...

+
+Inheritance diagram for CloudMonitorNotificationManager:
+
+
+ + +BaseManager + +
+ +

List of all members.

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

+Public Member Functions

def create
 Defines a notification for handling an alarm.
def test_notification
 This allows you to test either an existing notification, or a potential notification before creating it.
def update_notification
 Updates the specified notification with the supplied details.
def list_types
 Returns a list of all available notification types.
def get_type
 Returns a CloudMonitorNotificationType object for the given ID.
+

Detailed Description

+

Handles all of the requests dealing with notifications.

+

Member Function Documentation

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
def create ( self,
 notification_type,
 label = None,
 name = None,
 details = None 
)
+
+
+ +

Defines a notification for handling an alarm.

+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + +
def get_type ( self,
 notification_type_id 
)
+
+
+ +

Returns a CloudMonitorNotificationType object for the given ID.

+ +
+
+ +
+
+ + + + + + + + +
def list_types ( self)
+
+
+ +

Returns a list of all available notification types.

+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
def test_notification ( self,
 notification = None,
 notification_type = None,
 details = None 
)
+
+
+ +

This allows you to test either an existing notification, or a potential notification before creating it.

+

The actual notification comes from the same server where the actual alert messages come from. This allow you to, among other things, verify that your firewall is configured properly.

+

To test an existing notification, pass it as the 'notification' parameter and leave the other parameters empty. To pre-test a notification before creating it, leave 'notification' empty, but pass in the 'notification_type' and 'details'.

+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
def update_notification ( self,
 notification,
 details 
)
+
+
+ +

Updates the specified notification with the supplied details.

+ +
+
+
The documentation for this class was generated from the following file: +
+ + + + +
+ +
+ + + + + + + diff --git a/docs/html/classpyrax_1_1cloudmonitoring_1_1CloudMonitorNotificationManager.png b/docs/html/classpyrax_1_1cloudmonitoring_1_1CloudMonitorNotificationManager.png new file mode 100644 index 0000000000000000000000000000000000000000..e6278b0b67efa3b1dea4c27dec3331b478867aae GIT binary patch literal 600 zcmeAS@N?(olHy`uVBq!ia0vp^r+_$sgBeKXyGiW_QW60^A+G=b{|7Q(y!l$%e`o@b z1;z&s9ANFdBM;S7umVTx(zz#p+kcAV zVB(6jp6%OP{HDKC;{)fT+{*mRr+#nsWabKJDB|Z56inT;E?)NOk?=I1z;M@x4^Gs} z28qZOeiEM;{pe5Oiaklp6QOa9{+gVG==O zIxfzQS{SRu4-|izETXh1D9Pl~N5{OBye_^^Ju8m&bo=X^T@x-)`H{uq)bUbY2E6Uy&QyaHuaMd~d>1 zt%QYh-z_fqct4n22ert15E7xOF?KWp?RGc8S*3(T78 zDVk-ri(!WOt5;X92b?R`-zxIkcwV2QI%9YEFE7I%S=w_l zt_iI + + + + +pyrax: Member List + + + + + + + + + + + +
+ + +
+ + + + + + + + + + + +
+
pyrax + +
+
Python Bindings for the Rackspace Cloud
+
+
+ + + + + + +
+
+
+
CloudMonitorNotificationPlan Member List
+
+ + + + + +
+ +
+ + + + + + + diff --git a/docs/html/classpyrax_1_1cloudmonitoring_1_1CloudMonitorNotificationPlan.html b/docs/html/classpyrax_1_1cloudmonitoring_1_1CloudMonitorNotificationPlan.html new file mode 100644 index 00000000..eab8c605 --- /dev/null +++ b/docs/html/classpyrax_1_1cloudmonitoring_1_1CloudMonitorNotificationPlan.html @@ -0,0 +1,174 @@ + + + + + +pyrax: CloudMonitorNotificationPlan Class Reference + + + + + + + + + + + +
+ + +
+ + + + + + + + + + + +
+
pyrax + +
+
Python Bindings for the Rackspace Cloud
+
+
+ + + + + + + + + +
+ +
+ + +
+
+ +
+
CloudMonitorNotificationPlan Class Reference
+
+
+ +

A Notification plan is a list of the notification actions to take when an alarm is triggered. + More...

+
+Inheritance diagram for CloudMonitorNotificationPlan:
+
+
+ + +BaseResource + +
+ +

List of all members.

+ + + +

+Public Member Functions

def name
+

Detailed Description

+

A Notification plan is a list of the notification actions to take when an alarm is triggered.

+

Member Function Documentation

+ +
+
+ + + + + + + + +
def name ( self)
+
+
+ +
+
+
The documentation for this class was generated from the following file: +
+ + + + +
+ +
+ + + + + + + diff --git a/docs/html/classpyrax_1_1cloudmonitoring_1_1CloudMonitorNotificationPlan.png b/docs/html/classpyrax_1_1cloudmonitoring_1_1CloudMonitorNotificationPlan.png new file mode 100644 index 0000000000000000000000000000000000000000..a61839efceb5c6fa5ab871a510b5fa446083a159 GIT binary patch literal 524 zcmeAS@N?(olHy`uVBq!ia0vp^8-O@~gBeKn>GHn=QW60^A+G=b{|7Q(y!l$%e`o@b z1;z&s9ANFdBM;SBkOEIj=e*0`>!0lP zaBAB>H7xh^y9L{(Dn3+h`C?`(p8fJ?#45oV2mbR%xVZ3TTxWcK+U{*t0{61`RHw`H z8}?O~9&hATsQ>$I_Ok5EUFS|Grk`P1rdZD`Gew>8@V4qBb4(U>+>-clK(f|a)nHm{ z*qehEhqj-4`0B&lxrdd?9z0)l#JT1o3>rEABtAGA^(*Z5zGpKJoZ7AH zwnys2HXtcuu$rZj(bS?5-@7)i*OP0)yuIJ0-Tc=#-o2i{n0#7N=yjjNYpK7Q?re>*=gmLvQ~Ac|9%b{@ zP>Z6{`|sg6Q27C#&ZwvZrI58ytyZI(F*C% zT}e|97^N|Lvj?iGEL-uYk#Et94_6_+DQAdV^Os@G7u9b++z(s + + + + +pyrax: Member List + + + + + + + + + + + +
+ + +
+ + + + + + + + + + + +
+
pyrax + +
+
Python Bindings for the Rackspace Cloud
+
+
+ + + + + + +
+
+
+
CloudMonitorNotificationPlanManager Member List
+
+ + + + + +
+ +
+ + + + + + + diff --git a/docs/html/classpyrax_1_1cloudmonitoring_1_1CloudMonitorNotificationPlanManager.html b/docs/html/classpyrax_1_1cloudmonitoring_1_1CloudMonitorNotificationPlanManager.html new file mode 100644 index 00000000..116b2437 --- /dev/null +++ b/docs/html/classpyrax_1_1cloudmonitoring_1_1CloudMonitorNotificationPlanManager.html @@ -0,0 +1,213 @@ + + + + + +pyrax: CloudMonitorNotificationPlanManager Class Reference + + + + + + + + + + + +
+ + +
+ + + + + + + + + + + +
+
pyrax + +
+
Python Bindings for the Rackspace Cloud
+
+
+ + + + + + + + + +
+ +
+ + +
+
+ +
+
CloudMonitorNotificationPlanManager Class Reference
+
+
+ +

Handles all of the requests dealing with Notification Plans. + More...

+
+Inheritance diagram for CloudMonitorNotificationPlanManager:
+
+
+ + +BaseManager + +
+ +

List of all members.

+ + + + +

+Public Member Functions

def create
 Creates a notification plan to be executed when a monitoring check triggers an alarm.
+

Detailed Description

+

Handles all of the requests dealing with Notification Plans.

+

Member Function Documentation

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
def create ( self,
 label = None,
 name = None,
 critical_state = None,
 ok_state = None,
 warning_state = None 
)
+
+
+ +

Creates a notification plan to be executed when a monitoring check triggers an alarm.

+

You can optionally label (or name) the plan.

+

A plan consists of one or more notifications to be executed when an associated alarm is triggered. You can have different lists of actions for CRITICAL, WARNING or OK states.

+ +
+
+
The documentation for this class was generated from the following file: +
+ + + + +
+ +
+ + + + + + + diff --git a/docs/html/classpyrax_1_1cloudmonitoring_1_1CloudMonitorNotificationPlanManager.png b/docs/html/classpyrax_1_1cloudmonitoring_1_1CloudMonitorNotificationPlanManager.png new file mode 100644 index 0000000000000000000000000000000000000000..44f79cea83ad35699a9ee6b65e6e696d6395368a GIT binary patch literal 626 zcmeAS@N?(olHy`uVBq!ia0vp^kAXOVgBeKP;WJtaq$C1-LR|m<{|{uoc=NTi|Ih>= z3ycpOIKbL@M;^%KC<*clW&kPzfvcxNj2IZ07(HDaLn;{G&b_JW{^y^7yxu#6gZ@Yb9Q9|Ms!0rq0`7ALGXr{6Cp{jt9zr5|;=JKL~VZ zlVDE*i!x9lIy2fZ=&#q0cLh;M(JBNPvFn?fsTqB{K%zn}-C(rjqllZdC;IqGsk9C{)<)3wZ + + + + +pyrax: Member List + + + + + + + + + + + +
+ + +
+ + + + + + + + + + + +
+
pyrax + +
+
Python Bindings for the Rackspace Cloud
+
+
+ + + + + + +
+
+
+
CloudMonitorNotificationType Member List
+
+ + + + + +
+ +
+ + + + + + + diff --git a/docs/html/classpyrax_1_1cloudmonitoring_1_1CloudMonitorNotificationType.html b/docs/html/classpyrax_1_1cloudmonitoring_1_1CloudMonitorNotificationType.html new file mode 100644 index 00000000..bac96d03 --- /dev/null +++ b/docs/html/classpyrax_1_1cloudmonitoring_1_1CloudMonitorNotificationType.html @@ -0,0 +1,174 @@ + + + + + +pyrax: CloudMonitorNotificationType Class Reference + + + + + + + + + + + +
+ + +
+ + + + + + + + + + + +
+
pyrax + +
+
Python Bindings for the Rackspace Cloud
+
+
+ + + + + + + + + +
+ +
+ + +
+
+ +
+
CloudMonitorNotificationType Class Reference
+
+
+ +

Represents a class of action to take when an alarm is triggered. + More...

+
+Inheritance diagram for CloudMonitorNotificationType:
+
+
+ + +BaseResource + +
+ +

List of all members.

+ + + +

+Public Member Functions

def name
+

Detailed Description

+

Represents a class of action to take when an alarm is triggered.

+

Member Function Documentation

+ +
+
+ + + + + + + + +
def name ( self)
+
+
+ +
+
+
The documentation for this class was generated from the following file: +
+ + + + +
+ +
+ + + + + + + diff --git a/docs/html/classpyrax_1_1cloudmonitoring_1_1CloudMonitorNotificationType.png b/docs/html/classpyrax_1_1cloudmonitoring_1_1CloudMonitorNotificationType.png new file mode 100644 index 0000000000000000000000000000000000000000..ba33275b31470e549fc6d49c19f0c6bc8c81cba8 GIT binary patch literal 548 zcmeAS@N?(olHy`uVBq!ia0vp^n}IlhgBeJsN^N-yq$C1-LR|m<{|{uoc=NTi|Ih>= z3ycpOIKbL@M;^%KC<*clW&kPzfvcxNj2IXgH+#A`hEy=VoqKmuvjR`6r}g9C_MhS= z#MiA^9c=pT!rfaBTRy0^R7BtV=~lUa6R$z@&*L*YJ2KkKG&k4%_212EygX!IW^>s8 zlP|5AYz~~^`K8`(y0-1I@7$>KO)CY~{1mWCW47(TId}gP-vr(1akGuz@7i=c`*6BR z#zU27mHVn~&C5SFRjEA^+pso&&nnB?b8ee|c*kZu;~>wo;u)WNKW*JubKZ1@?59cm zR*IiDJ!w97qGumtnnAPVnFO#Z1oMwU+9`9crPdBWH!eKm;nXq49|qGJ6CpQ+B>OLe=hy0NW1ve(I~vb{#@YO6|JBR$!Dec)I$ztaD0e0s!dG4)y>5 literal 0 HcmV?d00001 diff --git a/docs/html/classpyrax_1_1cloudmonitoring_1_1CloudMonitorZone-members.html b/docs/html/classpyrax_1_1cloudmonitoring_1_1CloudMonitorZone-members.html new file mode 100644 index 00000000..bcecedb2 --- /dev/null +++ b/docs/html/classpyrax_1_1cloudmonitoring_1_1CloudMonitorZone-members.html @@ -0,0 +1,132 @@ + + + + + +pyrax: Member List + + + + + + + + + + + +
+ + +
+ + + + + + + + + + + +
+
pyrax + +
+
Python Bindings for the Rackspace Cloud
+
+
+ + + + + + +
+
+
+
CloudMonitorZone Member List
+
+ + + + + +
+ +
+ + + + + + + diff --git a/docs/html/classpyrax_1_1cloudmonitoring_1_1CloudMonitorZone.html b/docs/html/classpyrax_1_1cloudmonitoring_1_1CloudMonitorZone.html new file mode 100644 index 00000000..f4e63bd1 --- /dev/null +++ b/docs/html/classpyrax_1_1cloudmonitoring_1_1CloudMonitorZone.html @@ -0,0 +1,174 @@ + + + + + +pyrax: CloudMonitorZone Class Reference + + + + + + + + + + + +
+ + +
+ + + + + + + + + + + +
+
pyrax + +
+
Python Bindings for the Rackspace Cloud
+
+
+ + + + + + + + + +
+ +
+ + +
+
+ +
+
CloudMonitorZone Class Reference
+
+
+ +

Represents a location from which Cloud Monitoring collects data. + More...

+
+Inheritance diagram for CloudMonitorZone:
+
+
+ + +BaseResource + +
+ +

List of all members.

+ + + +

+Public Member Functions

def name
+

Detailed Description

+

Represents a location from which Cloud Monitoring collects data.

+

Member Function Documentation

+ +
+
+ + + + + + + + +
def name ( self)
+
+
+ +
+
+
The documentation for this class was generated from the following file: +
+ + + + +
+ +
+ + + + + + + diff --git a/docs/html/classpyrax_1_1cloudmonitoring_1_1CloudMonitorZone.png b/docs/html/classpyrax_1_1cloudmonitoring_1_1CloudMonitorZone.png new file mode 100644 index 0000000000000000000000000000000000000000..ba06ee3eac9ea7e2ec016d8af212851c163ec617 GIT binary patch literal 444 zcmeAS@N?(olHy`uVBq!ia0vp^Wk4Lj!3-pS_Y`sfDTx4|5ZC|z{{xvX-h3_XKQsZz z0^IvjRQFw8V)m3Un2#B0xPY-BEsi^ zS@nte(%H57`HeZJY}M_9D*7zTjP{>ABJ}(EMm^;iiI1mF&u{C!*!sE|M6~RkIk{7H zT0|0*`1U{Pp%IhKFPAsE8yEx*?cllceC|4vYKv_fB$lsOIoaThS@m<%ZF*Kywf_sP zJlGYdc4D*ILe41@B+Wj*V(~~>wP0O*e9+>|dAw`3$mYzl%F*>sEZvp3C^#o^-?3Fo zc3CeyZQp#=Z0kpD_3g8@E-#X6-uf-Z?B<;4!qj{Idl&A#yi})flil{W6JN|ZlW(-~ fNS)BN)EdS=CnYDnaZH~93~B~XS3j3^P6 + + + + +pyrax: InvalidLoadBalancer Class Reference + + + + + + + + + + + +
+ + +
+ + + + + + + + + + + +
+
pyrax + +
+
Python Bindings for the Rackspace Cloud
+
+
+ + + + + + + + + +
+ +
+ + +
+
+
+
InvalidLoadBalancer Class Reference
+
+
+
+Inheritance diagram for InvalidLoadBalancer:
+
+
+ + +PyraxException + +
+
The documentation for this class was generated from the following file: +
+ + + + +
+ +
+ + + + + + + diff --git a/docs/html/classpyrax_1_1exceptions_1_1InvalidLoadBalancer.png b/docs/html/classpyrax_1_1exceptions_1_1InvalidLoadBalancer.png new file mode 100644 index 0000000000000000000000000000000000000000..87fd8dc86fb16e710fdfbde08de3926b81c6f034 GIT binary patch literal 498 zcmeAS@N?(olHy`uVBq!ia0vp^4L}^g!3-py-Rr#uq$C1-LR|m<{|{uoc=NTi|Ih>= z3ycpOIKbL@M;^%KC<*clW&kPzfvcxNj2IXg8$DedLn;{G&b{5oqR8Q*tN!x;|0lH$ zf*-GKm)$(u$ae8Xrv8Sz>mP33+3J7i7KcLvBLhQ1TKiHZrDHo2xE9nWzh7PEw293@ zN?FNGL7wa8?pG>OmlTzJ51zGU&`7TJnR9y51&hR)yJMKYO+T38D4KS&u;j)%*8?I! zd>igxV(fV2+b}0rxHFKes__SJL!RKg6^*+YGMAXnTV;Fwz!Nc-a_)7EF?-K`_YGq( z|5h*h;M~9WZVmI3nQE95in;x7f4p&6p53DFEX!`jzGUNrWeoS2m;@RaSQHo-IUE>3 z%>RrGv!f5(V-RX!;4*mBpf@!zp7p?*`L@?38`x5NB3J4&D=?fC`P8Jb?&-d?^)J`l z3T4PzuDsmOt1yhQLwfhx+EpnQt&A()wB-p;>32{qWGFQ)Ipf1?(t7!pSmxq0#g7Wu z7I4jHIy*aFe@-^T{3fvlZ+~fKWI|CgWiQlpk%F~A67@O1TaS?83{1OU9!%)kHu literal 0 HcmV?d00001 diff --git a/docs/html/classpyrax_1_1exceptions_1_1InvalidMonitoringCheckDetails.html b/docs/html/classpyrax_1_1exceptions_1_1InvalidMonitoringCheckDetails.html new file mode 100644 index 00000000..2969615c --- /dev/null +++ b/docs/html/classpyrax_1_1exceptions_1_1InvalidMonitoringCheckDetails.html @@ -0,0 +1,142 @@ + + + + + +pyrax: InvalidMonitoringCheckDetails Class Reference + + + + + + + + + + + +
+ + +
+ + + + + + + + + + + +
+
pyrax + +
+
Python Bindings for the Rackspace Cloud
+
+
+ + + + + + + + + +
+ +
+ + +
+
+
+
InvalidMonitoringCheckDetails Class Reference
+
+
+
+Inheritance diagram for InvalidMonitoringCheckDetails:
+
+
+ + +PyraxException + +
+
The documentation for this class was generated from the following file: +
+ + + + +
+ +
+ + + + + + + diff --git a/docs/html/classpyrax_1_1exceptions_1_1InvalidMonitoringCheckDetails.png b/docs/html/classpyrax_1_1exceptions_1_1InvalidMonitoringCheckDetails.png new file mode 100644 index 0000000000000000000000000000000000000000..a996100b69169d34310d112b77dddc01e571e7a5 GIT binary patch literal 593 zcmeAS@N?(olHy`uVBq!ia0vp^+krTMgBeKXd=!}uq$C1-LR|m<{|{uoc=NTi|Ih>= z3ycpOIKbL@M;^%KC<*clW&kPzfvcxNj2IXgA9%VrhEy=VoqKW8VFeD?=D8>T*MG88 zXzIu_%glKbw|wPF1(~m2@!PM@%B@~1D!t<%Z{F>Wju+wW3*8q@ImTCBFn#^R!;KR1 zkCy%M>kLwwq^r`XRk!E+oxnvlE_pe2+xJcH7i^wYA$TtEc-qU`cAMnPMEH}-ejJ>% z?9KL_(TkY;U+uX0nDNe{l+EvL=epefr||AWoZN-)DewM-t#Vx_z39E8t>?OVJ`eYW zw5}I__xet{gxrBzu7{kz|6XLvE2y{pJ}Y83wKOND%Vv83~?y^>@(k?H(%{14gOY-HBnytUyIrr|^`mgo$%F+utw;XF{CuJ?k zagCiWy<5-r-LF|v4|g(z%B;O#X>xpvMDTz8`}0zm%D>xxdU!{vnTv;VeoYIb6Mw<&;$TWiyqSe literal 0 HcmV?d00001 diff --git a/docs/html/classpyrax_1_1exceptions_1_1InvalidMonitoringCheckUpdate.html b/docs/html/classpyrax_1_1exceptions_1_1InvalidMonitoringCheckUpdate.html new file mode 100644 index 00000000..e74ffad0 --- /dev/null +++ b/docs/html/classpyrax_1_1exceptions_1_1InvalidMonitoringCheckUpdate.html @@ -0,0 +1,142 @@ + + + + + +pyrax: InvalidMonitoringCheckUpdate Class Reference + + + + + + + + + + + +
+ + +
+ + + + + + + + + + + +
+
pyrax + +
+
Python Bindings for the Rackspace Cloud
+
+
+ + + + + + + + + +
+ +
+ + +
+
+
+
InvalidMonitoringCheckUpdate Class Reference
+
+
+
+Inheritance diagram for InvalidMonitoringCheckUpdate:
+
+
+ + +PyraxException + +
+
The documentation for this class was generated from the following file: +
+ + + + +
+ +
+ + + + + + + diff --git a/docs/html/classpyrax_1_1exceptions_1_1InvalidMonitoringCheckUpdate.png b/docs/html/classpyrax_1_1exceptions_1_1InvalidMonitoringCheckUpdate.png new file mode 100644 index 0000000000000000000000000000000000000000..8f05836344065a3e1034f8080f08d763126ad7bb GIT binary patch literal 583 zcmeAS@N?(olHy`uVBq!ia0vp^JAgQVgBeK9{pBwOq$C1-LR|m<{|{uoc=NTi|Ih>= z3ycpOIKbL@M;^%KC<*clW&kPzfvcxNj2IXguX(yShEy=VoqKWJVFix1Ztq|J`fKzA zTwHdq*}6L2{$?6?$NY{rW!1V`x3zUO8Q3ijNGmEWa&BMfzG%uZzTg92)1Q2B>&b5n zu3P4!Dd;KWx#CLy=JU*|r?iT8={HPI|2v~fL+xH`vCgjBS$FDEopS>Clgs`bocHeJ zj-3fX9CBA1Hy;;1uymI1v+AWns{cG6JbYTS_}F{4^ZvJti@r~gk}sM1WY;O%2g`ST z{K;0w_(NU5pW%PULqW;^s~BV+*fZ=~kz<@XUrP3Y?)QBfKUY2Y4J0=`c%cPyDI;G& z1GCHnWaj>$jKG^2XAiSj9H?j8bKE~m%YW_WjbCGS)PD_2Qr&8NdiHhsX6YR=_CdnT!Z)}b?PrrF}g1t<@vyPob z7j>(nS>^N>hl-qABc5S&FY2`Kc#>gTe~DWM4f-Xsmz literal 0 HcmV?d00001 diff --git a/docs/html/classpyrax_1_1exceptions_1_1InvalidMonitoringMetricsRequest.html b/docs/html/classpyrax_1_1exceptions_1_1InvalidMonitoringMetricsRequest.html new file mode 100644 index 00000000..52a5b05c --- /dev/null +++ b/docs/html/classpyrax_1_1exceptions_1_1InvalidMonitoringMetricsRequest.html @@ -0,0 +1,142 @@ + + + + + +pyrax: InvalidMonitoringMetricsRequest Class Reference + + + + + + + + + + + +
+ + +
+ + + + + + + + + + + +
+
pyrax + +
+
Python Bindings for the Rackspace Cloud
+
+
+ + + + + + + + + +
+ +
+ + +
+
+
+
InvalidMonitoringMetricsRequest Class Reference
+
+
+
+Inheritance diagram for InvalidMonitoringMetricsRequest:
+
+
+ + +PyraxException + +
+
The documentation for this class was generated from the following file: +
+ + + + +
+ +
+ + + + + + + diff --git a/docs/html/classpyrax_1_1exceptions_1_1InvalidMonitoringMetricsRequest.png b/docs/html/classpyrax_1_1exceptions_1_1InvalidMonitoringMetricsRequest.png new file mode 100644 index 0000000000000000000000000000000000000000..12309f6872158c9c614b03c77d1a97ca70c0b435 GIT binary patch literal 603 zcmeAS@N?(olHy`uVBq!ia0vp^hk-bNgBeIp4mK$*VTSJO?Ns+XK>-y#|s zAK9{UHG0VDdN!juOFP-DwfBpf0JL??ibIsPT%(2htTQ! zUmqfd?ONWQ?6xNPG=suV`&YGV zuYY=L-D$xNF6NEQe^1%}dn|cmjlD`S`^Rk;uSK1nF44F~0?c@g)xlg_c z+a6mz!?^R;$8Eo&luOV3SzYLQ$O<2K1%+3l|n zz9|aje-<(8aW;R^y=^&jE={lLyna1xR`(7bYAuH={4Eyjoc ixHJR3Zou=q-`r=5=AX?WJd(haz~JfX=d#Wzp$PyBwh(v# literal 0 HcmV?d00001 diff --git a/docs/html/classpyrax_1_1exceptions_1_1InvalidMonitoringMetricsResolution.html b/docs/html/classpyrax_1_1exceptions_1_1InvalidMonitoringMetricsResolution.html new file mode 100644 index 00000000..318e64d5 --- /dev/null +++ b/docs/html/classpyrax_1_1exceptions_1_1InvalidMonitoringMetricsResolution.html @@ -0,0 +1,142 @@ + + + + + +pyrax: InvalidMonitoringMetricsResolution Class Reference + + + + + + + + + + + +
+ + +
+ + + + + + + + + + + +
+
pyrax + +
+
Python Bindings for the Rackspace Cloud
+
+
+ + + + + + + + + +
+ +
+ + +
+
+
+
InvalidMonitoringMetricsResolution Class Reference
+
+
+
+Inheritance diagram for InvalidMonitoringMetricsResolution:
+
+
+ + +PyraxException + +
+
The documentation for this class was generated from the following file: +
+ + + + +
+ +
+ + + + + + + diff --git a/docs/html/classpyrax_1_1exceptions_1_1InvalidMonitoringMetricsResolution.png b/docs/html/classpyrax_1_1exceptions_1_1InvalidMonitoringMetricsResolution.png new file mode 100644 index 0000000000000000000000000000000000000000..dcb0e45f7dc8ea55ada870fdb765b7507330e45a GIT binary patch literal 609 zcmeAS@N?(olHy`uVBq!ia0vp^7lAl{gBeI};7C{iq$C1-LR|m<{|{uoc=NTi|Ih>= z3ycpOIKbL@M;^%KC<*clW&kPzfvcxNj2IXgKX|%0hEy=VoqMJs@*q zdhwE7(OIXAB$T$@nB`&R_B1P`G;Y;D)``}VdS5P@x%^z|v&rW2l76+#dNU)x8(mz# zPpjMBrMvT;%XZU?Yae_&chL^yoD9xD6U%v%-Y2U!zR%iK+Sv&6hy|cnfDS!XM{M)Nm^-JC5 zoY=Qhd6Mb9?e|k>os2uAwzG@o1ezV|1t@P~Eo7bH?r`OZ=V!i#7{*%luul}+sPI|=Y k@?}i}(ECwNBEEGDJfb@9w$}RC0@DM7r>mdKI;Vst087ydpa1{> literal 0 HcmV?d00001 diff --git a/docs/html/classpyrax_1_1exceptions_1_1MissingMonitoringCheckDetails.html b/docs/html/classpyrax_1_1exceptions_1_1MissingMonitoringCheckDetails.html new file mode 100644 index 00000000..76a86f11 --- /dev/null +++ b/docs/html/classpyrax_1_1exceptions_1_1MissingMonitoringCheckDetails.html @@ -0,0 +1,142 @@ + + + + + +pyrax: MissingMonitoringCheckDetails Class Reference + + + + + + + + + + + +
+ + +
+ + + + + + + + + + + +
+
pyrax + +
+
Python Bindings for the Rackspace Cloud
+
+
+ + + + + + + + + +
+ +
+ + +
+
+
+
MissingMonitoringCheckDetails Class Reference
+
+
+
+Inheritance diagram for MissingMonitoringCheckDetails:
+
+
+ + +PyraxException + +
+
The documentation for this class was generated from the following file: +
+ + + + +
+ +
+ + + + + + + diff --git a/docs/html/classpyrax_1_1exceptions_1_1MissingMonitoringCheckDetails.png b/docs/html/classpyrax_1_1exceptions_1_1MissingMonitoringCheckDetails.png new file mode 100644 index 0000000000000000000000000000000000000000..bd5d9793f577bff79ce9a77df20defd22eb7389d GIT binary patch literal 610 zcmeAS@N?(olHy`uVBq!ia0vp^dx1EBgBeIxUv7y5QW60^A+G=b{|7Q(y!l$%e`o@b z1;z&s9ANFdBM;RWS%IfTwyN*_{}a`W zii$_(XRX~N+qe6Yz$AW&M{mDK?etx5lBaC@(sTc2Mg}w4Fk7LZsPY|s`~F22-w=Ep zRyD;=D2OS=S~26Q{(R>;#f38-zV*)jd*h20K(70q&Am%kDEVjfj>^Te;F8){D;AL2JmOci7C*ju zp;lTesBfioR$*q&SU*nif3b))7&+c4#()#I}|9j^CG>QAV_U`Pz8V6_YoWF2- svfZ?oNA8@zV83?ayf5}%_C>#$4TLq;@ve_<1||pwPgg&ebxsLQ0Mzv-OaK4? literal 0 HcmV?d00001 diff --git a/docs/html/classpyrax_1_1exceptions_1_1MissingMonitoringCheckGranularity.html b/docs/html/classpyrax_1_1exceptions_1_1MissingMonitoringCheckGranularity.html new file mode 100644 index 00000000..9a66f5ae --- /dev/null +++ b/docs/html/classpyrax_1_1exceptions_1_1MissingMonitoringCheckGranularity.html @@ -0,0 +1,142 @@ + + + + + +pyrax: MissingMonitoringCheckGranularity Class Reference + + + + + + + + + + + +
+ + +
+ + + + + + + + + + + +
+
pyrax + +
+
Python Bindings for the Rackspace Cloud
+
+
+ + + + + + + + + +
+ +
+ + +
+
+
+
MissingMonitoringCheckGranularity Class Reference
+
+
+
+Inheritance diagram for MissingMonitoringCheckGranularity:
+
+
+ + +PyraxException + +
+
The documentation for this class was generated from the following file: +
+ + + + +
+ +
+ + + + + + + diff --git a/docs/html/classpyrax_1_1exceptions_1_1MissingMonitoringCheckGranularity.png b/docs/html/classpyrax_1_1exceptions_1_1MissingMonitoringCheckGranularity.png new file mode 100644 index 0000000000000000000000000000000000000000..ec496292be21e9ac5d1deb206dca2d53e097d768 GIT binary patch literal 642 zcmeAS@N?(olHy`uVBq!ia0vp^*MK;HgBeH$U8%kaq$C1-LR|m<{|{uoc=NTi|Ih>= z3ycpOIKbL@M;^%KC<*clW&kPzfvcxNj2IZ01U+3GLn;{G&W)UOM1iBNIdf{62gOIPKh4~vJKrRcS!_dtsg{_a;9IQ{Q=z3-!hf*q{Jb7)vElfP zh>&AbG*p%B7?S3@>d%jPrx7SPaWZfF(&V2$%U*`0m2_!IKgqjkf9$OAqQqsgu?{we zGG}I=*L>zE6Lw8PzB_-S<<_+-J$!G=HyoN&_#m&hHPkKWx!2LhyRWWnIT?CLa6{f+ zyMFtK^U1M=g*9uu<^CPW?7h;!s*|v{%``Q7-;HbeQq0$USCx9Lv)p(MNP2Dz;A{j+ zGjc~9U;;WDjrqFKEqGgN+8J(;0{vt|*_Q#T8x>~Vh@P#TZ15G@7A~9 zu6n1pe8&E$vsUdJr94|)KTUq@^=o#P4&UCABb!=3Jrk>)l z4;7k`bzs@w=WbzF&vyH?)QR&hzUgo%oHedV=0&x!*2|>MbIU#^EZQW#-qiDQhvmO# zU$(_;m|e0_OKpBj@AtwD=aZklx{x5L9(uU6EAHmI#H;RKm8Pv0mHN0h_s~y{)gRAQ zXT5Vjeq)*atnk7wv$Z$xJ?py0g45SDxU;)`ZOg%^`PROwA`5+;ihGW=o|^s3Fyz4D z_uuDk|Npd%clEk`&vp0pK9$?^`1L98nv>6Zw=SRjuteye8z^eON?n`smOsEx_xn}* Sms!9B!{F)a=d#Wzp$P!3B`NIy literal 0 HcmV?d00001 diff --git a/docs/html/classpyrax_1_1exceptions_1_1MonitoringCheckTargetNotSpecified.html b/docs/html/classpyrax_1_1exceptions_1_1MonitoringCheckTargetNotSpecified.html new file mode 100644 index 00000000..ddbf6b61 --- /dev/null +++ b/docs/html/classpyrax_1_1exceptions_1_1MonitoringCheckTargetNotSpecified.html @@ -0,0 +1,142 @@ + + + + + +pyrax: MonitoringCheckTargetNotSpecified Class Reference + + + + + + + + + + + +
+ + +
+ + + + + + + + + + + +
+
pyrax + +
+
Python Bindings for the Rackspace Cloud
+
+
+ + + + + + + + + +
+ +
+ + +
+
+
+
MonitoringCheckTargetNotSpecified Class Reference
+
+
+
+Inheritance diagram for MonitoringCheckTargetNotSpecified:
+
+
+ + +PyraxException + +
+
The documentation for this class was generated from the following file: +
+ + + + +
+ +
+ + + + + + + diff --git a/docs/html/classpyrax_1_1exceptions_1_1MonitoringCheckTargetNotSpecified.png b/docs/html/classpyrax_1_1exceptions_1_1MonitoringCheckTargetNotSpecified.png new file mode 100644 index 0000000000000000000000000000000000000000..542836de80ec7fb9d90f771a1c392919f1f7583d GIT binary patch literal 638 zcmeAS@N?(olHy`uVBq!ia0vp^H-I>RgBeKr$a-f1DTx4|5ZC|z{{xvX-h3_XKQsZz z0^YY$&g4)jWHpWkq@Ub&sw zFpYKbC%?`hrAJBv>AH10tA09mc6H9lb=vSt&%X5jtB_?SeOJwV`(M`c%uzq$>}$QR zp|Y<_lkq|Kvp|`MZxu`u<&#&%yw`GTtrm*VkYlgPG28G-ZC3b|{_30sT_;yQl1W&; z&+Y$z#@!5WW~eNji(9SeQ(cgyuVBOz`5eL-ILaGZF}E6Ntc@~ zltlvQUV{ck9-uNb=7#$X7Z)WjHq{4vY4(8`>mM#TCMLrw7-$pRqZ7K==hUZHE~Z8K zC$F8D|KWpor<7}D^p!ckIo{NYJUYueW3!A$F3Yjw`us_^-6~yYYCl)KxH{4{r%H=& z{(hLJi{BEa+l}kO7>_~=}tT!B7ERj;Hni8SITy6N?JAX zca?S6QQ`SNti$T}oVGM5U9KNjYb + + + + +pyrax: MonitoringZonesPollMissing Class Reference + + + + + + + + + + + +
+ + +
+ + + + + + + + + + + +
+
pyrax + +
+
Python Bindings for the Rackspace Cloud
+
+
+ + + + + + + + + +
+ +
+ + +
+
+
+
MonitoringZonesPollMissing Class Reference
+
+
+
+Inheritance diagram for MonitoringZonesPollMissing:
+
+
+ + +PyraxException + +
+
The documentation for this class was generated from the following file: +
+ + + + +
+ +
+ + + + + + + diff --git a/docs/html/classpyrax_1_1exceptions_1_1MonitoringZonesPollMissing.png b/docs/html/classpyrax_1_1exceptions_1_1MonitoringZonesPollMissing.png new file mode 100644 index 0000000000000000000000000000000000000000..342f7da55e29dd5cabd02f180da4fcab3b2b2301 GIT binary patch literal 574 zcmeAS@N?(olHy`uVBq!ia0vp^Yk)X_gBeI}-k;Y2q$C1-LR|m<{|{uoc=NTi|Ih>= z3ycpOIKbL@M;^%KC<*clW&kPzfvcxNj2IXg&w9EzhEy=VoqKmun*vAM;rwO4_dl@} zc*}bB*7`Mx-&22uwy3jM#o9Hd{9Iz-6mjTZW`v-iWr#$Uif87U0_mK+JtBTLDulwm zL{3_w64a#Hy5!YUjpwsfE-Dr#^B>GR|FvQ7y=6u_gYO($_DpBqQ{_)CR~s^q-}%{B zIk8nqbM~8$GC9{OxVNRKyHx1&Rx#E|Z;MV)FZ#wAQM+pEy3qKdvJ1SEUbB5p&@Vl$ z&HGL0jd|bwroX4&XHTs4Ym})NZt%OArIzMROjSzUJd z`_TQ?t% -AccessListIDNotFound -AmbiguousEndpoints -AuthenticationFailed -AuthorizationFailure -AuthSystemNotFound -CDNFailed -ClientException -DNSCallTimedOut -DomainCreationFailed -DomainDeletionFailed -DomainRecordAdditionFailed -DomainRecordDeletionFailed -DomainRecordNotFound -DomainRecordNotUnique -DomainRecordUpdateFailed -DomainUpdateFailed -DuplicateUser -EndpointNotDefined -EndpointNotFound -EnvironmentNotFound -FileNotFound -FlavorNotFound -FolderNotFound -IdentityClassNotDefined -InvalidCDNMetadata -InvalidConfigurationFile -InvalidCredentialFile -InvalidDateTimeString -InvalidDeviceType -InvalidLoadBalancerParameters -InvalidNodeCondition -InvalidNodeParameters -InvalidPTRRecord -InvalidSessionPersistenceType -InvalidSetting -InvalidSize -InvalidTemporaryURLMethod -InvalidUploadID -InvalidVirtualIPType -InvalidVirtualIPVersion -InvalidVolumeResize -KeyringModuleNotInstalled -KeyringPasswordNotFound -KeyringUsernameMissing -MissingAuthSettings -MissingDNSSettings -MissingHealthMonitorSettings -MissingLoadBalancerParameters -MissingName -MissingTemporaryURLKey -NetworkCIDRInvalid -NetworkCIDRMalformed -NetworkCountExceeded -NetworkInUse -NetworkLabelNotUnique -NetworkNotFound -NoMoreResults -NoReloadError -NoSSLTerminationConfiguration -NoSuchContainer -NoSuchDatabase -NoSuchDatabaseUser -NoSuchObject -NotAuthenticated -NotCDNEnabled -NoTokenLookupException -PasswordChangeFailed -ProtocolMismatch -PTRRecordCreationFailed -PTRRecordDeletionFailed -PTRRecordUpdateFailed -ServiceNotAvailable -SnapshotNotAvailable -TenantNotFound -UnattachedNode -UnattachedVirtualIP -UnicodePathError -UploadFailed -UserNotFound -VolumeAttachmentFailed -VolumeDetachmentFailed -VolumeNotAvailable +AccessListIDNotFound +AmbiguousEndpoints +AuthenticationFailed +AuthorizationFailure +AuthSystemNotFound +CDNFailed +ClientException +DNSCallTimedOut +DomainCreationFailed +DomainDeletionFailed +DomainRecordAdditionFailed +DomainRecordDeletionFailed +DomainRecordNotFound +DomainRecordNotUnique +DomainRecordUpdateFailed +DomainUpdateFailed +DuplicateUser +EndpointNotDefined +EndpointNotFound +EnvironmentNotFound +FileNotFound +FlavorNotFound +FolderNotFound +IdentityClassNotDefined +InvalidCDNMetadata +InvalidConfigurationFile +InvalidCredentialFile +InvalidDateTimeString +InvalidDeviceType +InvalidLoadBalancer +InvalidLoadBalancerParameters +InvalidMonitoringCheckDetails +InvalidMonitoringCheckUpdate +InvalidMonitoringMetricsRequest +InvalidMonitoringMetricsResolution +InvalidNodeCondition +InvalidNodeParameters +InvalidPTRRecord +InvalidSessionPersistenceType +InvalidSetting +InvalidSize +InvalidTemporaryURLMethod +InvalidUploadID +InvalidVirtualIPType +InvalidVirtualIPVersion +InvalidVolumeResize +KeyringModuleNotInstalled +KeyringPasswordNotFound +KeyringUsernameMissing +MissingAuthSettings +MissingDNSSettings +MissingHealthMonitorSettings +MissingLoadBalancerParameters +MissingMonitoringCheckDetails +MissingMonitoringCheckGranularity +MissingName +MissingTemporaryURLKey +MonitoringCheckTargetNotSpecified +MonitoringZonesPollMissing +NetworkCIDRInvalid +NetworkCIDRMalformed +NetworkCountExceeded +NetworkInUse +NetworkLabelNotUnique +NetworkNotFound +NoMoreResults +NoReloadError +NoSSLTerminationConfiguration +NoSuchContainer +NoSuchDatabase +NoSuchDatabaseUser +NoSuchObject +NotAuthenticated +NotCDNEnabled +NoTokenLookupException +PasswordChangeFailed +ProtocolMismatch +PTRRecordCreationFailed +PTRRecordDeletionFailed +PTRRecordUpdateFailed +ServiceNotAvailable +SnapshotNotAvailable +TenantNotFound +UnattachedNode +UnattachedVirtualIP +UnicodePathError +UploadFailed +UserNotFound +VolumeAttachmentFailed +VolumeDetachmentFailed +VolumeNotAvailable
The documentation for this class was generated from the following file:
    @@ -214,7 +223,7 @@ diff --git a/docs/html/classpyrax_1_1exceptions_1_1PyraxException.png b/docs/html/classpyrax_1_1exceptions_1_1PyraxException.png index ba5f16b4fa10f2d8c353d6790bfeb10132f7b43d..4f2015d640747b7e4a01a620a654afc425d7ba59 100644 GIT binary patch literal 26397 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 literal 22772 zcmcJ1cT`hp_pXkk&Zxi#j3ClR5EMB9MQPGzMi4auN=*nIBT@nyN(^;IM~buo;UHaw zPz4f75JFM99Eye>2#i8RT9D8r5V!|tobS8$ckf>x*R@=RvsjsV_u1vy&wlnBan0C} z@4(RmyLRp3yL?ICbl0xk;I3Ul-+i|Sej*u|-30%0i%W@pUv;?o?{OC&E$#feQDQzWO7Sy zP5ZWC{5+-ha;LG(_y1zow!fSSq3Ca75Xg;4@@K=(qK*r(pOiVVpNm4S>o+wM#;3!# z-dpT#R;eLOvBc$r(W;aVAZ~uV{_}i&cP>?d*_GsrcMNz8#v&s;a# z*SC%i!aq-VOoc#!`B^a^t52lwIRkW;fb2mfOz)vHlx#s%a4IQHhFPFF+!Q0i2NEa} zQfumI2$bFH`1y8uaOL^dvou6Afb&|5H)OFF{%GK&guLBzwx&7?Wv8+m9NQGtS<(gd z7L*&_OTV-Ky;-lJzD@7_bp5Repp_H4Ve&n>E&9~f_&ozpi+A@7B-T*h9u#>cgCc(? z0^Hjh=^zMvd2r9*KORhA(7|AvKQR2wt9yG7iU25bO}HHUsHLGHHzNGj9Ilv7a9zRZ zu9cKFMJp}lb(mKBr}gtTMBkT`C3x|C@UH;E_|+=V-}? zYPQ@=$GD{;9q5zWmLQ8h+Kd;5%H>=3I6EX?(Yp{m*_HgF5C0pf(3YT3l$$!Z8)<#U z$_i31tx;8%o@kV+(5e>LCxLU?Qh_Rq!2IX2>4=J^wGj<$GM8e59ikUk(8`T~Id_~e z(p`4mj}~D{Up964PbL@8wIujY>sWC{AHj2@nG#Z z)GdUL#bSO$k^lM*tJ0=-#k*R9{2uhN&v*ve|qraVb#kMnJuNXiLj2h^>5CHp<4*#ktTW) zu1>42yo}Y}w!jY+<*x96MR`A2NYvBGt1~EUrRMd>OBGKi^|HYxDXgZyhTbW8aJ-E5 zQM&;@>6X84)^s-_u%^<;LmPv)&p1~9hB9Ffm`oO*ecV#YNFN zM+Qu^>ig%sQ0yDY?t1-%!MT<3>MYic??4O+FS!cjkN-jPlRU)^J7g9l3SqnloQ6ss z7QZwEPH6Qu8$HJ)SVFcy&r|$63F5EKL!5s>B5^a8mF14!&|H48AfZP`>U zWMv9$`}mhP3V-OoiI#yV|F7`)x3B#D8}NgPM}Qvkh7O4P?dx~gK|(!^p8`)$+%VVI zFYh0ZAdeK&ljf;zQhY;|j>HT(I<83s!=+Eo2WJZs74);$&*`d?77jlx7kRIpV;s(E zK|EiN#zp2o^W9z1;;64)m-^{$yp|35Dsca&!kbpBS-J9Id{}(%DM;?9B>}1Ins0y95?tp(t!v4Y1lnE_n4%X%S z>ic_dv01L<4!P;bUex=%U_+qiCBF#N1H^gCQZFSIN9JtgVE@?49+)gWg0X z?rl~61}sx%U!$3CRUhKURR2KFGaqYLIh1BM_o0)3Vq;zRw+!C7#*-}xq|Ty44}uUt z6EfC99aG5S9DLM*C}d&Kqbb9p&?^yh1moS=zQALkvJFB9iTQRvU>MN%B0-6Am51`g zD(t^&Fvwx6Nu6^QO--IY=$lb};e!CzztI`6;;XUB!UYDKz*y} z$y1k`hms^A8p;hfEOS{S$jaK-06`%+qI6s6Qju3j$H_H`r2bk-#D2gMqM_*zr_?D! z)6&jF_tB=(;U??UJ`S=_?r>!<&64)~I~OPn#S!T6c{f&F9yqx4GK>8&`(vnq8IX>p%G7e=2 znNrKR=G<2H{p-%+puM9jAIn2w|23kkgen|72;?tE4rHtcfcLL&@k5x!>OK`9j3@6` ze(O0XS_1k#&h&6<%oFbt0hAqw+K1wh*6M}ktASMWno9(txu&n5mlF|WEoj>WZyS4U zADC3=uy*AzV4r`FrMUez+wTF$8=C*mdVu=&>udeHK)??I<5?~d&s$3o|N1+TKoD9+ z#%Y*}pgVgO1Touik>|8!Vn@5FA#)xl!AO8FtG}*1%3zMB)Tt)Wz&VMu``&iW@Q;tQ zqxQJh*+rz77ED1!aNPGuA7{P| z=`vm4QUEJI5W#mJ>&qje6+7IBYi{`gmO2vF5Du905F4H67Y7KGY{@)~8nJuYQ^v{W zQrTrOOOKiLz5`Ib^nYYP^7GD8ebD)DXz=fJ|9`^@e;3ZS6aND;{4OUWqqJ<|Y+^X) z@08}RK0(iQs;d1(G*qgBJxm^HEj8f!c@2v!yW3_|4z}9{ow!1%hRbO4>AKXs06xeF zAo;{0`>%+t(Qzh01hGDox3PK>@fRJdl1a)_Htm!*wClnagz~gQukd=vf@uY$lE0o? z0YOu9iupbHd7O@IG~Iw@Fq znA=!CdvWfmjZ-B>yVr0>Xk?f+aew1+e+wpTOM@ZSBs>}4DXw|Kv$8pMw zZBxZYZ@kc97w9Je0(r?GJ(4JleCuimz5W*vOU|yAqLgO@cQny6dAR6=uz4q7 zweW>zWuO3=igGWrE++R1!!hqUF(v=OgZPk?v3u&ghtu%w&+~>L?W6QcDoWibaC!Gi!0-_%4yQ3#D>73@z!JOu^Ylb>()})J$uPy!@fJwtckfG zaj?#AN=tls-TI5K=-saKpy1+k4j_Y#lLnvZPMQ?-7-tR`Z4RKX7(KJ3u(g;gXMKE< z&gbb4OtmP4noL(dXD@ybXjRGBWhOSWN|eCQ5i*Ew>=^LTF%-8{e>F&|-(X4uJG95n zVXAwRdU4t%@FA1Z!@@K81%}C zx3HfDq3JE&WTh*u7NDAe-cWE=Us-)o99Jw8_BKx!O>RLqG!fc|zfI`)KW%qk!9@Lx z3nYkSGG<=CRiog}Z(v$CrL8|#y94qHFH`B5q^(z=;bV{pm`;kP+z zl5{A(WmQ(TqF>I6JKeOV3K#+;^XrkA6j}S6-x^8$)97l2Y7=qY!u9WfBotSL8iv=6 zBH>JU^QVyt>uhE%0K->Px!7%Qb8!uL*WAa!0$!c>0cWFJqvwb5a-bImVdeKkXWPMI zBK^EuRF<8SQJms>obRev>fi>+OL84a&D)2&;Z`KA&YuRiHDO=D_l~tSlPDRP_oiE& zvNNC0Dh zQ!$;wfj2&2b@3_@MpO!PG-xhP0}e z@!h9W2Vw8go8I=GHRN{Wd0ekw$K9B~xmla+C8Y{M>J!}22ithYz5{Rg)rYKhpzjOY zHqb9()?*cMzJXEmMrBcpe3CBn8wTLw0qt`fe(<3EZeZDqJAF~nBY4zFk-&SoR@zK8 zSoI51uFUyu&O|X_^=IaDl(mtmj@!QjF4!Tcq?{U2jd1^XMDH+Ecb=y5AN~p6$f_tL=~-oHV8}Hw za`Qh8i^RFvsAbpav3{<~Qk`(0YT=l|ec{}mFF7OR{NH^ZShxewR}qH3GA%jG$D2wz zQAUeD2(Dk|cWJ@5;H?&%hJ{|*6$H%qd;_eO>gN-(e@V(cnHXCRP|N@I%qJ&D#SF(V z!B_uIwsBG*bu5=aPuziKPxoxT)RY!N^=0yiFLlb26FO;4-I0v{kOHd?) z1fuO*IQ@Z9ERW*;TNT=E_&{pZzVVbxM(Tr3#7`bWG9|y8H-s}4?2;}{MU@&YkFWO} zC-f62+9?6ktH}QkRw(@6tgx=xCI1pH3)vb(;gHLEFpGB(xIQhJ|AwV-g(ZuKL{LW( z&YPKG{7GIJf{-&Xg~?315HKx{tQbD(+SqPm+j?3S4C?}Ii&hioZ`>?%O_s1BYrlwK zcEwwE^!0J(053jJ)e2e|QaKtmJo;LqQ5baT0uh`mmq^cDE^4)yMfAK``6V65n!DM= zxi^Ao75x(8n^RvYi{ersj`fuX`!~1oKZvn^Kj2&jGv!L9AnH$FQ>(Hg4C)3eM$M{D zjt^t*s4Xxv7p%}3TfekYN!(bVWNkvPODMm5P2HAGsGA2^>{MBq5n$y1_1=%cwq_bwMkn7%)@@i5S4FNMfaJUdYVHJ&XLEM$#25Z&!MRQ!PE(uN_^eZJ9Q+i%f|?7;*RO+K3st#o=t6ZKc^JX3OBa!x`? z|G~(J0Pbb~eVm$lnIfl=2*QuK0l0 zuj7XrH<&KYnm06S(n=2vqwRUAs2C+w7n&{@^x_A&s~p{6$b(iLf{^w?-GcZwTWN_z zeA=Z_RzB%!kX8aZz7NXk!!LVi-pmi_674;Q44P?&J5Dr_K6} z=T&uN0?ti+;dF7J8c6f5@Tivr#`69ma$LTqrJX>01C%CW0Q(`#$-&gzX=gG}d*N>IZDy z{%U~j)U+dQ(>Y{XaMm|++05fT$Y@en zL+S8l>w&pb=gVwf%+BcYL9IW4!zeo2%y{(#+E{+51dLkR3pY$mAZ)$67I1k4(=}Z% zpElPWNbSuy8(Vr#%83%ed^NSFkMQ6(oC*y#4lLjhix1B);e7 z(k-&~m3yppO9&w@2%2~}eFZ_?J5UNsoFf)jMh*{Cae{Zw;RpKdAc4412?j;GaobSC zDB~#d$ZH`?0^QL1NKv-n;y0I&KNdZ444lYdN~FJ8NNL2k(bbaQ#fMx3@93|dtLf=} zOX+JOeH(aJ&uP;lyv!<(DavniGO5_d-_j4r{+8VPZvqu`hiBY%IuP2k=8PaA!1w<}@rL!@sY~DDEE13N8O6 zwViiB7^wOvSoJKfZjn#+SyAfKGQLYUiE-vH)x72!@zThG+x9b?xh|SVdu-)F$L~Oz z6=YMFfkh$00Oplc%Y)z~n%ZU%y`nlsnUK}tn?toVBs3>Gg#y$)$-txJ%)&IG@`6ZJl2TSq|ExDAjYc%;g*b_sBu~9e?gE*=m4~P+$8RQ5j|k`y z?=G6)oLH5!QdX$xaH4Rb*4W6{$R4Qf0r&S65^-IAMGOql_&X_m3B(GSJWS zr$3%~R1ahHS-6Uk!nB<}c68!yVN@~cCAC`7x@a^?9;9|3O4{ft^GP2U_q8~*=u7Zc z24@OM^|LX*XVKY8d!UGUwliE1;s^9~>jkbb70>lwf4Y z$aLjYE%cB_y6C%`4Zz`pF)%@J30qRnQqY+Yyx`*Ld7-uIcye{SbtLRSCxKib-v=(@ ze;wX-^3CDH)YMXG-}_LeE#gA0JoxtG$LLLuDS1ue9n@nrN+Ccr^2l%7f5=6u;zjc0 zEl{oeN3in~W*hLJKkUUvV6|H(eNUHw??`LdLRJ(>i$-vPd~VEk!?Ou~^)o;v#Y6Bd zBHG_7P(V&iXUY~@^gmKEDg2!&%k**nN7 zet&B#SI2>r{x2TLDW^=u_ltpsXwwG)QJa(JA$F&X^=K>Sjhk4zCdJ1E zc^D2O&wIgrzV#@no0n58rQJ|H0bw9%BP3VW1cj;r5BB&lwFcRPBRv1F$#5LO1gJRJIx?r}>asREc_f{?Ii- zp!cfe#~(lRaVpVtKeL!s9-&-$jT|8f-u+Wdo#L4jL6TUe9UfS&O@bM|CKWI9#g<;_ z_7k+R+a3Z3Z{KyX3uX#}TWrgZ_BM#c(YIaT)NlaacorS=xO;Sn7yARK7fdZTJ8o)# zzfLF3VsIwYgq*CBW%9A;R1_n@ztWNGxUA1Bzw_#OC#Q3&PI28~E&BjiV*ZNb^|kiz zgeqjs_Djrd8`)=%+1OAjDmV%I4WrUw%?KQnX)m~>n3bsO^iz0vxzCjVYyGM3A$K$* z=bR14q(6UssCOW`fy3yd+lMx0RV*KLW3xw_IBpNvyy@ok{<+9jwuyE+%C?^#l)I3I$tYvvRf7>QwO-@K3iNAwk|sSblq zMTLsWb)0u5Wo683;qbWy>%mNlw%a*{5|QxjF__%`lla@poOFeN`6;$4Qrpa)fJz z#FBAgR*36OF*QmHzVvnxcu=d4RqTS|k3H)G9fQFP6SViEGF01clw~N@#VKhw#27vWNoYEvFoomHbWto_dLo}Zgcwdn0t-n)53(6Z;9saj4l z>-{HL@ZDZOy#%cCxR7oVED$yzi?uOpH2o==R9s%FWsR_p zGhSyqtXaU~kQVy<4OHDN;Q;xsUE)qq#@zgIFzVvaEj(r%ql&ZrI;8x$Br;Uqy&42Xm}Ur9t8UuuJl7xY&?}f1pTY9-C9~ zxEv-|cUn6WkvpFrCHxUC9 z`|w)OwY3G0De9Bpmzq%U#-_(B{C+rOrl5@O=?mcR@h}t#Y%TS5F=961Wx;>O2RjE+ zCI14c1ECqUHK+YObUf&)V~=$-gQefRFdr!yneJhzJ6Oj1{x z=-XFtLT!mZr8Pj?ICLY(g>8gq4jYyoD*B6W3B6}`bLdQk#aVW6;Fo*LtXtQ>=>njWFvp??`lqoe8I>UK(W>thlKWDZAwf-fvGTBaOv`W-#Ub@YF*k z&Q+P)A*8{P?=ACSzP{el8`r2!tUML%YeI8=wSfhdcU(dug^l1&zL?2#oV{hT$o!<; z?e}!?bI4>jB@J|xN-Yf917%0Ef`~6kG+hW~G+9%C|o6W)Ho}X?q zg?@;mCUWjtuVl%rj4i2jdRjyyDYF=+>GbHvNmzf$YEve)r7{`;-g6fq7wO6kSsO0I zGHPScTrbXb!^&R9H`;o-X$W=lgwYL;$JF$-KQA|$8IIW#^4<{x>o+38J+Jef-Mj+| z=ME2#CD%iE6faU-7aViZR0tk=M-FroUjOj58Q6(og+Qr3&wE7moPN{7n??QP+}b0= z9Hd$L5>EldAcKDUBm*tkB{twA3|zSi=5s?(&vhc7OFQ znpK#|`Z$1#otjByL!`s?;=R13l>Nd{j|hd>=_9&xUNEWG0eByqiMSnjbLqh1~eQpUwCU5M};oWcZm zn0AAUol}2g7qvj!gz0jRneotL1*AoZ1N8(#>^3GX^%QP-Ff z5~>AY?`z%^lcFIjYxsjtP|t$r{Z|E1Ek=M$bqO3{HM>db7gIdrkDQo$l4CRrQ_Csh zF&n1wHTkwTr|OnZL>Af~ISXlo_2FAo*mkXeXcsI79dB!tc7e_yM{l=;PNBR4%!fn$ zU#U1SN@D(uQKN7KQA(Q3(ai>js*-b7>YD?9I8-ej#Q41!^Qqzph6D<)_wS_fly5}% zAu7$fT`{Xy^nGme$3F%Em8IF!%NDga1_j(nv2n9|QT`y8rF?koPE?rnvHS)j~W z^R6@$Z5ZqYlY=fma@p9c_7&guuLklovbmwD&Fw~eIIWT;=5)N#Gef4xk;evF2kLkoggK0k4fiR}r$?d!cU&Sz z^Yfc@$o|F@p)h}QP24t8t8ejlmP0R@HHY%cjOT_P*SnB)OMIx0J3XWl)H?56_4z3(MxBC~cD$ak zNN#h_l2CAFPG-r@p?r5w6p^DM+0KlxU{B$7c)F;0-aka=g!Dr!>blp7SNJOZ{aUZ* zX=%YHch>FjvdD=Lhw|ZmJn897c=$)IN!W^4bcu}wcNIm~TLZtby&<-LqzOOs5*}?Y zpLzBJO_xxp5b}Bk>u|Y<$2@mFHfk-g*VO)$*+o|g!=n0#W#7jkA86LEH%-@D`b%j> za~2`~q@c4xz9cdEkCW?WfN%HUVecEsp+5VYPcMCD)?DIR<(PT)ON?#^|K*uUS5jBN zDUT^@0x#O>q$fOEICYSs8=E!S&gqvZjY6`7pr6Oy$x{PX9eg|L8{Nd@AIn=4D09b*6!lUGFDK?}y9{Rr zH^cTcN@{Yw*?|~n;J8-Y$Jvm7z{=dw40ak>?p~GdKkeOqUoM(+j2NSB;@YAjN~<3+ z9X^3>ng8j;@2tmgqF>WB3}Dywvu5n<^6zsVm&>;YrB6p;)0X1tnT#gx(QY``SF*Cf z?7n>#gZJ0Xz~^*piUg(HfTG<0lFmB>FpK+m8R-aYg;VnCmw=2xnK~+$`c!0&W-gsV z=}o!7s9zl2Lc&*D=j=T@5OAD9k&sx!MF*v^FqY6;>N%^8KRt$|e-bE-@^T(3gRQjY zQKFbXV;osDdx3Yc5);BqrguH2s?jd&gE}>p2S~q+s{Psj3dL{L>ueE{d;qLM5yObt zvn6J)IO#i?=j>h!F~=6zw?^P8Qg&-w+(OAq$zWXjsV0KM4j{ zBJ(};?Y=2uU^TO^2eD>?CWVJZB8ZPm4@E3pN3osqlPm`;nVVBG$R2T}B2lQw1+rLFG$LwAl<7Qo+Sk{S?PRGy~IwdGPI%p!yq~Q zVs=-YJwJ!Mq$eG>Sg{0E&hsW3lBid;ulh;ug&Z$m!OC)kZuKca$D*erZRWKyGe}n- zmGHEeqf7hAHV*koE%cY%TyJp2I<@SA@uGg{$501N#!sPKBfSfkyHV3Z?jf=07`<*c z&C!9LO7+95f?(ZyR#ock?;5txa)2^Nns1<7M{C3q7<%%{<9icthgB6YR9+FuNN zRaYD1X!obV?U7`I=}P+bymLmWXkEkUIDAv7fsdkRO75KZn&NM)v9H1Rg^JvXwX6(m z1bhB2;hg8N%zKYEk^J?*m#=eeB)9gX-z$NxOBpO`i5^(E_o2<>@C}@Dca=i)Wx4s! zp?5IBgnmWgt4S-w&Ww zpuN)H5B<4$mOQ(%Ty8+}*M(Hl&=2HHZ1o&BYP{g~((~q&rHR&6erkCtDm0geoh`HG zN9WXT&Q@A}qHCU!SnC3FQ5?0tnALWR%3^9Vi;5RB*@V|vYF%%yb}jwR8vAEByZvD& z%oCg_S6x5OkIU~P$7DnL^($e zw%O};&G$GskdC;3&CUGn=Fx#-RPcD43C5gJ&&IySSdVVhrNcr@K4hgo!?ARXeiQWU zL?M)I5v-a)vqSZZHzz&TU?4AEFb~DhQCpi5{UdtKkcA^!6&4Z295J) z^2gnzk^N3XUdHS1V~i4S=KcAp{dKAi^yVHbR8|jn-F2%vniRvVMX%Dt z(VXJ7ZRNroz?8Wa_WBjrk8@(?Z=Qsig#?nvM!>^&gnwyhV*DOSmS&fc#KT$Pa$aV0 zcS{ZzW2`n~CUs88DCc{kEK=nQYb|o0l>dgRlTn|u-8KxT2w2@oww|bo+&0qUoyL#h z;Ti!m^eB|lVFcT0D7Mbp7Z4}{+endZV?0h;D*f@dWNBuBZXNnt+HRDTgX{A1X56=P zu2Qyzy1u<#k>V2IA|fZTGUOH<6?d1)U&1ONDNRm~NMd_HBFXbsk`=VNJsB+XDa@6W zH^eYx0Q-9D_RHklBf*icH2k|^@jEf$FFWjF_FGtXoU691JtQS+4Qu9LrO$uNMt6eQ z-Z%;$e4W;>5)~6Zo`H)jOCoE(6cR@Iop;m}ZG@>)p(?tovtpKD>`ypH&+-#@h5ImYhZ`CT6Tf)N2!hNxge{x;i*7)7;Hig zG~4lba0lMumTPC)xpN+4=D};~bDd8ItD3MZFny(;;D0v#6R0ghUuS3u{Ha+;GOGy zE^qZ3IsG;9q{4MrAP`%&aTZo5i?ekxWZ33I*`X?xvhwNg1zjyz^@~HMVUEPzkos4b z{-Q$J3DsL=nf|Ie^P)bXlc&(i8d7cj8IyX~Q|D*^u6P+8{|Ys38d)bV8cAr*&-@(v zRGl9cP?4bewj_pEfk@?8{!lSUJy|0-Wuo`)^!#92%YcE|mKBvjI5%MLR}2M-AZz;wi&VmPFS+0a%&PV;B5@)!3v#ttUH!<9sKa7ECE@K3m6(12_;;hO_4`}s8PNhiL)p_6RmRBg5R3uS3br`%R+aW zOUU|+_UZ@cJRjP(!lIo{Q~qTwbPRj?QX%UYh?lwwn7Q-V^C{gZ52tQQ0`8<>qWb{j z5+iSFBKC-SqsqVFnX&zj&x|*|fzw0}4pwDFF`TA7R@be_+RZ}ymzjsF$Q{3J=3-&Q7m>DR>{fs$YG~IH{3XL zB!*QbtM_4kJflz<`Pf;tT9=4tY5(K69P7MhFyxc$Mw54@`Lw z4e+g#r)+huW3Pyr z3vH}k#n1L*E8e_3->uaE0L~r*?JBOSrp{=ht&- z+ypGf3iD&t0uAQ)!cg4#6?ifs46hx1W*5J8gZCnhL)VULJom5X)A6P{RJEI~Wa^t2 z+qxry*&{Mek-x{WIbs&oHGo)b&Xpr=Sdb((5-ds3yRTZ~Zrv zo%cj*8{Ty8EO=>nKo6e%*2It`rU^yhyFrSzT{&DT&rq%w`D!K#w+(S1po*THXG811 zXzEWB&a1QPk^@Z2w3AMV>=yw-B3X&BNbBrQPOrSk`m3uSHFXYkCox(>8wbcE4MO{Y zGe0bS10|{fu_a*Ja%A{ME_q@&9C5&Ys_Vi`0B@#ZH>@@qCv8QS=Tx6rc3mC48^($# zW98MHg#>M9QYNQi#XKDS-l|z1mfrbht;djaNB0LQz#`bApn1om==|EVr5z<0gh>gA zM@f*chPA(jrNL{5!BStjr*#Tem7cDRAHZR=Wm%`lCe+dAU>Lei=|6zNj$C7~CJBDr z?5BN^0+STodV*s-<9WiM7P`7RiAFc4O+Oj8c3ykXXZoWI9e-;tE;9SjDckGW^nxoU zzVWyjmsgxaNZLpP{o=)~UZZ=g*JW6%w|hYASs!X|5&O?Ria6A07z}G__bs1z^Q-w_ zT_y~m^`N0mmx>yviiAeT!H_F)m_|)_bZLcZ4^4>7T+Jz!TZV2jNU*CTI2hk}M1vdg zAq)Bs3Fpq-cya=ce;N*x9aU@SHS$Ko*mq?rY5xWqd|c@77orC(n~r&KRxObeoCGhw zP4TK)Ujr3@)G@yP+j6lqY9x0dF4b?*c?#`zY$ntEPxjNkI_W#OKd-9s4OKW!x%+jf z9JO`OJc{Z9iF1d%=bFg9Dz=XBR#z%kqrTmJ(Pn$cN4tYQFf9X-BccIXt=AFPiZn{E zE$>&>pQslv#7U0=_n(n=40AaMt3)l1myd7Y2mE&U+b=%V>b&EY|gM)3Bu){@NWK~3ATkD{iQ2_u2Ef%?DoarhzBc zb$JTB!krfZd!S9(qsuP_pTl2{RLs`QE976R2jxKX?Wz=60gID&8zu&<18{JXM@zW(pG;%YMBs{%ey%P2*KG@YY< zSQ)?y&EHOlkXxQRPT3GbW)}#A|_$$3ps9L;^-2Z>DS z+J89KXiL0hlDOcY4K8@(%fM=8VtMZ7swK#~?4$B6^a@Q@3@jK&0KPW}gz}N;%BNoz z*IkJ2>}|b_+BCyW^M%&UAw-_1X(3AuHVjtd^vxV(>fmmfDOj(nk2AmHeTzw{zP^5)enP8%EeCEm>tc%5X?Gep?_XVlSJv0{_V)$Hus+|X zXt%}JkN@pAb=NMI4=^$t#1 zz^5((mCjQ!;2yZ?^NI9Yx7NbQO0;^zqX!$?4)DZI5{nUb}FLwux z51y@)d|j5x4@D!ND7x25v+3C2Q67H@7*@3#>O9>l$6m>-qfP>I4q{T|k?#0LkjVxI97!i zAeLc_qCXT{&Bsq9NS26?n50l^#R-&Ea*ZlMa;k$Ik>2(Nn4)iQ@1zJ*+%46M2Ue6^Wr9IeQ$^4$BJK8_b`0Fz?y zpsHOoYiy(`Mj)Q|&C#(mE=9Y$ly84CtUWxF$+k8bFvsA{QeV0eV_38u2Ws|?5nLBH z9XBm;Rlm9YPDFL+)%x~=8mVEM;AB}3x4{3#*+Y*Gb+W#P$^h5jCS!Aw<|O- zc9qsj=?IswOCc%n4~_Ba1@PTEPLY@TqRWN+WaABNMQ9&5zrzfG@{Uv2@K|WMyVt+h zPpv>aSj9rWDfk7NE{!E%DWyJCz!prk^Jr}y^M;B?nave@g^VPVTSQw3`u{?yu zBS+7qmCdT3DP;8lVX~%0!()_#kT5_joFZf(sNv>A;Wb`Hvh=m!w)kt+`DE<|PSK8+ zO$hyL(=|5CnQp7^bK%)abMJi?37B*?{@20CK8_+lF_>uGs3=J)rodH%+f$n~iF{PC zI)9>(j-spUg=~c(*#++7d1aL2<>!y9IuP$xz$h?c~P%~yT+1&>#pb%3aK^fZ0py0WcvJ)HK}W4b`DE@+6VJH6wL z7Z%J5VT`|e93FloG+I_*tPxg7w<pjPbZD?p>YedP-DXY%bFLAoFx>)-gu%?fkJM$2xVZ$3=HEN-PA7Q5-iWkJd zZiRm8kiB)q%37gl+7-1K%~b-e%6c>1%+U;zdC>H&5@&cRqj2@)Tb+q4>}1~~C*qpC zTHjx5#`duA)eb)~KU4Q3R38MdM=EZs#zZL|#Nl>1gaA*dJz5ZVrkvmpdF}#FpzFRW zTX#;y8S`bHM0!QLE^0r#z0>CO`SC&`B`xpo7XRLW<>dCic_%K|%vk!z!q z{T%D6t7VCC6|>{537X_Ia=B9?t&Np(@oLuepIL+}-Wa~dZ<%{Q3_54hwfBW)dQHy& zeB<4TEV4xA5f`B9*|N3zlY>AJ!3Hr`!OZK1#|tK9OJSV1>bx5jv+_D4P2BNLw`3}% z%I<_XorIg-UMwbtV+*y+wJL`FRG)*FJcy`(xzFhv7b_!3dl?t`c&N>%+qLLx(%O+d z8!?zbh#}D81mCW*FJ{!I1URS3e6Uh7{*~3xR=mC&d}Pv!x0y3vfG6Chr_cfIpDx++ z=w|y9U{RtN8qy6mPu>IHu%l>R6=_pY{JSh>?2(;DU`Y%DD=q&KMlTKcYa6`9yMz_H z`~cYDFFLv^E%$0TUheY%=BnnamPTJ#Gu&y{GjGD$=o?c46HJw=8f!mcX-_Afpi701 zMT)yGH6k5Huu{`=fwBM$W3{LMoCRXJ_t8`BTw0)J!OEL7D{S(Uz>89{L=8dwt9oRy!;n;BH?aSKO!aLuD`}b_R3a57=M6)ilIehHc?U zXP-S>xpJtRnCuI{D=mtr^n4aa%N#b(LrGuP1HKq!dup+@C-{$Ro9CX;qTnlvcU?9x L)-V3W;okoOT`y+= diff --git a/docs/html/classpyrax_1_1manager_1_1BaseManager.html b/docs/html/classpyrax_1_1manager_1_1BaseManager.html index e31e918a..0a834a05 100644 --- a/docs/html/classpyrax_1_1manager_1_1BaseManager.html +++ b/docs/html/classpyrax_1_1manager_1_1BaseManager.html @@ -116,11 +116,15 @@
    -CloudDatabaseManager -CloudDatabaseUserManager -CloudDNSManager -CloudLoadBalancerManager -CloudNetworkManager +ScalingGroupManager +CloudDatabaseManager +CloudDatabaseUserManager +CloudDNSManager +CloudLoadBalancerManager +CloudMonitorEntityManager +CloudMonitorNotificationManager +CloudMonitorNotificationPlanManager +CloudNetworkManager
    @@ -207,7 +211,7 @@
    -

    Reimplemented in CloudDNSManager.

    +

    Reimplemented in ScalingGroupManager, and CloudDNSManager.

    @@ -303,24 +307,6 @@   name, - - - -   - return_none = False, - - - - -   - return_raw = False, - - - - -   - return_response = False, - @@ -343,6 +329,9 @@

    Subclasses need to implement the _create_body() method to return a dict that will be used for the API request body.

    +

    For cases where no response is returned from the API on creation, pass `return_none=True` so that the _create method doesn't expect one.

    +

    For cases where you do not want the _create method to attempt to parse the response, but instead have it returned directly, pass `return_raw=True`.

    +

    For cases where the API returns information in the response and not the response_body, pass `return_response=True`.

    @@ -631,7 +620,7 @@ diff --git a/docs/html/classpyrax_1_1manager_1_1BaseManager.png b/docs/html/classpyrax_1_1manager_1_1BaseManager.png index 166b830e6a9df9edbe6465a1d9a40b45ffbcad59..57d780917d14d46b70542b9a0a16f8891ca21305 100644 GIT binary patch literal 3325 zcmb`Kc~leU8pcB)fWfd-A}SECQWRxTD2jqWP!QP^l%<5NEg*|5R>Kwy5PNY$w4wwd z1_mn>LAk%@{iAcveBV2BX6DTMo9BJr zZ?1YCcSgXsz#$L_!sVFbNeDy%gg~I0s*3V6%HQ?r%BM}9?%qx^nM@vX=a&+0wtO#- z-tUheKZac$+bTa)#hyHV3L?K~Z5!-#~nLT6c zxyt}C)9M}%t8>`wUjyWZ)hxlxgx}P=5S_AkE>Ci)sp|dICuM4Br4Hos_9U~=GRwi< z3;sAAJ+94n(}zvd2TGI+DC_yM?U#yG>~z59i#w`BA=Y6}6T=6C&BFYUlHk2POuP})hoVx&1Jn6)!}=xbg_4|ruj??+1HX}$>(=j4ptYI3si7Mk-N&4 zl$lOEUeeJ1j6|E?rXLk4a(@Gs3}tjHYL(@jo|RMgKKv(H$d zY1pHXxC@ygfMkpPWqE{db+P?)MZ@O@@0fxrCXAHjuF=<@Y4LUkY+t-qUinVdRTh|M zJiFg3$@lc`P=Z~gMq|zQi*ZeL#$ZPVr`noRhF!E)6MpradKl%I$c}(Y?iq?>p}%Jj z!>MtX1wnrU-Ftv#5SSce86>w4Dm|Fqv>tmfH3JI!fO0Eji&l+^oBQa=^AkgMC!DW) z=rAF8%}DK^Y(ZpqEKnZ%))0b+N8+b$U87xa)k8ArbbGh3>cA&b7Y!zxK{K6I;ywrb zYxVD|@Xhktl2aQC!=9>l%7aU9(6i7C8>_*X?e^AI7 z(_n637v1ztyt<_25FE>ztU43#)2w5yalQgHFt%*$CL^jAipNKiU!!n7=Zpe?4#E)f z3%tAE8~}UG&2xbu)@3kj?7S|lm((0;xN;Talj^zum zj%=#cYuXdEObNr0nsMirWJt>({WJr#hEnC8{U>XPCuU3hxFaL0Cb#_0!Nfa}*mb+I&sh$RvhI`zUW*o0OG;KH9LiCt4M3MR&mUiPH-ul$C4%|BRhe zk!eLPRiRDVsay7+vq^gxk$|iWZ*2PIbi-Z`)6qD7nhmHkjRyHStg7nbw0a#jz^V^G zcojF7gM*1yaiO6#QoP1^H}=~Z`XmR2@#_|v2kq(#uYX%Ibc|wycU6nF;~gJ)P?5!x z2`uGMQ~ajT>57sxMwP1YhrNWt^21$F4dEd-vri~q0&4~SCuRGmFrnHXYTiyw_&+sm zDX-~T6Z2TNo?G@a%@tY$x6mOlOm(7z?&~>Mrl&f3LXjFh*>7Bw=UJ0@;cW&=}U4PMwb3@a!?TYvV+#`aWPQc>jbwYP!f!qOiV$OXO9J**7ZuNrB zTFM`^^fCRvw!Eo2bb4>m9>t(u)SB6?i5Cn-8*C?rUyT~=UFs)x(2d!PqO2zLqC&RY zSvK0afP_Bv<7yH_cnp+$V}Lxfd?y&EQgEgQr3}V>wMv~MrxJOy)dTgUh!1)*;%g$X z&9M!bp;yoTy&QdXY%$=p*^vyC@`z7leUE5ktcE_bx5Ky7H<>&>KW+8s6gD z5Rg)CToKI7>ATcMp-xq_q6(^rap6UJ$~~S|cwV~GR6f=SM=Uf9e%CxZO$b_5jcce@)|@K zJ;oW57Pko9l@;F=en(soqw6jUc^(f`s3){Y^DpVrHxp25%vNymW~j@Lw%GBnZ3dEC zXZi7?(FBeHW*_CEs6yNnRkJmHUC=N+S7z!Ea@R_slE$zfnA>|OA1?LCEEUu1@(?~) zCGNgwg9!Ou1#DKWu*7&drq<;~a8%}_D;2hu*^~pkeCz2ES~?sM6YLDEUcP&10E)#8 zDP)*r+fu$Ap%u3})`h@8l;wHqk=mar^nH`O4nS9~}ES-|P)4c_PdEEbU7C5gcv4AZ7PClzT)i3pGC+A$kr zFodIvNgXfz#uD^)8r|;rjK49UZNyVv_50PKOcjY&{%)u=&>e_)2sR8sZJ+0;ed^6h z|5R^IS9~wlZjK9;M-o-Va{JAuQCjuuk84=qbH<$^)(Y8;;()4%Qva1L)NYz$gZ-N~ zw*zrXfH5e^Icb^;kIEfv?&%NK@TxMsB}>@gY23lU^~Wpsbou%}sdcd)y+SMG@0&JX@<`P0Sl2mO zpXbnbi^fk*fd(q zo)y`=mY%Uk1&DqQBes&2^tRUj@- L#~rH`G8ZgGr-TCmrII^fq{Y7)59f*fq{84kR8Cm3?w%%y=XI0(W;&$-_yl0q=ND7 z+?$hL8SuCm1|R)j|Eczanq}D|*R}(;vBAtY3sx^q-fMSZ_tSmedknt(_IV_xxJyP& zu*tLKMbQiw4mH7F|7Vn(+j-6T;~%q<1fhc|e;bblGhS2MY|weZP3`cGp8tPWo=LG- zyv}}3a6jLAzR4VFvwf-_eVYHDqh98j@zJjpN()ZTamkqLDZVVmZS%1uYTplR+`}-L zBl65i_XOiV#hFTOFCNW&9C$=ZP0%RC$a(6rr71!EM;;%SNi^t8_|$b$sxjSQ)kDt7 z9Fhhv=X{Q_vKPMG*mgGlnmhl0`#ZdoIqohzJzcEDlV$R=?t>~$=C6vLU%S=}>GLeK+}pvR2=txl#2Q9bCxcFbEM?9q96;SGd{qS%SSE9T zB-I2#GCoQ`jUX;i7U<=T&H}$mH)bcxJeE+;=t-7QGwdtuc`W`|qTLh7d;H_5#j(Um z3xI-ul4RZWr1yjS)TiA10bw!5$Q-QQi<^MB9B{m;!k*?{u@ zmlZZ00~y745J(Dvw1W6=K~eGi^UGD&|D;yx)~~l)s6Y3Pk?0q*^=sqjtV~+tT;=`A ze8*#9ZOQfOb(89|KAKh4hlR#qVp=?k5=S`w+bOYR36rHWB7&Mg7;!CKreD z7~YHxQZlZUO39gAasT#@~c~<|vI9I3q zPlu|!yK~mt{yms_VfG%e*!jA?VTOlN>OB)RH@Zuw;hBd$vw_e%bLuWl^!+s`uv4Ws_cREi$q(2tBGZ zIb2orbp+6)A1Al2o4(QhW1rKh%QH{5IXAyipK)cgd+z0=qo4L2s(hXH^5z0(u{~ja z(@yq>BpypKR6qK#$=X`2^w89)^@lfP?(KPWb8Y8$k)ZqAx}QFI5PiOGrl)-2M_t*a zj`PZTCeQBPo_7ApjBvs2TTCL4nyD2FFG-6$b7Pk0-cLtQcbwm+{BfPrpG%9H{by`B zSvS>lYh#F6^Wn6LqRn;M-+cJ0Z0G4%r!46@>(jM!-<*wxlc#2j>pQR6X!?;+EtEaI z{!^D{-sIZ3o`1V8n}1yxb24^;)thduDEX}7m#-((#z|K{iV;=z>6^Ob9MG$if1Ere zEB&Ne=>6%Rm#%K~p0+99Kyq2G%$|c$5|@+y{aSr){nPzN9p&oBTrsB{GY{_8B!?x*j94#kMzy^ug>9d{(HLoZIx)b z;k}85o%LqFqYZyb%QhAE=u1Ho{!0O9@}Hps%m_7IC*M!v0H*Q(o{#@C91`92kLeNL SJw;$)#Ng@b=d#Wzp$Pzt7D`_L diff --git a/docs/html/classpyrax_1_1resource_1_1BaseResource.html b/docs/html/classpyrax_1_1resource_1_1BaseResource.html index 7672ed71..b13a6165 100644 --- a/docs/html/classpyrax_1_1resource_1_1BaseResource.html +++ b/docs/html/classpyrax_1_1resource_1_1BaseResource.html @@ -117,19 +117,30 @@
    -Tenant -User -CloudBlockStorageSnapshot -CloudBlockStorageVolume -CloudBlockStorageVolumeType -CloudDatabaseDatabase -CloudDatabaseFlavor -CloudDatabaseInstance -CloudDatabaseUser -CloudDNSDomain -CloudDNSRecord -CloudLoadBalancer -CloudNetwork +AutoScalePolicy +AutoScaleWebhook +ScalingGroup +Tenant +User +CloudBlockStorageSnapshot +CloudBlockStorageVolume +CloudBlockStorageVolumeType +CloudDatabaseDatabase +CloudDatabaseFlavor +CloudDatabaseInstance +CloudDatabaseUser +CloudDNSDomain +CloudDNSRecord +CloudLoadBalancer +CloudMonitorAlarm +CloudMonitorCheck +CloudMonitorCheckType +CloudMonitorEntity +CloudMonitorNotification +CloudMonitorNotificationPlan +CloudMonitorNotificationType +CloudMonitorZone +CloudNetwork
    @@ -307,7 +318,7 @@

    Deletes the object.

    -

    Reimplemented in CloudDatabaseUser, CloudDatabaseDatabase, CloudNetwork, CloudBlockStorageSnapshot, and CloudDNSRecord.

    +

    Reimplemented in AutoScaleWebhook, CloudMonitorCheck, AutoScalePolicy, CloudDatabaseUser, CloudDatabaseDatabase, CloudNetwork, CloudBlockStorageSnapshot, and CloudDNSRecord.

    @@ -328,7 +339,7 @@

    Gets the details for the object.

    -

    Reimplemented in CloudDatabaseInstance, CloudDNSRecord, and CloudNetwork.

    +

    Reimplemented in CloudMonitorAlarm, AutoScaleWebhook, AutoScalePolicy, CloudMonitorCheck, CloudDatabaseInstance, CloudDNSRecord, and CloudNetwork.

    @@ -432,6 +443,8 @@

    Property Documentation

    @@ -469,7 +482,7 @@ diff --git a/docs/html/classpyrax_1_1resource_1_1BaseResource.png b/docs/html/classpyrax_1_1resource_1_1BaseResource.png index 379c63b74afc2b54d40e72c50df4f99ce49a76a8..291c8bca4943bf0000a3e717847714a9fdba9703 100644 GIT binary patch literal 6582 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 Z&8V&B^Z#%X|H&e8_Oyjb(GSR*{{VUf@T&j- literal 3663 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 diff --git a/docs/html/cloudmonitoring_8py.html b/docs/html/cloudmonitoring_8py.html new file mode 100644 index 00000000..8e665046 --- /dev/null +++ b/docs/html/cloudmonitoring_8py.html @@ -0,0 +1,143 @@ + + + + + +pyrax: pyrax/cloudmonitoring.py File Reference + + + + + + + + + + + +
    + + +
    + + + + + + + + + + + +
    +
    pyrax + +
    +
    Python Bindings for the Rackspace Cloud
    +
    +
    + + + + + +
    +
    + +
    +
    pyrax/cloudmonitoring.py File Reference
    +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

    +Classes

    class  CloudMonitorEntity
    class  CloudMonitorNotificationManager
     Handles all of the requests dealing with notifications. More...
    class  CloudMonitorNotificationPlanManager
     Handles all of the requests dealing with Notification Plans. More...
    class  CloudMonitorEntityManager
     Handles all of the entity-specific requests. More...
    class  CloudMonitorCheck
     Represents a check defined for an entity. More...
    class  CloudMonitorCheckType
     Represents the type of monitor check to be run. More...
    class  CloudMonitorZone
     Represents a location from which Cloud Monitoring collects data. More...
    class  CloudMonitorNotification
     Represents an action to take when an alarm is triggered. More...
    class  CloudMonitorNotificationType
     Represents a class of action to take when an alarm is triggered. More...
    class  CloudMonitorNotificationPlan
     A Notification plan is a list of the notification actions to take when an alarm is triggered. More...
    class  CloudMonitorAlarm
     Alarms bind alerting rules, entities, and notification plans into a logical unit. More...
    class  CloudMonitorClient
     This is the base client for creating and managing Cloud Monitoring. More...

    +Packages

    namespace  pyrax::cloudmonitoring

    +Variables

    tuple _invalid_key_pat = re.compile(r"Validation error for key '([^']+)'")
    +
    + + + + +
    + +
    + + + + + + + diff --git a/docs/html/exceptions_8py.html b/docs/html/exceptions_8py.html index 1e7733e5..c0999c84 100644 --- a/docs/html/exceptions_8py.html +++ b/docs/html/exceptions_8py.html @@ -118,7 +118,12 @@ class  InvalidCredentialFile class  InvalidDateTimeString class  InvalidDeviceType +class  InvalidLoadBalancer class  InvalidLoadBalancerParameters +class  InvalidMonitoringCheckDetails +class  InvalidMonitoringCheckUpdate +class  InvalidMonitoringMetricsRequest +class  InvalidMonitoringMetricsResolution class  InvalidNodeCondition class  InvalidNodeParameters class  InvalidPTRRecord @@ -134,8 +139,12 @@ class  MissingDNSSettings class  MissingHealthMonitorSettings class  MissingLoadBalancerParameters +class  MissingMonitoringCheckDetails +class  MissingMonitoringCheckGranularity class  MissingName class  MissingTemporaryURLKey +class  MonitoringCheckTargetNotSpecified +class  MonitoringZonesPollMissing class  NetworkCIDRInvalid class  NetworkCIDRMalformed class  NetworkCountExceeded @@ -217,7 +226,7 @@ diff --git a/docs/html/files.html b/docs/html/files.html index da312f3f..24253191 100644 --- a/docs/html/files.html +++ b/docs/html/files.html @@ -82,12 +82,14 @@
    Here is a list of all files with brief descriptions:
    + + @@ -121,7 +123,7 @@ diff --git a/docs/html/functions.html b/docs/html/functions.html index d1fee5b7..9df68f13 100644 --- a/docs/html/functions.html +++ b/docs/html/functions.html @@ -130,30 +130,37 @@

    - _ -

    setup.py
    pyrax/__init__.py
    pyrax/autoscale.py
    pyrax/base_identity.py
    pyrax/client.py
    pyrax/cloudblockstorage.py
    pyrax/clouddatabases.py
    pyrax/clouddns.py
    pyrax/cloudloadbalancers.py
    pyrax/cloudmonitoring.py
    pyrax/cloudnetworks.py
    pyrax/exceptions.py
    pyrax/manager.py
    + + + + + + + + + + +
    +
    pyrax + +
    +
    Python Bindings for the Rackspace Cloud
    +
    + + + + + + + + + +
    +  + +

    - o -

    +
    + + + + +
    + +
    + + + + + + + diff --git a/docs/html/functions_func_0x70.html b/docs/html/functions_func_0x70.html index ce4cd60d..44082e97 100644 --- a/docs/html/functions_func_0x70.html +++ b/docs/html/functions_func_0x70.html @@ -98,6 +98,7 @@
  • l
  • m
  • n
  • +
  • o
  • p
  • r
  • s
  • @@ -110,6 +111,14 @@  

    - p -

      +
    • pause() +: ScalingGroup +, ScalingGroupManager +, AutoScaleClient +
    • +
    • policy_count() +: ScalingGroup +
    • projectid() : BaseClient
    • @@ -141,7 +150,7 @@

      - p -

        diff --git a/docs/html/functions_func_0x72.html b/docs/html/functions_func_0x72.html index 151551eb..22b8e569 100644 --- a/docs/html/functions_func_0x72.html +++ b/docs/html/functions_func_0x72.html @@ -98,6 +98,7 @@
      • l
      • m
      • n
      • +
      • o
      • p
      • r
      • s
      • @@ -129,6 +130,9 @@

        - r -

        • request() : BaseClient
        • +
        • required_field_names() +: CloudMonitorCheckType +
        • reset_timings() : BaseClient
        • @@ -144,19 +148,24 @@

          - r -

            : CloudDatabaseInstance , CloudDatabaseClient +
          • resume() +: ScalingGroup +, ScalingGroupManager +, AutoScaleClient +
          • revoke_user_access() -: CloudDatabaseUser -, CloudDatabaseInstance -, CloudDatabaseClient +: CloudDatabaseInstance +, CloudDatabaseUser , CloudDatabaseUserManager +, CloudDatabaseClient
          • root_user_status() : CloudDatabaseClient , CloudDatabaseInstance
          • run() -: _WaitThread -, FolderUploader +: FolderUploader +, _WaitThread
          • run_hooks() : BaseManager @@ -180,7 +189,7 @@

            - r -

              diff --git a/docs/html/functions_func_0x73.html b/docs/html/functions_func_0x73.html index 694dd59c..6e7fcd74 100644 --- a/docs/html/functions_func_0x73.html +++ b/docs/html/functions_func_0x73.html @@ -98,6 +98,7 @@
            • l
            • m
            • n
            • +
            • o
            • p
            • r
            • s
            • @@ -215,7 +216,7 @@

              - s -

                diff --git a/docs/html/functions_func_0x74.html b/docs/html/functions_func_0x74.html index 8aa1c848..9bce6f0f 100644 --- a/docs/html/functions_func_0x74.html +++ b/docs/html/functions_func_0x74.html @@ -98,6 +98,7 @@
              • l
              • m
              • n
              • +
              • o
              • p
              • r
              • s
              • @@ -110,6 +111,10 @@  

                - t -

                  +
                • test_notification() +: CloudMonitorNotificationManager +, CloudMonitorClient +
                • to_dict() : Node , VirtualIP @@ -133,7 +138,7 @@

                  - t -

                    diff --git a/docs/html/functions_func_0x75.html b/docs/html/functions_func_0x75.html index 40c8896a..9c1d317d 100644 --- a/docs/html/functions_func_0x75.html +++ b/docs/html/functions_func_0x75.html @@ -98,6 +98,7 @@
                  • l
                  • m
                  • n
                  • +
                  • o
                  • p
                  • r
                  • s
                  • @@ -115,45 +116,90 @@

                    - u -

                      , BaseClient
                    • update() -: CloudDNSDomain -, CloudLoadBalancerClient -, CloudLoadBalancer +: ScalingGroupManager , CloudDNSRecord +, CloudMonitorNotification +, CloudMonitorAlarm +, CloudDNSDomain +, AutoScalePolicy +, CloudLoadBalancer , CloudLoadBalancerManager +, ScalingGroup +, AutoScaleWebhook , Node +, CloudLoadBalancerClient +, AutoScaleClient +, CloudMonitorEntity +, CloudMonitorCheck +
                    • +
                    • update_alarm() +: CloudMonitorEntity +, CloudMonitorEntityManager +, CloudMonitorClient +
                    • +
                    • update_check() +: CloudMonitorEntityManager +, CloudMonitorClient
                    • update_domain() : CloudDNSManager , CloudDNSClient
                    • +
                    • update_entity() +: CloudMonitorEntityManager +, CloudMonitorClient +
                    • +
                    • update_launch_config() +: ScalingGroup +, ScalingGroupManager +, AutoScaleClient +
                    • +
                    • update_launch_metadata() +: AutoScaleClient +, ScalingGroup +, ScalingGroupManager +
                    • update_metadata() -: CloudLoadBalancer +: ScalingGroup +, ScalingGroupManager +, AutoScaleWebhook +, AutoScaleClient +, CloudLoadBalancer , CloudLoadBalancerManager , Node , CloudLoadBalancerClient
                    • update_metadata_for_node() -: CloudLoadBalancerClient -, CloudLoadBalancer +: CloudLoadBalancer +, CloudLoadBalancerClient
                    • update_node() : CloudLoadBalancer , CloudLoadBalancerManager , CloudLoadBalancerClient
                    • +
                    • update_notification() +: CloudMonitorClient +, CloudMonitorNotificationManager +
                    • +
                    • update_policy() +: ScalingGroup +, ScalingGroupManager +, AutoScaleClient +
                    • update_ptr_record() : CloudDNSManager , CloudDNSClient
                    • update_record() : CloudDNSManager -, CloudDNSDomain , CloudDNSClient +, CloudDNSDomain
                    • update_ssl_termination() : CloudLoadBalancerClient -, CloudLoadBalancer , CloudLoadBalancerManager +, CloudLoadBalancer
                    • update_tenant() : BaseAuth @@ -162,6 +208,18 @@

                      - u -

                        : RaxIdentity , BaseAuth +
                      • update_webhook() +: AutoScalePolicy +, ScalingGroup +, ScalingGroupManager +, AutoScaleClient +
                      • +
                      • update_webhook_metadata() +: AutoScaleClient +, ScalingGroupManager +, AutoScalePolicy +, ScalingGroup +
                      • upload_file() : CFClient , Container @@ -197,7 +255,7 @@

                        - u -

                          diff --git a/docs/html/functions_vars.html b/docs/html/functions_vars.html index f27b732d..1e9b915b 100644 --- a/docs/html/functions_vars.html +++ b/docs/html/functions_vars.html @@ -248,6 +248,10 @@

                          - e -

                          • endpoints : AmbiguousEndpoints
                          • +
                          • entity +: CloudMonitorAlarm +, CloudMonitorCheck +
                          • env_dct : Settings
                          • @@ -380,18 +384,20 @@

                            - m -

                              - n -

                              • name -: Container -, StorageObject -, CloudBlockStorageClient -, CloudDNSClient +: AutoScaleClient +, Container +, BaseClient +, CloudDNSPTRRecord , SelfDeletingTempDirectory , SelfDeletingTempfile , CloudNetworkClient +, CloudMonitorClient , CloudLoadBalancerClient -, CloudDatabaseClient -, CloudDNSPTRRecord +, CloudDNSClient +, CloudBlockStorageClient , CloudDNSRecord -, BaseClient +, CloudDatabaseClient +, StorageObject
                              • NAME_ATTR : BaseResource @@ -435,6 +441,12 @@

                                - p -

                                • plural_response_key : BaseManager
                                • +
                                • policies +: ScalingGroup +
                                • +
                                • policy +: AutoScaleWebhook +
                                • port : Node
                                • @@ -461,7 +473,11 @@

                                  - r -

                                    : BaseAuth
                                  • reload -: BaseResource +: AutoScalePolicy +, BaseResource +, AutoScaleWebhook +, CloudMonitorCheck +, CloudMonitorAlarm
                                  • request_id : ClientException @@ -482,6 +498,9 @@

                                    - r -

                                      - s -

                                        +
                                      • scaling_group +: AutoScalePolicy +
                                      • service_name : BaseClient
                                      • @@ -608,7 +627,7 @@

                                        - w -

                                          diff --git a/docs/html/hierarchy.html b/docs/html/hierarchy.html index 8318a4df..27f959ff 100644 --- a/docs/html/hierarchy.html +++ b/docs/html/hierarchy.html @@ -90,22 +90,31 @@
                                      • BaseClient
                                      • BaseManager
                                      • BaseResource
                                      • @@ -168,7 +185,12 @@
                                      • InvalidCredentialFile
                                      • InvalidDateTimeString
                                      • InvalidDeviceType
                                      • +
                                      • InvalidLoadBalancer
                                      • InvalidLoadBalancerParameters
                                      • +
                                      • InvalidMonitoringCheckDetails
                                      • +
                                      • InvalidMonitoringCheckUpdate
                                      • +
                                      • InvalidMonitoringMetricsRequest
                                      • +
                                      • InvalidMonitoringMetricsResolution
                                      • InvalidNodeCondition
                                      • InvalidNodeParameters
                                      • InvalidPTRRecord
                                      • @@ -187,8 +209,12 @@
                                      • MissingDNSSettings
                                      • MissingHealthMonitorSettings
                                      • MissingLoadBalancerParameters
                                      • +
                                      • MissingMonitoringCheckDetails
                                      • +
                                      • MissingMonitoringCheckGranularity
                                      • MissingName
                                      • MissingTemporaryURLKey
                                      • +
                                      • MonitoringCheckTargetNotSpecified
                                      • +
                                      • MonitoringZonesPollMissing
                                      • NetworkCIDRInvalid
                                      • NetworkCIDRMalformed
                                      • NetworkCountExceeded
                                      • @@ -254,7 +280,7 @@ diff --git a/docs/html/namespacemembers.html b/docs/html/namespacemembers.html index ebc6cd88..7a2d2cc5 100644 --- a/docs/html/namespacemembers.html +++ b/docs/html/namespacemembers.html @@ -126,6 +126,9 @@

                                        - _ -

                                        • _http_debug : pyrax
                                        • +
                                        • _invalid_key_pat +: pyrax::cloudmonitoring +
                                        • _pat : pyrax::base_identity
                                        • @@ -181,6 +184,9 @@

                                          - a -

                                          @@ -206,6 +212,9 @@

                                          - c -

                                          • cloud_loadbalancers : pyrax
                                          • +
                                          • cloud_monitoring +: pyrax +
                                          • cloud_networks : pyrax
                                          • @@ -221,6 +230,9 @@

                                            - c -

                                            • config_file : pyrax
                                            • +
                                            • connect_to_autoscale() +: pyrax +
                                            • connect_to_cloud_blockstorage() : pyrax
                                            • @@ -233,6 +245,9 @@

                                              - c -

                                              • connect_to_cloud_loadbalancers() : pyrax
                                              • +
                                              • connect_to_cloud_monitoring() +: pyrax +
                                              • connect_to_cloud_networks() : pyrax
                                              • @@ -429,6 +444,9 @@

                                                - p -

                                                • packages : setup
                                                • +
                                                • params_to_dict() +: pyrax::utils +
                                                • path : pyrax::identity
                                                • @@ -513,6 +531,9 @@

                                                  - t -

                                                  • testing_requires : setup
                                                  • +
                                                  • to_timestamp() +: pyrax::utils +
                                                  • trace : pyrax::utils
                                                  • @@ -578,7 +599,7 @@

                                                    - w -

                                                      diff --git a/docs/html/namespacemembers_func.html b/docs/html/namespacemembers_func.html index 7adaa9cc..17bb1c83 100644 --- a/docs/html/namespacemembers_func.html +++ b/docs/html/namespacemembers_func.html @@ -96,6 +96,7 @@
                                                    • p
                                                    • r
                                                    • s
                                                    • +
                                                    • t
                                                    • u
                                                    • w
                                                    @@ -145,6 +146,9 @@

                                                    - c -

                                                    • coerce_string_to_list() : pyrax::utils
                                                    • +
                                                    • connect_to_autoscale() +: pyrax +
                                                    • connect_to_cloud_blockstorage() : pyrax
                                                    • @@ -157,6 +161,9 @@

                                                      - c -

                                                      • connect_to_cloud_loadbalancers() : pyrax
                                                      • +
                                                      • connect_to_cloud_monitoring() +: pyrax +
                                                      • connect_to_cloud_networks() : pyrax
                                                      • @@ -256,6 +263,9 @@

                                                        - m -

                                                          - p -

                                                            +
                                                          • params_to_dict() +: pyrax::utils +
                                                          • plug_hole_in_swiftclient_auth() : pyrax
                                                          • @@ -300,6 +310,13 @@

                                                            - s -

                                                            +

                                                            - t -

                                                            + +

                                                            - u -

                                                            • unauthenticated() : pyrax::utils @@ -336,7 +353,7 @@

                                                              - w -

                                                                diff --git a/docs/html/namespacemembers_vars.html b/docs/html/namespacemembers_vars.html index c244cbaa..e327e79d 100644 --- a/docs/html/namespacemembers_vars.html +++ b/docs/html/namespacemembers_vars.html @@ -123,6 +123,9 @@

                                                                - _ -

                                                                • _http_debug : pyrax
                                                                • +
                                                                • _invalid_key_pat +: pyrax::cloudmonitoring +
                                                                • _pat : pyrax::base_identity
                                                                • @@ -148,6 +151,9 @@

                                                                  - a -

                                                                  @@ -170,6 +176,9 @@

                                                                  - c -

                                                                  • cloud_loadbalancers : pyrax
                                                                  • +
                                                                  • cloud_monitoring +: pyrax +
                                                                  • cloud_networks : pyrax
                                                                  • @@ -407,7 +416,7 @@

                                                                    - v -

                                                                      diff --git a/docs/html/namespacepyrax.html b/docs/html/namespacepyrax.html index bb0aa178..3c144af6 100644 --- a/docs/html/namespacepyrax.html +++ b/docs/html/namespacepyrax.html @@ -88,6 +88,7 @@ + @@ -95,6 +96,7 @@ + @@ -151,6 +153,10 @@ + + + + @@ -167,6 +173,8 @@ + + @@ -259,6 +267,25 @@

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

                                                                      + + + +
                                                                      +
                                                                      +

                                                                      Packages

                                                                      namespace  autoscale
                                                                      namespace  base_identity
                                                                      namespace  cf_wrapper
                                                                      namespace  client
                                                                      namespace  clouddatabases
                                                                      namespace  clouddns
                                                                      namespace  cloudloadbalancers
                                                                      namespace  cloudmonitoring
                                                                      namespace  cloudnetworks
                                                                      namespace  exceptions
                                                                      namespace  identity
                                                                       Creates a client for working with cloud dns.
                                                                      def connect_to_cloud_networks
                                                                       Creates a client for working with cloud networks.
                                                                      def connect_to_cloud_monitoring
                                                                       Creates a client for working with cloud monitoring.
                                                                      def connect_to_autoscale
                                                                       Creates a client for working with AutoScale.
                                                                      def get_http_debug
                                                                      def set_http_debug
                                                                      def get_encoding
                                                                       cloud_blockstorage = None
                                                                       cloud_dns = None
                                                                       cloud_networks = None
                                                                       cloud_monitoring = None
                                                                       autoscale = None
                                                                       default_region = None
                                                                      string default_encoding = "utf-8"
                                                                      dictionary settings = {}
                                                                      + + + + + + + +
                                                                      def pyrax.connect_to_autoscale ( region = None)
                                                                      + +
                                                                      + +

                                                                      Creates a client for working with AutoScale.

                                                                      +
                                                                      @@ -335,6 +362,25 @@

                                                                      Creates a client for working with cloud loadbalancers.

                                                                      + + + +
                                                                      +
                                                                      + + + + + + + + +
                                                                      def pyrax.connect_to_cloud_monitoring ( region = None)
                                                                      +
                                                                      +
                                                                      + +

                                                                      Creates a client for working with cloud monitoring.

                                                                      +
                                                                      @@ -805,7 +851,9 @@ 00004 "volume": CloudBlockStorageClient, 00005 "dns": CloudDNSClient, 00006 "compute:network": CloudNetworkClient, -00007 } +00007 "monitor": CloudMonitorClient, +00008 "autoscale": AutoScaleClient, +00009 } @@ -833,6 +881,19 @@
                                                                      +
                                                                      + + +
                                                                      +
                                                                      + + + + +
                                                                      autoscale = None
                                                                      +
                                                                      +
                                                                      +
                                                                      @@ -898,6 +959,19 @@
                                                                      +
                                                                      + + +
                                                                      +
                                                                      + + + + +
                                                                      cloud_monitoring = None
                                                                      +
                                                                      +
                                                                      +
                                                                      @@ -1100,7 +1174,7 @@ diff --git a/docs/html/namespacepyrax_1_1autoscale.html b/docs/html/namespacepyrax_1_1autoscale.html new file mode 100644 index 00000000..0fbdfbde --- /dev/null +++ b/docs/html/namespacepyrax_1_1autoscale.html @@ -0,0 +1,139 @@ + + + + + +pyrax: pyrax::autoscale Namespace Reference + + + + + + + + + + + +
                                                                      + + +
                                                                      + + + + + + + + + + + +
                                                                      +
                                                                      pyrax + +
                                                                      +
                                                                      Python Bindings for the Rackspace Cloud
                                                                      +
                                                                      +
                                                                      + + + + + + + + + +
                                                                      + +
                                                                      + + +
                                                                      +
                                                                      + +
                                                                      +
                                                                      pyrax::autoscale Namespace Reference
                                                                      +
                                                                      +
                                                                      + + + + + + + + +

                                                                      +Classes

                                                                      class  ScalingGroup
                                                                      class  ScalingGroupManager
                                                                      class  AutoScalePolicy
                                                                      class  AutoScaleWebhook
                                                                      class  AutoScaleClient
                                                                       This is the primary class for interacting with AutoScale. More...
                                                                      +
                                                                      + + + + +
                                                                      + +
                                                                      + + + + + + + diff --git a/docs/html/namespacepyrax_1_1cloudmonitoring.html b/docs/html/namespacepyrax_1_1cloudmonitoring.html new file mode 100644 index 00000000..ac5d0d2c --- /dev/null +++ b/docs/html/namespacepyrax_1_1cloudmonitoring.html @@ -0,0 +1,174 @@ + + + + + +pyrax: pyrax::cloudmonitoring Namespace Reference + + + + + + + + + + + +
                                                                      + + +
                                                                      + + + + + + + + + + + +
                                                                      +
                                                                      pyrax + +
                                                                      +
                                                                      Python Bindings for the Rackspace Cloud
                                                                      +
                                                                      +
                                                                      + + + + + + + + + +
                                                                      + +
                                                                      + + +
                                                                      +
                                                                      + +
                                                                      +
                                                                      pyrax::cloudmonitoring Namespace Reference
                                                                      +
                                                                      +
                                                                      + + + + + + + + + + + + + + + + + + + + + + + + + + + +

                                                                      +Classes

                                                                      class  CloudMonitorEntity
                                                                      class  CloudMonitorNotificationManager
                                                                       Handles all of the requests dealing with notifications. More...
                                                                      class  CloudMonitorNotificationPlanManager
                                                                       Handles all of the requests dealing with Notification Plans. More...
                                                                      class  CloudMonitorEntityManager
                                                                       Handles all of the entity-specific requests. More...
                                                                      class  CloudMonitorCheck
                                                                       Represents a check defined for an entity. More...
                                                                      class  CloudMonitorCheckType
                                                                       Represents the type of monitor check to be run. More...
                                                                      class  CloudMonitorZone
                                                                       Represents a location from which Cloud Monitoring collects data. More...
                                                                      class  CloudMonitorNotification
                                                                       Represents an action to take when an alarm is triggered. More...
                                                                      class  CloudMonitorNotificationType
                                                                       Represents a class of action to take when an alarm is triggered. More...
                                                                      class  CloudMonitorNotificationPlan
                                                                       A Notification plan is a list of the notification actions to take when an alarm is triggered. More...
                                                                      class  CloudMonitorAlarm
                                                                       Alarms bind alerting rules, entities, and notification plans into a logical unit. More...
                                                                      class  CloudMonitorClient
                                                                       This is the base client for creating and managing Cloud Monitoring. More...

                                                                      +Variables

                                                                      tuple _invalid_key_pat = re.compile(r"Validation error for key '([^']+)'")
                                                                      +

                                                                      Variable Documentation

                                                                      + +
                                                                      +
                                                                      + + + + +
                                                                      tuple _invalid_key_pat = re.compile(r"Validation error for key '([^']+)'")
                                                                      +
                                                                      +
                                                                      + +
                                                                      +
                                                                      +
                                                                      + + + + +
                                                                      + +
                                                                      + + + + + + + diff --git a/docs/html/namespacepyrax_1_1exceptions.html b/docs/html/namespacepyrax_1_1exceptions.html index 787e57fc..fac0216d 100644 --- a/docs/html/namespacepyrax_1_1exceptions.html +++ b/docs/html/namespacepyrax_1_1exceptions.html @@ -138,7 +138,12 @@ class  InvalidCredentialFile class  InvalidDateTimeString class  InvalidDeviceType +class  InvalidLoadBalancer class  InvalidLoadBalancerParameters +class  InvalidMonitoringCheckDetails +class  InvalidMonitoringCheckUpdate +class  InvalidMonitoringMetricsRequest +class  InvalidMonitoringMetricsResolution class  InvalidNodeCondition class  InvalidNodeParameters class  InvalidPTRRecord @@ -154,8 +159,12 @@ class  MissingDNSSettings class  MissingHealthMonitorSettings class  MissingLoadBalancerParameters +class  MissingMonitoringCheckDetails +class  MissingMonitoringCheckGranularity class  MissingName class  MissingTemporaryURLKey +class  MonitoringCheckTargetNotSpecified +class  MonitoringZonesPollMissing class  NetworkCIDRInvalid class  NetworkCIDRMalformed class  NetworkCountExceeded @@ -308,7 +317,7 @@ diff --git a/docs/html/namespacepyrax_1_1utils.html b/docs/html/namespacepyrax_1_1utils.html index 536ad62b..00d86b76 100644 --- a/docs/html/namespacepyrax_1_1utils.html +++ b/docs/html/namespacepyrax_1_1utils.html @@ -130,13 +130,17 @@ def wait_until  When changing the state of an object, it will commonly be in a transitional state until the change is complete.
                                                                      def wait_for_build - Designed to handle the most common use case for wait_unti: an object whose 'status' attribute will end up in either 'ACTIVE' or 'ERROR' state.
                                                                      + Designed to handle the most common use case for wait_until: an object whose 'status' attribute will end up in either 'ACTIVE' or 'ERROR' state.
                                                                      def iso_time_string  Takes either a date, datetime or a string, and returns the standard ISO formatted string for that date/time, with any fractional second portion removed.
                                                                      +def to_timestamp + Takes a value that is either a Python date, datetime, or a string representation of a date/datetime value.
                                                                      def get_id  Returns the 'id' attribute of 'id_or_obj' if present; if not, returns 'id_or_obj'.
                                                                      def get_name  Returns the 'name' attribute of 'name_or_obj' if present; if not, returns 'name_or_obj'.
                                                                      +def params_to_dict + Given a set of optional parameter names, constructs a dictionary with the parameter name as the key, and the value for that key in the local_dict as the value, for all non-None values.
                                                                      def match_pattern  Compares `nm` with the supplied patterns, and returns True if it matches at least one.
                                                                      def update_exc @@ -442,6 +446,41 @@

                                                                      Compares `nm` with the supplied patterns, and returns True if it matches at least one.

                                                                      Patterns are standard file-name wildcard strings, as defined in the `fnmatch` module. For example, the pattern "*.py" will match the names of all Python scripts.

                                                                      + + + +
                                                                      +
                                                                      + + + + + + + + + + + + + + + + + + + + + + + + +
                                                                      def pyrax.utils.params_to_dict ( params,
                                                                       dct,
                                                                       local_dict 
                                                                      )
                                                                      +
                                                                      +
                                                                      + +

                                                                      Given a set of optional parameter names, constructs a dictionary with the parameter name as the key, and the value for that key in the local_dict as the value, for all non-None values.

                                                                      +
                                                                      @@ -532,6 +571,26 @@

                                                                      Normalizes string, converts to lowercase, removes non-alpha characters, and converts spaces to hyphens.

                                                                      From Django's "django/template/defaultfilters.py".

                                                                      + + + +
                                                                      +
                                                                      + + + + + + + + +
                                                                      def pyrax.utils.to_timestamp ( val)
                                                                      +
                                                                      +
                                                                      + +

                                                                      Takes a value that is either a Python date, datetime, or a string representation of a date/datetime value.

                                                                      +

                                                                      Returns a standard Unix timestamp corresponding to that value.

                                                                      +
                                                                      @@ -658,7 +717,7 @@
                                                                      -

                                                                      Designed to handle the most common use case for wait_unti: an object whose 'status' attribute will end up in either 'ACTIVE' or 'ERROR' state.

                                                                      +

                                                                      Designed to handle the most common use case for wait_until: an object whose 'status' attribute will end up in either 'ACTIVE' or 'ERROR' state.

                                                                      Since builds don't happen very quickly, the interval will default to 20 seconds to avoid excess polling.

                                                                      @@ -765,7 +824,7 @@ diff --git a/docs/html/namespacepyrax_1_1version.html b/docs/html/namespacepyrax_1_1version.html index 926275ae..ee8c7861 100644 --- a/docs/html/namespacepyrax_1_1version.html +++ b/docs/html/namespacepyrax_1_1version.html @@ -105,7 +105,7 @@ - +

                                                                      Variables

                                                                      string version = "1.4.11"
                                                                      string version = "1.5.0"

                                                                      Variable Documentation

                                                                      @@ -113,7 +113,7 @@
                                                                      - +
                                                                      string version = "1.4.11"string version = "1.5.0"
                                                                      @@ -139,7 +139,7 @@ diff --git a/docs/html/namespaces.html b/docs/html/namespaces.html index da4d0fbb..1108c6ab 100644 --- a/docs/html/namespaces.html +++ b/docs/html/namespaces.html @@ -83,6 +83,7 @@
                                                                      Here are the packages with brief descriptions (if available):
                                                                      + @@ -93,6 +94,7 @@ + @@ -123,7 +125,7 @@ diff --git a/docs/html/search/all_5f.js b/docs/html/search/all_5f.js index cb92bdb5..70c0b5f8 100644 --- a/docs/html/search/all_5f.js +++ b/docs/html/search/all_5f.js @@ -5,7 +5,7 @@ var searchData= ['_5f_5feq_5f_5f',['__eq__',['../classpyrax_1_1cloudloadbalancers_1_1Node.html#a449f8fd74d358c0ad641b6c6d6917ba0',1,'pyrax::cloudloadbalancers::Node.__eq__()'],['../classpyrax_1_1resource_1_1BaseResource.html#a449f8fd74d358c0ad641b6c6d6917ba0',1,'pyrax::resource::BaseResource.__eq__()']]], ['_5f_5fexit_5f_5f',['__exit__',['../classpyrax_1_1utils_1_1SelfDeletingTempfile.html#a6de07022804200d0fb6383c0a237ee8e',1,'pyrax::utils::SelfDeletingTempfile.__exit__()'],['../classpyrax_1_1utils_1_1SelfDeletingTempDirectory.html#a6de07022804200d0fb6383c0a237ee8e',1,'pyrax::utils::SelfDeletingTempDirectory.__exit__()']]], ['_5f_5fgetattr_5f_5f',['__getattr__',['../classpyrax_1_1resource_1_1BaseResource.html#a0a990b3ec3889d40889daca9ee5e4695',1,'pyrax::resource::BaseResource']]], - ['_5f_5finit_5f_5f',['__init__',['../classpyrax_1_1base__identity_1_1BaseAuth.html#ac775ee34451fdfa742b318538164070e',1,'pyrax::base_identity::BaseAuth.__init__()'],['../classpyrax_1_1cf__wrapper_1_1client_1_1CFClient.html#ac775ee34451fdfa742b318538164070e',1,'pyrax::cf_wrapper::client::CFClient.__init__()'],['../classpyrax_1_1cf__wrapper_1_1client_1_1Connection.html#ac775ee34451fdfa742b318538164070e',1,'pyrax::cf_wrapper::client::Connection.__init__()'],['../classpyrax_1_1cf__wrapper_1_1client_1_1FolderUploader.html#ac775ee34451fdfa742b318538164070e',1,'pyrax::cf_wrapper::client::FolderUploader.__init__()'],['../classpyrax_1_1cf__wrapper_1_1container_1_1Container.html#ac775ee34451fdfa742b318538164070e',1,'pyrax::cf_wrapper::container::Container.__init__()'],['../classpyrax_1_1cf__wrapper_1_1storage__object_1_1StorageObject.html#ac775ee34451fdfa742b318538164070e',1,'pyrax::cf_wrapper::storage_object::StorageObject.__init__()'],['../classpyrax_1_1client_1_1BaseClient.html#ac775ee34451fdfa742b318538164070e',1,'pyrax::client::BaseClient.__init__()'],['../classpyrax_1_1cloudblockstorage_1_1CloudBlockStorageVolume.html#ac775ee34451fdfa742b318538164070e',1,'pyrax::cloudblockstorage::CloudBlockStorageVolume.__init__()'],['../classpyrax_1_1clouddatabases_1_1CloudDatabaseVolume.html#ac775ee34451fdfa742b318538164070e',1,'pyrax::clouddatabases::CloudDatabaseVolume.__init__()'],['../classpyrax_1_1clouddatabases_1_1CloudDatabaseInstance.html#ac775ee34451fdfa742b318538164070e',1,'pyrax::clouddatabases::CloudDatabaseInstance.__init__()'],['../classpyrax_1_1clouddns_1_1CloudDNSPTRRecord.html#ac775ee34451fdfa742b318538164070e',1,'pyrax::clouddns::CloudDNSPTRRecord.__init__()'],['../classpyrax_1_1clouddns_1_1CloudDNSManager.html#ac775ee34451fdfa742b318538164070e',1,'pyrax::clouddns::CloudDNSManager.__init__()'],['../classpyrax_1_1clouddns_1_1ResultsIterator.html#ac775ee34451fdfa742b318538164070e',1,'pyrax::clouddns::ResultsIterator.__init__()'],['../classpyrax_1_1cloudloadbalancers_1_1CloudLoadBalancer.html#ac775ee34451fdfa742b318538164070e',1,'pyrax::cloudloadbalancers::CloudLoadBalancer.__init__()'],['../classpyrax_1_1cloudloadbalancers_1_1Node.html#ac775ee34451fdfa742b318538164070e',1,'pyrax::cloudloadbalancers::Node.__init__()'],['../classpyrax_1_1cloudloadbalancers_1_1VirtualIP.html#ac775ee34451fdfa742b318538164070e',1,'pyrax::cloudloadbalancers::VirtualIP.__init__()'],['../classpyrax_1_1cloudloadbalancers_1_1CloudLoadBalancerClient.html#ac775ee34451fdfa742b318538164070e',1,'pyrax::cloudloadbalancers::CloudLoadBalancerClient.__init__()'],['../classpyrax_1_1cloudnetworks_1_1CloudNetworkClient.html#ac775ee34451fdfa742b318538164070e',1,'pyrax::cloudnetworks::CloudNetworkClient.__init__()'],['../classpyrax_1_1exceptions_1_1AmbiguousEndpoints.html#ac775ee34451fdfa742b318538164070e',1,'pyrax::exceptions::AmbiguousEndpoints.__init__()'],['../classpyrax_1_1exceptions_1_1ClientException.html#ac775ee34451fdfa742b318538164070e',1,'pyrax::exceptions::ClientException.__init__()'],['../classpyrax_1_1manager_1_1BaseManager.html#ac775ee34451fdfa742b318538164070e',1,'pyrax::manager::BaseManager.__init__()'],['../classpyrax_1_1resource_1_1BaseResource.html#ac775ee34451fdfa742b318538164070e',1,'pyrax::resource::BaseResource.__init__()'],['../classpyrax_1_1service__catalog_1_1ServiceCatalog.html#ac775ee34451fdfa742b318538164070e',1,'pyrax::service_catalog::ServiceCatalog.__init__()'],['../classpyrax_1_1utils_1_1__WaitThread.html#ac775ee34451fdfa742b318538164070e',1,'pyrax::utils::_WaitThread.__init__()']]], + ['_5f_5finit_5f_5f',['__init__',['../classpyrax_1_1autoscale_1_1ScalingGroup.html#ac775ee34451fdfa742b318538164070e',1,'pyrax::autoscale::ScalingGroup.__init__()'],['../classpyrax_1_1autoscale_1_1ScalingGroupManager.html#ac775ee34451fdfa742b318538164070e',1,'pyrax::autoscale::ScalingGroupManager.__init__()'],['../classpyrax_1_1autoscale_1_1AutoScalePolicy.html#ac775ee34451fdfa742b318538164070e',1,'pyrax::autoscale::AutoScalePolicy.__init__()'],['../classpyrax_1_1autoscale_1_1AutoScaleWebhook.html#ac775ee34451fdfa742b318538164070e',1,'pyrax::autoscale::AutoScaleWebhook.__init__()'],['../classpyrax_1_1base__identity_1_1BaseAuth.html#ac775ee34451fdfa742b318538164070e',1,'pyrax::base_identity::BaseAuth.__init__()'],['../classpyrax_1_1cf__wrapper_1_1client_1_1CFClient.html#ac775ee34451fdfa742b318538164070e',1,'pyrax::cf_wrapper::client::CFClient.__init__()'],['../classpyrax_1_1cf__wrapper_1_1client_1_1Connection.html#ac775ee34451fdfa742b318538164070e',1,'pyrax::cf_wrapper::client::Connection.__init__()'],['../classpyrax_1_1cf__wrapper_1_1client_1_1FolderUploader.html#ac775ee34451fdfa742b318538164070e',1,'pyrax::cf_wrapper::client::FolderUploader.__init__()'],['../classpyrax_1_1cf__wrapper_1_1container_1_1Container.html#ac775ee34451fdfa742b318538164070e',1,'pyrax::cf_wrapper::container::Container.__init__()'],['../classpyrax_1_1cf__wrapper_1_1storage__object_1_1StorageObject.html#ac775ee34451fdfa742b318538164070e',1,'pyrax::cf_wrapper::storage_object::StorageObject.__init__()'],['../classpyrax_1_1client_1_1BaseClient.html#ac775ee34451fdfa742b318538164070e',1,'pyrax::client::BaseClient.__init__()'],['../classpyrax_1_1cloudblockstorage_1_1CloudBlockStorageVolume.html#ac775ee34451fdfa742b318538164070e',1,'pyrax::cloudblockstorage::CloudBlockStorageVolume.__init__()'],['../classpyrax_1_1clouddatabases_1_1CloudDatabaseVolume.html#ac775ee34451fdfa742b318538164070e',1,'pyrax::clouddatabases::CloudDatabaseVolume.__init__()'],['../classpyrax_1_1clouddatabases_1_1CloudDatabaseInstance.html#ac775ee34451fdfa742b318538164070e',1,'pyrax::clouddatabases::CloudDatabaseInstance.__init__()'],['../classpyrax_1_1clouddns_1_1CloudDNSPTRRecord.html#ac775ee34451fdfa742b318538164070e',1,'pyrax::clouddns::CloudDNSPTRRecord.__init__()'],['../classpyrax_1_1clouddns_1_1CloudDNSManager.html#ac775ee34451fdfa742b318538164070e',1,'pyrax::clouddns::CloudDNSManager.__init__()'],['../classpyrax_1_1clouddns_1_1ResultsIterator.html#ac775ee34451fdfa742b318538164070e',1,'pyrax::clouddns::ResultsIterator.__init__()'],['../classpyrax_1_1cloudloadbalancers_1_1CloudLoadBalancer.html#ac775ee34451fdfa742b318538164070e',1,'pyrax::cloudloadbalancers::CloudLoadBalancer.__init__()'],['../classpyrax_1_1cloudloadbalancers_1_1Node.html#ac775ee34451fdfa742b318538164070e',1,'pyrax::cloudloadbalancers::Node.__init__()'],['../classpyrax_1_1cloudloadbalancers_1_1VirtualIP.html#ac775ee34451fdfa742b318538164070e',1,'pyrax::cloudloadbalancers::VirtualIP.__init__()'],['../classpyrax_1_1cloudloadbalancers_1_1CloudLoadBalancerClient.html#ac775ee34451fdfa742b318538164070e',1,'pyrax::cloudloadbalancers::CloudLoadBalancerClient.__init__()'],['../classpyrax_1_1cloudmonitoring_1_1CloudMonitorCheck.html#ac775ee34451fdfa742b318538164070e',1,'pyrax::cloudmonitoring::CloudMonitorCheck.__init__()'],['../classpyrax_1_1cloudmonitoring_1_1CloudMonitorAlarm.html#ac775ee34451fdfa742b318538164070e',1,'pyrax::cloudmonitoring::CloudMonitorAlarm.__init__()'],['../classpyrax_1_1cloudmonitoring_1_1CloudMonitorClient.html#ac775ee34451fdfa742b318538164070e',1,'pyrax::cloudmonitoring::CloudMonitorClient.__init__()'],['../classpyrax_1_1cloudnetworks_1_1CloudNetworkClient.html#ac775ee34451fdfa742b318538164070e',1,'pyrax::cloudnetworks::CloudNetworkClient.__init__()'],['../classpyrax_1_1exceptions_1_1AmbiguousEndpoints.html#ac775ee34451fdfa742b318538164070e',1,'pyrax::exceptions::AmbiguousEndpoints.__init__()'],['../classpyrax_1_1exceptions_1_1ClientException.html#ac775ee34451fdfa742b318538164070e',1,'pyrax::exceptions::ClientException.__init__()'],['../classpyrax_1_1manager_1_1BaseManager.html#ac775ee34451fdfa742b318538164070e',1,'pyrax::manager::BaseManager.__init__()'],['../classpyrax_1_1resource_1_1BaseResource.html#ac775ee34451fdfa742b318538164070e',1,'pyrax::resource::BaseResource.__init__()'],['../classpyrax_1_1service__catalog_1_1ServiceCatalog.html#ac775ee34451fdfa742b318538164070e',1,'pyrax::service_catalog::ServiceCatalog.__init__()'],['../classpyrax_1_1utils_1_1__WaitThread.html#ac775ee34451fdfa742b318538164070e',1,'pyrax::utils::_WaitThread.__init__()']]], ['_5f_5finit_5f_5f_2epy',['__init__.py',['../____init_____8py.html',1,'']]], ['_5f_5finit_5f_5f_2epy',['__init__.py',['../identity_2____init_____8py.html',1,'']]], ['_5f_5finit_5f_5f_2epy',['__init__.py',['../cf__wrapper_2____init_____8py.html',1,'']]], @@ -18,6 +18,7 @@ var searchData= ['_5fcode_5fmap',['_code_map',['../namespacepyrax_1_1exceptions.html#ab5d31bf8fb13068e1eecee2640858771',1,'pyrax::exceptions']]], ['_5fenvironment',['_environment',['../namespacepyrax.html#a9fecb0e59b3675027f29fc6870cf0d03',1,'pyrax']]], ['_5fhttp_5fdebug',['_http_debug',['../namespacepyrax.html#a6e3493c19e86089da9cd511800adbde3',1,'pyrax']]], + ['_5finvalid_5fkey_5fpat',['_invalid_key_pat',['../namespacepyrax_1_1cloudmonitoring.html#a96865c97ed6b14f9c1b5561e89f98515',1,'pyrax::cloudmonitoring']]], ['_5fpat',['_pat',['../namespacepyrax_1_1base__identity.html#a850dd666ec6ae04c07f742c66d17c042',1,'pyrax::base_identity']]], ['_5futc_5fpat',['_utc_pat',['../namespacepyrax_1_1base__identity.html#acb654137ac94aa138ceaae7521b69540',1,'pyrax::base_identity']]], ['_5fwaitthread',['_WaitThread',['../classpyrax_1_1utils_1_1__WaitThread.html',1,'pyrax::utils']]] diff --git a/docs/html/search/all_61.js b/docs/html/search/all_61.js index 4b70bf98..88d07b18 100644 --- a/docs/html/search/all_61.js +++ b/docs/html/search/all_61.js @@ -9,11 +9,13 @@ var searchData= ['add_5fhook',['add_hook',['../classpyrax_1_1manager_1_1BaseManager.html#a59de7bcf6dec48b06d00ff9b771ef6b7',1,'pyrax::manager::BaseManager']]], ['add_5fmethod',['add_method',['../namespacepyrax_1_1utils.html#aa8d6873854a2bde7479a7fbe44d1d60b',1,'pyrax::utils']]], ['add_5fnodes',['add_nodes',['../classpyrax_1_1cloudloadbalancers_1_1CloudLoadBalancer.html#aaaa90c99f97822834b7407096d0b1dce',1,'pyrax::cloudloadbalancers::CloudLoadBalancer.add_nodes()'],['../classpyrax_1_1cloudloadbalancers_1_1CloudLoadBalancerManager.html#aaaa90c99f97822834b7407096d0b1dce',1,'pyrax::cloudloadbalancers::CloudLoadBalancerManager.add_nodes()'],['../classpyrax_1_1cloudloadbalancers_1_1CloudLoadBalancerClient.html#aaaa90c99f97822834b7407096d0b1dce',1,'pyrax::cloudloadbalancers::CloudLoadBalancerClient.add_nodes()']]], + ['add_5fpolicy',['add_policy',['../classpyrax_1_1autoscale_1_1ScalingGroup.html#a49744d3c8bab4cac387f77c5499ab639',1,'pyrax::autoscale::ScalingGroup.add_policy()'],['../classpyrax_1_1autoscale_1_1ScalingGroupManager.html#a49744d3c8bab4cac387f77c5499ab639',1,'pyrax::autoscale::ScalingGroupManager.add_policy()'],['../classpyrax_1_1autoscale_1_1AutoScaleClient.html#a49744d3c8bab4cac387f77c5499ab639',1,'pyrax::autoscale::AutoScaleClient.add_policy()']]], ['add_5fptr_5frecords',['add_ptr_records',['../classpyrax_1_1clouddns_1_1CloudDNSManager.html#af747d2095b106ddb07a528af0e86d7fd',1,'pyrax::clouddns::CloudDNSManager.add_ptr_records()'],['../classpyrax_1_1clouddns_1_1CloudDNSClient.html#af747d2095b106ddb07a528af0e86d7fd',1,'pyrax::clouddns::CloudDNSClient.add_ptr_records()']]], ['add_5frecord',['add_record',['../classpyrax_1_1clouddns_1_1CloudDNSDomain.html#ad1ce0203df93b6f58971458de77f264e',1,'pyrax::clouddns::CloudDNSDomain.add_record()'],['../classpyrax_1_1clouddns_1_1CloudDNSClient.html#ad1ce0203df93b6f58971458de77f264e',1,'pyrax::clouddns::CloudDNSClient.add_record()']]], ['add_5frecords',['add_records',['../classpyrax_1_1clouddns_1_1CloudDNSDomain.html#abf676b7d485de10f8409a7904a0a8018',1,'pyrax::clouddns::CloudDNSDomain.add_records()'],['../classpyrax_1_1clouddns_1_1CloudDNSManager.html#abf676b7d485de10f8409a7904a0a8018',1,'pyrax::clouddns::CloudDNSManager.add_records()'],['../classpyrax_1_1clouddns_1_1CloudDNSClient.html#abf676b7d485de10f8409a7904a0a8018',1,'pyrax::clouddns::CloudDNSClient.add_records()']]], ['add_5fssl_5ftermination',['add_ssl_termination',['../classpyrax_1_1cloudloadbalancers_1_1CloudLoadBalancer.html#a66334c0c0a712389d1c0a3d1e43cbf98',1,'pyrax::cloudloadbalancers::CloudLoadBalancer.add_ssl_termination()'],['../classpyrax_1_1cloudloadbalancers_1_1CloudLoadBalancerManager.html#a66334c0c0a712389d1c0a3d1e43cbf98',1,'pyrax::cloudloadbalancers::CloudLoadBalancerManager.add_ssl_termination()'],['../classpyrax_1_1cloudloadbalancers_1_1CloudLoadBalancerClient.html#a66334c0c0a712389d1c0a3d1e43cbf98',1,'pyrax::cloudloadbalancers::CloudLoadBalancerClient.add_ssl_termination()']]], ['add_5fvirtualip',['add_virtualip',['../classpyrax_1_1cloudloadbalancers_1_1CloudLoadBalancer.html#ab264d37d545101c96e50d1e2924724cc',1,'pyrax::cloudloadbalancers::CloudLoadBalancer.add_virtualip()'],['../classpyrax_1_1cloudloadbalancers_1_1CloudLoadBalancerManager.html#ab264d37d545101c96e50d1e2924724cc',1,'pyrax::cloudloadbalancers::CloudLoadBalancerManager.add_virtualip()'],['../classpyrax_1_1cloudloadbalancers_1_1CloudLoadBalancerClient.html#ab264d37d545101c96e50d1e2924724cc',1,'pyrax::cloudloadbalancers::CloudLoadBalancerClient.add_virtualip()']]], + ['add_5fwebhook',['add_webhook',['../classpyrax_1_1autoscale_1_1ScalingGroup.html#ab26891c9d3c749645f264b371784898a',1,'pyrax::autoscale::ScalingGroup.add_webhook()'],['../classpyrax_1_1autoscale_1_1ScalingGroupManager.html#ab26891c9d3c749645f264b371784898a',1,'pyrax::autoscale::ScalingGroupManager.add_webhook()'],['../classpyrax_1_1autoscale_1_1AutoScalePolicy.html#ab26891c9d3c749645f264b371784898a',1,'pyrax::autoscale::AutoScalePolicy.add_webhook()'],['../classpyrax_1_1autoscale_1_1AutoScaleClient.html#ab26891c9d3c749645f264b371784898a',1,'pyrax::autoscale::AutoScaleClient.add_webhook()']]], ['address',['address',['../classpyrax_1_1cloudloadbalancers_1_1Node.html#ade5a18d52133ef21f211020ceb464c07',1,'pyrax::cloudloadbalancers::Node::address()'],['../classpyrax_1_1cloudloadbalancers_1_1VirtualIP.html#ade5a18d52133ef21f211020ceb464c07',1,'pyrax::cloudloadbalancers::VirtualIP.address()']]], ['algorithms',['algorithms',['../classpyrax_1_1cloudloadbalancers_1_1CloudLoadBalancerClient.html#aed666a925114f957f496874543d3f2a7',1,'pyrax::cloudloadbalancers::CloudLoadBalancerClient']]], ['all',['all',['../namespacepyrax_1_1manager.html#acedac857b1708c80eefe0a6c379bedec',1,'pyrax::manager']]], @@ -40,5 +42,10 @@ var searchData= ['author',['author',['../namespacesetup.html#ab873cebb3b7e47db4fe59837d1aaa210',1,'setup']]], ['author_5femail',['author_email',['../namespacesetup.html#a9b3c5cceb9178d1968dd26e6f147265d',1,'setup']]], ['authorizationfailure',['AuthorizationFailure',['../classpyrax_1_1exceptions_1_1AuthorizationFailure.html',1,'pyrax::exceptions']]], - ['authsystemnotfound',['AuthSystemNotFound',['../classpyrax_1_1exceptions_1_1AuthSystemNotFound.html',1,'pyrax::exceptions']]] + ['authsystemnotfound',['AuthSystemNotFound',['../classpyrax_1_1exceptions_1_1AuthSystemNotFound.html',1,'pyrax::exceptions']]], + ['autoscale',['autoscale',['../namespacepyrax.html#a71d7ac858bc96ae6302115ab8fe7095a',1,'pyrax']]], + ['autoscale_2epy',['autoscale.py',['../autoscale_8py.html',1,'']]], + ['autoscaleclient',['AutoScaleClient',['../classpyrax_1_1autoscale_1_1AutoScaleClient.html',1,'pyrax::autoscale']]], + ['autoscalepolicy',['AutoScalePolicy',['../classpyrax_1_1autoscale_1_1AutoScalePolicy.html',1,'pyrax::autoscale']]], + ['autoscalewebhook',['AutoScaleWebhook',['../classpyrax_1_1autoscale_1_1AutoScaleWebhook.html',1,'pyrax::autoscale']]] ]; diff --git a/docs/html/search/all_63.js b/docs/html/search/all_63.js index 29bc8f58..63bfe7e1 100644 --- a/docs/html/search/all_63.js +++ b/docs/html/search/all_63.js @@ -36,6 +36,7 @@ var searchData= ['cloud_5fdatabases',['cloud_databases',['../namespacepyrax.html#af1a86dab674b703fc06491e66aacadb6',1,'pyrax']]], ['cloud_5fdns',['cloud_dns',['../namespacepyrax.html#acb0f91693d36d52270ed91fd2e919fcc',1,'pyrax']]], ['cloud_5floadbalancers',['cloud_loadbalancers',['../namespacepyrax.html#a6d6a60201d4fb3fb6208a724c2b7fb1f',1,'pyrax']]], + ['cloud_5fmonitoring',['cloud_monitoring',['../namespacepyrax.html#a312b914939298c0bef9d8665edc44646',1,'pyrax']]], ['cloud_5fnetworks',['cloud_networks',['../namespacepyrax.html#af25ef81616c79ed5da4655185879259f',1,'pyrax']]], ['cloudblockstorage_2epy',['cloudblockstorage.py',['../cloudblockstorage_8py.html',1,'']]], ['cloudblockstorageclient',['CloudBlockStorageClient',['../classpyrax_1_1cloudblockstorage_1_1CloudBlockStorageClient.html',1,'pyrax::cloudblockstorage']]], @@ -62,6 +63,19 @@ var searchData= ['cloudloadbalancerclient',['CloudLoadBalancerClient',['../classpyrax_1_1cloudloadbalancers_1_1CloudLoadBalancerClient.html',1,'pyrax::cloudloadbalancers']]], ['cloudloadbalancermanager',['CloudLoadBalancerManager',['../classpyrax_1_1cloudloadbalancers_1_1CloudLoadBalancerManager.html',1,'pyrax::cloudloadbalancers']]], ['cloudloadbalancers_2epy',['cloudloadbalancers.py',['../cloudloadbalancers_8py.html',1,'']]], + ['cloudmonitoralarm',['CloudMonitorAlarm',['../classpyrax_1_1cloudmonitoring_1_1CloudMonitorAlarm.html',1,'pyrax::cloudmonitoring']]], + ['cloudmonitorcheck',['CloudMonitorCheck',['../classpyrax_1_1cloudmonitoring_1_1CloudMonitorCheck.html',1,'pyrax::cloudmonitoring']]], + ['cloudmonitorchecktype',['CloudMonitorCheckType',['../classpyrax_1_1cloudmonitoring_1_1CloudMonitorCheckType.html',1,'pyrax::cloudmonitoring']]], + ['cloudmonitorclient',['CloudMonitorClient',['../classpyrax_1_1cloudmonitoring_1_1CloudMonitorClient.html',1,'pyrax::cloudmonitoring']]], + ['cloudmonitorentity',['CloudMonitorEntity',['../classpyrax_1_1cloudmonitoring_1_1CloudMonitorEntity.html',1,'pyrax::cloudmonitoring']]], + ['cloudmonitorentitymanager',['CloudMonitorEntityManager',['../classpyrax_1_1cloudmonitoring_1_1CloudMonitorEntityManager.html',1,'pyrax::cloudmonitoring']]], + ['cloudmonitoring_2epy',['cloudmonitoring.py',['../cloudmonitoring_8py.html',1,'']]], + ['cloudmonitornotification',['CloudMonitorNotification',['../classpyrax_1_1cloudmonitoring_1_1CloudMonitorNotification.html',1,'pyrax::cloudmonitoring']]], + ['cloudmonitornotificationmanager',['CloudMonitorNotificationManager',['../classpyrax_1_1cloudmonitoring_1_1CloudMonitorNotificationManager.html',1,'pyrax::cloudmonitoring']]], + ['cloudmonitornotificationplan',['CloudMonitorNotificationPlan',['../classpyrax_1_1cloudmonitoring_1_1CloudMonitorNotificationPlan.html',1,'pyrax::cloudmonitoring']]], + ['cloudmonitornotificationplanmanager',['CloudMonitorNotificationPlanManager',['../classpyrax_1_1cloudmonitoring_1_1CloudMonitorNotificationPlanManager.html',1,'pyrax::cloudmonitoring']]], + ['cloudmonitornotificationtype',['CloudMonitorNotificationType',['../classpyrax_1_1cloudmonitoring_1_1CloudMonitorNotificationType.html',1,'pyrax::cloudmonitoring']]], + ['cloudmonitorzone',['CloudMonitorZone',['../classpyrax_1_1cloudmonitoring_1_1CloudMonitorZone.html',1,'pyrax::cloudmonitoring']]], ['cloudnetwork',['CloudNetwork',['../classpyrax_1_1cloudnetworks_1_1CloudNetwork.html',1,'pyrax::cloudnetworks']]], ['cloudnetworkclient',['CloudNetworkClient',['../classpyrax_1_1cloudnetworks_1_1CloudNetworkClient.html',1,'pyrax::cloudnetworks']]], ['cloudnetworkmanager',['CloudNetworkManager',['../classpyrax_1_1cloudnetworks_1_1CloudNetworkManager.html',1,'pyrax::cloudnetworks']]], @@ -72,29 +86,37 @@ var searchData= ['comment',['comment',['../classpyrax_1_1clouddns_1_1CloudDNSRecord.html#a8c0288707ed90c2275d70e22bd1f16d9',1,'pyrax::clouddns::CloudDNSRecord.comment()'],['../classpyrax_1_1clouddns_1_1CloudDNSPTRRecord.html#a8c0288707ed90c2275d70e22bd1f16d9',1,'pyrax::clouddns::CloudDNSPTRRecord.comment()']]], ['condition',['condition',['../classpyrax_1_1cloudloadbalancers_1_1Node.html#a4824b91cc0e6b5f112bdd8049af4d7d6',1,'pyrax::cloudloadbalancers::Node']]], ['config_5ffile',['config_file',['../namespacepyrax.html#ae6512f1802b7f1f9cc6f196a0938db60',1,'pyrax']]], + ['connect_5fto_5fautoscale',['connect_to_autoscale',['../namespacepyrax.html#a1773238b5af2fb51b54754bbe83b2971',1,'pyrax']]], ['connect_5fto_5fcloud_5fblockstorage',['connect_to_cloud_blockstorage',['../namespacepyrax.html#a6028129593635bcde83ac8783a35f55e',1,'pyrax']]], ['connect_5fto_5fcloud_5fdatabases',['connect_to_cloud_databases',['../namespacepyrax.html#a2a85cb9869f6584edb2d652a82678225',1,'pyrax']]], ['connect_5fto_5fcloud_5fdns',['connect_to_cloud_dns',['../namespacepyrax.html#a51abe3757be9daee31826a1db8c2d332',1,'pyrax']]], ['connect_5fto_5fcloud_5floadbalancers',['connect_to_cloud_loadbalancers',['../namespacepyrax.html#a5858f51939fe223ec24c9befc4fa1a2a',1,'pyrax']]], + ['connect_5fto_5fcloud_5fmonitoring',['connect_to_cloud_monitoring',['../namespacepyrax.html#a56d538a03d4ded8621b4e483c93b5f1a',1,'pyrax']]], ['connect_5fto_5fcloud_5fnetworks',['connect_to_cloud_networks',['../namespacepyrax.html#af30f9f18e048c8f0e677808a1028d29a',1,'pyrax']]], ['connect_5fto_5fcloudfiles',['connect_to_cloudfiles',['../namespacepyrax.html#a34593b67ad113f95973c1c7a6546fa68',1,'pyrax']]], ['connect_5fto_5fcloudservers',['connect_to_cloudservers',['../namespacepyrax.html#a93dcb702dfed414cb32073e78fdff831',1,'pyrax']]], ['connect_5fto_5fservices',['connect_to_services',['../namespacepyrax.html#a708483dfb93616381fb0ec9338ab5528',1,'pyrax']]], - ['connection',['connection',['../classpyrax_1_1cf__wrapper_1_1client_1_1CFClient.html#a10275a078bd1abcbebc206cc5d19e18b',1,'pyrax::cf_wrapper::client::CFClient']]], ['connection',['Connection',['../classpyrax_1_1cf__wrapper_1_1client_1_1Connection.html',1,'pyrax::cf_wrapper::client']]], + ['connection',['connection',['../classpyrax_1_1cf__wrapper_1_1client_1_1CFClient.html#a10275a078bd1abcbebc206cc5d19e18b',1,'pyrax::cf_wrapper::client::CFClient']]], ['connection_5flogging',['connection_logging',['../classpyrax_1_1cloudloadbalancers_1_1CloudLoadBalancer.html#a863329ee2898f7d6212281bab325e419',1,'pyrax::cloudloadbalancers::CloudLoadBalancer']]], ['connection_5fretries',['CONNECTION_RETRIES',['../namespacepyrax_1_1cf__wrapper_1_1client.html#a19074fb0e7d33e5cb6f2fc49877e64c1',1,'pyrax::cf_wrapper::client']]], ['connection_5ftimeout',['CONNECTION_TIMEOUT',['../namespacepyrax_1_1cf__wrapper_1_1client.html#a32d68802775b5e101a259fb6f3edf5d7',1,'pyrax::cf_wrapper::client']]], - ['container',['container',['../classpyrax_1_1cf__wrapper_1_1client_1_1FolderUploader.html#a030ecaa2a61b422a8ca7422403ad8c77',1,'pyrax::cf_wrapper::client::FolderUploader.container()'],['../classpyrax_1_1cf__wrapper_1_1storage__object_1_1StorageObject.html#a030ecaa2a61b422a8ca7422403ad8c77',1,'pyrax::cf_wrapper::storage_object::StorageObject.container()']]], ['container',['Container',['../classpyrax_1_1cf__wrapper_1_1container_1_1Container.html',1,'pyrax::cf_wrapper::container']]], + ['container',['container',['../classpyrax_1_1cf__wrapper_1_1client_1_1FolderUploader.html#a030ecaa2a61b422a8ca7422403ad8c77',1,'pyrax::cf_wrapper::client::FolderUploader.container()'],['../classpyrax_1_1cf__wrapper_1_1storage__object_1_1StorageObject.html#a030ecaa2a61b422a8ca7422403ad8c77',1,'pyrax::cf_wrapper::storage_object::StorageObject.container()']]], ['container_2epy',['container.py',['../container_8py.html',1,'']]], ['container_5fmeta_5fprefix',['container_meta_prefix',['../classpyrax_1_1cf__wrapper_1_1client_1_1CFClient.html#a9b5995b5ab3392bd65e1fcaf722b6707',1,'pyrax::cf_wrapper::client::CFClient']]], ['content_5fcaching',['content_caching',['../classpyrax_1_1cloudloadbalancers_1_1CloudLoadBalancer.html#a1cd94acd6d68908839cb20d0ad216ba5',1,'pyrax::cloudloadbalancers::CloudLoadBalancer']]], ['content_5ftype',['content_type',['../classpyrax_1_1cf__wrapper_1_1storage__object_1_1StorageObject.html#a221623422ea72de630e7e446a84e9f1f',1,'pyrax::cf_wrapper::storage_object::StorageObject']]], + ['cooldown',['cooldown',['../classpyrax_1_1autoscale_1_1ScalingGroup.html#a2268f26f552b5fffb9a0cb5fca09048b',1,'pyrax::autoscale::ScalingGroup.cooldown'],['../classpyrax_1_1autoscale_1_1ScalingGroup.html#a2268f26f552b5fffb9a0cb5fca09048b',1,'pyrax::autoscale::ScalingGroup.cooldown']]], ['copy_5fobject',['copy_object',['../classpyrax_1_1cf__wrapper_1_1client_1_1CFClient.html#a7d45157fae0af819d907da6b00fa2378',1,'pyrax::cf_wrapper::client::CFClient']]], - ['create',['create',['../classpyrax_1_1client_1_1BaseClient.html#a5b7ef0221e471e99fa7f0a87a28ba1ea',1,'pyrax::client::BaseClient.create()'],['../classpyrax_1_1cloudblockstorage_1_1CloudBlockStorageClient.html#a5b7ef0221e471e99fa7f0a87a28ba1ea',1,'pyrax::cloudblockstorage::CloudBlockStorageClient.create()'],['../classpyrax_1_1cloudnetworks_1_1CloudNetworkClient.html#a5b7ef0221e471e99fa7f0a87a28ba1ea',1,'pyrax::cloudnetworks::CloudNetworkClient.create()'],['../classpyrax_1_1manager_1_1BaseManager.html#a5b7ef0221e471e99fa7f0a87a28ba1ea',1,'pyrax::manager::BaseManager.create()']]], + ['create',['create',['../classpyrax_1_1client_1_1BaseClient.html#a5b7ef0221e471e99fa7f0a87a28ba1ea',1,'pyrax::client::BaseClient.create()'],['../classpyrax_1_1cloudblockstorage_1_1CloudBlockStorageClient.html#a5b7ef0221e471e99fa7f0a87a28ba1ea',1,'pyrax::cloudblockstorage::CloudBlockStorageClient.create()'],['../classpyrax_1_1cloudmonitoring_1_1CloudMonitorNotificationManager.html#a5b7ef0221e471e99fa7f0a87a28ba1ea',1,'pyrax::cloudmonitoring::CloudMonitorNotificationManager.create()'],['../classpyrax_1_1cloudmonitoring_1_1CloudMonitorNotificationPlanManager.html#a5b7ef0221e471e99fa7f0a87a28ba1ea',1,'pyrax::cloudmonitoring::CloudMonitorNotificationPlanManager.create()'],['../classpyrax_1_1cloudmonitoring_1_1CloudMonitorClient.html#a5b7ef0221e471e99fa7f0a87a28ba1ea',1,'pyrax::cloudmonitoring::CloudMonitorClient.create()'],['../classpyrax_1_1cloudnetworks_1_1CloudNetworkClient.html#a5b7ef0221e471e99fa7f0a87a28ba1ea',1,'pyrax::cloudnetworks::CloudNetworkClient.create()'],['../classpyrax_1_1manager_1_1BaseManager.html#a5b7ef0221e471e99fa7f0a87a28ba1ea',1,'pyrax::manager::BaseManager.create()']]], + ['create_5falarm',['create_alarm',['../classpyrax_1_1cloudmonitoring_1_1CloudMonitorEntity.html#a5e3e83b1715922337eb99e95373166e6',1,'pyrax::cloudmonitoring::CloudMonitorEntity.create_alarm()'],['../classpyrax_1_1cloudmonitoring_1_1CloudMonitorEntityManager.html#a5e3e83b1715922337eb99e95373166e6',1,'pyrax::cloudmonitoring::CloudMonitorEntityManager.create_alarm()'],['../classpyrax_1_1cloudmonitoring_1_1CloudMonitorCheck.html#a5e3e83b1715922337eb99e95373166e6',1,'pyrax::cloudmonitoring::CloudMonitorCheck.create_alarm()'],['../classpyrax_1_1cloudmonitoring_1_1CloudMonitorClient.html#a5e3e83b1715922337eb99e95373166e6',1,'pyrax::cloudmonitoring::CloudMonitorClient.create_alarm()']]], + ['create_5fcheck',['create_check',['../classpyrax_1_1cloudmonitoring_1_1CloudMonitorEntityManager.html#a6fc873d6c66c1173dc63793fd2cc72d6',1,'pyrax::cloudmonitoring::CloudMonitorEntityManager.create_check()'],['../classpyrax_1_1cloudmonitoring_1_1CloudMonitorClient.html#a6fc873d6c66c1173dc63793fd2cc72d6',1,'pyrax::cloudmonitoring::CloudMonitorClient.create_check()']]], ['create_5fcontainer',['create_container',['../classpyrax_1_1cf__wrapper_1_1client_1_1CFClient.html#a31b9196903b253dd2cd99dc4d7a0774e',1,'pyrax::cf_wrapper::client::CFClient']]], ['create_5fdatabase',['create_database',['../classpyrax_1_1clouddatabases_1_1CloudDatabaseInstance.html#a287e0595d14610db48012f18e10d60d5',1,'pyrax::clouddatabases::CloudDatabaseInstance.create_database()'],['../classpyrax_1_1clouddatabases_1_1CloudDatabaseClient.html#a287e0595d14610db48012f18e10d60d5',1,'pyrax::clouddatabases::CloudDatabaseClient.create_database()']]], + ['create_5fentity',['create_entity',['../classpyrax_1_1cloudmonitoring_1_1CloudMonitorClient.html#a287a9c4c88ac4ade6073ff5ad10a8fb9',1,'pyrax::cloudmonitoring::CloudMonitorClient']]], + ['create_5fnotification',['create_notification',['../classpyrax_1_1cloudmonitoring_1_1CloudMonitorClient.html#aa1579d27c94116ec606bc01b3944dae0',1,'pyrax::cloudmonitoring::CloudMonitorClient']]], + ['create_5fnotification_5fplan',['create_notification_plan',['../classpyrax_1_1cloudmonitoring_1_1CloudMonitorClient.html#adbe3d30cfff0796002e143442e5eb225',1,'pyrax::cloudmonitoring::CloudMonitorClient']]], ['create_5fsnapshot',['create_snapshot',['../classpyrax_1_1cloudblockstorage_1_1CloudBlockStorageVolume.html#a75cc4154491155dec3c34ea545de7d36',1,'pyrax::cloudblockstorage::CloudBlockStorageVolume.create_snapshot()'],['../classpyrax_1_1cloudblockstorage_1_1CloudBlockStorageClient.html#a75cc4154491155dec3c34ea545de7d36',1,'pyrax::cloudblockstorage::CloudBlockStorageClient.create_snapshot()']]], ['create_5ftenant',['create_tenant',['../classpyrax_1_1base__identity_1_1BaseAuth.html#afb882c0e80402ee17bf29c7af13d2a38',1,'pyrax::base_identity::BaseAuth']]], ['create_5fuser',['create_user',['../classpyrax_1_1base__identity_1_1BaseAuth.html#af18e8e2e2ba1d65bb30314133332044d',1,'pyrax::base_identity::BaseAuth.create_user()'],['../classpyrax_1_1clouddatabases_1_1CloudDatabaseInstance.html#af18e8e2e2ba1d65bb30314133332044d',1,'pyrax::clouddatabases::CloudDatabaseInstance.create_user()'],['../classpyrax_1_1clouddatabases_1_1CloudDatabaseClient.html#af18e8e2e2ba1d65bb30314133332044d',1,'pyrax::clouddatabases::CloudDatabaseClient.create_user()']]] diff --git a/docs/html/search/all_64.js b/docs/html/search/all_64.js index 5de9d102..9ec54de4 100644 --- a/docs/html/search/all_64.js +++ b/docs/html/search/all_64.js @@ -8,21 +8,27 @@ var searchData= ['default_5fencoding',['default_encoding',['../namespacepyrax.html#ab8005f4babffb239fd05dbb8c38551b7',1,'pyrax']]], ['default_5fregion',['default_region',['../classpyrax_1_1identity_1_1rax__identity_1_1RaxIdentity.html#abd0e51df0335ddf4a0ebf84b4e511b16',1,'pyrax::identity::rax_identity::RaxIdentity::default_region()'],['../namespacepyrax.html#affa3c4afe67ff7c721e823ac8b67fa16',1,'pyrax.default_region()']]], ['default_5ftimeout',['DEFAULT_TIMEOUT',['../namespacepyrax_1_1clouddns.html#aa66130c897c01393a63de104588aceb7',1,'pyrax::clouddns']]], - ['delete',['delete',['../classpyrax_1_1cf__wrapper_1_1container_1_1Container.html#ab48bde70a0927a83d62464cb0627c34b',1,'pyrax::cf_wrapper::container::Container.delete()'],['../classpyrax_1_1cf__wrapper_1_1storage__object_1_1StorageObject.html#ab48bde70a0927a83d62464cb0627c34b',1,'pyrax::cf_wrapper::storage_object::StorageObject.delete()'],['../classpyrax_1_1client_1_1BaseClient.html#ab48bde70a0927a83d62464cb0627c34b',1,'pyrax::client::BaseClient.delete()'],['../classpyrax_1_1cloudblockstorage_1_1CloudBlockStorageSnapshot.html#ab48bde70a0927a83d62464cb0627c34b',1,'pyrax::cloudblockstorage::CloudBlockStorageSnapshot.delete()'],['../classpyrax_1_1cloudblockstorage_1_1CloudBlockStorageVolume.html#ab48bde70a0927a83d62464cb0627c34b',1,'pyrax::cloudblockstorage::CloudBlockStorageVolume.delete()'],['../classpyrax_1_1clouddatabases_1_1CloudDatabaseDatabase.html#ab48bde70a0927a83d62464cb0627c34b',1,'pyrax::clouddatabases::CloudDatabaseDatabase.delete()'],['../classpyrax_1_1clouddatabases_1_1CloudDatabaseUser.html#ab48bde70a0927a83d62464cb0627c34b',1,'pyrax::clouddatabases::CloudDatabaseUser.delete()'],['../classpyrax_1_1clouddns_1_1CloudDNSRecord.html#ab48bde70a0927a83d62464cb0627c34b',1,'pyrax::clouddns::CloudDNSRecord.delete()'],['../classpyrax_1_1clouddns_1_1CloudDNSDomain.html#ab48bde70a0927a83d62464cb0627c34b',1,'pyrax::clouddns::CloudDNSDomain.delete()'],['../classpyrax_1_1clouddns_1_1CloudDNSPTRRecord.html#ab48bde70a0927a83d62464cb0627c34b',1,'pyrax::clouddns::CloudDNSPTRRecord.delete()'],['../classpyrax_1_1clouddns_1_1CloudDNSManager.html#ab48bde70a0927a83d62464cb0627c34b',1,'pyrax::clouddns::CloudDNSManager.delete()'],['../classpyrax_1_1clouddns_1_1CloudDNSClient.html#ab48bde70a0927a83d62464cb0627c34b',1,'pyrax::clouddns::CloudDNSClient.delete()'],['../classpyrax_1_1cloudloadbalancers_1_1Node.html#ab48bde70a0927a83d62464cb0627c34b',1,'pyrax::cloudloadbalancers::Node.delete()'],['../classpyrax_1_1cloudloadbalancers_1_1VirtualIP.html#ab48bde70a0927a83d62464cb0627c34b',1,'pyrax::cloudloadbalancers::VirtualIP.delete()'],['../classpyrax_1_1cloudnetworks_1_1CloudNetwork.html#ab48bde70a0927a83d62464cb0627c34b',1,'pyrax::cloudnetworks::CloudNetwork.delete()'],['../classpyrax_1_1cloudnetworks_1_1CloudNetworkClient.html#ab48bde70a0927a83d62464cb0627c34b',1,'pyrax::cloudnetworks::CloudNetworkClient.delete()'],['../classpyrax_1_1manager_1_1BaseManager.html#ab48bde70a0927a83d62464cb0627c34b',1,'pyrax::manager::BaseManager.delete()'],['../classpyrax_1_1resource_1_1BaseResource.html#ab48bde70a0927a83d62464cb0627c34b',1,'pyrax::resource::BaseResource.delete()']]], + ['delete',['delete',['../classpyrax_1_1autoscale_1_1AutoScalePolicy.html#ab48bde70a0927a83d62464cb0627c34b',1,'pyrax::autoscale::AutoScalePolicy.delete()'],['../classpyrax_1_1autoscale_1_1AutoScaleWebhook.html#ab48bde70a0927a83d62464cb0627c34b',1,'pyrax::autoscale::AutoScaleWebhook.delete()'],['../classpyrax_1_1cf__wrapper_1_1container_1_1Container.html#ab48bde70a0927a83d62464cb0627c34b',1,'pyrax::cf_wrapper::container::Container.delete()'],['../classpyrax_1_1cf__wrapper_1_1storage__object_1_1StorageObject.html#ab48bde70a0927a83d62464cb0627c34b',1,'pyrax::cf_wrapper::storage_object::StorageObject.delete()'],['../classpyrax_1_1client_1_1BaseClient.html#ab48bde70a0927a83d62464cb0627c34b',1,'pyrax::client::BaseClient.delete()'],['../classpyrax_1_1cloudblockstorage_1_1CloudBlockStorageSnapshot.html#ab48bde70a0927a83d62464cb0627c34b',1,'pyrax::cloudblockstorage::CloudBlockStorageSnapshot.delete()'],['../classpyrax_1_1cloudblockstorage_1_1CloudBlockStorageVolume.html#ab48bde70a0927a83d62464cb0627c34b',1,'pyrax::cloudblockstorage::CloudBlockStorageVolume.delete()'],['../classpyrax_1_1clouddatabases_1_1CloudDatabaseDatabase.html#ab48bde70a0927a83d62464cb0627c34b',1,'pyrax::clouddatabases::CloudDatabaseDatabase.delete()'],['../classpyrax_1_1clouddatabases_1_1CloudDatabaseUser.html#ab48bde70a0927a83d62464cb0627c34b',1,'pyrax::clouddatabases::CloudDatabaseUser.delete()'],['../classpyrax_1_1clouddns_1_1CloudDNSRecord.html#ab48bde70a0927a83d62464cb0627c34b',1,'pyrax::clouddns::CloudDNSRecord.delete()'],['../classpyrax_1_1clouddns_1_1CloudDNSDomain.html#ab48bde70a0927a83d62464cb0627c34b',1,'pyrax::clouddns::CloudDNSDomain.delete()'],['../classpyrax_1_1clouddns_1_1CloudDNSPTRRecord.html#ab48bde70a0927a83d62464cb0627c34b',1,'pyrax::clouddns::CloudDNSPTRRecord.delete()'],['../classpyrax_1_1clouddns_1_1CloudDNSManager.html#ab48bde70a0927a83d62464cb0627c34b',1,'pyrax::clouddns::CloudDNSManager.delete()'],['../classpyrax_1_1clouddns_1_1CloudDNSClient.html#ab48bde70a0927a83d62464cb0627c34b',1,'pyrax::clouddns::CloudDNSClient.delete()'],['../classpyrax_1_1cloudloadbalancers_1_1Node.html#ab48bde70a0927a83d62464cb0627c34b',1,'pyrax::cloudloadbalancers::Node.delete()'],['../classpyrax_1_1cloudloadbalancers_1_1VirtualIP.html#ab48bde70a0927a83d62464cb0627c34b',1,'pyrax::cloudloadbalancers::VirtualIP.delete()'],['../classpyrax_1_1cloudmonitoring_1_1CloudMonitorCheck.html#ab48bde70a0927a83d62464cb0627c34b',1,'pyrax::cloudmonitoring::CloudMonitorCheck.delete()'],['../classpyrax_1_1cloudmonitoring_1_1CloudMonitorClient.html#ab48bde70a0927a83d62464cb0627c34b',1,'pyrax::cloudmonitoring::CloudMonitorClient.delete()'],['../classpyrax_1_1cloudnetworks_1_1CloudNetwork.html#ab48bde70a0927a83d62464cb0627c34b',1,'pyrax::cloudnetworks::CloudNetwork.delete()'],['../classpyrax_1_1cloudnetworks_1_1CloudNetworkClient.html#ab48bde70a0927a83d62464cb0627c34b',1,'pyrax::cloudnetworks::CloudNetworkClient.delete()'],['../classpyrax_1_1manager_1_1BaseManager.html#ab48bde70a0927a83d62464cb0627c34b',1,'pyrax::manager::BaseManager.delete()'],['../classpyrax_1_1resource_1_1BaseResource.html#ab48bde70a0927a83d62464cb0627c34b',1,'pyrax::resource::BaseResource.delete()']]], ['delete_5faccess_5flist',['delete_access_list',['../classpyrax_1_1cloudloadbalancers_1_1CloudLoadBalancer.html#a9435aa1b466627d94f4ab7065a91e4f8',1,'pyrax::cloudloadbalancers::CloudLoadBalancer.delete_access_list()'],['../classpyrax_1_1cloudloadbalancers_1_1CloudLoadBalancerManager.html#a9435aa1b466627d94f4ab7065a91e4f8',1,'pyrax::cloudloadbalancers::CloudLoadBalancerManager.delete_access_list()'],['../classpyrax_1_1cloudloadbalancers_1_1CloudLoadBalancerClient.html#a9435aa1b466627d94f4ab7065a91e4f8',1,'pyrax::cloudloadbalancers::CloudLoadBalancerClient.delete_access_list()']]], ['delete_5faccess_5flist_5fitems',['delete_access_list_items',['../classpyrax_1_1cloudloadbalancers_1_1CloudLoadBalancer.html#a2fd3c0d8eb07bd4f48fdad4c134e1aae',1,'pyrax::cloudloadbalancers::CloudLoadBalancer.delete_access_list_items()'],['../classpyrax_1_1cloudloadbalancers_1_1CloudLoadBalancerManager.html#a2fd3c0d8eb07bd4f48fdad4c134e1aae',1,'pyrax::cloudloadbalancers::CloudLoadBalancerManager.delete_access_list_items()'],['../classpyrax_1_1cloudloadbalancers_1_1CloudLoadBalancerClient.html#a2fd3c0d8eb07bd4f48fdad4c134e1aae',1,'pyrax::cloudloadbalancers::CloudLoadBalancerClient.delete_access_list_items()']]], + ['delete_5falarm',['delete_alarm',['../classpyrax_1_1cloudmonitoring_1_1CloudMonitorEntity.html#aa6f9a8547a22941467c661e1c3b83178',1,'pyrax::cloudmonitoring::CloudMonitorEntity.delete_alarm()'],['../classpyrax_1_1cloudmonitoring_1_1CloudMonitorEntityManager.html#aa6f9a8547a22941467c661e1c3b83178',1,'pyrax::cloudmonitoring::CloudMonitorEntityManager.delete_alarm()'],['../classpyrax_1_1cloudmonitoring_1_1CloudMonitorClient.html#aa6f9a8547a22941467c661e1c3b83178',1,'pyrax::cloudmonitoring::CloudMonitorClient.delete_alarm()']]], ['delete_5fall_5fobjects',['delete_all_objects',['../classpyrax_1_1cf__wrapper_1_1container_1_1Container.html#a29c7d5f06a4fdc49b064a4352e8c8763',1,'pyrax::cf_wrapper::container::Container']]], ['delete_5fall_5fsnapshots',['delete_all_snapshots',['../classpyrax_1_1cloudblockstorage_1_1CloudBlockStorageVolume.html#aec8a47767c07e19ef3ad9f6b974240bb',1,'pyrax::cloudblockstorage::CloudBlockStorageVolume']]], + ['delete_5fcheck',['delete_check',['../classpyrax_1_1cloudmonitoring_1_1CloudMonitorEntity.html#a4efaacdc5baa3b0cf23478e90a16a5b9',1,'pyrax::cloudmonitoring::CloudMonitorEntity.delete_check()'],['../classpyrax_1_1cloudmonitoring_1_1CloudMonitorEntityManager.html#a4efaacdc5baa3b0cf23478e90a16a5b9',1,'pyrax::cloudmonitoring::CloudMonitorEntityManager.delete_check()'],['../classpyrax_1_1cloudmonitoring_1_1CloudMonitorClient.html#a4efaacdc5baa3b0cf23478e90a16a5b9',1,'pyrax::cloudmonitoring::CloudMonitorClient.delete_check()']]], ['delete_5fconnection_5fthrottle',['delete_connection_throttle',['../classpyrax_1_1cloudloadbalancers_1_1CloudLoadBalancer.html#ae08266e5e13ddc6e99a972671e132d51',1,'pyrax::cloudloadbalancers::CloudLoadBalancer.delete_connection_throttle()'],['../classpyrax_1_1cloudloadbalancers_1_1CloudLoadBalancerManager.html#ae08266e5e13ddc6e99a972671e132d51',1,'pyrax::cloudloadbalancers::CloudLoadBalancerManager.delete_connection_throttle()'],['../classpyrax_1_1cloudloadbalancers_1_1CloudLoadBalancerClient.html#ae08266e5e13ddc6e99a972671e132d51',1,'pyrax::cloudloadbalancers::CloudLoadBalancerClient.delete_connection_throttle()']]], ['delete_5fcontainer',['delete_container',['../classpyrax_1_1cf__wrapper_1_1client_1_1CFClient.html#ac314b663a2e0552b6403f04558be2735',1,'pyrax::cf_wrapper::client::CFClient']]], ['delete_5fdatabase',['delete_database',['../classpyrax_1_1clouddatabases_1_1CloudDatabaseInstance.html#a55a252283f51314fe80a1f74f4ebf46f',1,'pyrax::clouddatabases::CloudDatabaseInstance.delete_database()'],['../classpyrax_1_1clouddatabases_1_1CloudDatabaseClient.html#a55a252283f51314fe80a1f74f4ebf46f',1,'pyrax::clouddatabases::CloudDatabaseClient.delete_database()']]], + ['delete_5fentity',['delete_entity',['../classpyrax_1_1cloudmonitoring_1_1CloudMonitorClient.html#a4f0f541b858158a007e2eca4daa25445',1,'pyrax::cloudmonitoring::CloudMonitorClient']]], ['delete_5fhealth_5fmonitor',['delete_health_monitor',['../classpyrax_1_1cloudloadbalancers_1_1CloudLoadBalancer.html#a856597bc9c0b9484f62e3d7ae78c3099',1,'pyrax::cloudloadbalancers::CloudLoadBalancer.delete_health_monitor()'],['../classpyrax_1_1cloudloadbalancers_1_1CloudLoadBalancerManager.html#a856597bc9c0b9484f62e3d7ae78c3099',1,'pyrax::cloudloadbalancers::CloudLoadBalancerManager.delete_health_monitor()'],['../classpyrax_1_1cloudloadbalancers_1_1CloudLoadBalancerClient.html#a856597bc9c0b9484f62e3d7ae78c3099',1,'pyrax::cloudloadbalancers::CloudLoadBalancerClient.delete_health_monitor()']]], ['delete_5fin_5fseconds',['delete_in_seconds',['../classpyrax_1_1cf__wrapper_1_1storage__object_1_1StorageObject.html#a4c205bc29b6fdece30a5bf28e85dfd3f',1,'pyrax::cf_wrapper::storage_object::StorageObject']]], ['delete_5fmetadata',['delete_metadata',['../classpyrax_1_1cloudloadbalancers_1_1CloudLoadBalancer.html#ab4b26663be70bc5c9a8d3bf3b473b328',1,'pyrax::cloudloadbalancers::CloudLoadBalancer.delete_metadata()'],['../classpyrax_1_1cloudloadbalancers_1_1CloudLoadBalancerManager.html#ab4b26663be70bc5c9a8d3bf3b473b328',1,'pyrax::cloudloadbalancers::CloudLoadBalancerManager.delete_metadata()'],['../classpyrax_1_1cloudloadbalancers_1_1Node.html#ab4b26663be70bc5c9a8d3bf3b473b328',1,'pyrax::cloudloadbalancers::Node.delete_metadata()'],['../classpyrax_1_1cloudloadbalancers_1_1CloudLoadBalancerClient.html#ab4b26663be70bc5c9a8d3bf3b473b328',1,'pyrax::cloudloadbalancers::CloudLoadBalancerClient.delete_metadata()']]], ['delete_5fmetadata_5ffor_5fnode',['delete_metadata_for_node',['../classpyrax_1_1cloudloadbalancers_1_1CloudLoadBalancer.html#a38317481667772b2f3483f5360bbb08f',1,'pyrax::cloudloadbalancers::CloudLoadBalancer.delete_metadata_for_node()'],['../classpyrax_1_1cloudloadbalancers_1_1CloudLoadBalancerClient.html#a38317481667772b2f3483f5360bbb08f',1,'pyrax::cloudloadbalancers::CloudLoadBalancerClient.delete_metadata_for_node()']]], ['delete_5fnode',['delete_node',['../classpyrax_1_1cloudloadbalancers_1_1CloudLoadBalancer.html#a616947868beb4492f797b21aeb320d90',1,'pyrax::cloudloadbalancers::CloudLoadBalancer.delete_node()'],['../classpyrax_1_1cloudloadbalancers_1_1CloudLoadBalancerManager.html#a616947868beb4492f797b21aeb320d90',1,'pyrax::cloudloadbalancers::CloudLoadBalancerManager.delete_node()'],['../classpyrax_1_1cloudloadbalancers_1_1CloudLoadBalancerClient.html#a616947868beb4492f797b21aeb320d90',1,'pyrax::cloudloadbalancers::CloudLoadBalancerClient.delete_node()']]], + ['delete_5fnotification',['delete_notification',['../classpyrax_1_1cloudmonitoring_1_1CloudMonitorClient.html#a1507022684013e59d9279645071071d4',1,'pyrax::cloudmonitoring::CloudMonitorClient']]], + ['delete_5fnotification_5fplan',['delete_notification_plan',['../classpyrax_1_1cloudmonitoring_1_1CloudMonitorClient.html#abdd5616e58c4673c7887f6650cee075c',1,'pyrax::cloudmonitoring::CloudMonitorClient']]], ['delete_5fobject',['delete_object',['../classpyrax_1_1cf__wrapper_1_1client_1_1CFClient.html#aaf3e88c7945760a803d04d99c7a39364',1,'pyrax::cf_wrapper::client::CFClient.delete_object()'],['../classpyrax_1_1cf__wrapper_1_1container_1_1Container.html#aaf3e88c7945760a803d04d99c7a39364',1,'pyrax::cf_wrapper::container::Container.delete_object()']]], ['delete_5fobject_5fin_5fseconds',['delete_object_in_seconds',['../classpyrax_1_1cf__wrapper_1_1client_1_1CFClient.html#a157faa240c2d81626b226019fd4e7482',1,'pyrax::cf_wrapper::client::CFClient.delete_object_in_seconds()'],['../classpyrax_1_1cf__wrapper_1_1container_1_1Container.html#a157faa240c2d81626b226019fd4e7482',1,'pyrax::cf_wrapper::container::Container.delete_object_in_seconds()']]], + ['delete_5fpolicy',['delete_policy',['../classpyrax_1_1autoscale_1_1ScalingGroup.html#abdafb5a55ff1bb75ff43db8bf644f276',1,'pyrax::autoscale::ScalingGroup.delete_policy()'],['../classpyrax_1_1autoscale_1_1ScalingGroupManager.html#abdafb5a55ff1bb75ff43db8bf644f276',1,'pyrax::autoscale::ScalingGroupManager.delete_policy()'],['../classpyrax_1_1autoscale_1_1AutoScaleClient.html#abdafb5a55ff1bb75ff43db8bf644f276',1,'pyrax::autoscale::AutoScaleClient.delete_policy()']]], ['delete_5fptr_5frecords',['delete_ptr_records',['../classpyrax_1_1clouddns_1_1CloudDNSManager.html#acc7bb619a838e10967e3555ec3d02bf8',1,'pyrax::clouddns::CloudDNSManager.delete_ptr_records()'],['../classpyrax_1_1clouddns_1_1CloudDNSClient.html#acc7bb619a838e10967e3555ec3d02bf8',1,'pyrax::clouddns::CloudDNSClient.delete_ptr_records()']]], ['delete_5frecord',['delete_record',['../classpyrax_1_1clouddns_1_1CloudDNSDomain.html#a42e0e029c6c4823504401e8a3ba99d14',1,'pyrax::clouddns::CloudDNSDomain.delete_record()'],['../classpyrax_1_1clouddns_1_1CloudDNSManager.html#a42e0e029c6c4823504401e8a3ba99d14',1,'pyrax::clouddns::CloudDNSManager.delete_record()'],['../classpyrax_1_1clouddns_1_1CloudDNSClient.html#a42e0e029c6c4823504401e8a3ba99d14',1,'pyrax::clouddns::CloudDNSClient.delete_record()']]], ['delete_5fsession_5fpersistence',['delete_session_persistence',['../classpyrax_1_1cloudloadbalancers_1_1CloudLoadBalancerManager.html#af0e0d210eb8e8bf69ff5563e18a519ff',1,'pyrax::cloudloadbalancers::CloudLoadBalancerManager']]], @@ -32,6 +38,7 @@ var searchData= ['delete_5fuser',['delete_user',['../classpyrax_1_1base__identity_1_1BaseAuth.html#a254d42e584df57805c2a190b073d28a4',1,'pyrax::base_identity::BaseAuth.delete_user()'],['../classpyrax_1_1clouddatabases_1_1CloudDatabaseInstance.html#a254d42e584df57805c2a190b073d28a4',1,'pyrax::clouddatabases::CloudDatabaseInstance.delete_user()'],['../classpyrax_1_1clouddatabases_1_1CloudDatabaseClient.html#a254d42e584df57805c2a190b073d28a4',1,'pyrax::clouddatabases::CloudDatabaseClient.delete_user()']]], ['delete_5fvirtualip',['delete_virtualip',['../classpyrax_1_1cloudloadbalancers_1_1CloudLoadBalancer.html#af5d840b35f43bbc8669b94337555bb81',1,'pyrax::cloudloadbalancers::CloudLoadBalancer.delete_virtualip()'],['../classpyrax_1_1cloudloadbalancers_1_1CloudLoadBalancerManager.html#af5d840b35f43bbc8669b94337555bb81',1,'pyrax::cloudloadbalancers::CloudLoadBalancerManager.delete_virtualip()'],['../classpyrax_1_1cloudloadbalancers_1_1CloudLoadBalancerClient.html#af5d840b35f43bbc8669b94337555bb81',1,'pyrax::cloudloadbalancers::CloudLoadBalancerClient.delete_virtualip()']]], ['delete_5fvolume',['delete_volume',['../classpyrax_1_1cloudblockstorage_1_1CloudBlockStorageClient.html#ab4d507038522284eb9943c4c3a9b64c6',1,'pyrax::cloudblockstorage::CloudBlockStorageClient']]], + ['delete_5fwebhook',['delete_webhook',['../classpyrax_1_1autoscale_1_1ScalingGroup.html#ae0dc92290d6e28a9f163bce15d037bf9',1,'pyrax::autoscale::ScalingGroup.delete_webhook()'],['../classpyrax_1_1autoscale_1_1ScalingGroupManager.html#ae0dc92290d6e28a9f163bce15d037bf9',1,'pyrax::autoscale::ScalingGroupManager.delete_webhook()'],['../classpyrax_1_1autoscale_1_1AutoScalePolicy.html#ae0dc92290d6e28a9f163bce15d037bf9',1,'pyrax::autoscale::AutoScalePolicy.delete_webhook()'],['../classpyrax_1_1autoscale_1_1AutoScaleClient.html#ae0dc92290d6e28a9f163bce15d037bf9',1,'pyrax::autoscale::AutoScaleClient.delete_webhook()']]], ['description',['description',['../classpyrax_1_1cloudblockstorage_1_1CloudBlockStorageSnapshot.html#a2661f439a4a94ffdcd5e47ae1da0bb1d',1,'pyrax::cloudblockstorage::CloudBlockStorageSnapshot.description()'],['../classpyrax_1_1cloudblockstorage_1_1CloudBlockStorageVolume.html#a2661f439a4a94ffdcd5e47ae1da0bb1d',1,'pyrax::cloudblockstorage::CloudBlockStorageVolume.description()'],['../namespacesetup.html#a23af17c78302b71c14ef38ea40b8d1d7',1,'setup.description()']]], ['desired',['desired',['../classpyrax_1_1utils_1_1__WaitThread.html#a6788c2131efce60abb1699742c1c9509',1,'pyrax::utils::_WaitThread']]], ['detach',['detach',['../classpyrax_1_1cloudblockstorage_1_1CloudBlockStorageVolume.html#acaedb9678123c696fc17b7d4d46e1a10',1,'pyrax::cloudblockstorage::CloudBlockStorageVolume.detach()'],['../classpyrax_1_1cloudblockstorage_1_1CloudBlockStorageClient.html#acaedb9678123c696fc17b7d4d46e1a10',1,'pyrax::cloudblockstorage::CloudBlockStorageClient.detach()']]], diff --git a/docs/html/search/all_65.js b/docs/html/search/all_65.js index 343b0055..ee5caa8f 100644 --- a/docs/html/search/all_65.js +++ b/docs/html/search/all_65.js @@ -6,6 +6,7 @@ var searchData= ['endpointnotdefined',['EndpointNotDefined',['../classpyrax_1_1exceptions_1_1EndpointNotDefined.html',1,'pyrax::exceptions']]], ['endpointnotfound',['EndpointNotFound',['../classpyrax_1_1exceptions_1_1EndpointNotFound.html',1,'pyrax::exceptions']]], ['endpoints',['endpoints',['../classpyrax_1_1exceptions_1_1AmbiguousEndpoints.html#a00b95759168f601d56d8cdc26a894d46',1,'pyrax::exceptions::AmbiguousEndpoints']]], + ['entity',['entity',['../classpyrax_1_1cloudmonitoring_1_1CloudMonitorCheck.html#a6e49c9e0d2b310e885a8c8f6ebc155e6',1,'pyrax::cloudmonitoring::CloudMonitorCheck::entity()'],['../classpyrax_1_1cloudmonitoring_1_1CloudMonitorAlarm.html#a6e49c9e0d2b310e885a8c8f6ebc155e6',1,'pyrax::cloudmonitoring::CloudMonitorAlarm::entity()']]], ['env',['env',['../namespacepyrax_1_1utils.html#a9790d3a239a8e290bffbeef17c48f017',1,'pyrax::utils']]], ['env_5fdct',['env_dct',['../classpyrax_1_1Settings.html#af10cee202a039548ef1872a4ebfcbaa4',1,'pyrax::Settings']]], ['environment',['environment',['../classpyrax_1_1Settings.html#a33eefe2a73aa14ff1eaa54c293ab382d',1,'pyrax::Settings']]], @@ -15,6 +16,8 @@ var searchData= ['etag_5ffail_5fpat',['etag_fail_pat',['../namespacepyrax_1_1cf__wrapper_1_1client.html#a73ecac0c29c1866713f3d26ca05f986c',1,'pyrax::cf_wrapper::client']]], ['etag_5ffailed_5fpattern',['etag_failed_pattern',['../namespacepyrax_1_1cf__wrapper_1_1client.html#a2902c02c2870c84af5ee318ad3bd548f',1,'pyrax::cf_wrapper::client']]], ['exceptions_2epy',['exceptions.py',['../exceptions_8py.html',1,'']]], + ['execute',['execute',['../classpyrax_1_1autoscale_1_1AutoScalePolicy.html#ad4a3a293739ba23e084f19c685303590',1,'pyrax::autoscale::AutoScalePolicy']]], + ['execute_5fpolicy',['execute_policy',['../classpyrax_1_1autoscale_1_1ScalingGroup.html#a34e31ecc0ff1fc06f15621d89ef81aa6',1,'pyrax::autoscale::ScalingGroup.execute_policy()'],['../classpyrax_1_1autoscale_1_1ScalingGroupManager.html#a34e31ecc0ff1fc06f15621d89ef81aa6',1,'pyrax::autoscale::ScalingGroupManager.execute_policy()'],['../classpyrax_1_1autoscale_1_1AutoScaleClient.html#a34e31ecc0ff1fc06f15621d89ef81aa6',1,'pyrax::autoscale::AutoScaleClient.execute_policy()']]], ['expires',['expires',['../classpyrax_1_1base__identity_1_1BaseAuth.html#ac7a7efd7d064c324be145a0e88c25be8',1,'pyrax::base_identity::BaseAuth.expires()'],['../classpyrax_1_1base__identity_1_1BaseAuth.html#a49192f7cc960a0aab538e014cf449225',1,'pyrax::base_identity::BaseAuth.expires()']]], ['export',['export',['../classpyrax_1_1clouddns_1_1CloudDNSDomain.html#a7aff5c605f882c9bad6df59ef505bb5b',1,'pyrax::clouddns::CloudDNSDomain']]], ['export_5fdomain',['export_domain',['../classpyrax_1_1clouddns_1_1CloudDNSManager.html#a0e037c749fa4bb12133e5986c410d7b4',1,'pyrax::clouddns::CloudDNSManager.export_domain()'],['../classpyrax_1_1clouddns_1_1CloudDNSClient.html#a0e037c749fa4bb12133e5986c410d7b4',1,'pyrax::clouddns::CloudDNSClient.export_domain()']]], diff --git a/docs/html/search/all_66.js b/docs/html/search/all_66.js index 764d9900..74c1c491 100644 --- a/docs/html/search/all_66.js +++ b/docs/html/search/all_66.js @@ -4,14 +4,16 @@ var searchData= ['fault',['FAULT',['../namespacepyrax_1_1cf__wrapper_1_1container.html#a892f51831156b6ea326c363e4b10631a',1,'pyrax::cf_wrapper::container']]], ['fetch',['fetch',['../classpyrax_1_1cf__wrapper_1_1storage__object_1_1StorageObject.html#a271dcd2cab08dc966228cd3d12e7cfb7',1,'pyrax::cf_wrapper::storage_object::StorageObject']]], ['fetch_5fobject',['fetch_object',['../classpyrax_1_1cf__wrapper_1_1client_1_1CFClient.html#a1c274968ef395c2b88a4d67c24f30f8e',1,'pyrax::cf_wrapper::client::CFClient.fetch_object()'],['../classpyrax_1_1cf__wrapper_1_1container_1_1Container.html#a1c274968ef395c2b88a4d67c24f30f8e',1,'pyrax::cf_wrapper::container::Container.fetch_object()']]], + ['field_5fnames',['field_names',['../classpyrax_1_1cloudmonitoring_1_1CloudMonitorCheckType.html#a0b9c1a726225d02b85a31d2fc7508352',1,'pyrax::cloudmonitoring::CloudMonitorCheckType']]], ['filenotfound',['FileNotFound',['../classpyrax_1_1exceptions_1_1FileNotFound.html',1,'pyrax::exceptions']]], - ['find',['find',['../classpyrax_1_1client_1_1BaseClient.html#a01f90f57b7acd55e177611f5d0f7df23',1,'pyrax::client::BaseClient.find()'],['../classpyrax_1_1manager_1_1BaseManager.html#a01f90f57b7acd55e177611f5d0f7df23',1,'pyrax::manager::BaseManager.find()']]], + ['find',['find',['../classpyrax_1_1client_1_1BaseClient.html#a01f90f57b7acd55e177611f5d0f7df23',1,'pyrax::client::BaseClient.find()'],['../classpyrax_1_1cloudmonitoring_1_1CloudMonitorClient.html#a01f90f57b7acd55e177611f5d0f7df23',1,'pyrax::cloudmonitoring::CloudMonitorClient.find()'],['../classpyrax_1_1manager_1_1BaseManager.html#a01f90f57b7acd55e177611f5d0f7df23',1,'pyrax::manager::BaseManager.find()']]], + ['find_5fall_5fchecks',['find_all_checks',['../classpyrax_1_1cloudmonitoring_1_1CloudMonitorEntityManager.html#a85522a4725d32d0924f3196f59f91d92',1,'pyrax::cloudmonitoring::CloudMonitorEntityManager.find_all_checks()'],['../classpyrax_1_1cloudmonitoring_1_1CloudMonitorClient.html#a85522a4725d32d0924f3196f59f91d92',1,'pyrax::cloudmonitoring::CloudMonitorClient.find_all_checks()']]], ['find_5fnetwork_5fby_5flabel',['find_network_by_label',['../classpyrax_1_1cloudnetworks_1_1CloudNetworkClient.html#ab9a076a96d8be6ef848669c841c472f7',1,'pyrax::cloudnetworks::CloudNetworkClient']]], ['find_5fnetwork_5fby_5fname',['find_network_by_name',['../classpyrax_1_1cloudnetworks_1_1CloudNetworkClient.html#aa2a5394d949e4dbc374a082fe3c16d84',1,'pyrax::cloudnetworks::CloudNetworkClient']]], ['find_5frecord',['find_record',['../classpyrax_1_1clouddns_1_1CloudDNSDomain.html#a20415cf3e70cdff472ca1161a6ad2e64',1,'pyrax::clouddns::CloudDNSDomain.find_record()'],['../classpyrax_1_1clouddns_1_1CloudDNSClient.html#a20415cf3e70cdff472ca1161a6ad2e64',1,'pyrax::clouddns::CloudDNSClient.find_record()']]], ['find_5fuser_5fby_5fid',['find_user_by_id',['../classpyrax_1_1identity_1_1rax__identity_1_1RaxIdentity.html#adf5de79a326a6b6b6eac3cba7e0b8cfb',1,'pyrax::identity::rax_identity::RaxIdentity']]], ['find_5fuser_5fby_5fname',['find_user_by_name',['../classpyrax_1_1identity_1_1rax__identity_1_1RaxIdentity.html#ab0abba97256f91ebca2ded800fcf440d',1,'pyrax::identity::rax_identity::RaxIdentity']]], - ['findall',['findall',['../classpyrax_1_1client_1_1BaseClient.html#a1bae9ed7d134ea1c1e9a39726adea1e1',1,'pyrax::client::BaseClient.findall()'],['../classpyrax_1_1clouddns_1_1CloudDNSManager.html#a1bae9ed7d134ea1c1e9a39726adea1e1',1,'pyrax::clouddns::CloudDNSManager.findall()'],['../classpyrax_1_1manager_1_1BaseManager.html#a1bae9ed7d134ea1c1e9a39726adea1e1',1,'pyrax::manager::BaseManager.findall()']]], + ['findall',['findall',['../classpyrax_1_1client_1_1BaseClient.html#a1bae9ed7d134ea1c1e9a39726adea1e1',1,'pyrax::client::BaseClient.findall()'],['../classpyrax_1_1clouddns_1_1CloudDNSManager.html#a1bae9ed7d134ea1c1e9a39726adea1e1',1,'pyrax::clouddns::CloudDNSManager.findall()'],['../classpyrax_1_1cloudmonitoring_1_1CloudMonitorClient.html#a1bae9ed7d134ea1c1e9a39726adea1e1',1,'pyrax::cloudmonitoring::CloudMonitorClient.findall()'],['../classpyrax_1_1manager_1_1BaseManager.html#a1bae9ed7d134ea1c1e9a39726adea1e1',1,'pyrax::manager::BaseManager.findall()']]], ['flavor',['flavor',['../classpyrax_1_1clouddatabases_1_1CloudDatabaseInstance.html#a0e211f0b0d4eacb53ffb5f68e4e8dd01',1,'pyrax::clouddatabases::CloudDatabaseInstance']]], ['flavornotfound',['FlavorNotFound',['../classpyrax_1_1exceptions_1_1FlavorNotFound.html',1,'pyrax::exceptions']]], ['fnames',['fnames',['../namespacepyrax_1_1identity.html#a6cac12681a298a3f33aefe5d9a6044ea',1,'pyrax::identity']]], diff --git a/docs/html/search/all_67.js b/docs/html/search/all_67.js index 2bf75ddf..53b49b8b 100644 --- a/docs/html/search/all_67.js +++ b/docs/html/search/all_67.js @@ -1,11 +1,17 @@ var searchData= [ - ['get',['get',['../classpyrax_1_1Settings.html#a444a1328efb32d5d9d2dcb2efe855d3b',1,'pyrax::Settings.get()'],['../classpyrax_1_1cf__wrapper_1_1storage__object_1_1StorageObject.html#a444a1328efb32d5d9d2dcb2efe855d3b',1,'pyrax::cf_wrapper::storage_object::StorageObject.get()'],['../classpyrax_1_1client_1_1BaseClient.html#a444a1328efb32d5d9d2dcb2efe855d3b',1,'pyrax::client::BaseClient.get()'],['../classpyrax_1_1clouddatabases_1_1CloudDatabaseVolume.html#a444a1328efb32d5d9d2dcb2efe855d3b',1,'pyrax::clouddatabases::CloudDatabaseVolume.get()'],['../classpyrax_1_1clouddatabases_1_1CloudDatabaseManager.html#a444a1328efb32d5d9d2dcb2efe855d3b',1,'pyrax::clouddatabases::CloudDatabaseManager.get()'],['../classpyrax_1_1clouddatabases_1_1CloudDatabaseInstance.html#a444a1328efb32d5d9d2dcb2efe855d3b',1,'pyrax::clouddatabases::CloudDatabaseInstance.get()'],['../classpyrax_1_1clouddns_1_1CloudDNSRecord.html#a444a1328efb32d5d9d2dcb2efe855d3b',1,'pyrax::clouddns::CloudDNSRecord.get()'],['../classpyrax_1_1cloudnetworks_1_1CloudNetwork.html#a444a1328efb32d5d9d2dcb2efe855d3b',1,'pyrax::cloudnetworks::CloudNetwork.get()'],['../classpyrax_1_1manager_1_1BaseManager.html#a444a1328efb32d5d9d2dcb2efe855d3b',1,'pyrax::manager::BaseManager.get()'],['../classpyrax_1_1resource_1_1BaseResource.html#a444a1328efb32d5d9d2dcb2efe855d3b',1,'pyrax::resource::BaseResource.get()']]], + ['get',['get',['../classpyrax_1_1Settings.html#a444a1328efb32d5d9d2dcb2efe855d3b',1,'pyrax::Settings.get()'],['../classpyrax_1_1autoscale_1_1AutoScalePolicy.html#a444a1328efb32d5d9d2dcb2efe855d3b',1,'pyrax::autoscale::AutoScalePolicy.get()'],['../classpyrax_1_1autoscale_1_1AutoScaleWebhook.html#a444a1328efb32d5d9d2dcb2efe855d3b',1,'pyrax::autoscale::AutoScaleWebhook.get()'],['../classpyrax_1_1cf__wrapper_1_1storage__object_1_1StorageObject.html#a444a1328efb32d5d9d2dcb2efe855d3b',1,'pyrax::cf_wrapper::storage_object::StorageObject.get()'],['../classpyrax_1_1client_1_1BaseClient.html#a444a1328efb32d5d9d2dcb2efe855d3b',1,'pyrax::client::BaseClient.get()'],['../classpyrax_1_1clouddatabases_1_1CloudDatabaseVolume.html#a444a1328efb32d5d9d2dcb2efe855d3b',1,'pyrax::clouddatabases::CloudDatabaseVolume.get()'],['../classpyrax_1_1clouddatabases_1_1CloudDatabaseManager.html#a444a1328efb32d5d9d2dcb2efe855d3b',1,'pyrax::clouddatabases::CloudDatabaseManager.get()'],['../classpyrax_1_1clouddatabases_1_1CloudDatabaseInstance.html#a444a1328efb32d5d9d2dcb2efe855d3b',1,'pyrax::clouddatabases::CloudDatabaseInstance.get()'],['../classpyrax_1_1clouddns_1_1CloudDNSRecord.html#a444a1328efb32d5d9d2dcb2efe855d3b',1,'pyrax::clouddns::CloudDNSRecord.get()'],['../classpyrax_1_1cloudmonitoring_1_1CloudMonitorCheck.html#a444a1328efb32d5d9d2dcb2efe855d3b',1,'pyrax::cloudmonitoring::CloudMonitorCheck.get()'],['../classpyrax_1_1cloudmonitoring_1_1CloudMonitorAlarm.html#a444a1328efb32d5d9d2dcb2efe855d3b',1,'pyrax::cloudmonitoring::CloudMonitorAlarm.get()'],['../classpyrax_1_1cloudmonitoring_1_1CloudMonitorClient.html#a444a1328efb32d5d9d2dcb2efe855d3b',1,'pyrax::cloudmonitoring::CloudMonitorClient.get()'],['../classpyrax_1_1cloudnetworks_1_1CloudNetwork.html#a444a1328efb32d5d9d2dcb2efe855d3b',1,'pyrax::cloudnetworks::CloudNetwork.get()'],['../classpyrax_1_1manager_1_1BaseManager.html#a444a1328efb32d5d9d2dcb2efe855d3b',1,'pyrax::manager::BaseManager.get()'],['../classpyrax_1_1resource_1_1BaseResource.html#a444a1328efb32d5d9d2dcb2efe855d3b',1,'pyrax::resource::BaseResource.get()']]], ['get_5fabsolute_5flimits',['get_absolute_limits',['../classpyrax_1_1clouddns_1_1CloudDNSClient.html#af5584781384edbc4caa037fbc9749092',1,'pyrax::clouddns::CloudDNSClient']]], ['get_5faccess_5flist',['get_access_list',['../classpyrax_1_1cloudloadbalancers_1_1CloudLoadBalancer.html#a3aa1b2aa693e56eb9ff1535ca86c3c7c',1,'pyrax::cloudloadbalancers::CloudLoadBalancer.get_access_list()'],['../classpyrax_1_1cloudloadbalancers_1_1CloudLoadBalancerManager.html#a3aa1b2aa693e56eb9ff1535ca86c3c7c',1,'pyrax::cloudloadbalancers::CloudLoadBalancerManager.get_access_list()'],['../classpyrax_1_1cloudloadbalancers_1_1CloudLoadBalancerClient.html#a3aa1b2aa693e56eb9ff1535ca86c3c7c',1,'pyrax::cloudloadbalancers::CloudLoadBalancerClient.get_access_list()']]], + ['get_5faccount',['get_account',['../classpyrax_1_1cloudmonitoring_1_1CloudMonitorClient.html#a4d751385e14b90deacafe71308ee04dc',1,'pyrax::cloudmonitoring::CloudMonitorClient']]], ['get_5faccount_5fmetadata',['get_account_metadata',['../classpyrax_1_1cf__wrapper_1_1client_1_1CFClient.html#a1db54cea98fd675f9e1f88ebb4c14246',1,'pyrax::cf_wrapper::client::CFClient']]], + ['get_5falarm',['get_alarm',['../classpyrax_1_1cloudmonitoring_1_1CloudMonitorEntity.html#a0efb17866082d1efd4697a8414e61d22',1,'pyrax::cloudmonitoring::CloudMonitorEntity.get_alarm()'],['../classpyrax_1_1cloudmonitoring_1_1CloudMonitorEntityManager.html#a0efb17866082d1efd4697a8414e61d22',1,'pyrax::cloudmonitoring::CloudMonitorEntityManager.get_alarm()'],['../classpyrax_1_1cloudmonitoring_1_1CloudMonitorClient.html#a0efb17866082d1efd4697a8414e61d22',1,'pyrax::cloudmonitoring::CloudMonitorClient.get_alarm()']]], ['get_5fall_5fcontainers',['get_all_containers',['../classpyrax_1_1cf__wrapper_1_1client_1_1CFClient.html#ae413c04282e2a1f584d7b99bbea09b54',1,'pyrax::cf_wrapper::client::CFClient']]], + ['get_5faudits',['get_audits',['../classpyrax_1_1cloudmonitoring_1_1CloudMonitorClient.html#ad18caa6ffb1e5081c9aa71d04a434ce6',1,'pyrax::cloudmonitoring::CloudMonitorClient']]], + ['get_5fcheck',['get_check',['../classpyrax_1_1cloudmonitoring_1_1CloudMonitorEntityManager.html#a663e1c9857cbc0bf083314e6404e976f',1,'pyrax::cloudmonitoring::CloudMonitorEntityManager.get_check()'],['../classpyrax_1_1cloudmonitoring_1_1CloudMonitorClient.html#a663e1c9857cbc0bf083314e6404e976f',1,'pyrax::cloudmonitoring::CloudMonitorClient.get_check()']]], + ['get_5fcheck_5ftype',['get_check_type',['../classpyrax_1_1cloudmonitoring_1_1CloudMonitorClient.html#a4ec84467f00cf7b6b321984347025d14',1,'pyrax::cloudmonitoring::CloudMonitorClient']]], ['get_5fchecksum',['get_checksum',['../namespacepyrax_1_1utils.html#a9e1881e14792f2c07dd799fd7b9d53d1',1,'pyrax::utils']]], + ['get_5fconfiguration',['get_configuration',['../classpyrax_1_1autoscale_1_1ScalingGroup.html#a4765b6651625ae1a9e0b6170c0cfe447',1,'pyrax::autoscale::ScalingGroup.get_configuration()'],['../classpyrax_1_1autoscale_1_1ScalingGroupManager.html#a4765b6651625ae1a9e0b6170c0cfe447',1,'pyrax::autoscale::ScalingGroupManager.get_configuration()'],['../classpyrax_1_1autoscale_1_1AutoScaleClient.html#a4765b6651625ae1a9e0b6170c0cfe447',1,'pyrax::autoscale::AutoScaleClient.get_configuration()']]], ['get_5fconnection_5flogging',['get_connection_logging',['../classpyrax_1_1cloudloadbalancers_1_1CloudLoadBalancerManager.html#ab259705d7fd79cee133de68e9b29846b',1,'pyrax::cloudloadbalancers::CloudLoadBalancerManager.get_connection_logging()'],['../classpyrax_1_1cloudloadbalancers_1_1CloudLoadBalancerClient.html#ab259705d7fd79cee133de68e9b29846b',1,'pyrax::cloudloadbalancers::CloudLoadBalancerClient.get_connection_logging()']]], ['get_5fconnection_5fthrottle',['get_connection_throttle',['../classpyrax_1_1cloudloadbalancers_1_1CloudLoadBalancer.html#a3caddfe1f948f22c3926b810485bd645',1,'pyrax::cloudloadbalancers::CloudLoadBalancer.get_connection_throttle()'],['../classpyrax_1_1cloudloadbalancers_1_1CloudLoadBalancerManager.html#a3caddfe1f948f22c3926b810485bd645',1,'pyrax::cloudloadbalancers::CloudLoadBalancerManager.get_connection_throttle()'],['../classpyrax_1_1cloudloadbalancers_1_1CloudLoadBalancerClient.html#a3caddfe1f948f22c3926b810485bd645',1,'pyrax::cloudloadbalancers::CloudLoadBalancerClient.get_connection_throttle()']]], ['get_5fcontainer',['get_container',['../classpyrax_1_1cf__wrapper_1_1client_1_1CFClient.html#ade2af720b771c722f092076b29a0ef64',1,'pyrax::cf_wrapper::client::CFClient']]], @@ -22,6 +28,7 @@ var searchData= ['get_5fdevice',['get_device',['../classpyrax_1_1cloudloadbalancers_1_1Node.html#aab56944ec3d6d817943ee557024ac816',1,'pyrax::cloudloadbalancers::Node']]], ['get_5fdomain_5fiterator',['get_domain_iterator',['../classpyrax_1_1clouddns_1_1CloudDNSClient.html#a603939fc833c990994af7e8cfaad5eda',1,'pyrax::clouddns::CloudDNSClient']]], ['get_5fencoding',['get_encoding',['../namespacepyrax.html#a449ca982d93692884375caa2d609b3b0',1,'pyrax']]], + ['get_5fentity',['get_entity',['../classpyrax_1_1cloudmonitoring_1_1CloudMonitorClient.html#abcac27d2971fd953186cc9c556e5b6c1',1,'pyrax::cloudmonitoring::CloudMonitorClient']]], ['get_5fenvironment',['get_environment',['../namespacepyrax.html#a9850c29c666aa2f53d8ba560897855f8',1,'pyrax']]], ['get_5ferror_5fpage',['get_error_page',['../classpyrax_1_1cloudloadbalancers_1_1CloudLoadBalancer.html#a6504e1c0199cc9b8f58a3bf38eaf4f62',1,'pyrax::cloudloadbalancers::CloudLoadBalancer.get_error_page()'],['../classpyrax_1_1cloudloadbalancers_1_1CloudLoadBalancerManager.html#a6504e1c0199cc9b8f58a3bf38eaf4f62',1,'pyrax::cloudloadbalancers::CloudLoadBalancerManager.get_error_page()'],['../classpyrax_1_1cloudloadbalancers_1_1CloudLoadBalancerClient.html#a6504e1c0199cc9b8f58a3bf38eaf4f62',1,'pyrax::cloudloadbalancers::CloudLoadBalancerClient.get_error_page()']]], ['get_5fextensions',['get_extensions',['../classpyrax_1_1base__identity_1_1BaseAuth.html#ab5a28d881fa99dd93c68bc1daf9e6710',1,'pyrax::base_identity::BaseAuth']]], @@ -30,13 +37,21 @@ var searchData= ['get_5fhttp_5fdebug',['get_http_debug',['../namespacepyrax.html#a2766ee16854adf9575c29ac661f447fd',1,'pyrax']]], ['get_5fid',['get_id',['../namespacepyrax_1_1utils.html#a9cc7cce8ec3ad4b58c806254ca8ea58e',1,'pyrax::utils']]], ['get_5finfo',['get_info',['../classpyrax_1_1cf__wrapper_1_1client_1_1CFClient.html#a384aea54f97656a3742b60bae861bc34',1,'pyrax::cf_wrapper::client::CFClient']]], + ['get_5flaunch_5fconfig',['get_launch_config',['../classpyrax_1_1autoscale_1_1ScalingGroup.html#ae370445e311ea96ab9b0bdfbc3eafa38',1,'pyrax::autoscale::ScalingGroup.get_launch_config()'],['../classpyrax_1_1autoscale_1_1ScalingGroupManager.html#ae370445e311ea96ab9b0bdfbc3eafa38',1,'pyrax::autoscale::ScalingGroupManager.get_launch_config()'],['../classpyrax_1_1autoscale_1_1AutoScaleClient.html#ae370445e311ea96ab9b0bdfbc3eafa38',1,'pyrax::autoscale::AutoScaleClient.get_launch_config()']]], + ['get_5flimits',['get_limits',['../classpyrax_1_1cloudmonitoring_1_1CloudMonitorClient.html#ab5ef84a0682afc9a357f6e76b15f1640',1,'pyrax::cloudmonitoring::CloudMonitorClient']]], ['get_5fmetadata',['get_metadata',['../classpyrax_1_1cf__wrapper_1_1container_1_1Container.html#abc9975b34823bfba383eb240ecde3783',1,'pyrax::cf_wrapper::container::Container.get_metadata()'],['../classpyrax_1_1cf__wrapper_1_1storage__object_1_1StorageObject.html#abc9975b34823bfba383eb240ecde3783',1,'pyrax::cf_wrapper::storage_object::StorageObject.get_metadata()'],['../classpyrax_1_1cloudloadbalancers_1_1CloudLoadBalancer.html#abc9975b34823bfba383eb240ecde3783',1,'pyrax::cloudloadbalancers::CloudLoadBalancer.get_metadata()'],['../classpyrax_1_1cloudloadbalancers_1_1CloudLoadBalancerManager.html#abc9975b34823bfba383eb240ecde3783',1,'pyrax::cloudloadbalancers::CloudLoadBalancerManager.get_metadata()'],['../classpyrax_1_1cloudloadbalancers_1_1Node.html#abc9975b34823bfba383eb240ecde3783',1,'pyrax::cloudloadbalancers::Node.get_metadata()'],['../classpyrax_1_1cloudloadbalancers_1_1CloudLoadBalancerClient.html#abc9975b34823bfba383eb240ecde3783',1,'pyrax::cloudloadbalancers::CloudLoadBalancerClient.get_metadata()']]], ['get_5fmetadata_5ffor_5fnode',['get_metadata_for_node',['../classpyrax_1_1cloudloadbalancers_1_1CloudLoadBalancer.html#aebfb9c2caec7532153b2558fe14347cf',1,'pyrax::cloudloadbalancers::CloudLoadBalancer.get_metadata_for_node()'],['../classpyrax_1_1cloudloadbalancers_1_1CloudLoadBalancerClient.html#aebfb9c2caec7532153b2558fe14347cf',1,'pyrax::cloudloadbalancers::CloudLoadBalancerClient.get_metadata_for_node()']]], + ['get_5fmetric_5fdata_5fpoints',['get_metric_data_points',['../classpyrax_1_1cloudmonitoring_1_1CloudMonitorEntity.html#a58698bf0d5e72dc683fcf9384d110d69',1,'pyrax::cloudmonitoring::CloudMonitorEntity.get_metric_data_points()'],['../classpyrax_1_1cloudmonitoring_1_1CloudMonitorEntityManager.html#a58698bf0d5e72dc683fcf9384d110d69',1,'pyrax::cloudmonitoring::CloudMonitorEntityManager.get_metric_data_points()'],['../classpyrax_1_1cloudmonitoring_1_1CloudMonitorCheck.html#a58698bf0d5e72dc683fcf9384d110d69',1,'pyrax::cloudmonitoring::CloudMonitorCheck.get_metric_data_points()'],['../classpyrax_1_1cloudmonitoring_1_1CloudMonitorClient.html#a58698bf0d5e72dc683fcf9384d110d69',1,'pyrax::cloudmonitoring::CloudMonitorClient.get_metric_data_points()']]], + ['get_5fmonitoring_5fzone',['get_monitoring_zone',['../classpyrax_1_1cloudmonitoring_1_1CloudMonitorClient.html#a264e06827aca6792c0bb9342703b90f6',1,'pyrax::cloudmonitoring::CloudMonitorClient']]], ['get_5fname',['get_name',['../namespacepyrax_1_1utils.html#ac4bcbc47a32f87bf9ee5b3a6a6ca92c3',1,'pyrax::utils']]], + ['get_5fnotification',['get_notification',['../classpyrax_1_1cloudmonitoring_1_1CloudMonitorClient.html#a1bb5691ae7d569885d7ccfda53ccf269',1,'pyrax::cloudmonitoring::CloudMonitorClient']]], + ['get_5fnotification_5fplan',['get_notification_plan',['../classpyrax_1_1cloudmonitoring_1_1CloudMonitorClient.html#a4cacea89acad7d3a81d2c454b7898918',1,'pyrax::cloudmonitoring::CloudMonitorClient']]], + ['get_5fnotification_5ftype',['get_notification_type',['../classpyrax_1_1cloudmonitoring_1_1CloudMonitorClient.html#a26c32a682d8efbdfd220d8bd9847b35c',1,'pyrax::cloudmonitoring::CloudMonitorClient']]], ['get_5fobject',['get_object',['../classpyrax_1_1cf__wrapper_1_1client_1_1CFClient.html#af1075eab57e4a3c67fe8d474080407a8',1,'pyrax::cf_wrapper::client::CFClient.get_object()'],['../classpyrax_1_1cf__wrapper_1_1container_1_1Container.html#af1075eab57e4a3c67fe8d474080407a8',1,'pyrax::cf_wrapper::container::Container.get_object()']]], ['get_5fobject_5fmetadata',['get_object_metadata',['../classpyrax_1_1cf__wrapper_1_1client_1_1CFClient.html#a14818405852da98a0911326ab3277d1c',1,'pyrax::cf_wrapper::client::CFClient']]], ['get_5fobject_5fnames',['get_object_names',['../classpyrax_1_1cf__wrapper_1_1container_1_1Container.html#a1ffef9ff929707223146f6c5373e2a14',1,'pyrax::cf_wrapper::container::Container']]], ['get_5fobjects',['get_objects',['../classpyrax_1_1cf__wrapper_1_1container_1_1Container.html#ace264467ad390fd60316148647ce727d',1,'pyrax::cf_wrapper::container::Container']]], + ['get_5fpolicy',['get_policy',['../classpyrax_1_1autoscale_1_1ScalingGroup.html#aa662316cf0fa9ef74979b592d7750dd1',1,'pyrax::autoscale::ScalingGroup.get_policy()'],['../classpyrax_1_1autoscale_1_1ScalingGroupManager.html#aa662316cf0fa9ef74979b592d7750dd1',1,'pyrax::autoscale::ScalingGroupManager.get_policy()'],['../classpyrax_1_1autoscale_1_1AutoScaleClient.html#aa662316cf0fa9ef74979b592d7750dd1',1,'pyrax::autoscale::AutoScaleClient.get_policy()']]], ['get_5frate_5flimits',['get_rate_limits',['../classpyrax_1_1clouddns_1_1CloudDNSClient.html#ad8f1598d944faa1ec2370da5aa7ec4b2',1,'pyrax::clouddns::CloudDNSClient']]], ['get_5frecord',['get_record',['../classpyrax_1_1clouddns_1_1CloudDNSDomain.html#acd6f2e6f8bdc1c8f65d8dffbb6631445',1,'pyrax::clouddns::CloudDNSDomain.get_record()'],['../classpyrax_1_1clouddns_1_1CloudDNSManager.html#acd6f2e6f8bdc1c8f65d8dffbb6631445',1,'pyrax::clouddns::CloudDNSManager.get_record()']]], ['get_5frecord_5fiterator',['get_record_iterator',['../classpyrax_1_1clouddns_1_1CloudDNSClient.html#a38d5a3c229056eace4cb75dd89b40f7e',1,'pyrax::clouddns::CloudDNSClient']]], @@ -44,6 +59,7 @@ var searchData= ['get_5fsession_5fpersistence',['get_session_persistence',['../classpyrax_1_1cloudloadbalancers_1_1CloudLoadBalancerManager.html#af4f3803b4fa49d7a440977b0c5b5427d',1,'pyrax::cloudloadbalancers::CloudLoadBalancerManager.get_session_persistence()'],['../classpyrax_1_1cloudloadbalancers_1_1CloudLoadBalancerClient.html#af4f3803b4fa49d7a440977b0c5b5427d',1,'pyrax::cloudloadbalancers::CloudLoadBalancerClient.get_session_persistence()']]], ['get_5fsetting',['get_setting',['../namespacepyrax.html#a5dbd20ff4ad6c1590c1c4723852763da',1,'pyrax']]], ['get_5fssl_5ftermination',['get_ssl_termination',['../classpyrax_1_1cloudloadbalancers_1_1CloudLoadBalancer.html#adbf49e882fc9a7b55f38fd6213440d50',1,'pyrax::cloudloadbalancers::CloudLoadBalancer.get_ssl_termination()'],['../classpyrax_1_1cloudloadbalancers_1_1CloudLoadBalancerManager.html#adbf49e882fc9a7b55f38fd6213440d50',1,'pyrax::cloudloadbalancers::CloudLoadBalancerManager.get_ssl_termination()'],['../classpyrax_1_1cloudloadbalancers_1_1CloudLoadBalancerClient.html#adbf49e882fc9a7b55f38fd6213440d50',1,'pyrax::cloudloadbalancers::CloudLoadBalancerClient.get_ssl_termination()']]], + ['get_5fstate',['get_state',['../classpyrax_1_1autoscale_1_1ScalingGroup.html#adc4030ba0851f007b904cc254c2cb489',1,'pyrax::autoscale::ScalingGroup.get_state()'],['../classpyrax_1_1autoscale_1_1ScalingGroupManager.html#adc4030ba0851f007b904cc254c2cb489',1,'pyrax::autoscale::ScalingGroupManager.get_state()'],['../classpyrax_1_1autoscale_1_1AutoScaleClient.html#adc4030ba0851f007b904cc254c2cb489',1,'pyrax::autoscale::AutoScaleClient.get_state()']]], ['get_5fstats',['get_stats',['../classpyrax_1_1cloudloadbalancers_1_1CloudLoadBalancerManager.html#a46cdb2ba90b6fff4c5cf4d76ae0a1697',1,'pyrax::cloudloadbalancers::CloudLoadBalancerManager']]], ['get_5fsubdomain_5fiterator',['get_subdomain_iterator',['../classpyrax_1_1clouddns_1_1CloudDNSClient.html#ac532463e7fb1cbb0a17181a816460adc',1,'pyrax::clouddns::CloudDNSClient']]], ['get_5ftemp_5furl',['get_temp_url',['../classpyrax_1_1cf__wrapper_1_1client_1_1CFClient.html#a26cd51b10d04d2f632fc6f12fa2e3b43',1,'pyrax::cf_wrapper::client::CFClient.get_temp_url()'],['../classpyrax_1_1cf__wrapper_1_1container_1_1Container.html#a26cd51b10d04d2f632fc6f12fa2e3b43',1,'pyrax::cf_wrapper::container::Container.get_temp_url()'],['../classpyrax_1_1cf__wrapper_1_1storage__object_1_1StorageObject.html#a26cd51b10d04d2f632fc6f12fa2e3b43',1,'pyrax::cf_wrapper::storage_object::StorageObject.get_temp_url()']]], @@ -52,9 +68,11 @@ var searchData= ['get_5ftimings',['get_timings',['../classpyrax_1_1client_1_1BaseClient.html#ac6afa2de729057e4864e897292b3f9cb',1,'pyrax::client::BaseClient']]], ['get_5ftoken',['get_token',['../classpyrax_1_1base__identity_1_1BaseAuth.html#ab99f34de8275c77cf5ff09b1d7d0a04a',1,'pyrax::base_identity::BaseAuth.get_token()'],['../classpyrax_1_1service__catalog_1_1ServiceCatalog.html#ab99f34de8275c77cf5ff09b1d7d0a04a',1,'pyrax::service_catalog::ServiceCatalog.get_token()']]], ['get_5ftoken_5fendpoints',['get_token_endpoints',['../classpyrax_1_1base__identity_1_1BaseAuth.html#aeab174eb893dbbd0e84bfa5101e9e9a1',1,'pyrax::base_identity::BaseAuth']]], + ['get_5ftype',['get_type',['../classpyrax_1_1cloudmonitoring_1_1CloudMonitorNotificationManager.html#a0ef321a485de87e39ea78ebd3ba31b23',1,'pyrax::cloudmonitoring::CloudMonitorNotificationManager']]], ['get_5fuploaded',['get_uploaded',['../classpyrax_1_1cf__wrapper_1_1client_1_1CFClient.html#a537487e2f2dabc8103e2006739cbeb0e',1,'pyrax::cf_wrapper::client::CFClient']]], ['get_5fusage',['get_usage',['../classpyrax_1_1cloudloadbalancers_1_1CloudLoadBalancer.html#a7a26606bf20204d1650ddad60fb25a3b',1,'pyrax::cloudloadbalancers::CloudLoadBalancer.get_usage()'],['../classpyrax_1_1cloudloadbalancers_1_1CloudLoadBalancerManager.html#a7a26606bf20204d1650ddad60fb25a3b',1,'pyrax::cloudloadbalancers::CloudLoadBalancerManager.get_usage()'],['../classpyrax_1_1cloudloadbalancers_1_1CloudLoadBalancerClient.html#a7a26606bf20204d1650ddad60fb25a3b',1,'pyrax::cloudloadbalancers::CloudLoadBalancerClient.get_usage()']]], ['get_5fuser',['get_user',['../classpyrax_1_1clouddatabases_1_1CloudDatabaseInstance.html#a1090fc6dec8ecff76b4f98b2d028401e',1,'pyrax::clouddatabases::CloudDatabaseInstance.get_user()'],['../classpyrax_1_1clouddatabases_1_1CloudDatabaseClient.html#a1090fc6dec8ecff76b4f98b2d028401e',1,'pyrax::clouddatabases::CloudDatabaseClient.get_user()']]], ['get_5fuser_5fcredentials',['get_user_credentials',['../classpyrax_1_1identity_1_1rax__identity_1_1RaxIdentity.html#a65208fe274391d93c31231f9729f4d49',1,'pyrax::identity::rax_identity::RaxIdentity']]], + ['get_5fwebhook',['get_webhook',['../classpyrax_1_1autoscale_1_1ScalingGroupManager.html#a2d724ad561fe9d53d1cbf1a86ecf5bfa',1,'pyrax::autoscale::ScalingGroupManager.get_webhook()'],['../classpyrax_1_1autoscale_1_1AutoScalePolicy.html#a2d724ad561fe9d53d1cbf1a86ecf5bfa',1,'pyrax::autoscale::AutoScalePolicy.get_webhook()'],['../classpyrax_1_1autoscale_1_1AutoScaleClient.html#a2d724ad561fe9d53d1cbf1a86ecf5bfa',1,'pyrax::autoscale::AutoScaleClient.get_webhook()']]], ['grant_5fuser_5faccess',['grant_user_access',['../classpyrax_1_1clouddatabases_1_1CloudDatabaseUserManager.html#a5f0d96262a0ff5432f3f9f0552a1e13f',1,'pyrax::clouddatabases::CloudDatabaseUserManager.grant_user_access()'],['../classpyrax_1_1clouddatabases_1_1CloudDatabaseInstance.html#a5f0d96262a0ff5432f3f9f0552a1e13f',1,'pyrax::clouddatabases::CloudDatabaseInstance.grant_user_access()'],['../classpyrax_1_1clouddatabases_1_1CloudDatabaseUser.html#a5f0d96262a0ff5432f3f9f0552a1e13f',1,'pyrax::clouddatabases::CloudDatabaseUser.grant_user_access()'],['../classpyrax_1_1clouddatabases_1_1CloudDatabaseClient.html#a5f0d96262a0ff5432f3f9f0552a1e13f',1,'pyrax::clouddatabases::CloudDatabaseClient.grant_user_access()']]] ]; diff --git a/docs/html/search/all_69.js b/docs/html/search/all_69.js index 17805219..6826d952 100644 --- a/docs/html/search/all_69.js +++ b/docs/html/search/all_69.js @@ -15,7 +15,12 @@ var searchData= ['invalidcredentialfile',['InvalidCredentialFile',['../classpyrax_1_1exceptions_1_1InvalidCredentialFile.html',1,'pyrax::exceptions']]], ['invaliddatetimestring',['InvalidDateTimeString',['../classpyrax_1_1exceptions_1_1InvalidDateTimeString.html',1,'pyrax::exceptions']]], ['invaliddevicetype',['InvalidDeviceType',['../classpyrax_1_1exceptions_1_1InvalidDeviceType.html',1,'pyrax::exceptions']]], + ['invalidloadbalancer',['InvalidLoadBalancer',['../classpyrax_1_1exceptions_1_1InvalidLoadBalancer.html',1,'pyrax::exceptions']]], ['invalidloadbalancerparameters',['InvalidLoadBalancerParameters',['../classpyrax_1_1exceptions_1_1InvalidLoadBalancerParameters.html',1,'pyrax::exceptions']]], + ['invalidmonitoringcheckdetails',['InvalidMonitoringCheckDetails',['../classpyrax_1_1exceptions_1_1InvalidMonitoringCheckDetails.html',1,'pyrax::exceptions']]], + ['invalidmonitoringcheckupdate',['InvalidMonitoringCheckUpdate',['../classpyrax_1_1exceptions_1_1InvalidMonitoringCheckUpdate.html',1,'pyrax::exceptions']]], + ['invalidmonitoringmetricsrequest',['InvalidMonitoringMetricsRequest',['../classpyrax_1_1exceptions_1_1InvalidMonitoringMetricsRequest.html',1,'pyrax::exceptions']]], + ['invalidmonitoringmetricsresolution',['InvalidMonitoringMetricsResolution',['../classpyrax_1_1exceptions_1_1InvalidMonitoringMetricsResolution.html',1,'pyrax::exceptions']]], ['invalidnodecondition',['InvalidNodeCondition',['../classpyrax_1_1exceptions_1_1InvalidNodeCondition.html',1,'pyrax::exceptions']]], ['invalidnodeparameters',['InvalidNodeParameters',['../classpyrax_1_1exceptions_1_1InvalidNodeParameters.html',1,'pyrax::exceptions']]], ['invalidptrrecord',['InvalidPTRRecord',['../classpyrax_1_1exceptions_1_1InvalidPTRRecord.html',1,'pyrax::exceptions']]], diff --git a/docs/html/search/all_6c.js b/docs/html/search/all_6c.js index 1db25cd0..61c0e2ce 100644 --- a/docs/html/search/all_6c.js +++ b/docs/html/search/all_6c.js @@ -2,15 +2,25 @@ var searchData= [ ['label',['label',['../classpyrax_1_1cloudnetworks_1_1CloudNetwork.html#a22f45a3cb4f074e609f58ebaeef0ecf9',1,'pyrax::cloudnetworks::CloudNetwork']]], ['last_5fmodified',['last_modified',['../classpyrax_1_1cf__wrapper_1_1storage__object_1_1StorageObject.html#aacadc30373e677c508e7b598fe832e32',1,'pyrax::cf_wrapper::storage_object::StorageObject']]], - ['list',['list',['../classpyrax_1_1client_1_1BaseClient.html#a9b522b4ef7526bfa60b78fe735caa55c',1,'pyrax::client::BaseClient.list()'],['../classpyrax_1_1clouddns_1_1CloudDNSManager.html#a9b522b4ef7526bfa60b78fe735caa55c',1,'pyrax::clouddns::CloudDNSManager.list()'],['../classpyrax_1_1clouddns_1_1CloudDNSClient.html#a9b522b4ef7526bfa60b78fe735caa55c',1,'pyrax::clouddns::CloudDNSClient.list()'],['../classpyrax_1_1manager_1_1BaseManager.html#a9b522b4ef7526bfa60b78fe735caa55c',1,'pyrax::manager::BaseManager.list()']]], + ['list',['list',['../classpyrax_1_1client_1_1BaseClient.html#a9b522b4ef7526bfa60b78fe735caa55c',1,'pyrax::client::BaseClient.list()'],['../classpyrax_1_1clouddns_1_1CloudDNSManager.html#a9b522b4ef7526bfa60b78fe735caa55c',1,'pyrax::clouddns::CloudDNSManager.list()'],['../classpyrax_1_1clouddns_1_1CloudDNSClient.html#a9b522b4ef7526bfa60b78fe735caa55c',1,'pyrax::clouddns::CloudDNSClient.list()'],['../classpyrax_1_1cloudmonitoring_1_1CloudMonitorClient.html#a9b522b4ef7526bfa60b78fe735caa55c',1,'pyrax::cloudmonitoring::CloudMonitorClient.list()'],['../classpyrax_1_1manager_1_1BaseManager.html#a9b522b4ef7526bfa60b78fe735caa55c',1,'pyrax::manager::BaseManager.list()']]], + ['list_5falarms',['list_alarms',['../classpyrax_1_1cloudmonitoring_1_1CloudMonitorEntity.html#aba03029cc0b951e300763dfb7b374b8f',1,'pyrax::cloudmonitoring::CloudMonitorEntity.list_alarms()'],['../classpyrax_1_1cloudmonitoring_1_1CloudMonitorEntityManager.html#aba03029cc0b951e300763dfb7b374b8f',1,'pyrax::cloudmonitoring::CloudMonitorEntityManager.list_alarms()'],['../classpyrax_1_1cloudmonitoring_1_1CloudMonitorClient.html#aba03029cc0b951e300763dfb7b374b8f',1,'pyrax::cloudmonitoring::CloudMonitorClient.list_alarms()']]], + ['list_5fcheck_5ftypes',['list_check_types',['../classpyrax_1_1cloudmonitoring_1_1CloudMonitorClient.html#a360142ff4cbb495a8e5ba41b9c810a8b',1,'pyrax::cloudmonitoring::CloudMonitorClient']]], + ['list_5fchecks',['list_checks',['../classpyrax_1_1cloudmonitoring_1_1CloudMonitorEntity.html#aedd0a1ae642c3f9e56df9bb5a1e1384c',1,'pyrax::cloudmonitoring::CloudMonitorEntity.list_checks()'],['../classpyrax_1_1cloudmonitoring_1_1CloudMonitorEntityManager.html#aedd0a1ae642c3f9e56df9bb5a1e1384c',1,'pyrax::cloudmonitoring::CloudMonitorEntityManager.list_checks()'],['../classpyrax_1_1cloudmonitoring_1_1CloudMonitorClient.html#aedd0a1ae642c3f9e56df9bb5a1e1384c',1,'pyrax::cloudmonitoring::CloudMonitorClient.list_checks()']]], ['list_5fcontainers',['list_containers',['../classpyrax_1_1cf__wrapper_1_1client_1_1CFClient.html#a43f33f69f2026d24a426ce6f6cdc11f9',1,'pyrax::cf_wrapper::client::CFClient']]], ['list_5fcontainers_5finfo',['list_containers_info',['../classpyrax_1_1cf__wrapper_1_1client_1_1CFClient.html#ac56c2c448f1e4c975621d2921bfb1e9c',1,'pyrax::cf_wrapper::client::CFClient']]], ['list_5fcredentials',['list_credentials',['../classpyrax_1_1identity_1_1rax__identity_1_1RaxIdentity.html#a752ff9d933b98fdeb87b51a7409f6d4a',1,'pyrax::identity::rax_identity::RaxIdentity']]], ['list_5fdatabases',['list_databases',['../classpyrax_1_1clouddatabases_1_1CloudDatabaseInstance.html#ae180be633edf68a4a6599e8c64310c5f',1,'pyrax::clouddatabases::CloudDatabaseInstance.list_databases()'],['../classpyrax_1_1clouddatabases_1_1CloudDatabaseClient.html#ae180be633edf68a4a6599e8c64310c5f',1,'pyrax::clouddatabases::CloudDatabaseClient.list_databases()']]], + ['list_5fentities',['list_entities',['../classpyrax_1_1cloudmonitoring_1_1CloudMonitorClient.html#a03cd18f945d37d5cb1e0dc666b23ed3a',1,'pyrax::cloudmonitoring::CloudMonitorClient']]], ['list_5fenvironments',['list_environments',['../namespacepyrax.html#aaf4742684739d9a72d01f13093dc9a87',1,'pyrax']]], ['list_5fflavors',['list_flavors',['../classpyrax_1_1clouddatabases_1_1CloudDatabaseClient.html#ad54dc84b9febeac129b211c63c636612',1,'pyrax::clouddatabases::CloudDatabaseClient']]], ['list_5fmethod',['list_method',['../classpyrax_1_1clouddns_1_1DomainResultsIterator.html#aef1de03914a0c0e4a1e69d43e72a4dbc',1,'pyrax::clouddns::DomainResultsIterator::list_method()'],['../classpyrax_1_1clouddns_1_1SubdomainResultsIterator.html#aef1de03914a0c0e4a1e69d43e72a4dbc',1,'pyrax::clouddns::SubdomainResultsIterator::list_method()'],['../classpyrax_1_1clouddns_1_1RecordResultsIterator.html#aef1de03914a0c0e4a1e69d43e72a4dbc',1,'pyrax::clouddns::RecordResultsIterator::list_method()']]], + ['list_5fmetrics',['list_metrics',['../classpyrax_1_1cloudmonitoring_1_1CloudMonitorEntity.html#af232f5b9467cd7214f217a3fe6d51473',1,'pyrax::cloudmonitoring::CloudMonitorEntity.list_metrics()'],['../classpyrax_1_1cloudmonitoring_1_1CloudMonitorEntityManager.html#af232f5b9467cd7214f217a3fe6d51473',1,'pyrax::cloudmonitoring::CloudMonitorEntityManager.list_metrics()'],['../classpyrax_1_1cloudmonitoring_1_1CloudMonitorCheck.html#af232f5b9467cd7214f217a3fe6d51473',1,'pyrax::cloudmonitoring::CloudMonitorCheck.list_metrics()'],['../classpyrax_1_1cloudmonitoring_1_1CloudMonitorClient.html#af232f5b9467cd7214f217a3fe6d51473',1,'pyrax::cloudmonitoring::CloudMonitorClient.list_metrics()']]], + ['list_5fmonitoring_5fzones',['list_monitoring_zones',['../classpyrax_1_1cloudmonitoring_1_1CloudMonitorClient.html#aa4b0e32f41ba11a5cd20dd43a9fc7c66',1,'pyrax::cloudmonitoring::CloudMonitorClient']]], ['list_5fnext_5fpage',['list_next_page',['../classpyrax_1_1clouddns_1_1CloudDNSManager.html#acc587f3fc63273a1236d635f463edb91',1,'pyrax::clouddns::CloudDNSManager.list_next_page()'],['../classpyrax_1_1clouddns_1_1CloudDNSClient.html#acc587f3fc63273a1236d635f463edb91',1,'pyrax::clouddns::CloudDNSClient.list_next_page()']]], + ['list_5fnotification_5fplans',['list_notification_plans',['../classpyrax_1_1cloudmonitoring_1_1CloudMonitorClient.html#ab92b8049f19f558a86a40457f9834d5e',1,'pyrax::cloudmonitoring::CloudMonitorClient']]], + ['list_5fnotification_5ftypes',['list_notification_types',['../classpyrax_1_1cloudmonitoring_1_1CloudMonitorClient.html#adafe19263bf8b2cd365c36b887911fdb',1,'pyrax::cloudmonitoring::CloudMonitorClient']]], + ['list_5fnotifications',['list_notifications',['../classpyrax_1_1cloudmonitoring_1_1CloudMonitorClient.html#ab41b40cc23d232c8f4839759ae7fb69f',1,'pyrax::cloudmonitoring::CloudMonitorClient']]], + ['list_5fpolicies',['list_policies',['../classpyrax_1_1autoscale_1_1ScalingGroup.html#a2a31cdad32539c5616c914d25747a74a',1,'pyrax::autoscale::ScalingGroup.list_policies()'],['../classpyrax_1_1autoscale_1_1ScalingGroupManager.html#a2a31cdad32539c5616c914d25747a74a',1,'pyrax::autoscale::ScalingGroupManager.list_policies()'],['../classpyrax_1_1autoscale_1_1AutoScaleClient.html#a2a31cdad32539c5616c914d25747a74a',1,'pyrax::autoscale::AutoScaleClient.list_policies()']]], ['list_5fprevious_5fpage',['list_previous_page',['../classpyrax_1_1clouddns_1_1CloudDNSManager.html#aa4b6fcc0a8d9e480ddda1300e9e44322',1,'pyrax::clouddns::CloudDNSManager.list_previous_page()'],['../classpyrax_1_1clouddns_1_1CloudDNSClient.html#aa4b6fcc0a8d9e480ddda1300e9e44322',1,'pyrax::clouddns::CloudDNSClient.list_previous_page()']]], ['list_5fptr_5frecords',['list_ptr_records',['../classpyrax_1_1clouddns_1_1CloudDNSManager.html#a50a310b1ef2863a2e7090f31782a67cc',1,'pyrax::clouddns::CloudDNSManager.list_ptr_records()'],['../classpyrax_1_1clouddns_1_1CloudDNSClient.html#a50a310b1ef2863a2e7090f31782a67cc',1,'pyrax::clouddns::CloudDNSClient.list_ptr_records()']]], ['list_5fpublic_5fcontainers',['list_public_containers',['../classpyrax_1_1cf__wrapper_1_1client_1_1CFClient.html#a34c1b3aa7e651b23e470f5c42d6011df',1,'pyrax::cf_wrapper::client::CFClient']]], @@ -24,8 +34,9 @@ var searchData= ['list_5fsubdomains_5fprevious_5fpage',['list_subdomains_previous_page',['../classpyrax_1_1clouddns_1_1CloudDNSManager.html#a809ef53848e0cee67182feb9fdf64a18',1,'pyrax::clouddns::CloudDNSManager.list_subdomains_previous_page()'],['../classpyrax_1_1clouddns_1_1CloudDNSClient.html#a809ef53848e0cee67182feb9fdf64a18',1,'pyrax::clouddns::CloudDNSClient.list_subdomains_previous_page()']]], ['list_5ftenants',['list_tenants',['../classpyrax_1_1base__identity_1_1BaseAuth.html#a41a5da9da4ac2bd23d06aa7f7c812da5',1,'pyrax::base_identity::BaseAuth']]], ['list_5ftokens',['list_tokens',['../classpyrax_1_1base__identity_1_1BaseAuth.html#a78fe8db041d851787e9e8f401349a16f',1,'pyrax::base_identity::BaseAuth']]], - ['list_5ftypes',['list_types',['../classpyrax_1_1cloudblockstorage_1_1CloudBlockStorageClient.html#abf762ec9acd2eabeb6da95fbf9b6b81c',1,'pyrax::cloudblockstorage::CloudBlockStorageClient']]], + ['list_5ftypes',['list_types',['../classpyrax_1_1cloudblockstorage_1_1CloudBlockStorageClient.html#abf762ec9acd2eabeb6da95fbf9b6b81c',1,'pyrax::cloudblockstorage::CloudBlockStorageClient.list_types()'],['../classpyrax_1_1cloudmonitoring_1_1CloudMonitorNotificationManager.html#abf762ec9acd2eabeb6da95fbf9b6b81c',1,'pyrax::cloudmonitoring::CloudMonitorNotificationManager.list_types()']]], ['list_5fuser_5faccess',['list_user_access',['../classpyrax_1_1clouddatabases_1_1CloudDatabaseUserManager.html#a2fb19d440ebd8bffa91bb9245530953f',1,'pyrax::clouddatabases::CloudDatabaseUserManager.list_user_access()'],['../classpyrax_1_1clouddatabases_1_1CloudDatabaseInstance.html#a2fb19d440ebd8bffa91bb9245530953f',1,'pyrax::clouddatabases::CloudDatabaseInstance.list_user_access()'],['../classpyrax_1_1clouddatabases_1_1CloudDatabaseUser.html#a2fb19d440ebd8bffa91bb9245530953f',1,'pyrax::clouddatabases::CloudDatabaseUser.list_user_access()'],['../classpyrax_1_1clouddatabases_1_1CloudDatabaseClient.html#a2fb19d440ebd8bffa91bb9245530953f',1,'pyrax::clouddatabases::CloudDatabaseClient.list_user_access()']]], ['list_5fusers',['list_users',['../classpyrax_1_1base__identity_1_1BaseAuth.html#a574e940a3d762174b715704b2267f38a',1,'pyrax::base_identity::BaseAuth.list_users()'],['../classpyrax_1_1clouddatabases_1_1CloudDatabaseInstance.html#a574e940a3d762174b715704b2267f38a',1,'pyrax::clouddatabases::CloudDatabaseInstance.list_users()'],['../classpyrax_1_1clouddatabases_1_1CloudDatabaseClient.html#a574e940a3d762174b715704b2267f38a',1,'pyrax::clouddatabases::CloudDatabaseClient.list_users()']]], + ['list_5fwebhooks',['list_webhooks',['../classpyrax_1_1autoscale_1_1ScalingGroup.html#afee49b8fd7dc0cf9aed47e709db7364b',1,'pyrax::autoscale::ScalingGroup.list_webhooks()'],['../classpyrax_1_1autoscale_1_1ScalingGroupManager.html#afee49b8fd7dc0cf9aed47e709db7364b',1,'pyrax::autoscale::ScalingGroupManager.list_webhooks()'],['../classpyrax_1_1autoscale_1_1AutoScalePolicy.html#afee49b8fd7dc0cf9aed47e709db7364b',1,'pyrax::autoscale::AutoScalePolicy.list_webhooks()'],['../classpyrax_1_1autoscale_1_1AutoScaleClient.html#afee49b8fd7dc0cf9aed47e709db7364b',1,'pyrax::autoscale::AutoScaleClient.list_webhooks()']]], ['loaded',['loaded',['../classpyrax_1_1resource_1_1BaseResource.html#ae046be312a3b87c23b3729393f1ab194',1,'pyrax::resource::BaseResource']]] ]; diff --git a/docs/html/search/all_6d.js b/docs/html/search/all_6d.js index 6dd21539..411ca521 100644 --- a/docs/html/search/all_6d.js +++ b/docs/html/search/all_6d.js @@ -8,20 +8,27 @@ var searchData= ['manager',['manager',['../classpyrax_1_1clouddns_1_1ResultsIterator.html#a23416379944e641a8ad6bdbc95ef1859',1,'pyrax::clouddns::ResultsIterator::manager()'],['../classpyrax_1_1resource_1_1BaseResource.html#a23416379944e641a8ad6bdbc95ef1859',1,'pyrax::resource::BaseResource.manager()']]], ['manager_2epy',['manager.py',['../manager_8py.html',1,'']]], ['match_5fpattern',['match_pattern',['../namespacepyrax_1_1utils.html#ab32790e8c29f35cd0c810dd86dedba2c',1,'pyrax::utils']]], + ['max_5fentities',['max_entities',['../classpyrax_1_1autoscale_1_1ScalingGroup.html#a2a68ed3a21e0314dc3b7d6e1ac6db90d',1,'pyrax::autoscale::ScalingGroup.max_entities'],['../classpyrax_1_1autoscale_1_1ScalingGroup.html#a2a68ed3a21e0314dc3b7d6e1ac6db90d',1,'pyrax::autoscale::ScalingGroup.max_entities']]], ['max_5ffile_5fsize',['max_file_size',['../classpyrax_1_1cf__wrapper_1_1client_1_1CFClient.html#a38c5b8bfe2405c63c56e3dec85a057bc',1,'pyrax::cf_wrapper::client::CFClient']]], ['max_5fsize',['MAX_SIZE',['../namespacepyrax_1_1cloudblockstorage.html#a395b0fb68a5628e06819cb4aa43631fe',1,'pyrax::cloudblockstorage']]], ['message',['message',['../classpyrax_1_1exceptions_1_1ClientException.html#ab8140947611504abcb64a4c277effcf5',1,'pyrax::exceptions::ClientException.message()'],['../classpyrax_1_1exceptions_1_1BadRequest.html#ae1ed0d7a6f352c7ee3ad978429822c6f',1,'pyrax::exceptions::BadRequest.message()'],['../classpyrax_1_1exceptions_1_1Unauthorized.html#ae1ed0d7a6f352c7ee3ad978429822c6f',1,'pyrax::exceptions::Unauthorized.message()'],['../classpyrax_1_1exceptions_1_1Forbidden.html#ae1ed0d7a6f352c7ee3ad978429822c6f',1,'pyrax::exceptions::Forbidden.message()'],['../classpyrax_1_1exceptions_1_1NotFound.html#ae1ed0d7a6f352c7ee3ad978429822c6f',1,'pyrax::exceptions::NotFound.message()'],['../classpyrax_1_1exceptions_1_1NoUniqueMatch.html#ae1ed0d7a6f352c7ee3ad978429822c6f',1,'pyrax::exceptions::NoUniqueMatch.message()'],['../classpyrax_1_1exceptions_1_1OverLimit.html#ae1ed0d7a6f352c7ee3ad978429822c6f',1,'pyrax::exceptions::OverLimit.message()'],['../classpyrax_1_1exceptions_1_1HTTPNotImplemented.html#ae1ed0d7a6f352c7ee3ad978429822c6f',1,'pyrax::exceptions::HTTPNotImplemented.message()']]], + ['metadata',['metadata',['../classpyrax_1_1autoscale_1_1ScalingGroup.html#a2fe8c1ec91a77ed22c86049d4ffef3f4',1,'pyrax::autoscale::ScalingGroup.metadata'],['../classpyrax_1_1autoscale_1_1ScalingGroup.html#a2fe8c1ec91a77ed22c86049d4ffef3f4',1,'pyrax::autoscale::ScalingGroup.metadata']]], ['method_5fdelete',['method_delete',['../classpyrax_1_1base__identity_1_1BaseAuth.html#a1132703a22def73f131d037165a971aa',1,'pyrax::base_identity::BaseAuth.method_delete()'],['../classpyrax_1_1client_1_1BaseClient.html#a1132703a22def73f131d037165a971aa',1,'pyrax::client::BaseClient.method_delete()']]], ['method_5fget',['method_get',['../classpyrax_1_1base__identity_1_1BaseAuth.html#ac1f6b6211af6452ff038fbb8a25f4822',1,'pyrax::base_identity::BaseAuth.method_get()'],['../classpyrax_1_1client_1_1BaseClient.html#ac1f6b6211af6452ff038fbb8a25f4822',1,'pyrax::client::BaseClient.method_get()']]], ['method_5fhead',['method_head',['../classpyrax_1_1base__identity_1_1BaseAuth.html#a2b66a305940ec13628995f2a93c55b89',1,'pyrax::base_identity::BaseAuth']]], ['method_5fpost',['method_post',['../classpyrax_1_1base__identity_1_1BaseAuth.html#a248efd43b254ea67d11575531bad3247',1,'pyrax::base_identity::BaseAuth.method_post()'],['../classpyrax_1_1client_1_1BaseClient.html#a248efd43b254ea67d11575531bad3247',1,'pyrax::client::BaseClient.method_post()']]], ['method_5fput',['method_put',['../classpyrax_1_1base__identity_1_1BaseAuth.html#a49de945eec86f955f4ac7d1487dcf286',1,'pyrax::base_identity::BaseAuth.method_put()'],['../classpyrax_1_1client_1_1BaseClient.html#a49de945eec86f955f4ac7d1487dcf286',1,'pyrax::client::BaseClient.method_put()']]], + ['min_5fentities',['min_entities',['../classpyrax_1_1autoscale_1_1ScalingGroup.html#a395e6beed5694f7d60ea9657d57e9ad0',1,'pyrax::autoscale::ScalingGroup.min_entities'],['../classpyrax_1_1autoscale_1_1ScalingGroup.html#a395e6beed5694f7d60ea9657d57e9ad0',1,'pyrax::autoscale::ScalingGroup.min_entities']]], ['min_5fsize',['MIN_SIZE',['../namespacepyrax_1_1cloudblockstorage.html#aaba5e7c5484ccde364fadc3e6a496b1f',1,'pyrax::cloudblockstorage']]], ['missingauthsettings',['MissingAuthSettings',['../classpyrax_1_1exceptions_1_1MissingAuthSettings.html',1,'pyrax::exceptions']]], ['missingdnssettings',['MissingDNSSettings',['../classpyrax_1_1exceptions_1_1MissingDNSSettings.html',1,'pyrax::exceptions']]], ['missinghealthmonitorsettings',['MissingHealthMonitorSettings',['../classpyrax_1_1exceptions_1_1MissingHealthMonitorSettings.html',1,'pyrax::exceptions']]], ['missingloadbalancerparameters',['MissingLoadBalancerParameters',['../classpyrax_1_1exceptions_1_1MissingLoadBalancerParameters.html',1,'pyrax::exceptions']]], + ['missingmonitoringcheckdetails',['MissingMonitoringCheckDetails',['../classpyrax_1_1exceptions_1_1MissingMonitoringCheckDetails.html',1,'pyrax::exceptions']]], + ['missingmonitoringcheckgranularity',['MissingMonitoringCheckGranularity',['../classpyrax_1_1exceptions_1_1MissingMonitoringCheckGranularity.html',1,'pyrax::exceptions']]], ['missingname',['MissingName',['../classpyrax_1_1exceptions_1_1MissingName.html',1,'pyrax::exceptions']]], ['missingtemporaryurlkey',['MissingTemporaryURLKey',['../classpyrax_1_1exceptions_1_1MissingTemporaryURLKey.html',1,'pyrax::exceptions']]], + ['monitoringchecktargetnotspecified',['MonitoringCheckTargetNotSpecified',['../classpyrax_1_1exceptions_1_1MonitoringCheckTargetNotSpecified.html',1,'pyrax::exceptions']]], + ['monitoringzonespollmissing',['MonitoringZonesPollMissing',['../classpyrax_1_1exceptions_1_1MonitoringZonesPollMissing.html',1,'pyrax::exceptions']]], ['move_5fobject',['move_object',['../classpyrax_1_1cf__wrapper_1_1client_1_1CFClient.html#a536af175d76546af80d86eda21eaaccc',1,'pyrax::cf_wrapper::client::CFClient']]] ]; diff --git a/docs/html/search/all_6e.js b/docs/html/search/all_6e.js index 81e31bf9..baa15792 100644 --- a/docs/html/search/all_6e.js +++ b/docs/html/search/all_6e.js @@ -1,6 +1,6 @@ var searchData= [ - ['name',['name',['../classpyrax_1_1cf__wrapper_1_1container_1_1Container.html#ab74e6bf80237ddc4109968cedc58c151',1,'pyrax::cf_wrapper::container::Container.name()'],['../classpyrax_1_1cf__wrapper_1_1storage__object_1_1StorageObject.html#ab74e6bf80237ddc4109968cedc58c151',1,'pyrax::cf_wrapper::storage_object::StorageObject.name()'],['../classpyrax_1_1client_1_1BaseClient.html#a8ccf841cb59e451791bcb2e1ac4f1edc',1,'pyrax::client::BaseClient.name()'],['../classpyrax_1_1cloudblockstorage_1_1CloudBlockStorageSnapshot.html#ab74e6bf80237ddc4109968cedc58c151',1,'pyrax::cloudblockstorage::CloudBlockStorageSnapshot.name()'],['../classpyrax_1_1cloudblockstorage_1_1CloudBlockStorageVolume.html#ab74e6bf80237ddc4109968cedc58c151',1,'pyrax::cloudblockstorage::CloudBlockStorageVolume.name()'],['../classpyrax_1_1cloudblockstorage_1_1CloudBlockStorageClient.html#a8ccf841cb59e451791bcb2e1ac4f1edc',1,'pyrax::cloudblockstorage::CloudBlockStorageClient::name()'],['../classpyrax_1_1clouddatabases_1_1CloudDatabaseClient.html#a8ccf841cb59e451791bcb2e1ac4f1edc',1,'pyrax::clouddatabases::CloudDatabaseClient::name()'],['../classpyrax_1_1clouddns_1_1CloudDNSRecord.html#ab74e6bf80237ddc4109968cedc58c151',1,'pyrax::clouddns::CloudDNSRecord.name()'],['../classpyrax_1_1clouddns_1_1CloudDNSPTRRecord.html#ab74e6bf80237ddc4109968cedc58c151',1,'pyrax::clouddns::CloudDNSPTRRecord.name()'],['../classpyrax_1_1clouddns_1_1CloudDNSClient.html#a8ccf841cb59e451791bcb2e1ac4f1edc',1,'pyrax::clouddns::CloudDNSClient::name()'],['../classpyrax_1_1cloudloadbalancers_1_1CloudLoadBalancerClient.html#a8ccf841cb59e451791bcb2e1ac4f1edc',1,'pyrax::cloudloadbalancers::CloudLoadBalancerClient::name()'],['../classpyrax_1_1cloudnetworks_1_1CloudNetwork.html#ab74e6bf80237ddc4109968cedc58c151',1,'pyrax::cloudnetworks::CloudNetwork.name()'],['../classpyrax_1_1cloudnetworks_1_1CloudNetworkClient.html#ab74e6bf80237ddc4109968cedc58c151',1,'pyrax::cloudnetworks::CloudNetworkClient::name()'],['../classpyrax_1_1utils_1_1SelfDeletingTempfile.html#ab74e6bf80237ddc4109968cedc58c151',1,'pyrax::utils::SelfDeletingTempfile::name()'],['../classpyrax_1_1utils_1_1SelfDeletingTempDirectory.html#ab74e6bf80237ddc4109968cedc58c151',1,'pyrax::utils::SelfDeletingTempDirectory::name()'],['../namespacesetup.html#a8ccf841cb59e451791bcb2e1ac4f1edc',1,'setup.name()']]], + ['name',['name',['../classpyrax_1_1autoscale_1_1AutoScaleClient.html#a8ccf841cb59e451791bcb2e1ac4f1edc',1,'pyrax::autoscale::AutoScaleClient::name()'],['../classpyrax_1_1cf__wrapper_1_1container_1_1Container.html#ab74e6bf80237ddc4109968cedc58c151',1,'pyrax::cf_wrapper::container::Container.name()'],['../classpyrax_1_1cf__wrapper_1_1storage__object_1_1StorageObject.html#ab74e6bf80237ddc4109968cedc58c151',1,'pyrax::cf_wrapper::storage_object::StorageObject.name()'],['../classpyrax_1_1client_1_1BaseClient.html#a8ccf841cb59e451791bcb2e1ac4f1edc',1,'pyrax::client::BaseClient.name()'],['../classpyrax_1_1cloudblockstorage_1_1CloudBlockStorageSnapshot.html#ab74e6bf80237ddc4109968cedc58c151',1,'pyrax::cloudblockstorage::CloudBlockStorageSnapshot.name()'],['../classpyrax_1_1cloudblockstorage_1_1CloudBlockStorageVolume.html#ab74e6bf80237ddc4109968cedc58c151',1,'pyrax::cloudblockstorage::CloudBlockStorageVolume.name()'],['../classpyrax_1_1cloudblockstorage_1_1CloudBlockStorageClient.html#a8ccf841cb59e451791bcb2e1ac4f1edc',1,'pyrax::cloudblockstorage::CloudBlockStorageClient::name()'],['../classpyrax_1_1clouddatabases_1_1CloudDatabaseClient.html#a8ccf841cb59e451791bcb2e1ac4f1edc',1,'pyrax::clouddatabases::CloudDatabaseClient::name()'],['../classpyrax_1_1clouddns_1_1CloudDNSRecord.html#ab74e6bf80237ddc4109968cedc58c151',1,'pyrax::clouddns::CloudDNSRecord.name()'],['../classpyrax_1_1clouddns_1_1CloudDNSPTRRecord.html#ab74e6bf80237ddc4109968cedc58c151',1,'pyrax::clouddns::CloudDNSPTRRecord.name()'],['../classpyrax_1_1clouddns_1_1CloudDNSClient.html#a8ccf841cb59e451791bcb2e1ac4f1edc',1,'pyrax::clouddns::CloudDNSClient::name()'],['../classpyrax_1_1cloudloadbalancers_1_1CloudLoadBalancerClient.html#a8ccf841cb59e451791bcb2e1ac4f1edc',1,'pyrax::cloudloadbalancers::CloudLoadBalancerClient::name()'],['../classpyrax_1_1cloudmonitoring_1_1CloudMonitorClient.html#ab74e6bf80237ddc4109968cedc58c151',1,'pyrax::cloudmonitoring::CloudMonitorClient::name()'],['../classpyrax_1_1cloudnetworks_1_1CloudNetwork.html#ab74e6bf80237ddc4109968cedc58c151',1,'pyrax::cloudnetworks::CloudNetwork.name()'],['../classpyrax_1_1cloudnetworks_1_1CloudNetworkClient.html#ab74e6bf80237ddc4109968cedc58c151',1,'pyrax::cloudnetworks::CloudNetworkClient::name()'],['../classpyrax_1_1utils_1_1SelfDeletingTempfile.html#ab74e6bf80237ddc4109968cedc58c151',1,'pyrax::utils::SelfDeletingTempfile::name()'],['../classpyrax_1_1utils_1_1SelfDeletingTempDirectory.html#ab74e6bf80237ddc4109968cedc58c151',1,'pyrax::utils::SelfDeletingTempDirectory::name()'],['../classpyrax_1_1autoscale_1_1ScalingGroup.html#a757840459670ee7692e00cf5ddc722d5',1,'pyrax::autoscale::ScalingGroup.name'],['../classpyrax_1_1autoscale_1_1ScalingGroup.html#a757840459670ee7692e00cf5ddc722d5',1,'pyrax::autoscale::ScalingGroup.name'],['../classpyrax_1_1cloudmonitoring_1_1CloudMonitorEntity.html#a757840459670ee7692e00cf5ddc722d5',1,'pyrax::cloudmonitoring::CloudMonitorEntity.name()'],['../classpyrax_1_1cloudmonitoring_1_1CloudMonitorCheck.html#a757840459670ee7692e00cf5ddc722d5',1,'pyrax::cloudmonitoring::CloudMonitorCheck.name()'],['../classpyrax_1_1cloudmonitoring_1_1CloudMonitorZone.html#a757840459670ee7692e00cf5ddc722d5',1,'pyrax::cloudmonitoring::CloudMonitorZone.name()'],['../classpyrax_1_1cloudmonitoring_1_1CloudMonitorNotification.html#a757840459670ee7692e00cf5ddc722d5',1,'pyrax::cloudmonitoring::CloudMonitorNotification.name()'],['../classpyrax_1_1cloudmonitoring_1_1CloudMonitorNotificationType.html#a757840459670ee7692e00cf5ddc722d5',1,'pyrax::cloudmonitoring::CloudMonitorNotificationType.name()'],['../classpyrax_1_1cloudmonitoring_1_1CloudMonitorNotificationPlan.html#a757840459670ee7692e00cf5ddc722d5',1,'pyrax::cloudmonitoring::CloudMonitorNotificationPlan.name()'],['../classpyrax_1_1cloudmonitoring_1_1CloudMonitorAlarm.html#a757840459670ee7692e00cf5ddc722d5',1,'pyrax::cloudmonitoring::CloudMonitorAlarm.name()'],['../namespacesetup.html#a8ccf841cb59e451791bcb2e1ac4f1edc',1,'setup.name()']]], ['name_5fattr',['NAME_ATTR',['../classpyrax_1_1resource_1_1BaseResource.html#a74fac10a98253f8b0308159a33113ab9',1,'pyrax::resource::BaseResource']]], ['networkcidrinvalid',['NetworkCIDRInvalid',['../classpyrax_1_1exceptions_1_1NetworkCIDRInvalid.html',1,'pyrax::exceptions']]], ['networkcidrmalformed',['NetworkCIDRMalformed',['../classpyrax_1_1exceptions_1_1NetworkCIDRMalformed.html',1,'pyrax::exceptions']]], diff --git a/docs/html/search/all_6f.js b/docs/html/search/all_6f.js index c8b1948b..96172b0c 100644 --- a/docs/html/search/all_6f.js +++ b/docs/html/search/all_6f.js @@ -4,5 +4,6 @@ var searchData= ['object_5fcount',['object_count',['../classpyrax_1_1cf__wrapper_1_1container_1_1Container.html#adf84fc89f9e8786591953166a1fd9d52',1,'pyrax::cf_wrapper::container::Container']]], ['object_5fmeta_5fprefix',['object_meta_prefix',['../classpyrax_1_1cf__wrapper_1_1client_1_1CFClient.html#a5adbaa075a44196e9f26841c572f0639',1,'pyrax::cf_wrapper::client::CFClient']]], ['opth',['opth',['../namespacepyrax_1_1identity.html#a67950ac9ebe565380668e902b8b09e8f',1,'pyrax::identity']]], + ['optional_5ffield_5fnames',['optional_field_names',['../classpyrax_1_1cloudmonitoring_1_1CloudMonitorCheckType.html#aa8cda2e75b38e5edd7137e5e3b6a631b',1,'pyrax::cloudmonitoring::CloudMonitorCheckType']]], ['overlimit',['OverLimit',['../classpyrax_1_1exceptions_1_1OverLimit.html',1,'pyrax::exceptions']]] ]; diff --git a/docs/html/search/all_70.js b/docs/html/search/all_70.js index f8aec888..dfcf9c06 100644 --- a/docs/html/search/all_70.js +++ b/docs/html/search/all_70.js @@ -1,5 +1,6 @@ var searchData= [ + ['autoscale',['autoscale',['../namespacepyrax_1_1autoscale.html',1,'pyrax']]], ['base_5fidentity',['base_identity',['../namespacepyrax_1_1base__identity.html',1,'pyrax']]], ['cf_5fwrapper',['cf_wrapper',['../namespacepyrax_1_1cf__wrapper.html',1,'pyrax']]], ['client',['client',['../namespacepyrax_1_1cf__wrapper_1_1client.html',1,'pyrax::cf_wrapper']]], @@ -8,6 +9,7 @@ var searchData= ['clouddatabases',['clouddatabases',['../namespacepyrax_1_1clouddatabases.html',1,'pyrax']]], ['clouddns',['clouddns',['../namespacepyrax_1_1clouddns.html',1,'pyrax']]], ['cloudloadbalancers',['cloudloadbalancers',['../namespacepyrax_1_1cloudloadbalancers.html',1,'pyrax']]], + ['cloudmonitoring',['cloudmonitoring',['../namespacepyrax_1_1cloudmonitoring.html',1,'pyrax']]], ['cloudnetworks',['cloudnetworks',['../namespacepyrax_1_1cloudnetworks.html',1,'pyrax']]], ['container',['container',['../namespacepyrax_1_1cf__wrapper_1_1container.html',1,'pyrax::cf_wrapper']]], ['exceptions',['exceptions',['../namespacepyrax_1_1exceptions.html',1,'pyrax']]], @@ -16,12 +18,17 @@ var searchData= ['manager',['manager',['../namespacepyrax_1_1manager.html',1,'pyrax']]], ['packages',['packages',['../namespacesetup.html#af290766b923d1fc3f429da7bc5decf7a',1,'setup']]], ['paging_5fservice',['paging_service',['../classpyrax_1_1clouddns_1_1DomainResultsIterator.html#a6c4b0eba2e645f64e873cce185cacd60',1,'pyrax::clouddns::DomainResultsIterator.paging_service()'],['../classpyrax_1_1clouddns_1_1SubdomainResultsIterator.html#a6c4b0eba2e645f64e873cce185cacd60',1,'pyrax::clouddns::SubdomainResultsIterator.paging_service()'],['../classpyrax_1_1clouddns_1_1RecordResultsIterator.html#a6c4b0eba2e645f64e873cce185cacd60',1,'pyrax::clouddns::RecordResultsIterator.paging_service()']]], + ['params_5fto_5fdict',['params_to_dict',['../namespacepyrax_1_1utils.html#a9829217a17004ff879dffa75d60842ae',1,'pyrax::utils']]], ['parent',['parent',['../classpyrax_1_1cloudloadbalancers_1_1Node.html#a457d913bff1ebc8671c1eca1c9d5fc03',1,'pyrax::cloudloadbalancers::Node.parent()'],['../classpyrax_1_1cloudloadbalancers_1_1VirtualIP.html#a457d913bff1ebc8671c1eca1c9d5fc03',1,'pyrax::cloudloadbalancers::VirtualIP.parent()']]], ['password',['password',['../classpyrax_1_1base__identity_1_1BaseAuth.html#ac0d6a26a6e1c25921ff65ba7790ee92d',1,'pyrax::base_identity::BaseAuth.password()'],['../classpyrax_1_1base__identity_1_1BaseAuth.html#a9dbb300e28bc21c8dab41b01883918eb',1,'pyrax::base_identity::BaseAuth.password()'],['../classpyrax_1_1identity_1_1rax__identity_1_1RaxIdentity.html#a9dbb300e28bc21c8dab41b01883918eb',1,'pyrax::identity::rax_identity::RaxIdentity.password()']]], ['passwordchangefailed',['PasswordChangeFailed',['../classpyrax_1_1exceptions_1_1PasswordChangeFailed.html',1,'pyrax::exceptions']]], ['path',['path',['../namespacepyrax_1_1identity.html#ae6fc00af7c5b5a7c5f40ce6dc6b47d85',1,'pyrax::identity']]], + ['pause',['pause',['../classpyrax_1_1autoscale_1_1ScalingGroup.html#ad87957c5b208fe27e24a5260f5ddbb95',1,'pyrax::autoscale::ScalingGroup.pause()'],['../classpyrax_1_1autoscale_1_1ScalingGroupManager.html#ad87957c5b208fe27e24a5260f5ddbb95',1,'pyrax::autoscale::ScalingGroupManager.pause()'],['../classpyrax_1_1autoscale_1_1AutoScaleClient.html#ad87957c5b208fe27e24a5260f5ddbb95',1,'pyrax::autoscale::AutoScaleClient.pause()']]], ['plug_5fhole_5fin_5fswiftclient_5fauth',['plug_hole_in_swiftclient_auth',['../namespacepyrax.html#a52520cf6c40b52d2b67faf9762accb18',1,'pyrax']]], ['plural_5fresponse_5fkey',['plural_response_key',['../classpyrax_1_1manager_1_1BaseManager.html#a692be54e20855ad7f41d446719f26491',1,'pyrax::manager::BaseManager']]], + ['policies',['policies',['../classpyrax_1_1autoscale_1_1ScalingGroup.html#a20e4bd6dc33dd1f27f9b7eaed505f80e',1,'pyrax::autoscale::ScalingGroup']]], + ['policy',['policy',['../classpyrax_1_1autoscale_1_1AutoScaleWebhook.html#ad986b73e9d5f47a623a9b6d773c25e34',1,'pyrax::autoscale::AutoScaleWebhook']]], + ['policy_5fcount',['policy_count',['../classpyrax_1_1autoscale_1_1ScalingGroup.html#a221c84e10c0ca6bc4f240b139076bf4d',1,'pyrax::autoscale::ScalingGroup']]], ['port',['port',['../classpyrax_1_1cloudloadbalancers_1_1Node.html#af8fb0f45ee0195c7422a49e6a8d72369',1,'pyrax::cloudloadbalancers::Node']]], ['priority',['priority',['../classpyrax_1_1clouddns_1_1CloudDNSRecord.html#a6a5183df4c54c3e28dc8dc704f2487d5',1,'pyrax::clouddns::CloudDNSRecord']]], ['projectid',['projectid',['../classpyrax_1_1client_1_1BaseClient.html#af6e68e7b4a48c30549646fd3d5ed1aae',1,'pyrax::client::BaseClient']]], diff --git a/docs/html/search/all_72.js b/docs/html/search/all_72.js index 502f73f9..2d2f16da 100644 --- a/docs/html/search/all_72.js +++ b/docs/html/search/all_72.js @@ -8,13 +8,14 @@ var searchData= ['region',['region',['../classpyrax_1_1base__identity_1_1BaseAuth.html#a1b9edddb3735d131c67e9e824f07c402',1,'pyrax::base_identity::BaseAuth']]], ['region_5fname',['region_name',['../classpyrax_1_1client_1_1BaseClient.html#a326b5b91b887c67a677e2eb509b569b6',1,'pyrax::client::BaseClient']]], ['regions',['regions',['../classpyrax_1_1base__identity_1_1BaseAuth.html#a4c4786354df7358bf12c3c65069dd8b7',1,'pyrax::base_identity::BaseAuth.regions()'],['../namespacepyrax.html#a2b45bebec67926b49ea55f14eb0b8f8e',1,'pyrax.regions()']]], - ['reload',['reload',['../classpyrax_1_1resource_1_1BaseResource.html#ac5c05266f4f3b5937cefb6a818fc6675',1,'pyrax::resource::BaseResource']]], + ['reload',['reload',['../classpyrax_1_1autoscale_1_1AutoScalePolicy.html#ac5c05266f4f3b5937cefb6a818fc6675',1,'pyrax::autoscale::AutoScalePolicy.reload()'],['../classpyrax_1_1autoscale_1_1AutoScaleWebhook.html#ac5c05266f4f3b5937cefb6a818fc6675',1,'pyrax::autoscale::AutoScaleWebhook.reload()'],['../classpyrax_1_1cloudmonitoring_1_1CloudMonitorCheck.html#ac5c05266f4f3b5937cefb6a818fc6675',1,'pyrax::cloudmonitoring::CloudMonitorCheck.reload()'],['../classpyrax_1_1cloudmonitoring_1_1CloudMonitorAlarm.html#ac5c05266f4f3b5937cefb6a818fc6675',1,'pyrax::cloudmonitoring::CloudMonitorAlarm.reload()'],['../classpyrax_1_1resource_1_1BaseResource.html#ac5c05266f4f3b5937cefb6a818fc6675',1,'pyrax::resource::BaseResource.reload()']]], ['remove_5fcontainer_5fmetadata_5fkey',['remove_container_metadata_key',['../classpyrax_1_1cf__wrapper_1_1client_1_1CFClient.html#a91fcdf99119a696e0b626957628605bb',1,'pyrax::cf_wrapper::client::CFClient']]], ['remove_5ffrom_5fcache',['remove_from_cache',['../classpyrax_1_1cf__wrapper_1_1container_1_1Container.html#adf3d192d83c2f53a96b0bd594c15b84d',1,'pyrax::cf_wrapper::container::Container']]], ['remove_5fmetadata_5fkey',['remove_metadata_key',['../classpyrax_1_1cf__wrapper_1_1container_1_1Container.html#a01a67fdfd99526a56bef1e3c0a01a68d',1,'pyrax::cf_wrapper::container::Container.remove_metadata_key()'],['../classpyrax_1_1cf__wrapper_1_1storage__object_1_1StorageObject.html#a01a67fdfd99526a56bef1e3c0a01a68d',1,'pyrax::cf_wrapper::storage_object::StorageObject.remove_metadata_key()']]], ['remove_5fobject_5fmetadata_5fkey',['remove_object_metadata_key',['../classpyrax_1_1cf__wrapper_1_1client_1_1CFClient.html#ac3072e2b9369e7435f660ff89ae85aa5',1,'pyrax::cf_wrapper::client::CFClient']]], ['request',['request',['../classpyrax_1_1client_1_1BaseClient.html#a7ea72716d3813b3d175a880ff91eca73',1,'pyrax::client::BaseClient']]], ['request_5fid',['request_id',['../classpyrax_1_1exceptions_1_1ClientException.html#a24b613add05b03f7af1be9c4dab66d59',1,'pyrax::exceptions::ClientException']]], + ['required_5ffield_5fnames',['required_field_names',['../classpyrax_1_1cloudmonitoring_1_1CloudMonitorCheckType.html#a6962c65252e3f5bfc1c2084ce219cd68',1,'pyrax::cloudmonitoring::CloudMonitorCheckType']]], ['reset_5ftimings',['reset_timings',['../classpyrax_1_1client_1_1BaseClient.html#ac8ac904919fa009e510cc25731bc20f8',1,'pyrax::client::BaseClient']]], ['resize',['resize',['../classpyrax_1_1clouddatabases_1_1CloudDatabaseVolume.html#a8f82cbc9bffef6b720c446024ddf35f9',1,'pyrax::clouddatabases::CloudDatabaseVolume.resize()'],['../classpyrax_1_1clouddatabases_1_1CloudDatabaseInstance.html#a8f82cbc9bffef6b720c446024ddf35f9',1,'pyrax::clouddatabases::CloudDatabaseInstance.resize()'],['../classpyrax_1_1clouddatabases_1_1CloudDatabaseClient.html#a8f82cbc9bffef6b720c446024ddf35f9',1,'pyrax::clouddatabases::CloudDatabaseClient.resize()']]], ['resize_5fvolume',['resize_volume',['../classpyrax_1_1clouddatabases_1_1CloudDatabaseInstance.html#a184e71e943f21eaf224c511df2b58262',1,'pyrax::clouddatabases::CloudDatabaseInstance']]], @@ -24,6 +25,7 @@ var searchData= ['restart',['restart',['../classpyrax_1_1clouddatabases_1_1CloudDatabaseInstance.html#ac035369f12e9417eb1a18896a6888f05',1,'pyrax::clouddatabases::CloudDatabaseInstance.restart()'],['../classpyrax_1_1clouddatabases_1_1CloudDatabaseClient.html#ac035369f12e9417eb1a18896a6888f05',1,'pyrax::clouddatabases::CloudDatabaseClient.restart()']]], ['results',['results',['../classpyrax_1_1clouddns_1_1ResultsIterator.html#a339bb5524b06e496a6aaa0a97a4a8d21',1,'pyrax::clouddns::ResultsIterator']]], ['resultsiterator',['ResultsIterator',['../classpyrax_1_1clouddns_1_1ResultsIterator.html',1,'pyrax::clouddns']]], + ['resume',['resume',['../classpyrax_1_1autoscale_1_1ScalingGroup.html#a4a0c86a5f484661cd399a28e4ac1c779',1,'pyrax::autoscale::ScalingGroup.resume()'],['../classpyrax_1_1autoscale_1_1ScalingGroupManager.html#a4a0c86a5f484661cd399a28e4ac1c779',1,'pyrax::autoscale::ScalingGroupManager.resume()'],['../classpyrax_1_1autoscale_1_1AutoScaleClient.html#a4a0c86a5f484661cd399a28e4ac1c779',1,'pyrax::autoscale::AutoScaleClient.resume()']]], ['retry_5finterval',['RETRY_INTERVAL',['../namespacepyrax_1_1cloudblockstorage.html#abc175296d7313060131bf7f6c2932cf4',1,'pyrax::cloudblockstorage']]], ['revoke_5fuser_5faccess',['revoke_user_access',['../classpyrax_1_1clouddatabases_1_1CloudDatabaseUserManager.html#a37c095a57f86b13406baed47d9cc1dd2',1,'pyrax::clouddatabases::CloudDatabaseUserManager.revoke_user_access()'],['../classpyrax_1_1clouddatabases_1_1CloudDatabaseInstance.html#a37c095a57f86b13406baed47d9cc1dd2',1,'pyrax::clouddatabases::CloudDatabaseInstance.revoke_user_access()'],['../classpyrax_1_1clouddatabases_1_1CloudDatabaseUser.html#a37c095a57f86b13406baed47d9cc1dd2',1,'pyrax::clouddatabases::CloudDatabaseUser.revoke_user_access()'],['../classpyrax_1_1clouddatabases_1_1CloudDatabaseClient.html#a37c095a57f86b13406baed47d9cc1dd2',1,'pyrax::clouddatabases::CloudDatabaseClient.revoke_user_access()']]], ['root_5ffolder',['root_folder',['../classpyrax_1_1cf__wrapper_1_1client_1_1FolderUploader.html#a5f0b3f0b57ace7916c26401c56575116',1,'pyrax::cf_wrapper::client::FolderUploader']]], diff --git a/docs/html/search/all_73.js b/docs/html/search/all_73.js index cf1bef3a..a547ef1a 100644 --- a/docs/html/search/all_73.js +++ b/docs/html/search/all_73.js @@ -1,6 +1,9 @@ var searchData= [ ['safe_5fissubclass',['safe_issubclass',['../namespacepyrax_1_1utils.html#ab35ae0f6f47300275663bd32a957c5f2',1,'pyrax::utils']]], + ['scaling_5fgroup',['scaling_group',['../classpyrax_1_1autoscale_1_1AutoScalePolicy.html#a7f23105293583afca652e62b3dc62613',1,'pyrax::autoscale::AutoScalePolicy']]], + ['scalinggroup',['ScalingGroup',['../classpyrax_1_1autoscale_1_1ScalingGroup.html',1,'pyrax::autoscale']]], + ['scalinggroupmanager',['ScalingGroupManager',['../classpyrax_1_1autoscale_1_1ScalingGroupManager.html',1,'pyrax::autoscale']]], ['search_5frecords',['search_records',['../classpyrax_1_1clouddns_1_1CloudDNSDomain.html#ae7afc3edf5d837708e01cfa202d748b6',1,'pyrax::clouddns::CloudDNSDomain.search_records()'],['../classpyrax_1_1clouddns_1_1CloudDNSManager.html#ae7afc3edf5d837708e01cfa202d748b6',1,'pyrax::clouddns::CloudDNSManager.search_records()'],['../classpyrax_1_1clouddns_1_1CloudDNSClient.html#ae7afc3edf5d837708e01cfa202d748b6',1,'pyrax::clouddns::CloudDNSClient.search_records()']]], ['selfdeletingtempdirectory',['SelfDeletingTempDirectory',['../classpyrax_1_1utils_1_1SelfDeletingTempDirectory.html',1,'pyrax::utils']]], ['selfdeletingtempfile',['SelfDeletingTempfile',['../classpyrax_1_1utils_1_1SelfDeletingTempfile.html',1,'pyrax::utils']]], @@ -39,8 +42,8 @@ var searchData= ['set_5ftimeout',['set_timeout',['../classpyrax_1_1clouddns_1_1CloudDNSClient.html#a095ce5c15e8d86c06b68342d3ef66c66',1,'pyrax::clouddns::CloudDNSClient']]], ['set_5fweb_5ferror_5fpage',['set_web_error_page',['../classpyrax_1_1cf__wrapper_1_1container_1_1Container.html#a5fa5ed0e434f44f721a751194551badc',1,'pyrax::cf_wrapper::container::Container']]], ['set_5fweb_5findex_5fpage',['set_web_index_page',['../classpyrax_1_1cf__wrapper_1_1container_1_1Container.html#ade8eed6cfb701ccd5d3a42b34dba771c',1,'pyrax::cf_wrapper::container::Container']]], - ['settings',['Settings',['../classpyrax_1_1Settings.html',1,'pyrax']]], ['settings',['settings',['../namespacepyrax.html#a9f379c663a918bd5beb1ed160f2b0c4d',1,'pyrax']]], + ['settings',['Settings',['../classpyrax_1_1Settings.html',1,'pyrax']]], ['setup',['setup',['../namespacesetup.html',1,'']]], ['setup_2epy',['setup.py',['../setup_8py.html',1,'']]], ['size',['size',['../classpyrax_1_1clouddatabases_1_1CloudDatabaseVolume.html#aa3d6656320f1a7278c0c2c7fdf07617c',1,'pyrax::clouddatabases::CloudDatabaseVolume']]], diff --git a/docs/html/search/all_74.js b/docs/html/search/all_74.js index 6e89c97c..01256969 100644 --- a/docs/html/search/all_74.js +++ b/docs/html/search/all_74.js @@ -4,10 +4,12 @@ var searchData= ['tenant_5fid',['tenant_id',['../classpyrax_1_1base__identity_1_1BaseAuth.html#ab2a0abf5d1b1c41d8e6a948bbd484341',1,'pyrax::base_identity::BaseAuth.tenant_id()'],['../classpyrax_1_1base__identity_1_1BaseAuth.html#a9f8b98f9d8644964bbb15a9fb217ccb7',1,'pyrax::base_identity::BaseAuth.tenant_id()']]], ['tenant_5fname',['tenant_name',['../classpyrax_1_1base__identity_1_1BaseAuth.html#acff4040d09342f645146af9d59268bb7',1,'pyrax::base_identity::BaseAuth.tenant_name()'],['../classpyrax_1_1base__identity_1_1BaseAuth.html#a0eda5ccf1b845b56032e5dfb7e536642',1,'pyrax::base_identity::BaseAuth.tenant_name()']]], ['tenantnotfound',['TenantNotFound',['../classpyrax_1_1exceptions_1_1TenantNotFound.html',1,'pyrax::exceptions']]], + ['test_5fnotification',['test_notification',['../classpyrax_1_1cloudmonitoring_1_1CloudMonitorNotificationManager.html#a2c72af29147d7aaedc2abb2176cae425',1,'pyrax::cloudmonitoring::CloudMonitorNotificationManager.test_notification()'],['../classpyrax_1_1cloudmonitoring_1_1CloudMonitorClient.html#a2c72af29147d7aaedc2abb2176cae425',1,'pyrax::cloudmonitoring::CloudMonitorClient.test_notification()']]], ['testing_5frequires',['testing_requires',['../namespacesetup.html#a969980742bd642ab510b23eaf8534d0d',1,'setup']]], ['times',['times',['../classpyrax_1_1client_1_1BaseClient.html#ac150111bafc331bafb353619452c5c5c',1,'pyrax::client::BaseClient']]], ['timings',['timings',['../classpyrax_1_1client_1_1BaseClient.html#a941dfe76ad38cb3692eac6ef7f0aec9b',1,'pyrax::client::BaseClient']]], ['to_5fdict',['to_dict',['../classpyrax_1_1cloudloadbalancers_1_1Node.html#aa5152a042338ea29555f11041ee6e330',1,'pyrax::cloudloadbalancers::Node.to_dict()'],['../classpyrax_1_1cloudloadbalancers_1_1VirtualIP.html#aa5152a042338ea29555f11041ee6e330',1,'pyrax::cloudloadbalancers::VirtualIP.to_dict()']]], + ['to_5ftimestamp',['to_timestamp',['../namespacepyrax_1_1utils.html#af4be48d96f3ad2c6cd297a76ccdb1a40',1,'pyrax::utils']]], ['token',['token',['../classpyrax_1_1base__identity_1_1BaseAuth.html#a623ef6987ef3bd185c07b28b13e46d34',1,'pyrax::base_identity::BaseAuth.token()'],['../classpyrax_1_1base__identity_1_1BaseAuth.html#a87da3d8264af1c9427605148f20dd9c4',1,'pyrax::base_identity::BaseAuth.token()']]], ['total_5fbytes',['total_bytes',['../classpyrax_1_1cf__wrapper_1_1container_1_1Container.html#a15d97ed7e27cf9263c3bc520f95e1d82',1,'pyrax::cf_wrapper::container::Container.total_bytes()'],['../classpyrax_1_1cf__wrapper_1_1storage__object_1_1StorageObject.html#a15d97ed7e27cf9263c3bc520f95e1d82',1,'pyrax::cf_wrapper::storage_object::StorageObject.total_bytes()']]], ['trace',['trace',['../namespacepyrax_1_1utils.html#a1ef4c4162762c60a00cf44b5969127c5',1,'pyrax::utils']]], diff --git a/docs/html/search/all_75.js b/docs/html/search/all_75.js index 904f57c6..33156dd0 100644 --- a/docs/html/search/all_75.js +++ b/docs/html/search/all_75.js @@ -6,17 +6,26 @@ var searchData= ['unauthenticated',['unauthenticated',['../namespacepyrax_1_1utils.html#a662924ed2118b3ba66f1d1521a7c2b40',1,'pyrax::utils']]], ['unauthorized',['Unauthorized',['../classpyrax_1_1exceptions_1_1Unauthorized.html',1,'pyrax::exceptions']]], ['unicodepatherror',['UnicodePathError',['../classpyrax_1_1exceptions_1_1UnicodePathError.html',1,'pyrax::exceptions']]], - ['update',['update',['../classpyrax_1_1clouddns_1_1CloudDNSRecord.html#abe52b977c101e59f342489ed18140819',1,'pyrax::clouddns::CloudDNSRecord.update()'],['../classpyrax_1_1clouddns_1_1CloudDNSDomain.html#abe52b977c101e59f342489ed18140819',1,'pyrax::clouddns::CloudDNSDomain.update()'],['../classpyrax_1_1cloudloadbalancers_1_1CloudLoadBalancer.html#abe52b977c101e59f342489ed18140819',1,'pyrax::cloudloadbalancers::CloudLoadBalancer.update()'],['../classpyrax_1_1cloudloadbalancers_1_1CloudLoadBalancerManager.html#abe52b977c101e59f342489ed18140819',1,'pyrax::cloudloadbalancers::CloudLoadBalancerManager.update()'],['../classpyrax_1_1cloudloadbalancers_1_1Node.html#abe52b977c101e59f342489ed18140819',1,'pyrax::cloudloadbalancers::Node.update()'],['../classpyrax_1_1cloudloadbalancers_1_1CloudLoadBalancerClient.html#abe52b977c101e59f342489ed18140819',1,'pyrax::cloudloadbalancers::CloudLoadBalancerClient.update()']]], + ['update',['update',['../classpyrax_1_1autoscale_1_1ScalingGroup.html#abe52b977c101e59f342489ed18140819',1,'pyrax::autoscale::ScalingGroup.update()'],['../classpyrax_1_1autoscale_1_1ScalingGroupManager.html#abe52b977c101e59f342489ed18140819',1,'pyrax::autoscale::ScalingGroupManager.update()'],['../classpyrax_1_1autoscale_1_1AutoScalePolicy.html#abe52b977c101e59f342489ed18140819',1,'pyrax::autoscale::AutoScalePolicy.update()'],['../classpyrax_1_1autoscale_1_1AutoScaleWebhook.html#abe52b977c101e59f342489ed18140819',1,'pyrax::autoscale::AutoScaleWebhook.update()'],['../classpyrax_1_1autoscale_1_1AutoScaleClient.html#abe52b977c101e59f342489ed18140819',1,'pyrax::autoscale::AutoScaleClient.update()'],['../classpyrax_1_1clouddns_1_1CloudDNSRecord.html#abe52b977c101e59f342489ed18140819',1,'pyrax::clouddns::CloudDNSRecord.update()'],['../classpyrax_1_1clouddns_1_1CloudDNSDomain.html#abe52b977c101e59f342489ed18140819',1,'pyrax::clouddns::CloudDNSDomain.update()'],['../classpyrax_1_1cloudloadbalancers_1_1CloudLoadBalancer.html#abe52b977c101e59f342489ed18140819',1,'pyrax::cloudloadbalancers::CloudLoadBalancer.update()'],['../classpyrax_1_1cloudloadbalancers_1_1CloudLoadBalancerManager.html#abe52b977c101e59f342489ed18140819',1,'pyrax::cloudloadbalancers::CloudLoadBalancerManager.update()'],['../classpyrax_1_1cloudloadbalancers_1_1Node.html#abe52b977c101e59f342489ed18140819',1,'pyrax::cloudloadbalancers::Node.update()'],['../classpyrax_1_1cloudloadbalancers_1_1CloudLoadBalancerClient.html#abe52b977c101e59f342489ed18140819',1,'pyrax::cloudloadbalancers::CloudLoadBalancerClient.update()'],['../classpyrax_1_1cloudmonitoring_1_1CloudMonitorEntity.html#abe52b977c101e59f342489ed18140819',1,'pyrax::cloudmonitoring::CloudMonitorEntity.update()'],['../classpyrax_1_1cloudmonitoring_1_1CloudMonitorCheck.html#abe52b977c101e59f342489ed18140819',1,'pyrax::cloudmonitoring::CloudMonitorCheck.update()'],['../classpyrax_1_1cloudmonitoring_1_1CloudMonitorNotification.html#abe52b977c101e59f342489ed18140819',1,'pyrax::cloudmonitoring::CloudMonitorNotification.update()'],['../classpyrax_1_1cloudmonitoring_1_1CloudMonitorAlarm.html#abe52b977c101e59f342489ed18140819',1,'pyrax::cloudmonitoring::CloudMonitorAlarm.update()']]], + ['update_5falarm',['update_alarm',['../classpyrax_1_1cloudmonitoring_1_1CloudMonitorEntity.html#a5890867a408848b989089ddf26d20a18',1,'pyrax::cloudmonitoring::CloudMonitorEntity.update_alarm()'],['../classpyrax_1_1cloudmonitoring_1_1CloudMonitorEntityManager.html#a5890867a408848b989089ddf26d20a18',1,'pyrax::cloudmonitoring::CloudMonitorEntityManager.update_alarm()'],['../classpyrax_1_1cloudmonitoring_1_1CloudMonitorClient.html#a5890867a408848b989089ddf26d20a18',1,'pyrax::cloudmonitoring::CloudMonitorClient.update_alarm()']]], + ['update_5fcheck',['update_check',['../classpyrax_1_1cloudmonitoring_1_1CloudMonitorEntityManager.html#a31db8ea7ae986d187cad68055d066a20',1,'pyrax::cloudmonitoring::CloudMonitorEntityManager.update_check()'],['../classpyrax_1_1cloudmonitoring_1_1CloudMonitorClient.html#a31db8ea7ae986d187cad68055d066a20',1,'pyrax::cloudmonitoring::CloudMonitorClient.update_check()']]], ['update_5fdomain',['update_domain',['../classpyrax_1_1clouddns_1_1CloudDNSManager.html#a8ee67d6346234099ee06b44af2cb229b',1,'pyrax::clouddns::CloudDNSManager.update_domain()'],['../classpyrax_1_1clouddns_1_1CloudDNSClient.html#a8ee67d6346234099ee06b44af2cb229b',1,'pyrax::clouddns::CloudDNSClient.update_domain()']]], + ['update_5fentity',['update_entity',['../classpyrax_1_1cloudmonitoring_1_1CloudMonitorEntityManager.html#a6677002dbfa8807383168cfaa74670c8',1,'pyrax::cloudmonitoring::CloudMonitorEntityManager.update_entity()'],['../classpyrax_1_1cloudmonitoring_1_1CloudMonitorClient.html#a6677002dbfa8807383168cfaa74670c8',1,'pyrax::cloudmonitoring::CloudMonitorClient.update_entity()']]], ['update_5fexc',['update_exc',['../namespacepyrax_1_1utils.html#aa76e326dca328bf4b12f55a0b94be973',1,'pyrax::utils']]], - ['update_5fmetadata',['update_metadata',['../classpyrax_1_1cloudloadbalancers_1_1CloudLoadBalancer.html#a9d058767846954b6ab457ffa13ab66a1',1,'pyrax::cloudloadbalancers::CloudLoadBalancer.update_metadata()'],['../classpyrax_1_1cloudloadbalancers_1_1CloudLoadBalancerManager.html#a9d058767846954b6ab457ffa13ab66a1',1,'pyrax::cloudloadbalancers::CloudLoadBalancerManager.update_metadata()'],['../classpyrax_1_1cloudloadbalancers_1_1Node.html#a9d058767846954b6ab457ffa13ab66a1',1,'pyrax::cloudloadbalancers::Node.update_metadata()'],['../classpyrax_1_1cloudloadbalancers_1_1CloudLoadBalancerClient.html#a9d058767846954b6ab457ffa13ab66a1',1,'pyrax::cloudloadbalancers::CloudLoadBalancerClient.update_metadata()']]], + ['update_5flaunch_5fconfig',['update_launch_config',['../classpyrax_1_1autoscale_1_1ScalingGroup.html#acc6fd541908aca786fcdcc82dda260a8',1,'pyrax::autoscale::ScalingGroup.update_launch_config()'],['../classpyrax_1_1autoscale_1_1ScalingGroupManager.html#acc6fd541908aca786fcdcc82dda260a8',1,'pyrax::autoscale::ScalingGroupManager.update_launch_config()'],['../classpyrax_1_1autoscale_1_1AutoScaleClient.html#acc6fd541908aca786fcdcc82dda260a8',1,'pyrax::autoscale::AutoScaleClient.update_launch_config()']]], + ['update_5flaunch_5fmetadata',['update_launch_metadata',['../classpyrax_1_1autoscale_1_1ScalingGroup.html#aac62e1b2723c460fd0571b43056a9dc3',1,'pyrax::autoscale::ScalingGroup.update_launch_metadata()'],['../classpyrax_1_1autoscale_1_1ScalingGroupManager.html#aac62e1b2723c460fd0571b43056a9dc3',1,'pyrax::autoscale::ScalingGroupManager.update_launch_metadata()'],['../classpyrax_1_1autoscale_1_1AutoScaleClient.html#aac62e1b2723c460fd0571b43056a9dc3',1,'pyrax::autoscale::AutoScaleClient.update_launch_metadata()']]], + ['update_5fmetadata',['update_metadata',['../classpyrax_1_1autoscale_1_1ScalingGroup.html#a9d058767846954b6ab457ffa13ab66a1',1,'pyrax::autoscale::ScalingGroup.update_metadata()'],['../classpyrax_1_1autoscale_1_1ScalingGroupManager.html#a9d058767846954b6ab457ffa13ab66a1',1,'pyrax::autoscale::ScalingGroupManager.update_metadata()'],['../classpyrax_1_1autoscale_1_1AutoScaleWebhook.html#a9d058767846954b6ab457ffa13ab66a1',1,'pyrax::autoscale::AutoScaleWebhook.update_metadata()'],['../classpyrax_1_1autoscale_1_1AutoScaleClient.html#a9d058767846954b6ab457ffa13ab66a1',1,'pyrax::autoscale::AutoScaleClient.update_metadata()'],['../classpyrax_1_1cloudloadbalancers_1_1CloudLoadBalancer.html#a9d058767846954b6ab457ffa13ab66a1',1,'pyrax::cloudloadbalancers::CloudLoadBalancer.update_metadata()'],['../classpyrax_1_1cloudloadbalancers_1_1CloudLoadBalancerManager.html#a9d058767846954b6ab457ffa13ab66a1',1,'pyrax::cloudloadbalancers::CloudLoadBalancerManager.update_metadata()'],['../classpyrax_1_1cloudloadbalancers_1_1Node.html#a9d058767846954b6ab457ffa13ab66a1',1,'pyrax::cloudloadbalancers::Node.update_metadata()'],['../classpyrax_1_1cloudloadbalancers_1_1CloudLoadBalancerClient.html#a9d058767846954b6ab457ffa13ab66a1',1,'pyrax::cloudloadbalancers::CloudLoadBalancerClient.update_metadata()']]], ['update_5fmetadata_5ffor_5fnode',['update_metadata_for_node',['../classpyrax_1_1cloudloadbalancers_1_1CloudLoadBalancer.html#a9e5d5d52be314fb657499b69f4cbd84a',1,'pyrax::cloudloadbalancers::CloudLoadBalancer.update_metadata_for_node()'],['../classpyrax_1_1cloudloadbalancers_1_1CloudLoadBalancerClient.html#a9e5d5d52be314fb657499b69f4cbd84a',1,'pyrax::cloudloadbalancers::CloudLoadBalancerClient.update_metadata_for_node()']]], ['update_5fnode',['update_node',['../classpyrax_1_1cloudloadbalancers_1_1CloudLoadBalancer.html#a4712372bbfec39b9fdb36157aac37257',1,'pyrax::cloudloadbalancers::CloudLoadBalancer.update_node()'],['../classpyrax_1_1cloudloadbalancers_1_1CloudLoadBalancerManager.html#a4712372bbfec39b9fdb36157aac37257',1,'pyrax::cloudloadbalancers::CloudLoadBalancerManager.update_node()'],['../classpyrax_1_1cloudloadbalancers_1_1CloudLoadBalancerClient.html#a4712372bbfec39b9fdb36157aac37257',1,'pyrax::cloudloadbalancers::CloudLoadBalancerClient.update_node()']]], + ['update_5fnotification',['update_notification',['../classpyrax_1_1cloudmonitoring_1_1CloudMonitorNotificationManager.html#a6cdeefba8739539dfaef18a7773e76ff',1,'pyrax::cloudmonitoring::CloudMonitorNotificationManager.update_notification()'],['../classpyrax_1_1cloudmonitoring_1_1CloudMonitorClient.html#a6cdeefba8739539dfaef18a7773e76ff',1,'pyrax::cloudmonitoring::CloudMonitorClient.update_notification()']]], + ['update_5fpolicy',['update_policy',['../classpyrax_1_1autoscale_1_1ScalingGroup.html#a671573d9f0e941efddc5450bc51d4d48',1,'pyrax::autoscale::ScalingGroup.update_policy()'],['../classpyrax_1_1autoscale_1_1ScalingGroupManager.html#a671573d9f0e941efddc5450bc51d4d48',1,'pyrax::autoscale::ScalingGroupManager.update_policy()'],['../classpyrax_1_1autoscale_1_1AutoScaleClient.html#a671573d9f0e941efddc5450bc51d4d48',1,'pyrax::autoscale::AutoScaleClient.update_policy()']]], ['update_5fptr_5frecord',['update_ptr_record',['../classpyrax_1_1clouddns_1_1CloudDNSManager.html#adb65ca014db6a16bb4c43d31087ae844',1,'pyrax::clouddns::CloudDNSManager.update_ptr_record()'],['../classpyrax_1_1clouddns_1_1CloudDNSClient.html#adb65ca014db6a16bb4c43d31087ae844',1,'pyrax::clouddns::CloudDNSClient.update_ptr_record()']]], ['update_5frecord',['update_record',['../classpyrax_1_1clouddns_1_1CloudDNSDomain.html#a68301b71ce78f89e6a5d44f1cb9c362a',1,'pyrax::clouddns::CloudDNSDomain.update_record()'],['../classpyrax_1_1clouddns_1_1CloudDNSManager.html#a68301b71ce78f89e6a5d44f1cb9c362a',1,'pyrax::clouddns::CloudDNSManager.update_record()'],['../classpyrax_1_1clouddns_1_1CloudDNSClient.html#a68301b71ce78f89e6a5d44f1cb9c362a',1,'pyrax::clouddns::CloudDNSClient.update_record()']]], ['update_5fssl_5ftermination',['update_ssl_termination',['../classpyrax_1_1cloudloadbalancers_1_1CloudLoadBalancer.html#aad4c90f91195d71b1d99ee598220cb14',1,'pyrax::cloudloadbalancers::CloudLoadBalancer.update_ssl_termination()'],['../classpyrax_1_1cloudloadbalancers_1_1CloudLoadBalancerManager.html#aad4c90f91195d71b1d99ee598220cb14',1,'pyrax::cloudloadbalancers::CloudLoadBalancerManager.update_ssl_termination()'],['../classpyrax_1_1cloudloadbalancers_1_1CloudLoadBalancerClient.html#aad4c90f91195d71b1d99ee598220cb14',1,'pyrax::cloudloadbalancers::CloudLoadBalancerClient.update_ssl_termination()']]], ['update_5ftenant',['update_tenant',['../classpyrax_1_1base__identity_1_1BaseAuth.html#a25f2b401ee3068816e774d648abd83de',1,'pyrax::base_identity::BaseAuth']]], ['update_5fuser',['update_user',['../classpyrax_1_1base__identity_1_1BaseAuth.html#a1a7d86495f2e95ce37b02894a6fe85df',1,'pyrax::base_identity::BaseAuth.update_user()'],['../classpyrax_1_1identity_1_1rax__identity_1_1RaxIdentity.html#a1a7d86495f2e95ce37b02894a6fe85df',1,'pyrax::identity::rax_identity::RaxIdentity.update_user()']]], + ['update_5fwebhook',['update_webhook',['../classpyrax_1_1autoscale_1_1ScalingGroup.html#a210ee9051a2ad35b497f979f2a3123cb',1,'pyrax::autoscale::ScalingGroup.update_webhook()'],['../classpyrax_1_1autoscale_1_1ScalingGroupManager.html#a210ee9051a2ad35b497f979f2a3123cb',1,'pyrax::autoscale::ScalingGroupManager.update_webhook()'],['../classpyrax_1_1autoscale_1_1AutoScalePolicy.html#a210ee9051a2ad35b497f979f2a3123cb',1,'pyrax::autoscale::AutoScalePolicy.update_webhook()'],['../classpyrax_1_1autoscale_1_1AutoScaleClient.html#a210ee9051a2ad35b497f979f2a3123cb',1,'pyrax::autoscale::AutoScaleClient.update_webhook()']]], + ['update_5fwebhook_5fmetadata',['update_webhook_metadata',['../classpyrax_1_1autoscale_1_1ScalingGroup.html#a145c2a7a53b56e7450b1b4659cd6c616',1,'pyrax::autoscale::ScalingGroup.update_webhook_metadata()'],['../classpyrax_1_1autoscale_1_1ScalingGroupManager.html#a145c2a7a53b56e7450b1b4659cd6c616',1,'pyrax::autoscale::ScalingGroupManager.update_webhook_metadata()'],['../classpyrax_1_1autoscale_1_1AutoScalePolicy.html#a145c2a7a53b56e7450b1b4659cd6c616',1,'pyrax::autoscale::AutoScalePolicy.update_webhook_metadata()'],['../classpyrax_1_1autoscale_1_1AutoScaleClient.html#a145c2a7a53b56e7450b1b4659cd6c616',1,'pyrax::autoscale::AutoScaleClient.update_webhook_metadata()']]], ['upload_5ffile',['upload_file',['../classpyrax_1_1cf__wrapper_1_1client_1_1CFClient.html#a3857f84faa9608b0bf0a4e84ba5b1566',1,'pyrax::cf_wrapper::client::CFClient.upload_file()'],['../classpyrax_1_1cf__wrapper_1_1container_1_1Container.html#a3857f84faa9608b0bf0a4e84ba5b1566',1,'pyrax::cf_wrapper::container::Container.upload_file()']]], ['upload_5ffiles_5fin_5ffolder',['upload_files_in_folder',['../classpyrax_1_1cf__wrapper_1_1client_1_1FolderUploader.html#af1d1df487458050d64d162846617d266',1,'pyrax::cf_wrapper::client::FolderUploader']]], ['upload_5ffolder',['upload_folder',['../classpyrax_1_1cf__wrapper_1_1client_1_1CFClient.html#a1d81cba43ddabd40e412c5d709192958',1,'pyrax::cf_wrapper::client::CFClient']]], @@ -27,8 +36,8 @@ var searchData= ['url',['url',['../classpyrax_1_1cf__wrapper_1_1client_1_1Connection.html#afcd5a3e84f2adb7f83fa6c99911f31e4',1,'pyrax::cf_wrapper::client::Connection.url()'],['../namespacesetup.html#aa03c1ef4c41f36b048cf58d5aade7653',1,'setup.url()']]], ['url_5ffor',['url_for',['../classpyrax_1_1service__catalog_1_1ServiceCatalog.html#a50e97fbd8e0fb99b0ebf1b6d31958969',1,'pyrax::service_catalog::ServiceCatalog']]], ['used',['used',['../classpyrax_1_1clouddatabases_1_1CloudDatabaseVolume.html#ab896e794c7918f3e8a6ca0f8339f1add',1,'pyrax::clouddatabases::CloudDatabaseVolume']]], - ['user',['User',['../classpyrax_1_1base__identity_1_1User.html',1,'pyrax::base_identity']]], ['user',['user',['../classpyrax_1_1base__identity_1_1BaseAuth.html#a5cc32e366c87c4cb49e4309b75f57d64',1,'pyrax::base_identity::BaseAuth']]], + ['user',['User',['../classpyrax_1_1base__identity_1_1User.html',1,'pyrax::base_identity']]], ['user_5fagent',['user_agent',['../classpyrax_1_1base__identity_1_1BaseAuth.html#a51351345c837229ad773526cbc137fdf',1,'pyrax::base_identity::BaseAuth.user_agent()'],['../classpyrax_1_1cf__wrapper_1_1client_1_1CFClient.html#ac1b27022e729d81b2b33590aea822188',1,'pyrax::cf_wrapper::client::CFClient.user_agent()'],['../classpyrax_1_1cf__wrapper_1_1client_1_1Connection.html#ac1b27022e729d81b2b33590aea822188',1,'pyrax::cf_wrapper::client::Connection.user_agent()'],['../classpyrax_1_1client_1_1BaseClient.html#ac1b27022e729d81b2b33590aea822188',1,'pyrax::client::BaseClient::user_agent()'],['../namespacepyrax.html#af2dfe76f6f24fbcdfd28b75ed32ada24',1,'pyrax.USER_AGENT()']]], ['username',['username',['../classpyrax_1_1base__identity_1_1BaseAuth.html#aad02f271a6536fa078c6d1369ffdadc4',1,'pyrax::base_identity::BaseAuth::username()'],['../classpyrax_1_1base__identity_1_1BaseAuth.html#a0adcbe0e0e6f64a29b1d205ede9632c1',1,'pyrax::base_identity::BaseAuth::username()'],['../classpyrax_1_1identity_1_1rax__identity_1_1RaxIdentity.html#a0adcbe0e0e6f64a29b1d205ede9632c1',1,'pyrax::identity::rax_identity::RaxIdentity::username()']]], ['usernotfound',['UserNotFound',['../classpyrax_1_1exceptions_1_1UserNotFound.html',1,'pyrax::exceptions']]], diff --git a/docs/html/search/classes_61.js b/docs/html/search/classes_61.js index 7091104d..ec7b1698 100644 --- a/docs/html/search/classes_61.js +++ b/docs/html/search/classes_61.js @@ -4,5 +4,8 @@ var searchData= ['ambiguousendpoints',['AmbiguousEndpoints',['../classpyrax_1_1exceptions_1_1AmbiguousEndpoints.html',1,'pyrax::exceptions']]], ['authenticationfailed',['AuthenticationFailed',['../classpyrax_1_1exceptions_1_1AuthenticationFailed.html',1,'pyrax::exceptions']]], ['authorizationfailure',['AuthorizationFailure',['../classpyrax_1_1exceptions_1_1AuthorizationFailure.html',1,'pyrax::exceptions']]], - ['authsystemnotfound',['AuthSystemNotFound',['../classpyrax_1_1exceptions_1_1AuthSystemNotFound.html',1,'pyrax::exceptions']]] + ['authsystemnotfound',['AuthSystemNotFound',['../classpyrax_1_1exceptions_1_1AuthSystemNotFound.html',1,'pyrax::exceptions']]], + ['autoscaleclient',['AutoScaleClient',['../classpyrax_1_1autoscale_1_1AutoScaleClient.html',1,'pyrax::autoscale']]], + ['autoscalepolicy',['AutoScalePolicy',['../classpyrax_1_1autoscale_1_1AutoScalePolicy.html',1,'pyrax::autoscale']]], + ['autoscalewebhook',['AutoScaleWebhook',['../classpyrax_1_1autoscale_1_1AutoScaleWebhook.html',1,'pyrax::autoscale']]] ]; diff --git a/docs/html/search/classes_63.js b/docs/html/search/classes_63.js index b054e219..b73a8db9 100644 --- a/docs/html/search/classes_63.js +++ b/docs/html/search/classes_63.js @@ -23,6 +23,18 @@ var searchData= ['cloudloadbalancer',['CloudLoadBalancer',['../classpyrax_1_1cloudloadbalancers_1_1CloudLoadBalancer.html',1,'pyrax::cloudloadbalancers']]], ['cloudloadbalancerclient',['CloudLoadBalancerClient',['../classpyrax_1_1cloudloadbalancers_1_1CloudLoadBalancerClient.html',1,'pyrax::cloudloadbalancers']]], ['cloudloadbalancermanager',['CloudLoadBalancerManager',['../classpyrax_1_1cloudloadbalancers_1_1CloudLoadBalancerManager.html',1,'pyrax::cloudloadbalancers']]], + ['cloudmonitoralarm',['CloudMonitorAlarm',['../classpyrax_1_1cloudmonitoring_1_1CloudMonitorAlarm.html',1,'pyrax::cloudmonitoring']]], + ['cloudmonitorcheck',['CloudMonitorCheck',['../classpyrax_1_1cloudmonitoring_1_1CloudMonitorCheck.html',1,'pyrax::cloudmonitoring']]], + ['cloudmonitorchecktype',['CloudMonitorCheckType',['../classpyrax_1_1cloudmonitoring_1_1CloudMonitorCheckType.html',1,'pyrax::cloudmonitoring']]], + ['cloudmonitorclient',['CloudMonitorClient',['../classpyrax_1_1cloudmonitoring_1_1CloudMonitorClient.html',1,'pyrax::cloudmonitoring']]], + ['cloudmonitorentity',['CloudMonitorEntity',['../classpyrax_1_1cloudmonitoring_1_1CloudMonitorEntity.html',1,'pyrax::cloudmonitoring']]], + ['cloudmonitorentitymanager',['CloudMonitorEntityManager',['../classpyrax_1_1cloudmonitoring_1_1CloudMonitorEntityManager.html',1,'pyrax::cloudmonitoring']]], + ['cloudmonitornotification',['CloudMonitorNotification',['../classpyrax_1_1cloudmonitoring_1_1CloudMonitorNotification.html',1,'pyrax::cloudmonitoring']]], + ['cloudmonitornotificationmanager',['CloudMonitorNotificationManager',['../classpyrax_1_1cloudmonitoring_1_1CloudMonitorNotificationManager.html',1,'pyrax::cloudmonitoring']]], + ['cloudmonitornotificationplan',['CloudMonitorNotificationPlan',['../classpyrax_1_1cloudmonitoring_1_1CloudMonitorNotificationPlan.html',1,'pyrax::cloudmonitoring']]], + ['cloudmonitornotificationplanmanager',['CloudMonitorNotificationPlanManager',['../classpyrax_1_1cloudmonitoring_1_1CloudMonitorNotificationPlanManager.html',1,'pyrax::cloudmonitoring']]], + ['cloudmonitornotificationtype',['CloudMonitorNotificationType',['../classpyrax_1_1cloudmonitoring_1_1CloudMonitorNotificationType.html',1,'pyrax::cloudmonitoring']]], + ['cloudmonitorzone',['CloudMonitorZone',['../classpyrax_1_1cloudmonitoring_1_1CloudMonitorZone.html',1,'pyrax::cloudmonitoring']]], ['cloudnetwork',['CloudNetwork',['../classpyrax_1_1cloudnetworks_1_1CloudNetwork.html',1,'pyrax::cloudnetworks']]], ['cloudnetworkclient',['CloudNetworkClient',['../classpyrax_1_1cloudnetworks_1_1CloudNetworkClient.html',1,'pyrax::cloudnetworks']]], ['cloudnetworkmanager',['CloudNetworkManager',['../classpyrax_1_1cloudnetworks_1_1CloudNetworkManager.html',1,'pyrax::cloudnetworks']]], diff --git a/docs/html/search/classes_69.js b/docs/html/search/classes_69.js index fbbbc842..aa21838e 100644 --- a/docs/html/search/classes_69.js +++ b/docs/html/search/classes_69.js @@ -6,7 +6,12 @@ var searchData= ['invalidcredentialfile',['InvalidCredentialFile',['../classpyrax_1_1exceptions_1_1InvalidCredentialFile.html',1,'pyrax::exceptions']]], ['invaliddatetimestring',['InvalidDateTimeString',['../classpyrax_1_1exceptions_1_1InvalidDateTimeString.html',1,'pyrax::exceptions']]], ['invaliddevicetype',['InvalidDeviceType',['../classpyrax_1_1exceptions_1_1InvalidDeviceType.html',1,'pyrax::exceptions']]], + ['invalidloadbalancer',['InvalidLoadBalancer',['../classpyrax_1_1exceptions_1_1InvalidLoadBalancer.html',1,'pyrax::exceptions']]], ['invalidloadbalancerparameters',['InvalidLoadBalancerParameters',['../classpyrax_1_1exceptions_1_1InvalidLoadBalancerParameters.html',1,'pyrax::exceptions']]], + ['invalidmonitoringcheckdetails',['InvalidMonitoringCheckDetails',['../classpyrax_1_1exceptions_1_1InvalidMonitoringCheckDetails.html',1,'pyrax::exceptions']]], + ['invalidmonitoringcheckupdate',['InvalidMonitoringCheckUpdate',['../classpyrax_1_1exceptions_1_1InvalidMonitoringCheckUpdate.html',1,'pyrax::exceptions']]], + ['invalidmonitoringmetricsrequest',['InvalidMonitoringMetricsRequest',['../classpyrax_1_1exceptions_1_1InvalidMonitoringMetricsRequest.html',1,'pyrax::exceptions']]], + ['invalidmonitoringmetricsresolution',['InvalidMonitoringMetricsResolution',['../classpyrax_1_1exceptions_1_1InvalidMonitoringMetricsResolution.html',1,'pyrax::exceptions']]], ['invalidnodecondition',['InvalidNodeCondition',['../classpyrax_1_1exceptions_1_1InvalidNodeCondition.html',1,'pyrax::exceptions']]], ['invalidnodeparameters',['InvalidNodeParameters',['../classpyrax_1_1exceptions_1_1InvalidNodeParameters.html',1,'pyrax::exceptions']]], ['invalidptrrecord',['InvalidPTRRecord',['../classpyrax_1_1exceptions_1_1InvalidPTRRecord.html',1,'pyrax::exceptions']]], diff --git a/docs/html/search/classes_6d.js b/docs/html/search/classes_6d.js index fad5aa41..409bda76 100644 --- a/docs/html/search/classes_6d.js +++ b/docs/html/search/classes_6d.js @@ -4,6 +4,10 @@ var searchData= ['missingdnssettings',['MissingDNSSettings',['../classpyrax_1_1exceptions_1_1MissingDNSSettings.html',1,'pyrax::exceptions']]], ['missinghealthmonitorsettings',['MissingHealthMonitorSettings',['../classpyrax_1_1exceptions_1_1MissingHealthMonitorSettings.html',1,'pyrax::exceptions']]], ['missingloadbalancerparameters',['MissingLoadBalancerParameters',['../classpyrax_1_1exceptions_1_1MissingLoadBalancerParameters.html',1,'pyrax::exceptions']]], + ['missingmonitoringcheckdetails',['MissingMonitoringCheckDetails',['../classpyrax_1_1exceptions_1_1MissingMonitoringCheckDetails.html',1,'pyrax::exceptions']]], + ['missingmonitoringcheckgranularity',['MissingMonitoringCheckGranularity',['../classpyrax_1_1exceptions_1_1MissingMonitoringCheckGranularity.html',1,'pyrax::exceptions']]], ['missingname',['MissingName',['../classpyrax_1_1exceptions_1_1MissingName.html',1,'pyrax::exceptions']]], - ['missingtemporaryurlkey',['MissingTemporaryURLKey',['../classpyrax_1_1exceptions_1_1MissingTemporaryURLKey.html',1,'pyrax::exceptions']]] + ['missingtemporaryurlkey',['MissingTemporaryURLKey',['../classpyrax_1_1exceptions_1_1MissingTemporaryURLKey.html',1,'pyrax::exceptions']]], + ['monitoringchecktargetnotspecified',['MonitoringCheckTargetNotSpecified',['../classpyrax_1_1exceptions_1_1MonitoringCheckTargetNotSpecified.html',1,'pyrax::exceptions']]], + ['monitoringzonespollmissing',['MonitoringZonesPollMissing',['../classpyrax_1_1exceptions_1_1MonitoringZonesPollMissing.html',1,'pyrax::exceptions']]] ]; diff --git a/docs/html/search/classes_73.js b/docs/html/search/classes_73.js index 5304d62a..da141d1d 100644 --- a/docs/html/search/classes_73.js +++ b/docs/html/search/classes_73.js @@ -1,5 +1,7 @@ var searchData= [ + ['scalinggroup',['ScalingGroup',['../classpyrax_1_1autoscale_1_1ScalingGroup.html',1,'pyrax::autoscale']]], + ['scalinggroupmanager',['ScalingGroupManager',['../classpyrax_1_1autoscale_1_1ScalingGroupManager.html',1,'pyrax::autoscale']]], ['selfdeletingtempdirectory',['SelfDeletingTempDirectory',['../classpyrax_1_1utils_1_1SelfDeletingTempDirectory.html',1,'pyrax::utils']]], ['selfdeletingtempfile',['SelfDeletingTempfile',['../classpyrax_1_1utils_1_1SelfDeletingTempfile.html',1,'pyrax::utils']]], ['servicecatalog',['ServiceCatalog',['../classpyrax_1_1service__catalog_1_1ServiceCatalog.html',1,'pyrax::service_catalog']]], diff --git a/docs/html/search/files_61.html b/docs/html/search/files_61.html new file mode 100644 index 00000000..5a8e4549 --- /dev/null +++ b/docs/html/search/files_61.html @@ -0,0 +1,25 @@ + + + + + + + + +
                                                                      +
                                                                      Loading...
                                                                      +
                                                                      + +
                                                                      Searching...
                                                                      +
                                                                      No Matches
                                                                      + +
                                                                      + + diff --git a/docs/html/search/files_61.js b/docs/html/search/files_61.js new file mode 100644 index 00000000..0479f05b --- /dev/null +++ b/docs/html/search/files_61.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['autoscale_2epy',['autoscale.py',['../autoscale_8py.html',1,'']]] +]; diff --git a/docs/html/search/files_63.js b/docs/html/search/files_63.js index a9892736..386a31cd 100644 --- a/docs/html/search/files_63.js +++ b/docs/html/search/files_63.js @@ -6,6 +6,7 @@ var searchData= ['clouddatabases_2epy',['clouddatabases.py',['../clouddatabases_8py.html',1,'']]], ['clouddns_2epy',['clouddns.py',['../clouddns_8py.html',1,'']]], ['cloudloadbalancers_2epy',['cloudloadbalancers.py',['../cloudloadbalancers_8py.html',1,'']]], + ['cloudmonitoring_2epy',['cloudmonitoring.py',['../cloudmonitoring_8py.html',1,'']]], ['cloudnetworks_2epy',['cloudnetworks.py',['../cloudnetworks_8py.html',1,'']]], ['container_2epy',['container.py',['../container_8py.html',1,'']]] ]; diff --git a/docs/html/search/functions_5f.js b/docs/html/search/functions_5f.js index e0639cc9..06cef22b 100644 --- a/docs/html/search/functions_5f.js +++ b/docs/html/search/functions_5f.js @@ -4,7 +4,7 @@ var searchData= ['_5f_5feq_5f_5f',['__eq__',['../classpyrax_1_1cloudloadbalancers_1_1Node.html#a449f8fd74d358c0ad641b6c6d6917ba0',1,'pyrax::cloudloadbalancers::Node.__eq__()'],['../classpyrax_1_1resource_1_1BaseResource.html#a449f8fd74d358c0ad641b6c6d6917ba0',1,'pyrax::resource::BaseResource.__eq__()']]], ['_5f_5fexit_5f_5f',['__exit__',['../classpyrax_1_1utils_1_1SelfDeletingTempfile.html#a6de07022804200d0fb6383c0a237ee8e',1,'pyrax::utils::SelfDeletingTempfile.__exit__()'],['../classpyrax_1_1utils_1_1SelfDeletingTempDirectory.html#a6de07022804200d0fb6383c0a237ee8e',1,'pyrax::utils::SelfDeletingTempDirectory.__exit__()']]], ['_5f_5fgetattr_5f_5f',['__getattr__',['../classpyrax_1_1resource_1_1BaseResource.html#a0a990b3ec3889d40889daca9ee5e4695',1,'pyrax::resource::BaseResource']]], - ['_5f_5finit_5f_5f',['__init__',['../classpyrax_1_1base__identity_1_1BaseAuth.html#ac775ee34451fdfa742b318538164070e',1,'pyrax::base_identity::BaseAuth.__init__()'],['../classpyrax_1_1cf__wrapper_1_1client_1_1CFClient.html#ac775ee34451fdfa742b318538164070e',1,'pyrax::cf_wrapper::client::CFClient.__init__()'],['../classpyrax_1_1cf__wrapper_1_1client_1_1Connection.html#ac775ee34451fdfa742b318538164070e',1,'pyrax::cf_wrapper::client::Connection.__init__()'],['../classpyrax_1_1cf__wrapper_1_1client_1_1FolderUploader.html#ac775ee34451fdfa742b318538164070e',1,'pyrax::cf_wrapper::client::FolderUploader.__init__()'],['../classpyrax_1_1cf__wrapper_1_1container_1_1Container.html#ac775ee34451fdfa742b318538164070e',1,'pyrax::cf_wrapper::container::Container.__init__()'],['../classpyrax_1_1cf__wrapper_1_1storage__object_1_1StorageObject.html#ac775ee34451fdfa742b318538164070e',1,'pyrax::cf_wrapper::storage_object::StorageObject.__init__()'],['../classpyrax_1_1client_1_1BaseClient.html#ac775ee34451fdfa742b318538164070e',1,'pyrax::client::BaseClient.__init__()'],['../classpyrax_1_1cloudblockstorage_1_1CloudBlockStorageVolume.html#ac775ee34451fdfa742b318538164070e',1,'pyrax::cloudblockstorage::CloudBlockStorageVolume.__init__()'],['../classpyrax_1_1clouddatabases_1_1CloudDatabaseVolume.html#ac775ee34451fdfa742b318538164070e',1,'pyrax::clouddatabases::CloudDatabaseVolume.__init__()'],['../classpyrax_1_1clouddatabases_1_1CloudDatabaseInstance.html#ac775ee34451fdfa742b318538164070e',1,'pyrax::clouddatabases::CloudDatabaseInstance.__init__()'],['../classpyrax_1_1clouddns_1_1CloudDNSPTRRecord.html#ac775ee34451fdfa742b318538164070e',1,'pyrax::clouddns::CloudDNSPTRRecord.__init__()'],['../classpyrax_1_1clouddns_1_1CloudDNSManager.html#ac775ee34451fdfa742b318538164070e',1,'pyrax::clouddns::CloudDNSManager.__init__()'],['../classpyrax_1_1clouddns_1_1ResultsIterator.html#ac775ee34451fdfa742b318538164070e',1,'pyrax::clouddns::ResultsIterator.__init__()'],['../classpyrax_1_1cloudloadbalancers_1_1CloudLoadBalancer.html#ac775ee34451fdfa742b318538164070e',1,'pyrax::cloudloadbalancers::CloudLoadBalancer.__init__()'],['../classpyrax_1_1cloudloadbalancers_1_1Node.html#ac775ee34451fdfa742b318538164070e',1,'pyrax::cloudloadbalancers::Node.__init__()'],['../classpyrax_1_1cloudloadbalancers_1_1VirtualIP.html#ac775ee34451fdfa742b318538164070e',1,'pyrax::cloudloadbalancers::VirtualIP.__init__()'],['../classpyrax_1_1cloudloadbalancers_1_1CloudLoadBalancerClient.html#ac775ee34451fdfa742b318538164070e',1,'pyrax::cloudloadbalancers::CloudLoadBalancerClient.__init__()'],['../classpyrax_1_1cloudnetworks_1_1CloudNetworkClient.html#ac775ee34451fdfa742b318538164070e',1,'pyrax::cloudnetworks::CloudNetworkClient.__init__()'],['../classpyrax_1_1exceptions_1_1AmbiguousEndpoints.html#ac775ee34451fdfa742b318538164070e',1,'pyrax::exceptions::AmbiguousEndpoints.__init__()'],['../classpyrax_1_1exceptions_1_1ClientException.html#ac775ee34451fdfa742b318538164070e',1,'pyrax::exceptions::ClientException.__init__()'],['../classpyrax_1_1manager_1_1BaseManager.html#ac775ee34451fdfa742b318538164070e',1,'pyrax::manager::BaseManager.__init__()'],['../classpyrax_1_1resource_1_1BaseResource.html#ac775ee34451fdfa742b318538164070e',1,'pyrax::resource::BaseResource.__init__()'],['../classpyrax_1_1service__catalog_1_1ServiceCatalog.html#ac775ee34451fdfa742b318538164070e',1,'pyrax::service_catalog::ServiceCatalog.__init__()'],['../classpyrax_1_1utils_1_1__WaitThread.html#ac775ee34451fdfa742b318538164070e',1,'pyrax::utils::_WaitThread.__init__()']]], + ['_5f_5finit_5f_5f',['__init__',['../classpyrax_1_1autoscale_1_1ScalingGroup.html#ac775ee34451fdfa742b318538164070e',1,'pyrax::autoscale::ScalingGroup.__init__()'],['../classpyrax_1_1autoscale_1_1ScalingGroupManager.html#ac775ee34451fdfa742b318538164070e',1,'pyrax::autoscale::ScalingGroupManager.__init__()'],['../classpyrax_1_1autoscale_1_1AutoScalePolicy.html#ac775ee34451fdfa742b318538164070e',1,'pyrax::autoscale::AutoScalePolicy.__init__()'],['../classpyrax_1_1autoscale_1_1AutoScaleWebhook.html#ac775ee34451fdfa742b318538164070e',1,'pyrax::autoscale::AutoScaleWebhook.__init__()'],['../classpyrax_1_1base__identity_1_1BaseAuth.html#ac775ee34451fdfa742b318538164070e',1,'pyrax::base_identity::BaseAuth.__init__()'],['../classpyrax_1_1cf__wrapper_1_1client_1_1CFClient.html#ac775ee34451fdfa742b318538164070e',1,'pyrax::cf_wrapper::client::CFClient.__init__()'],['../classpyrax_1_1cf__wrapper_1_1client_1_1Connection.html#ac775ee34451fdfa742b318538164070e',1,'pyrax::cf_wrapper::client::Connection.__init__()'],['../classpyrax_1_1cf__wrapper_1_1client_1_1FolderUploader.html#ac775ee34451fdfa742b318538164070e',1,'pyrax::cf_wrapper::client::FolderUploader.__init__()'],['../classpyrax_1_1cf__wrapper_1_1container_1_1Container.html#ac775ee34451fdfa742b318538164070e',1,'pyrax::cf_wrapper::container::Container.__init__()'],['../classpyrax_1_1cf__wrapper_1_1storage__object_1_1StorageObject.html#ac775ee34451fdfa742b318538164070e',1,'pyrax::cf_wrapper::storage_object::StorageObject.__init__()'],['../classpyrax_1_1client_1_1BaseClient.html#ac775ee34451fdfa742b318538164070e',1,'pyrax::client::BaseClient.__init__()'],['../classpyrax_1_1cloudblockstorage_1_1CloudBlockStorageVolume.html#ac775ee34451fdfa742b318538164070e',1,'pyrax::cloudblockstorage::CloudBlockStorageVolume.__init__()'],['../classpyrax_1_1clouddatabases_1_1CloudDatabaseVolume.html#ac775ee34451fdfa742b318538164070e',1,'pyrax::clouddatabases::CloudDatabaseVolume.__init__()'],['../classpyrax_1_1clouddatabases_1_1CloudDatabaseInstance.html#ac775ee34451fdfa742b318538164070e',1,'pyrax::clouddatabases::CloudDatabaseInstance.__init__()'],['../classpyrax_1_1clouddns_1_1CloudDNSPTRRecord.html#ac775ee34451fdfa742b318538164070e',1,'pyrax::clouddns::CloudDNSPTRRecord.__init__()'],['../classpyrax_1_1clouddns_1_1CloudDNSManager.html#ac775ee34451fdfa742b318538164070e',1,'pyrax::clouddns::CloudDNSManager.__init__()'],['../classpyrax_1_1clouddns_1_1ResultsIterator.html#ac775ee34451fdfa742b318538164070e',1,'pyrax::clouddns::ResultsIterator.__init__()'],['../classpyrax_1_1cloudloadbalancers_1_1CloudLoadBalancer.html#ac775ee34451fdfa742b318538164070e',1,'pyrax::cloudloadbalancers::CloudLoadBalancer.__init__()'],['../classpyrax_1_1cloudloadbalancers_1_1Node.html#ac775ee34451fdfa742b318538164070e',1,'pyrax::cloudloadbalancers::Node.__init__()'],['../classpyrax_1_1cloudloadbalancers_1_1VirtualIP.html#ac775ee34451fdfa742b318538164070e',1,'pyrax::cloudloadbalancers::VirtualIP.__init__()'],['../classpyrax_1_1cloudloadbalancers_1_1CloudLoadBalancerClient.html#ac775ee34451fdfa742b318538164070e',1,'pyrax::cloudloadbalancers::CloudLoadBalancerClient.__init__()'],['../classpyrax_1_1cloudmonitoring_1_1CloudMonitorCheck.html#ac775ee34451fdfa742b318538164070e',1,'pyrax::cloudmonitoring::CloudMonitorCheck.__init__()'],['../classpyrax_1_1cloudmonitoring_1_1CloudMonitorAlarm.html#ac775ee34451fdfa742b318538164070e',1,'pyrax::cloudmonitoring::CloudMonitorAlarm.__init__()'],['../classpyrax_1_1cloudmonitoring_1_1CloudMonitorClient.html#ac775ee34451fdfa742b318538164070e',1,'pyrax::cloudmonitoring::CloudMonitorClient.__init__()'],['../classpyrax_1_1cloudnetworks_1_1CloudNetworkClient.html#ac775ee34451fdfa742b318538164070e',1,'pyrax::cloudnetworks::CloudNetworkClient.__init__()'],['../classpyrax_1_1exceptions_1_1AmbiguousEndpoints.html#ac775ee34451fdfa742b318538164070e',1,'pyrax::exceptions::AmbiguousEndpoints.__init__()'],['../classpyrax_1_1exceptions_1_1ClientException.html#ac775ee34451fdfa742b318538164070e',1,'pyrax::exceptions::ClientException.__init__()'],['../classpyrax_1_1manager_1_1BaseManager.html#ac775ee34451fdfa742b318538164070e',1,'pyrax::manager::BaseManager.__init__()'],['../classpyrax_1_1resource_1_1BaseResource.html#ac775ee34451fdfa742b318538164070e',1,'pyrax::resource::BaseResource.__init__()'],['../classpyrax_1_1service__catalog_1_1ServiceCatalog.html#ac775ee34451fdfa742b318538164070e',1,'pyrax::service_catalog::ServiceCatalog.__init__()'],['../classpyrax_1_1utils_1_1__WaitThread.html#ac775ee34451fdfa742b318538164070e',1,'pyrax::utils::_WaitThread.__init__()']]], ['_5f_5fiter_5f_5f',['__iter__',['../classpyrax_1_1clouddns_1_1ResultsIterator.html#a3009f152864dea4eb5e89cd94143d563',1,'pyrax::clouddns::ResultsIterator']]], ['_5f_5fne_5f_5f',['__ne__',['../classpyrax_1_1cloudloadbalancers_1_1Node.html#ad69df72a6bf0be3525fe45cd2f77f343',1,'pyrax::cloudloadbalancers::Node']]], ['_5f_5fnonzero_5f_5f',['__nonzero__',['../classpyrax_1_1cf__wrapper_1_1container_1_1Fault.html#a14f4a7f4cbfde7254adc73da3b2de9a5',1,'pyrax::cf_wrapper::container::Fault']]], diff --git a/docs/html/search/functions_61.js b/docs/html/search/functions_61.js index fd951d14..c8039a07 100644 --- a/docs/html/search/functions_61.js +++ b/docs/html/search/functions_61.js @@ -7,10 +7,12 @@ var searchData= ['add_5fhook',['add_hook',['../classpyrax_1_1manager_1_1BaseManager.html#a59de7bcf6dec48b06d00ff9b771ef6b7',1,'pyrax::manager::BaseManager']]], ['add_5fmethod',['add_method',['../namespacepyrax_1_1utils.html#aa8d6873854a2bde7479a7fbe44d1d60b',1,'pyrax::utils']]], ['add_5fnodes',['add_nodes',['../classpyrax_1_1cloudloadbalancers_1_1CloudLoadBalancer.html#aaaa90c99f97822834b7407096d0b1dce',1,'pyrax::cloudloadbalancers::CloudLoadBalancer.add_nodes()'],['../classpyrax_1_1cloudloadbalancers_1_1CloudLoadBalancerManager.html#aaaa90c99f97822834b7407096d0b1dce',1,'pyrax::cloudloadbalancers::CloudLoadBalancerManager.add_nodes()'],['../classpyrax_1_1cloudloadbalancers_1_1CloudLoadBalancerClient.html#aaaa90c99f97822834b7407096d0b1dce',1,'pyrax::cloudloadbalancers::CloudLoadBalancerClient.add_nodes()']]], + ['add_5fpolicy',['add_policy',['../classpyrax_1_1autoscale_1_1ScalingGroup.html#a49744d3c8bab4cac387f77c5499ab639',1,'pyrax::autoscale::ScalingGroup.add_policy()'],['../classpyrax_1_1autoscale_1_1ScalingGroupManager.html#a49744d3c8bab4cac387f77c5499ab639',1,'pyrax::autoscale::ScalingGroupManager.add_policy()'],['../classpyrax_1_1autoscale_1_1AutoScaleClient.html#a49744d3c8bab4cac387f77c5499ab639',1,'pyrax::autoscale::AutoScaleClient.add_policy()']]], ['add_5fptr_5frecords',['add_ptr_records',['../classpyrax_1_1clouddns_1_1CloudDNSManager.html#af747d2095b106ddb07a528af0e86d7fd',1,'pyrax::clouddns::CloudDNSManager.add_ptr_records()'],['../classpyrax_1_1clouddns_1_1CloudDNSClient.html#af747d2095b106ddb07a528af0e86d7fd',1,'pyrax::clouddns::CloudDNSClient.add_ptr_records()']]], ['add_5frecords',['add_records',['../classpyrax_1_1clouddns_1_1CloudDNSDomain.html#abf676b7d485de10f8409a7904a0a8018',1,'pyrax::clouddns::CloudDNSDomain.add_records()'],['../classpyrax_1_1clouddns_1_1CloudDNSManager.html#abf676b7d485de10f8409a7904a0a8018',1,'pyrax::clouddns::CloudDNSManager.add_records()'],['../classpyrax_1_1clouddns_1_1CloudDNSClient.html#abf676b7d485de10f8409a7904a0a8018',1,'pyrax::clouddns::CloudDNSClient.add_records()']]], ['add_5fssl_5ftermination',['add_ssl_termination',['../classpyrax_1_1cloudloadbalancers_1_1CloudLoadBalancer.html#a66334c0c0a712389d1c0a3d1e43cbf98',1,'pyrax::cloudloadbalancers::CloudLoadBalancer.add_ssl_termination()'],['../classpyrax_1_1cloudloadbalancers_1_1CloudLoadBalancerManager.html#a66334c0c0a712389d1c0a3d1e43cbf98',1,'pyrax::cloudloadbalancers::CloudLoadBalancerManager.add_ssl_termination()'],['../classpyrax_1_1cloudloadbalancers_1_1CloudLoadBalancerClient.html#a66334c0c0a712389d1c0a3d1e43cbf98',1,'pyrax::cloudloadbalancers::CloudLoadBalancerClient.add_ssl_termination()']]], ['add_5fvirtualip',['add_virtualip',['../classpyrax_1_1cloudloadbalancers_1_1CloudLoadBalancer.html#ab264d37d545101c96e50d1e2924724cc',1,'pyrax::cloudloadbalancers::CloudLoadBalancer.add_virtualip()'],['../classpyrax_1_1cloudloadbalancers_1_1CloudLoadBalancerManager.html#ab264d37d545101c96e50d1e2924724cc',1,'pyrax::cloudloadbalancers::CloudLoadBalancerManager.add_virtualip()'],['../classpyrax_1_1cloudloadbalancers_1_1CloudLoadBalancerClient.html#ab264d37d545101c96e50d1e2924724cc',1,'pyrax::cloudloadbalancers::CloudLoadBalancerClient.add_virtualip()']]], + ['add_5fwebhook',['add_webhook',['../classpyrax_1_1autoscale_1_1ScalingGroup.html#ab26891c9d3c749645f264b371784898a',1,'pyrax::autoscale::ScalingGroup.add_webhook()'],['../classpyrax_1_1autoscale_1_1ScalingGroupManager.html#ab26891c9d3c749645f264b371784898a',1,'pyrax::autoscale::ScalingGroupManager.add_webhook()'],['../classpyrax_1_1autoscale_1_1AutoScalePolicy.html#ab26891c9d3c749645f264b371784898a',1,'pyrax::autoscale::AutoScalePolicy.add_webhook()'],['../classpyrax_1_1autoscale_1_1AutoScaleClient.html#ab26891c9d3c749645f264b371784898a',1,'pyrax::autoscale::AutoScaleClient.add_webhook()']]], ['algorithms',['algorithms',['../classpyrax_1_1cloudloadbalancers_1_1CloudLoadBalancerClient.html#aed666a925114f957f496874543d3f2a7',1,'pyrax::cloudloadbalancers::CloudLoadBalancerClient']]], ['all',['all',['../namespacepyrax_1_1manager.html#acedac857b1708c80eefe0a6c379bedec',1,'pyrax::manager']]], ['allowed_5fdomains',['allowed_domains',['../classpyrax_1_1cloudloadbalancers_1_1CloudLoadBalancerClient.html#a0a5c9a644fa7ae4b7a662ab33f00ed9c',1,'pyrax::cloudloadbalancers::CloudLoadBalancerClient']]], diff --git a/docs/html/search/functions_63.js b/docs/html/search/functions_63.js index 5167205f..984490db 100644 --- a/docs/html/search/functions_63.js +++ b/docs/html/search/functions_63.js @@ -12,18 +12,26 @@ var searchData= ['clear_5fcredentials',['clear_credentials',['../namespacepyrax.html#ac84933adaea04f7479d32c6a5cf6e028',1,'pyrax']]], ['clear_5ferror_5fpage',['clear_error_page',['../classpyrax_1_1cloudloadbalancers_1_1CloudLoadBalancer.html#aff0ccd9424518b3db68c4fbc3c99a710',1,'pyrax::cloudloadbalancers::CloudLoadBalancer.clear_error_page()'],['../classpyrax_1_1cloudloadbalancers_1_1CloudLoadBalancerManager.html#aff0ccd9424518b3db68c4fbc3c99a710',1,'pyrax::cloudloadbalancers::CloudLoadBalancerManager.clear_error_page()'],['../classpyrax_1_1cloudloadbalancers_1_1CloudLoadBalancerClient.html#aff0ccd9424518b3db68c4fbc3c99a710',1,'pyrax::cloudloadbalancers::CloudLoadBalancerClient.clear_error_page()']]], ['coerce_5fstring_5fto_5flist',['coerce_string_to_list',['../namespacepyrax_1_1utils.html#a399c6b9652f5150282c3edb32d4d05f3',1,'pyrax::utils']]], + ['connect_5fto_5fautoscale',['connect_to_autoscale',['../namespacepyrax.html#a1773238b5af2fb51b54754bbe83b2971',1,'pyrax']]], ['connect_5fto_5fcloud_5fblockstorage',['connect_to_cloud_blockstorage',['../namespacepyrax.html#a6028129593635bcde83ac8783a35f55e',1,'pyrax']]], ['connect_5fto_5fcloud_5fdatabases',['connect_to_cloud_databases',['../namespacepyrax.html#a2a85cb9869f6584edb2d652a82678225',1,'pyrax']]], ['connect_5fto_5fcloud_5fdns',['connect_to_cloud_dns',['../namespacepyrax.html#a51abe3757be9daee31826a1db8c2d332',1,'pyrax']]], ['connect_5fto_5fcloud_5floadbalancers',['connect_to_cloud_loadbalancers',['../namespacepyrax.html#a5858f51939fe223ec24c9befc4fa1a2a',1,'pyrax']]], + ['connect_5fto_5fcloud_5fmonitoring',['connect_to_cloud_monitoring',['../namespacepyrax.html#a56d538a03d4ded8621b4e483c93b5f1a',1,'pyrax']]], ['connect_5fto_5fcloud_5fnetworks',['connect_to_cloud_networks',['../namespacepyrax.html#af30f9f18e048c8f0e677808a1028d29a',1,'pyrax']]], ['connect_5fto_5fcloudfiles',['connect_to_cloudfiles',['../namespacepyrax.html#a34593b67ad113f95973c1c7a6546fa68',1,'pyrax']]], ['connect_5fto_5fcloudservers',['connect_to_cloudservers',['../namespacepyrax.html#a93dcb702dfed414cb32073e78fdff831',1,'pyrax']]], ['connect_5fto_5fservices',['connect_to_services',['../namespacepyrax.html#a708483dfb93616381fb0ec9338ab5528',1,'pyrax']]], + ['cooldown',['cooldown',['../classpyrax_1_1autoscale_1_1ScalingGroup.html#a2268f26f552b5fffb9a0cb5fca09048b',1,'pyrax::autoscale::ScalingGroup.cooldown'],['../classpyrax_1_1autoscale_1_1ScalingGroup.html#a2268f26f552b5fffb9a0cb5fca09048b',1,'pyrax::autoscale::ScalingGroup.cooldown']]], ['copy_5fobject',['copy_object',['../classpyrax_1_1cf__wrapper_1_1client_1_1CFClient.html#a7d45157fae0af819d907da6b00fa2378',1,'pyrax::cf_wrapper::client::CFClient']]], - ['create',['create',['../classpyrax_1_1client_1_1BaseClient.html#a5b7ef0221e471e99fa7f0a87a28ba1ea',1,'pyrax::client::BaseClient.create()'],['../classpyrax_1_1cloudblockstorage_1_1CloudBlockStorageClient.html#a5b7ef0221e471e99fa7f0a87a28ba1ea',1,'pyrax::cloudblockstorage::CloudBlockStorageClient.create()'],['../classpyrax_1_1cloudnetworks_1_1CloudNetworkClient.html#a5b7ef0221e471e99fa7f0a87a28ba1ea',1,'pyrax::cloudnetworks::CloudNetworkClient.create()'],['../classpyrax_1_1manager_1_1BaseManager.html#a5b7ef0221e471e99fa7f0a87a28ba1ea',1,'pyrax::manager::BaseManager.create()']]], + ['create',['create',['../classpyrax_1_1client_1_1BaseClient.html#a5b7ef0221e471e99fa7f0a87a28ba1ea',1,'pyrax::client::BaseClient.create()'],['../classpyrax_1_1cloudblockstorage_1_1CloudBlockStorageClient.html#a5b7ef0221e471e99fa7f0a87a28ba1ea',1,'pyrax::cloudblockstorage::CloudBlockStorageClient.create()'],['../classpyrax_1_1cloudmonitoring_1_1CloudMonitorNotificationManager.html#a5b7ef0221e471e99fa7f0a87a28ba1ea',1,'pyrax::cloudmonitoring::CloudMonitorNotificationManager.create()'],['../classpyrax_1_1cloudmonitoring_1_1CloudMonitorNotificationPlanManager.html#a5b7ef0221e471e99fa7f0a87a28ba1ea',1,'pyrax::cloudmonitoring::CloudMonitorNotificationPlanManager.create()'],['../classpyrax_1_1cloudmonitoring_1_1CloudMonitorClient.html#a5b7ef0221e471e99fa7f0a87a28ba1ea',1,'pyrax::cloudmonitoring::CloudMonitorClient.create()'],['../classpyrax_1_1cloudnetworks_1_1CloudNetworkClient.html#a5b7ef0221e471e99fa7f0a87a28ba1ea',1,'pyrax::cloudnetworks::CloudNetworkClient.create()'],['../classpyrax_1_1manager_1_1BaseManager.html#a5b7ef0221e471e99fa7f0a87a28ba1ea',1,'pyrax::manager::BaseManager.create()']]], + ['create_5falarm',['create_alarm',['../classpyrax_1_1cloudmonitoring_1_1CloudMonitorEntity.html#a5e3e83b1715922337eb99e95373166e6',1,'pyrax::cloudmonitoring::CloudMonitorEntity.create_alarm()'],['../classpyrax_1_1cloudmonitoring_1_1CloudMonitorEntityManager.html#a5e3e83b1715922337eb99e95373166e6',1,'pyrax::cloudmonitoring::CloudMonitorEntityManager.create_alarm()'],['../classpyrax_1_1cloudmonitoring_1_1CloudMonitorCheck.html#a5e3e83b1715922337eb99e95373166e6',1,'pyrax::cloudmonitoring::CloudMonitorCheck.create_alarm()'],['../classpyrax_1_1cloudmonitoring_1_1CloudMonitorClient.html#a5e3e83b1715922337eb99e95373166e6',1,'pyrax::cloudmonitoring::CloudMonitorClient.create_alarm()']]], + ['create_5fcheck',['create_check',['../classpyrax_1_1cloudmonitoring_1_1CloudMonitorEntityManager.html#a6fc873d6c66c1173dc63793fd2cc72d6',1,'pyrax::cloudmonitoring::CloudMonitorEntityManager.create_check()'],['../classpyrax_1_1cloudmonitoring_1_1CloudMonitorClient.html#a6fc873d6c66c1173dc63793fd2cc72d6',1,'pyrax::cloudmonitoring::CloudMonitorClient.create_check()']]], ['create_5fcontainer',['create_container',['../classpyrax_1_1cf__wrapper_1_1client_1_1CFClient.html#a31b9196903b253dd2cd99dc4d7a0774e',1,'pyrax::cf_wrapper::client::CFClient']]], ['create_5fdatabase',['create_database',['../classpyrax_1_1clouddatabases_1_1CloudDatabaseInstance.html#a287e0595d14610db48012f18e10d60d5',1,'pyrax::clouddatabases::CloudDatabaseInstance.create_database()'],['../classpyrax_1_1clouddatabases_1_1CloudDatabaseClient.html#a287e0595d14610db48012f18e10d60d5',1,'pyrax::clouddatabases::CloudDatabaseClient.create_database()']]], + ['create_5fentity',['create_entity',['../classpyrax_1_1cloudmonitoring_1_1CloudMonitorClient.html#a287a9c4c88ac4ade6073ff5ad10a8fb9',1,'pyrax::cloudmonitoring::CloudMonitorClient']]], + ['create_5fnotification',['create_notification',['../classpyrax_1_1cloudmonitoring_1_1CloudMonitorClient.html#aa1579d27c94116ec606bc01b3944dae0',1,'pyrax::cloudmonitoring::CloudMonitorClient']]], + ['create_5fnotification_5fplan',['create_notification_plan',['../classpyrax_1_1cloudmonitoring_1_1CloudMonitorClient.html#adbe3d30cfff0796002e143442e5eb225',1,'pyrax::cloudmonitoring::CloudMonitorClient']]], ['create_5fsnapshot',['create_snapshot',['../classpyrax_1_1cloudblockstorage_1_1CloudBlockStorageVolume.html#a75cc4154491155dec3c34ea545de7d36',1,'pyrax::cloudblockstorage::CloudBlockStorageVolume.create_snapshot()'],['../classpyrax_1_1cloudblockstorage_1_1CloudBlockStorageClient.html#a75cc4154491155dec3c34ea545de7d36',1,'pyrax::cloudblockstorage::CloudBlockStorageClient.create_snapshot()']]], ['create_5ftenant',['create_tenant',['../classpyrax_1_1base__identity_1_1BaseAuth.html#afb882c0e80402ee17bf29c7af13d2a38',1,'pyrax::base_identity::BaseAuth']]], ['create_5fuser',['create_user',['../classpyrax_1_1base__identity_1_1BaseAuth.html#af18e8e2e2ba1d65bb30314133332044d',1,'pyrax::base_identity::BaseAuth.create_user()'],['../classpyrax_1_1clouddatabases_1_1CloudDatabaseInstance.html#af18e8e2e2ba1d65bb30314133332044d',1,'pyrax::clouddatabases::CloudDatabaseInstance.create_user()'],['../classpyrax_1_1clouddatabases_1_1CloudDatabaseClient.html#af18e8e2e2ba1d65bb30314133332044d',1,'pyrax::clouddatabases::CloudDatabaseClient.create_user()']]] diff --git a/docs/html/search/functions_64.js b/docs/html/search/functions_64.js index 386b39f4..ebd12278 100644 --- a/docs/html/search/functions_64.js +++ b/docs/html/search/functions_64.js @@ -1,20 +1,26 @@ var searchData= [ - ['delete',['delete',['../classpyrax_1_1cf__wrapper_1_1container_1_1Container.html#ab48bde70a0927a83d62464cb0627c34b',1,'pyrax::cf_wrapper::container::Container.delete()'],['../classpyrax_1_1cf__wrapper_1_1storage__object_1_1StorageObject.html#ab48bde70a0927a83d62464cb0627c34b',1,'pyrax::cf_wrapper::storage_object::StorageObject.delete()'],['../classpyrax_1_1client_1_1BaseClient.html#ab48bde70a0927a83d62464cb0627c34b',1,'pyrax::client::BaseClient.delete()'],['../classpyrax_1_1cloudblockstorage_1_1CloudBlockStorageSnapshot.html#ab48bde70a0927a83d62464cb0627c34b',1,'pyrax::cloudblockstorage::CloudBlockStorageSnapshot.delete()'],['../classpyrax_1_1cloudblockstorage_1_1CloudBlockStorageVolume.html#ab48bde70a0927a83d62464cb0627c34b',1,'pyrax::cloudblockstorage::CloudBlockStorageVolume.delete()'],['../classpyrax_1_1clouddatabases_1_1CloudDatabaseDatabase.html#ab48bde70a0927a83d62464cb0627c34b',1,'pyrax::clouddatabases::CloudDatabaseDatabase.delete()'],['../classpyrax_1_1clouddatabases_1_1CloudDatabaseUser.html#ab48bde70a0927a83d62464cb0627c34b',1,'pyrax::clouddatabases::CloudDatabaseUser.delete()'],['../classpyrax_1_1clouddns_1_1CloudDNSRecord.html#ab48bde70a0927a83d62464cb0627c34b',1,'pyrax::clouddns::CloudDNSRecord.delete()'],['../classpyrax_1_1clouddns_1_1CloudDNSDomain.html#ab48bde70a0927a83d62464cb0627c34b',1,'pyrax::clouddns::CloudDNSDomain.delete()'],['../classpyrax_1_1clouddns_1_1CloudDNSPTRRecord.html#ab48bde70a0927a83d62464cb0627c34b',1,'pyrax::clouddns::CloudDNSPTRRecord.delete()'],['../classpyrax_1_1clouddns_1_1CloudDNSManager.html#ab48bde70a0927a83d62464cb0627c34b',1,'pyrax::clouddns::CloudDNSManager.delete()'],['../classpyrax_1_1clouddns_1_1CloudDNSClient.html#ab48bde70a0927a83d62464cb0627c34b',1,'pyrax::clouddns::CloudDNSClient.delete()'],['../classpyrax_1_1cloudloadbalancers_1_1Node.html#ab48bde70a0927a83d62464cb0627c34b',1,'pyrax::cloudloadbalancers::Node.delete()'],['../classpyrax_1_1cloudloadbalancers_1_1VirtualIP.html#ab48bde70a0927a83d62464cb0627c34b',1,'pyrax::cloudloadbalancers::VirtualIP.delete()'],['../classpyrax_1_1cloudnetworks_1_1CloudNetwork.html#ab48bde70a0927a83d62464cb0627c34b',1,'pyrax::cloudnetworks::CloudNetwork.delete()'],['../classpyrax_1_1cloudnetworks_1_1CloudNetworkClient.html#ab48bde70a0927a83d62464cb0627c34b',1,'pyrax::cloudnetworks::CloudNetworkClient.delete()'],['../classpyrax_1_1manager_1_1BaseManager.html#ab48bde70a0927a83d62464cb0627c34b',1,'pyrax::manager::BaseManager.delete()'],['../classpyrax_1_1resource_1_1BaseResource.html#ab48bde70a0927a83d62464cb0627c34b',1,'pyrax::resource::BaseResource.delete()']]], + ['delete',['delete',['../classpyrax_1_1autoscale_1_1AutoScalePolicy.html#ab48bde70a0927a83d62464cb0627c34b',1,'pyrax::autoscale::AutoScalePolicy.delete()'],['../classpyrax_1_1autoscale_1_1AutoScaleWebhook.html#ab48bde70a0927a83d62464cb0627c34b',1,'pyrax::autoscale::AutoScaleWebhook.delete()'],['../classpyrax_1_1cf__wrapper_1_1container_1_1Container.html#ab48bde70a0927a83d62464cb0627c34b',1,'pyrax::cf_wrapper::container::Container.delete()'],['../classpyrax_1_1cf__wrapper_1_1storage__object_1_1StorageObject.html#ab48bde70a0927a83d62464cb0627c34b',1,'pyrax::cf_wrapper::storage_object::StorageObject.delete()'],['../classpyrax_1_1client_1_1BaseClient.html#ab48bde70a0927a83d62464cb0627c34b',1,'pyrax::client::BaseClient.delete()'],['../classpyrax_1_1cloudblockstorage_1_1CloudBlockStorageSnapshot.html#ab48bde70a0927a83d62464cb0627c34b',1,'pyrax::cloudblockstorage::CloudBlockStorageSnapshot.delete()'],['../classpyrax_1_1cloudblockstorage_1_1CloudBlockStorageVolume.html#ab48bde70a0927a83d62464cb0627c34b',1,'pyrax::cloudblockstorage::CloudBlockStorageVolume.delete()'],['../classpyrax_1_1clouddatabases_1_1CloudDatabaseDatabase.html#ab48bde70a0927a83d62464cb0627c34b',1,'pyrax::clouddatabases::CloudDatabaseDatabase.delete()'],['../classpyrax_1_1clouddatabases_1_1CloudDatabaseUser.html#ab48bde70a0927a83d62464cb0627c34b',1,'pyrax::clouddatabases::CloudDatabaseUser.delete()'],['../classpyrax_1_1clouddns_1_1CloudDNSRecord.html#ab48bde70a0927a83d62464cb0627c34b',1,'pyrax::clouddns::CloudDNSRecord.delete()'],['../classpyrax_1_1clouddns_1_1CloudDNSDomain.html#ab48bde70a0927a83d62464cb0627c34b',1,'pyrax::clouddns::CloudDNSDomain.delete()'],['../classpyrax_1_1clouddns_1_1CloudDNSPTRRecord.html#ab48bde70a0927a83d62464cb0627c34b',1,'pyrax::clouddns::CloudDNSPTRRecord.delete()'],['../classpyrax_1_1clouddns_1_1CloudDNSManager.html#ab48bde70a0927a83d62464cb0627c34b',1,'pyrax::clouddns::CloudDNSManager.delete()'],['../classpyrax_1_1clouddns_1_1CloudDNSClient.html#ab48bde70a0927a83d62464cb0627c34b',1,'pyrax::clouddns::CloudDNSClient.delete()'],['../classpyrax_1_1cloudloadbalancers_1_1Node.html#ab48bde70a0927a83d62464cb0627c34b',1,'pyrax::cloudloadbalancers::Node.delete()'],['../classpyrax_1_1cloudloadbalancers_1_1VirtualIP.html#ab48bde70a0927a83d62464cb0627c34b',1,'pyrax::cloudloadbalancers::VirtualIP.delete()'],['../classpyrax_1_1cloudmonitoring_1_1CloudMonitorCheck.html#ab48bde70a0927a83d62464cb0627c34b',1,'pyrax::cloudmonitoring::CloudMonitorCheck.delete()'],['../classpyrax_1_1cloudmonitoring_1_1CloudMonitorClient.html#ab48bde70a0927a83d62464cb0627c34b',1,'pyrax::cloudmonitoring::CloudMonitorClient.delete()'],['../classpyrax_1_1cloudnetworks_1_1CloudNetwork.html#ab48bde70a0927a83d62464cb0627c34b',1,'pyrax::cloudnetworks::CloudNetwork.delete()'],['../classpyrax_1_1cloudnetworks_1_1CloudNetworkClient.html#ab48bde70a0927a83d62464cb0627c34b',1,'pyrax::cloudnetworks::CloudNetworkClient.delete()'],['../classpyrax_1_1manager_1_1BaseManager.html#ab48bde70a0927a83d62464cb0627c34b',1,'pyrax::manager::BaseManager.delete()'],['../classpyrax_1_1resource_1_1BaseResource.html#ab48bde70a0927a83d62464cb0627c34b',1,'pyrax::resource::BaseResource.delete()']]], ['delete_5faccess_5flist',['delete_access_list',['../classpyrax_1_1cloudloadbalancers_1_1CloudLoadBalancer.html#a9435aa1b466627d94f4ab7065a91e4f8',1,'pyrax::cloudloadbalancers::CloudLoadBalancer.delete_access_list()'],['../classpyrax_1_1cloudloadbalancers_1_1CloudLoadBalancerManager.html#a9435aa1b466627d94f4ab7065a91e4f8',1,'pyrax::cloudloadbalancers::CloudLoadBalancerManager.delete_access_list()'],['../classpyrax_1_1cloudloadbalancers_1_1CloudLoadBalancerClient.html#a9435aa1b466627d94f4ab7065a91e4f8',1,'pyrax::cloudloadbalancers::CloudLoadBalancerClient.delete_access_list()']]], ['delete_5faccess_5flist_5fitems',['delete_access_list_items',['../classpyrax_1_1cloudloadbalancers_1_1CloudLoadBalancer.html#a2fd3c0d8eb07bd4f48fdad4c134e1aae',1,'pyrax::cloudloadbalancers::CloudLoadBalancer.delete_access_list_items()'],['../classpyrax_1_1cloudloadbalancers_1_1CloudLoadBalancerManager.html#a2fd3c0d8eb07bd4f48fdad4c134e1aae',1,'pyrax::cloudloadbalancers::CloudLoadBalancerManager.delete_access_list_items()'],['../classpyrax_1_1cloudloadbalancers_1_1CloudLoadBalancerClient.html#a2fd3c0d8eb07bd4f48fdad4c134e1aae',1,'pyrax::cloudloadbalancers::CloudLoadBalancerClient.delete_access_list_items()']]], + ['delete_5falarm',['delete_alarm',['../classpyrax_1_1cloudmonitoring_1_1CloudMonitorEntity.html#aa6f9a8547a22941467c661e1c3b83178',1,'pyrax::cloudmonitoring::CloudMonitorEntity.delete_alarm()'],['../classpyrax_1_1cloudmonitoring_1_1CloudMonitorEntityManager.html#aa6f9a8547a22941467c661e1c3b83178',1,'pyrax::cloudmonitoring::CloudMonitorEntityManager.delete_alarm()'],['../classpyrax_1_1cloudmonitoring_1_1CloudMonitorClient.html#aa6f9a8547a22941467c661e1c3b83178',1,'pyrax::cloudmonitoring::CloudMonitorClient.delete_alarm()']]], ['delete_5fall_5fobjects',['delete_all_objects',['../classpyrax_1_1cf__wrapper_1_1container_1_1Container.html#a29c7d5f06a4fdc49b064a4352e8c8763',1,'pyrax::cf_wrapper::container::Container']]], ['delete_5fall_5fsnapshots',['delete_all_snapshots',['../classpyrax_1_1cloudblockstorage_1_1CloudBlockStorageVolume.html#aec8a47767c07e19ef3ad9f6b974240bb',1,'pyrax::cloudblockstorage::CloudBlockStorageVolume']]], + ['delete_5fcheck',['delete_check',['../classpyrax_1_1cloudmonitoring_1_1CloudMonitorEntity.html#a4efaacdc5baa3b0cf23478e90a16a5b9',1,'pyrax::cloudmonitoring::CloudMonitorEntity.delete_check()'],['../classpyrax_1_1cloudmonitoring_1_1CloudMonitorEntityManager.html#a4efaacdc5baa3b0cf23478e90a16a5b9',1,'pyrax::cloudmonitoring::CloudMonitorEntityManager.delete_check()'],['../classpyrax_1_1cloudmonitoring_1_1CloudMonitorClient.html#a4efaacdc5baa3b0cf23478e90a16a5b9',1,'pyrax::cloudmonitoring::CloudMonitorClient.delete_check()']]], ['delete_5fconnection_5fthrottle',['delete_connection_throttle',['../classpyrax_1_1cloudloadbalancers_1_1CloudLoadBalancer.html#ae08266e5e13ddc6e99a972671e132d51',1,'pyrax::cloudloadbalancers::CloudLoadBalancer.delete_connection_throttle()'],['../classpyrax_1_1cloudloadbalancers_1_1CloudLoadBalancerManager.html#ae08266e5e13ddc6e99a972671e132d51',1,'pyrax::cloudloadbalancers::CloudLoadBalancerManager.delete_connection_throttle()'],['../classpyrax_1_1cloudloadbalancers_1_1CloudLoadBalancerClient.html#ae08266e5e13ddc6e99a972671e132d51',1,'pyrax::cloudloadbalancers::CloudLoadBalancerClient.delete_connection_throttle()']]], ['delete_5fcontainer',['delete_container',['../classpyrax_1_1cf__wrapper_1_1client_1_1CFClient.html#ac314b663a2e0552b6403f04558be2735',1,'pyrax::cf_wrapper::client::CFClient']]], ['delete_5fdatabase',['delete_database',['../classpyrax_1_1clouddatabases_1_1CloudDatabaseInstance.html#a55a252283f51314fe80a1f74f4ebf46f',1,'pyrax::clouddatabases::CloudDatabaseInstance.delete_database()'],['../classpyrax_1_1clouddatabases_1_1CloudDatabaseClient.html#a55a252283f51314fe80a1f74f4ebf46f',1,'pyrax::clouddatabases::CloudDatabaseClient.delete_database()']]], + ['delete_5fentity',['delete_entity',['../classpyrax_1_1cloudmonitoring_1_1CloudMonitorClient.html#a4f0f541b858158a007e2eca4daa25445',1,'pyrax::cloudmonitoring::CloudMonitorClient']]], ['delete_5fhealth_5fmonitor',['delete_health_monitor',['../classpyrax_1_1cloudloadbalancers_1_1CloudLoadBalancer.html#a856597bc9c0b9484f62e3d7ae78c3099',1,'pyrax::cloudloadbalancers::CloudLoadBalancer.delete_health_monitor()'],['../classpyrax_1_1cloudloadbalancers_1_1CloudLoadBalancerManager.html#a856597bc9c0b9484f62e3d7ae78c3099',1,'pyrax::cloudloadbalancers::CloudLoadBalancerManager.delete_health_monitor()'],['../classpyrax_1_1cloudloadbalancers_1_1CloudLoadBalancerClient.html#a856597bc9c0b9484f62e3d7ae78c3099',1,'pyrax::cloudloadbalancers::CloudLoadBalancerClient.delete_health_monitor()']]], ['delete_5fin_5fseconds',['delete_in_seconds',['../classpyrax_1_1cf__wrapper_1_1storage__object_1_1StorageObject.html#a4c205bc29b6fdece30a5bf28e85dfd3f',1,'pyrax::cf_wrapper::storage_object::StorageObject']]], ['delete_5fmetadata',['delete_metadata',['../classpyrax_1_1cloudloadbalancers_1_1CloudLoadBalancer.html#ab4b26663be70bc5c9a8d3bf3b473b328',1,'pyrax::cloudloadbalancers::CloudLoadBalancer.delete_metadata()'],['../classpyrax_1_1cloudloadbalancers_1_1CloudLoadBalancerManager.html#ab4b26663be70bc5c9a8d3bf3b473b328',1,'pyrax::cloudloadbalancers::CloudLoadBalancerManager.delete_metadata()'],['../classpyrax_1_1cloudloadbalancers_1_1Node.html#ab4b26663be70bc5c9a8d3bf3b473b328',1,'pyrax::cloudloadbalancers::Node.delete_metadata()'],['../classpyrax_1_1cloudloadbalancers_1_1CloudLoadBalancerClient.html#ab4b26663be70bc5c9a8d3bf3b473b328',1,'pyrax::cloudloadbalancers::CloudLoadBalancerClient.delete_metadata()']]], ['delete_5fmetadata_5ffor_5fnode',['delete_metadata_for_node',['../classpyrax_1_1cloudloadbalancers_1_1CloudLoadBalancer.html#a38317481667772b2f3483f5360bbb08f',1,'pyrax::cloudloadbalancers::CloudLoadBalancer.delete_metadata_for_node()'],['../classpyrax_1_1cloudloadbalancers_1_1CloudLoadBalancerClient.html#a38317481667772b2f3483f5360bbb08f',1,'pyrax::cloudloadbalancers::CloudLoadBalancerClient.delete_metadata_for_node()']]], ['delete_5fnode',['delete_node',['../classpyrax_1_1cloudloadbalancers_1_1CloudLoadBalancer.html#a616947868beb4492f797b21aeb320d90',1,'pyrax::cloudloadbalancers::CloudLoadBalancer.delete_node()'],['../classpyrax_1_1cloudloadbalancers_1_1CloudLoadBalancerManager.html#a616947868beb4492f797b21aeb320d90',1,'pyrax::cloudloadbalancers::CloudLoadBalancerManager.delete_node()'],['../classpyrax_1_1cloudloadbalancers_1_1CloudLoadBalancerClient.html#a616947868beb4492f797b21aeb320d90',1,'pyrax::cloudloadbalancers::CloudLoadBalancerClient.delete_node()']]], + ['delete_5fnotification',['delete_notification',['../classpyrax_1_1cloudmonitoring_1_1CloudMonitorClient.html#a1507022684013e59d9279645071071d4',1,'pyrax::cloudmonitoring::CloudMonitorClient']]], + ['delete_5fnotification_5fplan',['delete_notification_plan',['../classpyrax_1_1cloudmonitoring_1_1CloudMonitorClient.html#abdd5616e58c4673c7887f6650cee075c',1,'pyrax::cloudmonitoring::CloudMonitorClient']]], ['delete_5fobject',['delete_object',['../classpyrax_1_1cf__wrapper_1_1client_1_1CFClient.html#aaf3e88c7945760a803d04d99c7a39364',1,'pyrax::cf_wrapper::client::CFClient.delete_object()'],['../classpyrax_1_1cf__wrapper_1_1container_1_1Container.html#aaf3e88c7945760a803d04d99c7a39364',1,'pyrax::cf_wrapper::container::Container.delete_object()']]], ['delete_5fobject_5fin_5fseconds',['delete_object_in_seconds',['../classpyrax_1_1cf__wrapper_1_1client_1_1CFClient.html#a157faa240c2d81626b226019fd4e7482',1,'pyrax::cf_wrapper::client::CFClient.delete_object_in_seconds()'],['../classpyrax_1_1cf__wrapper_1_1container_1_1Container.html#a157faa240c2d81626b226019fd4e7482',1,'pyrax::cf_wrapper::container::Container.delete_object_in_seconds()']]], + ['delete_5fpolicy',['delete_policy',['../classpyrax_1_1autoscale_1_1ScalingGroup.html#abdafb5a55ff1bb75ff43db8bf644f276',1,'pyrax::autoscale::ScalingGroup.delete_policy()'],['../classpyrax_1_1autoscale_1_1ScalingGroupManager.html#abdafb5a55ff1bb75ff43db8bf644f276',1,'pyrax::autoscale::ScalingGroupManager.delete_policy()'],['../classpyrax_1_1autoscale_1_1AutoScaleClient.html#abdafb5a55ff1bb75ff43db8bf644f276',1,'pyrax::autoscale::AutoScaleClient.delete_policy()']]], ['delete_5fptr_5frecords',['delete_ptr_records',['../classpyrax_1_1clouddns_1_1CloudDNSManager.html#acc7bb619a838e10967e3555ec3d02bf8',1,'pyrax::clouddns::CloudDNSManager.delete_ptr_records()'],['../classpyrax_1_1clouddns_1_1CloudDNSClient.html#acc7bb619a838e10967e3555ec3d02bf8',1,'pyrax::clouddns::CloudDNSClient.delete_ptr_records()']]], ['delete_5frecord',['delete_record',['../classpyrax_1_1clouddns_1_1CloudDNSDomain.html#a42e0e029c6c4823504401e8a3ba99d14',1,'pyrax::clouddns::CloudDNSDomain.delete_record()'],['../classpyrax_1_1clouddns_1_1CloudDNSManager.html#a42e0e029c6c4823504401e8a3ba99d14',1,'pyrax::clouddns::CloudDNSManager.delete_record()'],['../classpyrax_1_1clouddns_1_1CloudDNSClient.html#a42e0e029c6c4823504401e8a3ba99d14',1,'pyrax::clouddns::CloudDNSClient.delete_record()']]], ['delete_5fsession_5fpersistence',['delete_session_persistence',['../classpyrax_1_1cloudloadbalancers_1_1CloudLoadBalancerManager.html#af0e0d210eb8e8bf69ff5563e18a519ff',1,'pyrax::cloudloadbalancers::CloudLoadBalancerManager']]], @@ -24,6 +30,7 @@ var searchData= ['delete_5fuser',['delete_user',['../classpyrax_1_1base__identity_1_1BaseAuth.html#a254d42e584df57805c2a190b073d28a4',1,'pyrax::base_identity::BaseAuth.delete_user()'],['../classpyrax_1_1clouddatabases_1_1CloudDatabaseInstance.html#a254d42e584df57805c2a190b073d28a4',1,'pyrax::clouddatabases::CloudDatabaseInstance.delete_user()'],['../classpyrax_1_1clouddatabases_1_1CloudDatabaseClient.html#a254d42e584df57805c2a190b073d28a4',1,'pyrax::clouddatabases::CloudDatabaseClient.delete_user()']]], ['delete_5fvirtualip',['delete_virtualip',['../classpyrax_1_1cloudloadbalancers_1_1CloudLoadBalancer.html#af5d840b35f43bbc8669b94337555bb81',1,'pyrax::cloudloadbalancers::CloudLoadBalancer.delete_virtualip()'],['../classpyrax_1_1cloudloadbalancers_1_1CloudLoadBalancerManager.html#af5d840b35f43bbc8669b94337555bb81',1,'pyrax::cloudloadbalancers::CloudLoadBalancerManager.delete_virtualip()'],['../classpyrax_1_1cloudloadbalancers_1_1CloudLoadBalancerClient.html#af5d840b35f43bbc8669b94337555bb81',1,'pyrax::cloudloadbalancers::CloudLoadBalancerClient.delete_virtualip()']]], ['delete_5fvolume',['delete_volume',['../classpyrax_1_1cloudblockstorage_1_1CloudBlockStorageClient.html#ab4d507038522284eb9943c4c3a9b64c6',1,'pyrax::cloudblockstorage::CloudBlockStorageClient']]], + ['delete_5fwebhook',['delete_webhook',['../classpyrax_1_1autoscale_1_1ScalingGroup.html#ae0dc92290d6e28a9f163bce15d037bf9',1,'pyrax::autoscale::ScalingGroup.delete_webhook()'],['../classpyrax_1_1autoscale_1_1ScalingGroupManager.html#ae0dc92290d6e28a9f163bce15d037bf9',1,'pyrax::autoscale::ScalingGroupManager.delete_webhook()'],['../classpyrax_1_1autoscale_1_1AutoScalePolicy.html#ae0dc92290d6e28a9f163bce15d037bf9',1,'pyrax::autoscale::AutoScalePolicy.delete_webhook()'],['../classpyrax_1_1autoscale_1_1AutoScaleClient.html#ae0dc92290d6e28a9f163bce15d037bf9',1,'pyrax::autoscale::AutoScaleClient.delete_webhook()']]], ['detach',['detach',['../classpyrax_1_1cloudblockstorage_1_1CloudBlockStorageVolume.html#acaedb9678123c696fc17b7d4d46e1a10',1,'pyrax::cloudblockstorage::CloudBlockStorageVolume.detach()'],['../classpyrax_1_1cloudblockstorage_1_1CloudBlockStorageClient.html#acaedb9678123c696fc17b7d4d46e1a10',1,'pyrax::cloudblockstorage::CloudBlockStorageClient.detach()']]], ['download',['download',['../classpyrax_1_1cf__wrapper_1_1storage__object_1_1StorageObject.html#a87785e5d44757bc4bd91c6694e751daa',1,'pyrax::cf_wrapper::storage_object::StorageObject']]], ['download_5fobject',['download_object',['../classpyrax_1_1cf__wrapper_1_1client_1_1CFClient.html#a4d536318080f1745a14922224b2a28b5',1,'pyrax::cf_wrapper::client::CFClient.download_object()'],['../classpyrax_1_1cf__wrapper_1_1container_1_1Container.html#a4d536318080f1745a14922224b2a28b5',1,'pyrax::cf_wrapper::container::Container.download_object()']]] diff --git a/docs/html/search/functions_65.js b/docs/html/search/functions_65.js index a3300d48..85186d4b 100644 --- a/docs/html/search/functions_65.js +++ b/docs/html/search/functions_65.js @@ -3,6 +3,8 @@ var searchData= ['enable_5froot_5fuser',['enable_root_user',['../classpyrax_1_1clouddatabases_1_1CloudDatabaseInstance.html#a9c5207c3983e465d9880d89e890d8bfc',1,'pyrax::clouddatabases::CloudDatabaseInstance.enable_root_user()'],['../classpyrax_1_1clouddatabases_1_1CloudDatabaseClient.html#a9c5207c3983e465d9880d89e890d8bfc',1,'pyrax::clouddatabases::CloudDatabaseClient.enable_root_user()']]], ['env',['env',['../namespacepyrax_1_1utils.html#a9790d3a239a8e290bffbeef17c48f017',1,'pyrax::utils']]], ['environments',['environments',['../classpyrax_1_1Settings.html#a989dd2f2e43c5e8b53cfd5933054c2ea',1,'pyrax::Settings']]], + ['execute',['execute',['../classpyrax_1_1autoscale_1_1AutoScalePolicy.html#ad4a3a293739ba23e084f19c685303590',1,'pyrax::autoscale::AutoScalePolicy']]], + ['execute_5fpolicy',['execute_policy',['../classpyrax_1_1autoscale_1_1ScalingGroup.html#a34e31ecc0ff1fc06f15621d89ef81aa6',1,'pyrax::autoscale::ScalingGroup.execute_policy()'],['../classpyrax_1_1autoscale_1_1ScalingGroupManager.html#a34e31ecc0ff1fc06f15621d89ef81aa6',1,'pyrax::autoscale::ScalingGroupManager.execute_policy()'],['../classpyrax_1_1autoscale_1_1AutoScaleClient.html#a34e31ecc0ff1fc06f15621d89ef81aa6',1,'pyrax::autoscale::AutoScaleClient.execute_policy()']]], ['export',['export',['../classpyrax_1_1clouddns_1_1CloudDNSDomain.html#a7aff5c605f882c9bad6df59ef505bb5b',1,'pyrax::clouddns::CloudDNSDomain']]], ['export_5fdomain',['export_domain',['../classpyrax_1_1clouddns_1_1CloudDNSManager.html#a0e037c749fa4bb12133e5986c410d7b4',1,'pyrax::clouddns::CloudDNSManager.export_domain()'],['../classpyrax_1_1clouddns_1_1CloudDNSClient.html#a0e037c749fa4bb12133e5986c410d7b4',1,'pyrax::clouddns::CloudDNSClient.export_domain()']]] ]; diff --git a/docs/html/search/functions_66.js b/docs/html/search/functions_66.js index 1de44483..3113f01f 100644 --- a/docs/html/search/functions_66.js +++ b/docs/html/search/functions_66.js @@ -1,12 +1,14 @@ var searchData= [ ['fetch_5fobject',['fetch_object',['../classpyrax_1_1cf__wrapper_1_1client_1_1CFClient.html#a1c274968ef395c2b88a4d67c24f30f8e',1,'pyrax::cf_wrapper::client::CFClient.fetch_object()'],['../classpyrax_1_1cf__wrapper_1_1container_1_1Container.html#a1c274968ef395c2b88a4d67c24f30f8e',1,'pyrax::cf_wrapper::container::Container.fetch_object()']]], - ['find',['find',['../classpyrax_1_1client_1_1BaseClient.html#a01f90f57b7acd55e177611f5d0f7df23',1,'pyrax::client::BaseClient.find()'],['../classpyrax_1_1manager_1_1BaseManager.html#a01f90f57b7acd55e177611f5d0f7df23',1,'pyrax::manager::BaseManager.find()']]], + ['field_5fnames',['field_names',['../classpyrax_1_1cloudmonitoring_1_1CloudMonitorCheckType.html#a0b9c1a726225d02b85a31d2fc7508352',1,'pyrax::cloudmonitoring::CloudMonitorCheckType']]], + ['find',['find',['../classpyrax_1_1client_1_1BaseClient.html#a01f90f57b7acd55e177611f5d0f7df23',1,'pyrax::client::BaseClient.find()'],['../classpyrax_1_1cloudmonitoring_1_1CloudMonitorClient.html#a01f90f57b7acd55e177611f5d0f7df23',1,'pyrax::cloudmonitoring::CloudMonitorClient.find()'],['../classpyrax_1_1manager_1_1BaseManager.html#a01f90f57b7acd55e177611f5d0f7df23',1,'pyrax::manager::BaseManager.find()']]], + ['find_5fall_5fchecks',['find_all_checks',['../classpyrax_1_1cloudmonitoring_1_1CloudMonitorEntityManager.html#a85522a4725d32d0924f3196f59f91d92',1,'pyrax::cloudmonitoring::CloudMonitorEntityManager.find_all_checks()'],['../classpyrax_1_1cloudmonitoring_1_1CloudMonitorClient.html#a85522a4725d32d0924f3196f59f91d92',1,'pyrax::cloudmonitoring::CloudMonitorClient.find_all_checks()']]], ['find_5fnetwork_5fby_5flabel',['find_network_by_label',['../classpyrax_1_1cloudnetworks_1_1CloudNetworkClient.html#ab9a076a96d8be6ef848669c841c472f7',1,'pyrax::cloudnetworks::CloudNetworkClient']]], ['find_5frecord',['find_record',['../classpyrax_1_1clouddns_1_1CloudDNSDomain.html#a20415cf3e70cdff472ca1161a6ad2e64',1,'pyrax::clouddns::CloudDNSDomain.find_record()'],['../classpyrax_1_1clouddns_1_1CloudDNSClient.html#a20415cf3e70cdff472ca1161a6ad2e64',1,'pyrax::clouddns::CloudDNSClient.find_record()']]], ['find_5fuser_5fby_5fid',['find_user_by_id',['../classpyrax_1_1identity_1_1rax__identity_1_1RaxIdentity.html#adf5de79a326a6b6b6eac3cba7e0b8cfb',1,'pyrax::identity::rax_identity::RaxIdentity']]], ['find_5fuser_5fby_5fname',['find_user_by_name',['../classpyrax_1_1identity_1_1rax__identity_1_1RaxIdentity.html#ab0abba97256f91ebca2ded800fcf440d',1,'pyrax::identity::rax_identity::RaxIdentity']]], - ['findall',['findall',['../classpyrax_1_1client_1_1BaseClient.html#a1bae9ed7d134ea1c1e9a39726adea1e1',1,'pyrax::client::BaseClient.findall()'],['../classpyrax_1_1clouddns_1_1CloudDNSManager.html#a1bae9ed7d134ea1c1e9a39726adea1e1',1,'pyrax::clouddns::CloudDNSManager.findall()'],['../classpyrax_1_1manager_1_1BaseManager.html#a1bae9ed7d134ea1c1e9a39726adea1e1',1,'pyrax::manager::BaseManager.findall()']]], + ['findall',['findall',['../classpyrax_1_1client_1_1BaseClient.html#a1bae9ed7d134ea1c1e9a39726adea1e1',1,'pyrax::client::BaseClient.findall()'],['../classpyrax_1_1clouddns_1_1CloudDNSManager.html#a1bae9ed7d134ea1c1e9a39726adea1e1',1,'pyrax::clouddns::CloudDNSManager.findall()'],['../classpyrax_1_1cloudmonitoring_1_1CloudMonitorClient.html#a1bae9ed7d134ea1c1e9a39726adea1e1',1,'pyrax::cloudmonitoring::CloudMonitorClient.findall()'],['../classpyrax_1_1manager_1_1BaseManager.html#a1bae9ed7d134ea1c1e9a39726adea1e1',1,'pyrax::manager::BaseManager.findall()']]], ['folder_5fname_5ffrom_5fpath',['folder_name_from_path',['../classpyrax_1_1cf__wrapper_1_1client_1_1FolderUploader.html#ac467e83660d484cbbad5626094c00dcd',1,'pyrax::cf_wrapper::client::FolderUploader']]], ['folder_5fsize',['folder_size',['../namespacepyrax_1_1utils.html#a44e6cd242f9d12705e157706a6caddfe',1,'pyrax::utils']]], ['from_5fresponse',['from_response',['../namespacepyrax_1_1exceptions.html#a6ec044b1084ca1566f5a0e9555c63998',1,'pyrax::exceptions']]] diff --git a/docs/html/search/functions_67.js b/docs/html/search/functions_67.js index 3fb53251..c455f9b7 100644 --- a/docs/html/search/functions_67.js +++ b/docs/html/search/functions_67.js @@ -1,11 +1,17 @@ var searchData= [ - ['get',['get',['../classpyrax_1_1Settings.html#a444a1328efb32d5d9d2dcb2efe855d3b',1,'pyrax::Settings.get()'],['../classpyrax_1_1cf__wrapper_1_1storage__object_1_1StorageObject.html#a444a1328efb32d5d9d2dcb2efe855d3b',1,'pyrax::cf_wrapper::storage_object::StorageObject.get()'],['../classpyrax_1_1client_1_1BaseClient.html#a444a1328efb32d5d9d2dcb2efe855d3b',1,'pyrax::client::BaseClient.get()'],['../classpyrax_1_1clouddatabases_1_1CloudDatabaseVolume.html#a444a1328efb32d5d9d2dcb2efe855d3b',1,'pyrax::clouddatabases::CloudDatabaseVolume.get()'],['../classpyrax_1_1clouddatabases_1_1CloudDatabaseManager.html#a444a1328efb32d5d9d2dcb2efe855d3b',1,'pyrax::clouddatabases::CloudDatabaseManager.get()'],['../classpyrax_1_1clouddatabases_1_1CloudDatabaseInstance.html#a444a1328efb32d5d9d2dcb2efe855d3b',1,'pyrax::clouddatabases::CloudDatabaseInstance.get()'],['../classpyrax_1_1clouddns_1_1CloudDNSRecord.html#a444a1328efb32d5d9d2dcb2efe855d3b',1,'pyrax::clouddns::CloudDNSRecord.get()'],['../classpyrax_1_1cloudnetworks_1_1CloudNetwork.html#a444a1328efb32d5d9d2dcb2efe855d3b',1,'pyrax::cloudnetworks::CloudNetwork.get()'],['../classpyrax_1_1manager_1_1BaseManager.html#a444a1328efb32d5d9d2dcb2efe855d3b',1,'pyrax::manager::BaseManager.get()'],['../classpyrax_1_1resource_1_1BaseResource.html#a444a1328efb32d5d9d2dcb2efe855d3b',1,'pyrax::resource::BaseResource.get()']]], + ['get',['get',['../classpyrax_1_1Settings.html#a444a1328efb32d5d9d2dcb2efe855d3b',1,'pyrax::Settings.get()'],['../classpyrax_1_1autoscale_1_1AutoScalePolicy.html#a444a1328efb32d5d9d2dcb2efe855d3b',1,'pyrax::autoscale::AutoScalePolicy.get()'],['../classpyrax_1_1autoscale_1_1AutoScaleWebhook.html#a444a1328efb32d5d9d2dcb2efe855d3b',1,'pyrax::autoscale::AutoScaleWebhook.get()'],['../classpyrax_1_1cf__wrapper_1_1storage__object_1_1StorageObject.html#a444a1328efb32d5d9d2dcb2efe855d3b',1,'pyrax::cf_wrapper::storage_object::StorageObject.get()'],['../classpyrax_1_1client_1_1BaseClient.html#a444a1328efb32d5d9d2dcb2efe855d3b',1,'pyrax::client::BaseClient.get()'],['../classpyrax_1_1clouddatabases_1_1CloudDatabaseVolume.html#a444a1328efb32d5d9d2dcb2efe855d3b',1,'pyrax::clouddatabases::CloudDatabaseVolume.get()'],['../classpyrax_1_1clouddatabases_1_1CloudDatabaseManager.html#a444a1328efb32d5d9d2dcb2efe855d3b',1,'pyrax::clouddatabases::CloudDatabaseManager.get()'],['../classpyrax_1_1clouddatabases_1_1CloudDatabaseInstance.html#a444a1328efb32d5d9d2dcb2efe855d3b',1,'pyrax::clouddatabases::CloudDatabaseInstance.get()'],['../classpyrax_1_1clouddns_1_1CloudDNSRecord.html#a444a1328efb32d5d9d2dcb2efe855d3b',1,'pyrax::clouddns::CloudDNSRecord.get()'],['../classpyrax_1_1cloudmonitoring_1_1CloudMonitorCheck.html#a444a1328efb32d5d9d2dcb2efe855d3b',1,'pyrax::cloudmonitoring::CloudMonitorCheck.get()'],['../classpyrax_1_1cloudmonitoring_1_1CloudMonitorAlarm.html#a444a1328efb32d5d9d2dcb2efe855d3b',1,'pyrax::cloudmonitoring::CloudMonitorAlarm.get()'],['../classpyrax_1_1cloudmonitoring_1_1CloudMonitorClient.html#a444a1328efb32d5d9d2dcb2efe855d3b',1,'pyrax::cloudmonitoring::CloudMonitorClient.get()'],['../classpyrax_1_1cloudnetworks_1_1CloudNetwork.html#a444a1328efb32d5d9d2dcb2efe855d3b',1,'pyrax::cloudnetworks::CloudNetwork.get()'],['../classpyrax_1_1manager_1_1BaseManager.html#a444a1328efb32d5d9d2dcb2efe855d3b',1,'pyrax::manager::BaseManager.get()'],['../classpyrax_1_1resource_1_1BaseResource.html#a444a1328efb32d5d9d2dcb2efe855d3b',1,'pyrax::resource::BaseResource.get()']]], ['get_5fabsolute_5flimits',['get_absolute_limits',['../classpyrax_1_1clouddns_1_1CloudDNSClient.html#af5584781384edbc4caa037fbc9749092',1,'pyrax::clouddns::CloudDNSClient']]], ['get_5faccess_5flist',['get_access_list',['../classpyrax_1_1cloudloadbalancers_1_1CloudLoadBalancer.html#a3aa1b2aa693e56eb9ff1535ca86c3c7c',1,'pyrax::cloudloadbalancers::CloudLoadBalancer.get_access_list()'],['../classpyrax_1_1cloudloadbalancers_1_1CloudLoadBalancerManager.html#a3aa1b2aa693e56eb9ff1535ca86c3c7c',1,'pyrax::cloudloadbalancers::CloudLoadBalancerManager.get_access_list()'],['../classpyrax_1_1cloudloadbalancers_1_1CloudLoadBalancerClient.html#a3aa1b2aa693e56eb9ff1535ca86c3c7c',1,'pyrax::cloudloadbalancers::CloudLoadBalancerClient.get_access_list()']]], + ['get_5faccount',['get_account',['../classpyrax_1_1cloudmonitoring_1_1CloudMonitorClient.html#a4d751385e14b90deacafe71308ee04dc',1,'pyrax::cloudmonitoring::CloudMonitorClient']]], ['get_5faccount_5fmetadata',['get_account_metadata',['../classpyrax_1_1cf__wrapper_1_1client_1_1CFClient.html#a1db54cea98fd675f9e1f88ebb4c14246',1,'pyrax::cf_wrapper::client::CFClient']]], + ['get_5falarm',['get_alarm',['../classpyrax_1_1cloudmonitoring_1_1CloudMonitorEntity.html#a0efb17866082d1efd4697a8414e61d22',1,'pyrax::cloudmonitoring::CloudMonitorEntity.get_alarm()'],['../classpyrax_1_1cloudmonitoring_1_1CloudMonitorEntityManager.html#a0efb17866082d1efd4697a8414e61d22',1,'pyrax::cloudmonitoring::CloudMonitorEntityManager.get_alarm()'],['../classpyrax_1_1cloudmonitoring_1_1CloudMonitorClient.html#a0efb17866082d1efd4697a8414e61d22',1,'pyrax::cloudmonitoring::CloudMonitorClient.get_alarm()']]], ['get_5fall_5fcontainers',['get_all_containers',['../classpyrax_1_1cf__wrapper_1_1client_1_1CFClient.html#ae413c04282e2a1f584d7b99bbea09b54',1,'pyrax::cf_wrapper::client::CFClient']]], + ['get_5faudits',['get_audits',['../classpyrax_1_1cloudmonitoring_1_1CloudMonitorClient.html#ad18caa6ffb1e5081c9aa71d04a434ce6',1,'pyrax::cloudmonitoring::CloudMonitorClient']]], + ['get_5fcheck',['get_check',['../classpyrax_1_1cloudmonitoring_1_1CloudMonitorEntityManager.html#a663e1c9857cbc0bf083314e6404e976f',1,'pyrax::cloudmonitoring::CloudMonitorEntityManager.get_check()'],['../classpyrax_1_1cloudmonitoring_1_1CloudMonitorClient.html#a663e1c9857cbc0bf083314e6404e976f',1,'pyrax::cloudmonitoring::CloudMonitorClient.get_check()']]], + ['get_5fcheck_5ftype',['get_check_type',['../classpyrax_1_1cloudmonitoring_1_1CloudMonitorClient.html#a4ec84467f00cf7b6b321984347025d14',1,'pyrax::cloudmonitoring::CloudMonitorClient']]], ['get_5fchecksum',['get_checksum',['../namespacepyrax_1_1utils.html#a9e1881e14792f2c07dd799fd7b9d53d1',1,'pyrax::utils']]], + ['get_5fconfiguration',['get_configuration',['../classpyrax_1_1autoscale_1_1ScalingGroup.html#a4765b6651625ae1a9e0b6170c0cfe447',1,'pyrax::autoscale::ScalingGroup.get_configuration()'],['../classpyrax_1_1autoscale_1_1ScalingGroupManager.html#a4765b6651625ae1a9e0b6170c0cfe447',1,'pyrax::autoscale::ScalingGroupManager.get_configuration()'],['../classpyrax_1_1autoscale_1_1AutoScaleClient.html#a4765b6651625ae1a9e0b6170c0cfe447',1,'pyrax::autoscale::AutoScaleClient.get_configuration()']]], ['get_5fconnection_5flogging',['get_connection_logging',['../classpyrax_1_1cloudloadbalancers_1_1CloudLoadBalancerManager.html#ab259705d7fd79cee133de68e9b29846b',1,'pyrax::cloudloadbalancers::CloudLoadBalancerManager.get_connection_logging()'],['../classpyrax_1_1cloudloadbalancers_1_1CloudLoadBalancerClient.html#ab259705d7fd79cee133de68e9b29846b',1,'pyrax::cloudloadbalancers::CloudLoadBalancerClient.get_connection_logging()']]], ['get_5fconnection_5fthrottle',['get_connection_throttle',['../classpyrax_1_1cloudloadbalancers_1_1CloudLoadBalancer.html#a3caddfe1f948f22c3926b810485bd645',1,'pyrax::cloudloadbalancers::CloudLoadBalancer.get_connection_throttle()'],['../classpyrax_1_1cloudloadbalancers_1_1CloudLoadBalancerManager.html#a3caddfe1f948f22c3926b810485bd645',1,'pyrax::cloudloadbalancers::CloudLoadBalancerManager.get_connection_throttle()'],['../classpyrax_1_1cloudloadbalancers_1_1CloudLoadBalancerClient.html#a3caddfe1f948f22c3926b810485bd645',1,'pyrax::cloudloadbalancers::CloudLoadBalancerClient.get_connection_throttle()']]], ['get_5fcontainer',['get_container',['../classpyrax_1_1cf__wrapper_1_1client_1_1CFClient.html#ade2af720b771c722f092076b29a0ef64',1,'pyrax::cf_wrapper::client::CFClient']]], @@ -21,6 +27,7 @@ var searchData= ['get_5fdevice',['get_device',['../classpyrax_1_1cloudloadbalancers_1_1Node.html#aab56944ec3d6d817943ee557024ac816',1,'pyrax::cloudloadbalancers::Node']]], ['get_5fdomain_5fiterator',['get_domain_iterator',['../classpyrax_1_1clouddns_1_1CloudDNSClient.html#a603939fc833c990994af7e8cfaad5eda',1,'pyrax::clouddns::CloudDNSClient']]], ['get_5fencoding',['get_encoding',['../namespacepyrax.html#a449ca982d93692884375caa2d609b3b0',1,'pyrax']]], + ['get_5fentity',['get_entity',['../classpyrax_1_1cloudmonitoring_1_1CloudMonitorClient.html#abcac27d2971fd953186cc9c556e5b6c1',1,'pyrax::cloudmonitoring::CloudMonitorClient']]], ['get_5fenvironment',['get_environment',['../namespacepyrax.html#a9850c29c666aa2f53d8ba560897855f8',1,'pyrax']]], ['get_5ferror_5fpage',['get_error_page',['../classpyrax_1_1cloudloadbalancers_1_1CloudLoadBalancer.html#a6504e1c0199cc9b8f58a3bf38eaf4f62',1,'pyrax::cloudloadbalancers::CloudLoadBalancer.get_error_page()'],['../classpyrax_1_1cloudloadbalancers_1_1CloudLoadBalancerManager.html#a6504e1c0199cc9b8f58a3bf38eaf4f62',1,'pyrax::cloudloadbalancers::CloudLoadBalancerManager.get_error_page()'],['../classpyrax_1_1cloudloadbalancers_1_1CloudLoadBalancerClient.html#a6504e1c0199cc9b8f58a3bf38eaf4f62',1,'pyrax::cloudloadbalancers::CloudLoadBalancerClient.get_error_page()']]], ['get_5fextensions',['get_extensions',['../classpyrax_1_1base__identity_1_1BaseAuth.html#ab5a28d881fa99dd93c68bc1daf9e6710',1,'pyrax::base_identity::BaseAuth']]], @@ -29,13 +36,21 @@ var searchData= ['get_5fhttp_5fdebug',['get_http_debug',['../namespacepyrax.html#a2766ee16854adf9575c29ac661f447fd',1,'pyrax']]], ['get_5fid',['get_id',['../namespacepyrax_1_1utils.html#a9cc7cce8ec3ad4b58c806254ca8ea58e',1,'pyrax::utils']]], ['get_5finfo',['get_info',['../classpyrax_1_1cf__wrapper_1_1client_1_1CFClient.html#a384aea54f97656a3742b60bae861bc34',1,'pyrax::cf_wrapper::client::CFClient']]], + ['get_5flaunch_5fconfig',['get_launch_config',['../classpyrax_1_1autoscale_1_1ScalingGroup.html#ae370445e311ea96ab9b0bdfbc3eafa38',1,'pyrax::autoscale::ScalingGroup.get_launch_config()'],['../classpyrax_1_1autoscale_1_1ScalingGroupManager.html#ae370445e311ea96ab9b0bdfbc3eafa38',1,'pyrax::autoscale::ScalingGroupManager.get_launch_config()'],['../classpyrax_1_1autoscale_1_1AutoScaleClient.html#ae370445e311ea96ab9b0bdfbc3eafa38',1,'pyrax::autoscale::AutoScaleClient.get_launch_config()']]], + ['get_5flimits',['get_limits',['../classpyrax_1_1cloudmonitoring_1_1CloudMonitorClient.html#ab5ef84a0682afc9a357f6e76b15f1640',1,'pyrax::cloudmonitoring::CloudMonitorClient']]], ['get_5fmetadata',['get_metadata',['../classpyrax_1_1cf__wrapper_1_1container_1_1Container.html#abc9975b34823bfba383eb240ecde3783',1,'pyrax::cf_wrapper::container::Container.get_metadata()'],['../classpyrax_1_1cf__wrapper_1_1storage__object_1_1StorageObject.html#abc9975b34823bfba383eb240ecde3783',1,'pyrax::cf_wrapper::storage_object::StorageObject.get_metadata()'],['../classpyrax_1_1cloudloadbalancers_1_1CloudLoadBalancer.html#abc9975b34823bfba383eb240ecde3783',1,'pyrax::cloudloadbalancers::CloudLoadBalancer.get_metadata()'],['../classpyrax_1_1cloudloadbalancers_1_1CloudLoadBalancerManager.html#abc9975b34823bfba383eb240ecde3783',1,'pyrax::cloudloadbalancers::CloudLoadBalancerManager.get_metadata()'],['../classpyrax_1_1cloudloadbalancers_1_1Node.html#abc9975b34823bfba383eb240ecde3783',1,'pyrax::cloudloadbalancers::Node.get_metadata()'],['../classpyrax_1_1cloudloadbalancers_1_1CloudLoadBalancerClient.html#abc9975b34823bfba383eb240ecde3783',1,'pyrax::cloudloadbalancers::CloudLoadBalancerClient.get_metadata()']]], ['get_5fmetadata_5ffor_5fnode',['get_metadata_for_node',['../classpyrax_1_1cloudloadbalancers_1_1CloudLoadBalancer.html#aebfb9c2caec7532153b2558fe14347cf',1,'pyrax::cloudloadbalancers::CloudLoadBalancer.get_metadata_for_node()'],['../classpyrax_1_1cloudloadbalancers_1_1CloudLoadBalancerClient.html#aebfb9c2caec7532153b2558fe14347cf',1,'pyrax::cloudloadbalancers::CloudLoadBalancerClient.get_metadata_for_node()']]], + ['get_5fmetric_5fdata_5fpoints',['get_metric_data_points',['../classpyrax_1_1cloudmonitoring_1_1CloudMonitorEntity.html#a58698bf0d5e72dc683fcf9384d110d69',1,'pyrax::cloudmonitoring::CloudMonitorEntity.get_metric_data_points()'],['../classpyrax_1_1cloudmonitoring_1_1CloudMonitorEntityManager.html#a58698bf0d5e72dc683fcf9384d110d69',1,'pyrax::cloudmonitoring::CloudMonitorEntityManager.get_metric_data_points()'],['../classpyrax_1_1cloudmonitoring_1_1CloudMonitorCheck.html#a58698bf0d5e72dc683fcf9384d110d69',1,'pyrax::cloudmonitoring::CloudMonitorCheck.get_metric_data_points()'],['../classpyrax_1_1cloudmonitoring_1_1CloudMonitorClient.html#a58698bf0d5e72dc683fcf9384d110d69',1,'pyrax::cloudmonitoring::CloudMonitorClient.get_metric_data_points()']]], + ['get_5fmonitoring_5fzone',['get_monitoring_zone',['../classpyrax_1_1cloudmonitoring_1_1CloudMonitorClient.html#a264e06827aca6792c0bb9342703b90f6',1,'pyrax::cloudmonitoring::CloudMonitorClient']]], ['get_5fname',['get_name',['../namespacepyrax_1_1utils.html#ac4bcbc47a32f87bf9ee5b3a6a6ca92c3',1,'pyrax::utils']]], + ['get_5fnotification',['get_notification',['../classpyrax_1_1cloudmonitoring_1_1CloudMonitorClient.html#a1bb5691ae7d569885d7ccfda53ccf269',1,'pyrax::cloudmonitoring::CloudMonitorClient']]], + ['get_5fnotification_5fplan',['get_notification_plan',['../classpyrax_1_1cloudmonitoring_1_1CloudMonitorClient.html#a4cacea89acad7d3a81d2c454b7898918',1,'pyrax::cloudmonitoring::CloudMonitorClient']]], + ['get_5fnotification_5ftype',['get_notification_type',['../classpyrax_1_1cloudmonitoring_1_1CloudMonitorClient.html#a26c32a682d8efbdfd220d8bd9847b35c',1,'pyrax::cloudmonitoring::CloudMonitorClient']]], ['get_5fobject',['get_object',['../classpyrax_1_1cf__wrapper_1_1client_1_1CFClient.html#af1075eab57e4a3c67fe8d474080407a8',1,'pyrax::cf_wrapper::client::CFClient.get_object()'],['../classpyrax_1_1cf__wrapper_1_1container_1_1Container.html#af1075eab57e4a3c67fe8d474080407a8',1,'pyrax::cf_wrapper::container::Container.get_object()']]], ['get_5fobject_5fmetadata',['get_object_metadata',['../classpyrax_1_1cf__wrapper_1_1client_1_1CFClient.html#a14818405852da98a0911326ab3277d1c',1,'pyrax::cf_wrapper::client::CFClient']]], ['get_5fobject_5fnames',['get_object_names',['../classpyrax_1_1cf__wrapper_1_1container_1_1Container.html#a1ffef9ff929707223146f6c5373e2a14',1,'pyrax::cf_wrapper::container::Container']]], ['get_5fobjects',['get_objects',['../classpyrax_1_1cf__wrapper_1_1container_1_1Container.html#ace264467ad390fd60316148647ce727d',1,'pyrax::cf_wrapper::container::Container']]], + ['get_5fpolicy',['get_policy',['../classpyrax_1_1autoscale_1_1ScalingGroup.html#aa662316cf0fa9ef74979b592d7750dd1',1,'pyrax::autoscale::ScalingGroup.get_policy()'],['../classpyrax_1_1autoscale_1_1ScalingGroupManager.html#aa662316cf0fa9ef74979b592d7750dd1',1,'pyrax::autoscale::ScalingGroupManager.get_policy()'],['../classpyrax_1_1autoscale_1_1AutoScaleClient.html#aa662316cf0fa9ef74979b592d7750dd1',1,'pyrax::autoscale::AutoScaleClient.get_policy()']]], ['get_5frate_5flimits',['get_rate_limits',['../classpyrax_1_1clouddns_1_1CloudDNSClient.html#ad8f1598d944faa1ec2370da5aa7ec4b2',1,'pyrax::clouddns::CloudDNSClient']]], ['get_5frecord',['get_record',['../classpyrax_1_1clouddns_1_1CloudDNSDomain.html#acd6f2e6f8bdc1c8f65d8dffbb6631445',1,'pyrax::clouddns::CloudDNSDomain.get_record()'],['../classpyrax_1_1clouddns_1_1CloudDNSManager.html#acd6f2e6f8bdc1c8f65d8dffbb6631445',1,'pyrax::clouddns::CloudDNSManager.get_record()']]], ['get_5frecord_5fiterator',['get_record_iterator',['../classpyrax_1_1clouddns_1_1CloudDNSClient.html#a38d5a3c229056eace4cb75dd89b40f7e',1,'pyrax::clouddns::CloudDNSClient']]], @@ -43,6 +58,7 @@ var searchData= ['get_5fsession_5fpersistence',['get_session_persistence',['../classpyrax_1_1cloudloadbalancers_1_1CloudLoadBalancerManager.html#af4f3803b4fa49d7a440977b0c5b5427d',1,'pyrax::cloudloadbalancers::CloudLoadBalancerManager.get_session_persistence()'],['../classpyrax_1_1cloudloadbalancers_1_1CloudLoadBalancerClient.html#af4f3803b4fa49d7a440977b0c5b5427d',1,'pyrax::cloudloadbalancers::CloudLoadBalancerClient.get_session_persistence()']]], ['get_5fsetting',['get_setting',['../namespacepyrax.html#a5dbd20ff4ad6c1590c1c4723852763da',1,'pyrax']]], ['get_5fssl_5ftermination',['get_ssl_termination',['../classpyrax_1_1cloudloadbalancers_1_1CloudLoadBalancer.html#adbf49e882fc9a7b55f38fd6213440d50',1,'pyrax::cloudloadbalancers::CloudLoadBalancer.get_ssl_termination()'],['../classpyrax_1_1cloudloadbalancers_1_1CloudLoadBalancerManager.html#adbf49e882fc9a7b55f38fd6213440d50',1,'pyrax::cloudloadbalancers::CloudLoadBalancerManager.get_ssl_termination()'],['../classpyrax_1_1cloudloadbalancers_1_1CloudLoadBalancerClient.html#adbf49e882fc9a7b55f38fd6213440d50',1,'pyrax::cloudloadbalancers::CloudLoadBalancerClient.get_ssl_termination()']]], + ['get_5fstate',['get_state',['../classpyrax_1_1autoscale_1_1ScalingGroup.html#adc4030ba0851f007b904cc254c2cb489',1,'pyrax::autoscale::ScalingGroup.get_state()'],['../classpyrax_1_1autoscale_1_1ScalingGroupManager.html#adc4030ba0851f007b904cc254c2cb489',1,'pyrax::autoscale::ScalingGroupManager.get_state()'],['../classpyrax_1_1autoscale_1_1AutoScaleClient.html#adc4030ba0851f007b904cc254c2cb489',1,'pyrax::autoscale::AutoScaleClient.get_state()']]], ['get_5fstats',['get_stats',['../classpyrax_1_1cloudloadbalancers_1_1CloudLoadBalancerManager.html#a46cdb2ba90b6fff4c5cf4d76ae0a1697',1,'pyrax::cloudloadbalancers::CloudLoadBalancerManager']]], ['get_5fsubdomain_5fiterator',['get_subdomain_iterator',['../classpyrax_1_1clouddns_1_1CloudDNSClient.html#ac532463e7fb1cbb0a17181a816460adc',1,'pyrax::clouddns::CloudDNSClient']]], ['get_5ftemp_5furl',['get_temp_url',['../classpyrax_1_1cf__wrapper_1_1client_1_1CFClient.html#a26cd51b10d04d2f632fc6f12fa2e3b43',1,'pyrax::cf_wrapper::client::CFClient.get_temp_url()'],['../classpyrax_1_1cf__wrapper_1_1container_1_1Container.html#a26cd51b10d04d2f632fc6f12fa2e3b43',1,'pyrax::cf_wrapper::container::Container.get_temp_url()'],['../classpyrax_1_1cf__wrapper_1_1storage__object_1_1StorageObject.html#a26cd51b10d04d2f632fc6f12fa2e3b43',1,'pyrax::cf_wrapper::storage_object::StorageObject.get_temp_url()']]], @@ -51,9 +67,11 @@ var searchData= ['get_5ftimings',['get_timings',['../classpyrax_1_1client_1_1BaseClient.html#ac6afa2de729057e4864e897292b3f9cb',1,'pyrax::client::BaseClient']]], ['get_5ftoken',['get_token',['../classpyrax_1_1base__identity_1_1BaseAuth.html#ab99f34de8275c77cf5ff09b1d7d0a04a',1,'pyrax::base_identity::BaseAuth.get_token()'],['../classpyrax_1_1service__catalog_1_1ServiceCatalog.html#ab99f34de8275c77cf5ff09b1d7d0a04a',1,'pyrax::service_catalog::ServiceCatalog.get_token()']]], ['get_5ftoken_5fendpoints',['get_token_endpoints',['../classpyrax_1_1base__identity_1_1BaseAuth.html#aeab174eb893dbbd0e84bfa5101e9e9a1',1,'pyrax::base_identity::BaseAuth']]], + ['get_5ftype',['get_type',['../classpyrax_1_1cloudmonitoring_1_1CloudMonitorNotificationManager.html#a0ef321a485de87e39ea78ebd3ba31b23',1,'pyrax::cloudmonitoring::CloudMonitorNotificationManager']]], ['get_5fuploaded',['get_uploaded',['../classpyrax_1_1cf__wrapper_1_1client_1_1CFClient.html#a537487e2f2dabc8103e2006739cbeb0e',1,'pyrax::cf_wrapper::client::CFClient']]], ['get_5fusage',['get_usage',['../classpyrax_1_1cloudloadbalancers_1_1CloudLoadBalancer.html#a7a26606bf20204d1650ddad60fb25a3b',1,'pyrax::cloudloadbalancers::CloudLoadBalancer.get_usage()'],['../classpyrax_1_1cloudloadbalancers_1_1CloudLoadBalancerManager.html#a7a26606bf20204d1650ddad60fb25a3b',1,'pyrax::cloudloadbalancers::CloudLoadBalancerManager.get_usage()'],['../classpyrax_1_1cloudloadbalancers_1_1CloudLoadBalancerClient.html#a7a26606bf20204d1650ddad60fb25a3b',1,'pyrax::cloudloadbalancers::CloudLoadBalancerClient.get_usage()']]], ['get_5fuser',['get_user',['../classpyrax_1_1clouddatabases_1_1CloudDatabaseInstance.html#a1090fc6dec8ecff76b4f98b2d028401e',1,'pyrax::clouddatabases::CloudDatabaseInstance.get_user()'],['../classpyrax_1_1clouddatabases_1_1CloudDatabaseClient.html#a1090fc6dec8ecff76b4f98b2d028401e',1,'pyrax::clouddatabases::CloudDatabaseClient.get_user()']]], ['get_5fuser_5fcredentials',['get_user_credentials',['../classpyrax_1_1identity_1_1rax__identity_1_1RaxIdentity.html#a65208fe274391d93c31231f9729f4d49',1,'pyrax::identity::rax_identity::RaxIdentity']]], + ['get_5fwebhook',['get_webhook',['../classpyrax_1_1autoscale_1_1ScalingGroupManager.html#a2d724ad561fe9d53d1cbf1a86ecf5bfa',1,'pyrax::autoscale::ScalingGroupManager.get_webhook()'],['../classpyrax_1_1autoscale_1_1AutoScalePolicy.html#a2d724ad561fe9d53d1cbf1a86ecf5bfa',1,'pyrax::autoscale::AutoScalePolicy.get_webhook()'],['../classpyrax_1_1autoscale_1_1AutoScaleClient.html#a2d724ad561fe9d53d1cbf1a86ecf5bfa',1,'pyrax::autoscale::AutoScaleClient.get_webhook()']]], ['grant_5fuser_5faccess',['grant_user_access',['../classpyrax_1_1clouddatabases_1_1CloudDatabaseUserManager.html#a5f0d96262a0ff5432f3f9f0552a1e13f',1,'pyrax::clouddatabases::CloudDatabaseUserManager.grant_user_access()'],['../classpyrax_1_1clouddatabases_1_1CloudDatabaseInstance.html#a5f0d96262a0ff5432f3f9f0552a1e13f',1,'pyrax::clouddatabases::CloudDatabaseInstance.grant_user_access()'],['../classpyrax_1_1clouddatabases_1_1CloudDatabaseUser.html#a5f0d96262a0ff5432f3f9f0552a1e13f',1,'pyrax::clouddatabases::CloudDatabaseUser.grant_user_access()'],['../classpyrax_1_1clouddatabases_1_1CloudDatabaseClient.html#a5f0d96262a0ff5432f3f9f0552a1e13f',1,'pyrax::clouddatabases::CloudDatabaseClient.grant_user_access()']]] ]; diff --git a/docs/html/search/functions_6c.js b/docs/html/search/functions_6c.js index 4155a23b..224c5fbd 100644 --- a/docs/html/search/functions_6c.js +++ b/docs/html/search/functions_6c.js @@ -1,13 +1,23 @@ var searchData= [ - ['list',['list',['../classpyrax_1_1client_1_1BaseClient.html#a9b522b4ef7526bfa60b78fe735caa55c',1,'pyrax::client::BaseClient.list()'],['../classpyrax_1_1clouddns_1_1CloudDNSManager.html#a9b522b4ef7526bfa60b78fe735caa55c',1,'pyrax::clouddns::CloudDNSManager.list()'],['../classpyrax_1_1clouddns_1_1CloudDNSClient.html#a9b522b4ef7526bfa60b78fe735caa55c',1,'pyrax::clouddns::CloudDNSClient.list()'],['../classpyrax_1_1manager_1_1BaseManager.html#a9b522b4ef7526bfa60b78fe735caa55c',1,'pyrax::manager::BaseManager.list()']]], + ['list',['list',['../classpyrax_1_1client_1_1BaseClient.html#a9b522b4ef7526bfa60b78fe735caa55c',1,'pyrax::client::BaseClient.list()'],['../classpyrax_1_1clouddns_1_1CloudDNSManager.html#a9b522b4ef7526bfa60b78fe735caa55c',1,'pyrax::clouddns::CloudDNSManager.list()'],['../classpyrax_1_1clouddns_1_1CloudDNSClient.html#a9b522b4ef7526bfa60b78fe735caa55c',1,'pyrax::clouddns::CloudDNSClient.list()'],['../classpyrax_1_1cloudmonitoring_1_1CloudMonitorClient.html#a9b522b4ef7526bfa60b78fe735caa55c',1,'pyrax::cloudmonitoring::CloudMonitorClient.list()'],['../classpyrax_1_1manager_1_1BaseManager.html#a9b522b4ef7526bfa60b78fe735caa55c',1,'pyrax::manager::BaseManager.list()']]], + ['list_5falarms',['list_alarms',['../classpyrax_1_1cloudmonitoring_1_1CloudMonitorEntity.html#aba03029cc0b951e300763dfb7b374b8f',1,'pyrax::cloudmonitoring::CloudMonitorEntity.list_alarms()'],['../classpyrax_1_1cloudmonitoring_1_1CloudMonitorEntityManager.html#aba03029cc0b951e300763dfb7b374b8f',1,'pyrax::cloudmonitoring::CloudMonitorEntityManager.list_alarms()'],['../classpyrax_1_1cloudmonitoring_1_1CloudMonitorClient.html#aba03029cc0b951e300763dfb7b374b8f',1,'pyrax::cloudmonitoring::CloudMonitorClient.list_alarms()']]], + ['list_5fcheck_5ftypes',['list_check_types',['../classpyrax_1_1cloudmonitoring_1_1CloudMonitorClient.html#a360142ff4cbb495a8e5ba41b9c810a8b',1,'pyrax::cloudmonitoring::CloudMonitorClient']]], + ['list_5fchecks',['list_checks',['../classpyrax_1_1cloudmonitoring_1_1CloudMonitorEntity.html#aedd0a1ae642c3f9e56df9bb5a1e1384c',1,'pyrax::cloudmonitoring::CloudMonitorEntity.list_checks()'],['../classpyrax_1_1cloudmonitoring_1_1CloudMonitorEntityManager.html#aedd0a1ae642c3f9e56df9bb5a1e1384c',1,'pyrax::cloudmonitoring::CloudMonitorEntityManager.list_checks()'],['../classpyrax_1_1cloudmonitoring_1_1CloudMonitorClient.html#aedd0a1ae642c3f9e56df9bb5a1e1384c',1,'pyrax::cloudmonitoring::CloudMonitorClient.list_checks()']]], ['list_5fcontainers',['list_containers',['../classpyrax_1_1cf__wrapper_1_1client_1_1CFClient.html#a43f33f69f2026d24a426ce6f6cdc11f9',1,'pyrax::cf_wrapper::client::CFClient']]], ['list_5fcontainers_5finfo',['list_containers_info',['../classpyrax_1_1cf__wrapper_1_1client_1_1CFClient.html#ac56c2c448f1e4c975621d2921bfb1e9c',1,'pyrax::cf_wrapper::client::CFClient']]], ['list_5fcredentials',['list_credentials',['../classpyrax_1_1identity_1_1rax__identity_1_1RaxIdentity.html#a752ff9d933b98fdeb87b51a7409f6d4a',1,'pyrax::identity::rax_identity::RaxIdentity']]], ['list_5fdatabases',['list_databases',['../classpyrax_1_1clouddatabases_1_1CloudDatabaseInstance.html#ae180be633edf68a4a6599e8c64310c5f',1,'pyrax::clouddatabases::CloudDatabaseInstance.list_databases()'],['../classpyrax_1_1clouddatabases_1_1CloudDatabaseClient.html#ae180be633edf68a4a6599e8c64310c5f',1,'pyrax::clouddatabases::CloudDatabaseClient.list_databases()']]], + ['list_5fentities',['list_entities',['../classpyrax_1_1cloudmonitoring_1_1CloudMonitorClient.html#a03cd18f945d37d5cb1e0dc666b23ed3a',1,'pyrax::cloudmonitoring::CloudMonitorClient']]], ['list_5fenvironments',['list_environments',['../namespacepyrax.html#aaf4742684739d9a72d01f13093dc9a87',1,'pyrax']]], ['list_5fflavors',['list_flavors',['../classpyrax_1_1clouddatabases_1_1CloudDatabaseClient.html#ad54dc84b9febeac129b211c63c636612',1,'pyrax::clouddatabases::CloudDatabaseClient']]], + ['list_5fmetrics',['list_metrics',['../classpyrax_1_1cloudmonitoring_1_1CloudMonitorEntity.html#af232f5b9467cd7214f217a3fe6d51473',1,'pyrax::cloudmonitoring::CloudMonitorEntity.list_metrics()'],['../classpyrax_1_1cloudmonitoring_1_1CloudMonitorEntityManager.html#af232f5b9467cd7214f217a3fe6d51473',1,'pyrax::cloudmonitoring::CloudMonitorEntityManager.list_metrics()'],['../classpyrax_1_1cloudmonitoring_1_1CloudMonitorCheck.html#af232f5b9467cd7214f217a3fe6d51473',1,'pyrax::cloudmonitoring::CloudMonitorCheck.list_metrics()'],['../classpyrax_1_1cloudmonitoring_1_1CloudMonitorClient.html#af232f5b9467cd7214f217a3fe6d51473',1,'pyrax::cloudmonitoring::CloudMonitorClient.list_metrics()']]], + ['list_5fmonitoring_5fzones',['list_monitoring_zones',['../classpyrax_1_1cloudmonitoring_1_1CloudMonitorClient.html#aa4b0e32f41ba11a5cd20dd43a9fc7c66',1,'pyrax::cloudmonitoring::CloudMonitorClient']]], ['list_5fnext_5fpage',['list_next_page',['../classpyrax_1_1clouddns_1_1CloudDNSManager.html#acc587f3fc63273a1236d635f463edb91',1,'pyrax::clouddns::CloudDNSManager.list_next_page()'],['../classpyrax_1_1clouddns_1_1CloudDNSClient.html#acc587f3fc63273a1236d635f463edb91',1,'pyrax::clouddns::CloudDNSClient.list_next_page()']]], + ['list_5fnotification_5fplans',['list_notification_plans',['../classpyrax_1_1cloudmonitoring_1_1CloudMonitorClient.html#ab92b8049f19f558a86a40457f9834d5e',1,'pyrax::cloudmonitoring::CloudMonitorClient']]], + ['list_5fnotification_5ftypes',['list_notification_types',['../classpyrax_1_1cloudmonitoring_1_1CloudMonitorClient.html#adafe19263bf8b2cd365c36b887911fdb',1,'pyrax::cloudmonitoring::CloudMonitorClient']]], + ['list_5fnotifications',['list_notifications',['../classpyrax_1_1cloudmonitoring_1_1CloudMonitorClient.html#ab41b40cc23d232c8f4839759ae7fb69f',1,'pyrax::cloudmonitoring::CloudMonitorClient']]], + ['list_5fpolicies',['list_policies',['../classpyrax_1_1autoscale_1_1ScalingGroup.html#a2a31cdad32539c5616c914d25747a74a',1,'pyrax::autoscale::ScalingGroup.list_policies()'],['../classpyrax_1_1autoscale_1_1ScalingGroupManager.html#a2a31cdad32539c5616c914d25747a74a',1,'pyrax::autoscale::ScalingGroupManager.list_policies()'],['../classpyrax_1_1autoscale_1_1AutoScaleClient.html#a2a31cdad32539c5616c914d25747a74a',1,'pyrax::autoscale::AutoScaleClient.list_policies()']]], ['list_5fprevious_5fpage',['list_previous_page',['../classpyrax_1_1clouddns_1_1CloudDNSManager.html#aa4b6fcc0a8d9e480ddda1300e9e44322',1,'pyrax::clouddns::CloudDNSManager.list_previous_page()'],['../classpyrax_1_1clouddns_1_1CloudDNSClient.html#aa4b6fcc0a8d9e480ddda1300e9e44322',1,'pyrax::clouddns::CloudDNSClient.list_previous_page()']]], ['list_5fptr_5frecords',['list_ptr_records',['../classpyrax_1_1clouddns_1_1CloudDNSManager.html#a50a310b1ef2863a2e7090f31782a67cc',1,'pyrax::clouddns::CloudDNSManager.list_ptr_records()'],['../classpyrax_1_1clouddns_1_1CloudDNSClient.html#a50a310b1ef2863a2e7090f31782a67cc',1,'pyrax::clouddns::CloudDNSClient.list_ptr_records()']]], ['list_5fpublic_5fcontainers',['list_public_containers',['../classpyrax_1_1cf__wrapper_1_1client_1_1CFClient.html#a34c1b3aa7e651b23e470f5c42d6011df',1,'pyrax::cf_wrapper::client::CFClient']]], @@ -21,7 +31,8 @@ var searchData= ['list_5fsubdomains_5fprevious_5fpage',['list_subdomains_previous_page',['../classpyrax_1_1clouddns_1_1CloudDNSManager.html#a809ef53848e0cee67182feb9fdf64a18',1,'pyrax::clouddns::CloudDNSManager.list_subdomains_previous_page()'],['../classpyrax_1_1clouddns_1_1CloudDNSClient.html#a809ef53848e0cee67182feb9fdf64a18',1,'pyrax::clouddns::CloudDNSClient.list_subdomains_previous_page()']]], ['list_5ftenants',['list_tenants',['../classpyrax_1_1base__identity_1_1BaseAuth.html#a41a5da9da4ac2bd23d06aa7f7c812da5',1,'pyrax::base_identity::BaseAuth']]], ['list_5ftokens',['list_tokens',['../classpyrax_1_1base__identity_1_1BaseAuth.html#a78fe8db041d851787e9e8f401349a16f',1,'pyrax::base_identity::BaseAuth']]], - ['list_5ftypes',['list_types',['../classpyrax_1_1cloudblockstorage_1_1CloudBlockStorageClient.html#abf762ec9acd2eabeb6da95fbf9b6b81c',1,'pyrax::cloudblockstorage::CloudBlockStorageClient']]], + ['list_5ftypes',['list_types',['../classpyrax_1_1cloudblockstorage_1_1CloudBlockStorageClient.html#abf762ec9acd2eabeb6da95fbf9b6b81c',1,'pyrax::cloudblockstorage::CloudBlockStorageClient.list_types()'],['../classpyrax_1_1cloudmonitoring_1_1CloudMonitorNotificationManager.html#abf762ec9acd2eabeb6da95fbf9b6b81c',1,'pyrax::cloudmonitoring::CloudMonitorNotificationManager.list_types()']]], ['list_5fuser_5faccess',['list_user_access',['../classpyrax_1_1clouddatabases_1_1CloudDatabaseUserManager.html#a2fb19d440ebd8bffa91bb9245530953f',1,'pyrax::clouddatabases::CloudDatabaseUserManager.list_user_access()'],['../classpyrax_1_1clouddatabases_1_1CloudDatabaseInstance.html#a2fb19d440ebd8bffa91bb9245530953f',1,'pyrax::clouddatabases::CloudDatabaseInstance.list_user_access()'],['../classpyrax_1_1clouddatabases_1_1CloudDatabaseUser.html#a2fb19d440ebd8bffa91bb9245530953f',1,'pyrax::clouddatabases::CloudDatabaseUser.list_user_access()'],['../classpyrax_1_1clouddatabases_1_1CloudDatabaseClient.html#a2fb19d440ebd8bffa91bb9245530953f',1,'pyrax::clouddatabases::CloudDatabaseClient.list_user_access()']]], - ['list_5fusers',['list_users',['../classpyrax_1_1base__identity_1_1BaseAuth.html#a574e940a3d762174b715704b2267f38a',1,'pyrax::base_identity::BaseAuth.list_users()'],['../classpyrax_1_1clouddatabases_1_1CloudDatabaseInstance.html#a574e940a3d762174b715704b2267f38a',1,'pyrax::clouddatabases::CloudDatabaseInstance.list_users()'],['../classpyrax_1_1clouddatabases_1_1CloudDatabaseClient.html#a574e940a3d762174b715704b2267f38a',1,'pyrax::clouddatabases::CloudDatabaseClient.list_users()']]] + ['list_5fusers',['list_users',['../classpyrax_1_1base__identity_1_1BaseAuth.html#a574e940a3d762174b715704b2267f38a',1,'pyrax::base_identity::BaseAuth.list_users()'],['../classpyrax_1_1clouddatabases_1_1CloudDatabaseInstance.html#a574e940a3d762174b715704b2267f38a',1,'pyrax::clouddatabases::CloudDatabaseInstance.list_users()'],['../classpyrax_1_1clouddatabases_1_1CloudDatabaseClient.html#a574e940a3d762174b715704b2267f38a',1,'pyrax::clouddatabases::CloudDatabaseClient.list_users()']]], + ['list_5fwebhooks',['list_webhooks',['../classpyrax_1_1autoscale_1_1ScalingGroup.html#afee49b8fd7dc0cf9aed47e709db7364b',1,'pyrax::autoscale::ScalingGroup.list_webhooks()'],['../classpyrax_1_1autoscale_1_1ScalingGroupManager.html#afee49b8fd7dc0cf9aed47e709db7364b',1,'pyrax::autoscale::ScalingGroupManager.list_webhooks()'],['../classpyrax_1_1autoscale_1_1AutoScalePolicy.html#afee49b8fd7dc0cf9aed47e709db7364b',1,'pyrax::autoscale::AutoScalePolicy.list_webhooks()'],['../classpyrax_1_1autoscale_1_1AutoScaleClient.html#afee49b8fd7dc0cf9aed47e709db7364b',1,'pyrax::autoscale::AutoScaleClient.list_webhooks()']]] ]; diff --git a/docs/html/search/functions_6d.js b/docs/html/search/functions_6d.js index 7f4ebd97..b593d502 100644 --- a/docs/html/search/functions_6d.js +++ b/docs/html/search/functions_6d.js @@ -5,10 +5,13 @@ var searchData= ['make_5fprivate',['make_private',['../classpyrax_1_1cf__wrapper_1_1container_1_1Container.html#ae4ca302cb84a4ecfc7418e4aa129a4ac',1,'pyrax::cf_wrapper::container::Container']]], ['make_5fpublic',['make_public',['../classpyrax_1_1cf__wrapper_1_1container_1_1Container.html#a800f9f6744c62cf60897710ef2c9d1b1',1,'pyrax::cf_wrapper::container::Container']]], ['match_5fpattern',['match_pattern',['../namespacepyrax_1_1utils.html#ab32790e8c29f35cd0c810dd86dedba2c',1,'pyrax::utils']]], + ['max_5fentities',['max_entities',['../classpyrax_1_1autoscale_1_1ScalingGroup.html#a2a68ed3a21e0314dc3b7d6e1ac6db90d',1,'pyrax::autoscale::ScalingGroup.max_entities'],['../classpyrax_1_1autoscale_1_1ScalingGroup.html#a2a68ed3a21e0314dc3b7d6e1ac6db90d',1,'pyrax::autoscale::ScalingGroup.max_entities']]], + ['metadata',['metadata',['../classpyrax_1_1autoscale_1_1ScalingGroup.html#a2fe8c1ec91a77ed22c86049d4ffef3f4',1,'pyrax::autoscale::ScalingGroup.metadata'],['../classpyrax_1_1autoscale_1_1ScalingGroup.html#a2fe8c1ec91a77ed22c86049d4ffef3f4',1,'pyrax::autoscale::ScalingGroup.metadata']]], ['method_5fdelete',['method_delete',['../classpyrax_1_1base__identity_1_1BaseAuth.html#a1132703a22def73f131d037165a971aa',1,'pyrax::base_identity::BaseAuth.method_delete()'],['../classpyrax_1_1client_1_1BaseClient.html#a1132703a22def73f131d037165a971aa',1,'pyrax::client::BaseClient.method_delete()']]], ['method_5fget',['method_get',['../classpyrax_1_1base__identity_1_1BaseAuth.html#ac1f6b6211af6452ff038fbb8a25f4822',1,'pyrax::base_identity::BaseAuth.method_get()'],['../classpyrax_1_1client_1_1BaseClient.html#ac1f6b6211af6452ff038fbb8a25f4822',1,'pyrax::client::BaseClient.method_get()']]], ['method_5fhead',['method_head',['../classpyrax_1_1base__identity_1_1BaseAuth.html#a2b66a305940ec13628995f2a93c55b89',1,'pyrax::base_identity::BaseAuth']]], ['method_5fpost',['method_post',['../classpyrax_1_1base__identity_1_1BaseAuth.html#a248efd43b254ea67d11575531bad3247',1,'pyrax::base_identity::BaseAuth.method_post()'],['../classpyrax_1_1client_1_1BaseClient.html#a248efd43b254ea67d11575531bad3247',1,'pyrax::client::BaseClient.method_post()']]], ['method_5fput',['method_put',['../classpyrax_1_1base__identity_1_1BaseAuth.html#a49de945eec86f955f4ac7d1487dcf286',1,'pyrax::base_identity::BaseAuth.method_put()'],['../classpyrax_1_1client_1_1BaseClient.html#a49de945eec86f955f4ac7d1487dcf286',1,'pyrax::client::BaseClient.method_put()']]], + ['min_5fentities',['min_entities',['../classpyrax_1_1autoscale_1_1ScalingGroup.html#a395e6beed5694f7d60ea9657d57e9ad0',1,'pyrax::autoscale::ScalingGroup.min_entities'],['../classpyrax_1_1autoscale_1_1ScalingGroup.html#a395e6beed5694f7d60ea9657d57e9ad0',1,'pyrax::autoscale::ScalingGroup.min_entities']]], ['move_5fobject',['move_object',['../classpyrax_1_1cf__wrapper_1_1client_1_1CFClient.html#a536af175d76546af80d86eda21eaaccc',1,'pyrax::cf_wrapper::client::CFClient']]] ]; diff --git a/docs/html/search/functions_6e.js b/docs/html/search/functions_6e.js index dbdbb20f..289704c4 100644 --- a/docs/html/search/functions_6e.js +++ b/docs/html/search/functions_6e.js @@ -1,4 +1,5 @@ var searchData= [ + ['name',['name',['../classpyrax_1_1autoscale_1_1ScalingGroup.html#a757840459670ee7692e00cf5ddc722d5',1,'pyrax::autoscale::ScalingGroup.name'],['../classpyrax_1_1autoscale_1_1ScalingGroup.html#a757840459670ee7692e00cf5ddc722d5',1,'pyrax::autoscale::ScalingGroup.name'],['../classpyrax_1_1cloudmonitoring_1_1CloudMonitorEntity.html#a757840459670ee7692e00cf5ddc722d5',1,'pyrax::cloudmonitoring::CloudMonitorEntity.name()'],['../classpyrax_1_1cloudmonitoring_1_1CloudMonitorCheck.html#a757840459670ee7692e00cf5ddc722d5',1,'pyrax::cloudmonitoring::CloudMonitorCheck.name()'],['../classpyrax_1_1cloudmonitoring_1_1CloudMonitorZone.html#a757840459670ee7692e00cf5ddc722d5',1,'pyrax::cloudmonitoring::CloudMonitorZone.name()'],['../classpyrax_1_1cloudmonitoring_1_1CloudMonitorNotification.html#a757840459670ee7692e00cf5ddc722d5',1,'pyrax::cloudmonitoring::CloudMonitorNotification.name()'],['../classpyrax_1_1cloudmonitoring_1_1CloudMonitorNotificationType.html#a757840459670ee7692e00cf5ddc722d5',1,'pyrax::cloudmonitoring::CloudMonitorNotificationType.name()'],['../classpyrax_1_1cloudmonitoring_1_1CloudMonitorNotificationPlan.html#a757840459670ee7692e00cf5ddc722d5',1,'pyrax::cloudmonitoring::CloudMonitorNotificationPlan.name()'],['../classpyrax_1_1cloudmonitoring_1_1CloudMonitorAlarm.html#a757840459670ee7692e00cf5ddc722d5',1,'pyrax::cloudmonitoring::CloudMonitorAlarm.name()']]], ['next',['next',['../classpyrax_1_1clouddns_1_1ResultsIterator.html#a1add561a14f78ba11ea73195789b60da',1,'pyrax::clouddns::ResultsIterator']]] ]; diff --git a/docs/html/search/functions_6f.js b/docs/html/search/functions_6f.js index f4aac710..66ccb955 100644 --- a/docs/html/search/functions_6f.js +++ b/docs/html/search/functions_6f.js @@ -1,4 +1,4 @@ var searchData= [ - ['output',['output',['../namespacejunk.html#a35c9c607d8e8bd3b0a6752e6a1a59dd5',1,'junk']]] + ['optional_5ffield_5fnames',['optional_field_names',['../classpyrax_1_1cloudmonitoring_1_1CloudMonitorCheckType.html#aa8cda2e75b38e5edd7137e5e3b6a631b',1,'pyrax::cloudmonitoring::CloudMonitorCheckType']]] ]; diff --git a/docs/html/search/functions_70.js b/docs/html/search/functions_70.js index dffb5b98..6e4a09cb 100644 --- a/docs/html/search/functions_70.js +++ b/docs/html/search/functions_70.js @@ -1,6 +1,9 @@ var searchData= [ + ['params_5fto_5fdict',['params_to_dict',['../namespacepyrax_1_1utils.html#a9829217a17004ff879dffa75d60842ae',1,'pyrax::utils']]], + ['pause',['pause',['../classpyrax_1_1autoscale_1_1ScalingGroup.html#ad87957c5b208fe27e24a5260f5ddbb95',1,'pyrax::autoscale::ScalingGroup.pause()'],['../classpyrax_1_1autoscale_1_1ScalingGroupManager.html#ad87957c5b208fe27e24a5260f5ddbb95',1,'pyrax::autoscale::ScalingGroupManager.pause()'],['../classpyrax_1_1autoscale_1_1AutoScaleClient.html#ad87957c5b208fe27e24a5260f5ddbb95',1,'pyrax::autoscale::AutoScaleClient.pause()']]], ['plug_5fhole_5fin_5fswiftclient_5fauth',['plug_hole_in_swiftclient_auth',['../namespacepyrax.html#a52520cf6c40b52d2b67faf9762accb18',1,'pyrax']]], + ['policy_5fcount',['policy_count',['../classpyrax_1_1autoscale_1_1ScalingGroup.html#a221c84e10c0ca6bc4f240b139076bf4d',1,'pyrax::autoscale::ScalingGroup']]], ['projectid',['projectid',['../classpyrax_1_1client_1_1BaseClient.html#af6e68e7b4a48c30549646fd3d5ed1aae',1,'pyrax::client::BaseClient']]], ['protocols',['protocols',['../classpyrax_1_1cloudloadbalancers_1_1CloudLoadBalancerClient.html#a7ffc66e16cbb4a549e7874dce9d61e6e',1,'pyrax::cloudloadbalancers::CloudLoadBalancerClient']]], ['purge',['purge',['../classpyrax_1_1cf__wrapper_1_1storage__object_1_1StorageObject.html#a24447386d5cd26a6a61fd75fd19842c7',1,'pyrax::cf_wrapper::storage_object::StorageObject']]], diff --git a/docs/html/search/functions_72.js b/docs/html/search/functions_72.js index e97cd232..cc94b20a 100644 --- a/docs/html/search/functions_72.js +++ b/docs/html/search/functions_72.js @@ -7,10 +7,12 @@ var searchData= ['remove_5fmetadata_5fkey',['remove_metadata_key',['../classpyrax_1_1cf__wrapper_1_1container_1_1Container.html#a01a67fdfd99526a56bef1e3c0a01a68d',1,'pyrax::cf_wrapper::container::Container.remove_metadata_key()'],['../classpyrax_1_1cf__wrapper_1_1storage__object_1_1StorageObject.html#a01a67fdfd99526a56bef1e3c0a01a68d',1,'pyrax::cf_wrapper::storage_object::StorageObject.remove_metadata_key()']]], ['remove_5fobject_5fmetadata_5fkey',['remove_object_metadata_key',['../classpyrax_1_1cf__wrapper_1_1client_1_1CFClient.html#ac3072e2b9369e7435f660ff89ae85aa5',1,'pyrax::cf_wrapper::client::CFClient']]], ['request',['request',['../classpyrax_1_1client_1_1BaseClient.html#a7ea72716d3813b3d175a880ff91eca73',1,'pyrax::client::BaseClient']]], + ['required_5ffield_5fnames',['required_field_names',['../classpyrax_1_1cloudmonitoring_1_1CloudMonitorCheckType.html#a6962c65252e3f5bfc1c2084ce219cd68',1,'pyrax::cloudmonitoring::CloudMonitorCheckType']]], ['reset_5ftimings',['reset_timings',['../classpyrax_1_1client_1_1BaseClient.html#ac8ac904919fa009e510cc25731bc20f8',1,'pyrax::client::BaseClient']]], ['resize',['resize',['../classpyrax_1_1clouddatabases_1_1CloudDatabaseVolume.html#a8f82cbc9bffef6b720c446024ddf35f9',1,'pyrax::clouddatabases::CloudDatabaseVolume.resize()'],['../classpyrax_1_1clouddatabases_1_1CloudDatabaseInstance.html#a8f82cbc9bffef6b720c446024ddf35f9',1,'pyrax::clouddatabases::CloudDatabaseInstance.resize()'],['../classpyrax_1_1clouddatabases_1_1CloudDatabaseClient.html#a8f82cbc9bffef6b720c446024ddf35f9',1,'pyrax::clouddatabases::CloudDatabaseClient.resize()']]], ['resize_5fvolume',['resize_volume',['../classpyrax_1_1clouddatabases_1_1CloudDatabaseInstance.html#a184e71e943f21eaf224c511df2b58262',1,'pyrax::clouddatabases::CloudDatabaseInstance']]], ['restart',['restart',['../classpyrax_1_1clouddatabases_1_1CloudDatabaseInstance.html#ac035369f12e9417eb1a18896a6888f05',1,'pyrax::clouddatabases::CloudDatabaseInstance.restart()'],['../classpyrax_1_1clouddatabases_1_1CloudDatabaseClient.html#ac035369f12e9417eb1a18896a6888f05',1,'pyrax::clouddatabases::CloudDatabaseClient.restart()']]], + ['resume',['resume',['../classpyrax_1_1autoscale_1_1ScalingGroup.html#a4a0c86a5f484661cd399a28e4ac1c779',1,'pyrax::autoscale::ScalingGroup.resume()'],['../classpyrax_1_1autoscale_1_1ScalingGroupManager.html#a4a0c86a5f484661cd399a28e4ac1c779',1,'pyrax::autoscale::ScalingGroupManager.resume()'],['../classpyrax_1_1autoscale_1_1AutoScaleClient.html#a4a0c86a5f484661cd399a28e4ac1c779',1,'pyrax::autoscale::AutoScaleClient.resume()']]], ['revoke_5fuser_5faccess',['revoke_user_access',['../classpyrax_1_1clouddatabases_1_1CloudDatabaseUserManager.html#a37c095a57f86b13406baed47d9cc1dd2',1,'pyrax::clouddatabases::CloudDatabaseUserManager.revoke_user_access()'],['../classpyrax_1_1clouddatabases_1_1CloudDatabaseInstance.html#a37c095a57f86b13406baed47d9cc1dd2',1,'pyrax::clouddatabases::CloudDatabaseInstance.revoke_user_access()'],['../classpyrax_1_1clouddatabases_1_1CloudDatabaseUser.html#a37c095a57f86b13406baed47d9cc1dd2',1,'pyrax::clouddatabases::CloudDatabaseUser.revoke_user_access()'],['../classpyrax_1_1clouddatabases_1_1CloudDatabaseClient.html#a37c095a57f86b13406baed47d9cc1dd2',1,'pyrax::clouddatabases::CloudDatabaseClient.revoke_user_access()']]], ['root_5fuser_5fstatus',['root_user_status',['../classpyrax_1_1clouddatabases_1_1CloudDatabaseInstance.html#a269cc22e852b374875720085d24b9922',1,'pyrax::clouddatabases::CloudDatabaseInstance.root_user_status()'],['../classpyrax_1_1clouddatabases_1_1CloudDatabaseClient.html#a269cc22e852b374875720085d24b9922',1,'pyrax::clouddatabases::CloudDatabaseClient.root_user_status()']]], ['run',['run',['../classpyrax_1_1cf__wrapper_1_1client_1_1FolderUploader.html#aedcaade7dd45761ddcc3b3cc07005314',1,'pyrax::cf_wrapper::client::FolderUploader.run()'],['../classpyrax_1_1utils_1_1__WaitThread.html#aedcaade7dd45761ddcc3b3cc07005314',1,'pyrax::utils::_WaitThread.run()']]], diff --git a/docs/html/search/functions_74.js b/docs/html/search/functions_74.js index 117f2cd5..d9012cf1 100644 --- a/docs/html/search/functions_74.js +++ b/docs/html/search/functions_74.js @@ -1,4 +1,6 @@ var searchData= [ - ['to_5fdict',['to_dict',['../classpyrax_1_1cloudloadbalancers_1_1Node.html#aa5152a042338ea29555f11041ee6e330',1,'pyrax::cloudloadbalancers::Node.to_dict()'],['../classpyrax_1_1cloudloadbalancers_1_1VirtualIP.html#aa5152a042338ea29555f11041ee6e330',1,'pyrax::cloudloadbalancers::VirtualIP.to_dict()']]] + ['test_5fnotification',['test_notification',['../classpyrax_1_1cloudmonitoring_1_1CloudMonitorNotificationManager.html#a2c72af29147d7aaedc2abb2176cae425',1,'pyrax::cloudmonitoring::CloudMonitorNotificationManager.test_notification()'],['../classpyrax_1_1cloudmonitoring_1_1CloudMonitorClient.html#a2c72af29147d7aaedc2abb2176cae425',1,'pyrax::cloudmonitoring::CloudMonitorClient.test_notification()']]], + ['to_5fdict',['to_dict',['../classpyrax_1_1cloudloadbalancers_1_1Node.html#aa5152a042338ea29555f11041ee6e330',1,'pyrax::cloudloadbalancers::Node.to_dict()'],['../classpyrax_1_1cloudloadbalancers_1_1VirtualIP.html#aa5152a042338ea29555f11041ee6e330',1,'pyrax::cloudloadbalancers::VirtualIP.to_dict()']]], + ['to_5ftimestamp',['to_timestamp',['../namespacepyrax_1_1utils.html#af4be48d96f3ad2c6cd297a76ccdb1a40',1,'pyrax::utils']]] ]; diff --git a/docs/html/search/functions_75.js b/docs/html/search/functions_75.js index 19c4434d..ec250468 100644 --- a/docs/html/search/functions_75.js +++ b/docs/html/search/functions_75.js @@ -2,17 +2,26 @@ var searchData= [ ['unauthenticate',['unauthenticate',['../classpyrax_1_1base__identity_1_1BaseAuth.html#a143a677947f3597dc3cc3055a0eae66e',1,'pyrax::base_identity::BaseAuth.unauthenticate()'],['../classpyrax_1_1client_1_1BaseClient.html#a143a677947f3597dc3cc3055a0eae66e',1,'pyrax::client::BaseClient.unauthenticate()']]], ['unauthenticated',['unauthenticated',['../namespacepyrax_1_1utils.html#a662924ed2118b3ba66f1d1521a7c2b40',1,'pyrax::utils']]], - ['update',['update',['../classpyrax_1_1clouddns_1_1CloudDNSRecord.html#abe52b977c101e59f342489ed18140819',1,'pyrax::clouddns::CloudDNSRecord.update()'],['../classpyrax_1_1clouddns_1_1CloudDNSDomain.html#abe52b977c101e59f342489ed18140819',1,'pyrax::clouddns::CloudDNSDomain.update()'],['../classpyrax_1_1cloudloadbalancers_1_1CloudLoadBalancer.html#abe52b977c101e59f342489ed18140819',1,'pyrax::cloudloadbalancers::CloudLoadBalancer.update()'],['../classpyrax_1_1cloudloadbalancers_1_1CloudLoadBalancerManager.html#abe52b977c101e59f342489ed18140819',1,'pyrax::cloudloadbalancers::CloudLoadBalancerManager.update()'],['../classpyrax_1_1cloudloadbalancers_1_1Node.html#abe52b977c101e59f342489ed18140819',1,'pyrax::cloudloadbalancers::Node.update()'],['../classpyrax_1_1cloudloadbalancers_1_1CloudLoadBalancerClient.html#abe52b977c101e59f342489ed18140819',1,'pyrax::cloudloadbalancers::CloudLoadBalancerClient.update()']]], + ['update',['update',['../classpyrax_1_1autoscale_1_1ScalingGroup.html#abe52b977c101e59f342489ed18140819',1,'pyrax::autoscale::ScalingGroup.update()'],['../classpyrax_1_1autoscale_1_1ScalingGroupManager.html#abe52b977c101e59f342489ed18140819',1,'pyrax::autoscale::ScalingGroupManager.update()'],['../classpyrax_1_1autoscale_1_1AutoScalePolicy.html#abe52b977c101e59f342489ed18140819',1,'pyrax::autoscale::AutoScalePolicy.update()'],['../classpyrax_1_1autoscale_1_1AutoScaleWebhook.html#abe52b977c101e59f342489ed18140819',1,'pyrax::autoscale::AutoScaleWebhook.update()'],['../classpyrax_1_1autoscale_1_1AutoScaleClient.html#abe52b977c101e59f342489ed18140819',1,'pyrax::autoscale::AutoScaleClient.update()'],['../classpyrax_1_1clouddns_1_1CloudDNSRecord.html#abe52b977c101e59f342489ed18140819',1,'pyrax::clouddns::CloudDNSRecord.update()'],['../classpyrax_1_1clouddns_1_1CloudDNSDomain.html#abe52b977c101e59f342489ed18140819',1,'pyrax::clouddns::CloudDNSDomain.update()'],['../classpyrax_1_1cloudloadbalancers_1_1CloudLoadBalancer.html#abe52b977c101e59f342489ed18140819',1,'pyrax::cloudloadbalancers::CloudLoadBalancer.update()'],['../classpyrax_1_1cloudloadbalancers_1_1CloudLoadBalancerManager.html#abe52b977c101e59f342489ed18140819',1,'pyrax::cloudloadbalancers::CloudLoadBalancerManager.update()'],['../classpyrax_1_1cloudloadbalancers_1_1Node.html#abe52b977c101e59f342489ed18140819',1,'pyrax::cloudloadbalancers::Node.update()'],['../classpyrax_1_1cloudloadbalancers_1_1CloudLoadBalancerClient.html#abe52b977c101e59f342489ed18140819',1,'pyrax::cloudloadbalancers::CloudLoadBalancerClient.update()'],['../classpyrax_1_1cloudmonitoring_1_1CloudMonitorEntity.html#abe52b977c101e59f342489ed18140819',1,'pyrax::cloudmonitoring::CloudMonitorEntity.update()'],['../classpyrax_1_1cloudmonitoring_1_1CloudMonitorCheck.html#abe52b977c101e59f342489ed18140819',1,'pyrax::cloudmonitoring::CloudMonitorCheck.update()'],['../classpyrax_1_1cloudmonitoring_1_1CloudMonitorNotification.html#abe52b977c101e59f342489ed18140819',1,'pyrax::cloudmonitoring::CloudMonitorNotification.update()'],['../classpyrax_1_1cloudmonitoring_1_1CloudMonitorAlarm.html#abe52b977c101e59f342489ed18140819',1,'pyrax::cloudmonitoring::CloudMonitorAlarm.update()']]], + ['update_5falarm',['update_alarm',['../classpyrax_1_1cloudmonitoring_1_1CloudMonitorEntity.html#a5890867a408848b989089ddf26d20a18',1,'pyrax::cloudmonitoring::CloudMonitorEntity.update_alarm()'],['../classpyrax_1_1cloudmonitoring_1_1CloudMonitorEntityManager.html#a5890867a408848b989089ddf26d20a18',1,'pyrax::cloudmonitoring::CloudMonitorEntityManager.update_alarm()'],['../classpyrax_1_1cloudmonitoring_1_1CloudMonitorClient.html#a5890867a408848b989089ddf26d20a18',1,'pyrax::cloudmonitoring::CloudMonitorClient.update_alarm()']]], + ['update_5fcheck',['update_check',['../classpyrax_1_1cloudmonitoring_1_1CloudMonitorEntityManager.html#a31db8ea7ae986d187cad68055d066a20',1,'pyrax::cloudmonitoring::CloudMonitorEntityManager.update_check()'],['../classpyrax_1_1cloudmonitoring_1_1CloudMonitorClient.html#a31db8ea7ae986d187cad68055d066a20',1,'pyrax::cloudmonitoring::CloudMonitorClient.update_check()']]], ['update_5fdomain',['update_domain',['../classpyrax_1_1clouddns_1_1CloudDNSManager.html#a8ee67d6346234099ee06b44af2cb229b',1,'pyrax::clouddns::CloudDNSManager.update_domain()'],['../classpyrax_1_1clouddns_1_1CloudDNSClient.html#a8ee67d6346234099ee06b44af2cb229b',1,'pyrax::clouddns::CloudDNSClient.update_domain()']]], + ['update_5fentity',['update_entity',['../classpyrax_1_1cloudmonitoring_1_1CloudMonitorEntityManager.html#a6677002dbfa8807383168cfaa74670c8',1,'pyrax::cloudmonitoring::CloudMonitorEntityManager.update_entity()'],['../classpyrax_1_1cloudmonitoring_1_1CloudMonitorClient.html#a6677002dbfa8807383168cfaa74670c8',1,'pyrax::cloudmonitoring::CloudMonitorClient.update_entity()']]], ['update_5fexc',['update_exc',['../namespacepyrax_1_1utils.html#aa76e326dca328bf4b12f55a0b94be973',1,'pyrax::utils']]], - ['update_5fmetadata',['update_metadata',['../classpyrax_1_1cloudloadbalancers_1_1CloudLoadBalancer.html#a9d058767846954b6ab457ffa13ab66a1',1,'pyrax::cloudloadbalancers::CloudLoadBalancer.update_metadata()'],['../classpyrax_1_1cloudloadbalancers_1_1CloudLoadBalancerManager.html#a9d058767846954b6ab457ffa13ab66a1',1,'pyrax::cloudloadbalancers::CloudLoadBalancerManager.update_metadata()'],['../classpyrax_1_1cloudloadbalancers_1_1Node.html#a9d058767846954b6ab457ffa13ab66a1',1,'pyrax::cloudloadbalancers::Node.update_metadata()'],['../classpyrax_1_1cloudloadbalancers_1_1CloudLoadBalancerClient.html#a9d058767846954b6ab457ffa13ab66a1',1,'pyrax::cloudloadbalancers::CloudLoadBalancerClient.update_metadata()']]], + ['update_5flaunch_5fconfig',['update_launch_config',['../classpyrax_1_1autoscale_1_1ScalingGroup.html#acc6fd541908aca786fcdcc82dda260a8',1,'pyrax::autoscale::ScalingGroup.update_launch_config()'],['../classpyrax_1_1autoscale_1_1ScalingGroupManager.html#acc6fd541908aca786fcdcc82dda260a8',1,'pyrax::autoscale::ScalingGroupManager.update_launch_config()'],['../classpyrax_1_1autoscale_1_1AutoScaleClient.html#acc6fd541908aca786fcdcc82dda260a8',1,'pyrax::autoscale::AutoScaleClient.update_launch_config()']]], + ['update_5flaunch_5fmetadata',['update_launch_metadata',['../classpyrax_1_1autoscale_1_1ScalingGroup.html#aac62e1b2723c460fd0571b43056a9dc3',1,'pyrax::autoscale::ScalingGroup.update_launch_metadata()'],['../classpyrax_1_1autoscale_1_1ScalingGroupManager.html#aac62e1b2723c460fd0571b43056a9dc3',1,'pyrax::autoscale::ScalingGroupManager.update_launch_metadata()'],['../classpyrax_1_1autoscale_1_1AutoScaleClient.html#aac62e1b2723c460fd0571b43056a9dc3',1,'pyrax::autoscale::AutoScaleClient.update_launch_metadata()']]], + ['update_5fmetadata',['update_metadata',['../classpyrax_1_1autoscale_1_1ScalingGroup.html#a9d058767846954b6ab457ffa13ab66a1',1,'pyrax::autoscale::ScalingGroup.update_metadata()'],['../classpyrax_1_1autoscale_1_1ScalingGroupManager.html#a9d058767846954b6ab457ffa13ab66a1',1,'pyrax::autoscale::ScalingGroupManager.update_metadata()'],['../classpyrax_1_1autoscale_1_1AutoScaleWebhook.html#a9d058767846954b6ab457ffa13ab66a1',1,'pyrax::autoscale::AutoScaleWebhook.update_metadata()'],['../classpyrax_1_1autoscale_1_1AutoScaleClient.html#a9d058767846954b6ab457ffa13ab66a1',1,'pyrax::autoscale::AutoScaleClient.update_metadata()'],['../classpyrax_1_1cloudloadbalancers_1_1CloudLoadBalancer.html#a9d058767846954b6ab457ffa13ab66a1',1,'pyrax::cloudloadbalancers::CloudLoadBalancer.update_metadata()'],['../classpyrax_1_1cloudloadbalancers_1_1CloudLoadBalancerManager.html#a9d058767846954b6ab457ffa13ab66a1',1,'pyrax::cloudloadbalancers::CloudLoadBalancerManager.update_metadata()'],['../classpyrax_1_1cloudloadbalancers_1_1Node.html#a9d058767846954b6ab457ffa13ab66a1',1,'pyrax::cloudloadbalancers::Node.update_metadata()'],['../classpyrax_1_1cloudloadbalancers_1_1CloudLoadBalancerClient.html#a9d058767846954b6ab457ffa13ab66a1',1,'pyrax::cloudloadbalancers::CloudLoadBalancerClient.update_metadata()']]], ['update_5fmetadata_5ffor_5fnode',['update_metadata_for_node',['../classpyrax_1_1cloudloadbalancers_1_1CloudLoadBalancer.html#a9e5d5d52be314fb657499b69f4cbd84a',1,'pyrax::cloudloadbalancers::CloudLoadBalancer.update_metadata_for_node()'],['../classpyrax_1_1cloudloadbalancers_1_1CloudLoadBalancerClient.html#a9e5d5d52be314fb657499b69f4cbd84a',1,'pyrax::cloudloadbalancers::CloudLoadBalancerClient.update_metadata_for_node()']]], ['update_5fnode',['update_node',['../classpyrax_1_1cloudloadbalancers_1_1CloudLoadBalancer.html#a4712372bbfec39b9fdb36157aac37257',1,'pyrax::cloudloadbalancers::CloudLoadBalancer.update_node()'],['../classpyrax_1_1cloudloadbalancers_1_1CloudLoadBalancerManager.html#a4712372bbfec39b9fdb36157aac37257',1,'pyrax::cloudloadbalancers::CloudLoadBalancerManager.update_node()'],['../classpyrax_1_1cloudloadbalancers_1_1CloudLoadBalancerClient.html#a4712372bbfec39b9fdb36157aac37257',1,'pyrax::cloudloadbalancers::CloudLoadBalancerClient.update_node()']]], + ['update_5fnotification',['update_notification',['../classpyrax_1_1cloudmonitoring_1_1CloudMonitorNotificationManager.html#a6cdeefba8739539dfaef18a7773e76ff',1,'pyrax::cloudmonitoring::CloudMonitorNotificationManager.update_notification()'],['../classpyrax_1_1cloudmonitoring_1_1CloudMonitorClient.html#a6cdeefba8739539dfaef18a7773e76ff',1,'pyrax::cloudmonitoring::CloudMonitorClient.update_notification()']]], + ['update_5fpolicy',['update_policy',['../classpyrax_1_1autoscale_1_1ScalingGroup.html#a671573d9f0e941efddc5450bc51d4d48',1,'pyrax::autoscale::ScalingGroup.update_policy()'],['../classpyrax_1_1autoscale_1_1ScalingGroupManager.html#a671573d9f0e941efddc5450bc51d4d48',1,'pyrax::autoscale::ScalingGroupManager.update_policy()'],['../classpyrax_1_1autoscale_1_1AutoScaleClient.html#a671573d9f0e941efddc5450bc51d4d48',1,'pyrax::autoscale::AutoScaleClient.update_policy()']]], ['update_5fptr_5frecord',['update_ptr_record',['../classpyrax_1_1clouddns_1_1CloudDNSManager.html#adb65ca014db6a16bb4c43d31087ae844',1,'pyrax::clouddns::CloudDNSManager.update_ptr_record()'],['../classpyrax_1_1clouddns_1_1CloudDNSClient.html#adb65ca014db6a16bb4c43d31087ae844',1,'pyrax::clouddns::CloudDNSClient.update_ptr_record()']]], ['update_5frecord',['update_record',['../classpyrax_1_1clouddns_1_1CloudDNSDomain.html#a68301b71ce78f89e6a5d44f1cb9c362a',1,'pyrax::clouddns::CloudDNSDomain.update_record()'],['../classpyrax_1_1clouddns_1_1CloudDNSManager.html#a68301b71ce78f89e6a5d44f1cb9c362a',1,'pyrax::clouddns::CloudDNSManager.update_record()'],['../classpyrax_1_1clouddns_1_1CloudDNSClient.html#a68301b71ce78f89e6a5d44f1cb9c362a',1,'pyrax::clouddns::CloudDNSClient.update_record()']]], ['update_5fssl_5ftermination',['update_ssl_termination',['../classpyrax_1_1cloudloadbalancers_1_1CloudLoadBalancer.html#aad4c90f91195d71b1d99ee598220cb14',1,'pyrax::cloudloadbalancers::CloudLoadBalancer.update_ssl_termination()'],['../classpyrax_1_1cloudloadbalancers_1_1CloudLoadBalancerManager.html#aad4c90f91195d71b1d99ee598220cb14',1,'pyrax::cloudloadbalancers::CloudLoadBalancerManager.update_ssl_termination()'],['../classpyrax_1_1cloudloadbalancers_1_1CloudLoadBalancerClient.html#aad4c90f91195d71b1d99ee598220cb14',1,'pyrax::cloudloadbalancers::CloudLoadBalancerClient.update_ssl_termination()']]], ['update_5ftenant',['update_tenant',['../classpyrax_1_1base__identity_1_1BaseAuth.html#a25f2b401ee3068816e774d648abd83de',1,'pyrax::base_identity::BaseAuth']]], ['update_5fuser',['update_user',['../classpyrax_1_1base__identity_1_1BaseAuth.html#a1a7d86495f2e95ce37b02894a6fe85df',1,'pyrax::base_identity::BaseAuth.update_user()'],['../classpyrax_1_1identity_1_1rax__identity_1_1RaxIdentity.html#a1a7d86495f2e95ce37b02894a6fe85df',1,'pyrax::identity::rax_identity::RaxIdentity.update_user()']]], + ['update_5fwebhook',['update_webhook',['../classpyrax_1_1autoscale_1_1ScalingGroup.html#a210ee9051a2ad35b497f979f2a3123cb',1,'pyrax::autoscale::ScalingGroup.update_webhook()'],['../classpyrax_1_1autoscale_1_1ScalingGroupManager.html#a210ee9051a2ad35b497f979f2a3123cb',1,'pyrax::autoscale::ScalingGroupManager.update_webhook()'],['../classpyrax_1_1autoscale_1_1AutoScalePolicy.html#a210ee9051a2ad35b497f979f2a3123cb',1,'pyrax::autoscale::AutoScalePolicy.update_webhook()'],['../classpyrax_1_1autoscale_1_1AutoScaleClient.html#a210ee9051a2ad35b497f979f2a3123cb',1,'pyrax::autoscale::AutoScaleClient.update_webhook()']]], + ['update_5fwebhook_5fmetadata',['update_webhook_metadata',['../classpyrax_1_1autoscale_1_1ScalingGroup.html#a145c2a7a53b56e7450b1b4659cd6c616',1,'pyrax::autoscale::ScalingGroup.update_webhook_metadata()'],['../classpyrax_1_1autoscale_1_1ScalingGroupManager.html#a145c2a7a53b56e7450b1b4659cd6c616',1,'pyrax::autoscale::ScalingGroupManager.update_webhook_metadata()'],['../classpyrax_1_1autoscale_1_1AutoScalePolicy.html#a145c2a7a53b56e7450b1b4659cd6c616',1,'pyrax::autoscale::AutoScalePolicy.update_webhook_metadata()'],['../classpyrax_1_1autoscale_1_1AutoScaleClient.html#a145c2a7a53b56e7450b1b4659cd6c616',1,'pyrax::autoscale::AutoScaleClient.update_webhook_metadata()']]], ['upload_5ffile',['upload_file',['../classpyrax_1_1cf__wrapper_1_1client_1_1CFClient.html#a3857f84faa9608b0bf0a4e84ba5b1566',1,'pyrax::cf_wrapper::client::CFClient.upload_file()'],['../classpyrax_1_1cf__wrapper_1_1container_1_1Container.html#a3857f84faa9608b0bf0a4e84ba5b1566',1,'pyrax::cf_wrapper::container::Container.upload_file()']]], ['upload_5ffiles_5fin_5ffolder',['upload_files_in_folder',['../classpyrax_1_1cf__wrapper_1_1client_1_1FolderUploader.html#af1d1df487458050d64d162846617d266',1,'pyrax::cf_wrapper::client::FolderUploader']]], ['upload_5ffolder',['upload_folder',['../classpyrax_1_1cf__wrapper_1_1client_1_1CFClient.html#a1d81cba43ddabd40e412c5d709192958',1,'pyrax::cf_wrapper::client::CFClient']]], diff --git a/docs/html/search/namespaces_70.js b/docs/html/search/namespaces_70.js index 23396b0b..63d008cd 100644 --- a/docs/html/search/namespaces_70.js +++ b/docs/html/search/namespaces_70.js @@ -1,13 +1,15 @@ var searchData= [ + ['autoscale',['autoscale',['../namespacepyrax_1_1autoscale.html',1,'pyrax']]], ['base_5fidentity',['base_identity',['../namespacepyrax_1_1base__identity.html',1,'pyrax']]], ['cf_5fwrapper',['cf_wrapper',['../namespacepyrax_1_1cf__wrapper.html',1,'pyrax']]], - ['client',['client',['../namespacepyrax_1_1cf__wrapper_1_1client.html',1,'pyrax::cf_wrapper']]], ['client',['client',['../namespacepyrax_1_1client.html',1,'pyrax']]], + ['client',['client',['../namespacepyrax_1_1cf__wrapper_1_1client.html',1,'pyrax::cf_wrapper']]], ['cloudblockstorage',['cloudblockstorage',['../namespacepyrax_1_1cloudblockstorage.html',1,'pyrax']]], ['clouddatabases',['clouddatabases',['../namespacepyrax_1_1clouddatabases.html',1,'pyrax']]], ['clouddns',['clouddns',['../namespacepyrax_1_1clouddns.html',1,'pyrax']]], ['cloudloadbalancers',['cloudloadbalancers',['../namespacepyrax_1_1cloudloadbalancers.html',1,'pyrax']]], + ['cloudmonitoring',['cloudmonitoring',['../namespacepyrax_1_1cloudmonitoring.html',1,'pyrax']]], ['cloudnetworks',['cloudnetworks',['../namespacepyrax_1_1cloudnetworks.html',1,'pyrax']]], ['container',['container',['../namespacepyrax_1_1cf__wrapper_1_1container.html',1,'pyrax::cf_wrapper']]], ['exceptions',['exceptions',['../namespacepyrax_1_1exceptions.html',1,'pyrax']]], diff --git a/docs/html/search/search.js b/docs/html/search/search.js index 8077ddd0..1c096ca9 100644 --- a/docs/html/search/search.js +++ b/docs/html/search/search.js @@ -10,8 +10,8 @@ var indexSectionsWithContent = 0: "0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010111111111011111101111110000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", 1: "0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010111111011010111101111100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", 2: "0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000100100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", - 3: "0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010011010000010100001101100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", - 4: "0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010101111111011110101111010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + 3: "0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010111010000010100001101100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + 4: "0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010101111111011111101111010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", 5: "0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010111111111011111101111110000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", 6: "0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001111010001010000101000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000" }; diff --git a/docs/html/search/variables_5f.js b/docs/html/search/variables_5f.js index 1bee8a69..9345f02d 100644 --- a/docs/html/search/variables_5f.js +++ b/docs/html/search/variables_5f.js @@ -5,6 +5,7 @@ var searchData= ['_5fcode_5fmap',['_code_map',['../namespacepyrax_1_1exceptions.html#ab5d31bf8fb13068e1eecee2640858771',1,'pyrax::exceptions']]], ['_5fenvironment',['_environment',['../namespacepyrax.html#a9fecb0e59b3675027f29fc6870cf0d03',1,'pyrax']]], ['_5fhttp_5fdebug',['_http_debug',['../namespacepyrax.html#a6e3493c19e86089da9cd511800adbde3',1,'pyrax']]], + ['_5finvalid_5fkey_5fpat',['_invalid_key_pat',['../namespacepyrax_1_1cloudmonitoring.html#a96865c97ed6b14f9c1b5561e89f98515',1,'pyrax::cloudmonitoring']]], ['_5fpat',['_pat',['../namespacepyrax_1_1base__identity.html#a850dd666ec6ae04c07f742c66d17c042',1,'pyrax::base_identity']]], ['_5futc_5fpat',['_utc_pat',['../namespacepyrax_1_1base__identity.html#acb654137ac94aa138ceaae7521b69540',1,'pyrax::base_identity']]] ]; diff --git a/docs/html/search/variables_61.js b/docs/html/search/variables_61.js index a4b222bd..e870bae6 100644 --- a/docs/html/search/variables_61.js +++ b/docs/html/search/variables_61.js @@ -11,5 +11,6 @@ var searchData= ['auth_5fendpoint',['AUTH_ENDPOINT',['../namespacepyrax_1_1identity_1_1rax__identity.html#a62e4aae3f13b88a642e7cd2a19d43f36',1,'pyrax::identity::rax_identity']]], ['authenticated',['authenticated',['../classpyrax_1_1base__identity_1_1BaseAuth.html#a48f0dc4cf47cd14cdfda7e8495b0a76b',1,'pyrax::base_identity::BaseAuth.authenticated()'],['../classpyrax_1_1identity_1_1rax__identity_1_1RaxIdentity.html#a48f0dc4cf47cd14cdfda7e8495b0a76b',1,'pyrax::identity::rax_identity::RaxIdentity::authenticated()']]], ['author',['author',['../namespacesetup.html#ab873cebb3b7e47db4fe59837d1aaa210',1,'setup']]], - ['author_5femail',['author_email',['../namespacesetup.html#a9b3c5cceb9178d1968dd26e6f147265d',1,'setup']]] + ['author_5femail',['author_email',['../namespacesetup.html#a9b3c5cceb9178d1968dd26e6f147265d',1,'setup']]], + ['autoscale',['autoscale',['../namespacepyrax.html#a71d7ac858bc96ae6302115ab8fe7095a',1,'pyrax']]] ]; diff --git a/docs/html/search/variables_63.js b/docs/html/search/variables_63.js index 51b3858a..a4d6b2c3 100644 --- a/docs/html/search/variables_63.js +++ b/docs/html/search/variables_63.js @@ -14,6 +14,7 @@ var searchData= ['cloud_5fdatabases',['cloud_databases',['../namespacepyrax.html#af1a86dab674b703fc06491e66aacadb6',1,'pyrax']]], ['cloud_5fdns',['cloud_dns',['../namespacepyrax.html#acb0f91693d36d52270ed91fd2e919fcc',1,'pyrax']]], ['cloud_5floadbalancers',['cloud_loadbalancers',['../namespacepyrax.html#a6d6a60201d4fb3fb6208a724c2b7fb1f',1,'pyrax']]], + ['cloud_5fmonitoring',['cloud_monitoring',['../namespacepyrax.html#a312b914939298c0bef9d8665edc44646',1,'pyrax']]], ['cloud_5fnetworks',['cloud_networks',['../namespacepyrax.html#af25ef81616c79ed5da4655185879259f',1,'pyrax']]], ['cloudfiles',['cloudfiles',['../namespacepyrax.html#a87bf34a456a3712f3bd4a7207f1c36ca',1,'pyrax']]], ['cloudservers',['cloudservers',['../namespacepyrax.html#a558330633ea0238aee2d4f5f5a7afa07',1,'pyrax']]], diff --git a/docs/html/search/variables_65.js b/docs/html/search/variables_65.js index 8caec69e..e47dd35d 100644 --- a/docs/html/search/variables_65.js +++ b/docs/html/search/variables_65.js @@ -3,6 +3,7 @@ var searchData= ['early_5fdate_5fstr',['EARLY_DATE_STR',['../namespacepyrax_1_1cf__wrapper_1_1client.html#a9115ffad088bca27e5e8c2cea2c413e2',1,'pyrax::cf_wrapper::client']]], ['endpoint_5ftype',['endpoint_type',['../classpyrax_1_1client_1_1BaseClient.html#a3bd93a44d4f767d114caabe620f7e772',1,'pyrax::client::BaseClient']]], ['endpoints',['endpoints',['../classpyrax_1_1exceptions_1_1AmbiguousEndpoints.html#a00b95759168f601d56d8cdc26a894d46',1,'pyrax::exceptions::AmbiguousEndpoints']]], + ['entity',['entity',['../classpyrax_1_1cloudmonitoring_1_1CloudMonitorCheck.html#a6e49c9e0d2b310e885a8c8f6ebc155e6',1,'pyrax::cloudmonitoring::CloudMonitorCheck::entity()'],['../classpyrax_1_1cloudmonitoring_1_1CloudMonitorAlarm.html#a6e49c9e0d2b310e885a8c8f6ebc155e6',1,'pyrax::cloudmonitoring::CloudMonitorAlarm::entity()']]], ['env_5fdct',['env_dct',['../classpyrax_1_1Settings.html#af10cee202a039548ef1872a4ebfcbaa4',1,'pyrax::Settings']]], ['etag',['etag',['../classpyrax_1_1cf__wrapper_1_1storage__object_1_1StorageObject.html#a1ee78e6280ae4527b4257099cfb8c330',1,'pyrax::cf_wrapper::storage_object::StorageObject']]], ['etag_5ffail_5fpat',['etag_fail_pat',['../namespacepyrax_1_1cf__wrapper_1_1client.html#a73ecac0c29c1866713f3d26ca05f986c',1,'pyrax::cf_wrapper::client']]], diff --git a/docs/html/search/variables_6e.js b/docs/html/search/variables_6e.js index 707a7827..8ea6c711 100644 --- a/docs/html/search/variables_6e.js +++ b/docs/html/search/variables_6e.js @@ -1,6 +1,6 @@ var searchData= [ - ['name',['name',['../classpyrax_1_1cf__wrapper_1_1container_1_1Container.html#ab74e6bf80237ddc4109968cedc58c151',1,'pyrax::cf_wrapper::container::Container.name()'],['../classpyrax_1_1cf__wrapper_1_1storage__object_1_1StorageObject.html#ab74e6bf80237ddc4109968cedc58c151',1,'pyrax::cf_wrapper::storage_object::StorageObject.name()'],['../classpyrax_1_1client_1_1BaseClient.html#a8ccf841cb59e451791bcb2e1ac4f1edc',1,'pyrax::client::BaseClient.name()'],['../classpyrax_1_1cloudblockstorage_1_1CloudBlockStorageClient.html#a8ccf841cb59e451791bcb2e1ac4f1edc',1,'pyrax::cloudblockstorage::CloudBlockStorageClient::name()'],['../classpyrax_1_1clouddatabases_1_1CloudDatabaseClient.html#a8ccf841cb59e451791bcb2e1ac4f1edc',1,'pyrax::clouddatabases::CloudDatabaseClient::name()'],['../classpyrax_1_1clouddns_1_1CloudDNSRecord.html#ab74e6bf80237ddc4109968cedc58c151',1,'pyrax::clouddns::CloudDNSRecord.name()'],['../classpyrax_1_1clouddns_1_1CloudDNSPTRRecord.html#ab74e6bf80237ddc4109968cedc58c151',1,'pyrax::clouddns::CloudDNSPTRRecord.name()'],['../classpyrax_1_1clouddns_1_1CloudDNSClient.html#a8ccf841cb59e451791bcb2e1ac4f1edc',1,'pyrax::clouddns::CloudDNSClient::name()'],['../classpyrax_1_1cloudloadbalancers_1_1CloudLoadBalancerClient.html#a8ccf841cb59e451791bcb2e1ac4f1edc',1,'pyrax::cloudloadbalancers::CloudLoadBalancerClient::name()'],['../classpyrax_1_1cloudnetworks_1_1CloudNetworkClient.html#ab74e6bf80237ddc4109968cedc58c151',1,'pyrax::cloudnetworks::CloudNetworkClient::name()'],['../classpyrax_1_1utils_1_1SelfDeletingTempfile.html#ab74e6bf80237ddc4109968cedc58c151',1,'pyrax::utils::SelfDeletingTempfile::name()'],['../classpyrax_1_1utils_1_1SelfDeletingTempDirectory.html#ab74e6bf80237ddc4109968cedc58c151',1,'pyrax::utils::SelfDeletingTempDirectory::name()'],['../namespacesetup.html#a8ccf841cb59e451791bcb2e1ac4f1edc',1,'setup.name()']]], + ['name',['name',['../classpyrax_1_1autoscale_1_1AutoScaleClient.html#a8ccf841cb59e451791bcb2e1ac4f1edc',1,'pyrax::autoscale::AutoScaleClient::name()'],['../classpyrax_1_1cf__wrapper_1_1container_1_1Container.html#ab74e6bf80237ddc4109968cedc58c151',1,'pyrax::cf_wrapper::container::Container.name()'],['../classpyrax_1_1cf__wrapper_1_1storage__object_1_1StorageObject.html#ab74e6bf80237ddc4109968cedc58c151',1,'pyrax::cf_wrapper::storage_object::StorageObject.name()'],['../classpyrax_1_1client_1_1BaseClient.html#a8ccf841cb59e451791bcb2e1ac4f1edc',1,'pyrax::client::BaseClient.name()'],['../classpyrax_1_1cloudblockstorage_1_1CloudBlockStorageClient.html#a8ccf841cb59e451791bcb2e1ac4f1edc',1,'pyrax::cloudblockstorage::CloudBlockStorageClient::name()'],['../classpyrax_1_1clouddatabases_1_1CloudDatabaseClient.html#a8ccf841cb59e451791bcb2e1ac4f1edc',1,'pyrax::clouddatabases::CloudDatabaseClient::name()'],['../classpyrax_1_1clouddns_1_1CloudDNSRecord.html#ab74e6bf80237ddc4109968cedc58c151',1,'pyrax::clouddns::CloudDNSRecord.name()'],['../classpyrax_1_1clouddns_1_1CloudDNSPTRRecord.html#ab74e6bf80237ddc4109968cedc58c151',1,'pyrax::clouddns::CloudDNSPTRRecord.name()'],['../classpyrax_1_1clouddns_1_1CloudDNSClient.html#a8ccf841cb59e451791bcb2e1ac4f1edc',1,'pyrax::clouddns::CloudDNSClient::name()'],['../classpyrax_1_1cloudloadbalancers_1_1CloudLoadBalancerClient.html#a8ccf841cb59e451791bcb2e1ac4f1edc',1,'pyrax::cloudloadbalancers::CloudLoadBalancerClient::name()'],['../classpyrax_1_1cloudmonitoring_1_1CloudMonitorClient.html#ab74e6bf80237ddc4109968cedc58c151',1,'pyrax::cloudmonitoring::CloudMonitorClient::name()'],['../classpyrax_1_1cloudnetworks_1_1CloudNetworkClient.html#ab74e6bf80237ddc4109968cedc58c151',1,'pyrax::cloudnetworks::CloudNetworkClient::name()'],['../classpyrax_1_1utils_1_1SelfDeletingTempfile.html#ab74e6bf80237ddc4109968cedc58c151',1,'pyrax::utils::SelfDeletingTempfile::name()'],['../classpyrax_1_1utils_1_1SelfDeletingTempDirectory.html#ab74e6bf80237ddc4109968cedc58c151',1,'pyrax::utils::SelfDeletingTempDirectory::name()'],['../namespacesetup.html#a8ccf841cb59e451791bcb2e1ac4f1edc',1,'setup.name()']]], ['name_5fattr',['NAME_ATTR',['../classpyrax_1_1resource_1_1BaseResource.html#a74fac10a98253f8b0308159a33113ab9',1,'pyrax::resource::BaseResource']]], ['next_5furi',['next_uri',['../classpyrax_1_1clouddns_1_1ResultsIterator.html#a52d2d557c979c7d47d2f6733f9bb30c7',1,'pyrax::clouddns::ResultsIterator']]], ['no_5fsuch_5fcontainer_5fpattern',['no_such_container_pattern',['../namespacepyrax_1_1cf__wrapper_1_1client.html#ab3150aa95b9e341f9b4c3f11214a9097',1,'pyrax::cf_wrapper::client']]], diff --git a/docs/html/search/variables_70.js b/docs/html/search/variables_70.js index 98448cdf..98d3b194 100644 --- a/docs/html/search/variables_70.js +++ b/docs/html/search/variables_70.js @@ -6,6 +6,8 @@ var searchData= ['password',['password',['../classpyrax_1_1base__identity_1_1BaseAuth.html#ac0d6a26a6e1c25921ff65ba7790ee92d',1,'pyrax::base_identity::BaseAuth.password()'],['../classpyrax_1_1base__identity_1_1BaseAuth.html#a9dbb300e28bc21c8dab41b01883918eb',1,'pyrax::base_identity::BaseAuth.password()'],['../classpyrax_1_1identity_1_1rax__identity_1_1RaxIdentity.html#a9dbb300e28bc21c8dab41b01883918eb',1,'pyrax::identity::rax_identity::RaxIdentity.password()']]], ['path',['path',['../namespacepyrax_1_1identity.html#ae6fc00af7c5b5a7c5f40ce6dc6b47d85',1,'pyrax::identity']]], ['plural_5fresponse_5fkey',['plural_response_key',['../classpyrax_1_1manager_1_1BaseManager.html#a692be54e20855ad7f41d446719f26491',1,'pyrax::manager::BaseManager']]], + ['policies',['policies',['../classpyrax_1_1autoscale_1_1ScalingGroup.html#a20e4bd6dc33dd1f27f9b7eaed505f80e',1,'pyrax::autoscale::ScalingGroup']]], + ['policy',['policy',['../classpyrax_1_1autoscale_1_1AutoScaleWebhook.html#ad986b73e9d5f47a623a9b6d773c25e34',1,'pyrax::autoscale::AutoScaleWebhook']]], ['port',['port',['../classpyrax_1_1cloudloadbalancers_1_1Node.html#af8fb0f45ee0195c7422a49e6a8d72369',1,'pyrax::cloudloadbalancers::Node']]], ['priority',['priority',['../classpyrax_1_1clouddns_1_1CloudDNSRecord.html#a6a5183df4c54c3e28dc8dc704f2487d5',1,'pyrax::clouddns::CloudDNSRecord']]], ['pseudo_5fnetworks',['PSEUDO_NETWORKS',['../classpyrax_1_1cloudnetworks_1_1CloudNetworkClient.html#a9222604bace99de894b6f5b7a5ce5b2d',1,'pyrax::cloudnetworks::CloudNetworkClient.PSEUDO_NETWORKS()'],['../namespacepyrax_1_1cloudnetworks.html#a38c15ff4244e5bd8cf394fab766e9d61',1,'pyrax::cloudnetworks.PSEUDO_NETWORKS()']]], diff --git a/docs/html/search/variables_72.js b/docs/html/search/variables_72.js index e14702f5..7fb15041 100644 --- a/docs/html/search/variables_72.js +++ b/docs/html/search/variables_72.js @@ -3,7 +3,7 @@ var searchData= ['region',['region',['../classpyrax_1_1base__identity_1_1BaseAuth.html#a1b9edddb3735d131c67e9e824f07c402',1,'pyrax::base_identity::BaseAuth']]], ['region_5fname',['region_name',['../classpyrax_1_1client_1_1BaseClient.html#a326b5b91b887c67a677e2eb509b569b6',1,'pyrax::client::BaseClient']]], ['regions',['regions',['../classpyrax_1_1base__identity_1_1BaseAuth.html#a4c4786354df7358bf12c3c65069dd8b7',1,'pyrax::base_identity::BaseAuth.regions()'],['../namespacepyrax.html#a2b45bebec67926b49ea55f14eb0b8f8e',1,'pyrax.regions()']]], - ['reload',['reload',['../classpyrax_1_1resource_1_1BaseResource.html#ac5c05266f4f3b5937cefb6a818fc6675',1,'pyrax::resource::BaseResource']]], + ['reload',['reload',['../classpyrax_1_1autoscale_1_1AutoScalePolicy.html#ac5c05266f4f3b5937cefb6a818fc6675',1,'pyrax::autoscale::AutoScalePolicy.reload()'],['../classpyrax_1_1autoscale_1_1AutoScaleWebhook.html#ac5c05266f4f3b5937cefb6a818fc6675',1,'pyrax::autoscale::AutoScaleWebhook.reload()'],['../classpyrax_1_1cloudmonitoring_1_1CloudMonitorCheck.html#ac5c05266f4f3b5937cefb6a818fc6675',1,'pyrax::cloudmonitoring::CloudMonitorCheck.reload()'],['../classpyrax_1_1cloudmonitoring_1_1CloudMonitorAlarm.html#ac5c05266f4f3b5937cefb6a818fc6675',1,'pyrax::cloudmonitoring::CloudMonitorAlarm.reload()'],['../classpyrax_1_1resource_1_1BaseResource.html#ac5c05266f4f3b5937cefb6a818fc6675',1,'pyrax::resource::BaseResource.reload()']]], ['request_5fid',['request_id',['../classpyrax_1_1exceptions_1_1ClientException.html#a24b613add05b03f7af1be9c4dab66d59',1,'pyrax::exceptions::ClientException']]], ['resource_5fclass',['resource_class',['../classpyrax_1_1manager_1_1BaseManager.html#ad9ec49f2ad20e5d29aaaedf6da36c880',1,'pyrax::manager::BaseManager']]], ['response_5fkey',['response_key',['../classpyrax_1_1manager_1_1BaseManager.html#ab74e33fd52b6ead303c8ecd584121a47',1,'pyrax::manager::BaseManager']]], diff --git a/docs/html/search/variables_73.js b/docs/html/search/variables_73.js index 37bc4fbc..eb8d99d5 100644 --- a/docs/html/search/variables_73.js +++ b/docs/html/search/variables_73.js @@ -1,5 +1,6 @@ var searchData= [ + ['scaling_5fgroup',['scaling_group',['../classpyrax_1_1autoscale_1_1AutoScalePolicy.html#a7f23105293583afca652e62b3dc62613',1,'pyrax::autoscale::AutoScalePolicy']]], ['serverclientexception',['ServerClientException',['../namespacepyrax_1_1exceptions.html#a033b7e579f64b8616b8c34e2406e24d7',1,'pyrax::exceptions']]], ['servernotfound',['ServerNotFound',['../namespacepyrax_1_1exceptions.html#aa7887bc0806ad489b281e31ec228dcc3',1,'pyrax::exceptions']]], ['service_5fname',['service_name',['../classpyrax_1_1client_1_1BaseClient.html#ad71253c9267916c12cb3b7521e588151',1,'pyrax::client::BaseClient']]], diff --git a/docs/html/utils_8py.html b/docs/html/utils_8py.html index 3d053eb9..79209c7c 100644 --- a/docs/html/utils_8py.html +++ b/docs/html/utils_8py.html @@ -113,13 +113,17 @@ - + + + + + @@ -158,7 +162,7 @@ diff --git a/docs/html/version_8py.html b/docs/html/version_8py.html index ea2e9aa8..11c89614 100644 --- a/docs/html/version_8py.html +++ b/docs/html/version_8py.html @@ -88,7 +88,7 @@ - +
                                                                      cf_wrapperThis module wraps swiftclient, the Python client for OpenStack / Swift, providing an object-oriented interface to the Swift object store
                                                                      pyrax
                                                                      pyrax::autoscale
                                                                      pyrax::base_identity
                                                                      pyrax::cf_wrapper
                                                                      pyrax::cf_wrapper::client
                                                                      pyrax::clouddatabases
                                                                      pyrax::clouddns
                                                                      pyrax::cloudloadbalancers
                                                                      pyrax::cloudmonitoring
                                                                      pyrax::cloudnetworks
                                                                      pyrax::exceptions
                                                                      pyrax::identity
                                                                      def wait_until
                                                                       When changing the state of an object, it will commonly be in a transitional state until the change is complete.
                                                                      def wait_for_build
                                                                       Designed to handle the most common use case for wait_unti: an object whose 'status' attribute will end up in either 'ACTIVE' or 'ERROR' state.
                                                                       Designed to handle the most common use case for wait_until: an object whose 'status' attribute will end up in either 'ACTIVE' or 'ERROR' state.
                                                                      def iso_time_string
                                                                       Takes either a date, datetime or a string, and returns the standard ISO formatted string for that date/time, with any fractional second portion removed.
                                                                      def to_timestamp
                                                                       Takes a value that is either a Python date, datetime, or a string representation of a date/datetime value.
                                                                      def get_id
                                                                       Returns the 'id' attribute of 'id_or_obj' if present; if not, returns 'id_or_obj'.
                                                                      def get_name
                                                                       Returns the 'name' attribute of 'name_or_obj' if present; if not, returns 'name_or_obj'.
                                                                      def params_to_dict
                                                                       Given a set of optional parameter names, constructs a dictionary with the parameter name as the key, and the value for that key in the local_dict as the value, for all non-None values.
                                                                      def match_pattern
                                                                       Compares `nm` with the supplied patterns, and returns True if it matches at least one.
                                                                      def update_exc
                                                                      namespace  pyrax::version

                                                                      Variables

                                                                      string version = "1.4.11"
                                                                      string version = "1.5.0"
                                                                      @@ -108,7 +108,7 @@ diff --git a/pyrax/__init__.py b/pyrax/__init__.py index efbdb9cc..22419efa 100755 --- a/pyrax/__init__.py +++ b/pyrax/__init__.py @@ -64,6 +64,7 @@ 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 clouddatabases import CloudDatabaseDatabase from clouddatabases import CloudDatabaseFlavor @@ -74,6 +75,7 @@ from cloudblockstorage import CloudBlockStorageClient from clouddns import CloudDNSClient from cloudnetworks import CloudNetworkClient + from cloudmonitoring import CloudMonitorClient except ImportError: # See if this is the result of the importing of version.py in setup.py callstack = inspect.stack() @@ -82,7 +84,7 @@ if stack[1].endswith("/setup.py"): in_setup = True if not in_setup: - # This isn't a normal import problem during setup; re-raise + # This isn't a normal import problem during setup; re-raise raise # Initiate the services to None until we are authenticated. @@ -93,6 +95,8 @@ cloud_blockstorage = None cloud_dns = None cloud_networks = None +cloud_monitoring = None +autoscale = None # Default region for all services. Can be individually overridden if needed default_region = None # Encoding to use when working with non-ASCII names @@ -119,6 +123,8 @@ "volume": CloudBlockStorageClient, "dns": CloudDNSClient, "compute:network": CloudNetworkClient, + "monitor": CloudMonitorClient, + "autoscale": AutoScaleClient, } @@ -526,7 +532,7 @@ def clear_credentials(): """De-authenticate by clearing all the names back to None.""" global identity, regions, services, cloudservers, cloudfiles global cloud_loadbalancers, cloud_databases, cloud_blockstorage, cloud_dns - global cloud_networks + global cloud_networks, cloud_monitoring, autoscale identity = None regions = tuple() services = tuple() @@ -537,6 +543,8 @@ def clear_credentials(): cloud_blockstorage = None cloud_dns = None cloud_networks = None + cloud_monitoring = None + autoscale = None def _make_agent_name(base): @@ -553,7 +561,8 @@ def _make_agent_name(base): def connect_to_services(region=None): """Establishes authenticated connections to the various cloud APIs.""" global cloudservers, cloudfiles, cloud_loadbalancers, cloud_databases - global cloud_blockstorage, cloud_dns, cloud_networks + global cloud_blockstorage, cloud_dns, cloud_networks, cloud_monitoring + global autoscale cloudservers = connect_to_cloudservers(region=region) cloudfiles = connect_to_cloudfiles(region=region) cloud_loadbalancers = connect_to_cloud_loadbalancers(region=region) @@ -561,6 +570,8 @@ def connect_to_services(region=None): cloud_blockstorage = connect_to_cloud_blockstorage(region=region) cloud_dns = connect_to_cloud_dns(region=region) cloud_networks = connect_to_cloud_networks(region=region) + cloud_monitoring = connect_to_cloud_monitoring(region=region) + autoscale = connect_to_autoscale(region=region) def _get_service_endpoint(svc, region=None, public=True): @@ -686,20 +697,31 @@ def connect_to_cloud_loadbalancers(region=None): def connect_to_cloud_blockstorage(region=None): """Creates a client for working with cloud blockstorage.""" - return _create_client(ep_name="volume", - service_type="volume", region=region) + return _create_client(ep_name="volume", service_type="volume", + region=region) def connect_to_cloud_dns(region=None): """Creates a client for working with cloud dns.""" - return _create_client(ep_name="dns", - service_type="rax:dns", region=region) + return _create_client(ep_name="dns", service_type="rax:dns", region=region) def connect_to_cloud_networks(region=None): """Creates a client for working with cloud networks.""" - return _create_client(ep_name="compute:network", - service_type="compute", region=region) + return _create_client(ep_name="compute:network", service_type="compute", + region=region) + + +def connect_to_cloud_monitoring(region=None): + """Creates a client for working with cloud monitoring.""" + return _create_client(ep_name="monitor", service_type="monitor", + region=region) + + +def connect_to_autoscale(region=None): + """Creates a client for working with AutoScale.""" + return _create_client(ep_name="autoscale", + service_type="autoscale", region=region) def get_http_debug(): @@ -713,7 +735,8 @@ def set_http_debug(val): # Set debug on the various services identity.http_log_debug = val for svc in (cloudservers, cloudfiles, cloud_loadbalancers, - cloud_blockstorage, cloud_databases, cloud_dns, cloud_networks): + cloud_blockstorage, cloud_databases, cloud_dns, cloud_networks, + autoscale): if svc is not None: svc.http_log_debug = val if not val: diff --git a/pyrax/autoscale.py b/pyrax/autoscale.py new file mode 100644 index 00000000..c5a8930f --- /dev/null +++ b/pyrax/autoscale.py @@ -0,0 +1,1023 @@ +#!/usr/bin/env python +# -*- coding: utf-8 -*- + +# Copyright 2013 Rackspace + +# All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); you may +# not use this file except in compliance with the License. You may obtain +# a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT +# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the +# License for the specific language governing permissions and limitations +# under the License. + +from functools import wraps + +import pyrax +from pyrax.client import BaseClient +from pyrax.cloudloadbalancers import CloudLoadBalancer +from pyrax.cloudnetworks import SERVICE_NET_ID +import pyrax.exceptions as exc +from pyrax.manager import BaseManager +from pyrax.resource import BaseResource +import pyrax.utils as utils + + + +class ScalingGroup(BaseResource): + def __init__(self, *args, **kwargs): + super(ScalingGroup, self).__init__(*args, **kwargs) + self._non_display = ["active", "launchConfiguration", "links", + "groupConfiguration", "policies", "scalingPolicies"] + self._repr_properties = ["name", "cooldown", "metadata", + "min_entities", "max_entities"] + self._make_policies() + + + def _make_policies(self): + """ + Convert the 'scalingPolicies' dictionary into AutoScalePolicy objects. + """ + self.policies = [AutoScalePolicy(self.manager, dct, self) + for dct in self.scalingPolicies] + + + def get_state(self): + """ + Returns the current state of this scaling group. + """ + return self.manager.get_state(self) + + + def pause(self): + """ + Pauses all execution of the policies for this scaling group. + """ + return self.manager.pause(self) + + + def resume(self): + """ + Resumes execution of the policies for this scaling group. + """ + return self.manager.resume(self) + + + def update(self, name=None, cooldown=None, min_entities=None, + max_entities=None, metadata=None): + """ + Updates this ScalingGroup. One or more of the attributes can be + specified. + + NOTE: if you specify metadata, it will *replace* any existing metadata. + If you want to add to it, you either need to pass the complete dict of + metadata, or call the update_metadata() method. + """ + return self.manager.update(self, name=name, + cooldown=cooldown, min_entities=min_entities, + max_entities=max_entities, metadata=metadata) + + + def update_metadata(self, metadata): + """ + Adds the given metadata dict to the existing metadata for this scaling + group. + """ + return self.manager.update_metadata(self, metadata=metadata) + + + def get_configuration(self): + """ + Returns the scaling group configuration in a dictionary. + """ + return self.manager.get_configuration(self) + + + def get_launch_config(self): + """ + Returns the launch configuration for this scaling group. + """ + return self.manager.get_launch_config(self) + + + def update_launch_config(self, server_name=None, image=None, flavor=None, + disk_config=None, metadata=None, personality=None, networks=None, + load_balancers=None): + """ + Updates the server launch configuration for this scaling group. + One or more of the available attributes can be specified. + + NOTE: if you specify metadata, it will *replace* any existing metadata. + If you want to add to it, you either need to pass the complete dict of + metadata, or call the update_launch_metadata() method. + """ + return self.manager.update_launch_config(self, server_name=server_name, + image=image, flavor=flavor, disk_config=disk_config, + metadata=metadata, personality=personality, networks=networks, + load_balancers=load_balancers) + + + def update_launch_metadata(self, metadata): + """ + Adds the given metadata dict to the existing metadata for this scaling + group's launch configuration. + """ + return self.manager.update_launch_metadata(self, metadata) + + + def add_policy(self, name, policy_type, cooldown, change, is_percent=False): + """ + Adds a policy with the given values to this scaling group. The + 'change' parameter is treated as an absolute amount, unless + 'is_percent' is True, in which case it is treated as a percentage. + """ + return self.manager.add_policy(self, name, policy_type, cooldown, + change, is_percent=is_percent) + + + def list_policies(self): + """ + Returns a list of all policies defined for this scaling group. + """ + return self.manager.list_policies(self) + + + def get_policy(self, policy): + """ + Gets the detail for the specified policy. + """ + return self.manager.get_policy(self, policy) + + + def update_policy(self, policy, name=None, policy_type=None, cooldown=None, + change=None, is_percent=False): + """ + Updates the specified policy. One or more of the parameters may be + specified. + """ + return self.manager.update_policy(scaling_group=self, policy=policy, + name=name, policy_type=policy_type, cooldown=cooldown, + change=change, is_percent=is_percent) + + + def execute_policy(self, policy): + """ + Executes the specified policy for this scaling group. + """ + return self.manager.execute_policy(scaling_group=self, policy=policy) + + + def delete_policy(self, policy): + """ + Deletes the specified policy from this scaling group. + """ + return self.manager.delete_policy(scaling_group=self, policy=policy) + + + def add_webhook(self, policy, name, metadata=None): + """ + Adds a webhook to the specified policy. + """ + return self.manager.add_webhook(self, policy, name, metadata=metadata) + + + def list_webhooks(self, policy): + """ + Returns a list of all webhooks for the specified policy. + """ + return self.manager.list_webhooks(self, policy) + + + def update_webhook(self, policy, webhook, name=None, metadata=None): + """ + Updates the specified webhook. One or more of the parameters may be + specified. + """ + return self.manager.update_webhook(scaling_group=self, policy=policy, + webhook=webhook, name=name, metadata=metadata) + + + def update_webhook_metadata(self, policy, webhook, metadata): + """ + Adds the given metadata dict to the existing metadata for the specified + webhook. + """ + return self.manager.update_webhook_metadata(self, policy, webhook, + metadata) + + + def delete_webhook(self, policy, webhook): + """ + Deletes the specified webhook from the specified policy. + """ + return self.manager.delete_webhook(self, policy, webhook) + + + @property + def policy_count(self): + return len(self.policies) + + + ################################################################## + # The following property declarations allow access to the base attributes + # of the ScalingGroup held in the 'groupConfiguration' dict as if they + # were native attributes. + ################################################################## + @property + def name(self): + return self.groupConfiguration.get("name") + + @name.setter + def name(self, val): + self.groupConfiguration["name"] = val + + @property + def cooldown(self): + return self.groupConfiguration.get("cooldown") + + @cooldown.setter + def cooldown(self, val): + self.groupConfiguration["cooldown"] = val + + + @property + def metadata(self): + return self.groupConfiguration.get("metadata") + + @metadata.setter + def metadata(self, val): + self.groupConfiguration["metadata"] = val + + + @property + def min_entities(self): + return self.groupConfiguration.get("minEntities") + + @min_entities.setter + def min_entities(self, val): + self.groupConfiguration["minEntities"] = val + + + @property + def max_entities(self): + return self.groupConfiguration.get("maxEntities") + + @max_entities.setter + def max_entities(self, val): + self.groupConfiguration["maxEntities"] = val + ################################################################## + + + +class ScalingGroupManager(BaseManager): + def __init__(self, api, resource_class=None, response_key=None, + plural_response_key=None, uri_base=None): + super(ScalingGroupManager, self).__init__(api, + resource_class=resource_class, response_key=response_key, + plural_response_key=plural_response_key, uri_base=uri_base) + + + def get_state(self, scaling_group): + """ + Returns the current state of the specified scaling group as a + dictionary. + """ + uri = "/%s/%s/state" % (self.uri_base, utils.get_id(scaling_group)) + resp, resp_body = self.api.method_get(uri) + data = resp_body["group"] + ret = {} + ret["active"] = [itm["id"] for itm in data["active"]] + ret["active_capacity"] = data["activeCapacity"] + ret["desired_capacity"] = data["desiredCapacity"] + ret["pending_capacity"] = data["pendingCapacity"] + ret["paused"] = data["paused"] + return ret + + + def pause(self, scaling_group): + """ + Pauses all execution of the policies for the specified scaling group. + """ + uri = "/%s/%s/pause" % (self.uri_base, utils.get_id(scaling_group)) + resp, resp_body = self.api.method_post(uri) + return None + + + def resume(self, scaling_group): + """ + Resumes execution of the policies for the specified scaling group. + """ + uri = "/%s/%s/resume" % (self.uri_base, utils.get_id(scaling_group)) + resp, resp_body = self.api.method_post(uri) + return None + + + def get_configuration(self, scaling_group): + """ + Returns the scaling group's configuration in a dictionary. + """ + uri = "/%s/%s/config" % (self.uri_base, utils.get_id(scaling_group)) + resp, resp_body = self.api.method_get(uri) + return resp_body.get("groupConfiguration") + + + def update(self, scaling_group, name=None, cooldown=None, + min_entities=None, max_entities=None, metadata=None): + """ + Updates an existing ScalingGroup. One or more of the attributes can + be specified. + + NOTE: if you specify metadata, it will *replace* any existing metadata. + If you want to add to it, you either need to pass the complete dict of + metadata, or call the update_metadata() method. + """ + if not isinstance(scaling_group, ScalingGroup): + scaling_group = self.get(scaling_group) + uri = "/%s/%s/config" % (self.uri_base, scaling_group.id) + if cooldown is None: + cooldown = scaling_group.cooldown + if min_entities is None: + min_entities = scaling_group.min_entities + if max_entities is None: + max_entities = scaling_group.max_entities + body = {"name": name or scaling_group.name, + "cooldown": cooldown, + "minEntities": min_entities, + "maxEntities": max_entities, + "metadata": metadata or scaling_group.metadata, + } + resp, resp_body = self.api.method_put(uri, body=body) + return None + + + def update_metadata(self, scaling_group, metadata): + """ + Adds the given metadata dict to the existing metadata for the scaling + group. + """ + if not isinstance(scaling_group, ScalingGroup): + scaling_group = self.get(scaling_group) + curr_meta = scaling_group.metadata + curr_meta.update(metadata) + return self.update(scaling_group, metadata=curr_meta) + + + def get_launch_config(self, scaling_group): + """ + Returns the launch configuration for the specified scaling group. + """ + uri = "/%s/%s/launch" % (self.uri_base, utils.get_id(scaling_group)) + resp, resp_body = self.api.method_get(uri) + ret = {} + data = resp_body.get("launchConfiguration") + ret["type"] = data.get("type") + args = data.get("args", {}) + ret["load_balancers"] = args.get("loadBalancers") + srv = args.get("server", {}) + ret["name"] = srv.get("name") + ret["flavor"] = srv.get("flavorRef") + ret["image"] = srv.get("imageRef") + ret["disk_config"] = srv.get("OS-DCF:diskConfig") + ret["metadata"] = srv.get("metadata") + ret["personality"] = srv.get("personality") + ret["networks"] = srv.get("networks") + return ret + + + def update_launch_config(self, scaling_group, server_name=None, image=None, + flavor=None, disk_config=None, metadata=None, personality=None, + networks=None, load_balancers=None): + """ + Updates the server launch configuration for an existing scaling group. + One or more of the available attributes can be specified. + + NOTE: if you specify metadata, it will *replace* any existing metadata. + If you want to add to it, you either need to pass the complete dict of + metadata, or call the update_launch_metadata() method. + """ + if not isinstance(scaling_group, ScalingGroup): + scaling_group = self.get(scaling_group) + uri = "/%s/%s/launch" % (self.uri_base, scaling_group.id) + largs = scaling_group.launchConfiguration.get("args", {}) + srv_args = largs.get("server", {}) + lb_args = largs.get("loadBalancers", {}) + body = {"type": "launch_server", + "args": { + "server": { + "name": server_name or srv_args.get("name"), + "imageRef": image or srv_args.get("imageRef"), + "flavorRef": flavor or srv_args.get("flavorRef"), + "OS-DCF:diskConfig": disk_config or + srv_args.get("OS-DCF:diskConfig"), + "personality": personality or + srv_args.get("personality"), + "networks": networks or srv_args.get("networks"), + "metadata": metadata or srv_args.get("metadata"), + }, + "loadBalancers": load_balancers or lb_args, + }, + } + resp, resp_body = self.api.method_put(uri, body=body) + return None + + + def update_launch_metadata(self, scaling_group, metadata): + """ + Adds the given metadata dict to the existing metadata for the scaling + group's launch configuration. + """ + if not isinstance(scaling_group, ScalingGroup): + scaling_group = self.get(scaling_group) + curr_meta = scaling_group.launchConfiguration.get("args", {}).get( + "server", {}).get("metadata", {}) + curr_meta.update(metadata) + return self.update_launch_config(scaling_group, metadata=curr_meta) + + + def add_policy(self, scaling_group, name, policy_type, cooldown, change, + is_percent=False): + """ + Adds a policy with the given values to the specified scaling group. The + 'change' parameter is treated as an absolute amount, unless + 'is_percent' is True, in which case it is treated as a percentage. + """ + uri = "/%s/%s/policies" % (self.uri_base, utils.get_id(scaling_group)) + body = {"name": name, "cooldown": cooldown, "type": policy_type} + if is_percent: + body["changePercent"] = change + else: + body["change"] = change + # "body" needs to be a list + body = [body] + resp, resp_body = self.api.method_post(uri, body=body) + pol_info = resp_body.get("policies")[0] + return AutoScalePolicy(self, pol_info, scaling_group) + + + def list_policies(self, scaling_group): + """ + Returns a list of all policies defined for the specified scaling group. + """ + uri = "/%s/%s/policies" % (self.uri_base, utils.get_id(scaling_group)) + resp, resp_body = self.api.method_get(uri) + return [AutoScalePolicy(self, data, scaling_group) + for data in resp_body.get("policies", [])] + + + def get_policy(self, scaling_group, policy): + """ + Gets the detail for the specified policy. + """ + uri = "/%s/%s/policies/%s" % (self.uri_base, + utils.get_id(scaling_group), utils.get_id(policy)) + resp, resp_body = self.api.method_get(uri) + data = resp_body.get("policy") + return AutoScalePolicy(self, data, scaling_group) + + + def update_policy(self, scaling_group, policy, name=None, policy_type=None, + cooldown=None, change=None, is_percent=False): + """ + Updates the specified policy. One or more of the parameters may be + specified. + """ + uri = "/%s/%s/policies/%s" % (self.uri_base, + utils.get_id(scaling_group), utils.get_id(policy)) + if not isinstance(policy, AutoScalePolicy): + # Received an ID + policy = self.get_policy(scaling_group, policy) + body = {"name": name or policy.name, + "type": policy_type or policy.type, + "cooldown": cooldown or policy.cooldown, + } + if is_percent: + body["changePercent"] = change or policy.changePercent + else: + body["change"] = change or policy.change + resp, resp_body = self.api.method_put(uri, body=body) + return None + + + def execute_policy(self, scaling_group, policy): + """ + Executes the specified policy for this scaling group. + """ + uri = "/%s/%s/policies/%s/execute" % (self.uri_base, + utils.get_id(scaling_group), utils.get_id(policy)) + resp, resp_body = self.api.method_post(uri) + return None + + + def delete_policy(self, scaling_group, policy): + """ + Deletes the specified policy from the scaling group. + """ + uri = "/%s/%s/policies/%s" % (self.uri_base, + utils.get_id(scaling_group), utils.get_id(policy)) + resp, resp_body = self.api.method_delete(uri) + + + def add_webhook(self, scaling_group, policy, name, metadata=None): + """ + Adds a webhook to the specified policy. + """ + uri = "/%s/%s/policies/%s/webhooks" % (self.uri_base, + utils.get_id(scaling_group), utils.get_id(policy)) + body = {"name": name} + if metadata is not None: + body["metadata"] = metadata + # "body" needs to be a list + body = [body] + resp, resp_body = self.api.method_post(uri, body=body) + data = resp_body.get("webhooks")[0] + return AutoScaleWebhook(self, data, policy) + + + def list_webhooks(self, scaling_group, policy): + """ + Returns a list of all webhooks for the specified policy. + """ + uri = "/%s/%s/policies/%s/webhooks" % (self.uri_base, + utils.get_id(scaling_group), utils.get_id(policy)) + resp, resp_body = self.api.method_get(uri) + return [AutoScaleWebhook(self, data, policy) + for data in resp_body.get("webhooks", [])] + + + def get_webhook(self, scaling_group, policy, webhook): + """ + Gets the detail for the specified webhook. + """ + uri = "/%s/%s/policies/%s/webhooks/%s" % (self.uri_base, + utils.get_id(scaling_group), utils.get_id(policy), + utils.get_id(webhook)) + resp, resp_body = self.api.method_get(uri) + data = resp_body.get("webhook") + return AutoScaleWebhook(self, data, policy) + + + def update_webhook(self, scaling_group, policy, webhook, name=None, + metadata=None): + """ + Updates the specified webhook. One or more of the parameters may be + specified. + """ + uri = "/%s/%s/policies/%s/webhooks/%s" % (self.uri_base, + utils.get_id(scaling_group), utils.get_id(policy), + utils.get_id(webhook)) + if not isinstance(webhook, AutoScaleWebhook): + # Received an ID + webhook = self.get_webhook(scaling_group, policy, webhook) + body = {"name": name or webhook.name, + "metadata": metadata or webhook.metadata, + } + resp, resp_body = self.api.method_put(uri, body=body) + webhook.reload() + return webhook + + + def update_webhook_metadata(self, scaling_group, policy, webhook, metadata): + """ + Adds the given metadata dict to the existing metadata for the specified + webhook. + """ + if not isinstance(webhook, AutoScaleWebhook): + webhook = self.get_webhook(scaling_group, policy, webhook) + curr_meta = webhook.metadata or {} + curr_meta.update(metadata) + return self.update_webhook(scaling_group, policy, webhook, + metadata=curr_meta) + + + def delete_webhook(self, scaling_group, policy, webhook): + """ + Deletes the specified webhook from the specified policy. + """ + uri = "/%s/%s/policies/%s/webhooks/%s" % (self.uri_base, + utils.get_id(scaling_group), utils.get_id(policy), + utils.get_id(webhook)) + resp, resp_body = self.api.method_delete(uri) + return None + + + +class AutoScalePolicy(BaseResource): + def __init__(self, manager, info, scaling_group, *args, **kwargs): + super(AutoScalePolicy, self).__init__(manager, info, *args, **kwargs) + if not isinstance(scaling_group, ScalingGroup): + scaling_group = manager.get(scaling_group) + self.scaling_group = scaling_group + self._non_display = ["links", "scaling_group"] + + + def get(self): + """ + Gets the details for this policy. + """ + return self.manager.get_policy(self.scaling_group, self) + reload = get + + + def delete(self): + """ + Deletes this policy. + """ + return self.manager.delete_policy(self.scaling_group, self) + + + def update(self, name=None, policy_type=None, cooldown=None, change=None, + is_percent=False): + """ + Updates this policy. One or more of the parameters may be + specified. + """ + return self.manager.update_policy(scaling_group=self.scaling_group, + policy=self, name=name, policy_type=policy_type, + cooldown=cooldown, change=change, is_percent=is_percent) + + + def execute(self): + """ + Executes this policy. + """ + return self.manager.execute_policy(self.scaling_group, self) + + + def add_webhook(self, name, metadata=None): + """ + Adds a webhook to this policy. + """ + return self.manager.add_webhook(self.scaling_group, self, name, + metadata=metadata) + + + def list_webhooks(self): + """ + Returns a list of all webhooks for this policy. + """ + return self.manager.list_webhooks(self.scaling_group, self) + + + def get_webhook(self, webhook): + """ + Gets the detail for the specified webhook. + """ + return self.manager.get_webhook(self.scaling_group, self, webhook) + + + def update_webhook(self, webhook, name=None, metadata=None): + """ + Updates the specified webhook. One or more of the parameters may be + specified. + """ + return self.manager.update_webhook(self.scaling_group, policy=self, + webhook=webhook, name=name, metadata=metadata) + + + def update_webhook_metadata(self, webhook, metadata): + """ + Adds the given metadata dict to the existing metadata for the specified + webhook. + """ + return self.manager.update_webhook_metadata(self.scaling_group, self, + webhook, metadata) + + + def delete_webhook(self, webhook): + """ + Deletes the specified webhook from this policy. + """ + return self.manager.delete_webhook(self.scaling_group, self, webhook) + + + +class AutoScaleWebhook(BaseResource): + def __init__(self, manager, info, policy, *args, **kwargs): + super(AutoScaleWebhook, self).__init__(manager, info, *args, **kwargs) + if not isinstance(policy, AutoScalePolicy): + policy = manager.get_policy(policy) + self.policy = policy + self._non_display = ["links", "policy"] + + + def get(self): + return self.policy.get_webhook(self) + reload = get + + + def update(self, name=None, metadata=None): + """ + Updates this webhook. One or more of the parameters may be specified. + """ + return self.policy.update_webhook(self, name=name, metadata=metadata) + + + def update_metadata(self, metadata): + """ + Adds the given metadata dict to the existing metadata for this webhook. + """ + return self.policy.update_webhook_metadata(self, metadata) + + + def delete(self): + """ + Deletes this webhook. + """ + return self.policy.delete_webhook(self) + + + +class AutoScaleClient(BaseClient): + """ + This is the primary class for interacting with AutoScale. + """ + name = "Autoscale" + + def _configure_manager(self): + """ + Creates a manager to handle autoscale operations. + """ + self._manager = ScalingGroupManager(self, + resource_class=ScalingGroup, response_key="group", + uri_base="groups") + + + def get_state(self, scaling_group): + """ + Returns the current state of the specified scaling group. + """ + return self._manager.get_state(scaling_group) + + + def pause(self, scaling_group): + """ + Pauses all execution of the policies for the specified scaling group. + """ + #NOTE: This is not yet implemented. The code is based on the docs, + # so it should either work or be pretty close. + return self._manager.pause(scaling_group) + + + def resume(self, scaling_group): + """ + Resumes execution of the policies for the specified scaling group. + """ + #NOTE: This is not yet implemented. The code is based on the docs, + # so it should either work or be pretty close. + return self._manager.resume(scaling_group) + + + def update(self, scaling_group, name=None, cooldown=None, + min_entities=None, max_entities=None, metadata=None): + """ + Updates an existing ScalingGroup. One or more of the attributes can + be specified. + + NOTE: if you specify metadata, it will *replace* any existing metadata. + If you want to add to it, you either need to pass the complete dict of + metadata, or call the update_metadata() method. + """ + return self._manager.update(scaling_group, name=name, cooldown=cooldown, + min_entities=min_entities, max_entities=max_entities, + metadata=metadata) + + + def update_metadata(self, scaling_group, metadata): + """ + Adds the given metadata dict to the existing metadata for the scaling + group. + """ + return self._manager.update_metadata(scaling_group, metadata) + + + def get_configuration(self, scaling_group): + """ + Returns the scaling group's configuration in a dictionary. + """ + return self._manager.get_configuration(scaling_group) + + + def get_launch_config(self, scaling_group): + """ + Returns the launch configuration for the specified scaling group. + """ + return self._manager.get_launch_config(scaling_group) + + + def update_launch_config(self, scaling_group, server_name=None, image=None, + flavor=None, disk_config=None, metadata=None, personality=None, + networks=None, load_balancers=None): + """ + Updates the server launch configuration for an existing scaling group. + One or more of the available attributes can be specified. + + NOTE: if you specify metadata, it will *replace* any existing metadata. + If you want to add to it, you either need to pass the complete dict of + metadata, or call the update_launch_metadata() method. + """ + return self._manager.update_launch_config(scaling_group, + server_name=server_name, image=image, flavor=flavor, + disk_config=disk_config, metadata=metadata, + personality=personality, networks=networks, + load_balancers=load_balancers) + + + def update_launch_metadata(self, scaling_group, metadata): + """ + Adds the given metadata dict to the existing metadata for the scaling + group's launch configuration. + """ + return self._manager.update_launch_metadata(scaling_group, metadata) + + + def add_policy(self, scaling_group, name, policy_type, cooldown, change, + is_percent=False): + """ + Adds a policy with the given values to the specified scaling group. The + 'change' parameter is treated as an absolute amount, unless + 'is_percent' is True, in which case it is treated as a percentage. + """ + return self._manager.add_policy(scaling_group, name, policy_type, + cooldown, change, is_percent=is_percent) + + + def list_policies(self, scaling_group): + """ + Returns a list of all policies defined for the specified scaling group. + """ + return self._manager.list_policies(scaling_group) + + + def get_policy(self, scaling_group, policy): + """ + Gets the detail for the specified policy. + """ + return self._manager.get_policy(scaling_group, policy) + + + def update_policy(self, scaling_group, policy, name=None, policy_type=None, + cooldown=None, change=None, is_percent=False): + """ + Updates the specified policy. One or more of the parameters may be + specified. + """ + return self._manager.update_policy(scaling_group=scaling_group, + policy=policy, name=name, policy_type=policy_type, + cooldown=cooldown, change=change, is_percent=is_percent) + + + def execute_policy(self, scaling_group, policy): + """ + Executes the specified policy for the scaling group. + """ + return self._manager.execute_policy(scaling_group=scaling_group, + policy=policy) + + + def delete_policy(self, scaling_group, policy): + """ + Deletes the specified policy from the scaling group. + """ + return self._manager.delete_policy(scaling_group=scaling_group, + policy=policy) + + + def add_webhook(self, scaling_group, policy, name, metadata=None): + """ + Adds a webhook to the specified policy. + """ + return self._manager.add_webhook(scaling_group, policy, name, + metadata=metadata) + + + def list_webhooks(self, scaling_group, policy): + """ + Returns a list of all webhooks defined for the specified policy. + """ + return self._manager.list_webhooks(scaling_group, policy) + + + def get_webhook(self, scaling_group, policy, webhook): + """ + Gets the detail for the specified webhook. + """ + return self._manager.get_webhook(scaling_group, policy, webhook) + + + def update_webhook(self, scaling_group, policy, webhook, name=None, + metadata=None): + """ + Updates the specified webhook. One or more of the parameters may be + specified. + """ + return self._manager.update_webhook(scaling_group=scaling_group, + policy=policy, webhook=webhook, name=name, metadata=metadata) + + + def update_webhook_metadata(self, scaling_group, policy, webhook, metadata): + """ + Adds the given metadata dict to the existing metadata for the specified + webhook. + """ + return self._manager.update_webhook_metadata(scaling_group, policy, + webhook, metadata) + + + def delete_webhook(self, scaling_group, policy, webhook): + """ + Deletes the specified webhook from the policy. + """ + return self._manager.delete_webhook(scaling_group, policy, webhook) + + + def _resolve_lbs(self, load_balancers): + """ + Takes either a single LB reference or a list of references and returns + the dictionary required for creating a Scaling Group. + + References can be either a dict that matches the structure required by + the autoscale API, a CloudLoadBalancer instance, or the ID of the load + balancer. + """ + lb_args = [] + lbs = utils.coerce_string_to_list(load_balancers) + for lb in lbs: + if isinstance(lb, dict): + lb_args.append(lb) + elif isinstance(lb, CloudLoadBalancer): + lb_args.append({ + "loadBalancerId": lb.id, + "port": lb.port, + }) + else: + # See if it's an ID for a Load Balancer + try: + instance = pyrax.cloud_loadbalancers.get(lb) + except Exception: + raise exc.InvalidLoadBalancer("Received an invalid " + "specification for a Load Balancer: '%s'" % lb) + lb_args.append({ + "loadBalancerId": instance.id, + "port": instance.port, + }) + return lb_args + + + def _create_body(self, name, cooldown, min_entities, max_entities, + launch_config_type, server_name, image, flavor, disk_config=None, + metadata=None, personality=None, networks=None, + load_balancers=None, scaling_policies=None): + """ + Used to create the dict required to create any of the following: + A Scaling Group + """ + if disk_config is None: + disk_config = "AUTO" + if metadata is None: + metadata = {} + if personality is None: + personality = [] + if networks is None: + # Default to ServiceNet only + networks = [{"uuid": SERVICE_NET_ID}] + if load_balancers is None: + load_balancers = [] + if scaling_policies is None: + scaling_policies = [] + server_args = { + "flavorRef": flavor, + "name": server_name, + "imageRef": utils.get_id(image), + } + if metadata is not None: + server_args["metadata"] = metadata + if personality is not None: + server_args["personality"] = personality + if networks is not None: + server_args["networks"] = networks + if disk_config is not None: + server_args["OS-DCF:diskConfig"] = disk_config + load_balancer_args = self._resolve_lbs(load_balancers) + body = {"groupConfiguration": { + "name": name, + "cooldown": cooldown, + "minEntities": min_entities, + "maxEntities": max_entities, + }, + "launchConfiguration": { + "type": launch_config_type, + "args": { + "server": server_args, + "loadBalancers": load_balancer_args, + }, + }, + "scalingPolicies": scaling_policies, + } + body + return body diff --git a/pyrax/cloudmonitoring.py b/pyrax/cloudmonitoring.py new file mode 100644 index 00000000..b4ee1d4c --- /dev/null +++ b/pyrax/cloudmonitoring.py @@ -0,0 +1,1219 @@ +#!/usr/bin/env python +# -*- coding: utf-8 -*- + +# Copyright 2013 Rackspace + +# All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); you may +# not use this file except in compliance with the License. You may obtain +# a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT +# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the +# License for the specific language governing permissions and limitations +# under the License. + +import re + +from pyrax.client import BaseClient +import pyrax.exceptions as exc +from pyrax.manager import BaseManager +from pyrax.resource import BaseResource +import pyrax.utils as utils + + +_invalid_key_pat = re.compile(r"Validation error for key '([^']+)'") + + +def _params_to_dict(params, dct, local_dict): + for param in params: + val = local_dict.get(param) + if val is None: + continue + dct[param] = val + return dct + + + +class CloudMonitorEntity(BaseResource): + def update(self, agent=None, metadata=None): + """ + Only the agent_id and metadata are able to be updated via the API. + """ + self.manager.update_entity(self, agent=agent, metadata=metadata) + + + def list_checks(self): + """ + Returns a list of all CloudMonitorChecks defined for this entity. + """ + return self.manager.list_checks(self) + + + def delete_check(self, check): + """ + Deletes the specified check from this entity. + """ + return self.manager.delete_check(self, check) + + + def list_metrics(self, check): + """ + Returns a list of all the metrics associated with the specified check. + """ + return self.manager.list_metrics(self, check) + + + def get_metric_data_points(self, check, metric, start, end, points=None, + resolution=None, stats=None): + """ + Returns the data points for a given metric for the given period. The + 'start' and 'end' times must be specified; they can be be either Python + date/datetime values, or a Unix timestamp. + + The 'points' parameter represents the number of points to return. The + 'resolution' parameter represents the granularity of the data. You must + specify either 'points' or 'resolution'. The allowed values for + resolution are: + FULL + MIN5 + MIN20 + MIN60 + MIN240 + MIN1440 + + Finally, the 'stats' parameter specifies the stats you want returned. + By default only the 'average' is returned. You omit this parameter, + pass in a single value, or pass in a list of values. The allowed values + are: + average + variance + min + max + """ + return self.manager.get_metric_data_points(self, check, metric, start, + end, points=points, resolution=resolution, stats=stats) + + + def create_alarm(self, check, notification_plan, criteria=None, + disabled=False, label=None, name=None, metadata=None): + """ + Creates an alarm that binds the check on this entity with a + notification plan. + """ + return self.manager.create_alarm(self, check, notification_plan, + criteria=criteria, disabled=disabled, label=label, name=name, + metadata=metadata) + + + def update_alarm(self, alarm, criteria=None, disabled=False, + label=None, name=None, metadata=None): + """ + Updates an existing alarm on this entity. + """ + return self.manager.update_alarm(self, alarm, criteria=criteria, + disabled=disabled, label=label, name=name, metadata=metadata) + + + def list_alarms(self): + """ + Returns a list of all the alarms created on this entity. + """ + return self.manager.list_alarms(self) + + + def get_alarm(self, alarm): + """ + Returns the alarm with the specified ID for this entity. If a + CloudMonitorAlarm instance is passed, returns a new CloudMonitorAlarm + object with the current state from the API. + """ + return self.manager.get_alarm(self, alarm) + + + def delete_alarm(self, alarm): + """ + Deletes the specified alarm. + """ + return self.manager.delete_alarm(self, alarm) + + + @property + def name(self): + return self.label + + + +class CloudMonitorNotificationManager(BaseManager): + """ + Handles all of the requests dealing with notifications. + """ + def create(self, notification_type, label=None, name=None, details=None): + """ + Defines a notification for handling an alarm. + """ + uri = "/%s" % self.uri_base + body = {"label": label or name, + "type": utils.get_id(notification_type), + "details": details, + } + resp, resp_body = self.api.method_post(uri, body=body) + return self.get(resp["x-object-id"]) + + + def test_notification(self, notification=None, notification_type=None, + details=None): + """ + This allows you to test either an existing notification, or a potential + notification before creating it. The actual notification comes from the + same server where the actual alert messages come from. This allow you + to, among other things, verify that your firewall is configured + properly. + + To test an existing notification, pass it as the 'notification' + parameter and leave the other parameters empty. To pre-test a + notification before creating it, leave 'notification' empty, but pass + in the 'notification_type' and 'details'. + """ + if notification: + # Test an existing notification + uri = "/%s/%s/test" % (self.uri_base, utils.get_id(notification)) + body = None + else: + uri = "/test-notification" + body = {"type": utils.get_id(notification_type), + "details": details} + resp, resp_body = self.api.method_post(uri, body=body) + + + def update_notification(self, notification, details): + """ + Updates the specified notification with the supplied details. + """ + if isinstance(notification, CloudMonitorNotification): + nid = notification.id + ntyp = notification.type + else: + # Supplied an ID + nfcn = self.get(notification) + nid = notification + ntyp = nfcn.type + uri = "/%s/%s" % (self.uri_base, nid) + body = {"type": ntyp, + "details": details} + resp, resp_body = self.api.method_put(uri, body=body) + + + def list_types(self): + """ + Returns a list of all available notification types. + """ + uri = "/notification_types" + resp, resp_body = self.api.method_get(uri) + return [CloudMonitorNotificationType(self, info) + for info in resp_body["values"]] + + + def get_type(self, notification_type_id): + """ + Returns a CloudMonitorNotificationType object for the given ID. + """ + uri = "/notification_types/%s" % utils.get_id(notification_type_id) + resp, resp_body = self.api.method_get(uri) + return CloudMonitorNotificationType(self, resp_body) + + + +class CloudMonitorNotificationPlanManager(BaseManager): + """ + Handles all of the requests dealing with Notification Plans. + """ + def create(self, label=None, name=None, critical_state=None, ok_state=None, + warning_state=None): + """ + Creates a notification plan to be executed when a monitoring check + triggers an alarm. You can optionally label (or name) the plan. + + A plan consists of one or more notifications to be executed when an + associated alarm is triggered. You can have different lists of actions + for CRITICAL, WARNING or OK states. + """ + uri = "/%s" % self.uri_base + body = {"label": label or name} + + def make_list_of_ids(parameter): + params = utils.coerce_string_to_list(parameter) + return [utils.get_id(param) for param in params] + + if critical_state: + critical_state = utils.coerce_string_to_list(critical_state) + body["critical_state"] = make_list_of_ids(critical_state) + if warning_state: + warning_state = utils.coerce_string_to_list(warning_state) + body["warning_state"] = make_list_of_ids(warning_state) + if ok_state: + ok_state = utils.coerce_string_to_list(ok_state) + body["ok_state"] = make_list_of_ids(ok_state) + resp, resp_body = self.api.method_post(uri, body=body) + return self.get(resp["x-object-id"]) + + +class CloudMonitorEntityManager(BaseManager): + """ + Handles all of the entity-specific requests. + """ + def update_entity(self, entity, agent=None, metadata=None): + """ + Updates the specified entity's values with the supplied parameters. + """ + body = {} + if agent: + body["agent_id"] = utils.get_id(agent) + if metadata: + body["metadata"] = metadata + if body: + uri = "/%s/%s" % (self.uri_base, utils.get_id(entity)) + resp, body = self.api.method_put(uri, body=body) + + + def list_checks(self, entity): + """ + Returns a list of all CloudMonitorChecks defined for this entity. + """ + uri = "/%s/%s/checks" % (self.uri_base, utils.get_id(entity)) + resp, resp_body = self.api.method_get(uri) + return [CloudMonitorCheck(self, val, entity) + for val in resp_body["values"]] + + + def create_check(self, entity, label=None, name=None, check_type=None, + details=None, disabled=False, metadata=None, + monitoring_zones_poll=None, timeout=None, period=None, + target_alias=None, target_hostname=None, target_receiver=None, + test_only=False, include_debug=False): + """ + Creates a check on the entity with the specified attributes. The + 'details' parameter should be a dict with the keys as the option name, + and the value as the desired setting. + + If the 'test_only' parameter is True, then the check is not created; + instead, the check is run and the results of the test run returned. If + 'include_debug' is True, additional debug information is returned. + According to the current Cloud Monitoring docs: + "Currently debug information is only available for the + remote.http check and includes the response body." + """ + if details is None: + raise exc.MissingMonitoringCheckDetails("The required 'details' " + "parameter was not passed to the create_check() method.") + if not (target_alias or target_hostname): + raise exc.MonitoringCheckTargetNotSpecified("You must specify " + "either the 'target_alias' or 'target_hostname' when " + "creating a check.") + ctype = utils.get_id(check_type) + is_remote = ctype.startswith("remote") + monitoring_zones_poll = utils.coerce_string_to_list( + monitoring_zones_poll) + monitoring_zones_poll = [utils.get_id(mzp) + for mzp in monitoring_zones_poll] + if is_remote and not monitoring_zones_poll: + raise exc.MonitoringZonesPollMissing("You must specify the " + "'monitoring_zones_poll' parameter for remote checks.") + body = {"label": label or name, + "details": details, + "disabled": disabled, + "type": utils.get_id(check_type), + } + params = ("monitoring_zones_poll", "timeout", "period", + "target_alias", "target_hostname", "target_receiver") + body = _params_to_dict(params, body, locals()) + if test_only: + uri = "/%s/%s/test-check" % (self.uri_base, entity.id) + if include_debug: + uri = "%s?debug=true" % uri + else: + uri = "/%s/%s/checks" % (self.uri_base, entity.id) + try: + resp, resp_body = self.api.method_post(uri, body=body) + except exc.BadRequest as e: + msg = e.message + dtls = e.details + match = _invalid_key_pat.match(msg) + if match: + missing = match.groups()[0].replace("details.", "") + if missing in details: + errcls = exc.InvalidMonitoringCheckDetails + errmsg = "".join(["The value passed for '%s' in the ", + "details parameter is not valid."]) % missing + else: + errcls = exc.MissingMonitoringCheckDetails + errmsg = "".join(["The required value for the '%s' ", + "setting is missing from the 'details' ", + "parameter."]) % missing + raise errcls(errmsg) + else: + if msg == "Validation error": + # Info is in the 'details' + raise exc.InvalidMonitoringCheckDetails("Validation " + "failed. Error: '%s'." % dtls) + else: + status = resp["status"] + if status == "201": + check_id = resp["x-object-id"] + return self.get_check(entity, check_id) + + + def find_all_checks(self, entity, **kwargs): + """ + Finds all checks for a given entity with attributes matching + ``**kwargs``. + + This isn't very efficient: it loads the entire list then filters on + the Python side. + """ + found = [] + searches = kwargs.items() + for obj in self.list_checks(entity): + try: + if all(getattr(obj, attr) == value + for (attr, value) in searches): + found.append(obj) + except AttributeError: + continue + return found + + + def update_check(self, check, label=None, name=None, disabled=None, + metadata=None, monitoring_zones_poll=None, timeout=None, + period=None, target_alias=None, target_hostname=None, + target_receiver=None): + if monitoring_zones_poll: + monitoring_zones_poll = utils.coerce_string_to_list( + monitoring_zones_poll) + monitoring_zones_poll = [utils.get_id(mzp) + for mzp in monitoring_zones_poll] + body = {} + local_dict = locals() + label = label or name + params = ("label", "disabled", "metadata", "monitoring_zones_poll", + "timeout", "period", "target_alias", "target_hostname", + "target_receiver") + body = _params_to_dict(params, body, locals()) + entity = check.entity + uri = "/%s/%s/checks/%s" % (self.uri_base, utils.get_id(entity), + utils.get_id(check)) + try: + resp, resp_body = self.api.method_put(uri, body=body) + except exc.BadRequest as e: + msg = e.message + dtls = e.details + if msg.startswith("Validation error"): + raise exc.InvalidMonitoringCheckUpdate("The update failed " + "validation: %s: %s" % (msg, dtls)) + else: + # Some other issue. + raise + return resp_body + + + def get_check(self, entity, check): + """ + Returns the current version of the check for the entity. + """ + uri = "/%s/%s/checks/%s" % (self.uri_base, utils.get_id(entity), + utils.get_id(check)) + resp, resp_body = self.api.method_get(uri) + return CloudMonitorCheck(self, resp_body, entity) + + + def delete_check(self, entity, check): + """ + Deletes the specified check from the entity. + """ + uri = "/%s/%s/checks/%s" % (self.uri_base, utils.get_id(entity), + utils.get_id(check)) + resp, resp_body = self.api.method_delete(uri) + + + def list_metrics(self, entity, check): + """ + Returns a list of all the metrics associated with the specified check. + """ + uri = "/%s/%s/checks/%s/metrics" % (self.uri_base, + utils.get_id(entity), utils.get_id(check)) + resp, resp_body = self.api.method_get(uri) + metrics = [val["name"] + for val in resp_body["values"]] + return metrics + + + def get_metric_data_points(self, entity, check, metric, start, end, + points=None, resolution=None, stats=None): + """ + Returns the data points for a given metric for the given period. The + 'start' and 'end' times must be specified; they can be be either Python + date/datetime values, a string representing a date/datetime in either + of 'YYYY-MM-DD HH:MM:SS' or 'YYYY-MM-DD' formats, or a Unix timestamp: + + The 'points' parameter represents the number of points to return. The + 'resolution' parameter represents the granularity of the data. You must + specify either 'points' or 'resolution', but not both. The allowed + values for resolution are: 'FULL', 'MIN5', 'MIN20', 'MIN60', 'MIN240', + and 'MIN1440'. + + Finally, the 'stats' parameter specifies the stats you want returned. + By default only the 'average' is returned. You omit this parameter, + pass in a single value, or pass in a list of values. The allowed values + are: 'average', 'variance', 'min', and 'max' + """ + allowed_resolutions = ("FULL", "MIN5", "MIN20", "MIN60", "MIN240", + "MIN1440") + if not (points or resolution): + raise exc.MissingMonitoringCheckGranularity("You must specify " + "either the 'points' or 'resolution' parameter when " + "fetching metrics.") + if resolution: + if resolution.upper() not in allowed_resolutions: + raise exc.InvalidMonitoringMetricsResolution("The specified " + "resolution '%s' is not valid. The valid values are: " + "%s." % (resolution, str(allowed_resolutions))) + start_tm = utils.to_timestamp(start) + end_tm = utils.to_timestamp(end) + qparms = [] + qparms.append("from=%s" % int(start_tm)) + qparms.append("to=%s" % int(end_tm)) + if points: + qparms.append("points=%s" % points) + if resolution: + qparms.append("resolution=%s" % resolution.upper()) + if stats: + stats = utils.coerce_string_to_list(stats) + for stat in stats: + qparms.append("select=%s" % stat) + qparm = "&".join(qparms) + uri = "/%s/%s/checks/%s/metrics/%s/plot?%s" % (self.uri_base, + utils.get_id(entity), utils.get_id(check), metric, qparm) + try: + resp, resp_body = self.api.method_get(uri) + except exc.BadRequest as e: + msg = e.message + dtls = e.details + if msg.startswith("Validation error"): + raise exc.InvalidMonitoringMetricsRequest("Your request was " + "invalid: '%s'" % dtls) + else: + raise + return resp_body["values"] + + + def create_alarm(self, entity, check, notification_plan, criteria=None, + disabled=False, label=None, name=None, metadata=None): + """ + Creates an alarm that binds the check on the given entity with a + notification plan. + + Note that the 'criteria' parameter, if supplied, should be a string + representing the DSL for describing alerting conditions and their + output states. Pyrax does not do any validation of these criteria + statements; it is up to you as the developer to understand the language + and correctly form the statement. This alarm language is documented + online in the Cloud Monitoring section of http://docs.rackspace.com. + """ + uri = "/%s/%s/alarms" % (self.uri_base, utils.get_id(entity)) + body = {"check_id": utils.get_id(check), + "notification_plan_id": utils.get_id(notification_plan), + } + if criteria: + body["criteria"] = criteria + if disabled is not None: + body["disabled"] = disabled + label_name = label or name + if label_name: + body["label"] = label_name + if metadata: + body["metadata"] = metadata + resp, resp_body = self.api.method_post(uri, body=body) + + status = resp["status"] + if status == "201": + alarm_id = resp["x-object-id"] + return self.get_alarm(entity, alarm_id) + + def update_alarm(self, entity, alarm, criteria=None, disabled=False, + label=None, name=None, metadata=None): + """ + Updates an existing alarm on the given entity. See the comments on the + 'create_alarm()' regarding the criteria parameter. + """ + uri = "/%s/%s/alarms/%s" % (self.uri_base, utils.get_id(entity), + utils.get_id(alarm)) + body = {} + if criteria: + body["criteria"] = criteria + if disabled is not None: + body["disabled"] = disabled + label_name = label or name + if label_name: + body["label"] = label_name + if metadata: + body["metadata"] = metadata + resp, resp_body = self.api.method_put(uri, body=body) + + + def list_alarms(self, entity): + """ + Returns a list of all the alarms created on the specified entity. + """ + uri = "/%s/%s/alarms" % (self.uri_base, utils.get_id(entity)) + resp, resp_body = self.api.method_get(uri) + return [CloudMonitorAlarm(self, dct, entity) + for dct in resp_body["values"]] + + + def get_alarm(self, entity, alarm): + """ + Returns the alarm with the specified ID for this entity. If a + CloudMonitorAlarm instance is passed, returns a new CloudMonitorAlarm + object with the current state from the API. + """ + uri = "/%s/%s/alarms/%s" % (self.uri_base, utils.get_id(entity), + utils.get_id(alarm)) + resp, resp_body = self.api.method_get(uri) + return CloudMonitorAlarm(self, resp_body, entity) + + + def delete_alarm(self, entity, alarm): + """ + Deletes the specified alarm. + """ + uri = "/%s/%s/alarms/%s" % (self.uri_base, utils.get_id(entity), + utils.get_id(alarm)) + resp, resp_body = self.api.method_delete(uri) + + + +class CloudMonitorCheck(BaseResource): + """ + Represents a check defined for an entity. + """ + def __init__(self, manager, info, entity, key=None, loaded=False): + super(CloudMonitorCheck, self).__init__(manager, info, key=key, + loaded=loaded) + if not isinstance(entity, CloudMonitorEntity): + entity = manager.get(entity) + self.entity = entity + + + @property + def name(self): + return self.label + + + def get(self): + """Reloads the check with its current values.""" + new = self.manager.get_check(self.entity, self) + if new: + self._add_details(new._info) + + reload = get + + + def update(self, label=None, name=None, disabled=None, metadata=None, + monitoring_zones_poll=None, timeout=None, period=None, + target_alias=None, target_hostname=None, target_receiver=None): + """ + Updates an existing check with any of the parameters. + """ + self.manager.update_check(self, label=label, name=name, + disabled=disabled, metadata=metadata, + monitoring_zones_poll=monitoring_zones_poll, timeout=timeout, + period=period, target_alias=target_alias, + target_hostname=target_hostname, + target_receiver=target_receiver) + + + def delete(self): + """Removes this check from its entity.""" + self.manager.delete_check(self.entity, self) + + + def list_metrics(self): + """ + Returns a list of all the metrics associated with this check. + """ + return self.manager.list_metrics(self.entity, self) + + + def get_metric_data_points(self, metric, start, end, points=None, + resolution=None, stats=None): + """ + Returns the data points for a given metric for the given period. The + 'start' and 'end' times must be specified; they can be be either Python + date/datetime values, or a Unix timestamp. + + The 'points' parameter represents the number of points to return. The + 'resolution' parameter represents the granularity of the data. You must + specify either 'points' or 'resolution'. The allowed values for + resolution are: + FULL + MIN5 + MIN20 + MIN60 + MIN240 + MIN1440 + + Finally, the 'stats' parameter specifies the stats you want returned. + By default only the 'average' is returned. You omit this parameter, + pass in a single value, or pass in a list of values. The allowed values + are: + average + variance + min + max + """ + return self.manager.get_metric_data_points(self.entity, self, metric, + start, end, points=points, resolution=resolution, stats=stats) + + + def create_alarm(self, notification_plan, criteria=None, disabled=False, + label=None, name=None, metadata=None): + """ + Creates an alarm that binds this check with a notification plan. + """ + return self.manager.create_alarm(self.entity, self, notification_plan, + criteria=criteria, disabled=disabled, label=label, name=name, + metadata=metadata) + + + +class CloudMonitorCheckType(BaseResource): + """ + Represents the type of monitor check to be run. Each check type + """ + @property + def field_names(self): + """ + Returns a list of all field names for this check type. + """ + return [field["name"] for field in self.fields] + + + @property + def required_field_names(self): + """ + Returns a list of the names of all required fields for this check type. + """ + return [field["name"] for field in self.fields + if not field["optional"]] + + + @property + def optional_field_names(self): + """ + Returns a list of the names of all optional fields for this check type. + """ + return [field["name"] for field in self.fields + if field["optional"]] + + + +class CloudMonitorZone(BaseResource): + """ + Represents a location from which Cloud Monitoring collects data. + """ + @property + def name(self): + return self.label + + + +class CloudMonitorNotification(BaseResource): + """ + Represents an action to take when an alarm is triggered. + """ + @property + def name(self): + return self.label + + + def update(self, details): + """ + Updates this notification with the supplied details. + """ + return self.manager.update_notification(self, details) + + + +class CloudMonitorNotificationType(BaseResource): + """ + Represents a class of action to take when an alarm is triggered. + """ + @property + def name(self): + return self.label + + + +class CloudMonitorNotificationPlan(BaseResource): + """ + A Notification plan is a list of the notification actions to take when an + alarm is triggered. + """ + @property + def name(self): + return self.label + + + +class CloudMonitorAlarm(BaseResource): + """ + Alarms bind alerting rules, entities, and notification plans into a logical + unit. + """ + def __init__(self, manager, info, entity, key=None, loaded=False): + super(CloudMonitorAlarm, self).__init__(manager, info, key=key, + loaded=loaded) + if not isinstance(entity, CloudMonitorEntity): + entity = manager.get(entity) + self.entity = entity + + + def update(self, criteria=None, disabled=False, label=None, name=None, + metadata=None): + """ + Updates this alarm. + """ + return self.entity.update_alarm(self, criteria=criteria, + disabled=disabled, label=label, name=name, metadata=metadata) + + + def get(self): + """ + Fetches the current state of the alarm from the API and updates the + object. + """ + new_alarm = self.entity.get_alarm(self) + if new_alarm: + self._add_details(new_alarm._info) + # Alias reload() to get() + reload = get + + + @property + def name(self): + return self.label + + + +class CloudMonitorClient(BaseClient): + """ + This is the base client for creating and managing Cloud Monitoring. + """ + + def __init__(self, *args, **kwargs): + super(CloudMonitorClient, self).__init__(*args, **kwargs) + self.name = "Cloud Monitoring" + + + def _configure_manager(self): + """ + Creates the Manager instance to handle networks. + """ + self._entity_manager = CloudMonitorEntityManager(self, + uri_base="entities", resource_class=CloudMonitorEntity, + response_key=None, plural_response_key=None) + self._check_type_manager = BaseManager(self, + uri_base="check_types", resource_class=CloudMonitorCheckType, + response_key=None, plural_response_key=None) + self._monitoring_zone_manager = BaseManager(self, + uri_base="monitoring_zones", resource_class=CloudMonitorZone, + response_key=None, plural_response_key=None) + self._notification_manager = CloudMonitorNotificationManager(self, + uri_base="notifications", + resource_class=CloudMonitorNotification, + response_key=None, plural_response_key=None) + self._notification_plan_manager = CloudMonitorNotificationPlanManager( + self, uri_base="notification_plans", + resource_class=CloudMonitorNotificationPlan, + response_key=None, plural_response_key=None) + + + def get_account(self): + """ + Returns a dict with the following keys: id, webhook_token, and metadata. + """ + resp, resp_body = self.method_get("/account") + return resp_body + + + def get_limits(self): + """ + Returns a dict with the resource and rate limits for the account. + """ + resp, resp_body = self.method_get("/limits") + return resp_body + + + def get_audits(self): + """ + Every write operation performed against the API (PUT, POST or DELETE) + generates an audit record that is stored for 30 days. Audits record a + variety of information about the request including the method, URL, + headers, query string, transaction ID, the request body and the + response code. They also store information about the action performed + including a JSON list of the previous state of any modified objects. + For example, if you perform an update on an entity, this will record + the state of the entity before modification. + """ + resp, resp_body = self.method_get("/audits") + return resp_body["values"] + + + def list_entities(self): + return self._entity_manager.list() + + + def get_entity(self, entity): + return self._entity_manager.get(entity) + + + def create_entity(self, label=None, name=None, agent=None, + ip_addresses=None, metadata=None): + # NOTE: passing a non-None value for ip_addresses is required so that + # the _create_body() method can distinguish this as a request for a + # body dict for entities. + ip_addresses = ip_addresses or {} + resp = self._entity_manager.create(label=label, name=name, agent=agent, + ip_addresses=ip_addresses, metadata=metadata, + return_response=True) + status = resp["status"] + if status == "201": + ent_id = resp["x-object-id"] + return self.get_entity(ent_id) + + + def update_entity(self, entity, agent=None, metadata=None): + """ + Only the agent_id and metadata are able to be updated via the API. + """ + self._entity_manager.update_entity(entity, agent=agent, + metadata=metadata) + + + def delete_entity(self, entity): + """Deletes the specified entity.""" + self._entity_manager.delete(entity) + + + def list_check_types(self): + return self._check_type_manager.list() + + + def get_check_type(self, check_type): + return self._check_type_manager.get(check_type) + + + def list_checks(self, entity): + return self._entity_manager.list_checks(entity) + + + def create_check(self, entity, label=None, name=None, check_type=None, + disabled=False, metadata=None, details=None, + monitoring_zones_poll=None, timeout=None, period=None, + target_alias=None, target_hostname=None, target_receiver=None, + test_only=False, include_debug=False): + """ + Creates a check on the entity with the specified attributes. The + 'details' parameter should be a dict with the keys as the option name, + and the value as the desired setting. + """ + return self._entity_manager.create_check(entity, label=label, + name=name, check_type=check_type, disabled=disabled, + metadata=metadata, details=details, + monitoring_zones_poll=monitoring_zones_poll, timeout=timeout, + period=period, target_alias=target_alias, + target_hostname=target_hostname, + target_receiver=target_receiver, test_only=test_only, + include_debug=include_debug) + + + def get_check(self, entity, check): + """Returns the current check for the given entity.""" + return self._entity_manager.get_check(entity, check) + + + def find_all_checks(self, entity, **kwargs): + """ + Finds all checks for a given entity with attributes matching + ``**kwargs``. + + This isn't very efficient: it loads the entire list then filters on + the Python side. + """ + return self._entity_manager.find_all_checks(entity, **kwargs) + + + def update_check(self, entity, check, label=None, name=None, disabled=None, + metadata=None, monitoring_zones_poll=None, timeout=None, + period=None, target_alias=None, target_hostname=None, + target_receiver=None): + """ + Updates an existing check with any of the parameters. + """ + self._entity_manager.update_check(entity, check, label=label, + name=name, disabled=disabled, metadata=metadata, + monitoring_zones_poll=monitoring_zones_poll, timeout=timeout, + period=period, target_alias=target_alias, + target_hostname=target_hostname, + target_receiver=target_receiver) + + + def delete_check(self, entity, check): + """ + Deletes the specified check from the entity. + """ + return self._entity_manager.delete_check(entity, check) + + + def list_metrics(self, entity, check): + """ + Returns a list of all the metrics associated with the specified check. + """ + return self._entity_manager.list_metrics(entity, check) + + + def get_metric_data_points(self, entity, check, metric, start, end, + points=None, resolution=None, stats=None): + """ + Returns the data points for a given metric for the given period. The + 'start' and 'end' times must be specified; they can be be either Python + date/datetime values, or a Unix timestamp. + + The 'points' parameter represents the number of points to return. The + 'resolution' parameter represents the granularity of the data. You must + specify either 'points' or 'resolution'. The allowed values for + resolution are: + FULL + MIN5 + MIN20 + MIN60 + MIN240 + MIN1440 + + Finally, the 'stats' parameter specifies the stats you want returned. + By default only the 'average' is returned. You omit this parameter, + pass in a single value, or pass in a list of values. The allowed values + are: + average + variance + min + max + """ + return self._entity_manager.get_metric_data_points(entity, check, + metric, start, end, points=points, resolution=resolution, + stats=stats) + + + def list_notifications(self): + """Returns a list of all defined notifications.""" + return self._notification_manager.list() + + + def get_notification(self, notification_id): + """ + Returns the CloudMonitorNotification object for the specified ID. + """ + return self._notification_manager.get(notification_id) + + + def test_notification(self, notification=None, notification_type=None, + details=None): + """ + This allows you to test either an existing notification, or a potential + notification before creating it. The actual notification comes from the + same server where the actual alert messages come from. This allow you + to, among other things, verify that your firewall is configured + properly. + + To test an existing notification, pass it as the 'notification' + parameter and leave the other parameters empty. To pre-test a + notification before creating it, leave 'notification' empty, but pass + in the 'notification_type' and 'details'. + """ + return self._notification_manager.test_notification( + notification=notification, notification_type=notification_type, + details=details) + + + def create_notification(self, notification_type, label=None, name=None, + details=None): + """ + Defines a notification for handling an alarm. + """ + return self._notification_manager.create(notification_type, + label=label, name=name, details=details) + + + def update_notification(self, notification, details): + """ + Updates the specified notification with the supplied details. + """ + return self._notification_manager.update_notification(notification, + details) + + + def delete_notification(self, notification): + """ + Deletes the specified notification. + """ + return self._notification_manager.delete(notification) + + + def create_notification_plan(self, label=None, name=None, + critical_state=None, ok_state=None, warning_state=None): + """ + Creates a notification plan to be executed when a monitoring check + triggers an alarm. + """ + return self._notification_plan_manager.create(label=label, name=name, + critical_state=critical_state, ok_state=ok_state, + warning_state=warning_state) + + + def list_notification_plans(self): + """ + Returns a list of all defined notification plans. + """ + return self._notification_plan_manager.list() + + + def get_notification_plan(self, notification_plan_id): + """ + Returns the CloudMonitorNotificationPlan object for the specified ID. + """ + return self._notification_plan_manager.get(notification_plan_id) + + + def delete_notification_plan(self, notification_plan): + """ + Deletes the specified notification plan. + """ + return self._notification_plan_manager.delete(notification_plan) + + + def create_alarm(self, entity, check, notification_plan, criteria=None, + disabled=False, label=None, name=None, metadata=None): + """ + Creates an alarm that binds the check on the given entity with a + notification plan. + """ + return self._entity_manager.create_alarm(entity, check, + notification_plan, criteria=criteria, disabled=disabled, + label=label, name=name, metadata=metadata) + + + def update_alarm(self, entity, alarm, criteria=None, disabled=False, + label=None, name=None, metadata=None): + """ + Updates an existing alarm on the given entity. + """ + return self._entity_manager.update_alarm(entity, alarm, + criteria=criteria, disabled=disabled, label=label, name=name, + metadata=metadata) + + + def list_alarms(self, entity): + """ + Returns a list of all the alarms created on the specified entity. + """ + return self._entity_manager.list_alarms(entity) + + + def get_alarm(self, entity, alarm_id): + """ + Returns the alarm with the specified ID for the entity. + """ + return self._entity_manager.get_alarm(entity, alarm_id) + + + def delete_alarm(self, entity, alarm): + """ + Deletes the specified alarm. + """ + return self._entity_manager.delete_alarm(entity, alarm) + + + def list_notification_types(self): + return self._notification_manager.list_types() + + + def get_notification_type(self, nt_id): + return self._notification_manager.get_type(nt_id) + + + def list_monitoring_zones(self): + """ + Returns a list of all available monitoring zones. + """ + return self._monitoring_zone_manager.list() + + + def get_monitoring_zone(self, mz_id): + """ + Returns the monitoring zone for the given ID. + """ + return self._monitoring_zone_manager.get(mz_id) + + + ################################################################# + # The following methods are defined in the generic client class, + # but don't have meaning in monitoring, as there is not a single + # resource that defines this module. + ################################################################# + def list(self, limit=None, marker=None): + """Not applicable in Cloud Monitoring.""" + raise NotImplementedError + + def get(self, item): + """Not applicable in Cloud Monitoring.""" + raise NotImplementedError + + def create(self, *args, **kwargs): + """Not applicable in Cloud Monitoring.""" + raise NotImplementedError + + def delete(self, item): + """Not applicable in Cloud Monitoring.""" + raise NotImplementedError + + def find(self, **kwargs): + """Not applicable in Cloud Monitoring.""" + raise NotImplementedError + + def findall(self, **kwargs): + """Not applicable in Cloud Monitoring.""" + raise NotImplementedError + ################################################################# + + + def _create_body(self, name, label=None, agent=None, ip_addresses=None, + metadata=None): + """ + Used to create the dict required to create various resources. Accepts + either 'label' or 'name' as the keyword parameter for the label + attribute for entities. + """ + label = label or name + if ip_addresses is not None: + body = {"label": label} + if ip_addresses: + body["ip_addresses"] = ip_addresses + if agent: + body["agent_id"] = utils.get_id(agent) + if metadata: + body["metadata"] = metadata + return body diff --git a/pyrax/exceptions.py b/pyrax/exceptions.py index fef96af6..aad37ae4 100644 --- a/pyrax/exceptions.py +++ b/pyrax/exceptions.py @@ -116,9 +116,24 @@ class InvalidDateTimeString(PyraxException): class InvalidDeviceType(PyraxException): pass +class InvalidLoadBalancer(PyraxException): + pass + class InvalidLoadBalancerParameters(PyraxException): pass +class InvalidMonitoringCheckDetails(PyraxException): + pass + +class InvalidMonitoringCheckUpdate(PyraxException): + pass + +class InvalidMonitoringMetricsRequest(PyraxException): + pass + +class InvalidMonitoringMetricsResolution(PyraxException): + pass + class InvalidNodeCondition(PyraxException): pass @@ -164,12 +179,24 @@ class MissingHealthMonitorSettings(PyraxException): class MissingLoadBalancerParameters(PyraxException): pass +class MissingMonitoringCheckDetails(PyraxException): + pass + +class MissingMonitoringCheckGranularity(PyraxException): + pass + class MissingName(PyraxException): pass class MissingTemporaryURLKey(PyraxException): pass +class MonitoringCheckTargetNotSpecified(PyraxException): + pass + +class MonitoringZonesPollMissing(PyraxException): + pass + class NetworkCIDRInvalid(PyraxException): pass diff --git a/pyrax/manager.py b/pyrax/manager.py index 5739a43c..3e55acd3 100644 --- a/pyrax/manager.py +++ b/pyrax/manager.py @@ -82,13 +82,24 @@ def get(self, item): return self._get(uri) - def create(self, name, return_none=False, return_raw=False, - return_response=False, *args, **kwargs): + def create(self, name, *args, **kwargs): """ - Subclasses need to implement the _create_body() method - to return a dict that will be used for the API request - body. + Subclasses need to implement the _create_body() method to return a dict + that will be used for the API request body. + + For cases where no response is returned from the API on creation, pass + `return_none=True` so that the _create method doesn't expect one. + + For cases where you do not want the _create method to attempt to parse + the response, but instead have it returned directly, pass + `return_raw=True`. + + For cases where the API returns information in the response and not the + response_body, pass `return_response=True`. """ + return_none = kwargs.pop("return_none", False) + return_raw = kwargs.pop("return_raw", False) + return_response = kwargs.pop("return_response", False) body = self.api._create_body(name, *args, **kwargs) return self._create("/%s" % self.uri_base, body, return_none=return_none, return_raw=return_raw, diff --git a/pyrax/utils.py b/pyrax/utils.py index fc7acf51..cc137e3d 100644 --- a/pyrax/utils.py +++ b/pyrax/utils.py @@ -348,10 +348,11 @@ def _wait_until(obj, att, desired, callback, interval, attempts, verbose, return obj + def wait_for_build(obj, att=None, desired=None, callback=None, interval=None, attempts=None, verbose=None, verbose_atts=None): """ - Designed to handle the most common use case for wait_unti: an object whose + Designed to handle the most common use case for wait_until: an object whose 'status' attribute will end up in either 'ACTIVE' or 'ERROR' state. Since builds don't happen very quickly, the interval will default to 20 seconds to avoid excess polling. @@ -365,6 +366,23 @@ def wait_for_build(obj, att=None, desired=None, callback=None, interval=None, attempts=attempts, verbose=verbose, verbose_atts=verbose_atts) +def _parse_datetime_string(val): + """ + Attempts to parse a string representation of a date or datetime value, and + returns a datetime if successful. If not, a InvalidDateTimeString exception + will be raised. + """ + dt = None + lenval = len(val) + fmt = {19: "%Y-%m-%d %H:%M:%S", 10: "%Y-%m-%d"}.get(lenval) + if fmt is None: + # Invalid date + raise exc.InvalidDateTimeString("The supplied value '%s' does not " + "match either of the formats 'YYYY-MM-DD HH:MM:SS' or " + "'YYYY-MM-DD'." % val) + return datetime.datetime.strptime(val, fmt) + + def iso_time_string(val, show_tzinfo=False): """ Takes either a date, datetime or a string, and returns the standard ISO @@ -374,17 +392,7 @@ def iso_time_string(val, show_tzinfo=False): if not val: return "" if isinstance(val, basestring): - dt = None - for fmt in ("%Y-%m-%d %H:%M:%S", "%Y-%m-%d"): - try: - dt = datetime.datetime.strptime(val, fmt) - break - except ValueError: - continue - if dt is None: - raise exc.InvalidDateTimeString("The supplied value '%s' does not " - "match either of the formats 'YYYY-MM-DD HH:MM:SS' or " - "'YYYY-MM-DD'." % val) + dt = _parse_datetime_string(val) else: dt = val if not isinstance(dt, datetime.datetime): @@ -402,6 +410,19 @@ def iso_time_string(val, show_tzinfo=False): return ret +def to_timestamp(val): + """ + Takes a value that is either a Python date, datetime, or a string + representation of a date/datetime value. Returns a standard Unix timestamp + corresponding to that value. + """ + if isinstance(val, basestring): + dt = _parse_datetime_string(val) + else: + dt = val + return time.mktime(dt.timetuple()) + + def get_id(id_or_obj): """ Returns the 'id' attribute of 'id_or_obj' if present; if not, @@ -430,6 +451,20 @@ def get_name(name_or_obj): raise exc.MissingName(name_or_obj) +def params_to_dict(params, dct, local_dict): + """ + Given a set of optional parameter names, constructs a dictionary with the + parameter name as the key, and the value for that key in the local_dict as + the value, for all non-None values. + """ + for param in params: + val = local_dict.get(param) + if val is None: + continue + dct[param] = val + return dct + + def match_pattern(nm, patterns): """ Compares `nm` with the supplied patterns, and returns True if it matches diff --git a/pyrax/version.py b/pyrax/version.py index 773c793b..72d97b5e 100644 --- a/pyrax/version.py +++ b/pyrax/version.py @@ -1,4 +1,4 @@ #!/usr/bin/env python # -*- coding: utf-8 -*- -version = "1.4.11" +version = "1.5.0" diff --git a/samples/autoscale/add_policy.py b/samples/autoscale/add_policy.py new file mode 100644 index 00000000..f64c23e9 --- /dev/null +++ b/samples/autoscale/add_policy.py @@ -0,0 +1,81 @@ +#!/usr/bin/env python +# -*- coding: utf-8 -*- +# Copyright 2012 Rackspace + +# All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); you may +# not use this file except in compliance with the License. You may obtain +# a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT +# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the +# License for the specific language governing permissions and limitations +# under the License. + +import os +import pyrax + +pyrax.set_setting("identity_type", "rackspace") +creds_file = os.path.expanduser("~/.rackspace_cloud_credentials") +pyrax.set_credential_file(creds_file) +au = pyrax.autoscale + +def safe_int(val, allow_zero=True): + """ + This function converts the raw_input values to integers. It handles invalid + entries, and optionally forbids values of zero. + """ + try: + ret = int(val) + except ValueError: + print "Sorry, '%s' is not a valid integer." % val + return False + if not allow_zero and ret == 0: + print "Please enter a non-zero integer." + return False + return ret + +# Get the current scaling groups +sgs = au.list() +if not sgs: + print "There are no scaling groups defined. Please run the "\ + "'create_scaling_group.py' script first." + exit() + +print +print "Available Scaling Groups:" +for pos, sg in enumerate(sgs): + print "%s - %s" % (pos, sg.name) +answer = raw_input("Enter the number of the scaling group you wish to add a " + "policy to: ") +if not answer: + print "Nothing entered; exiting." + exit() +intanswer = safe_int(answer) +if not 0 <= intanswer < len(sgs): + print "The number '%s' does not correspond to any scaling group." % answer + exit() +sg = sgs[intanswer] + +pname = "" +while not pname: + pname = raw_input("Enter a name for this policy: ") + +cooldown = 0 +while not cooldown: + cooldown = safe_int(raw_input("Enter a cooldown period in seconds: "), False) + +change = 0 +while not change: + change = safe_int(raw_input("Enter the change increment: "), False) + +answer = raw_input("Is that a percentage change? [y/N]: ") +is_percent = "y" in answer.lower() + +policy = au.add_policy(sg, pname, "webhook", cooldown, change, is_percent) + +print "Policy added: %s" % policy diff --git a/samples/autoscale/add_webhook.py b/samples/autoscale/add_webhook.py new file mode 100644 index 00000000..f5943249 --- /dev/null +++ b/samples/autoscale/add_webhook.py @@ -0,0 +1,100 @@ +#!/usr/bin/env python +# -*- coding: utf-8 -*- +# Copyright 2012 Rackspace + +# All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); you may +# not use this file except in compliance with the License. You may obtain +# a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT +# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the +# License for the specific language governing permissions and limitations +# under the License. + +import os +import pyrax + +pyrax.set_setting("identity_type", "rackspace") +creds_file = os.path.expanduser("~/.rackspace_cloud_credentials") +pyrax.set_credential_file(creds_file) +au = pyrax.autoscale + +def safe_int(val, allow_zero=True): + """ + This function converts the raw_input values to integers. It handles invalid + entries, and optionally forbids values of zero. + """ + try: + ret = int(val) + except ValueError: + print "Sorry, '%s' is not a valid integer." % val + return False + if not allow_zero and ret == 0: + print "Please enter a non-zero integer." + return False + return ret + +# Get the current scaling groups +sgs = au.list() +if not sgs: + print "There are no scaling groups defined." + exit() + +print +print "Available Scaling Groups:" +for pos, sg in enumerate(sgs): + print "%s - %s" % (pos, sg.name) +intanswer = -1 +while intanswer < 0: + answer = raw_input("Enter the number of the scaling group: ") + if not answer: + print "Nothing entered; exiting." + exit() + intanswer = safe_int(answer) + if intanswer is False: + intanswer = -1 + continue + if not 0 <= intanswer < len(sgs): + print "The number '%s' does not correspond to any scaling group." % answer + intanswer = -1 + +policies = sg.list_policies() +if not policies: + print "There are no policies defined for this scaling group. You can only "\ + "add webhooks to existing policies." + exit() +for pos, policy in enumerate(policies): + print "%s - %s" % (pos, policy.name) +answer = raw_input("Enter the number of the policy: ") +if not answer: + print "Nothing entered; exiting." + exit() +intanswer = safe_int(answer) +if not 0 <= intanswer < len(policies): + print "The number '%s' does not correspond to any policy." % answer + exit() +policy = policies[intanswer] + +name = "" +while not name: + name = raw_input("Enter a name for this webhook: ") + +metadata = {} +while True: + key = raw_input("Enter a metadata key, or press Enter to end metadata " + "entry: ") + if not key: + break + val = raw_input("Enter the value for the key '%s': " % key) + metadata[key] = val + +hook = policy.add_webhook(name, metadata=metadata) + +print +print +print "Webhook added: %s" % hook diff --git a/samples/autoscale/create_scaling_group.py b/samples/autoscale/create_scaling_group.py new file mode 100644 index 00000000..dd4608d8 --- /dev/null +++ b/samples/autoscale/create_scaling_group.py @@ -0,0 +1,100 @@ +#!/usr/bin/env python +# -*- coding: utf-8 -*- +# Copyright 2012 Rackspace + +# All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); you may +# not use this file except in compliance with the License. You may obtain +# a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT +# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the +# License for the specific language governing permissions and limitations +# under the License. + +import os +import pyrax + +pyrax.set_setting("identity_type", "rackspace") +creds_file = os.path.expanduser("~/.rackspace_cloud_credentials") +pyrax.set_credential_file(creds_file) +au = pyrax.autoscale +cs = pyrax.cloudservers + +def safe_int(val, allow_zero=True): + """ + This function converts the raw_input values to integers. It handles invalid + entries, and optionally forbids values of zero. + """ + try: + ret = int(val) + except ValueError: + print "Sorry, '%s' is not a valid integer." % val + return False + if not allow_zero and ret == 0: + print "Please enter a non-zero integer." + return False + return ret + +# Give the scaling group a name +sg_name = "" +while not sg_name: + sg_name = raw_input("Enter a name for the scaling group: ") + +cooldown = 0 +while not cooldown: + str_secs = raw_input("Enter a cooldown period in seconds: ") + cooldown = safe_int(str_secs, False) + +# We want a minimum of 2 servers, and a max of 20. +min_entities = max_entities = 0 +while not min_entities: + min_entities = safe_int(raw_input("Enter the minimum entities: "), False) +while not max_entities: + max_entities = safe_int(raw_input("Enter the maximum entities: "), False) + if max_entities and (max_entities < min_entities): + print "The value for max_entities must be greater than min_entities." + max_entities = 0 + +# Configure the server launch settings. +server_name = "" +while not server_name: + server_name = raw_input("Enter the name base for the servers in this " + "scaling group: ") + +print "Getting a list of images..." +imgs = cs.list_images() +for pos, img in enumerate(imgs): + print "%s - %s" % (pos, img.name) +answer = -1 +while answer < 0: + answer = safe_int(raw_input("Enter the number of the image to use: ")) + if answer is False: + # safe_int() returns False for invalid values. + answer = -1 + continue + if not 0 <= answer < len(imgs): + print "The number '%s' does not correspond to any image." % answer + answer = -1 +image = imgs[answer] +print "You selected: %s." % image.name + +# Use a small flavor +flavor = 2 +# Set the disk configuration to 'MANUAL' +disk_config = "MANUAL" +# Let's give the servers some metadata +metadata = {"created_by": "autoscale sample script"} + +sg = au.create(sg_name, cooldown, min_entities, max_entities, "launch_server", + server_name, image, flavor, disk_config=disk_config, metadata=metadata) + +print +print +print "Scaling Group:", sg.name +print "ID:", sg.id +print "State:", sg.get_state() diff --git a/samples/autoscale/delete_policy.py b/samples/autoscale/delete_policy.py new file mode 100644 index 00000000..fe2cb7b4 --- /dev/null +++ b/samples/autoscale/delete_policy.py @@ -0,0 +1,82 @@ +#!/usr/bin/env python +# -*- coding: utf-8 -*- +# Copyright 2012 Rackspace + +# All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); you may +# not use this file except in compliance with the License. You may obtain +# a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT +# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the +# License for the specific language governing permissions and limitations +# under the License. + +import os +import pyrax + +pyrax.set_setting("identity_type", "rackspace") +creds_file = os.path.expanduser("~/.rackspace_cloud_credentials") +pyrax.set_credential_file(creds_file) +au = pyrax.autoscale + +def safe_int(val, allow_zero=True): + """ + This function converts the raw_input values to integers. It handles invalid + entries, and optionally forbids values of zero. + """ + try: + ret = int(val) + except ValueError: + print "Sorry, '%s' is not a valid integer." % val + return False + if not allow_zero and ret == 0: + print "Please enter a non-zero integer." + return False + return ret + +# Get the current scaling groups +sgs = au.list() +if not sgs: + print "There are no scaling groups defined." + exit() + +print +print "Available Scaling Groups:" +for pos, sg in enumerate(sgs): + print "%s - %s" % (pos, sg.name) +intanswer = -1 +while intanswer < 0: + answer = raw_input("Enter the number of the scaling group: ") + if not answer: + print "Nothing entered; exiting." + exit() + intanswer = safe_int(answer) + if intanswer is False: + intanswer = -1 + continue + if not 0 <= intanswer < len(sgs): + print "The number '%s' does not correspond to any scaling group." % answer + intanswer = -1 + +policies = sg.list_policies() +if not policies: + print "There are no policies defined for this scaling group." + exit() +for pos, policy in enumerate(policies): + print "%s - %s" % (pos, policy.name) +answer = raw_input("Enter the number of the policy to delete: ") +if not answer: + print "Nothing entered; exiting." + exit() +intanswer = safe_int(answer) +if not 0 <= intanswer < len(policies): + print "The number '%s' does not correspond to any policy." % answer + exit() +policy = policies[intanswer] +policy.delete() +print "Policy '%s' has been deleted." % policy.name diff --git a/samples/autoscale/delete_scaling_group.py b/samples/autoscale/delete_scaling_group.py new file mode 100644 index 00000000..4d89e7d7 --- /dev/null +++ b/samples/autoscale/delete_scaling_group.py @@ -0,0 +1,54 @@ +#!/usr/bin/env python +# -*- coding: utf-8 -*- +# Copyright 2012 Rackspace + +# All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); you may +# not use this file except in compliance with the License. You may obtain +# a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT +# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the +# License for the specific language governing permissions and limitations +# under the License. + +import os +import pyrax + +pyrax.set_setting("identity_type", "rackspace") +creds_file = os.path.expanduser("~/.rackspace_cloud_credentials") +pyrax.set_credential_file(creds_file) +au = pyrax.autoscale +cs = pyrax.cloudservers + +# Get the current scaling groups +sgs = au.list() +if not sgs: + print "There are no scaling groups defined." + exit() + +print +print "Available Scaling Groups:" +for pos, sg in enumerate(sgs): + print "%s - %s" % (pos, sg.name) +answer = raw_input("Enter the number of the scaling group to delete: ") +if not answer: + print "Nothing entered; exiting." + exit() +try: + intanswer = int(answer) +except ValueError: + print "'%s' is not a valid number; exiting." % answer + exit() +if not 0 <= intanswer < len(sgs): + print "The number '%s' does not correspond to any scaling group." % answer + exit() + +sg_del = sgs[intanswer] +sg_del.update(min_entities=0, max_entities=0) +sg_del.delete() +print "Scaling group '%s' has been deleted." % sg_del.name diff --git a/samples/autoscale/delete_webhook.py b/samples/autoscale/delete_webhook.py new file mode 100644 index 00000000..6d897fa3 --- /dev/null +++ b/samples/autoscale/delete_webhook.py @@ -0,0 +1,100 @@ +#!/usr/bin/env python +# -*- coding: utf-8 -*- +# Copyright 2012 Rackspace + +# All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); you may +# not use this file except in compliance with the License. You may obtain +# a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT +# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the +# License for the specific language governing permissions and limitations +# under the License. + +import os +import pyrax + +pyrax.set_setting("identity_type", "rackspace") +creds_file = os.path.expanduser("~/.rackspace_cloud_credentials") +pyrax.set_credential_file(creds_file) +au = pyrax.autoscale + +def safe_int(val, allow_zero=True): + """ + This function converts the raw_input values to integers. It handles invalid + entries, and optionally forbids values of zero. + """ + try: + ret = int(val) + except ValueError: + print "Sorry, '%s' is not a valid integer." % val + return False + if not allow_zero and ret == 0: + print "Please enter a non-zero integer." + return False + return ret + +# Get the current scaling groups +sgs = au.list() +if not sgs: + print "There are no scaling groups defined." + exit() + +print +print "Available Scaling Groups:" +for pos, sg in enumerate(sgs): + print "%s - %s" % (pos, sg.name) +intanswer = -1 +while intanswer < 0: + answer = raw_input("Enter the number of the scaling group: ") + if not answer: + print "Nothing entered; exiting." + exit() + intanswer = safe_int(answer) + if intanswer is False: + intanswer = -1 + continue + if not 0 <= intanswer < len(sgs): + print "The number '%s' does not correspond to any scaling group." % answer + intanswer = -1 + +policies = sg.list_policies() +if not policies: + print "There are no policies defined for this scaling group. You can only "\ + "add webhooks to existing policies." + exit() +for pos, policy in enumerate(policies): + print "%s - %s" % (pos, policy.name) +answer = raw_input("Enter the number of the policy: ") +if not answer: + print "Nothing entered; exiting." + exit() +intanswer = safe_int(answer) +if not 0 <= intanswer < len(policies): + print "The number '%s' does not correspond to any policy." % answer + exit() +policy = policies[intanswer] + +webhooks = policy.list_webhooks() +if not webhooks: + print "There are no webhooks defined for this policy." + exit() +for pos, webhook in enumerate(webhooks): + print "%s - %s" % (pos, webhook.name) +answer = raw_input("Enter the number of the webhook: ") +if not answer: + print "Nothing entered; exiting." + exit() +intanswer = safe_int(answer) +if not 0 <= intanswer < len(webhooks): + print "The number '%s' does not correspond to any webhook." % answer + exit() +webhook = webhooks[intanswer] +webhook.delete() +print +print "Webhook '%s' has been deleted." % webhook.name diff --git a/samples/cloud_monitoring/create_alarm.py b/samples/cloud_monitoring/create_alarm.py new file mode 100644 index 00000000..8609fa58 --- /dev/null +++ b/samples/cloud_monitoring/create_alarm.py @@ -0,0 +1,59 @@ +#!/usr/bin/env python +# -*- coding: utf-8 -*- +# Copyright 2013 Rackspace + +# All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); you may +# not use this file except in compliance with the License. You may obtain +# a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT +# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the +# License for the specific language governing permissions and limitations +# under the License. + +import os +import sys + +sys.path.insert(0, os.path.abspath(os.pardir)) + +import pyrax + +from util import option_chooser + +pyrax.set_setting("identity_type", "rackspace") +creds_file = os.path.expanduser("~/.rackspace_cloud_credentials") +pyrax.set_credential_file(creds_file) +cm = pyrax.cloud_monitoring + +# We need the IP address of the entity for this check +ents = cm.list_entities() +if not ents: + print "You must create an entity before you can create a notification." + sys.exit() +print "Select the entity on which you wish to create the notification:" +ent = option_chooser(ents, attr="name") +entity = ents[ent] +print entity + +checks = entity.list_checks() +print "Select a check to notify about:" +check_num = option_chooser(checks, attr="label") +check = checks[check_num] + +plans = cm.list_notification_plans() +plan_num = option_chooser(plans, attr="label") +plan = plans[plan_num] + +# Create an alarm which causes your notification plan's `warning` to be +# notified whenever the average ping time goes over 5 seconds. Otherwise, +# the status will be `ok`. +alarm = cm.create_alarm(entity, check, plan, + ("if (rate(metric['average']) > 5) { return new AlarmStatus(WARNING); } " + "return new AlarmStatus(OK);"), label="sample alarm") + +print "Created Alarm %s" % alarm.id diff --git a/samples/cloud_monitoring/create_check.py b/samples/cloud_monitoring/create_check.py new file mode 100644 index 00000000..54268529 --- /dev/null +++ b/samples/cloud_monitoring/create_check.py @@ -0,0 +1,63 @@ +#!/usr/bin/env python +# -*- coding: utf-8 -*- +# Copyright 2013 Rackspace + +# All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); you may +# not use this file except in compliance with the License. You may obtain +# a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT +# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the +# License for the specific language governing permissions and limitations +# under the License. + +import os +import sys + +sys.path.insert(0, os.path.abspath(os.pardir)) + +import pyrax + +from util import option_chooser + +pyrax.set_setting("identity_type", "rackspace") +creds_file = os.path.expanduser("~/.rackspace_cloud_credentials") +pyrax.set_credential_file(creds_file) +cm = pyrax.cloud_monitoring + +# We need the IP address of the entity for this check +ents = cm.list_entities() +if not ents: + print "You must create an entity before you can create a notification." + sys.exit() +print "Select the entity on which you wish to create the notification:" +ent = option_chooser(ents, attr="name") +entity = ents[ent] +print entity + +aliases = entity.ip_addresses.items() +print "Select an IP address to check" +interface = option_chooser(aliases) +alias = aliases[interface][0] + +# cm.list_check_types() would provide all available check types. +# However, this sample will use the most basic type: remote.ping + +# List the available Monitoring Zones +zones = cm.list_monitoring_zones() +print "Select a Monitoring Zone:" +zone_choice = option_chooser(zones, attr="label") +zone = zones[zone_choice] + +# Create the check +chk = cm.create_check(entity, label="sample_check", check_type="remote.ping", + details={"count": 5}, monitoring_zones_poll=[zone], + period=60, timeout=20, target_alias=alias) + +print "Name:", chk.name +print "ID:", chk.id diff --git a/samples/cloud_monitoring/create_entity.py b/samples/cloud_monitoring/create_entity.py new file mode 100644 index 00000000..5ee6df9b --- /dev/null +++ b/samples/cloud_monitoring/create_entity.py @@ -0,0 +1,43 @@ +#!/usr/bin/env python +# -*- coding: utf-8 -*- +# Copyright 2013 Rackspace + +# All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); you may +# not use this file except in compliance with the License. You may obtain +# a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT +# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the +# License for the specific language governing permissions and limitations +# under the License. + +import os +import sys + +import pyrax + +pyrax.set_setting("identity_type", "rackspace") +creds_file = os.path.expanduser("~/.rackspace_cloud_credentials") +pyrax.set_credential_file(creds_file) +cm = pyrax.cloud_monitoring +cs = pyrax.cloudservers + +# Create an entity based on an existing server +servers = cs.servers.list() +if not servers: + print "You must have at least one server to run this sample code." + exit() +server = servers[0] +ip = server.accessIPv4 +ent = cm.create_entity(name="sample_entity", ip_addresses={"main": ip}, + metadata={"note": "Sample enitity for server '%s'" % server.name}) + +print "Name:", ent.name +print "ID:", ent.id +print "IPs:", ent.ip_addresses +print "Meta:", ent.metadata diff --git a/samples/cloud_monitoring/create_notification.py b/samples/cloud_monitoring/create_notification.py new file mode 100644 index 00000000..9e5aa094 --- /dev/null +++ b/samples/cloud_monitoring/create_notification.py @@ -0,0 +1,63 @@ +#!/usr/bin/env python +# -*- coding: utf-8 -*- +# Copyright 2013 Rackspace + +# All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); you may +# not use this file except in compliance with the License. You may obtain +# a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT +# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the +# License for the specific language governing permissions and limitations +# under the License. + +import os +import sys + +sys.path.insert(0, os.path.abspath(os.pardir)) + +import pyrax + +from util import option_chooser + +pyrax.set_setting("identity_type", "rackspace") +creds_file = os.path.expanduser("~/.rackspace_cloud_credentials") +pyrax.set_credential_file(creds_file) +cm = pyrax.cloud_monitoring + +# We need the IP address of the entity for this check +ents = cm.list_entities() +if not ents: + print "You must create an entity before you can create a notification." + sys.exit() +print "Select the entity on which you wish to create the notification:" +ent = option_chooser(ents, attr="name") +entity = ents[ent] +print entity + +checks = entity.list_checks() +print "Select a check to notify about:" +check_num = option_chooser(checks, attr="label") +check = checks[check_num] + +# cm.list_notification_types() would provide all available check types. +# However, this sample will use the most basic type: email + +email = raw_input("Enter the email address to be notified at: ") + +# Create the notification +notif = cm.create_notification("email", label="sample email", + details={"address": email}) + +# You may want to set different notifications to different states. +# This sample just sets the same for all as a simple example. +np = cm.create_notification_plan(label="sample notification plan", + ok_state=notif, warning_state=notif, critical_state=notif) + +print "Created Notification %s" % notif.id +print "Added %s to Notification Plan %s" % (notif.id, np.id) diff --git a/samples/cloud_monitoring/util.py b/samples/cloud_monitoring/util.py new file mode 100644 index 00000000..2e917c20 --- /dev/null +++ b/samples/cloud_monitoring/util.py @@ -0,0 +1,52 @@ +#!/usr/bin/env python +# -*- coding: utf-8 -*- +# Copyright 2013 Rackspace + +# All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); you may +# not use this file except in compliance with the License. You may obtain +# a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT +# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the +# License for the specific language governing permissions and limitations +# under the License. + +import sys + +def option_chooser(options, attr=None): + """Given an iterable, enumerate its contents for a user to choose from. + If the optional `attr` is not None, that attribute in each iterated + object will be printed. + + This function will exit the program if the user chooses the escape option. + """ + for num, option in enumerate(options): + if attr: + print "%s: %s" % (num, getattr(option, attr)) + else: + print "%s: %s" % (num, option) + + # Add an escape option + escape_opt = num + 1 + print "%s: I want to exit!" % escape_opt + + choice = raw_input("Selection: ") + try: + ichoice = int(choice) + if ichoice > escape_opt: + raise ValueError + except ValueError: + print "Valid entries are the numbers 0-%s. Received '%s'." % (escape_opt, + choice) + sys.exit() + + if ichoice == escape_opt: + print "Bye!" + sys.exit() + + return ichoice diff --git a/tests/unit/fakes.py b/tests/unit/fakes.py index 58c73a52..df123232 100644 --- a/tests/unit/fakes.py +++ b/tests/unit/fakes.py @@ -6,6 +6,11 @@ import uuid import pyrax +from pyrax.autoscale import AutoScaleClient +from pyrax.autoscale import AutoScalePolicy +from pyrax.autoscale import AutoScaleWebhook +from pyrax.autoscale import ScalingGroup +from pyrax.autoscale import ScalingGroupManager from pyrax.cf_wrapper.client import FolderUploader from pyrax.cf_wrapper.container import Container from pyrax.cf_wrapper.storage_object import StorageObject @@ -30,6 +35,18 @@ from pyrax.clouddns import CloudDNSPTRRecord from pyrax.cloudnetworks import CloudNetwork from pyrax.cloudnetworks import CloudNetworkClient +from pyrax.cloudmonitoring import CloudMonitorClient +from pyrax.cloudmonitoring import CloudMonitorEntity +from pyrax.cloudmonitoring import CloudMonitorNotificationManager +from pyrax.cloudmonitoring import CloudMonitorNotificationPlanManager +from pyrax.cloudmonitoring import CloudMonitorEntityManager +from pyrax.cloudmonitoring import CloudMonitorCheck +from pyrax.cloudmonitoring import CloudMonitorCheckType +from pyrax.cloudmonitoring import CloudMonitorZone +from pyrax.cloudmonitoring import CloudMonitorNotification +from pyrax.cloudmonitoring import CloudMonitorNotificationType +from pyrax.cloudmonitoring import CloudMonitorNotificationPlan +from pyrax.cloudmonitoring import CloudMonitorAlarm import pyrax.exceptions as exc from pyrax.identity.rax_identity import RaxIdentity @@ -330,7 +347,7 @@ def __init__(self, *args, **kwargs): class FakeLoadBalancerManager(CloudLoadBalancerManager): def __init__(self, api=None, *args, **kwargs): if api is None: - api = FakeBlockStorageClient() + api = FakeLoadBalancerClient() super(FakeLoadBalancerManager, self).__init__(api, *args, **kwargs) @@ -340,6 +357,7 @@ def __init__(self, name=None, info=None, *args, **kwargs): info = info or {"fake": "fake"} super(FakeLoadBalancer, self).__init__(name, info, *args, **kwargs) self.id = utils.random_name(ascii_only=True) + self.port = random.randint(1, 256) self.manager = FakeLoadBalancerManager() @@ -381,14 +399,83 @@ def __init__(self, *args, **kwargs): class FakeCloudNetwork(CloudNetwork): def __init__(self, *args, **kwargs): - info = kwargs.get("info", {"fake": "fake"}) - label = kwargs.get("label", kwargs.pop("name", utils.random_name())) + info = kwargs.pop("info", {"fake": "fake"}) + label = kwargs.pop("label", kwargs.pop("name", utils.random_name())) info["label"] = label super(FakeCloudNetwork, self).__init__(manager=None, info=info, *args, **kwargs) self.id = uuid.uuid4() +class FakeAutoScaleClient(AutoScaleClient): + def __init__(self, *args, **kwargs): + self._manager = FakeManager() + super(FakeAutoScaleClient, self).__init__(*args, **kwargs) + + +class FakeAutoScalePolicy(AutoScalePolicy): + def __init__(self, *args, **kwargs): + super(FakeAutoScalePolicy, self).__init__(*args, **kwargs) + self.id = utils.random_name(ascii_only=True) + + +class FakeAutoScaleWebhook(AutoScaleWebhook): + def __init__(self, *args, **kwargs): + super(FakeAutoScaleWebhook, self).__init__(*args, **kwargs) + self.id = utils.random_name(ascii_only=True) + + +class FakeScalingGroupManager(ScalingGroupManager): + def __init__(self, api=None, *args, **kwargs): + if api is None: + api = FakeAutoScaleClient() + super(FakeScalingGroupManager, self).__init__(api, *args, **kwargs) + self.id = utils.random_name(ascii_only=True) + + +class FakeScalingGroup(ScalingGroup): + def __init__(self, name=None, info=None, *args, **kwargs): + name = name or utils.random_name(ascii_only=True) + info = info or {"fake": "fake", "scalingPolicies": []} + self.groupConfiguration = {} + super(FakeScalingGroup, self).__init__(name, info, *args, **kwargs) + self.id = utils.random_name(ascii_only=True) + self.name = name + self.manager = FakeScalingGroupManager() + + +class FakeCloudMonitorClient(CloudMonitorClient): + def __init__(self, *args, **kwargs): + super(FakeCloudMonitorClient, self).__init__("fakeuser", + "fakepassword", *args, **kwargs) + + +class FakeCloudMonitorEntity(CloudMonitorEntity): + def __init__(self, *args, **kwargs): + info = kwargs.pop("info", {"fake": "fake"}) + super(FakeCloudMonitorEntity, self).__init__(FakeManager(), info=info, + *args, **kwargs) + self.manager.api = FakeCloudMonitorClient() + self.id = utils.random_name() + + +class FakeCloudMonitorCheck(CloudMonitorCheck): + def __init__(self, *args, **kwargs): + info = kwargs.pop("info", {"fake": "fake"}) + entity = kwargs.pop("entity", FakeCloudMonitorEntity()) + super(FakeCloudMonitorCheck, self).__init__(None, info, entity, + *args, **kwargs) + self.id = uuid.uuid4() + + +class FakeCloudMonitorNotification(CloudMonitorNotification): + def __init__(self, *args, **kwargs): + info = kwargs.pop("info", {"fake": "fake"}) + super(FakeCloudMonitorNotification, self).__init__(manager=None, + info=info, *args, **kwargs) + self.id = uuid.uuid4() + + class FakeIdentity(RaxIdentity): """Class that returns canned authentication responses.""" def __init__(self, *args, **kwargs): diff --git a/tests/unit/test_autoscale.py b/tests/unit/test_autoscale.py new file mode 100644 index 00000000..3ea0139c --- /dev/null +++ b/tests/unit/test_autoscale.py @@ -0,0 +1,1111 @@ +#!/usr/bin/env python +# -*- coding: utf-8 -*- + +import random +import unittest + +from mock import patch +from mock import MagicMock as Mock + +import pyrax +import pyrax.autoscale +from pyrax.autoscale import AutoScaleClient +from pyrax.autoscale import AutoScalePolicy +from pyrax.autoscale import AutoScaleWebhook +from pyrax.autoscale import ScalingGroup +from pyrax.autoscale import ScalingGroupManager +from pyrax.autoscale import SERVICE_NET_ID + +import pyrax.exceptions as exc +import pyrax.utils as utils + +from tests.unit import fakes + + + +class AutoscaleTest(unittest.TestCase): + def __init__(self, *args, **kwargs): + super(AutoscaleTest, self).__init__(*args, **kwargs) + + def setUp(self): + self.scaling_group = fakes.FakeScalingGroup() + + def tearDown(self): + pass + + def test_make_policies(self): + sg = self.scaling_group + p1 = utils.random_name() + p2 = utils.random_name() + sg.scalingPolicies = [{"name": p1}, {"name": p2}] + sg._make_policies() + self.assertEqual(len(sg.policies), 2) + polnames = [pol.name for pol in sg.policies] + self.assert_(p1 in polnames) + self.assert_(p2 in polnames) + + def test_get_state(self): + sg = self.scaling_group + mgr = sg.manager + mgr.get_state = Mock() + sg.get_state() + mgr.get_state.assert_called_once_with(sg) + + def test_pause(self): + sg = self.scaling_group + mgr = sg.manager + mgr.pause = Mock() + sg.pause() + mgr.pause.assert_called_once_with(sg) + + def test_resume(self): + sg = self.scaling_group + mgr = sg.manager + mgr.resume = Mock() + sg.resume() + mgr.resume.assert_called_once_with(sg) + + def test_update(self): + sg = self.scaling_group + mgr = sg.manager + mgr.update = Mock() + name = utils.random_name() + cooldown = utils.random_name() + min_entities = utils.random_name() + max_entities = utils.random_name() + metadata = utils.random_name() + sg.update(name=name, cooldown=cooldown, min_entities=min_entities, + max_entities=max_entities, metadata=metadata) + mgr.update.assert_called_once_with(sg, name=name, cooldown=cooldown, + min_entities=min_entities, max_entities=max_entities, + metadata=metadata) + + def test_update_metadata(self): + sg = self.scaling_group + mgr = sg.manager + mgr.update_metadata = Mock() + metadata = utils.random_name() + sg.update_metadata(metadata) + mgr.update_metadata.assert_called_once_with(sg, metadata=metadata) + + def test_get_configuration(self): + sg = self.scaling_group + mgr = sg.manager + mgr.get_configuration = Mock() + sg.get_configuration() + mgr.get_configuration.assert_called_once_with(sg) + + def test_get_launch_config(self): + sg = self.scaling_group + mgr = sg.manager + mgr.get_launch_config = Mock() + sg.get_launch_config() + mgr.get_launch_config.assert_called_once_with(sg) + + def test_update_launch_config(self): + sg = self.scaling_group + mgr = sg.manager + mgr.update_launch_config = Mock() + server_name = utils.random_name() + flavor = utils.random_name() + image = utils.random_name() + disk_config = utils.random_name() + metadata = utils.random_name() + personality = utils.random_name() + networks = utils.random_name() + load_balancers = utils.random_name() + sg.update_launch_config(server_name=server_name, flavor=flavor, + image=image, disk_config=disk_config, metadata=metadata, + personality=personality, networks=networks, + load_balancers=load_balancers) + mgr.update_launch_config.assert_called_once_with(sg, + server_name=server_name, flavor=flavor, image=image, + disk_config=disk_config, metadata=metadata, + personality=personality, networks=networks, + load_balancers=load_balancers) + + def test_update_launch_metadata(self): + sg = self.scaling_group + mgr = sg.manager + mgr.update_launch_metadata = Mock() + metadata = utils.random_name() + sg.update_launch_metadata(metadata) + mgr.update_launch_metadata.assert_called_once_with(sg, metadata) + + def test_add_policy(self): + sg = self.scaling_group + mgr = sg.manager + name = utils.random_name() + policy_type = utils.random_name() + cooldown = utils.random_name() + change = utils.random_name() + is_percent = utils.random_name() + mgr.add_policy = Mock() + sg.add_policy(name, policy_type, cooldown, change, + is_percent=is_percent) + mgr.add_policy.assert_called_once_with(sg, name, policy_type, cooldown, + change, is_percent=is_percent) + + def test_list_policies(self): + sg = self.scaling_group + mgr = sg.manager + mgr.list_policies = Mock() + sg.list_policies() + mgr.list_policies.assert_called_once_with(sg) + + def test_get_policy(self): + sg = self.scaling_group + mgr = sg.manager + pol = utils.random_name() + mgr.get_policy = Mock() + sg.get_policy(pol) + mgr.get_policy.assert_called_once_with(sg, pol) + + def test_update_policy(self): + sg = self.scaling_group + mgr = sg.manager + policy = utils.random_name() + name = utils.random_name() + policy_type = utils.random_name() + cooldown = utils.random_name() + change = utils.random_name() + is_percent = utils.random_name() + mgr.update_policy = Mock() + sg.update_policy(policy, name=name, policy_type=policy_type, + cooldown=cooldown, change=change, is_percent=is_percent) + mgr.update_policy.assert_called_once_with(scaling_group=sg, + policy=policy, name=name, policy_type=policy_type, + cooldown=cooldown, change=change, is_percent=is_percent) + + def test_execute_policy(self): + sg = self.scaling_group + mgr = sg.manager + pol = utils.random_name() + mgr.execute_policy = Mock() + sg.execute_policy(pol) + mgr.execute_policy.assert_called_once_with(scaling_group=sg, + policy=pol) + + def test_delete_policy(self): + sg = self.scaling_group + mgr = sg.manager + pol = utils.random_name() + mgr.delete_policy = Mock() + sg.delete_policy(pol) + mgr.delete_policy.assert_called_once_with(scaling_group=sg, + policy=pol) + + def test_add_webhook(self): + sg = self.scaling_group + mgr = sg.manager + pol = utils.random_name() + name = utils.random_name() + metadata = utils.random_name() + mgr.add_webhook = Mock() + sg.add_webhook(pol, name, metadata=metadata) + mgr.add_webhook.assert_called_once_with(sg, pol, name, + metadata=metadata) + + def test_list_webhooks(self): + sg = self.scaling_group + mgr = sg.manager + pol = utils.random_name() + mgr.list_webhooks = Mock() + sg.list_webhooks(pol) + mgr.list_webhooks.assert_called_once_with(sg, pol) + + def test_update_webhook(self): + sg = self.scaling_group + mgr = sg.manager + pol = utils.random_name() + hook = utils.random_name() + name = utils.random_name() + metadata = utils.random_name() + mgr.update_webhook = Mock() + sg.update_webhook(pol, hook, name=name, metadata=metadata) + mgr.update_webhook.assert_called_once_with(scaling_group=sg, policy=pol, + webhook=hook, name=name, metadata=metadata) + + def test_update_webhook_metadata(self): + sg = self.scaling_group + mgr = sg.manager + pol = utils.random_name() + hook = utils.random_name() + metadata = utils.random_name() + mgr.update_webhook_metadata = Mock() + sg.update_webhook_metadata(pol, hook, metadata=metadata) + mgr.update_webhook_metadata.assert_called_once_with(sg, pol, hook, + metadata) + + def test_delete_webhook(self): + sg = self.scaling_group + mgr = sg.manager + pol = utils.random_name() + hook = utils.random_name() + mgr.delete_webhook = Mock() + sg.delete_webhook(pol, hook) + mgr.delete_webhook.assert_called_once_with(sg, pol, hook) + + + def test_policy_count(self): + sg = self.scaling_group + num = random.randint(1, 100) + sg.policies = ["x"] * num + self.assertEqual(sg.policy_count, num) + + def test_name(self): + sg = self.scaling_group + name = utils.random_name() + newname = utils.random_name() + sg.groupConfiguration = {"name": name} + self.assertEqual(sg.name, name) + sg.name = newname + self.assertEqual(sg.name, newname) + + def test_cooldown(self): + sg = self.scaling_group + cooldown = utils.random_name() + newcooldown = utils.random_name() + sg.groupConfiguration = {"cooldown": cooldown} + self.assertEqual(sg.cooldown, cooldown) + sg.cooldown = newcooldown + self.assertEqual(sg.cooldown, newcooldown) + + def test_metadata(self): + sg = self.scaling_group + metadata = utils.random_name() + newmetadata = utils.random_name() + sg.groupConfiguration = {"metadata": metadata} + self.assertEqual(sg.metadata, metadata) + sg.metadata = newmetadata + self.assertEqual(sg.metadata, newmetadata) + + def test_min_entities(self): + sg = self.scaling_group + min_entities = utils.random_name() + newmin_entities = utils.random_name() + sg.groupConfiguration = {"minEntities": min_entities} + self.assertEqual(sg.min_entities, min_entities) + sg.min_entities = newmin_entities + self.assertEqual(sg.min_entities, newmin_entities) + + def test_max_entities(self): + sg = self.scaling_group + max_entities = utils.random_name() + newmax_entities = utils.random_name() + sg.groupConfiguration = {"maxEntities": max_entities} + self.assertEqual(sg.max_entities, max_entities) + sg.max_entities = newmax_entities + self.assertEqual(sg.max_entities, newmax_entities) + + def test_mgr_get_state(self): + sg = self.scaling_group + mgr = sg.manager + id1 = utils.random_name() + id2 = utils.random_name() + ac = utils.random_name() + dc = utils.random_name() + pc = utils.random_name() + paused = utils.random_name() + statedict = {"group": { + "active": [{"id": id1}, {"id": id2}], + "activeCapacity": ac, + "desiredCapacity": dc, + "pendingCapacity": pc, + "paused": paused, + }} + expected = { + "active": [id1, id2], + "active_capacity": ac, + "desired_capacity": dc, + "pending_capacity": pc, + "paused": paused, + } + mgr.api.method_get = Mock(return_value=(None, statedict)) + ret = mgr.get_state(sg) + self.assertEqual(ret, expected) + + def test_mgr_pause(self): + sg = self.scaling_group + mgr = sg.manager + uri = "/%s/%s/pause" % (mgr.uri_base, sg.id) + mgr.api.method_post = Mock(return_value=(None, None)) + mgr.pause(sg) + mgr.api.method_post.assert_called_once_with(uri) + + def test_mgr_resume(self): + sg = self.scaling_group + mgr = sg.manager + uri = "/%s/%s/resume" % (mgr.uri_base, sg.id) + mgr.api.method_post = Mock(return_value=(None, None)) + mgr.resume(sg) + mgr.api.method_post.assert_called_once_with(uri) + + def test_mgr_get_configuration(self): + sg = self.scaling_group + mgr = sg.manager + uri = "/%s/%s/config" % (mgr.uri_base, sg.id) + conf = utils.random_name() + resp_body = {"groupConfiguration": conf} + mgr.api.method_get = Mock(return_value=(None, resp_body)) + ret = mgr.get_configuration(sg) + mgr.api.method_get.assert_called_once_with(uri) + self.assertEqual(ret, conf) + + def test_mgr_update(self): + sg = self.scaling_group + mgr = sg.manager + mgr.get = Mock(return_value=sg) + uri = "/%s/%s/config" % (mgr.uri_base, sg.id) + sg.name = utils.random_name() + sg.cooldown = utils.random_name() + sg.min_entities = utils.random_name() + sg.max_entities = utils.random_name() + metadata = utils.random_name() + mgr.api.method_put = Mock(return_value=(None, None)) + expected_body = {"name": sg.name, + "cooldown": sg.cooldown, + "minEntities": sg.min_entities, + "maxEntities": sg.max_entities, + "metadata": metadata, + } + mgr.update(sg.id, metadata=metadata) + mgr.api.method_put.assert_called_once_with(uri, body=expected_body) + + def test_mgr_update_metadata(self): + sg = self.scaling_group + mgr = sg.manager + mgr.get = Mock(return_value=sg) + sg.metadata = {"orig": "orig"} + metadata = {"new": "new"} + expected = sg.metadata.copy() + expected.update(metadata) + mgr.update = Mock() + mgr.update_metadata(sg.id, metadata) + mgr.update.assert_called_once_with(sg, metadata=expected) + + def test_mgr_get_launch_config(self): + sg = self.scaling_group + mgr = sg.manager + typ = utils.random_name() + lbs = utils.random_name() + name = utils.random_name() + flv = utils.random_name() + img = utils.random_name() + dconfig = utils.random_name() + metadata = utils.random_name() + personality = utils.random_name() + networks = utils.random_name() + launchdict = {"launchConfiguration": { + "type": typ, + "args": { + "loadBalancers": lbs, + "server": { + "name": name, + "flavorRef": flv, + "imageRef": img, + "OS-DCF:diskConfig": dconfig, + "metadata": metadata, + "personality": personality, + "networks": networks, + }, + }, + }, + } + expected = { + "type": typ, + "load_balancers": lbs, + "name": name, + "flavor": flv, + "image": img, + "disk_config": dconfig, + "metadata": metadata, + "personality": personality, + "networks": networks, + } + mgr.api.method_get = Mock(return_value=(None, launchdict)) + uri = "/%s/%s/launch" % (mgr.uri_base, sg.id) + ret = mgr.get_launch_config(sg) + mgr.api.method_get.assert_called_once_with(uri) + self.assertEqual(ret, expected) + + def test_mgr_update_launch_config(self): + sg = self.scaling_group + mgr = sg.manager + mgr.get = Mock(return_value=sg) + typ = utils.random_name() + lbs = utils.random_name() + name = utils.random_name() + flv = utils.random_name() + img = utils.random_name() + dconfig = utils.random_name() + metadata = utils.random_name() + personality = utils.random_name() + networks = utils.random_name() + sg.launchConfiguration = {} + body = {"type": "launch_server", + "args": { + "server": { + "name": name, + "imageRef": img, + "flavorRef": flv, + "OS-DCF:diskConfig": dconfig, + "personality": personality, + "networks": networks, + "metadata": metadata, + }, + "loadBalancers": lbs, + }, + } + mgr.api.method_put = Mock(return_value=(None, None)) + uri = "/%s/%s/launch" % (mgr.uri_base, sg.id) + mgr.update_launch_config(sg.id, server_name=name, flavor=flv, image=img, + disk_config=dconfig, metadata=metadata, + personality=personality, networks=networks, load_balancers=lbs) + mgr.api.method_put.assert_called_once_with(uri, body=body) + + def test_mgr_update_launch_metadata(self): + sg = self.scaling_group + mgr = sg.manager + mgr.get = Mock(return_value=sg) + orig_meta = {"orig": "orig"} + new_meta = {"new": "new"} + sg.launchConfiguration = {"args": {"server": {"metadata": orig_meta}}} + expected = orig_meta.copy() + expected.update(new_meta) + mgr.update_launch_config = Mock() + mgr.update_launch_metadata(sg.id, new_meta) + mgr.update_launch_config.assert_called_once_with(sg, metadata=expected) + + def test_mgr_add_policy(self): + sg = self.scaling_group + mgr = sg.manager + ret_body = {"policies": [{}]} + mgr.api.method_post = Mock(return_value=(None, ret_body)) + uri = "/%s/%s/policies" % (mgr.uri_base, sg.id) + name = utils.random_name() + ptype = utils.random_name() + cooldown = utils.random_name() + change = utils.random_name() + for is_percent in (True, False): + post_body = {"name": name, "cooldown": cooldown, "type": ptype} + if is_percent: + post_body["changePercent"] = change + else: + post_body["change"] = change + ret = mgr.add_policy(sg, name, ptype, cooldown, change, + is_percent=is_percent) + mgr.api.method_post.assert_called_with(uri, body=[post_body]) + self.assert_(isinstance(ret, AutoScalePolicy)) + + def test_mgr_list_policies(self): + sg = self.scaling_group + mgr = sg.manager + ret_body = {"policies": [{}]} + mgr.api.method_get = Mock(return_value=(None, ret_body)) + uri = "/%s/%s/policies" % (mgr.uri_base, sg.id) + ret = mgr.list_policies(sg) + mgr.api.method_get.assert_called_once_with(uri) + + def test_mgr_get_policy(self): + sg = self.scaling_group + mgr = sg.manager + pol = utils.random_name() + ret_body = {"policy": {}} + uri = "/%s/%s/policies/%s" % (mgr.uri_base, sg.id, pol) + mgr.api.method_get = Mock(return_value=(None, ret_body)) + ret = mgr.get_policy(sg, pol) + self.assert_(isinstance(ret, AutoScalePolicy)) + mgr.api.method_get.assert_called_once_with(uri) + + def test_mgr_update_policy(self): + sg = self.scaling_group + mgr = sg.manager + pol = utils.random_name() + name = utils.random_name() + ptype = utils.random_name() + cooldown = utils.random_name() + change = utils.random_name() + mgr.get_policy = Mock(return_value=fakes.FakeAutoScalePolicy(mgr, {}, + sg)) + mgr.api.method_put = Mock(return_value=(None, None)) + uri = "/%s/%s/policies/%s" % (mgr.uri_base, sg.id, pol) + for is_percent in (True, False): + put_body = {"name": name, "cooldown": cooldown, "type": ptype} + if is_percent: + put_body["changePercent"] = change + else: + put_body["change"] = change + ret = mgr.update_policy(sg, pol, name=name, policy_type=ptype, + cooldown=cooldown, change=change, is_percent=is_percent) + mgr.api.method_put.assert_called_with(uri, body=put_body) + + def test_mgr_execute_policy(self): + sg = self.scaling_group + mgr = sg.manager + pol = utils.random_name() + uri = "/%s/%s/policies/%s/execute" % (mgr.uri_base, sg.id, pol) + mgr.api.method_post = Mock(return_value=(None, None)) + mgr.execute_policy(sg, pol) + mgr.api.method_post.assert_called_once_with(uri) + + def test_mgr_delete_policy(self): + sg = self.scaling_group + mgr = sg.manager + pol = utils.random_name() + uri = "/%s/%s/policies/%s" % (mgr.uri_base, sg.id, pol) + mgr.api.method_delete = Mock(return_value=(None, None)) + mgr.delete_policy(sg, pol) + mgr.api.method_delete.assert_called_once_with(uri) + + def test_mgr_add_webhook(self): + sg = self.scaling_group + mgr = sg.manager + pol = utils.random_name() + ret_body = {"webhooks": [{}]} + mgr.api.method_post = Mock(return_value=(None, ret_body)) + uri = "/%s/%s/policies/%s/webhooks" % (mgr.uri_base, sg.id, pol) + mgr.get_policy = Mock(return_value=fakes.FakeAutoScalePolicy(mgr, {}, + sg)) + name = utils.random_name() + metadata = utils.random_name() + post_body = {"name": name, "metadata": metadata} + ret = mgr.add_webhook(sg, pol, name, metadata=metadata) + mgr.api.method_post.assert_called_with(uri, body=[post_body]) + self.assert_(isinstance(ret, AutoScaleWebhook)) + + + + + + + def test_mgr_list_webhooks(self): + sg = self.scaling_group + mgr = sg.manager + pol = fakes.FakeAutoScalePolicy(mgr, {}, sg) + ret_body = {"webhooks": [{}]} + mgr.api.method_get = Mock(return_value=(None, ret_body)) + mgr.get_policy = Mock(return_value=fakes.FakeAutoScalePolicy(mgr, {}, + sg)) + uri = "/%s/%s/policies/%s/webhooks" % (mgr.uri_base, sg.id, pol.id) + ret = mgr.list_webhooks(sg, pol) + mgr.api.method_get.assert_called_once_with(uri) + + def test_mgr_get_webhook(self): + sg = self.scaling_group + mgr = sg.manager + pol = fakes.FakeAutoScalePolicy(mgr, {}, sg) + hook = utils.random_name() + ret_body = {"webhook": {}} + uri = "/%s/%s/policies/%s/webhooks/%s" % (mgr.uri_base, sg.id, pol.id, + hook) + mgr.api.method_get = Mock(return_value=(None, ret_body)) + ret = mgr.get_webhook(sg, pol, hook) + self.assert_(isinstance(ret, AutoScaleWebhook)) + mgr.api.method_get.assert_called_once_with(uri) + + def test_mgr_update_webhook(self): + sg = self.scaling_group + mgr = sg.manager + pol = fakes.FakeAutoScalePolicy(mgr, {}, sg) + hook = utils.random_name() + hook_obj = fakes.FakeAutoScaleWebhook(mgr, {}, pol) + name = utils.random_name() + metadata = utils.random_name() + mgr.get_webhook = Mock(return_value=hook_obj) + mgr.api.method_put = Mock(return_value=(None, None)) + uri = "/%s/%s/policies/%s/webhooks/%s" % (mgr.uri_base, sg.id, pol.id, + hook) + put_body = {"name": name, "metadata": metadata} + ret = mgr.update_webhook(sg, pol, hook, name=name, metadata=metadata) + mgr.api.method_put.assert_called_with(uri, body=put_body) + + def test_mgr_update_webhook_metadata(self): + sg = self.scaling_group + mgr = sg.manager + pol = fakes.FakeAutoScalePolicy(mgr, {}, sg) + hook = utils.random_name() + hook_obj = fakes.FakeAutoScaleWebhook(mgr, {}, pol) + hook_obj.metadata = {"orig": "orig"} + metadata = {"new": "new"} + expected = hook_obj.metadata.copy() + expected.update(metadata) + uri = "/%s/%s/policies/%s/webhooks/%s" % (mgr.uri_base, sg.id, pol.id, + hook) + mgr.update_webhook = Mock() + mgr.get_webhook = Mock(return_value=hook_obj) + mgr.update_webhook_metadata(sg, pol, hook, metadata) + mgr.update_webhook.assert_called_once_with(sg, pol, hook_obj, + metadata=expected) + + def test_mgr_delete_webhook(self): + sg = self.scaling_group + mgr = sg.manager + pol = fakes.FakeAutoScalePolicy(mgr, {}, sg) + hook = utils.random_name() + hook_obj = fakes.FakeAutoScaleWebhook(mgr, {}, pol) + uri = "/%s/%s/policies/%s/webhooks/%s" % (mgr.uri_base, sg.id, pol.id, + hook) + mgr.api.method_delete = Mock(return_value=(None, None)) + mgr.get_webhook = Mock(return_value=hook_obj) + mgr.delete_webhook(sg, pol, hook) + mgr.api.method_delete.assert_called_once_with(uri) + + def test_policy_init(self): + sg = self.scaling_group + mgr = sg.manager + mgr.get = Mock(return_value=sg) + pol = fakes.FakeAutoScalePolicy(mgr, {}, sg.id) + self.assert_(pol.scaling_group is sg) + + def test_policy_get(self): + sg = self.scaling_group + mgr = sg.manager + pol = fakes.FakeAutoScalePolicy(mgr, {}, sg) + mgr.get_policy = Mock(return_value=pol) + pol.get() + mgr.get_policy.assert_called_once_with(sg, pol) + + def test_policy_delete(self): + sg = self.scaling_group + mgr = sg.manager + pol = fakes.FakeAutoScalePolicy(mgr, {}, sg) + mgr.delete_policy = Mock() + pol.delete() + mgr.delete_policy.assert_called_once_with(sg, pol) + + def test_policy_update(self): + sg = self.scaling_group + mgr = sg.manager + pol = fakes.FakeAutoScalePolicy(mgr, {}, sg) + name = utils.random_name() + policy_type = utils.random_name() + cooldown = utils.random_name() + change = utils.random_name() + is_percent = utils.random_name() + mgr.update_policy = Mock() + pol.update(name=name, policy_type=policy_type, cooldown=cooldown, + change=change, is_percent=is_percent) + mgr.update_policy.assert_called_once_with(scaling_group=sg, + policy=pol, name=name, policy_type=policy_type, + cooldown=cooldown, change=change, is_percent=is_percent) + + def test_policy_execute(self): + sg = self.scaling_group + mgr = sg.manager + pol = fakes.FakeAutoScalePolicy(mgr, {}, sg) + mgr.execute_policy = Mock() + pol.execute() + mgr.execute_policy.assert_called_once_with(sg, pol) + + def test_policy_add_webhook(self): + sg = self.scaling_group + mgr = sg.manager + pol = fakes.FakeAutoScalePolicy(mgr, {}, sg) + mgr.add_webhook = Mock() + name = utils.random_name() + metadata = utils.random_name() + pol.add_webhook(name, metadata=metadata) + mgr.add_webhook.assert_called_once_with(sg, pol, name, + metadata=metadata) + + def test_policy_list_webhooks(self): + sg = self.scaling_group + mgr = sg.manager + pol = fakes.FakeAutoScalePolicy(mgr, {}, sg) + mgr.list_webhooks = Mock() + pol.list_webhooks() + mgr.list_webhooks.assert_called_once_with(sg, pol) + + def test_policy_get_webhook(self): + sg = self.scaling_group + mgr = sg.manager + pol = fakes.FakeAutoScalePolicy(mgr, {}, sg) + hook = utils.random_name() + mgr.get_webhook = Mock() + pol.get_webhook(hook) + mgr.get_webhook.assert_called_once_with(sg, pol, hook) + + def test_policy_update_webhook(self): + sg = self.scaling_group + mgr = sg.manager + pol = fakes.FakeAutoScalePolicy(mgr, {}, sg) + hook = utils.random_name() + name = utils.random_name() + metadata = utils.random_name() + mgr.update_webhook = Mock() + pol.update_webhook(hook, name=name, metadata=metadata) + mgr.update_webhook.assert_called_once_with(sg, policy=pol, webhook=hook, + name=name, metadata=metadata) + + def test_policy_update_webhook_metadata(self): + sg = self.scaling_group + mgr = sg.manager + pol = fakes.FakeAutoScalePolicy(mgr, {}, sg) + hook = utils.random_name() + metadata = utils.random_name() + mgr.update_webhook_metadata = Mock() + pol.update_webhook_metadata(hook, metadata=metadata) + mgr.update_webhook_metadata.assert_called_once_with(sg, pol, hook, + metadata) + + def test_policy_delete_webhook(self): + sg = self.scaling_group + mgr = sg.manager + pol = fakes.FakeAutoScalePolicy(mgr, {}, sg) + hook = utils.random_name() + mgr.delete_webhook = Mock() + pol.delete_webhook(hook) + mgr.delete_webhook.assert_called_once_with(sg, pol, hook) + + def test_webhook_get(self): + sg = self.scaling_group + mgr = sg.manager + pol = fakes.FakeAutoScalePolicy(mgr, {}, sg) + hook = fakes.FakeAutoScaleWebhook(mgr, {}, pol) + pol.get_webhook = Mock() + hook.get() + pol.get_webhook.assert_called_once_with(hook) + + def test_webhook_update(self): + sg = self.scaling_group + mgr = sg.manager + pol = fakes.FakeAutoScalePolicy(mgr, {}, sg) + hook = fakes.FakeAutoScaleWebhook(mgr, {}, pol) + name = utils.random_name() + metadata = utils.random_name() + pol.update_webhook = Mock() + hook.update(name=name, metadata=metadata) + pol.update_webhook.assert_called_once_with(hook, name=name, + metadata=metadata) + + def test_webhook_update_metadata(self): + sg = self.scaling_group + mgr = sg.manager + pol = fakes.FakeAutoScalePolicy(mgr, {}, sg) + hook = fakes.FakeAutoScaleWebhook(mgr, {}, pol) + metadata = utils.random_name() + pol.update_webhook_metadata = Mock() + hook.update_metadata(metadata=metadata) + pol.update_webhook_metadata.assert_called_once_with(hook, + metadata) + + def test_webhook_delete(self): + sg = self.scaling_group + mgr = sg.manager + pol = fakes.FakeAutoScalePolicy(mgr, {}, sg) + hook = fakes.FakeAutoScaleWebhook(mgr, {}, pol) + pol.delete_webhook = Mock() + hook.delete() + pol.delete_webhook.assert_called_once_with(hook) + + def test_clt_get_state(self): + clt = fakes.FakeAutoScaleClient() + sg = self.scaling_group + mgr = clt._manager + mgr.get_state = Mock() + clt.get_state(sg) + mgr.get_state.assert_called_once_with(sg) + + def test_clt_pause(self): + clt = fakes.FakeAutoScaleClient() + sg = self.scaling_group + mgr = clt._manager + mgr.pause = Mock() + clt.pause(sg) + mgr.pause.assert_called_once_with(sg) + + def test_clt_resume(self): + clt = fakes.FakeAutoScaleClient() + mgr = clt._manager + sg = self.scaling_group + mgr.resume = Mock() + clt.resume(sg) + mgr.resume.assert_called_once_with(sg) + + def test_clt_update(self): + clt = fakes.FakeAutoScaleClient() + mgr = clt._manager + sg = self.scaling_group + name = utils.random_name() + cooldown = utils.random_name() + min_entities = utils.random_name() + max_entities = utils.random_name() + metadata = utils.random_name() + mgr.update = Mock() + clt.update(sg, name=name, cooldown=cooldown, min_entities=min_entities, + max_entities=max_entities, metadata=metadata) + mgr.update.assert_called_once_with(sg, name=name, cooldown=cooldown, + min_entities=min_entities, max_entities=max_entities, + metadata=metadata) + + def test_clt_update_metadata(self): + clt = fakes.FakeAutoScaleClient() + mgr = clt._manager + sg = self.scaling_group + metadata = utils.random_name() + mgr.update_metadata = Mock() + clt.update_metadata(sg, metadata) + mgr.update_metadata.assert_called_once_with(sg, metadata) + + def test_clt_get_configuration(self): + clt = fakes.FakeAutoScaleClient() + mgr = clt._manager + sg = self.scaling_group + mgr.get_configuration = Mock() + clt.get_configuration(sg) + mgr.get_configuration.assert_called_once_with(sg) + + def test_clt_get_launch_config(self): + clt = fakes.FakeAutoScaleClient() + mgr = clt._manager + sg = self.scaling_group + mgr.get_launch_config = Mock() + clt.get_launch_config(sg) + mgr.get_launch_config.assert_called_once_with(sg) + + def test_clt_update_launch_config(self): + clt = fakes.FakeAutoScaleClient() + mgr = clt._manager + sg = self.scaling_group + mgr.update_launch_config = Mock() + server_name = utils.random_name() + flavor = utils.random_name() + image = utils.random_name() + disk_config = utils.random_name() + metadata = utils.random_name() + personality = utils.random_name() + networks = utils.random_name() + load_balancers = utils.random_name() + clt.update_launch_config(sg, server_name=server_name, flavor=flavor, + image=image, disk_config=disk_config, metadata=metadata, + personality=personality, networks=networks, + load_balancers=load_balancers) + mgr.update_launch_config.assert_called_once_with(sg, + server_name=server_name, flavor=flavor, image=image, + disk_config=disk_config, metadata=metadata, + personality=personality, networks=networks, + load_balancers=load_balancers) + + def test_clt_update_launch_metadata(self): + clt = fakes.FakeAutoScaleClient() + mgr = clt._manager + sg = self.scaling_group + mgr.update_launch_metadata = Mock() + metadata = utils.random_name() + clt.update_launch_metadata(sg, metadata) + mgr.update_launch_metadata.assert_called_once_with(sg, metadata) + + def test_clt_add_policy(self): + clt = fakes.FakeAutoScaleClient() + mgr = clt._manager + sg = self.scaling_group + name = utils.random_name() + policy_type = utils.random_name() + cooldown = utils.random_name() + change = utils.random_name() + is_percent = utils.random_name() + mgr.add_policy = Mock() + clt.add_policy(sg, name, policy_type, cooldown, change, + is_percent=is_percent) + mgr.add_policy.assert_called_once_with(sg, name, policy_type, cooldown, + change, is_percent=is_percent) + + def test_clt_list_policies(self): + clt = fakes.FakeAutoScaleClient() + mgr = clt._manager + sg = self.scaling_group + mgr.list_policies = Mock() + clt.list_policies(sg) + mgr.list_policies.assert_called_once_with(sg) + + def test_clt_get_policy(self): + clt = fakes.FakeAutoScaleClient() + mgr = clt._manager + sg = self.scaling_group + pol = utils.random_name() + mgr.get_policy = Mock() + clt.get_policy(sg, pol) + mgr.get_policy.assert_called_once_with(sg, pol) + + def test_clt_update_policy(self): + clt = fakes.FakeAutoScaleClient() + mgr = clt._manager + sg = self.scaling_group + pol = utils.random_name() + name = utils.random_name() + policy_type = utils.random_name() + cooldown = utils.random_name() + change = utils.random_name() + is_percent = utils.random_name() + mgr.update_policy = Mock() + clt.update_policy(sg, pol, name=name, policy_type=policy_type, + cooldown=cooldown, change=change, is_percent=is_percent) + mgr.update_policy.assert_called_once_with(scaling_group=sg, policy=pol, + name=name, policy_type=policy_type, cooldown=cooldown, + change=change, is_percent=is_percent) + + def test_clt_execute_policy(self): + clt = fakes.FakeAutoScaleClient() + mgr = clt._manager + sg = self.scaling_group + pol = utils.random_name() + mgr.execute_policy = Mock() + clt.execute_policy(sg, pol) + mgr.execute_policy.assert_called_once_with(scaling_group=sg, policy=pol) + + def test_clt_delete_policy(self): + clt = fakes.FakeAutoScaleClient() + mgr = clt._manager + sg = self.scaling_group + pol = utils.random_name() + mgr.delete_policy = Mock() + clt.delete_policy(sg, pol) + mgr.delete_policy.assert_called_once_with(scaling_group=sg, policy=pol) + + def test_clt_add_webhook(self): + clt = fakes.FakeAutoScaleClient() + mgr = clt._manager + sg = self.scaling_group + pol = utils.random_name() + name = utils.random_name() + metadata = utils.random_name() + mgr.add_webhook = Mock() + clt.add_webhook(sg, pol, name, metadata=metadata) + mgr.add_webhook.assert_called_once_with(sg, pol, name, metadata=metadata) + + def test_clt_list_webhooks(self): + clt = fakes.FakeAutoScaleClient() + mgr = clt._manager + sg = self.scaling_group + pol = utils.random_name() + mgr.list_webhooks = Mock() + clt.list_webhooks(sg, pol) + mgr.list_webhooks.assert_called_once_with(sg, pol) + + def test_clt_get_webhook(self): + clt = fakes.FakeAutoScaleClient() + mgr = clt._manager + sg = self.scaling_group + pol = utils.random_name() + hook = utils.random_name() + mgr.get_webhook = Mock() + clt.get_webhook(sg, pol, hook) + mgr.get_webhook.assert_called_once_with(sg, pol, hook) + + def test_clt_update_webhook(self): + clt = fakes.FakeAutoScaleClient() + mgr = clt._manager + sg = self.scaling_group + pol = utils.random_name() + hook = utils.random_name() + name = utils.random_name() + metadata = utils.random_name() + mgr.update_webhook = Mock() + clt.update_webhook(sg, pol, hook, name=name, metadata=metadata) + mgr.update_webhook.assert_called_once_with(scaling_group=sg, policy=pol, + webhook=hook, name=name, metadata=metadata) + + def test_clt_update_webhook_metadata(self): + clt = fakes.FakeAutoScaleClient() + mgr = clt._manager + sg = self.scaling_group + pol = utils.random_name() + hook = utils.random_name() + metadata = utils.random_name() + mgr.update_webhook_metadata = Mock() + clt.update_webhook_metadata(sg, pol, hook, metadata) + mgr.update_webhook_metadata.assert_called_once_with(sg, pol, hook, + metadata) + + def test_clt_delete_webhook(self): + clt = fakes.FakeAutoScaleClient() + mgr = clt._manager + sg = self.scaling_group + pol = utils.random_name() + hook = utils.random_name() + mgr.delete_webhook = Mock() + clt.delete_webhook(sg, pol, hook) + mgr.delete_webhook.assert_called_once_with(sg, pol, hook) + + def test_clt_resolve_lbs_dict(self): + clt = fakes.FakeAutoScaleClient() + key = utils.random_name() + val = utils.random_name() + lb_dict = {key: val} + ret = clt._resolve_lbs(lb_dict) + self.assertEqual(ret, [lb_dict]) + + def test_clt_resolve_lbs_clb(self): + clt = fakes.FakeAutoScaleClient() + clb = fakes.FakeLoadBalancer(None, {}) + ret = clt._resolve_lbs(clb) + expected = {"loadBalancerId": clb.id, + "port": clb.port} + self.assertEqual(ret, [expected]) + + def test_clt_resolve_lbs_id(self): + clt = fakes.FakeAutoScaleClient() + clb = fakes.FakeLoadBalancer(None, {}) + sav = pyrax.cloud_loadbalancers + + class PyrCLB(object): + def get(self, *args, **kwargs): + return clb + + pyrax.cloud_loadbalancers = PyrCLB() + ret = clt._resolve_lbs("fakeid") + expected = {"loadBalancerId": clb.id, + "port": clb.port} + self.assertEqual(ret, [expected]) + pyrax.cloud_loadbalancers = sav + + def test_clt_resolve_lbs_id_fail(self): + clt = fakes.FakeAutoScaleClient() + pyclb = pyrax.cloudloadbalancers + pyclb.get = Mock(side_effect=Exception()) + self.assertRaises(exc.InvalidLoadBalancer, clt._resolve_lbs, "bogus") + + def test_clt_create_body(self): + clt = fakes.FakeAutoScaleClient() + name = utils.random_name() + cooldown = utils.random_name() + min_entities = utils.random_name() + max_entities = utils.random_name() + launch_config_type = utils.random_name() + flavor = utils.random_name() + server_name = utils.random_name() + image = utils.random_name() + expected = { + "groupConfiguration": { + "cooldown": cooldown, + "maxEntities": max_entities, + "minEntities": min_entities, + "name": name}, + "launchConfiguration": { + "args": { + "loadBalancers": [], + "server": { + "OS-DCF:diskConfig": "AUTO", + "flavorRef": flavor, + "imageRef": image, + "metadata": {}, + "name": server_name, + "networks": [{"uuid": SERVICE_NET_ID}], + "personality": []} + }, + "type": launch_config_type}, + "scalingPolicies": []} + + self.maxDiff = 1000000 + ret = clt._create_body(name, cooldown, min_entities, max_entities, + launch_config_type, server_name, image, flavor, + disk_config=None, metadata=None, personality=None, + networks=None, load_balancers=None, scaling_policies=None) + self.assertEqual(ret, expected) + + + + +if __name__ == "__main__": + unittest.main() diff --git a/tests/unit/test_cloud_monitoring.py b/tests/unit/test_cloud_monitoring.py new file mode 100644 index 00000000..5c1c8435 --- /dev/null +++ b/tests/unit/test_cloud_monitoring.py @@ -0,0 +1,1481 @@ +#!/usr/bin/env python +# -*- coding: utf-8 -*- + +import datetime +import random +import unittest + +from mock import patch +from mock import MagicMock as Mock + +import pyrax.cloudnetworks +from pyrax.cloudmonitoring import CloudMonitorAlarm +from pyrax.cloudmonitoring import CloudMonitorCheck +from pyrax.cloudmonitoring import CloudMonitorCheckType +from pyrax.cloudmonitoring import CloudMonitorNotification +from pyrax.cloudmonitoring import CloudMonitorNotificationPlan +from pyrax.cloudmonitoring import CloudMonitorNotificationType +from pyrax.cloudmonitoring import CloudMonitorZone +from pyrax.cloudmonitoring import _params_to_dict + +import pyrax.exceptions as exc +import pyrax.utils as utils + +from tests.unit import fakes + + + +class CloudMonitoringTest(unittest.TestCase): + def __init__(self, *args, **kwargs): + super(CloudMonitoringTest, self).__init__(*args, **kwargs) + + def setUp(self): + self.client = fakes.FakeCloudMonitorClient() + self.entity = fakes.FakeCloudMonitorEntity() + + def tearDown(self): + self.client = None + + def test_params_to_dict(self): + val = utils.random_name() + local = {"foo": val, "bar": None, "baz": True} + params = ("foo", "bar") + expected = {"foo": val} + ret = _params_to_dict(params, {}, local) + self.assertEqual(ret, expected) + + def test_entity_update(self): + ent = self.entity + ent.manager.update_entity = Mock() + agent = utils.random_name() + metadata = {"fake": utils.random_name()} + ent.update(agent=agent, metadata=metadata) + ent.manager.update_entity.assert_called_once_with(ent, agent=agent, + metadata=metadata) + + def test_entity_list_checks(self): + ent = self.entity + ent.manager.list_checks = Mock() + ent.list_checks() + ent.manager.list_checks.assert_called_once_with(ent) + + def test_entity_delete_check(self): + ent = self.entity + ent.manager.delete_check = Mock() + check = utils.random_name() + ent.delete_check(check) + ent.manager.delete_check.assert_called_once_with(ent, check) + + def test_entity_list_metrics(self): + ent = self.entity + ent.manager.list_metrics = Mock() + check = utils.random_name() + ent.list_metrics(check) + ent.manager.list_metrics.assert_called_once_with(ent, check) + + def test_entity_get_metric_data_points(self): + ent = self.entity + ent.manager.get_metric_data_points = Mock() + check = utils.random_name() + metric = utils.random_name() + start = utils.random_name() + end = utils.random_name() + points = utils.random_name() + resolution = utils.random_name() + stats = utils.random_name() + ent.get_metric_data_points(check, metric, start, end, points=points, + resolution=resolution, stats=stats) + ent.manager.get_metric_data_points.assert_called_once_with(ent, check, + metric, start, end, points=points, resolution=resolution, + stats=stats) + + def test_entity_create_alarm(self): + ent = self.entity + ent.manager.create_alarm = Mock() + check = utils.random_name() + np = utils.random_name() + criteria = utils.random_name() + disabled = random.choice((True, False)) + label = utils.random_name() + name = utils.random_name() + metadata = utils.random_name() + ent.create_alarm(check, np, criteria=criteria, disabled=disabled, + label=label, name=name, metadata=metadata) + ent.manager.create_alarm.assert_called_once_with(ent, check, np, + criteria=criteria, disabled=disabled, label=label, name=name, + metadata=metadata) + + def test_entity_update_alarm(self): + ent = self.entity + ent.manager.update_alarm = Mock() + alarm = utils.random_name() + criteria = utils.random_name() + disabled = random.choice((True, False)) + label = utils.random_name() + name = utils.random_name() + metadata = utils.random_name() + ent.update_alarm(alarm, criteria=criteria, disabled=disabled, + label=label, name=name, metadata=metadata) + ent.manager.update_alarm.assert_called_once_with(ent, alarm, + criteria=criteria, disabled=disabled, label=label, name=name, + metadata=metadata) + + def test_entity_list_alarms(self): + ent = self.entity + ent.manager.list_alarms = Mock() + ent.list_alarms() + ent.manager.list_alarms.assert_called_once_with(ent) + + def test_entity_get_alarm(self): + ent = self.entity + ent.manager.get_alarm = Mock() + alarm = utils.random_name() + ent.get_alarm(alarm) + ent.manager.get_alarm.assert_called_once_with(ent, alarm) + + def test_entity_delete_alarm(self): + ent = self.entity + ent.manager.delete_alarm = Mock() + alarm = utils.random_name() + ent.delete_alarm(alarm) + ent.manager.delete_alarm.assert_called_once_with(ent, alarm) + + def test_entity_name(self): + ent = self.entity + ent.label = utils.random_name() + self.assertEqual(ent.label, ent.name) + + def test_notif_manager_create(self): + clt = self.client + mgr = clt._notification_manager + clt.method_post = Mock( + return_value=({"x-object-id": utils.random_name()}, None)) + mgr.get = Mock() + ntyp = utils.random_name() + label = utils.random_name() + name = utils.random_name() + details = utils.random_name() + exp_uri = "/%s" % mgr.uri_base + exp_body = {"label": label or name, "type": ntyp, "details": details} + mgr.create(ntyp, label=label, name=name, details=details) + clt.method_post.assert_called_once_with(exp_uri, body=exp_body) + + def test_notif_manager_test_notification_existing(self): + clt = self.client + mgr = clt._notification_manager + clt.method_post = Mock(return_value=(None, None)) + ntf = utils.random_name() + details = utils.random_name() + exp_uri = "/%s/%s/test" % (mgr.uri_base, ntf) + exp_body = None + mgr.test_notification(notification=ntf, details=details) + clt.method_post.assert_called_once_with(exp_uri, body=exp_body) + + def test_notif_manager_test_notification(self): + clt = self.client + mgr = clt._notification_manager + clt.method_post = Mock(return_value=(None, None)) + ntyp = utils.random_name() + details = utils.random_name() + exp_uri = "/test-notification" + exp_body = {"type": ntyp, "details": details} + mgr.test_notification(notification_type=ntyp, details=details) + clt.method_post.assert_called_once_with(exp_uri, body=exp_body) + + def test_notif_manager_update_notification(self): + clt = self.client + mgr = clt._notification_manager + clt.method_put = Mock(return_value=(None, None)) + ntf = fakes.FakeCloudMonitorNotification() + ntf.type = utils.random_name() + details = utils.random_name() + exp_uri = "/%s/%s" % (mgr.uri_base, ntf.id) + exp_body = {"type": ntf.type, "details": details} + mgr.update_notification(ntf, details) + clt.method_put.assert_called_once_with(exp_uri, body=exp_body) + + def test_notif_manager_update_notification_id(self): + clt = self.client + mgr = clt._notification_manager + clt.method_put = Mock(return_value=(None, None)) + ntf = fakes.FakeCloudMonitorNotification() + ntf.type = utils.random_name() + details = utils.random_name() + mgr.get = Mock(return_value=ntf) + exp_uri = "/%s/%s" % (mgr.uri_base, ntf.id) + exp_body = {"type": ntf.type, "details": details} + mgr.update_notification(ntf.id, details) + clt.method_put.assert_called_once_with(exp_uri, body=exp_body) + + def test_notif_manager_list_types(self): + clt = self.client + mgr = clt._notification_manager + id_ = utils.random_name() + ret_body = {"values": [{"id": id_}]} + clt.method_get = Mock(return_value=(None, ret_body)) + ret = mgr.list_types() + clt.method_get.assert_called_once_with("/notification_types") + self.assertEqual(len(ret), 1) + inst = ret[0] + self.assertTrue(isinstance(inst, CloudMonitorNotificationType)) + self.assertEqual(inst.id, id_) + + def test_notif_manager_get_type(self): + clt = self.client + mgr = clt._notification_manager + id_ = utils.random_name() + ret_body = {"id": id_} + clt.method_get = Mock(return_value=(None, ret_body)) + ret = mgr.get_type(id_) + exp_uri = "/notification_types/%s" % id_ + clt.method_get.assert_called_once_with(exp_uri) + self.assertTrue(isinstance(ret, CloudMonitorNotificationType)) + self.assertEqual(ret.id, id_) + + def test_notif_plan_manager_create(self): + clt = self.client + mgr = clt._notification_plan_manager + clt.method_post = Mock( + return_value=({"x-object-id": utils.random_name()}, None)) + mgr.get = Mock() + label = utils.random_name() + name = utils.random_name() + crit = utils.random_name() + # Make the OK an object rather than a straight ID. + ok = fakes.FakeEntity() + ok_id = ok.id = utils.random_name() + warn = utils.random_name() + exp_uri = "/%s" % mgr.uri_base + exp_body = {"label": label or name, "critical_state": [crit], + "ok_state": [ok.id], "warning_state": [warn]} + mgr.create(label=label, name=name, critical_state=crit, ok_state=ok, + warning_state=warn) + clt.method_post.assert_called_once_with(exp_uri, body=exp_body) + + def test_entity_mgr_update_entity(self): + ent = self.entity + clt = self.client + mgr = clt._entity_manager + clt.method_put = Mock(return_value=(None, None)) + agent = utils.random_name() + metadata = utils.random_name() + exp_uri = "/%s/%s" % (mgr.uri_base, ent.id) + exp_body = {"agent_id": agent, "metadata": metadata} + mgr.update_entity(ent, agent, metadata) + clt.method_put.assert_called_once_with(exp_uri, body=exp_body) + + def test_entity_mgr_list_checks(self): + ent = self.entity + clt = self.client + mgr = clt._entity_manager + id_ = utils.random_name() + ret_body = {"values": [{"id": id_}]} + clt.method_get = Mock(return_value=(None, ret_body)) + ret = mgr.list_checks(ent) + exp_uri = "/%s/%s/checks" % (mgr.uri_base, ent.id) + clt.method_get.assert_called_once_with(exp_uri) + self.assertEqual(len(ret), 1) + inst = ret[0] + self.assertTrue(isinstance(inst, CloudMonitorCheck)) + self.assertEqual(inst.id, id_) + + # The following tests need to mock CloudMonitorCheck, as we're mocking out + # the entity manager's method_post, which is what CloudMonitorCheck is + # created from. It's probably easier than making a more complicated + # method_post mock. + @patch("pyrax.cloudmonitoring.CloudMonitorCheck") + def test_entity_mgr_create_check_test_debug(self, cmc): + ent = self.entity + clt = self.client + mgr = clt._entity_manager + label = utils.random_name() + name = utils.random_name() + check_type = utils.random_name() + details = utils.random_name() + disabled = utils.random_name() + metadata = utils.random_name() + monitoring_zones_poll = utils.random_name() + timeout = utils.random_name() + period = utils.random_name() + target_alias = utils.random_name() + target_hostname = utils.random_name() + target_receiver = utils.random_name() + test_only = True + include_debug = True + fake_resp = {"x-object-id": {}, "status": "201"} + clt.method_post = Mock(return_value=(fake_resp, None)) + mgr.get_check = Mock() + mgr.get = Mock(return_value=fakes.FakeEntity) + exp_uri = "/%s/%s/test-check?debug=true" % (mgr.uri_base, ent.id) + exp_body = {"label": label or name, "details": details, + "disabled": disabled, "type": check_type, + "monitoring_zones_poll": [monitoring_zones_poll], "timeout": + timeout, "period": period, "target_alias": target_alias, + "target_hostname": target_hostname, "target_receiver": + target_receiver} + mgr.create_check(ent, label=label, name=name, check_type=check_type, + details=details, disabled=disabled, metadata=metadata, + monitoring_zones_poll=monitoring_zones_poll, timeout=timeout, + period=period, target_alias=target_alias, + target_hostname=target_hostname, + target_receiver=target_receiver, test_only=test_only, + include_debug=include_debug) + clt.method_post.assert_called_once_with(exp_uri, body=exp_body) + + @patch("pyrax.cloudmonitoring.CloudMonitorCheck") + def test_entity_mgr_create_check_test_no_debug(self, cmc): + ent = self.entity + clt = self.client + mgr = clt._entity_manager + label = utils.random_name() + name = utils.random_name() + check_type = utils.random_name() + details = utils.random_name() + disabled = utils.random_name() + metadata = utils.random_name() + monitoring_zones_poll = utils.random_name() + timeout = utils.random_name() + period = utils.random_name() + target_alias = utils.random_name() + target_hostname = utils.random_name() + target_receiver = utils.random_name() + test_only = True + include_debug = False + fake_resp = {"x-object-id": {}, "status": "201"} + clt.method_post = Mock(return_value=(fake_resp, None)) + mgr.get_check = Mock() + mgr.get = Mock(return_value=fakes.FakeEntity) + exp_uri = "/%s/%s/test-check" % (mgr.uri_base, ent.id) + exp_body = {"label": label or name, "details": details, + "disabled": disabled, "type": check_type, + "monitoring_zones_poll": [monitoring_zones_poll], "timeout": + timeout, "period": period, "target_alias": target_alias, + "target_hostname": target_hostname, "target_receiver": + target_receiver} + mgr.create_check(ent, label=label, name=name, check_type=check_type, + details=details, disabled=disabled, metadata=metadata, + monitoring_zones_poll=monitoring_zones_poll, timeout=timeout, + period=period, target_alias=target_alias, + target_hostname=target_hostname, + target_receiver=target_receiver, test_only=test_only, + include_debug=include_debug) + clt.method_post.assert_called_once_with(exp_uri, body=exp_body) + + @patch("pyrax.cloudmonitoring.CloudMonitorCheck") + def test_entity_mgr_create_check(self, cmc): + ent = self.entity + clt = self.client + mgr = clt._entity_manager + label = utils.random_name() + name = utils.random_name() + check_type = utils.random_name() + details = utils.random_name() + disabled = utils.random_name() + metadata = utils.random_name() + monitoring_zones_poll = utils.random_name() + timeout = utils.random_name() + period = utils.random_name() + target_alias = utils.random_name() + target_hostname = utils.random_name() + target_receiver = utils.random_name() + test_only = False + include_debug = False + fake_resp = {"x-object-id": {}, "status": "201"} + clt.method_post = Mock(return_value=(fake_resp, None)) + mgr.get_check = Mock() + mgr.get = Mock(return_value=fakes.FakeEntity) + exp_uri = "/%s/%s/checks" % (mgr.uri_base, ent.id) + exp_body = {"label": label or name, "details": details, + "disabled": disabled, "type": check_type, + "monitoring_zones_poll": [monitoring_zones_poll], "timeout": + timeout, "period": period, "target_alias": target_alias, + "target_hostname": target_hostname, "target_receiver": + target_receiver} + mgr.create_check(ent, label=label, name=name, check_type=check_type, + details=details, disabled=disabled, metadata=metadata, + monitoring_zones_poll=monitoring_zones_poll, timeout=timeout, + period=period, target_alias=target_alias, + target_hostname=target_hostname, + target_receiver=target_receiver, test_only=test_only, + include_debug=include_debug) + clt.method_post.assert_called_once_with(exp_uri, body=exp_body) + + def test_entity_mgr_create_check_no_details(self): + ent = self.entity + clt = self.client + mgr = clt._entity_manager + self.assertRaises(exc.MissingMonitoringCheckDetails, mgr.create_check, + ent) + + def test_entity_mgr_create_check_no_target(self): + ent = self.entity + clt = self.client + mgr = clt._entity_manager + self.assertRaises(exc.MonitoringCheckTargetNotSpecified, + mgr.create_check, ent, details="fake") + + def test_entity_mgr_create_check_no_mz_poll(self): + ent = self.entity + clt = self.client + mgr = clt._entity_manager + self.assertRaises(exc.MonitoringZonesPollMissing, mgr.create_check, + ent, details="fake", target_alias="fake", + check_type="remote.fake") + + def test_entity_mgr_create_check_invalid_details(self): + ent = self.entity + clt = self.client + mgr = clt._entity_manager + err = exc.BadRequest(400) + err.message = "Validation error for key 'fake'" + err.details = "Validation failed for 'fake'" + clt.method_post = Mock(side_effect=err) + self.assertRaises(exc.InvalidMonitoringCheckDetails, mgr.create_check, + ent, details="fake", target_alias="fake", + check_type="remote.fake", monitoring_zones_poll="fake") + + def test_entity_mgr_create_check_missing_details(self): + ent = self.entity + clt = self.client + mgr = clt._entity_manager + err = exc.BadRequest(400) + err.message = "Validation error for key 'something'" + err.details = "Validation failed for 'something'" + clt.method_post = Mock(side_effect=err) + self.assertRaises(exc.MissingMonitoringCheckDetails, mgr.create_check, + ent, details="fake", target_alias="fake", + check_type="remote.fake", monitoring_zones_poll="fake") + + def test_entity_mgr_create_check_failed_validation(self): + ent = self.entity + clt = self.client + mgr = clt._entity_manager + err = exc.BadRequest(400) + err.message = "Validation error" + err.details = "Some details" + clt.method_post = Mock(side_effect=err) + self.assertRaises(exc.InvalidMonitoringCheckDetails, mgr.create_check, + ent, details="fake", target_alias="fake", + check_type="remote.fake", monitoring_zones_poll="fake") + + def test_entity_mgr_find_all_checks(self): + ent = self.entity + clt = self.client + mgr = clt._entity_manager + c1 = fakes.FakeCloudMonitorCheck(entity=ent, info={"foo": "fake", + "bar": "fake"}) + c2 = fakes.FakeCloudMonitorCheck(entity=ent, info={"foo": "fake"}) + c3 = fakes.FakeCloudMonitorCheck(entity=ent, info={"foo": "fake", + "bar": "real"}) + mgr.list_checks = Mock(return_value=[c1, c2, c3]) + found = mgr.find_all_checks(ent, foo="fake", bar="fake") + self.assertEqual(len(found), 1) + self.assertTrue(c1 in found) + self.assertTrue(c2 not in found) + self.assertTrue(c3 not in found) + + def test_entity_mgr_update_check(self): + ent = self.entity + clt = self.client + mgr = clt._entity_manager + chk = fakes.FakeCloudMonitorCheck(entity=ent) + label = utils.random_name() + name = utils.random_name() + check_type = utils.random_name() + details = utils.random_name() + disabled = utils.random_name() + metadata = utils.random_name() + monitoring_zones_poll = utils.random_name() + timeout = utils.random_name() + period = utils.random_name() + target_alias = utils.random_name() + target_hostname = utils.random_name() + target_receiver = utils.random_name() + test_only = False + include_debug = False + clt.method_put = Mock(return_value=(None, None)) + exp_uri = "/%s/%s/checks/%s" % (mgr.uri_base, ent.id, chk.id) + exp_body = {"label": label or name, "metadata": metadata, "disabled": + disabled, "monitoring_zones_poll": [monitoring_zones_poll], + "timeout": timeout, "period": period, "target_alias": target_alias, + "target_hostname": target_hostname, "target_receiver": + target_receiver} + mgr.update_check(chk, label=label, name=name, disabled=disabled, + metadata=metadata, monitoring_zones_poll=monitoring_zones_poll, + timeout=timeout, period=period, target_alias=target_alias, + target_hostname=target_hostname, + target_receiver=target_receiver) + clt.method_put.assert_called_once_with(exp_uri, body=exp_body) + + def test_entity_mgr_update_check_failed_validation(self): + ent = self.entity + clt = self.client + mgr = clt._entity_manager + id_ = utils.random_name() + chk = fakes.FakeCloudMonitorCheck(info={"id": id_}, entity=ent) + err = exc.BadRequest(400) + err.message = "Validation error" + err.details = "Some details" + clt.method_put = Mock(side_effect=err) + self.assertRaises(exc.InvalidMonitoringCheckUpdate, mgr.update_check, + chk, target_alias="fake", monitoring_zones_poll="fake") + + def test_entity_mgr_update_check_failed_validation_other(self): + ent = self.entity + clt = self.client + mgr = clt._entity_manager + id_ = utils.random_name() + chk = fakes.FakeCloudMonitorCheck(info={"id": id_}, entity=ent) + err = exc.BadRequest(400) + err.message = "Another error" + err.details = "Some details" + clt.method_put = Mock(side_effect=err) + self.assertRaises(exc.BadRequest, mgr.update_check, chk, + target_alias="fake", monitoring_zones_poll="fake") + + def test_entity_mgr_get_check(self): + ent = self.entity + clt = self.client + mgr = clt._entity_manager + id_ = utils.random_name() + ret_body = {"id": id_} + clt.method_get = Mock(return_value=(None, ret_body)) + ret = mgr.get_check(ent, id_) + exp_uri = "/%s/%s/checks/%s" % (mgr.uri_base, ent.id, id_) + clt.method_get.assert_called_once_with(exp_uri) + self.assertTrue(isinstance(ret, CloudMonitorCheck)) + self.assertEqual(ret.id, id_) + + def test_entity_mgr_delete_check(self): + ent = self.entity + clt = self.client + mgr = clt._entity_manager + id_ = utils.random_name() + clt.method_delete = Mock(return_value=(None, None)) + ret = mgr.delete_check(ent, id_) + exp_uri = "/%s/%s/checks/%s" % (mgr.uri_base, ent.id, id_) + clt.method_delete.assert_called_once_with(exp_uri) + + def test_entity_mgr_list_metrics(self): + ent = self.entity + clt = self.client + mgr = clt._entity_manager + id_ = utils.random_name() + met1 = utils.random_name() + met2 = utils.random_name() + ret_body = {"values": [{"name": met1}, {"name": met2}]} + clt.method_get = Mock(return_value=(None, ret_body)) + ret = mgr.list_metrics(ent, id_) + exp_uri = "/%s/%s/checks/%s/metrics" % (mgr.uri_base, ent.id, id_) + clt.method_get.assert_called_once_with(exp_uri) + self.assertEqual(len(ret), 2) + self.assertTrue(met1 in ret) + self.assertTrue(met2 in ret) + + def test_entity_mgr_get_metric_data_points_no_granularity(self): + ent = self.entity + clt = self.client + mgr = clt._entity_manager + self.assertRaises(exc.MissingMonitoringCheckGranularity, + mgr.get_metric_data_points, None, None, None, None, None) + + def test_entity_mgr_get_metric_data_points_invalid_resolution(self): + ent = self.entity + clt = self.client + mgr = clt._entity_manager + self.assertRaises(exc.InvalidMonitoringMetricsResolution, + mgr.get_metric_data_points, None, None, None, None, None, + resolution="INVALID") + + def test_entity_mgr_get_metric_data_points(self): + ent = self.entity + clt = self.client + mgr = clt._entity_manager + chk_id = utils.random_name() + metric = utils.random_name() + points = utils.random_name() + resolution = "FULL" + end = datetime.datetime.now() + start = end - datetime.timedelta(days=7) + start_stamp = int(utils.to_timestamp(start)) + end_stamp = int(utils.to_timestamp(end)) + stats = ["foo", "bar"] + exp_qp = "from=%s&to=%s&points=%s&resolution=%s&select=%s&select=%s" % ( + start_stamp, end_stamp, points, resolution, stats[0], stats[1]) + exp_uri = "/%s/%s/checks/%s/metrics/%s/plot?%s" % (mgr.uri_base, ent.id, + chk_id, metric, exp_qp) + vals = utils.random_name() + ret_body = {"values": vals} + clt.method_get = Mock(return_value=(None, ret_body)) + ret = mgr.get_metric_data_points(ent, chk_id, metric, start, end, + points=points, resolution=resolution, stats=stats) + clt.method_get.assert_called_once_with(exp_uri) + self.assertEqual(ret, vals) + + def test_entity_mgr_get_metric_data_points_invalid_request(self): + ent = self.entity + clt = self.client + mgr = clt._entity_manager + chk_id = utils.random_name() + metric = utils.random_name() + points = utils.random_name() + resolution = "FULL" + end = datetime.datetime.now() + start = end - datetime.timedelta(days=7) + stats = ["foo", "bar"] + err = exc.BadRequest(400) + err.message = "Validation error: foo" + clt.method_get = Mock(side_effect=err) + self.assertRaises(exc.InvalidMonitoringMetricsRequest, + mgr.get_metric_data_points, ent, chk_id, metric, start, end, + points=points, resolution=resolution, stats=stats) + + def test_entity_mgr_get_metric_data_points_invalid_request_other(self): + ent = self.entity + clt = self.client + mgr = clt._entity_manager + chk_id = utils.random_name() + metric = utils.random_name() + points = utils.random_name() + resolution = "FULL" + end = datetime.datetime.now() + start = end - datetime.timedelta(days=7) + stats = ["foo", "bar"] + err = exc.BadRequest(400) + err.message = "Some other error: foo" + clt.method_get = Mock(side_effect=err) + self.assertRaises(exc.BadRequest, mgr.get_metric_data_points, ent, + chk_id, metric, start, end, points=points, + resolution=resolution, stats=stats) + + def test_entity_mgr_create_alarm(self): + ent = self.entity + clt = self.client + mgr = clt._entity_manager + check = utils.random_name() + np = utils.random_name() + criteria = utils.random_name() + disabled = random.choice((True, False)) + label = utils.random_name() + name = utils.random_name() + metadata = utils.random_name() + obj_id = utils.random_name() + resp = ({"status": "201", "x-object-id": {}}, None) + clt.method_post = Mock(return_value=resp) + mgr.get_alarm = Mock() + exp_uri = "/%s/%s/alarms" % (mgr.uri_base, ent.id) + exp_body = {"check_id": check, "notification_plan_id": np, "criteria": + criteria, "disabled": disabled, "label": label, + "metadata": metadata} + mgr.create_alarm(ent, check, np, criteria=criteria, disabled=disabled, + label=label, name=name, metadata=metadata) + clt.method_post.assert_called_once_with(exp_uri, body=exp_body) + + def test_entity_mgr_update_alarm(self): + ent = self.entity + clt = self.client + mgr = clt._entity_manager + clt.method_put = Mock(return_value=(None, None)) + alarm = utils.random_name() + criteria = utils.random_name() + disabled = random.choice((True, False)) + label = utils.random_name() + name = utils.random_name() + metadata = utils.random_name() + exp_uri = "/%s/%s/alarms/%s" % (mgr.uri_base, ent.id, alarm) + exp_body = {"criteria": criteria, "disabled": disabled, "label": label, + "metadata": metadata} + mgr.update_alarm(ent, alarm, criteria=criteria, disabled=disabled, + label=label, name=name, metadata=metadata) + clt.method_put.assert_called_once_with(exp_uri, body=exp_body) + + def test_entity_mgr_list_alarms(self): + ent = self.entity + clt = self.client + mgr = clt._entity_manager + id_ = utils.random_name() + ret_body = {"values": [{"id": id_}]} + clt.method_get = Mock(return_value=(None, ret_body)) + exp_uri = "/%s/%s/alarms" % (mgr.uri_base, ent.id) + ret = mgr.list_alarms(ent) + clt.method_get.assert_called_once_with(exp_uri) + self.assertEqual(len(ret), 1) + self.assertTrue(isinstance(ret[0], CloudMonitorAlarm)) + self.assertEqual(ret[0].id, id_) + + def test_entity_mgr_get_alarm(self): + ent = self.entity + clt = self.client + mgr = clt._entity_manager + id_ = utils.random_name() + ret_body = {"id": id_} + clt.method_get = Mock(return_value=(None, ret_body)) + ret = mgr.get_alarm(ent, id_) + exp_uri = "/%s/%s/alarms/%s" % (mgr.uri_base, ent.id, id_) + clt.method_get.assert_called_once_with(exp_uri) + self.assertTrue(isinstance(ret, CloudMonitorAlarm)) + self.assertEqual(ret.id, id_) + + def test_entity_mgr_delete_alarm(self): + ent = self.entity + clt = self.client + mgr = clt._entity_manager + id_ = utils.random_name() + clt.method_delete = Mock(return_value=(None, None)) + ret = mgr.delete_alarm(ent, id_) + exp_uri = "/%s/%s/alarms/%s" % (mgr.uri_base, ent.id, id_) + clt.method_delete.assert_called_once_with(exp_uri) + + def test_check(self): + ent = self.entity + clt = self.client + mgr = clt._entity_manager + mgr.get = Mock(return_value=ent) + id_ = utils.random_name() + chk = CloudMonitorCheck(mgr, info={"id": id_}, entity="fake") + self.assertEqual(chk.manager, mgr) + self.assertEqual(chk.id, id_) + self.assertEqual(chk.entity, ent) + + def test_check_name(self): + ent = self.entity + clt = self.client + mgr = clt._entity_manager + id_ = utils.random_name() + chk = CloudMonitorCheck(mgr, info={"id": id_}, entity=ent) + nm = utils.random_name() + chk.label = nm + self.assertEqual(chk.name, nm) + + def test_check_get_reload(self): + ent = self.entity + clt = self.client + mgr = clt._entity_manager + id_ = utils.random_name() + chk = CloudMonitorCheck(mgr, info={"id": id_}, entity=ent) + info = chk._info + mgr.get_check = Mock(return_value=chk) + chk.reload() + self.assertEqual(chk._info, info) + + def test_check_update(self): + ent = self.entity + clt = self.client + mgr = clt._entity_manager + id_ = utils.random_name() + chk = CloudMonitorCheck(mgr, info={"id": id_}, entity=ent) + mgr.update_check = Mock() + label = utils.random_name() + name = utils.random_name() + check_type = utils.random_name() + disabled = utils.random_name() + metadata = utils.random_name() + monitoring_zones_poll = utils.random_name() + timeout = utils.random_name() + period = utils.random_name() + target_alias = utils.random_name() + target_hostname = utils.random_name() + target_receiver = utils.random_name() + chk.update(label=label, name=name, disabled=disabled, + metadata=metadata, monitoring_zones_poll=monitoring_zones_poll, + timeout=timeout, period=period, target_alias=target_alias, + target_hostname=target_hostname, + target_receiver=target_receiver) + mgr.update_check.assert_called_once_with(chk, label=label, name=name, + disabled=disabled, metadata=metadata, + monitoring_zones_poll=monitoring_zones_poll, timeout=timeout, + period=period, target_alias=target_alias, + target_hostname=target_hostname, + target_receiver=target_receiver) + + def test_check_delete(self): + ent = self.entity + clt = self.client + mgr = clt._entity_manager + id_ = utils.random_name() + chk = CloudMonitorCheck(mgr, info={"id": id_}, entity=ent) + mgr.delete_check = Mock() + chk.delete() + mgr.delete_check.assert_called_once_with(ent, chk) + + def test_check_list_metrics(self): + ent = self.entity + clt = self.client + mgr = clt._entity_manager + id_ = utils.random_name() + chk = CloudMonitorCheck(mgr, info={"id": id_}, entity=ent) + mgr.list_metrics = Mock() + chk.list_metrics() + mgr.list_metrics.assert_called_once_with(ent, chk) + + def test_check_get_metric_data_points(self): + ent = self.entity + clt = self.client + mgr = clt._entity_manager + id_ = utils.random_name() + chk = CloudMonitorCheck(mgr, info={"id": id_}, entity=ent) + mgr.get_metric_data_points = Mock() + metric = utils.random_name() + start = utils.random_name() + end = utils.random_name() + points = utils.random_name() + resolution = utils.random_name() + stats = utils.random_name() + chk.get_metric_data_points(metric, start, end, points=points, + resolution=resolution, stats=stats) + mgr.get_metric_data_points.assert_called_once_with(ent, chk, metric, + start, end, points=points, resolution=resolution, stats=stats) + + def test_check_create_alarm(self): + ent = self.entity + clt = self.client + mgr = clt._entity_manager + id_ = utils.random_name() + chk = CloudMonitorCheck(mgr, info={"id": id_}, entity=ent) + mgr.create_alarm = Mock() + notification_plan = utils.random_name() + criteria = utils.random_name() + disabled = utils.random_name() + label = utils.random_name() + name = utils.random_name() + metadata = utils.random_name() + chk.create_alarm(notification_plan, criteria=criteria, + disabled=disabled, label=label, name=name, metadata=metadata) + mgr.create_alarm.assert_called_once_with(ent, chk, notification_plan, + criteria=criteria, disabled=disabled, label=label, name=name, + metadata=metadata) + + def test_checktype_field_names(self): + ent = self.entity + clt = self.client + mgr = clt._entity_manager + id_ = utils.random_name() + flds = [{"optional": True, "name": "fake_opt", + "description": "Optional Field"}, + {"optional": False, "name": "fake_req", + "description": "Required Field"}] + ctyp = CloudMonitorCheckType(mgr, info={"id": id_, "fields": flds}) + self.assertEqual(ctyp.field_names, ["fake_opt", "fake_req"]) + self.assertEqual(ctyp.required_field_names, ["fake_req"]) + self.assertEqual(ctyp.optional_field_names, ["fake_opt"]) + + def test_zone_name(self): + ent = self.entity + clt = self.client + mgr = clt._entity_manager + id_ = utils.random_name() + nm = utils.random_name() + cmz = CloudMonitorZone(mgr, info={"id": id_, "label": nm}) + self.assertEqual(cmz.label, nm) + self.assertEqual(cmz.name, nm) + + def test_notification_name(self): + ent = self.entity + clt = self.client + mgr = clt._entity_manager + id_ = utils.random_name() + nm = utils.random_name() + cnot = CloudMonitorNotification(mgr, info={"id": id_, "label": nm}) + self.assertEqual(cnot.label, nm) + self.assertEqual(cnot.name, nm) + + def test_notification_update(self): + ent = self.entity + clt = self.client + mgr = clt._entity_manager + id_ = utils.random_name() + nm = utils.random_name() + details = utils.random_name() + cnot = CloudMonitorNotification(mgr, info={"id": id_, "label": nm}) + mgr.update_notification = Mock() + cnot.update(details) + mgr.update_notification.assert_called_once_with(cnot, details) + + def test_notification_type_name(self): + ent = self.entity + clt = self.client + mgr = clt._entity_manager + id_ = utils.random_name() + nm = utils.random_name() + cntyp = CloudMonitorNotificationType(mgr, info={"id": id_, "label": nm}) + self.assertEqual(cntyp.label, nm) + self.assertEqual(cntyp.name, nm) + + def test_notification_plan_name(self): + ent = self.entity + clt = self.client + mgr = clt._entity_manager + id_ = utils.random_name() + nm = utils.random_name() + cpln = CloudMonitorNotificationPlan(mgr, info={"id": id_, "label": nm}) + self.assertEqual(cpln.label, nm) + self.assertEqual(cpln.name, nm) + + def test_alarm(self): + ent = self.entity + clt = self.client + mgr = clt._entity_manager + id_ = utils.random_name() + nm = utils.random_name() + mgr.get = Mock(return_value=ent) + alm = CloudMonitorAlarm(mgr, info={"id": id_, "label": nm}, + entity="fake") + self.assertEqual(alm.entity, ent) + + def test_alarm_name(self): + ent = self.entity + clt = self.client + mgr = clt._entity_manager + id_ = utils.random_name() + nm = utils.random_name() + alm = CloudMonitorAlarm(mgr, info={"id": id_, "label": nm}, + entity=ent) + self.assertEqual(alm.label, nm) + self.assertEqual(alm.name, nm) + + def test_alarm_update(self): + ent = self.entity + clt = self.client + mgr = clt._entity_manager + id_ = utils.random_name() + nm = utils.random_name() + alm = CloudMonitorAlarm(mgr, info={"id": id_, "label": nm}, + entity=ent) + criteria = utils.random_name() + disabled = utils.random_name() + label = utils.random_name() + name = utils.random_name() + metadata = utils.random_name() + ent.update_alarm = Mock() + alm.update(criteria=criteria, disabled=disabled, label=label, + name=name, metadata=metadata) + ent.update_alarm.assert_called_once_with(alm, criteria=criteria, + disabled=disabled, label=label, name=name, metadata=metadata) + + def test_alarm_get_reload(self): + ent = self.entity + clt = self.client + mgr = clt._entity_manager + id_ = utils.random_name() + nm = utils.random_name() + alm = CloudMonitorAlarm(mgr, info={"id": id_, "label": nm}, + entity=ent) + info = alm._info + ent.get_alarm = Mock(return_value=alm) + alm.reload() + self.assertEqual(alm._info, info) + + def test_clt_get_account(self): + clt = self.client + rsp = utils.random_name() + rb = utils.random_name() + clt.method_get = Mock(return_value=((rsp, rb))) + ret = clt.get_account() + clt.method_get.assert_called_once_with("/account") + self.assertEqual(ret, rb) + + def test_clt_get_limits(self): + clt = self.client + rsp = utils.random_name() + rb = utils.random_name() + clt.method_get = Mock(return_value=((rsp, rb))) + ret = clt.get_limits() + clt.method_get.assert_called_once_with("/limits") + self.assertEqual(ret, rb) + + def test_clt_get_audits(self): + clt = self.client + rsp = utils.random_name() + rb = utils.random_name() + clt.method_get = Mock(return_value=((rsp, {"values": rb}))) + ret = clt.get_audits() + clt.method_get.assert_called_once_with("/audits") + self.assertEqual(ret, rb) + + def test_clt_list_entities(self): + clt = self.client + ents = utils.random_name() + clt._entity_manager.list = Mock(return_value=ents) + ret = clt.list_entities() + clt._entity_manager.list.assert_called_once_with() + self.assertEqual(ret, ents) + + def test_clt_get_entity(self): + clt = self.client + ent = self.entity + clt._entity_manager.get = Mock(return_value=ent) + ret = clt.get_entity(ent) + clt._entity_manager.get.assert_called_once_with(ent) + self.assertEqual(ret, ent) + + def test_clt_create_entity(self): + clt = self.client + ent = self.entity + mgr = clt._entity_manager + obj_id = utils.random_name() + resp = {"status": "201", "x-object-id": obj_id} + mgr.create = Mock(return_value=resp) + clt.get_entity = Mock(return_value=ent) + label = utils.random_name() + name = utils.random_name() + agent = utils.random_name() + ip_addresses = utils.random_name() + metadata = utils.random_name() + ret = clt.create_entity(label=label, name=name, agent=agent, + ip_addresses=ip_addresses, metadata=metadata) + mgr.create.assert_called_once_with(label=label, name=name, agent=agent, + ip_addresses=ip_addresses, metadata=metadata, + return_response=True) + clt.get_entity.assert_called_once_with(obj_id) + self.assertEqual(ret, ent) + + def test_clt_update_entity(self): + clt = self.client + ent = self.entity + mgr = clt._entity_manager + obj_id = utils.random_name() + mgr.update_entity = Mock() + agent = utils.random_name() + metadata = utils.random_name() + clt.update_entity(ent, agent=agent, metadata=metadata) + mgr.update_entity.assert_called_once_with(ent, agent=agent, + metadata=metadata) + + def test_clt_delete_entity(self): + clt = self.client + ent = self.entity + mgr = clt._entity_manager + mgr.delete = Mock() + clt.delete_entity(ent) + mgr.delete.assert_called_once_with(ent) + + def test_clt_list_check_types(self): + clt = self.client + ent = self.entity + mgr = clt._check_type_manager + cts = utils.random_name() + mgr.list = Mock(return_value=cts) + ret = clt.list_check_types() + mgr.list.assert_called_once_with() + self.assertEqual(ret, cts) + + def test_clt_get_check_type(self): + clt = self.client + ent = self.entity + mgr = clt._check_type_manager + ct = utils.random_name() + mgr.get = Mock(return_value=ct) + ret = clt.get_check_type("fake") + mgr.get.assert_called_once_with("fake") + self.assertEqual(ret, ct) + + def test_clt_list_checks(self): + clt = self.client + ent = self.entity + mgr = clt._entity_manager + chks = utils.random_name() + mgr.list_checks = Mock(return_value=chks) + ret = clt.list_checks(ent) + mgr.list_checks.assert_called_once_with(ent) + self.assertEqual(ret, chks) + + def test_clt_create_check(self): + clt = self.client + ent = self.entity + mgr = clt._entity_manager + label = utils.random_name() + name = utils.random_name() + check_type = utils.random_name() + disabled = utils.random_name() + metadata = utils.random_name() + details = utils.random_name() + monitoring_zones_poll = utils.random_name() + timeout = utils.random_name() + period = utils.random_name() + target_alias = utils.random_name() + target_hostname = utils.random_name() + target_receiver = utils.random_name() + rand_bool = random.choice((True, False)) + answer = utils.random_name() + mgr.create_check = Mock(return_value=answer) + ret = clt.create_check(ent, label=label, name=name, + check_type=check_type, disabled=disabled, metadata=metadata, + details=details, monitoring_zones_poll=monitoring_zones_poll, + timeout=timeout, period=period, target_alias=target_alias, + target_hostname=target_hostname, + target_receiver=target_receiver, test_only=rand_bool, + include_debug=rand_bool) + mgr.create_check.assert_called_once_with(ent, label=label, name=name, + check_type=check_type, disabled=disabled, metadata=metadata, + details=details, monitoring_zones_poll=monitoring_zones_poll, + timeout=timeout, period=period, target_alias=target_alias, + target_hostname=target_hostname, + target_receiver=target_receiver, test_only=rand_bool, + include_debug=rand_bool) + self.assertEqual(ret, answer) + + def test_clt_get_check(self): + clt = self.client + ent = self.entity + mgr = clt._entity_manager + answer = utils.random_name() + chk = utils.random_name() + mgr.get_check = Mock(return_value=answer) + ret = clt.get_check(ent, chk) + mgr.get_check.assert_called_once_with(ent, chk) + self.assertEqual(ret, answer) + + def test_clt_find_all_checks(self): + clt = self.client + ent = self.entity + mgr = clt._entity_manager + answer = utils.random_name() + mgr.find_all_checks = Mock(return_value=answer) + ret = clt.find_all_checks(ent, foo="fake", bar="fake") + mgr.find_all_checks.assert_called_once_with(ent, foo="fake", bar="fake") + self.assertEqual(ret, answer) + + def test_clt_update_check(self): + clt = self.client + ent = self.entity + mgr = clt._entity_manager + chk = utils.random_name() + label = utils.random_name() + name = utils.random_name() + disabled = utils.random_name() + metadata = utils.random_name() + monitoring_zones_poll = utils.random_name() + timeout = utils.random_name() + period = utils.random_name() + target_alias = utils.random_name() + target_hostname = utils.random_name() + target_receiver = utils.random_name() + mgr.update_check = Mock() + clt.update_check(ent, chk, label=label, name=name, disabled=disabled, + metadata=metadata, monitoring_zones_poll=monitoring_zones_poll, + timeout=timeout, period=period, target_alias=target_alias, + target_hostname=target_hostname, + target_receiver=target_receiver) + mgr.update_check.assert_called_once_with(ent, chk, label=label, + name=name, disabled=disabled, metadata=metadata, + monitoring_zones_poll=monitoring_zones_poll, timeout=timeout, + period=period, target_alias=target_alias, + target_hostname=target_hostname, + target_receiver=target_receiver) + + def test_clt_delete_check(self): + clt = self.client + ent = self.entity + mgr = clt._entity_manager + chk = utils.random_name() + mgr.delete_check = Mock() + clt.delete_check(ent, chk) + mgr.delete_check.assert_called_once_with(ent, chk) + + def test_clt_list_metrics(self): + clt = self.client + ent = self.entity + mgr = clt._entity_manager + chk = utils.random_name() + answer = utils.random_name() + mgr.list_metrics = Mock(return_value=answer) + ret = clt.list_metrics(ent, chk) + mgr.list_metrics.assert_called_once_with(ent, chk) + self.assertEqual(ret, answer) + + def test_clt_get_metric_data_points(self): + clt = self.client + ent = self.entity + mgr = clt._entity_manager + chk = utils.random_name() + answer = utils.random_name() + mgr.get_metric_data_points = Mock(return_value=answer) + metric = utils.random_name() + start = utils.random_name() + end = utils.random_name() + points = utils.random_name() + resolution = utils.random_name() + stats = utils.random_name() + ret = clt.get_metric_data_points(ent, chk, metric, start, end, + points=points, resolution=resolution, stats=stats) + mgr.get_metric_data_points.assert_called_once_with(ent, chk, metric, + start, end, points=points, resolution=resolution, stats=stats) + self.assertEqual(ret, answer) + + def test_clt_list_notifications(self): + clt = self.client + ent = self.entity + mgr = clt._notification_manager + answer = utils.random_name() + mgr.list = Mock(return_value=answer) + ret = clt.list_notifications() + mgr.list.assert_called_once_with() + self.assertEqual(ret, answer) + + def test_clt_get_notification(self): + clt = self.client + ent = self.entity + mgr = clt._notification_manager + answer = utils.random_name() + notif_id = utils.random_name() + mgr.get = Mock(return_value=answer) + ret = clt.get_notification(notif_id) + mgr.get.assert_called_once_with(notif_id) + self.assertEqual(ret, answer) + + def test_clt_test_notification(self): + clt = self.client + ent = self.entity + mgr = clt._notification_manager + answer = utils.random_name() + mgr.test_notification = Mock(return_value=answer) + notification = utils.random_name() + ntyp = utils.random_name() + details = utils.random_name() + ret = clt.test_notification(notification=notification, + notification_type=ntyp, details=details) + mgr.test_notification.assert_called_once_with(notification=notification, + notification_type=ntyp, details=details) + self.assertEqual(ret, answer) + + def test_clt_create_notification(self): + clt = self.client + ent = self.entity + mgr = clt._notification_manager + answer = utils.random_name() + mgr.create = Mock(return_value=answer) + ntyp = utils.random_name() + label = utils.random_name() + name = utils.random_name() + details = utils.random_name() + ret = clt.create_notification(ntyp, label=label, name=name, + details=details) + mgr.create.assert_called_once_with(ntyp, label=label, name=name, + details=details) + self.assertEqual(ret, answer) + + def test_clt_update_notification(self): + clt = self.client + ent = self.entity + mgr = clt._notification_manager + answer = utils.random_name() + mgr.update_notification = Mock(return_value=answer) + notification = utils.random_name() + details = utils.random_name() + ret = clt.update_notification(notification, details) + mgr.update_notification.assert_called_once_with(notification, details) + self.assertEqual(ret, answer) + + def test_clt_delete_notification(self): + clt = self.client + ent = self.entity + mgr = clt._notification_manager + answer = utils.random_name() + mgr.delete = Mock(return_value=answer) + notification = utils.random_name() + ret = clt.delete_notification(notification) + mgr.delete.assert_called_once_with(notification) + self.assertEqual(ret, answer) + + def test_clt_create_notification_plan(self): + clt = self.client + ent = self.entity + mgr = clt._notification_plan_manager + answer = utils.random_name() + mgr.create = Mock(return_value=answer) + label = utils.random_name() + name = utils.random_name() + critical_state = utils.random_name() + ok_state = utils.random_name() + warning_state = utils.random_name() + ret = clt.create_notification_plan(label=label, name=name, + critical_state=critical_state, ok_state=ok_state, + warning_state=warning_state) + mgr.create.assert_called_once_with(label=label, name=name, + critical_state=critical_state, ok_state=ok_state, + warning_state=warning_state) + self.assertEqual(ret, answer) + + def test_clt_list_notification_plans(self): + clt = self.client + ent = self.entity + mgr = clt._notification_plan_manager + answer = utils.random_name() + mgr.list = Mock(return_value=answer) + ret = clt.list_notification_plans() + mgr.list.assert_called_once_with() + self.assertEqual(ret, answer) + + def test_clt_get_notification_plan(self): + clt = self.client + ent = self.entity + mgr = clt._notification_plan_manager + answer = utils.random_name() + nplan_id = utils.random_name() + mgr.get = Mock(return_value=answer) + ret = clt.get_notification_plan(nplan_id) + mgr.get.assert_called_once_with(nplan_id) + self.assertEqual(ret, answer) + + def test_clt_delete_notification_plan(self): + clt = self.client + ent = self.entity + mgr = clt._notification_plan_manager + answer = utils.random_name() + mgr.delete = Mock(return_value=answer) + notification_plan = utils.random_name() + ret = clt.delete_notification_plan(notification_plan) + mgr.delete.assert_called_once_with(notification_plan) + self.assertEqual(ret, answer) + + def test_clt_list_alarms(self): + clt = self.client + ent = self.entity + mgr = clt._entity_manager + alms = utils.random_name() + mgr.list_alarms = Mock(return_value=alms) + ret = clt.list_alarms(ent) + mgr.list_alarms.assert_called_once_with(ent) + self.assertEqual(ret, alms) + + def test_clt_get_alarm(self): + clt = self.client + ent = self.entity + mgr = clt._entity_manager + answer = utils.random_name() + alm = utils.random_name() + mgr.get_alarm = Mock(return_value=answer) + ret = clt.get_alarm(ent, alm) + mgr.get_alarm.assert_called_once_with(ent, alm) + self.assertEqual(ret, answer) + + def test_clt_create_alarm(self): + clt = self.client + ent = self.entity + mgr = clt._entity_manager + chk = utils.random_name() + nplan = utils.random_name() + criteria = utils.random_name() + disabled = utils.random_name() + label = utils.random_name() + name = utils.random_name() + metadata = utils.random_name() + answer = utils.random_name() + mgr.create_alarm = Mock(return_value=answer) + ret = clt.create_alarm(ent, chk, nplan, criteria=criteria, + disabled=disabled, label=label, name=name, metadata=metadata) + mgr.create_alarm.assert_called_once_with(ent, chk, nplan, + criteria=criteria, disabled=disabled, label=label, name=name, + metadata=metadata) + self.assertEqual(ret, answer) + + def test_clt_update_alarm(self): + clt = self.client + ent = self.entity + mgr = clt._entity_manager + alm = utils.random_name() + criteria = utils.random_name() + disabled = utils.random_name() + label = utils.random_name() + name = utils.random_name() + metadata = utils.random_name() + answer = utils.random_name() + mgr.update_alarm = Mock(return_value=answer) + ret = clt.update_alarm(ent, alm, criteria=criteria, disabled=disabled, + label=label, name=name, metadata=metadata) + mgr.update_alarm.assert_called_once_with(ent, alm, criteria=criteria, + disabled=disabled, label=label, name=name, metadata=metadata) + self.assertEqual(ret, answer) + + def test_clt_delete_alarm(self): + clt = self.client + ent = self.entity + mgr = clt._entity_manager + alm = utils.random_name() + mgr.delete_alarm = Mock() + clt.delete_alarm(ent, alm) + mgr.delete_alarm.assert_called_once_with(ent, alm) + + def test_clt_list_notification_types(self): + clt = self.client + ent = self.entity + mgr = clt._notification_manager + typs = utils.random_name() + mgr.list_types = Mock(return_value=typs) + ret = clt.list_notification_types() + mgr.list_types.assert_called_once_with() + self.assertEqual(ret, typs) + + def test_clt_get_notification_type(self): + clt = self.client + ent = self.entity + mgr = clt._notification_manager + answer = utils.random_name() + nt_id = utils.random_name() + mgr.get_type = Mock(return_value=answer) + ret = clt.get_notification_type(nt_id) + mgr.get_type.assert_called_once_with(nt_id) + self.assertEqual(ret, answer) + + def test_clt_list_monitoring_zones(self): + clt = self.client + ent = self.entity + mgr = clt._monitoring_zone_manager + typs = utils.random_name() + mgr.list = Mock(return_value=typs) + ret = clt.list_monitoring_zones() + mgr.list.assert_called_once_with() + self.assertEqual(ret, typs) + + def test_clt_get_monitoring_zone(self): + clt = self.client + ent = self.entity + mgr = clt._monitoring_zone_manager + answer = utils.random_name() + mz_id = utils.random_name() + mgr.get = Mock(return_value=answer) + ret = clt.get_monitoring_zone(mz_id) + mgr.get.assert_called_once_with(mz_id) + self.assertEqual(ret, answer) + + def test_clt_list(self): + clt = self.client + self.assertRaises(NotImplementedError, clt.list) + + def test_clt_get(self): + clt = self.client + self.assertRaises(NotImplementedError, clt.get, "fake") + + def test_clt_create(self): + clt = self.client + self.assertRaises(NotImplementedError, clt.create) + + def test_clt_delete(self): + clt = self.client + self.assertRaises(NotImplementedError, clt.delete, "fake") + + def test_clt_find(self): + clt = self.client + self.assertRaises(NotImplementedError, clt.find) + + def test_clt_findall(self): + clt = self.client + self.assertRaises(NotImplementedError, clt.findall) + + def test_clt_create_body(self): + clt = self.client + label = utils.random_name() + name = utils.random_name() + agent = utils.random_name() + ip_addresses = utils.random_name() + metadata = utils.random_name() + expected = {"label": label, "ip_addresses": ip_addresses, + "agent_id": agent, "metadata": metadata} + ret = clt._create_body(name, label=label, agent=agent, + ip_addresses=ip_addresses, metadata=metadata) + self.assertEqual(ret, expected) + + + +if __name__ == "__main__": + unittest.main() diff --git a/tests/unit/test_utils.py b/tests/unit/test_utils.py index 371872a0..9b67399d 100644 --- a/tests/unit/test_utils.py +++ b/tests/unit/test_utils.py @@ -7,6 +7,7 @@ import random import StringIO import sys +import time import unittest from mock import patch @@ -16,6 +17,7 @@ import pyrax.exceptions as exc from tests.unit import fakes +FAKE_CONTENT = "x" * 100 class UtilsTest(unittest.TestCase): @@ -100,10 +102,9 @@ def test_get_checksum_from_file(self): self.assertEqual(expected, received) def test_random_name(self): - nm = utils.random_name(33) - self.assertEqual(len(nm), 33) - nm = utils.random_name(9999) - self.assertEqual(len(nm), 9999) + testlen = random.randint(50, 500) + nm = utils.random_name(testlen) + self.assertEqual(len(nm), testlen) def test_folder_size_bad_folder(self): self.assertRaises(exc.FolderNotFound, utils.folder_size, @@ -111,39 +112,36 @@ def test_folder_size_bad_folder(self): def test_folder_size_no_ignore(self): with utils.SelfDeletingTempDirectory() as tmpdir: - # write 10 files of 100 bytes each - content = "x" * 100 - for idx in xrange(10): + # write 5 files of 100 bytes each + for idx in xrange(5): pth = os.path.join(tmpdir, "test%s" % idx) with open(pth, "w") as ff: - ff.write(content) + ff.write(FAKE_CONTENT) fsize = utils.folder_size(tmpdir) - self.assertEqual(fsize, 1000) + self.assertEqual(fsize, 500) def test_folder_size_ignore_string(self): with utils.SelfDeletingTempDirectory() as tmpdir: - # write 10 files of 100 bytes each - content = "x" * 100 - for idx in xrange(10): + # write 5 files of 100 bytes each + for idx in xrange(5): pth = os.path.join(tmpdir, "test%s" % idx) with open(pth, "w") as ff: - ff.write(content) + ff.write(FAKE_CONTENT) # ignore one file - fsize = utils.folder_size(tmpdir, ignore="*7") - self.assertEqual(fsize, 900) + fsize = utils.folder_size(tmpdir, ignore="*2") + self.assertEqual(fsize, 400) def test_folder_size_ignore_list(self): with utils.SelfDeletingTempDirectory() as tmpdir: - # write 10 files of 100 bytes each - content = "x" * 100 - for idx in xrange(10): + # write 5 files of 100 bytes each + for idx in xrange(5): pth = os.path.join(tmpdir, "test%s" % idx) with open(pth, "w") as ff: - ff.write(content) + ff.write(FAKE_CONTENT) # ignore odd files - ignore = ["*1", "*3", "*5", "*7", "*9"] + ignore = ["*1", "*3"] fsize = utils.folder_size(tmpdir, ignore=ignore) - self.assertEqual(fsize, 500) + self.assertEqual(fsize, 300) def test_add_method(self): def fake_method(self): @@ -207,7 +205,7 @@ def test_wait_until(self): sav_out = sys.stdout out = StringIO.StringIO() sys.stdout = out - ret = utils.wait_until(status_obj, "status", "ready", interval=0.01, + ret = utils.wait_until(status_obj, "status", "ready", interval=0.00001, verbose=True, verbose_atts="progress") self.assertTrue(isinstance(ret, fakes.FakeStatusChanger)) self.assertEqual(ret.status, "ready") @@ -221,7 +219,7 @@ def test_wait_until_fail(self): status_obj.manager = fakes.FakeManager() status_obj.manager.get = Mock(return_value=status_obj) status_obj.get = status_obj.manager.get - ret = utils.wait_until(status_obj, "status", "fake", interval=0.01, + ret = utils.wait_until(status_obj, "status", "fake", interval=0.00001, attempts=2) self.assertFalse(ret.status == "fake") @@ -232,7 +230,7 @@ def test_wait_until_callback(self): status_obj.manager.get = Mock(return_value=status_obj) status_obj.get = status_obj.manager.get thread = utils.wait_until(obj=status_obj, att="status", desired="ready", - interval=0.01, callback=cback) + interval=0.00001, callback=cback) thread.join() cback.assert_called_once_with(status_obj) @@ -265,7 +263,8 @@ def test_time_string_invalid(self): def test_time_string_date(self): dt = "1999-12-31" - self.assertEqual(utils.iso_time_string(dt), "1999-12-31T00:00:00") + iso = utils.iso_time_string(dt) + self.assertEqual(iso, "1999-12-31T00:00:00") def test_time_string_date_obj(self): dt = datetime.date(1999, 12, 31)