trove/reddwarf/extensions/mysql.py

92 lines
3.1 KiB
Python

# vim: tabstop=4 shiftwidth=4 softtabstop=4
# Copyright 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 reddwarf.openstack.common import log as logging
from reddwarf.common import extensions
from reddwarf.common import wsgi
from reddwarf.extensions.mysql import service
LOG = logging.getLogger(__name__)
class Mysql(extensions.ExtensionsDescriptor):
def get_name(self):
return "Mysql"
def get_description(self):
return "Non essential MySQL services such as users and schemas"
def get_alias(self):
return "MYSQL"
def get_namespace(self):
return "http://TBD"
def get_updated(self):
return "2011-01-22T13:25:27-06:00"
def get_resources(self):
resources = []
serializer = wsgi.ReddwarfResponseSerializer(
body_serializers={'application/xml':
wsgi.ReddwarfXMLDictSerializer()})
resource = extensions.ResourceExtension(
'databases',
service.SchemaController(),
parent={'member_name': 'instance',
'collection_name': '{tenant_id}/instances'},
deserializer=wsgi.ReddwarfRequestDeserializer(),
serializer=serializer)
resources.append(resource)
resource = extensions.ResourceExtension(
'users',
service.UserController(),
parent={'member_name': 'instance',
'collection_name': '{tenant_id}/instances'},
# deserializer=extensions.ExtensionsXMLSerializer()
deserializer=wsgi.ReddwarfRequestDeserializer(),
serializer=serializer,
collection_actions={'update': 'PUT'})
resources.append(resource)
collection_url = '{tenant_id}/instances/:instance_id/users'
resource = extensions.ResourceExtension(
'databases',
service.UserAccessController(),
parent={'member_name': 'user',
'collection_name': collection_url},
deserializer=wsgi.ReddwarfRequestDeserializer(),
serializer=serializer,
collection_actions={'update': 'PUT'})
resources.append(resource)
resource = extensions.ResourceExtension(
'root',
service.RootController(),
parent={'member_name': 'instance',
'collection_name': '{tenant_id}/instances'},
deserializer=wsgi.ReddwarfRequestDeserializer(),
serializer=serializer)
resources.append(resource)
return resources