summaryrefslogtreecommitdiffstats
path: root/bin
diff options
context:
space:
mode:
Diffstat (limited to 'bin')
-rwxr-xr-xbin/nova-direct-api110
-rwxr-xr-xbin/stack162
2 files changed, 0 insertions, 272 deletions
diff --git a/bin/nova-direct-api b/bin/nova-direct-api
deleted file mode 100755
index 121a0b45c..000000000
--- a/bin/nova-direct-api
+++ /dev/null
@@ -1,110 +0,0 @@
-#!/usr/bin/env python
-# pylint: disable=C0103
-# 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.
-
-"""Starter script for Nova Direct API."""
-
-import eventlet
-eventlet.monkey_patch()
-
-import os
-import sys
-
-# If ../nova/__init__.py exists, add ../ to Python search path, so that
-# it will override what happens to be installed in /usr/(local/)lib/python...
-possible_topdir = os.path.normpath(os.path.join(os.path.abspath(sys.argv[0]),
- os.pardir,
- os.pardir))
-if os.path.exists(os.path.join(possible_topdir, 'nova', '__init__.py')):
- sys.path.insert(0, possible_topdir)
-
-
-from nova import compute
-from nova import flags
-from nova import log as logging
-from nova import network
-from nova.openstack.common import cfg
-from nova import service
-from nova import utils
-from nova import volume
-from nova import wsgi
-from nova.api import direct
-
-
-direct_api_opts = [
- cfg.IntOpt('direct_port',
- default=8001,
- help='Direct API port'),
- cfg.StrOpt('direct_host',
- default='0.0.0.0',
- help='Direct API host'),
- ]
-
-FLAGS = flags.FLAGS
-FLAGS.register_cli_opts(direct_api_opts)
-
-
-# An example of an API that only exposes read-only methods.
-# In this case we're just limiting which methods are exposed.
-class ReadOnlyCompute(direct.Limited):
- """Read-only Compute API."""
-
- _allowed = ['get', 'get_all', 'get_console_output']
-
-
-# An example of an API that provides a backwards compatibility layer.
-# In this case we're overwriting the implementation to ensure
-# compatibility with an older version. In reality we would want the
-# "description=None" to be part of the actual API so that code
-# like this isn't even necessary, but this example shows what one can
-# do if that isn't the situation.
-class VolumeVersionOne(direct.Limited):
- _allowed = ['create', 'delete', 'update', 'get']
-
- def create(self, context, size, name):
- self.proxy.create(context, size, name, description=None)
-
-
-if __name__ == '__main__':
- utils.default_flagfile()
- FLAGS(sys.argv)
- logging.setup()
-
- direct.register_service('compute', compute.API())
- direct.register_service('volume', volume.API())
- direct.register_service('network', network.API())
- direct.register_service('reflect', direct.Reflection())
-
- # Here is how we could expose the code in the examples above.
- #direct.register_service('compute-readonly',
- # ReadOnlyCompute(compute.API()))
- #direct.register_service('volume-v1', VolumeVersionOne(volume.API()))
-
- router = direct.Router()
- with_json = direct.JsonParamsMiddleware(router)
- with_req = direct.PostParamsMiddleware(with_json)
- with_auth = direct.DelegatedAuthMiddleware(with_req)
-
- server = wsgi.Server("Direct API",
- with_auth,
- host=FLAGS.direct_host,
- port=FLAGS.direct_port)
-
- service.serve(server)
- service.wait()
diff --git a/bin/stack b/bin/stack
deleted file mode 100755
index 0b226b7c1..000000000
--- a/bin/stack
+++ /dev/null
@@ -1,162 +0,0 @@
-#!/usr/bin/env python
-# 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.
-
-"""CLI for the Direct API."""
-
-import eventlet
-eventlet.monkey_patch()
-
-import json
-import os
-import pprint
-import sys
-import textwrap
-import urllib
-import urllib2
-
-# If ../nova/__init__.py exists, add ../ to Python search path, so that
-# it will override what happens to be installed in /usr/(local/)lib/python...
-possible_topdir = os.path.normpath(os.path.join(os.path.abspath(sys.argv[0]),
- os.pardir,
- os.pardir))
-if os.path.exists(os.path.join(possible_topdir, 'nova', '__init__.py')):
- sys.path.insert(0, possible_topdir)
-
-import gflags
-
-
-FLAGS = gflags.FLAGS
-gflags.DEFINE_string('host', '127.0.0.1', 'Direct API host')
-gflags.DEFINE_integer('port', 8001, 'Direct API host')
-gflags.DEFINE_string('user', 'user1', 'Direct API username')
-gflags.DEFINE_string('project', 'proj1', 'Direct API project')
-
-
-USAGE = """usage: stack [options] <controller> <method> [arg1=value arg2=value]
-
- `stack help` should output the list of available controllers
- `stack <controller>` should output the available methods for that controller
- `stack help <controller>` should do the same
- `stack help <controller> <method>` should output info for a method
-"""
-
-
-def format_help(d):
- """Format help text, keys are labels and values are descriptions."""
- MAX_INDENT = 30
- indent = max([len(k) for k in d])
- if indent > MAX_INDENT:
- indent = MAX_INDENT - 6
-
- out = []
- for k, v in sorted(d.iteritems()):
- if (len(k) + 6) > MAX_INDENT:
- out.extend([' %s' % k])
- initial_indent = ' ' * (indent + 6)
- else:
- initial_indent = ' %s ' % k.ljust(indent)
- subsequent_indent = ' ' * (indent + 6)
- t = textwrap.TextWrapper(initial_indent=initial_indent,
- subsequent_indent=subsequent_indent)
- out.extend(t.wrap(v))
- return out
-
-
-def help_all():
- rv = do_request('reflect', 'get_controllers')
- out = format_help(rv)
- return (USAGE + str(FLAGS.MainModuleHelp()) +
- '\n\nAvailable controllers:\n' +
- '\n'.join(out) + '\n')
-
-
-def help_controller(controller):
- rv = do_request('reflect', 'get_methods')
- methods = dict([(k.split('/')[2], v) for k, v in rv.iteritems()
- if k.startswith('/%s' % controller)])
- return ('Available methods for %s:\n' % controller +
- '\n'.join(format_help(methods)))
-
-
-def help_method(controller, method):
- rv = do_request('reflect',
- 'get_method_info',
- {'method': '/%s/%s' % (controller, method)})
-
- sig = '%s(%s):' % (method, ', '.join(['='.join(x) for x in rv['args']]))
- out = textwrap.wrap(sig, subsequent_indent=' ' * len('%s(' % method))
- out.append('\n' + rv['doc'])
- return '\n'.join(out)
-
-
-def do_request(controller, method, params=None):
- if params:
- data = urllib.urlencode(params)
- else:
- data = None
-
- url = 'http://%s:%s/%s/%s' % (FLAGS.host, FLAGS.port, controller, method)
- headers = {'X-OpenStack-User': FLAGS.user,
- 'X-OpenStack-Project': FLAGS.project}
-
- req = urllib2.Request(url, data, headers)
- try:
- resp = urllib2.urlopen(req)
- except urllib2.HTTPError, e:
- print e.read()
- sys.exit(1)
- except urllib2.URLError, e:
- print 'Failed to connect to %s: %s' % (url, e.reason)
- sys.exit(1)
- return json.loads(resp.read())
-
-
-if __name__ == '__main__':
- args = FLAGS(sys.argv)
-
- cmd = args.pop(0)
- if not args:
- print help_all()
- sys.exit()
-
- first = args.pop(0)
- if first == 'help':
- action = help_all
- params = []
- if args:
- params.append(args.pop(0))
- action = help_controller
- if args:
- params.append(args.pop(0))
- action = help_method
- print action(*params)
- sys.exit(0)
-
- controller = first
- if not args:
- print help_controller(controller)
- sys.exit()
-
- method = args.pop(0)
- params = {}
- for x in args:
- key, value = x.split('=', 1)
- params[key] = value
-
- pprint.pprint(do_request(controller, method, params))