From 295a56c665be7b7461ff41141a93cffb79ab4909 Mon Sep 17 00:00:00 2001 From: Sleepsonthefloor Date: Sat, 14 Aug 2010 07:08:34 -0700 Subject: remove more direct session interactions --- nova/compute/service.py | 16 ++++++---------- nova/models.py | 12 ++++++++---- 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') -- cgit