Since LOG = getLogger() has been moved from the global scope
to the function scope (main), the rest of the module could
not find LOG. This patch makes LOG global again.
Fixes bug 1165262
Change-Id: I2607802dcbed64135f75011a02ebce95519e4ea1
Logging needs to be setup properly before we try to log
something. Fix a test case that loads the code but does
not execute the code that results in the LOG being setup
properly.
Fixes LP# 1161031
Change-Id: I9d5bc6b87cfb25243f00e17b532d4485dc4454e4
Originally, baremetal pxe/tilera driver managed two types of network
interfaces in two tables; provisioning interfaces in bm_nodes table
and non-provisioning (normal) interfaces in bm_interfaces table.
But, now actually both types are handled in the same way and there is
no difference between them except for which table they are in.
This patch moves the provisioning interfaces to bm_interfaces. However
it does not drop prov_mac_address in bm_nodes since VirtualPowerManager
still uses it to identify a target in a list of VMs returned by the
VM's host.
Change-Id: I5ce940e7127aa3b29ba7802612938dc5dbc3152f
As part of the move of plugins to entrypoints, take advantage of the
entrypoints based console scripts, which will make our command line scripts
available for unittesting.
Part of blueprint entrypoints-plugins
Co-authored-by: Michael Still <mikal@stillhq.com>
Change-Id: I5f17348b7b3cc896c92263dd518abb128757d81f
Drop these two columns:
* bm_nodes.prov_vlan_id
* bm_nodes.registration_status
And update related code, tests and api_samples.
Change-Id: Iadefc83a00ad9ae5a3bb39f357080299875bdf09
The function is not used anymore. It creates an instance of
BareMetalDeployment, which was removed in c20110d1.
Change-Id: I40b634f8cf0d4369f09cb61aca6f95a059e85d6d
blueprint add-tilera-to-baremetal.
The baremetal driver is a hypervisor driver for Openstack Nova
Compute. Within the Openstack framework, it has the same role
as the drivers for other hypervisors (libvirt, xen, etc). With
this patch set of tilera-backend, provisioning and management
of non-PXE tilera physical hardware is accomplished using
common cloud APIs and tools.
Change-Id: I356c06a07ace463779e3b84836d5000331e24814
Co-authored-by: Mikyung Kang <mkkang@isi.edu>
Co-authored-by: David Kang <dkang@isi.edu>
Co-authored-by: Ken Igarashi <igarashik@nttdocomo.co.jp>
Co-authored-by: Arata Notsu <notsu@virtualtech.jp>
Co-authored-by: Devananda van der Veen <devananda.vdv@gmail.com>
The type of CONF option virtual_power_ssh_port was incorrectly defaulted
to Str. This can cause Paramiko to raise when casting to %d.
Fixes bug 1157824.
Change-Id: I30ddd1ff0da45f8392085249f1bd2a539b201a7e
This patch corrects a issue with VPD when configured for virsh the
list running vms function attempts to execute $2 instead of the actual
command.
Fixes Bug 1154280
Change-Id: I6d06cc58fb0f2935c4341761908b914106bda916
Authored-by: Chris Krelle <nobodycam@gmail.com>
If a volume becomes inoperable (e.g. the ISCSI connection is severed)
and the user goes to reboot, the instance may enter a permanently halted
state.
The root cause is that a VBD that points to 'bad' volume prevents VM
operations ('reboot', 'start') from completing under XenServer.
The work around is to detect which volumes are bad, detach in the
virt-layer, retry the operation (or in the case of reboot, just 'start'
the halted instance), and then notify the compute manager via a
callback so it can detach the volume in Cinder.
Fixes bug 1148614
Change-Id: Id4e8e84bb5748cfa267c2a418f9405fd86829e8f
In Models by default type of deleted column is Integer, but bm tabels
use Boolean type for deleted columns.This produce bug in postgresql
(type mismatch).
At this moment we are not able to do any db migrations, so there is
only one way to fix this bug. Change type of deleted columns in Models
from Integer to Boolean.
In Havana we will be able to change deleted columns types to type of id
for bm tables and use soft_delete and UC as in rest of nova.
Fixes bug 1140294
Change-Id: Id56c4bbff7048ed5c746dc995380be9ba0a12c39
This path corrects a issue where is_power_on function can incorrectly match a
node if its name is a substring of another node.
I have also added a test for this.
fixes bug 1152676
Change-Id: Ic3b0b952d53dcd4464098f98879a84684efe22b2
Authored-by: Chris Krelle <nobodycam@gmail.com>
Baremetal PXE driver should read deploy_kernel_id & deploy_ramdisk_id
from the 'baremetal:' namespace within instance_type['extra_specs']
so that it doesn't conflict with ComputeCapabilitiesFilter any more.
Fixes bug 1129485.
Change-Id: I84b3acb2ed83dc2b1ff8f1a21ca1d95f7d25751a
While most hypervisors return a single - and constant - value from
driver.get_available_nodes, baremetal does not. When a node is deleted
from the baremetal database, it is no longer returned from
driver.get_available_nodes. However, Nova's compute_node record is not
directly updated.
This patch allows Compute Manager to detect missing nodes within
update_available_resources. It then invokes resource_tracker to update
the dead node and remove it from compute.
This in turn allows the ServiceGroup API to properly update the
servicegroup when a baremetal node is no longer in service.
Fixes bug 1138184
Change-Id: Icfff3f8e3099668806633a6a58a152b32ec8b49b
This patch adds the ablity to set ssh port, and use key based
authentication for VPD.
This patch adds config options:
virtual_power_ssh_port: port to ssh to on virtual power host
virtual_power_host_key: private key file for ssh auth
Note: Key file must be able to be read by user nova is running as.
This patch switches the default virtual_power_type from 'vbox'
to 'virsh' to match the most common usage.
Fix Bug 1136010
Change-Id: Id89878d63d26602bb3eacc2a2ce7902d9bd33d61
Authored-by: Chris Krelle <nobodycam@gmail.com>
...and remove the use of instance['extra_specs'] from the libvirt and
baremetal virt drivers. Also remove the hack in instance_update()
which places them there in the first place.
Fixes bug 1133572
Change-Id: I39e9fabb28b48dc52ec47f58d76b0bf2c6ee0204
The existing code would, no matter-what, skip the first migration when
running through the migrations tests. This makes the code
slightly counterintuitive (why skip the first one?), and is not very
flexible.
The reworked logic lets a migration raise a `NotImplementedError` to
signal that it doesn't support a `downgrade`. This lets the
walk-versions code treat the first-migration just like any other.
Change-Id: I19fd8ebc6075392cf9e573b8b4166291584b4a83
SQLAlchemy-migrate appears to support passing in a Column or a
column-name string into `drop_column`. In practice though, only the
column-name form actually works.
Change-Id: I1bcc28511d652df44f7168fb84c8be7dacd60cfd
DB exceptions have moved to openstack/common/db/exception module so that
they can be shared with multiple DB implementations.
Deadlock checking was also added to oslo to consolidate with
DuplicateKey checking. This allows us to clean up our
_retry_on_deadlock decorator in sqlalchemy/api.py
Fixes unrelated pep8 issue with duplicate test in test_compute also.
Change-Id: I7e985b384d1ef345e0d67c919b84b4faff869699
In patch ab9f8667c63d901f37d1662c5204fb2938be44fe, several
baremetal/db/api methods' exceptions were changed from InstanceNotFound
to NodeNotFound. The API extension for baremetal was not updated to
catch these, and this was not caught by unit testing. This resulted in
unhandled exceptions within nova-api if any baremetal node lacked an
associated interface.
While fixing that bug, a few other unit tests for the baremetal API
were added, and a missing exception was added to db/api bm_node_destroy.
Fixes bug 1131430.
Change-Id: I15f7624723754f9d7b217b609663a2d709acb056
A number of tests have never been run due to another function having
the same name. Duplicate names have been changed and additionally
pyflakes check will now fail in such situations.
Also fix ovs ethernet driver test which was incorrect.
Change-Id: Icd93528395e65a24194a6ec5dfb8025a820d29b5
Move some context related code from sqlalchemy into nova/context.py
where it can be used outside of sqlalchemy.
Change-Id: I6522a072132e27b42561435cb4fd671a2ece4867
Add 'instance_name' to bm_nodes table so that baremetal driver is able
to return the names of all instances it believes are still running.
Previously, baremetal.driver.list_instances was fetching all allocated
instances from baremetal database, then calling VirtAPI to get the
instance name. This would raise an InstanceNotFound exception for
deleted instances. This prevented ComputeManager from ever detecting
a running-but-deleted baremetal instance, and could leave baremetal
instances in an undeletable state.
Fixes bug 1096723.
Change-Id: Ifae532e8e70e97e48c589608cb3c7000bb6a7609
- add a new 'uuid' column to 'bm_nodes' table
- provide a new db/api method for accessing nodes by their uuid
- return this to Nova as the nodename / hypervisor_hostname
In this way, a baremetal node is uniquely identified to the user,
whether they use a per-compute baremetal db or global baremetal db.
It will also allow for an instance to be booted on a specific baremetal
node using a means akin to the current force-hosts (TBD in later patch).
Also, creates two new Exceptions to disambiguate between
InstanceNotFound and NodeNotFound / NodeNotFoundByUUID.
Change-Id: I81105a201588fdef31cffabdae260bb43017bcd1
This patch adds two new methods to baremetal/db/api:
- bm_node_get_associated
- bm_node_get_unassociated
which return a list of nodes either associated or not associated to a
Nova instance, as determined by the instance_uuid field, respectively.
Now, list_instances and get_available_nodes methods only fetch assocated
and unassociated nodes from the baremetal database, instead of fetching
all nodes.
Change-Id: Ib875d26d7b85a9dbf08c925a89802e2cd614e363
Improve the exception handling in baremetal driver spawn and destroy.
Adds unit tests for destroy to check that bm_node is disassociated
from instance_uuid only when destroy succeeds, and is set to ERROR state
(but still associated) if any exception is not handled.
Change-Id: I75853210d4883b352da9876a682dbb7288689541
Previously, baremetal driver.spawn returned as soon as the
machine power turned on, but before the user-image was deployed to the
hardware node, and long before the node was available on the network.
This meant the nova instance was marked as ACTIVE before provisioning
had actually finished. If the deploy failed and the baremetal node was
set to an ERROR state, the nova instance could still be left as ACTIVE
and the user was never informed of the error.
This patch introduces a LoopingCall to monitor the deployment status in
the baremetal database. As the deployment is performed by
nova-baremetal-deploy-helper, the database record is updated. Once the
deployment is complete, driver.spawn() sets the baremetal node status
and the nova instance status is also set properly. If an error occurs
during the deployment, an exception is raised within driver.spawn()
allowing nova to follow the normal cleanup and notify paths.
This also allows the baremetal PXE driver to delete cached image files
when a baremetal deployment fails.
Fixes bug 1088655.
Change-Id: I4feefd462fd956c9780995ec8b05b13e78278c8b
This patch introduces a few new baremetal states, which are used to
track the deploy process. Now, nova-baremetal-deploy-helper updates the
bm_nodes record directly when it begins and finishes deploying an image
to that node.
The next patch will add a LoopingCall inside driver.spawn() to wait for
the deploy to complete.
Also, since there can not be >1 active deployment per node, there
is no need to have a separate table for storing them. This patch drops
the table bm_deployments and adds the important information it contained
to bm_nodes. Since the previous behavior was to mark a deployment as
deleted once it completed, there is no need to copy any data from
bm_deployments prior to dropping the table -- assuming that no active
deployments are in process when the migration is run.
Since this is the first migration for the baremetal database, it also
adds a new test class, TestBaremetalMigrations, and refactors the
test_migrations.py file to allow for multiple test classes.
partially implements fix for bug 1096723
Change-Id: Iad30b462d49c88fc19babed43a2fb8540b1fad30
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
Baremetal virtual_power_driver now catches ProcessExecutionError coming
from ssh_execute and logs an exception. Requested actions (eg, power_on)
return an error state instead of raising an exception.
Change-Id: I8f66ba843e12de13f9a14d736f7bef2eda4ef85c
Baremetal PXE driver was fetching instance_type from the nova db.
Now that no-db-compute is done, that's not possible. Also, there's a
more efficient way -- just call extract_instance_type(instance)!
Baremetal unit tests should check for instance_types with swap = 0 and
with swap > 0. This required changing test/utils to include a
real copy of instance_types in instance['system_metadata'].
Change-Id: I2a91e5c026782946f6b01e4189ec85d30ba87583
This virtual_power_driver provides the ability for baremetal driver to
start/stop/reboot VMs within common dev/test environments. Its goal is to
approximate the same functionality as other PowerDrivers (eg. IPMI) within
a desktop development environments and within the devstack-gate environment.
Authored-by: Chris Krelle <nobodycam@gmail.com>
Co-authored-by: Devananda van der Veen <devananda.vdv@gmail.com>
Change-Id: I9935a9a30a166a9c28a9abb139c49f219a32ddd7
The primary purpose of this change is to provide the ability to
re-cache missing backing files on hard_reboot. The old
pre_block_migration function was already performing a very similar
operation. That function has been refactored to be idempotent and
renamed to _create_images_and_backing. The pre_block_migration
function is a wrapper, with some additional checking, around the
renamed function.
Image backend was also adjusted to look for either a missing backing
file or disk image, recaching or creating accordingly. It should
also be idempotent, never clobbering existing images.
Change-Id: Icf4c488d6db59e732b463d08d0606b428ee1e7b9
Bring in the new database code from oslo.
Uses get_session() from oslo as well as changing NovaBase to derive from
a common class.
Remove test_sqlalchemy.py now that this code is test in oslo.
Implements blueprint db-common.
Change-Id: I090754981c871250dd981cbbe1a08e7181440120
unlink_without_raise was logging exceptions when it failed to unlink a
file, which is confusing since it is often called on non-existing files.
create_link_without_raise was also logging exceptions when it failed
to create a symlink.
This patch corrects this behaviour; both functions now explicitly check
for the type of error they expect, and then suppress that. If another
type of OSError is encountered, a warning is logged. This patch also
adds unit tests for both functions.
fixes bug 1097931.
Change-Id: Ie36f59dce34a6c67765770c5f968c003003acc88
Baremetal PXE driver was failing to delete the per-instance tftpboot and
image directories which it created when the instance was deleted. This
happened partly because of dangling files within the directory, and
partly because 'unlink' does not remove directories and the error was
squelched.
Now, when destroy()ing an instance, PXE driver will call shutil.rmtree()
on the per-instance directories which it created.
Fixes bug 1101048.
Change-Id: I682d0264288add488ea23e5d5200357b7be52dd9
Use @markmc's suggestion to enhance LazyPluggable with an
optional config group. Also fix the baremetal database
backend option to use the "baremetal" config group.
Fixes LP #1093043
Change-Id: I28cf51a2962f516fcef4ced19e30c985220e86dc
Now that the hypervisor driver can specify what MAC addresses it
needs, overriding the MAC address during bare metal instance
provisioning is no longer appropriate.
Change-Id: I2b0790753297104ddd40a410c8acb5fdac97ad15
Baremetal PXE driver was aborting only if the kernel and ramdisk
specified in image metadata were None, but not if they were another
non-true value, such as "". Now, exception is raised if they are any
non-true value.
Fix bug 1100589.
Change-Id: I9783a14cc242e1b9db04d797c61d54b06d52c680