mirror of
https://gitlab.com/fdroid/fdroidserver.git
synced 2024-09-18 19:20:08 +02:00
removed useless vm validity check; attempted to fix vbox support
This commit is contained in:
parent
1b1d6b7d96
commit
358b00d7aa
@ -242,9 +242,6 @@ def vm_new_get_clean_builder(serverdir, reset=False):
|
|||||||
vm = vmtools.get_build_vm(serverdir)
|
vm = vmtools.get_build_vm(serverdir)
|
||||||
if reset:
|
if reset:
|
||||||
logging.info('resetting buildserver by request')
|
logging.info('resetting buildserver by request')
|
||||||
elif not vm.check_okay():
|
|
||||||
logging.info('resetting buildserver because it appears to be absent or broken')
|
|
||||||
reset = True
|
|
||||||
elif not vm.snapshot_exists('fdroidclean'):
|
elif not vm.snapshot_exists('fdroidclean'):
|
||||||
logging.info("resetting buildserver, because snapshot 'fdroidclean' is not present")
|
logging.info("resetting buildserver, because snapshot 'fdroidclean' is not present")
|
||||||
reset = True
|
reset = True
|
||||||
@ -259,7 +256,7 @@ def vm_new_get_clean_builder(serverdir, reset=False):
|
|||||||
vm.snapshot_create('fdroidclean')
|
vm.snapshot_create('fdroidclean')
|
||||||
else:
|
else:
|
||||||
logging.info('builserver ok: reverting to clean snapshot')
|
logging.info('builserver ok: reverting to clean snapshot')
|
||||||
vm.snapshot_revert('droidclean')
|
vm.snapshot_revert('fdroidclean')
|
||||||
vm.up()
|
vm.up()
|
||||||
|
|
||||||
return get_vagrant_sshinfo()
|
return get_vagrant_sshinfo()
|
||||||
|
@ -17,7 +17,7 @@
|
|||||||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
from os import remove as rmfile
|
from os import remove as rmfile
|
||||||
from os.path import isdir, isfile, join as joinpath, basename, abspath, expanduser
|
from os.path import isdir, isfile, join as joinpath, basename, abspath, expanduser, exists as pathexists
|
||||||
import math
|
import math
|
||||||
import json
|
import json
|
||||||
import tarfile
|
import tarfile
|
||||||
@ -134,9 +134,6 @@ class FDroidBuildVm():
|
|||||||
import vagrant
|
import vagrant
|
||||||
self.vgrnt = vagrant.Vagrant(root=srvdir, out_cm=vagrant.stdout_cm, err_cm=vagrant.stdout_cm)
|
self.vgrnt = vagrant.Vagrant(root=srvdir, out_cm=vagrant.stdout_cm, err_cm=vagrant.stdout_cm)
|
||||||
|
|
||||||
def check_okay(self):
|
|
||||||
return True
|
|
||||||
|
|
||||||
def up(self, provision=True):
|
def up(self, provision=True):
|
||||||
try:
|
try:
|
||||||
self.vgrnt.up(provision=provision)
|
self.vgrnt.up(provision=provision)
|
||||||
@ -145,9 +142,6 @@ class FDroidBuildVm():
|
|||||||
except subprocess.CalledProcessError as e:
|
except subprocess.CalledProcessError as e:
|
||||||
raise FDroidBuildVmException("could not bring up vm '%s'" % self.srvname) from e
|
raise FDroidBuildVmException("could not bring up vm '%s'" % self.srvname) from e
|
||||||
|
|
||||||
def snapshot_create(self, name):
|
|
||||||
raise NotImplementedError('not implemented, please use a sub-type instance')
|
|
||||||
|
|
||||||
def suspend(self):
|
def suspend(self):
|
||||||
logger.info('suspending buildserver')
|
logger.info('suspending buildserver')
|
||||||
try:
|
try:
|
||||||
@ -186,10 +180,6 @@ class FDroidBuildVm():
|
|||||||
logger.debug('pruning global vagrant status failed: %s', e)
|
logger.debug('pruning global vagrant status failed: %s', e)
|
||||||
|
|
||||||
def package(self, output=None, vagrantfile=None, keep_box_file=None):
|
def package(self, output=None, vagrantfile=None, keep_box_file=None):
|
||||||
previous_tmp_dir = joinpath(self.srvdir, '_tmp_package')
|
|
||||||
if isdir(previous_tmp_dir):
|
|
||||||
logger.info('found previous vagrant package temp dir \'%s\', deleting it', previous_tmp_dir)
|
|
||||||
shutil.rmtree(previous_tmp_dir)
|
|
||||||
self.vgrnt.package(output=output, vagrantfile=vagrantfile)
|
self.vgrnt.package(output=output, vagrantfile=vagrantfile)
|
||||||
|
|
||||||
def _vagrant_file_name(self, name):
|
def _vagrant_file_name(self, name):
|
||||||
@ -219,10 +209,23 @@ class FDroidBuildVm():
|
|||||||
boxname, boxpath)
|
boxname, boxpath)
|
||||||
shutil.rmtree(boxpath)
|
shutil.rmtree(boxpath)
|
||||||
|
|
||||||
|
def snapshot_create(self, snapshot_name):
|
||||||
|
raise NotImplementedError('not implemented, please use a sub-type instance')
|
||||||
|
|
||||||
|
def snapshot_list(self):
|
||||||
|
raise NotImplementedError('not implemented, please use a sub-type instance')
|
||||||
|
|
||||||
|
def snapshot_exists(self, snapshot_name):
|
||||||
|
raise NotImplementedError('not implemented, please use a sub-type instance')
|
||||||
|
|
||||||
|
def snapshot_revert(self, snapshot_name):
|
||||||
|
raise NotImplementedError('not implemented, please use a sub-type instance')
|
||||||
|
|
||||||
|
|
||||||
class LibvirtBuildVm(FDroidBuildVm):
|
class LibvirtBuildVm(FDroidBuildVm):
|
||||||
def __init__(self, srvdir):
|
def __init__(self, srvdir):
|
||||||
super().__init__(srvdir)
|
super().__init__(srvdir)
|
||||||
|
self.provider = 'libvirt'
|
||||||
import libvirt
|
import libvirt
|
||||||
|
|
||||||
try:
|
try:
|
||||||
@ -230,22 +233,6 @@ class LibvirtBuildVm(FDroidBuildVm):
|
|||||||
except libvirt.libvirtError as e:
|
except libvirt.libvirtError as e:
|
||||||
raise FDroidBuildVmException('could not connect to libvirtd: %s' % (e))
|
raise FDroidBuildVmException('could not connect to libvirtd: %s' % (e))
|
||||||
|
|
||||||
def check_okay(self):
|
|
||||||
import libvirt
|
|
||||||
imagepath = joinpath('var', 'lib', 'libvirt', 'images',
|
|
||||||
'%s.img' % self._vagrant_file_name(self.srvname))
|
|
||||||
image_present = False
|
|
||||||
if isfile(imagepath):
|
|
||||||
image_present = True
|
|
||||||
try:
|
|
||||||
self.conn.lookupByName(self.srvname)
|
|
||||||
domain_defined = True
|
|
||||||
except libvirt.libvirtError:
|
|
||||||
pass
|
|
||||||
if image_present and domain_defined:
|
|
||||||
return True
|
|
||||||
return False
|
|
||||||
|
|
||||||
def destroy(self):
|
def destroy(self):
|
||||||
|
|
||||||
super().destroy()
|
super().destroy()
|
||||||
@ -384,8 +371,13 @@ class LibvirtBuildVm(FDroidBuildVm):
|
|||||||
|
|
||||||
|
|
||||||
class VirtualboxBuildVm(FDroidBuildVm):
|
class VirtualboxBuildVm(FDroidBuildVm):
|
||||||
|
|
||||||
|
def __init__(self, srvdir):
|
||||||
|
super().__init__(srvdir)
|
||||||
|
self.provider = 'virtualbox'
|
||||||
|
|
||||||
def snapshot_create(self, snapshot_name):
|
def snapshot_create(self, snapshot_name):
|
||||||
raise NotImplemented('TODO')
|
logger.info("creating snapshot '%s' for vm '%s'", snapshot_name, self.srvname)
|
||||||
try:
|
try:
|
||||||
_check_call(['VBoxManage', 'snapshot', self.srvname, 'take', 'fdroidclean'], cwd=self.srvdir)
|
_check_call(['VBoxManage', 'snapshot', self.srvname, 'take', 'fdroidclean'], cwd=self.srvdir)
|
||||||
logger.info('...waiting a sec...')
|
logger.info('...waiting a sec...')
|
||||||
@ -395,5 +387,28 @@ class VirtualboxBuildVm(FDroidBuildVm):
|
|||||||
'of virtualbox vm %s'
|
'of virtualbox vm %s'
|
||||||
% self.srvname) from e
|
% self.srvname) from e
|
||||||
|
|
||||||
def snapshot_available(self, snapshot_name):
|
def snapshot_list(self):
|
||||||
raise NotImplemented('TODO')
|
try:
|
||||||
|
o = _check_output(['VBoxManage', 'snapshot',
|
||||||
|
self.srvname, 'list',
|
||||||
|
'--details'], cwd=self.srvdir)
|
||||||
|
return o
|
||||||
|
except subprocess.CalledProcessError as e:
|
||||||
|
raise FDroidBuildVmException("could not list snapshots "
|
||||||
|
"of virtualbox vm '%s'"
|
||||||
|
% (self.srvname)) from e
|
||||||
|
|
||||||
|
def snapshot_exists(self, snapshot_name):
|
||||||
|
return 'fdroidclean' in self.snapshot_list()
|
||||||
|
|
||||||
|
def snapshot_revert(self, snapshot_name):
|
||||||
|
logger.info("reverting vm '%s' to snapshot '%s'",
|
||||||
|
self.srvname, snapshot_name)
|
||||||
|
try:
|
||||||
|
p = _check_call(['VBoxManage', 'snapshot', self.srvname,
|
||||||
|
'restore', 'fdroidclean'], cwd=self.srvdir)
|
||||||
|
except subprocess.CalledProcessError as e:
|
||||||
|
raise FDroidBuildVmException("could not load snapshot "
|
||||||
|
"'fdroidclean' for vm '%s'"
|
||||||
|
% (self.srvname)) from e
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user