Remove SnapshotImage from the database
Now that snapshot images are no longer supported, we can remove this code. Change-Id: I745581c2186f5a83d5315dee7f34ae9d97867473 Signed-off-by: Paul Belanger <pabelanger@redhat.com>
This commit is contained in:
parent
838e2a82c8
commit
8fb2b9a180
|
@ -48,25 +48,6 @@ from sqlalchemy.orm.session import Session, sessionmaker
|
|||
|
||||
metadata = MetaData()
|
||||
|
||||
snapshot_image_table = Table(
|
||||
'snapshot_image', metadata,
|
||||
Column('id', Integer, primary_key=True),
|
||||
Column('provider_name', String(255), index=True, nullable=False),
|
||||
Column('image_name', String(255), index=True, nullable=False),
|
||||
# Image hostname
|
||||
Column('hostname', String(255)),
|
||||
# Version indicator (timestamp)
|
||||
Column('version', Integer),
|
||||
# Provider assigned id for this image
|
||||
Column('external_id', String(255)),
|
||||
# Provider assigned id of the server used to create the snapshot
|
||||
Column('server_external_id', String(255)),
|
||||
# One of the above values
|
||||
Column('state', Integer),
|
||||
# Time of last state change
|
||||
Column('state_time', Integer),
|
||||
mysql_engine='InnoDB',
|
||||
)
|
||||
node_table = Table(
|
||||
'node', metadata,
|
||||
Column('id', Integer, primary_key=True),
|
||||
|
@ -123,35 +104,6 @@ job_table = Table(
|
|||
)
|
||||
|
||||
|
||||
class SnapshotImage(object):
|
||||
def __init__(self, provider_name, image_name, hostname=None, version=None,
|
||||
external_id=None, server_external_id=None, state=BUILDING):
|
||||
self.provider_name = provider_name
|
||||
self.image_name = image_name
|
||||
self.hostname = hostname
|
||||
self.version = version
|
||||
self.external_id = external_id
|
||||
self.server_external_id = server_external_id
|
||||
self.state = state
|
||||
|
||||
def delete(self):
|
||||
session = Session.object_session(self)
|
||||
session.delete(self)
|
||||
session.commit()
|
||||
|
||||
@property
|
||||
def state(self):
|
||||
return self._state
|
||||
|
||||
@state.setter
|
||||
def state(self, state):
|
||||
self._state = state
|
||||
self.state_time = int(time.time())
|
||||
session = Session.object_session(self)
|
||||
if session:
|
||||
session.commit()
|
||||
|
||||
|
||||
class Node(object):
|
||||
def __init__(self, provider_name, label_name, target_name, az,
|
||||
hostname=None, external_id=None, ip=None, ip_private=None,
|
||||
|
@ -247,10 +199,6 @@ mapper(Node, node_table,
|
|||
backref='node')))
|
||||
|
||||
|
||||
mapper(SnapshotImage, snapshot_image_table,
|
||||
properties=dict(_state=snapshot_image_table.c.state))
|
||||
|
||||
|
||||
class NodeDatabase(object):
|
||||
def __init__(self, dburi):
|
||||
engine_kwargs = dict(echo=False, pool_recycle=3600)
|
||||
|
@ -290,63 +238,6 @@ class NodeDatabaseSession(object):
|
|||
def delete(self, obj):
|
||||
self.session().delete(obj)
|
||||
|
||||
def getProviders(self):
|
||||
return [
|
||||
x.provider_name for x in
|
||||
self.session().query(SnapshotImage).distinct(
|
||||
snapshot_image_table.c.provider_name).all()]
|
||||
|
||||
def getImages(self, provider_name):
|
||||
return [
|
||||
x.image_name for x in
|
||||
self.session().query(SnapshotImage).filter(
|
||||
snapshot_image_table.c.provider_name == provider_name
|
||||
).distinct(snapshot_image_table.c.image_name).all()]
|
||||
|
||||
def getSnapshotImages(self, state=None):
|
||||
exp = self.session().query(SnapshotImage).order_by(
|
||||
snapshot_image_table.c.provider_name,
|
||||
snapshot_image_table.c.image_name)
|
||||
if state:
|
||||
exp = exp.filter(snapshot_image_table.c.state == state)
|
||||
return exp.all()
|
||||
|
||||
def getSnapshotImage(self, image_id):
|
||||
images = self.session().query(SnapshotImage).filter_by(
|
||||
id=image_id).all()
|
||||
if not images:
|
||||
return None
|
||||
return images[0]
|
||||
|
||||
def getSnapshotImageByExternalID(self, provider_name, external_id):
|
||||
images = self.session().query(SnapshotImage).filter_by(
|
||||
provider_name=provider_name,
|
||||
external_id=external_id).all()
|
||||
if not images:
|
||||
return None
|
||||
return images[0]
|
||||
|
||||
def getOrderedReadySnapshotImages(self, provider_name, image_name):
|
||||
images = self.session().query(SnapshotImage).filter(
|
||||
snapshot_image_table.c.provider_name == provider_name,
|
||||
snapshot_image_table.c.image_name == image_name,
|
||||
snapshot_image_table.c.state == READY).order_by(
|
||||
snapshot_image_table.c.version.desc()).all()
|
||||
return images
|
||||
|
||||
def getCurrentSnapshotImage(self, provider_name, image_name):
|
||||
images = self.getOrderedReadySnapshotImages(provider_name, image_name)
|
||||
|
||||
if not images:
|
||||
return None
|
||||
return images[0]
|
||||
|
||||
def createSnapshotImage(self, *args, **kwargs):
|
||||
new = SnapshotImage(*args, **kwargs)
|
||||
self.session().add(new)
|
||||
self.commit()
|
||||
return new
|
||||
|
||||
def getNodes(self, provider_name=None, label_name=None, target_name=None,
|
||||
state=None):
|
||||
exp = self.session().query(Node).order_by(
|
||||
|
|
|
@ -873,25 +873,6 @@ class SubNodeLauncher(threading.Thread):
|
|||
return dt
|
||||
|
||||
|
||||
class ImageDeleter(threading.Thread):
|
||||
log = logging.getLogger("nodepool.ImageDeleter")
|
||||
|
||||
def __init__(self, nodepool, snap_image_id):
|
||||
threading.Thread.__init__(self,
|
||||
name='ImageDeleter for %s' % snap_image_id)
|
||||
self.snap_image_id = snap_image_id
|
||||
self.nodepool = nodepool
|
||||
|
||||
def run(self):
|
||||
try:
|
||||
with self.nodepool.getDB().getSession() as session:
|
||||
snap_image = session.getSnapshotImage(self.snap_image_id)
|
||||
self.nodepool._deleteImage(session, snap_image)
|
||||
except Exception:
|
||||
self.log.exception("Exception deleting image %s:" %
|
||||
self.snap_image_id)
|
||||
|
||||
|
||||
class NodePool(threading.Thread):
|
||||
log = logging.getLogger("nodepool.NodePool")
|
||||
|
||||
|
@ -1295,11 +1276,6 @@ class NodePool(threading.Thread):
|
|||
"on startup" % node.id)
|
||||
node.state = nodedb.DELETE
|
||||
|
||||
for image in session.getSnapshotImages(state=nodedb.BUILDING):
|
||||
self.log.info("Setting building image id: %s to delete "
|
||||
"on startup" % image.id)
|
||||
image.state = nodedb.DELETE
|
||||
|
||||
def run(self):
|
||||
try:
|
||||
self.startup()
|
||||
|
@ -1575,18 +1551,8 @@ class NodePool(threading.Thread):
|
|||
provider.name,
|
||||
meta['provider_name']))
|
||||
continue
|
||||
snap_image_id = meta.get('snapshot_image_id')
|
||||
node_id = meta.get('node_id')
|
||||
if snap_image_id:
|
||||
if session.getSnapshotImage(snap_image_id):
|
||||
continue
|
||||
self.log.warning("Deleting leaked instance %s (%s) "
|
||||
"in %s for snapshot image id: %s" % (
|
||||
server['name'], server['id'],
|
||||
provider.name,
|
||||
snap_image_id))
|
||||
self.deleteInstance(provider.name, server['id'])
|
||||
elif node_id:
|
||||
if node_id:
|
||||
if session.getNode(node_id):
|
||||
continue
|
||||
self.log.warning("Deleting leaked instance %s (%s) "
|
||||
|
|
Loading…
Reference in New Issue