a57568397e
- Support "--datastore-version-number" for creating configuration - Support "--datastore-version-number" for creating instance - Support "--version-number" for creating datastore version - Support "--version-name" for updating datastore version - Support showing version number for datastore version, instance and configuration Story: 2008358 Task: 41264 Change-Id: Ie84b4506736a82a214b0416f7e451d565552f651
150 lines
5.3 KiB
Python
150 lines
5.3 KiB
Python
# Copyright (c) 2014 OpenStack Foundation
|
|
# 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 json
|
|
from troveclient import base
|
|
from troveclient import common
|
|
|
|
|
|
class Configuration(base.Resource):
|
|
"""Configuration is a resource used to hold configuration information."""
|
|
def __repr__(self):
|
|
return "<Configuration: %s>" % self.name
|
|
|
|
|
|
class Configurations(base.ManagerWithFind):
|
|
"""Manage :class:`Configurations` information."""
|
|
|
|
resource_class = Configuration
|
|
|
|
def get(self, configuration):
|
|
"""Get a specific configuration.
|
|
|
|
:rtype: :class:`Configurations`
|
|
"""
|
|
return self._get("/configurations/%s" % base.getid(configuration),
|
|
"configuration")
|
|
|
|
def instances(self, configuration, limit=None, marker=None):
|
|
"""Get a list of instances on a configuration.
|
|
|
|
:rtype: :class:`Configurations`
|
|
"""
|
|
return self._paginated("/configurations/%s/instances" %
|
|
base.getid(configuration),
|
|
"instances", limit, marker)
|
|
|
|
def list(self, limit=None, marker=None):
|
|
"""Get a list of all configurations.
|
|
|
|
:rtype: list of :class:`Configurations`.
|
|
"""
|
|
return self._paginated("/configurations", "configurations",
|
|
limit, marker)
|
|
|
|
def create(self, name, values, description=None, datastore=None,
|
|
datastore_version=None, datastore_version_number=None):
|
|
"""Create a new configuration."""
|
|
body = {
|
|
"configuration": {
|
|
"name": name,
|
|
"values": json.loads(values)
|
|
}
|
|
}
|
|
datastore_obj = {}
|
|
if datastore:
|
|
datastore_obj["type"] = datastore
|
|
if datastore_version:
|
|
datastore_obj["version"] = datastore_version
|
|
if datastore_version_number:
|
|
datastore_obj["version_number"] = datastore_version_number
|
|
if datastore_obj:
|
|
body["configuration"]["datastore"] = datastore_obj
|
|
if description:
|
|
body['configuration']['description'] = description
|
|
return self._create("/configurations", body, "configuration")
|
|
|
|
def update(self, configuration, values, name=None, description=None):
|
|
"""Update an existing configuration."""
|
|
body = {
|
|
"configuration": {
|
|
"values": json.loads(values)
|
|
}
|
|
}
|
|
if name:
|
|
body['configuration']['name'] = name
|
|
if description:
|
|
body['configuration']['description'] = description
|
|
url = "/configurations/%s" % base.getid(configuration)
|
|
resp, body = self.api.client.put(url, body=body)
|
|
common.check_for_exceptions(resp, body, url)
|
|
|
|
def edit(self, configuration, values):
|
|
"""Update an existing configuration."""
|
|
body = {
|
|
"configuration": {
|
|
"values": json.loads(values)
|
|
}
|
|
}
|
|
url = "/configurations/%s" % base.getid(configuration)
|
|
resp, body = self.api.client.patch(url, body=body)
|
|
common.check_for_exceptions(resp, body, url)
|
|
|
|
def delete(self, configuration):
|
|
"""Delete the specified configuration.
|
|
|
|
:param configuration: The configuration id to delete
|
|
"""
|
|
url = "/configurations/%s" % base.getid(configuration)
|
|
resp, body = self.api.client.delete(url)
|
|
common.check_for_exceptions(resp, body, url)
|
|
|
|
|
|
class ConfigurationParameter(base.Resource):
|
|
"""Configuration Parameter."""
|
|
def __repr__(self):
|
|
return "<ConfigurationParameter: %s>" % self.__dict__
|
|
|
|
|
|
class ConfigurationParameters(base.ManagerWithFind):
|
|
"""Manage :class:`ConfigurationParameters` information."""
|
|
|
|
resource_class = ConfigurationParameter
|
|
|
|
def parameters(self, datastore, version):
|
|
"""Get a list of valid parameters that can be changed."""
|
|
return self._list("/datastores/%s/versions/%s/parameters" %
|
|
(datastore, version), "configuration-parameters")
|
|
|
|
def get_parameter(self, datastore, version, key):
|
|
"""Get a list of valid parameters that can be changed."""
|
|
return self._get("/datastores/%s/versions/%s/parameters/%s" %
|
|
(datastore, version, key))
|
|
|
|
def parameters_by_version(self, version):
|
|
"""Get a list of valid parameters that can be changed."""
|
|
return self._list("/datastores/versions/%s/parameters" % version,
|
|
"configuration-parameters")
|
|
|
|
def get_parameter_by_version(self, version, key):
|
|
"""Get a list of valid parameters that can be changed."""
|
|
return self._get("/datastores/versions/%s/parameters/%s" %
|
|
(version, key))
|
|
|
|
# Appease the abc gods
|
|
def list(self):
|
|
pass
|