Remove more core2 code

This commit is contained in:
Rusty Bird 2020-02-15 17:48:32 +00:00
parent 8e581108b7
commit d527e01136
No known key found for this signature in database
GPG Key ID: 469D78F47AAF2ADF
8 changed files with 3 additions and 277 deletions

View File

@ -1,12 +0,0 @@
[report]
exclude_lines =
pragma: no cover
^\s*def __repr__
^\s*(el)?if os\.name ==
^\s*raise (RuntimeError|NotImplementedError)
^\s*except ImportError
[paths]
source =
qubes
/usr/lib/python2.7/site-packages/qubes
/usr/lib64/python2.7/site-packages/qubes

View File

@ -30,7 +30,6 @@ import os.path
qubes_base_dir = "/var/lib/qubes" qubes_base_dir = "/var/lib/qubes"
system_path = { system_path = {
'qubes_guid_path': '/usr/bin/qubes-guid',
'qrexec_daemon_path': '/usr/sbin/qrexec-daemon', 'qrexec_daemon_path': '/usr/sbin/qrexec-daemon',
'qrexec_client_path': '/usr/bin/qrexec-client', 'qrexec_client_path': '/usr/bin/qrexec-client',
'qrexec_rpc_multiplexer': '/usr/lib/qubes/qubes-rpc-multiplexer', 'qrexec_rpc_multiplexer': '/usr/lib/qubes/qubes-rpc-multiplexer',
@ -39,29 +38,12 @@ system_path = {
# Relative to qubes_base_dir # Relative to qubes_base_dir
'qubes_appvms_dir': 'appvms', 'qubes_appvms_dir': 'appvms',
'qubes_templates_dir': 'vm-templates', 'qubes_templates_dir': 'vm-templates',
'qubes_servicevms_dir': 'servicevms',
'qubes_store_filename': 'qubes.xml', 'qubes_store_filename': 'qubes.xml',
'qubes_kernels_base_dir': 'vm-kernels', 'qubes_kernels_base_dir': 'vm-kernels',
# qubes_icon_dir is obsolete # qubes_icon_dir is obsolete
# use QIcon.fromTheme() where applicable # use QIcon.fromTheme() where applicable
'qubes_icon_dir': '/usr/share/icons/hicolor/128x128/devices', 'qubes_icon_dir': '/usr/share/icons/hicolor/128x128/devices',
'qrexec_policy_dir': '/etc/qubes-rpc/policy',
'config_template_pv': '/usr/share/qubes/vm-template.xml',
}
vm_files = {
'root_img': 'root.img',
'rootcow_img': 'root-cow.img',
'volatile_img': 'volatile.img',
'clean_volatile_img': 'clean-volatile.img.tar',
'private_img': 'private.img',
'kernels_subdir': 'kernels',
'firewall_conf': 'firewall.xml',
'whitelisted_appmenus': 'whitelisted-appmenus.list',
'updates_stat_file': 'updates.stat',
} }
defaults = { defaults = {
@ -73,8 +55,6 @@ defaults = {
'kernelopts_common': ('root=/dev/mapper/dmroot ro nomodeset console=hvc0 ' 'kernelopts_common': ('root=/dev/mapper/dmroot ro nomodeset console=hvc0 '
'rd_NO_PLYMOUTH rd.plymouth.enable=0 plymouth.enable=0 '), 'rd_NO_PLYMOUTH rd.plymouth.enable=0 plymouth.enable=0 '),
'dom0_update_check_interval': 6*3600,
'private_img_size': 2*1024*1024*1024, 'private_img_size': 2*1024*1024*1024,
'root_img_size': 10*1024*1024*1024, 'root_img_size': 10*1024*1024*1024,
@ -89,16 +69,6 @@ defaults = {
'name': 'linux-kernel' 'name': 'linux-kernel'
} }
}, },
# how long (in sec) to wait for VMs to shutdown,
# before killing them (when used qvm-run with --wait option),
'shutdown_counter_max': 60,
'vm_default_netmask': "255.255.255.0",
'appvm_label': 'red',
'template_label': 'black',
'servicevm_label': 'red',
} }
max_qid = 254 max_qid = 254

View File

@ -878,7 +878,6 @@ class SystemTestCase(QubesTestCase):
def _remove_vm_disk(vmname): def _remove_vm_disk(vmname):
for dirspec in ( for dirspec in (
'qubes_appvms_dir', 'qubes_appvms_dir',
'qubes_servicevms_dir',
'qubes_templates_dir'): 'qubes_templates_dir'):
dirpath = os.path.join(qubes.config.qubes_base_dir, dirpath = os.path.join(qubes.config.qubes_base_dir,
qubes.config.system_path[dirspec], vmname) qubes.config.system_path[dirspec], vmname)
@ -1018,7 +1017,6 @@ class SystemTestCase(QubesTestCase):
vmnames = set() vmnames = set()
for dirspec in ( for dirspec in (
'qubes_appvms_dir', 'qubes_appvms_dir',
'qubes_servicevms_dir',
'qubes_templates_dir'): 'qubes_templates_dir'):
dirpath = os.path.join(qubes.config.qubes_base_dir, dirpath = os.path.join(qubes.config.qubes_base_dir,
qubes.config.system_path[dirspec]) qubes.config.system_path[dirspec])
@ -1432,7 +1430,6 @@ def load_tests(loader, tests, pattern): # pylint: disable=unused-argument
'qubes.tests.integ.salt', 'qubes.tests.integ.salt',
'qubes.tests.integ.backup', 'qubes.tests.integ.backup',
'qubes.tests.integ.backupcompatibility', 'qubes.tests.integ.backupcompatibility',
# 'qubes.tests.regressions',
# external modules # external modules
'qubes.tests.extra', 'qubes.tests.extra',

View File

@ -300,13 +300,3 @@ class AdminVM(qubes.vm.BaseVM):
args[0], *stdouterr) args[0], *stdouterr)
return stdouterr return stdouterr
# def __init__(self, **kwargs):
# super(QubesAdminVm, self).__init__(qid=0, name="dom0",
# dir_path=None,
# private_img = None,
# template = None,
# maxmem = 0,
# vcpus = 0,
# label = defaults["template_label"],
# **kwargs)

View File

@ -29,7 +29,6 @@ import shutil
import string import string
import subprocess import subprocess
import uuid import uuid
import warnings
import libvirt # pylint: disable=import-error import libvirt # pylint: disable=import-error
import lxml import lxml
@ -1161,7 +1160,7 @@ class QubesVM(qubes.vm.mix.net.NetVMMixin, qubes.vm.BaseVM):
except Exception as exc: # pylint: disable=bare-except except Exception as exc: # pylint: disable=bare-except
self.log.error('Start failed: %s', str(exc)) self.log.error('Start failed: %s', str(exc))
# This avoids losing the exception if an exception is # This avoids losing the exception if an exception is
# raised in self.force_shutdown(), because the vm is not # raised in self._kill_locked(), because the vm is not
# running or paused # running or paused
try: try:
yield from self._kill_locked() yield from self._kill_locked()
@ -1293,13 +1292,6 @@ class QubesVM(qubes.vm.mix.net.NetVMMixin, qubes.vm.BaseVM):
# make sure all shutdown tasks are completed # make sure all shutdown tasks are completed
yield from self._ensure_shutdown_handled() yield from self._ensure_shutdown_handled()
def force_shutdown(self, *args, **kwargs):
"""Deprecated alias for :py:meth:`kill`"""
warnings.warn(
'Call to deprecated function force_shutdown(), use kill() instead',
DeprecationWarning, stacklevel=2)
return self.kill(*args, **kwargs)
@asyncio.coroutine @asyncio.coroutine
def suspend(self): def suspend(self):
"""Suspend (pause) domain. """Suspend (pause) domain.
@ -1802,8 +1794,8 @@ class QubesVM(qubes.vm.mix.net.NetVMMixin, qubes.vm.BaseVM):
Halting -> Transient [style="invis"]; Halting -> Transient [style="invis"];
Running -> Halted Running -> Halted
[label="force_shutdown()" [label="kill()"
URL="#qubes.vm.qubesvm.QubesVM.force_shutdown" URL="#qubes.vm.qubesvm.QubesVM.kill"
constraint=false]; constraint=false];
Running -> Crashed [constraint=false]; Running -> Crashed [constraint=false];

View File

@ -21,8 +21,6 @@
''' This module contains the TemplateVM implementation ''' ''' This module contains the TemplateVM implementation '''
import warnings
import qubes import qubes
import qubes.config import qubes.config
import qubes.vm.qubesvm import qubes.vm.qubesvm
@ -36,13 +34,6 @@ class TemplateVM(QubesVM):
dir_path_prefix = qubes.config.system_path['qubes_templates_dir'] dir_path_prefix = qubes.config.system_path['qubes_templates_dir']
@property
def rootcow_img(self):
'''COW image'''
warnings.warn("rootcow_img is deprecated, use "
"volumes['root'].path_origin", DeprecationWarning)
return self.volumes['root'].path_cow
@property @property
def appvms(self): def appvms(self):
''' Returns a generator containing all domains based on the current ''' Returns a generator containing all domains based on the current

View File

@ -1,123 +0,0 @@
#!/usr/bin/python2
# -*- encoding: utf8 -*-
#
# The Qubes OS Project, http://www.qubes-os.org
#
# Copyright (C) 2010 Joanna Rutkowska <joanna@invisiblethingslab.com>
#
# This library is free software; you can redistribute it and/or
# modify it under the terms of the GNU Lesser General Public
# License as published by the Free Software Foundation; either
# version 2.1 of the License, or (at your option) any later version.
#
# This library is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
# Lesser General Public License for more details.
#
# You should have received a copy of the GNU Lesser General Public
# License along with this library; if not, see <https://www.gnu.org/licenses/>.
#
#
from qubes.qubes import QubesVmCollection
from qubes.qubes import QubesHost
from qubes.qubes import QubesException
from optparse import OptionParser
import sys
def main():
usage = "usage: %prog [options]"
parser = OptionParser (usage)
parser.add_option("--list", dest="list_top",
action="store_true", default=False,
help="n m : One line summary of top n vms with more than m cpu_time %")
(options, args) = parser.parse_args ()
qvm_collection = QubesVmCollection()
qvm_collection.lock_db_for_reading()
qvm_collection.load()
qvm_collection.unlock_db()
fields_to_display = ["name", "cpu", "mem"]
cpu_usages = None
qhost = QubesHost()
(measure_time, cpu_usages) = qhost.measure_cpu_usage(qvm_collection)
vms_list = [vm for vm in qvm_collection.values() if vm.is_running()]
vms_list = sorted(vms_list, key= lambda vm: 1-cpu_usages[vm.get_xid()]['cpu_usage'])
no_vms = len (vms_list)
vms_to_display = vms_list
if options.list_top:
any_shown = False
ndisp = 3
cputh = 0
if len(args) > 0:
ndisp = int(args[0])
if len(args) > 1:
cputh = int(args[1])
for vm in vms_to_display[:ndisp]:
cpu = cpu_usages[vm.get_xid()]['cpu_usage']
if cpu > cputh:
any_shown = True
sys.stdout.write("%d %s, " % (cpu, vm.name))
if any_shown:
sys.stdout.write(" ... | ")
totalMem = 0
dom0mem = 0
for vm in vms_to_display:
if not vm.name == "dom0":
totalMem += vm.get_mem()
else:
dom0mem = vm.get_mem()
totalMem /= 1024.0 * 1024.0
dom0mem /= 1024.0 * 1024.0
sys.stdout.write("%.1f G + %.1f G" % (totalMem, dom0mem))
return
max_width = { 'name': 0, 'cpu': 0, 'mem': 0 }
data_to_display = []
for vm in vms_to_display:
data_row = {}
data_row['name'] = vm.name
max_width['name'] = max(max_width['name'], len(data_row['name']))
data_row['cpu'] = "%.1f" % (cpu_usages[vm.get_xid()]['cpu_usage'])
max_width['cpu'] = max(max_width['cpu'], len(data_row['cpu']))
data_row['mem'] = "%d" % (vm.get_mem() / (1024.0))
max_width['mem'] = max(max_width['mem'], len(data_row['mem']))
data_to_display.append(data_row)
# Display the header
s = ""
for f in fields_to_display:
fmt="{{0:-^{0}}}-+".format(max_width[f] + 1)
s += fmt.format('-')
print s
s = ""
for f in fields_to_display:
fmt="{{0:>{0}}} |".format(max_width[f] + 1)
s += fmt.format(f)
print s
s = ""
for f in fields_to_display:
fmt="{{0:-^{0}}}-+".format(max_width[f] + 1)
s += fmt.format('-')
print s
# ... and the actual data
for row in data_to_display:
s = ""
for f in fields_to_display:
fmt="{{0:>{0}}} |".format(max_width[f] + 1)
s += fmt.format(row[f])
print s
main()

View File

@ -1,79 +0,0 @@
#!/usr/bin/python2 -O
# coding=utf-8
#
# The Qubes OS Project, https://www.qubes-os.org/
#
# Copyright (C) 2014-2015
# Marek Marczykowski-Górecki <marmarek@invisiblethingslab.com>
# Copyright (C) 2015 Wojtek Porczyk <woju@invisiblethingslab.com>
#
# This library is free software; you can redistribute it and/or
# modify it under the terms of the GNU Lesser General Public
# License as published by the Free Software Foundation; either
# version 2.1 of the License, or (at your option) any later version.
#
# This library is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
# Lesser General Public License for more details.
#
# You should have received a copy of the GNU Lesser General Public
# License along with this library; if not, see <https://www.gnu.org/licenses/>.
#
import multiprocessing
import os
import time
import unittest
import qubes.qubes
import qubes.tests
import subprocess
class TC_00_Regressions(qubes.tests.SystemTestsMixin, qubes.tests.QubesTestCase):
# Bug: #906
def test_000_bug_906_db_locking(self):
def create_vm(vmname):
qc = qubes.qubes.QubesVmCollection()
qc.lock_db_for_writing()
qc.load()
time.sleep(1)
qc.add_new_vm('QubesAppVm',
name=vmname, template=qc.get_default_template())
qc.save()
qc.unlock_db()
vmname1, vmname2 = map(self.make_vm_name, ('test1', 'test2'))
t = multiprocessing.Process(target=create_vm, args=(vmname1,))
t.start()
create_vm(vmname2)
t.join()
qc = qubes.qubes.QubesVmCollection()
qc.lock_db_for_reading()
qc.load()
qc.unlock_db()
self.assertIsNotNone(qc.get_vm_by_name(vmname1))
self.assertIsNotNone(qc.get_vm_by_name(vmname2))
def test_bug_1389_dispvm_qubesdb_crash(self):
"""
Sometimes QubesDB instance in DispVM crashes at startup.
Unfortunately we don't have reliable way to reproduce it, so try twice
:return:
"""
self.qc.unlock_db()
for try_no in xrange(2):
p = subprocess.Popen(['/usr/lib/qubes/qfile-daemon-dvm',
'qubes.VMShell', 'dom0', 'DEFAULT'],
stdin=subprocess.PIPE,
stdout=subprocess.PIPE,
stderr=open(os.devnull, 'w'))
p.stdin.write("qubesdb-read /name || echo ERROR\n")
dispvm_name = p.stdout.readline()
p.stdin.close()
self.assertTrue(dispvm_name.startswith("disp"),
"Try {} failed".format(try_no))