1a91aacb85922f8d74733979691f0bf26249debc
Go to file
Mark McLoughlin 1a91aacb85 Port to oslo.messaging
The oslo.messaging library takes the existing RPC code from oslo and
wraps it in a sane API with well defined semantics around which we can
make a commitment to retain compatibility in future.
The patch is large, but the changes can be summarized as:
 * oslo.messaging>=1.3.0a4 is required; a proper 1.3.0 release will be
 pushed before the icehouse release candidates.
 * The new rpc module has init() and cleanup() methods which manage the
 global oslo.messaging transport state. The TRANSPORT and NOTIFIER
 globals are conceptually similar to the current RPCIMPL global,
 except we're free to create and use alternate Transport objects
 in e.g. the cells code.
 * The rpc.get_{client,server,notifier}() methods are just helpers
 which wrap the global messaging state, specifiy serializers and
 specify the use of the eventlet executor.
 * In oslo.messaging, a request context is expected to be a dict so
 we add a RequestContextSerializer which can serialize to and from
 dicts using RequestContext.{to,from}_dict()
 * The allowed_rpc_exception_modules configuration option is replaced
 by an allowed_remote_exmods get_transport() parameter. This is not
 something that users ever need to configure, but it is something
 each project using oslo.messaging needs to be able to customize.
 * The nova.rpcclient module is removed; it was only a helper class
 to allow us split a lot of the more tedious changes out of this
 patch.
 * Finalizing the port from RpcProxy to RPCClient is straightforward.
 We put the default topic, version and namespace into a Target and
 contstruct the client using that.
 * Porting endpoint classes (like ComputeManager) just involves setting
 a target attribute on the class.
 * The @client_exceptions() decorator has been renamed to
 @expected_exceptions since it's used on the server side to designate
 exceptions we expect the decorated method to raise.
 * We maintain a global NOTIFIER object and create specializations of
 it with specific publisher IDs in order to avoid notification driver
 loading overhead.
 * rpc.py contains transport aliases for backwards compatibility
 purposes. setup.cfg also contains notification driver aliases for
 backwards compat.
 * The messaging options are moved about in nova.conf.sample because
 the options are advertised via a oslo.config.opts entry point and
 picked up by the generator.
 * We use messaging.ConfFixture in tests to override oslo.messaging
 config options, rather than making assumptions about the options
 registered by the library.
The porting of cells code is particularly tricky:
 * messaging.TransportURL parse() and str() replaces the
 [un]parse_transport_url() methods. Note the complication that an
 oslo.messaging transport URL can actually have multiple hosts in
 order to support message broker clustering. Also the complication
 of transport aliases in rpc.get_transport_url().
 * proxy_rpc_to_manager() is fairly nasty. Right now, we're proxying
 the on-the-wire message format over this call, but you can't supply
 such messages to oslo.messaging's cast()/call() methods. Rather than
 change the inter-cell RPC API to suit oslo.messaging, we instead
 just unpack the topic, server, method and args from the message on
 the remote side.
 cells_api.RPCClientCellsProxy is a mock RPCClient implementation
 which allows us to wrap up a RPC in the message format currently
 used for inter-cell RPCs.
 * Similarly, proxy_rpc_to_manager uses the on-the-wire format for
 exception serialization, but this format is an implementation detail
 of oslo.messaging's transport drivers. So, we need to duplicate the
 exception serialization code in cells.messaging. We may find a way
 to reconcile this in future - for example a ExceptionSerializer
 class might work, but with the current format it might be difficult
 for the deserializer to generically detect a serialized exception.
 * CellsRPCDriver.start_servers() and InterCellRPCAPI._get_client()
 need close review, but they're pretty straightforward ports of code
 to listen on some specialized topics and connect to a remote cell
 using its transport URL.
blueprint: oslo-messaging
Change-Id: Ib613e6300f2c215be90f924afbd223a3da053a69
2014年02月01日 09:53:24 +00:00
2013年12月16日 12:03:32 -08:00
2014年01月30日 17:04:43 +00:00
2014年02月01日 09:53:24 +00:00
2014年02月01日 09:53:24 +00:00
2014年02月01日 09:53:24 +00:00
2013年09月02日 16:03:34 +02:00
2011年10月24日 15:07:19 -04:00
2013年10月25日 16:09:38 +08:00
2012年02月08日 19:30:39 -08:00
2012年11月21日 17:04:48 -05:00
2013年10月16日 21:52:11 +05:30
2010年05月27日 23:05:26 -07:00
2012年07月05日 09:11:37 -05:00
2014年01月21日 23:55:55 +01:00
2011年03月16日 15:28:09 -07:00
2014年02月01日 09:53:24 +00:00
2013年12月25日 17:41:11 +08:00
2014年02月01日 09:53:24 +00:00
2013年09月05日 11:12:57 -04:00
2013年12月10日 18:02:18 -05:00

OpenStack Nova README

OpenStack Nova provides a cloud computing fabric controller, supporting a wide variety of virtualization technologies, including KVM, Xen, LXC, VMware, and more. In addition to its native API, it includes compatibility with the commonly encountered Amazon EC2 and S3 APIs.

OpenStack Nova is distributed under the terms of the Apache License, Version 2.0. The full terms and conditions of this license are detailed in the LICENSE file.

Nova primarily consists of a set of Python daemons, though it requires and integrates with a number of native system components for databases, messaging and virtualization capabilities.

To keep updated with new developments in the OpenStack project follow @openstack on Twitter.

To learn how to deploy OpenStack Nova, consult the documentation available online at:

http://docs.openstack.org

For information about the different compute (hypervisor) drivers supported by Nova, read this page on the wiki:

https://wiki.openstack.org/wiki/HypervisorSupportMatrix

In the unfortunate event that bugs are discovered, they should be reported to the appropriate bug tracker. If you obtained the software from a 3rd party operating system vendor, it is often wise to use their own bug tracker for reporting problems. In all other cases use the master OpenStack bug tracker, available at:

http://bugs.launchpad.net/nova

Developers wishing to work on the OpenStack Nova project should always base their work on the latest Nova code, available from the master GIT repository at:

http://github.com/openstack/nova

Developers should also join the discussion on the mailing list, at:

http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack

Any new code must follow the development guidelines detailed in the HACKING.rst file, and pass all unit tests. Further developer focused documentation is available at:

http://nova.openstack.org/

For information on how to contribute to Nova, please see the contents of the CONTRIBUTING.rst file.

-- End of broadcast

Description
OpenStack Compute (Nova)
Readme 1.7 GiB
Languages
Python 97.6%
Smarty 2.3%
Shell 0.1%