blob: 0dffe93ee6927739685f8c1ef39ce06ab624cec5 [file] [log] [blame]
#!/usr/bin/env python
#
# Copyright 2007 Google Inc.
#
# 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.
#
"""Stub version of the capability service API, everything is always enabled."""
from google.appengine.api import apiproxy_stub
from google.appengine.api import capabilities
IsEnabledRequest = capabilities.IsEnabledRequest
IsEnabledResponse = capabilities.IsEnabledResponse
CapabilityConfig = capabilities.CapabilityConfig
SUPPORTED_CAPABILITIES = (
'blobstore',
'datastore_v3',
'images',
'mail',
'memcache',
'taskqueue',
'urlfetch',
'xmpp',
)
class CapabilityServiceStub(apiproxy_stub.APIProxyStub):
"""Python only capability service stub."""
THREADSAFE = True
def __init__(self, service_name='capability_service'):
"""Constructor.
Args:
service_name: Service name expected for all calls.
"""
super(CapabilityServiceStub, self).__init__(service_name)
self._packages = dict.fromkeys(SUPPORTED_CAPABILITIES, True)
def SetPackageEnabled(self, package, enabled):
"""Set all features of a given package to enabled.
This method is thread-unsafe, so should only be called during set-up, before
multiple API server threads start.
Args:
package: Name of package.
enabled: True to enable, False to disable.
"""
self._packages[package] = enabled
def _Dynamic_IsEnabled(self, request, response):
"""Implementation of CapabilityService::IsEnabled().
Args:
request: An IsEnabledRequest.
response: An IsEnabledResponse.
"""
default_config = response.add_config()
default_config.set_package('')
default_config.set_capability('')
try:
package_enabled = self._packages[request.package()]
except KeyError:
summary_status = IsEnabledResponse.UNKNOWN
config_status = CapabilityConfig.UNKNOWN
else:
if package_enabled:
summary_status = IsEnabledResponse.ENABLED
config_status = CapabilityConfig.ENABLED
else:
summary_status = IsEnabledResponse.DISABLED
config_status = CapabilityConfig.DISABLED
response.set_summary_status(summary_status)
default_config.set_status(config_status)