diff options
| author | Sleepsonthefloor <sleepsonthefloor@gmail.com> | 2010-08-14 07:08:34 -0700 |
|---|---|---|
| committer | Sleepsonthefloor <sleepsonthefloor@gmail.com> | 2010-08-14 07:08:34 -0700 |
| commit | 295a56c665be7b7461ff41141a93cffb79ab4909 (patch) | |
| tree | a6b3c39ca2dfa8cd0d9f96ad36040e35b81bda89 | |
| parent | 08a7da895690757a17fdab5e4aadeaf6ba9133d3 (diff) | |
| download | nova-295a56c665be7b7461ff41141a93cffb79ab4909.tar.gz nova-295a56c665be7b7461ff41141a93cffb79ab4909.tar.xz nova-295a56c665be7b7461ff41141a93cffb79ab4909.zip | |
remove more direct session interactions
| -rw-r--r-- | nova/compute/service.py | 16 | ||||
| -rw-r--r-- | 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') |
