From a0e9feef92eefcf4aed513bc1d71ad2d6e90a763 Mon Sep 17 00:00:00 2001 From: Marek Marczykowski Date: Mon, 27 Feb 2012 15:07:00 +0100 Subject: [PATCH 1/9] dom0/qubes-firewall: typo fix --- dom0/qvm-core/qubes.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/dom0/qvm-core/qubes.py b/dom0/qvm-core/qubes.py index 20fe5be4..7fc2edf8 100755 --- a/dom0/qvm-core/qubes.py +++ b/dom0/qvm-core/qubes.py @@ -1055,7 +1055,7 @@ class QubesVm(object): rule["netmask"] = 32 # For backward compatibility default to tcp - if rule["proto" is None: + if rule["proto"] is None: rule["proto"] = "tcp" if rule["port"] is not None: From c013de47476d0f19f8bf21db63cb516740a17d3a Mon Sep 17 00:00:00 2001 From: Marek Marczykowski Date: Mon, 27 Feb 2012 15:46:23 +0100 Subject: [PATCH 2/9] dom0/qubes-firewall: make protocol selection smart --- dom0/qvm-core/qubes.py | 16 +++++++++++----- 1 file changed, 11 insertions(+), 5 deletions(-) diff --git a/dom0/qvm-core/qubes.py b/dom0/qvm-core/qubes.py index 7fc2edf8..0bf293ce 100755 --- a/dom0/qvm-core/qubes.py +++ b/dom0/qvm-core/qubes.py @@ -995,7 +995,10 @@ class QubesVm(object): for rule in conf["rules"]: # For backward compatibility if "proto" not in rule: - rule["proto"] = "tcp" + if rule["portBegin"] is not None and rule["portBegin"] > 0: + rule["proto"] = "tcp" + else: + rule["proto"] = "any" element = xml.etree.ElementTree.Element( "rule", address=rule["address"], @@ -1054,16 +1057,19 @@ class QubesVm(object): else: rule["netmask"] = 32 - # For backward compatibility default to tcp - if rule["proto"] is None: - rule["proto"] = "tcp" - if rule["port"] is not None: rule["portBegin"] = int(rule["port"]) else: # backward compatibility rule["portBegin"] = 0 + # For backward compatibility + if rule["proto"] is None: + if rule["portBegin"] > 0: + rule["proto"] = "tcp" + else: + rule["proto"] = "any" + if rule["toport"] is not None: rule["portEnd"] = int(rule["toport"]) else: From d7caf5cedc12ee8cd661160e4140a886f75b40a5 Mon Sep 17 00:00:00 2001 From: Marek Marczykowski Date: Wed, 29 Feb 2012 03:16:31 +0100 Subject: [PATCH 3/9] dom0/qvm-backup: force correct default exclude_list Treat "None" also as empty list. --- dom0/qvm-core/qubesutils.py | 3 +++ 1 file changed, 3 insertions(+) diff --git a/dom0/qvm-core/qubesutils.py b/dom0/qvm-core/qubesutils.py index 483d259d..4c2456ba 100644 --- a/dom0/qvm-core/qubesutils.py +++ b/dom0/qvm-core/qubesutils.py @@ -323,6 +323,9 @@ def backup_prepare(base_backup_dir, vms_list = None, exclude_list = [], print_ca files_to_backup = file_to_backup (qubes_store_filename) + if exclude_list is None: + exclude_list = [] + if vms_list is None: qvm_collection = QubesVmCollection() qvm_collection.lock_db_for_reading() From 4d739c1909e85289fe277303b50e4c5616eb3a2a Mon Sep 17 00:00:00 2001 From: Marek Marczykowski Date: Wed, 29 Feb 2012 03:17:25 +0100 Subject: [PATCH 4/9] dom0/qvm-backup-restore: fix restore of StandaloneVM/TemplateVM --- dom0/qvm-core/qubesutils.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/dom0/qvm-core/qubesutils.py b/dom0/qvm-core/qubesutils.py index 4c2456ba..4ac6d470 100644 --- a/dom0/qvm-core/qubesutils.py +++ b/dom0/qvm-core/qubesutils.py @@ -616,7 +616,7 @@ def backup_restore_prepare(backup_dir, options = {}, host_collection = None): vms_to_restore[vm.name]['already-exists'] = True vms_to_restore[vm.name]['good-to-go'] = False - if vm.template_vm is not None: + if vm.template_vm is None: vms_to_restore[vm.name]['template'] = None else: templatevm_name = find_template_name(vm.template_vm.name, options['replace-template']) From e10fa6babdebae1f9415a30371ac475d81a17cf3 Mon Sep 17 00:00:00 2001 From: Marek Marczykowski Date: Wed, 29 Feb 2012 03:33:43 +0100 Subject: [PATCH 5/9] dom0/qvm-backup-restore: fixes - custom templates, error handling --- dom0/qvm-core/qubesutils.py | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/dom0/qvm-core/qubesutils.py b/dom0/qvm-core/qubesutils.py index 4ac6d470..4f96aadf 100644 --- a/dom0/qvm-core/qubesutils.py +++ b/dom0/qvm-core/qubesutils.py @@ -627,13 +627,12 @@ def backup_restore_prepare(backup_dir, options = {}, host_collection = None): if not ((template_vm_on_host is not None) and template_vm_on_host.is_template()): # Maybe the (custom) template is in the backup? template_vm_on_backup = backup_collection.get_vm_by_name (templatevm_name) - if template_vm_on_backup is None or template_vm_on_backup.is_template(): + if template_vm_on_backup is None or not template_vm_on_backup.is_template(): if options['use-default-template']: - vms_to_restore[vm.name]['template'] = host_collection.get_default_tempate_vm().name + vms_to_restore[vm.name]['template'] = host_collection.get_default_template_vm().name else: vms_to_restore[vm.name]['missing-template'] = True vms_to_restore[vm.name]['good-to-go'] = False - continue if vm.netvm_vm is None: vms_to_restore[vm.name]['netvm'] = None @@ -656,7 +655,6 @@ def backup_restore_prepare(backup_dir, options = {}, host_collection = None): else: vms_to_restore[vm.name]['missing-netvm'] = True vms_to_restore[vm.name]['good-to-go'] = False - continue if 'good-to-go' not in vms_to_restore[vm.name].keys(): vms_to_restore[vm.name]['good-to-go'] = True From a5ee72c55f88b55ba0bd949791a8c9fc0e56c0c2 Mon Sep 17 00:00:00 2001 From: Marek Marczykowski Date: Wed, 29 Feb 2012 03:34:57 +0100 Subject: [PATCH 6/9] dom0/qvm-backup-restore: show original template name --- dom0/qvm-core/qubesutils.py | 3 +++ 1 file changed, 3 insertions(+) diff --git a/dom0/qvm-core/qubesutils.py b/dom0/qvm-core/qubesutils.py index 4f96aadf..e95b299d 100644 --- a/dom0/qvm-core/qubesutils.py +++ b/dom0/qvm-core/qubesutils.py @@ -629,6 +629,7 @@ def backup_restore_prepare(backup_dir, options = {}, host_collection = None): template_vm_on_backup = backup_collection.get_vm_by_name (templatevm_name) if template_vm_on_backup is None or not template_vm_on_backup.is_template(): if options['use-default-template']: + vms_to_restore[vm.name]['orig-template'] = templatevm_name vms_to_restore[vm.name]['template'] = host_collection.get_default_template_vm().name else: vms_to_restore[vm.name]['missing-template'] = True @@ -758,6 +759,8 @@ def backup_restore_print_summary(restore_info, print_callback = print_stdout): s += " <-- No matching template on the host or in the backup found!" elif 'missing-netvm' in vm_info: s += " <-- No matching netvm on the host or in the backup found!" + elif 'orig-template' in vm_info: + s += " <-- Original template was '%s'" % (vm_info['orig-template']) print_callback(s) From 63f3537f98cb8e2ef96edd5d0b8b880f0e8bfae9 Mon Sep 17 00:00:00 2001 From: Marek Marczykowski Date: Thu, 1 Mar 2012 10:57:34 +0100 Subject: [PATCH 7/9] dom0/spec: require xen-hvm package for stubdom --- rpm_spec/core-dom0.spec | 1 + 1 file changed, 1 insertion(+) diff --git a/rpm_spec/core-dom0.spec b/rpm_spec/core-dom0.spec index 19bd8ea9..f9043586 100644 --- a/rpm_spec/core-dom0.spec +++ b/rpm_spec/core-dom0.spec @@ -40,6 +40,7 @@ BuildRequires: xen-devel Requires: python, xen-runtime, pciutils, python-inotify, python-daemon, kernel-qubes-dom0 Conflicts: qubes-gui-dom0 < 1.1.13 Requires: xen >= 4.1.0-2 +Requires: xen-hvm Requires: createrepo Requires: gnome-packagekit Requires: cronie From 45c1c01410d697fc9a09c59348e706f016ddbab6 Mon Sep 17 00:00:00 2001 From: Marek Marczykowski Date: Thu, 1 Mar 2012 11:00:33 +0100 Subject: [PATCH 8/9] dom0/core: use xvdi as cdrom frontend When used both xvd* and hd* only xvd* isn't detected. --- dom0/qvm-core/qubes.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/dom0/qvm-core/qubes.py b/dom0/qvm-core/qubes.py index 8cfca7bb..f7576317 100755 --- a/dom0/qvm-core/qubes.py +++ b/dom0/qvm-core/qubes.py @@ -2090,9 +2090,9 @@ class QubesHVm(QubesVm): if self.drive: stat_res = os.stat(self.drive) if stat.S_ISBLK(stat_res.st_mode): - params['otherdevs'] = "'phy:%s,hdc:cdrom,r'," % self.drive + params['otherdevs'] = "'phy:%s,xvdi:cdrom,r'," % self.drive else: - params['otherdevs'] = "'script:file:%s,hdc:cdrom,r'," % self.drive + params['otherdevs'] = "'script:file:%s,xvdi:cdrom,r'," % self.drive else: params['otherdevs'] = '' return params From dcf6957e85bc5e8d07da7cce66dd7e0ba19865a4 Mon Sep 17 00:00:00 2001 From: Marek Marczykowski Date: Thu, 1 Mar 2012 11:23:07 +0100 Subject: [PATCH 9/9] dom0/core: xvdi is to high for qemu --- dom0/qvm-core/qubes.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/dom0/qvm-core/qubes.py b/dom0/qvm-core/qubes.py index f7576317..2e7dde93 100755 --- a/dom0/qvm-core/qubes.py +++ b/dom0/qvm-core/qubes.py @@ -2090,9 +2090,9 @@ class QubesHVm(QubesVm): if self.drive: stat_res = os.stat(self.drive) if stat.S_ISBLK(stat_res.st_mode): - params['otherdevs'] = "'phy:%s,xvdi:cdrom,r'," % self.drive + params['otherdevs'] = "'phy:%s,xvdc:cdrom,r'," % self.drive else: - params['otherdevs'] = "'script:file:%s,xvdi:cdrom,r'," % self.drive + params['otherdevs'] = "'script:file:%s,xvdc:cdrom,r'," % self.drive else: params['otherdevs'] = '' return params