summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSleepsonthefloor <sleepsonthefloor@gmail.com>2010-08-14 07:08:34 -0700
committerSleepsonthefloor <sleepsonthefloor@gmail.com>2010-08-14 07:08:34 -0700
commit295a56c665be7b7461ff41141a93cffb79ab4909 (patch)
treea6b3c39ca2dfa8cd0d9f96ad36040e35b81bda89
parent08a7da895690757a17fdab5e4aadeaf6ba9133d3 (diff)
downloadnova-295a56c665be7b7461ff41141a93cffb79ab4909.tar.gz
nova-295a56c665be7b7461ff41141a93cffb79ab4909.tar.xz
nova-295a56c665be7b7461ff41141a93cffb79ab4909.zip
remove more direct session interactions
-rw-r--r--nova/compute/service.py16
-rw-r--r--nova/models.py12
2 files changed, 14 insertions, 14 deletions
diff --git a/nova/compute/service.py b/nova/compute/service.py
index dc6a93bdb..4e6a2c944 100644
--- a/nova/compute/service.py
+++ b/nova/compute/service.py
@@ -68,15 +68,13 @@ class ComputeService(service.Service):
return defer.succeed('PONG')
def get_instance(self, instance_id):
- session = models.create_session()
- return session.query(models.Instance).filter_by(id=instance_id).one()
+ return models.Instance.find(instance_id)
def update_state(self, instance_id):
- session = models.create_session()
- inst = session.query(models.Instance).filter_by(id=instance_id).one()
+ inst = models.Instance.find(instance_id)
# FIXME(ja): include other fields from state?
inst.state = self._conn.get_info(instance_id)['state']
- session.flush()
+ inst.save()
@exception.wrap_exception
def adopt_instances(self):
@@ -112,18 +110,17 @@ class ComputeService(service.Service):
def run_instance(self, instance_id, **_kwargs):
""" launch a new instance with specified options """
logging.debug("Starting instance %s..." % (instance_id))
- session = models.create_session()
- inst = session.query(models.Instance).filter_by(id=instance_id).first()
+ inst = models.Instance.find(instance_id)
# NOTE(vish): passing network type allows us to express the
# network without making a call to network to find
# out which type of network to setup
network_service.setup_compute_network(inst)
inst.node_name = FLAGS.node_name
- session.commit()
+ inst.save()
# TODO(vish) check to make sure the availability zone matches
inst.set_state(power_state.NOSTATE, 'spawning')
- session.commit()
+ inst.save()
try:
yield self._conn.spawn(inst)
@@ -177,7 +174,6 @@ class ComputeService(service.Service):
# FIXME: Abstract this for Xen
logging.debug("Getting console output for %s" % (instance_id))
- session = models.create_session()
inst = self.get_instance(instance_id)
if FLAGS.connection_type == 'libvirt':
diff --git a/nova/models.py b/nova/models.py
index 79273965b..62341a24c 100644
--- a/nova/models.py
+++ b/nova/models.py
@@ -33,6 +33,12 @@ class NovaBase(object):
session = NovaBase.get_session()
return session.query(cls).all()
+ @classmethod
+ def find(cls, obj_id):
+ session = NovaBase.get_session()
+ #print cls
+ return session.query(cls).filter_by(id=obj_id).one()
+
def save(self):
session = NovaBase.get_session()
session.add(self)
@@ -144,15 +150,13 @@ class Volume(Base):
blade_id = Column(Integer)
-def create_engine():
- return NovaBase.get_engine();
def create_session(engine=None):
return NovaBase.get_session()
if __name__ == '__main__':
- engine = create_engine()
- session = create_session(engine)
+ engine = NovasBase.create_engine()
+ session = NovasBase.create_session(engine)
instance = Instance(image_id='as', ramdisk_id='AS', user_id='anthony')
user = User(id='anthony')