diff options
| author | Rick Harris <rconradharris@gmail.com> | 2011-09-21 22:14:15 +0000 |
|---|---|---|
| committer | Tarmac <> | 2011-09-21 22:14:15 +0000 |
| commit | d865a2a97c013a811c2c6baad00fa1eb95406c8d (patch) | |
| tree | e8a8881f91717d2f16b4de995f774e92f168e7b5 /nova/db | |
| parent | 221509abcdef0077e8c592c5e0a6ae3add78b007 (diff) | |
| parent | 4fb602fcbc2a7b0681e79454fe7c3f01110b1f0e (diff) | |
This patch adds instance progress which is used by the OpenStack API to indicate how far along the current executing action is (BUILD/REBUILD, MIGRATION/RESIZE).
For the first cut, we decided to keep it simple and compute progress by counting discrete steps. This is not ideal since some steps, in particular, steps which involve transferring large amounts of data over the network, take *much* longer than others. A better approximation would account for the data-transferred to the destination host, since in most cases, this dominates the time spent.
In addition to adding progress, this patch:
- Allows resizes to use same host for source and destination which is useful for dev environments without a second host. This is enabled by the --allow_resize_to_same_host flag.
- Fixes a bug in the glance and migration XenAPI plugins where the VHDs were being copied into the SR in the wrong order. Before the base-copy was copied first meaning it was possible for snapwatchd to see the base-copy before the dependent cow was present. It was treat the base_copy as an unreferenced parent, and GC it.
- Additional refactoring and cleanups.
Diffstat (limited to 'nova/db')
| -rw-r--r-- | nova/db/sqlalchemy/migrate_repo/versions/049_add_instances_progress.py | 43 | ||||
| -rw-r--r-- | nova/db/sqlalchemy/models.py | 2 |
2 files changed, 45 insertions, 0 deletions
diff --git a/nova/db/sqlalchemy/migrate_repo/versions/049_add_instances_progress.py b/nova/db/sqlalchemy/migrate_repo/versions/049_add_instances_progress.py new file mode 100644 index 000000000..d23d52e80 --- /dev/null +++ b/nova/db/sqlalchemy/migrate_repo/versions/049_add_instances_progress.py @@ -0,0 +1,43 @@ +# vim: tabstop=4 shiftwidth=4 softtabstop=4 + +# Copyright 2010 OpenStack LLC. +# +# 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. + +from sqlalchemy import * +from migrate import * + +from nova import log as logging + +meta = MetaData() + +instances = Table('instances', meta, + Column("id", Integer(), primary_key=True, nullable=False)) + +# Add progress column to instances table +progress = Column('progress', Integer()) + + +def upgrade(migrate_engine): + meta.bind = migrate_engine + + try: + instances.create_column(progress) + except Exception: + logging.error(_("progress column not added to instances table")) + raise + + +def downgrade(migrate_engine): + meta.bind = migrate_engine + instances.drop_column(progress) diff --git a/nova/db/sqlalchemy/models.py b/nova/db/sqlalchemy/models.py index 33d740fbc..2261a1d09 100644 --- a/nova/db/sqlalchemy/models.py +++ b/nova/db/sqlalchemy/models.py @@ -241,6 +241,8 @@ class Instance(BASE, NovaBase): access_ip_v4 = Column(String(255)) access_ip_v6 = Column(String(255)) + progress = Column(Integer) + class VirtualStorageArray(BASE, NovaBase): """ |
