summaryrefslogtreecommitdiff
path: root/reddwarfclient/instances.py
diff options
context:
space:
mode:
authorMichael Basnight <mbasnight@gmail.com>2013-06-17 23:34:27 -0700
committerMichael Basnight <mbasnight@gmail.com>2013-06-21 20:15:23 +0000
commit9916c8f2733b683d859770d05dacd2c9c82912d7 (patch)
tree084a0d53580cbbd34ed8f28de9302d6c78f7050d /reddwarfclient/instances.py
parentbc90b3e088d3d4b83b5b3de0f9f83d9b6956947d (diff)
downloadpython-troveclient-0.1.3.tar.gz
Rename from reddwarf to trove.0.1.3
Implements Blueprint reddwarf-trove-rename Change-Id: Ib2d694c7466887ca297bea4250eca17cdc06b7bf
Diffstat (limited to 'reddwarfclient/instances.py')
-rw-r--r--reddwarfclient/instances.py185
1 files changed, 0 insertions, 185 deletions
diff --git a/reddwarfclient/instances.py b/reddwarfclient/instances.py
deleted file mode 100644
index 66b091c..0000000
--- a/reddwarfclient/instances.py
+++ /dev/null
@@ -1,185 +0,0 @@
-# Copyright (c) 2011 OpenStack, LLC.
-# 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 reddwarfclient import base
-
-import exceptions
-import urlparse
-
-from reddwarfclient.common import check_for_exceptions
-from reddwarfclient.common import limit_url
-from reddwarfclient.common import Paginated
-
-
-REBOOT_SOFT, REBOOT_HARD = 'SOFT', 'HARD'
-
-
-class Instance(base.Resource):
- """
- An Instance is an opaque instance used to store Database instances.
- """
- def __repr__(self):
- return "<Instance: %s>" % self.name
-
- def list_databases(self):
- return self.manager.databases.list(self)
-
- def delete(self):
- """
- Delete the instance.
- """
- self.manager.delete(self)
-
- def restart(self):
- """
- Restart the database instance
- """
- self.manager.restart(self.id)
-
-
-class Instances(base.ManagerWithFind):
- """
- Manage :class:`Instance` resources.
- """
- resource_class = Instance
-
- def create(self, name, flavor_id, volume=None, databases=None, users=None,
- restorePoint=None):
- """
- Create (boot) a new instance.
- """
- body = {"instance": {
- "name": name,
- "flavorRef": flavor_id
- }}
- if volume:
- body["instance"]["volume"] = volume
- if databases:
- body["instance"]["databases"] = databases
- if users:
- body["instance"]["users"] = users
- if restorePoint:
- body["instance"]["restorePoint"] = restorePoint
-
- return self._create("/instances", body, "instance")
-
- def _list(self, url, response_key, limit=None, marker=None):
- resp, body = self.api.client.get(limit_url(url, limit, marker))
- if not body:
- raise Exception("Call to " + url + " did not return a body.")
- links = body.get('links', [])
- next_links = [link['href'] for link in links if link['rel'] == 'next']
- next_marker = None
- for link in next_links:
- # Extract the marker from the url.
- parsed_url = urlparse.urlparse(link)
- query_dict = dict(urlparse.parse_qsl(parsed_url.query))
- next_marker = query_dict.get('marker', None)
- instances = body[response_key]
- instances = [self.resource_class(self, res) for res in instances]
- return Paginated(instances, next_marker=next_marker, links=links)
-
- def list(self, limit=None, marker=None):
- """
- Get a list of all instances.
-
- :rtype: list of :class:`Instance`.
- """
- return self._list("/instances", "instances", limit, marker)
-
- def get(self, instance):
- """
- Get a specific instances.
-
- :rtype: :class:`Instance`
- """
- return self._get("/instances/%s" % base.getid(instance),
- "instance")
-
- def backups(self, instance):
- """
- Get the list of backups for a specific instance.
-
- :rtype: list of :class:`Backups`.
- """
- return self._list("/instances/%s/backups" % base.getid(instance),
- "backups")
-
- def delete(self, instance):
- """
- Delete the specified instance.
-
- :param instance_id: The instance id to delete
- """
- resp, body = self.api.client.delete("/instances/%s" %
- base.getid(instance))
- if resp.status in (422, 500):
- raise exceptions.from_response(resp, body)
-
- def _action(self, instance_id, body):
- """
- Perform a server "action" -- reboot/rebuild/resize/etc.
- """
- url = "/instances/%s/action" % instance_id
- resp, body = self.api.client.post(url, body=body)
- check_for_exceptions(resp, body)
- if body:
- return self.resource_class(self, body, loaded=True)
- return body
-
- def resize_volume(self, instance_id, volume_size):
- """
- Resize the volume on an existing instances
- """
- body = {"resize": {"volume": {"size": volume_size}}}
- self._action(instance_id, body)
-
- def resize_instance(self, instance_id, flavor_id):
- """
- Resize the volume on an existing instances
- """
- body = {"resize": {"flavorRef": flavor_id}}
- self._action(instance_id, body)
-
- def restart(self, instance_id):
- """
- Restart the database instance.
-
- :param instance_id: The :class:`Instance` (or its ID) to share onto.
- """
- body = {'restart': {}}
- self._action(instance_id, body)
-
- def reset_password(self, instance_id):
- """
- Resets the database instance root password.
-
- :param instance_id: The :class:`Instance` (or its ID) to share onto.
- """
- body = {'reset-password': {}}
- return self._action(instance_id, body)
-
-Instances.resize_flavor = Instances.resize_instance
-
-
-class InstanceStatus(object):
-
- ACTIVE = "ACTIVE"
- BLOCKED = "BLOCKED"
- BUILD = "BUILD"
- FAILED = "FAILED"
- REBOOT = "REBOOT"
- RESIZE = "RESIZE"
- SHUTDOWN = "SHUTDOWN"