diff options
| author | Trey Morris <trey.morris@rackspace.com> | 2011-04-11 14:16:30 -0500 |
|---|---|---|
| committer | Trey Morris <trey.morris@rackspace.com> | 2011-04-11 14:16:30 -0500 |
| commit | 1845c5df145251f1e90709a91cc02ee5ec787e2f (patch) | |
| tree | 034ab29848268c640bafbb5cfbb0bc63adb1bd32 /nova/db | |
| parent | 7eedf3f69ca1bbd1f44252fa01fb4f2676735eb2 (diff) | |
network manager changes, compute changes, various other
Diffstat (limited to 'nova/db')
| -rw-r--r-- | nova/db/api.py | 3 | ||||
| -rw-r--r-- | nova/db/sqlalchemy/api.py | 28 | ||||
| -rw-r--r-- | nova/db/sqlalchemy/migrate_repo/versions/014_mac_address_table.py | 9 | ||||
| -rw-r--r-- | nova/db/sqlalchemy/models.py | 3 |
4 files changed, 29 insertions, 14 deletions
diff --git a/nova/db/api.py b/nova/db/api.py index 036caa585..bc146e8f1 100644 --- a/nova/db/api.py +++ b/nova/db/api.py @@ -313,6 +313,7 @@ def migration_get_by_instance_and_status(context, instance_id, status): return IMPL.migration_get_by_instance_and_status(context, instance_id, status) + #################### @@ -419,6 +420,8 @@ def mac_address_delete(context, mac_address): def mac_address_delete_by_instance(context, instance_id): """delete mac address record in teh database""" return IMPL.mac_address_delete_by_instance(context, instance_id) + + #################### diff --git a/nova/db/sqlalchemy/api.py b/nova/db/sqlalchemy/api.py index e69a5c680..3b9d95752 100644 --- a/nova/db/sqlalchemy/api.py +++ b/nova/db/sqlalchemy/api.py @@ -773,17 +773,20 @@ def mac_address_create(context, values): mac_address_ref = models.MacAddress() mac_address_ref.update(values) mac_address_ref.save() - - session = get_session() - with session.begin(): - instance = instance_get(context, instance_id, session=session) - network = network_get(context, network_id, session=session) - mac_address.instance = instance - mac_address.network = network - mac_address_ref.save(session=session) - return mac_address_ref +# instance_id = values['instance_id'] +# network_id = values['network_id'] +# +# session = get_session() +# with session.begin(): +# instance = instance_get(context, instance_id, session=session) +# network = network_get(context, network_id, session=session) +# mac_address.instance = instance +# mac_address.network = network +# mac_address_ref.save(session=session) +# return mac_address_ref +@require_context def mac_address_get(context, mac_address): """gets a mac address from the table @@ -811,7 +814,7 @@ def mac_address_get_all_by_instance(context, instance_id): return mac_address_refs -@require_context +@require_admin_context def mac_address_get_all_by_network(context, network_id): """gets all mac addresses for instance @@ -840,7 +843,8 @@ def mac_address_delete(context, mac_address): @require_context def mac_address_delete_by_instance(context, instance_id): - """delete mac address record in teh database + """delete mac address records in the database that are associated + with the instance given by instance_id context = request context object instance_id = instance to remove macs for @@ -1407,6 +1411,8 @@ def network_get_by_cidr(context, cidr): @require_admin_context def network_get_by_instance(_context, instance_id): + # note this uses fixed IP to get to instance + # only works for networks the instance has an IP from session = get_session() rv = session.query(models.Network).\ filter_by(deleted=False).\ diff --git a/nova/db/sqlalchemy/migrate_repo/versions/014_mac_address_table.py b/nova/db/sqlalchemy/migrate_repo/versions/014_mac_address_table.py index b8b57b284..0c482bd71 100644 --- a/nova/db/sqlalchemy/migrate_repo/versions/014_mac_address_table.py +++ b/nova/db/sqlalchemy/migrate_repo/versions/014_mac_address_table.py @@ -27,7 +27,7 @@ mac_addresses = Table('mac_addresses', meta, Column('deleted_at', DateTime(timezone=False)), Column('deleted', Boolean(create_constraint=True, name=None)), Column('id', Integer(), primary_key=True, nullable=False), - Column('mac_address', + Column('address', String(length=255, convert_unicode=False, assert_unicode=None, unicode_error=None, _warn_on_bytestring=False), unique=True), @@ -62,7 +62,7 @@ def upgrade(migrate_engine): s = select([instances.c.id, instances.c.mac_address, fixed_ips.c.network_id], fixed_ips.c.instance_id == instances.c.id) - keys = ['instance_id', 'mac_address', 'network_id'] + keys = ['instance_id', 'address', 'network_id'] join_list = [dict(zip(keys, row)) for row in s.execute()] logging.info("join list |%s|", join_list) @@ -72,3 +72,8 @@ def upgrade(migrate_engine): # drop the mac_address column from instances c.drop + + +def downgrade(migrate_engine): + logging.error(_("Can't downgrade without losing data")) + raise Exception diff --git a/nova/db/sqlalchemy/models.py b/nova/db/sqlalchemy/models.py index 42d8c1512..544070aa9 100644 --- a/nova/db/sqlalchemy/models.py +++ b/nova/db/sqlalchemy/models.py @@ -209,6 +209,7 @@ class Instance(BASE, NovaBase): hostname = Column(String(255)) host = Column(String(255)) # , ForeignKey('hosts.id')) + # aka flavor instance_type = Column(String(255)) user_data = Column(Text) @@ -516,7 +517,7 @@ class MacAddress(BASE, NovaBase): """Represents a mac address used by an instance""" __tablename__ = 'mac_addresses' id = Column(Integer, primary_key=True) - mac_address = Column(String(255), unique=True) + address = Column(String(255), unique=True) network_id = Column(Integer, ForeignKey('networks.id'), nullable=False) network = relationship(Network, backref=backref('mac_addresses')) instance_id = Column(Integer, ForeignKey('instances.id'), nullable=False) |
