| Commit message (Collapse) | Author | Age | Files | Lines |
| |\ |
|
| | |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
When using nova cells, in child cell, instance properties dict received
from API cell is returned by database that contains instance['name']. We
need to pop this from dict before creating a instance entry in child cell.
The system metadata also need to be recreated in child cell because instance
properties dict is converted to primitive which makes instance['system_metadata']
a list of dicts.
Fix bug #1193552
Change-Id: I43a8b4c1673a831b0c87881004eb0a7e5b149d9e
|
| |\ \ |
|
| | | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
The compute_api start/stop methods expect an Instance object, but cells
is still passing the dict or sqlalchemy form.
Fixes bug 1191040
Change-Id: I21e0f0b5d7e3160e23c7a84f59ae3899538c7327
|
| |\ \ \
| |_|/
|/| | |
|
| | | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
Implements cinder support for compute cells when cinder is a global
installation. Adds syncing of the block device mapping table between
child cells and API cells.
Implements blueprint cells-cinder-support
Change-Id: Ife5be9922db0742c8ee4f970517396be86597cce
|
| |\ \ \ |
|
| | | |/
| |/|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
Fix various places that access instance['system_metadata'] as if it's a
list of sqlalchemy models. A helper util method was created in a
previous patch set in nova/utils... so this patch converts things to
use it.
Left one use in _init_instance() in compute/manager.py because it's
being addressed with a different patch set.
Related to blueprint unified-object-model
Change-Id: I876a6c57f64d61d64069c884bf0414c3596e1aa0
|
| | | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
Fix typo 'security_group' and update related unit tests.
Fix bug #1193233
Change-Id: I6d92759b0d7e2ce81c2065a4eada35c559ccbcd7
|
| |/ /
| |
| |
| |
| |
| |
| |
| |
| |
| | |
Make sure that when scheduling, the instance_type used in filters
contains the 'extra_specs'. This is a bit ugly, but will get cleaned up
with objects.
Fixes bug 1192331
Change-Id: I3614f3a858840c9561b4e618fc30f3d3ae5ac689
|
| |\ \ |
|
| | | |
| | |
| | |
| | |
| | |
| | | |
Fixes bug 1190473
Change-Id: Ic61b549869b1434df81407e499ec8b00ba8f328f
|
| |/ /
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
This is a first pass at client side version control for rpc. It allows
you to configure a max version of messages that clients are allowed to
send. You can find one example of how clients need to adapt in the
conductor rpcapi. All other changes in rpc apis since the grizzly
release are not applicable to this.
Some future improvements to this could be reporting the versions
supported by running services and having that be discoverable via the
API. We could also consider allow setting these client side version
caps via the API. For now, recommended values for these config
options while attempting a rolling upgrade will just have to be documented.
The config options allow specifying specific rpc api version numbers if
desired, but an alias of 'grizzly' is also supported. So typically at
the start of a rolling upgrade you'd have:
[upgrade_levels]
compute=grizzly
conductor=grizzly
scheduler=grizzly
... etc ...
And as you update all instances of a service, you would remove that bit
from your configuration across the deployment using your config management
system of choice.
DocImpact
Implements blueprint rpc-version-control.
Change-Id: I2c0fd6dd7484c87823846d7c31d6525d93cd1b43
|
| |\ \ |
|
| | |/
| |
| |
| |
| |
| | |
Multi-line doc-strings should end on a new, separate line.
Change-Id: I4cf0cfe92b634ef77971863a4df41ef43531bc20
|
| |/
|
|
|
|
|
|
|
|
|
| |
Regression fix from 6b16c8731c44e4a6c80b803f3e8afdd88386d577, cannot
build instances through cells.
The RPC dispatcher dislikes floats for version numbers.
bug 1190371
Change-Id: I18994ce8a524f88910cfe37c9b302296ce30102f
|
| |\ |
|
| | |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
Add a function "get_compute_api_class_name" within nova.compute
that returns nova.compute.cells_api.ComputeCellsAPI if cell is
enabled and this cell is an API cell, and returns compute.api.API
otherwise.
Add an option "cell_type" to the config in group "cells".
Use the default value of "cell_type" (None) for legacy configuration.
Change-Id: I32f5ccf789c657b563c165bfa8244e819b1a79a6
Fixes: bug #1049249
|
| | |
| |
| |
| |
| |
| |
| |
| | |
The total RAM and the available RAM are stored in memory of CellStateManager.
This API gets the available slots per flavor for a given cell.
Implements: blueprint get-cell-free-ram
Change-Id: I2a6dbb8835cad04f3ee058c3012490782d7c8e67
|
| |/
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
This prepares for having the conductor query the scheduler for a list of
hosts to build an instance on. In order to accomplish this the API
sends a build_instances message to conductor, or spawns a greenthread in
local mode, rather than sending a message to the scheduler. This is
being done so that conductor can handle the orchestration of long
running tasks like spawning instances. By making this move, the API is
free to return to the caller while conductor queries the scheduler for a
host to provision to.
In the case of cells the build_instances message first goes to the
cells scheduler in order to pick a cell to send it to, and then it is
sent to the conductor in that cell.
Part of bp query-scheduler
Change-Id: I4539888e78ebdbb8cef6647273b959a012280110
|
| |
|
|
|
|
| |
Simple indent level fix
Change-Id: Ic137259f9461e767ecd256d9ac1297256bd9dbfe
|
| |
|
|
|
|
|
| |
Give negative weight to child cells that have not recently sent
capability or capacity updates to their parent cell.
Change-Id: I7cada3e1b6f04c48b71c82d8e0a8527e44674abd
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
This adds filtering and weighing support to the cells scheduler.
Adds the following config options to the 'cells' group:
scheduler_filter_classes -- list of filter classes
scheduler_weight_classes -- list of weight classes
Adds a couple of weighing modules as defaults (which removes the random
cell selection):
ram_by_instance_type: Select cells with the most capacity for the
instance type being requested.
weight_offset: Allows modifying the DB to weight a particular cell
(useful for disabling a cell)
Adds a filter class (TargetCellFilter) that allows specifying a scheduler
hint to direct a build to a particular cell if you're an admin.
DocImpact
Implements blueprint cells-filter-scheduler
Change-Id: I027c5734e3d6134127fcd4dd28b8ff39047416dc
|
| |
|
|
|
|
|
|
|
|
|
|
| |
Every call to get_instance_nw_info() updates an instance's info_cache.
The purpose of this is to make sure we're constantly healing the
info_cache table. However, this causes a lot of unneeded updates
traveling up to the API cell. Cells has its own periodic task that
heals all instance data.
Fixes bug 1180304
Change-Id: I07774712a6358999fd1fdd0f5a90c6f05e3d8d6e
|
| |\ |
|
| | |
| |
| |
| |
| |
| | |
Remove use of locals() from nova/cells/* to satisfy pyflakes, etc.
Change-Id: If430226b84ce1fa974771ea1ed5b8d50480a70c0
|
| |\ \
| |/
|/| |
|
| | |
| |
| |
| |
| |
| | |
Extra whitespace cleanup in nova/cells/messaging.py
Change-Id: I000b2585ab9018af42f25bc83e7e0b0c2bd92e5a
|
| |/
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Adds support for passing 'expected_vm_state' in an instance_update dict
much like the current support for 'expected_task_state'.
For cells, when the API cell receives an instance update containing a
vm_state of BUILDING, raise an exception if the instance is in some
other state. This addresses out-of-order messaging issues that can
cause an instance to appear to have a huge delay going ACTIVE. (A
periodic task run can later heal the state, but it can take a long
while)
Fixes bug 1180283
Change-Id: I64252b30e2596812f3b84da64b1fc8681661d7f8
|
| |
|
|
|
|
|
| |
The lockfile module has a new convenience API which sets the lockfile prefix.
Using this API, the prefix is not required everytime synchronized is used.
Change-Id: Iac1cfcc83b59108164de924d20127c1cf4dd7dcd
|
| |
|
|
|
|
|
| |
Convert nova to using the oslo periodic tasks implementation. There
are no functional changes in this review.
Change-Id: I767e0ad17781d5f9d5e987e0a4ad65796243ae5c
|
| |\ |
|
| | |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
This patch adds an rpc API that is exposed by all services. The methods
in this API exist in their own namespace and are versioned independently
of the main API for the service.
The first method for this API is a simple ping() method. This method
exists in the conductor rpc API already, and could be more generally
useful. Other methods will be added in later patches.
The base rpc API will be exposed from all services automatically unless
they override the create_rpc_dispatcher method in the base manager
class. All services need to pass a service_name into the base manager
constructor. Some services already did this, but now it's needed for
all of them.
Implements blueprint base-rpc-api.
Change-Id: I02ab1970578bc53ba26461b533d06d1055c2d88e
|
| |/
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
In the nova.api.openstack.compute.contrib.services:
* Make update (enable/disable) service work
In nova.compute.api.api.HostAPI:
Add - service_update - Used by openstack api's services.py
In nova.compute.api.cells_api.HostAPI:
Add - service_update - Used by openstack api's services.py
In cells:
* Increase API version from 1.6 to 1.7
* Add service_update
Fixes bug #1150499
Change-Id: I5651bd5bc328692df82f4d9da27d390a8c95e03f
|
| |
|
|
|
|
|
| |
Remove a lot of getLogger lines and imports of logging in modules
which never use that functionality.
Change-Id: Icdaee2c540980412b000d02ebf1ec568dcf5b38a
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
The (relatively recent) security fixes for consoleauth do not work
with cells because consoleauth and the compute manager for the instance
talk to different rabbit servers. consoleauth is in the API cell and
the compute manager is in a child cell.
This patch adds code to proxy the following via cells:
1) compute -> consoleauth's delete_tokens_for_instance()
2) consoleauth -> compute's validate_console_port()
Also: On instance deletion when the compute manager tells consoleauth to
delete tokens for the instance, it's not necessary to do an rpc.call and
block. The only purpose it could serve would be log a traceback on failure
on the compute manager side, but that seems unnecessary. There's no
return value. This patch changes it to an rpc.cast instead.
Fixes bug 1154755
Change-Id: Ic763f2a5c0dcff7b7ccfac5927680e7881605f61
|
| |\ |
|
| | |
| |
| |
| |
| |
| |
| |
| |
| | |
If you try to split a cell and item, with no path!to!cell@ in it, it'll
now return None for the cell, instead causing a ValueError when trying
to split the result.
Change-Id: I228b9f3b0f63f8c7a6004b3206f5312ed2a878bc
Fixes: bug #1153841
|
| |\ \
| |/
|/| |
|
| | |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
This removes the entire relationship between an instance and the flavor
it was created from. As such, it removes two tests entirely which
examined the old behavior.
This is one change in a series aimed at removing the use of instance-linked
instance_type objects, in favor of the decoupled type data in
system_metadata. See bug 1140119 for more details.
Change-Id: I8b525a900bf2dc6b193e54aae35fc32248e4cff4
|
| |\ \
| |/
|/| |
|
| | |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
Add a 'reserve_percent' config flag to cells to control the
maximum free capacity that a child cell will be advertised to its
parent(s).
This gives the ability to leave some reserve capacity
in child cells for operational maintenance.
Change-Id: I1dae1eae4f61ca8079c6f24e60176c31fd8a759d
|
| |\ \ |
|
| | |/
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
In a cells setup an instance action is recorded at the global cell level
while events try to get recorded in a child cell compute node or
scheduler. The event recording fails because it can't find an action to
link to. This patch adds the recording of actions at the child cell
level, and changes the API extension to query the db in a child cell for
the record of actions and events.
This does not address the fact that an action is recorded at the global
cell level.
Bug 1132935
Change-Id: I5831f146397e7afa2d93d26c5d6f9abb9bc6670d
|
| |/
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
If instance_info_cache_update() finds that the entry doesn't exist, it
attempts to create an entry, but it didn't use all of the data. This
patch fixes that.
Also if the info_cache entry was found to be deleted, the old code would
attempt to create a new entry. This would have failed with
DBDuplicateEntry.. Instead, raise InstanceInfoCacheNotFound, which is
more appropriate. (It doesn't seem we actually ever hit this case.)
Fixes bug 1131594
Change-Id: Id008faf5c4a48ab6a04e75796b7e61dea102acc9
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
The cfg API is now available via the oslo-config library, so switch to
it and remove the copied-and-pasted version.
Add the 2013.1b4 tarball to tools/pip-requires - this will be changed
to 'oslo-config>=2013.1' when oslo-config is published to pypi. This
will happen in time for grizzly final.
Add dependency_links to setup.py so that oslo-config can be installed
from the tarball URL specified in pip-requires.
Remove the 'deps = pep8==1.3.3' from tox.ini as it means all the other
deps get installed with easy_install which can't install oslo-config
from the URL.
Make tools/hacking.py include oslo in IMPORT_EXCEPTIONS like it already
does for paste. It turns out imp.find_module() doesn't correct handle
namespace packages.
Retain dummy cfg.py file until keystoneclient middleware has been
updated (I18c450174277c8e2d15ed93879da6cd92074c27a).
Change-Id: I4815aeb8a9341a31a250e920157f15ee15cfc5bc
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
| |
This patch introduces a new configuration option,
multi_instance_display_name_template, which makes
it so that all instances are given a unique
display_name and hostname when requesting that
multiple instances get created at the same time.
Implements bp multi-boot-instance-naming
DocImpact
Change-Id: Id8e7dac1adadbb101dd1027807867ab13d3b7e80
|
| |
|
|
|
|
|
|
| |
This removes the DB calls from the extension and moves them into
HostAPI(). The cells version of HostAPI() proxies them to the
appropriate cell or cells.
Change-Id: I17ff10e62d2f10b85a557edcc1509ca3b0d15a29
|
| |
|
|
|
|
|
|
|
| |
Adds task_log_get_all() call to HostAPI() so that we can use the local
DB when cells is disabled or proxy via cells if cells is enabled.
Adds task_log_get_all() call to cells.
Change-Id: I9e78c17fcf70f98903d0a26c1de3e2581b8977ad
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
| |
This will allow the hosts API extension to work. Calls to get service
information from the DB are proxied via cells.
When using the host extension, the 'id' and 'host' fields for
service/compute will be modified to have the cell prepended to it. One
can do a 'show' on a 'path!to!cell@id' to see details for a particular
host in the 'path!to!cell' cell, for instance.
Implements bp/nova-compute-cells
Change-Id: I8137fa64d2578acfc3d2457c231de2b0d69b96d8
|