Source code for ecl.compute.v2.limits

# 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 ecl.compute import compute_service
from ecl import resource2


[docs]class AbsoluteLimits(resource2.Resource): #: The number of key-value pairs that can be set as image metadata. image_meta = resource2.Body("maxImageMeta", alternate_id=True) #: The maximum number of personality contents that can be supplied. personality = resource2.Body("maxPersonality") #: The maximum size, in bytes, of a personality. personality_size = resource2.Body("maxPersonalitySize") #: The maximum amount of security group rules allowed. security_group_rules = resource2.Body("maxSecurityGroupRules") #: The maximum amount of security groups allowed. security_groups = resource2.Body("maxSecurityGroups") #: The amount of security groups currently in use. security_groups_used = resource2.Body("totalSecurityGroupsUsed") #: The number of key-value pairs that can be set as sever metadata. server_meta = resource2.Body("maxServerMeta") #: The maximum amount of cores. cores = resource2.Body("maxTotalCores") #: The amount of cores currently in use. cores_used = resource2.Body("totalCoresUsed") #: The maximum amount of floating IPs. floating_ips = resource2.Body("maxTotalFloatingIps") #: The amount of floating IPs currently in use. floating_ips_used = resource2.Body("totalFloatingIpsUsed") #: The maximum amount of instances. instances = resource2.Body("maxTotalInstances") #: The amount of instances currently in use. instances_used = resource2.Body("totalInstancesUsed") #: The maximum amount of keypairs. keypairs = resource2.Body("maxTotalKeypairs") #: The maximum RAM size in megabytes. ram = resource2.Body("maxTotalRAMSize") #: The RAM size in megabytes currently in use. ram_used = resource2.Body("totalRAMUsed") #: The maximum amount of server groups. server_groups = resource2.Body("maxServerGroups") #: The amount of server groups currently in use. server_groups_used = resource2.Body("totalServerGroupsUsed") #: The maximum number of members in a server group. server_group_members = resource2.Body("maxServerGroupMembers") #: New missing attributes snapshots = resource2.Body("maxTotalSnapshots") snapshots_used = resource2.Body("totalSnapshotsUsed") backups = resource2.Body("maxTotalBackups") backups_used = resource2.Body("totalBackupsUsed") volumes = resource2.Body("maxTotalVolumes") volumes_used = resource2.Body("totalVolumesUsed") volume_gigabytes = resource2.Body("maxTotalVolumeGigabytes") backup_gigabytes = resource2.Body("maxTotalBackupGigabytes") backup_gigabytes_used = resource2.Body("totalBackupGigabytesUsed") gigabytes_used = resource2.Body("totalGigabytesUsed")
[docs]class RateLimit(resource2.Resource): #: A list of the specific limits that apply to the ``regex`` and ``uri``. limits = resource2.Body("limit", type=list) #: A regex representing which routes this rate limit applies to. regex = resource2.Body("regex") #: A URI representing which routes this rate limit applies to. uri = resource2.Body("uri")
[docs]class Limits(resource2.Resource): base_path = "/limits" resource_key = "limits" service = compute_service.ComputeService() allow_get = True absolute = resource2.Body("absolute", type=AbsoluteLimits) rate = resource2.Body("rate", type=list)
[docs] def get(self, session, requires_id=False): """Get the Limits resource. :param session: The session to use for making this request. :type session: :class:`~ecl.session.Session` :returns: A Limits instance :rtype: :class:`~ecl.compute.v2.limits.Limits` """ request = self._prepare_request(requires_id=False, prepend_key=False) response = session.get(request.uri, endpoint_filter=self.service) body = response.json() body = body[self.resource_key] absolute_body = self._filter_component( body["absolute"], AbsoluteLimits._body_mapping()) self.absolute = AbsoluteLimits.existing(**absolute_body) rates_body = body["rate"] rates = [] for rate_body in rates_body: rate_body = self._filter_component(rate_body, RateLimit._body_mapping()) rates.append(RateLimit(**rate_body)) self.rate = rates return self