summaryrefslogtreecommitdiffstats
path: root/nova/db
diff options
context:
space:
mode:
authorTrey Morris <trey.morris@rackspace.com>2011-04-11 14:16:30 -0500
committerTrey Morris <trey.morris@rackspace.com>2011-04-11 14:16:30 -0500
commit1845c5df145251f1e90709a91cc02ee5ec787e2f (patch)
tree034ab29848268c640bafbb5cfbb0bc63adb1bd32 /nova/db
parent7eedf3f69ca1bbd1f44252fa01fb4f2676735eb2 (diff)
network manager changes, compute changes, various other
Diffstat (limited to 'nova/db')
-rw-r--r--nova/db/api.py3
-rw-r--r--nova/db/sqlalchemy/api.py28
-rw-r--r--nova/db/sqlalchemy/migrate_repo/versions/014_mac_address_table.py9
-rw-r--r--nova/db/sqlalchemy/models.py3
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)