summaryrefslogtreecommitdiffstats
path: root/nova/endpoint
diff options
context:
space:
mode:
authorMichael Gundlach <michael.gundlach@rackspace.com>2010-09-02 15:59:52 -0400
committerMichael Gundlach <michael.gundlach@rackspace.com>2010-09-02 15:59:52 -0400
commit59adf260b59dcdcc6bc2df3260a331a4a05f535c (patch)
tree37bcc8eccb9f6e48f557e27f661d9c019df32b7c /nova/endpoint
parent43f1e722b633945a8f5dca005e6fd60515bac4ae (diff)
downloadnova-59adf260b59dcdcc6bc2df3260a331a4a05f535c.tar.gz
nova-59adf260b59dcdcc6bc2df3260a331a4a05f535c.tar.xz
nova-59adf260b59dcdcc6bc2df3260a331a4a05f535c.zip
Move nova.endpoint.images to api.ec2 and delete nova.endpoint
Diffstat (limited to 'nova/endpoint')
-rw-r--r--nova/endpoint/__init__.py0
-rw-r--r--nova/endpoint/images.py80
-rw-r--r--nova/endpoint/notes.txt62
3 files changed, 0 insertions, 142 deletions
diff --git a/nova/endpoint/__init__.py b/nova/endpoint/__init__.py
deleted file mode 100644
index e69de29bb..000000000
--- a/nova/endpoint/__init__.py
+++ /dev/null
diff --git a/nova/endpoint/images.py b/nova/endpoint/images.py
deleted file mode 100644
index cfea4c20b..000000000
--- a/nova/endpoint/images.py
+++ /dev/null
@@ -1,80 +0,0 @@
-# vim: tabstop=4 shiftwidth=4 softtabstop=4
-
-# Copyright 2010 United States Government as represented by the
-# Administrator of the National Aeronautics and Space Administration.
-# 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.
-
-"""
-Proxy AMI-related calls from the cloud controller, to the running
-objectstore daemon.
-"""
-
-import json
-import urllib
-
-import boto.s3.connection
-
-from nova import image
-from nova import flags
-from nova import utils
-from nova.auth import manager
-
-
-FLAGS = flags.FLAGS
-
-
-def modify(context, image_id, operation):
- image.S3ImageService(context)._conn().make_request(
- method='POST',
- bucket='_images',
- query_args=qs({'image_id': image_id, 'operation': operation}))
-
- return True
-
-
-def register(context, image_location):
- """ rpc call to register a new image based from a manifest """
-
- image_id = utils.generate_uid('ami')
- image.S3ImageService(context)._conn().make_request(
- method='PUT',
- bucket='_images',
- query_args=qs({'image_location': image_location,
- 'image_id': image_id}))
-
- return image_id
-
-
-def list(context, filter_list=[]):
- """ return a list of all images that a user can see
-
- optionally filtered by a list of image_id """
-
- result = image.S3ImageService(context).index().values()
- if not filter_list is None:
- return [i for i in result if i['imageId'] in filter_list]
- return result
-
-
-def deregister(context, image_id):
- """ unregister an image """
- image.S3ImageService(context).delete(image_id)
-
-
-def qs(params):
- pairs = []
- for key in params.keys():
- pairs.append(key + '=' + urllib.quote(params[key]))
- return '&'.join(pairs)
diff --git a/nova/endpoint/notes.txt b/nova/endpoint/notes.txt
deleted file mode 100644
index 3e48f1749..000000000
--- a/nova/endpoint/notes.txt
+++ /dev/null
@@ -1,62 +0,0 @@
-bin/nova-api:
- somehow listens for 'cloud_topic' rpc messages and ties them to
- the cloud controller (maybe so internal calls can hit the API
- via Queuing instead of via HTTP?)
- hands CloudController and AdminController to APIServerApplication
- and hands that to Tornado.
-
-
-api.py:
-
-APIServerApplication(tornado.web.Application)
- maps routes to APIRequestHandler, CloudPipRequestHandler, MetadataRequestHandler,
- RootRequestHandler(just lists versions)
- (and to controllers which are passed to __init__)
- magical twisted mapping to it
-
-APIRequestHandler
- execute:
- authenticates request
- picks controller from APIServerApplication's list based on name that was at the
- start of the URL (e.g. /services/Cloud has /services mapped here via
- APIServerApplication then Cloud is controller_name)
- picks action from incoming request arguments
- dict = APIRequest(controller, action).send(Context(user, project))
- _write_callback(dict)
- self.finish()
-
-APIRequest
- send(context, **kwargs):
- dict = controller.action(context, **kwargs)
- return _render_response(dict) # turns into XML
-
-
-CloudController and AdminController:
- actions return dict (or True which is converted into dict(return=True))
- actions have @rbac.allow('list', 'of', 'roles', 'or', '"all"')
- actions can have @defer.inlineCallbacks which is used for yield statements
- can use rpc.cast and then defer a returnValue
-
-
-==== STRATEGY TO CONVERT TO EVENTLET+WSGI ====
-
-* Controllers:
-x move the @rbac.allow data into an auth WSGI that is right above the call
-x to the controller
-x verify @defer.inlineCallbacks is just to allow the yield statements, then
-x remove the yield statements (untangle from twisted)
-
-* nova-api:
- verify that cloud_topic is going away which I seem to remember, so we can ignore rpc
-
-* apiserverapplication:
-x replace with a Router to a wsgi.Controller
-x apirequesthandler stuff is just an entry in api.APIRouter
-
-* apirequesthandler
-x wsgi.Controller pointed to by api.APIRouter
-x - basically it's execute() from old APIRequestHandler
-x change to return data directly instead of _write_callback() and finish()
-
-* apirequest
-x doesn't need to change