Merge branch 'master' of git.qubes-os.org:/var/lib/qubes/git/marmarek/core

This commit is contained in:
Joanna Rutkowska 2011-03-15 22:57:27 +01:00
commit fa7e13c602
8 changed files with 52 additions and 31 deletions

1
appvm/.gitignore vendored
View File

@ -1,4 +1,3 @@
qubes_add_pendrive_script qubes_add_pendrive_script
qubes_penctl qubes_penctl
qvm-open-in-dvm qvm-open-in-dvm
xenstore-watch

View File

@ -1,14 +1,12 @@
CC=gcc CC=gcc
CFLAGS=-Wall CFLAGS=-Wall
all: qubes_penctl qubes_add_pendrive_script qvm-open-in-dvm xenstore-watch all: qubes_penctl qubes_add_pendrive_script qvm-open-in-dvm
qubes_penctl: qubes_penctl.o qubes_penctl: qubes_penctl.o
$(CC) -o qubes_penctl qubes_penctl.o -lxenstore $(CC) -o qubes_penctl qubes_penctl.o -lxenstore
qubes_add_pendrive_script: qubes_add_pendrive_script.o qubes_add_pendrive_script: qubes_add_pendrive_script.o
$(CC) -o qubes_add_pendrive_script qubes_add_pendrive_script.o -lxenstore $(CC) -o qubes_add_pendrive_script qubes_add_pendrive_script.o -lxenstore
qvm-open-in-dvm: qvm-open-in-dvm.o qvm-open-in-dvm: qvm-open-in-dvm.o
$(CC) -o qvm-open-in-dvm qvm-open-in-dvm.o -lxenstore $(CC) -o qvm-open-in-dvm qvm-open-in-dvm.o -lxenstore
xenstore-watch: xenstore-watch.o
$(CC) -o xenstore-watch xenstore-watch.o -lxenstore
clean: clean:
rm -f qubes_penctl qubes_add_pendrive_script qvm-open-in-dvm xenstore-watch *.o *~ rm -f qubes_penctl qubes_add_pendrive_script qvm-open-in-dvm xenstore-watch *.o *~

1
common/.gitignore vendored
View File

@ -1 +1,2 @@
meminfo-writer meminfo-writer
xenstore-watch

View File

@ -1,7 +1,9 @@
CC=gcc CC=gcc
CFLAGS=-Wall -g -O3 CFLAGS=-Wall -g -O3
all: meminfo-writer all: meminfo-writer xenstore-watch
meminfo-writer: meminfo-writer.o meminfo-writer: meminfo-writer.o
$(CC) -g -o meminfo-writer meminfo-writer.o -lxenstore $(CC) -g -o meminfo-writer meminfo-writer.o -lxenstore
xenstore-watch: xenstore-watch.o
$(CC) -o xenstore-watch xenstore-watch.o -lxenstore
clean: clean:
rm -f meminfo-writer *.o *~ rm -f meminfo-writer *.o *~

View File

@ -1098,6 +1098,7 @@ class QubesNetVm(QubesCowVm):
updateable=str(self.updateable), updateable=str(self.updateable),
private_img=self.private_img, private_img=self.private_img,
installed_by_rpm=str(self.installed_by_rpm), installed_by_rpm=str(self.installed_by_rpm),
label=self.label.name,
) )
return element return element
@ -1242,6 +1243,7 @@ class QubesProxyVm(QubesNetVm):
netvm_qid=str(self.netvm_vm.qid) if self.netvm_vm is not None else "none", netvm_qid=str(self.netvm_vm.qid) if self.netvm_vm is not None else "none",
private_img=self.private_img, private_img=self.private_img,
installed_by_rpm=str(self.installed_by_rpm), installed_by_rpm=str(self.installed_by_rpm),
label=self.label.name,
) )
return element return element
@ -1593,12 +1595,13 @@ class QubesVmCollection(dict):
def add_new_netvm(self, name, template_vm, def add_new_netvm(self, name, template_vm,
dir_path = None, conf_file = None, dir_path = None, conf_file = None,
private_img = None): private_img = None,
label = None):
qid = self.get_new_unused_qid() qid = self.get_new_unused_qid()
netid = self.get_new_unused_netid() netid = self.get_new_unused_netid()
vm = QubesNetVm (qid=qid, name=name, template_vm=template_vm, vm = QubesNetVm (qid=qid, name=name, template_vm=template_vm,
netid=netid, netid=netid, label=label,
private_img=private_img, private_img=private_img,
dir_path=dir_path, conf_file=conf_file) dir_path=dir_path, conf_file=conf_file)
@ -1613,12 +1616,13 @@ class QubesVmCollection(dict):
def add_new_proxyvm(self, name, template_vm, def add_new_proxyvm(self, name, template_vm,
dir_path = None, conf_file = None, dir_path = None, conf_file = None,
private_img = None): private_img = None,
label = None):
qid = self.get_new_unused_qid() qid = self.get_new_unused_qid()
netid = self.get_new_unused_netid() netid = self.get_new_unused_netid()
vm = QubesProxyVm (qid=qid, name=name, template_vm=template_vm, vm = QubesProxyVm (qid=qid, name=name, template_vm=template_vm,
netid=netid, netid=netid, label=label,
private_img=private_img, private_img=private_img,
dir_path=dir_path, conf_file=conf_file, dir_path=dir_path, conf_file=conf_file,
netvm_vm = self.get_default_fw_netvm_vm()) netvm_vm = self.get_default_fw_netvm_vm())
@ -1836,7 +1840,7 @@ class QubesVmCollection(dict):
try: try:
kwargs = {} kwargs = {}
attr_list = ("qid", "netid", "name", "dir_path", "conf_file", attr_list = ("qid", "netid", "name", "dir_path", "conf_file",
"private_img", "template_qid", "updateable", "private_img", "template_qid", "updateable", "label",
) )
for attribute in attr_list: for attribute in attr_list:
@ -1855,6 +1859,13 @@ class QubesVmCollection(dict):
kwargs["template_vm"] = template_vm kwargs["template_vm"] = template_vm
kwargs["netid"] = int(kwargs["netid"]) kwargs["netid"] = int(kwargs["netid"])
if kwargs["label"] is not None:
if kwargs["label"] not in QubesVmLabels:
print "ERROR: incorrect label for VM '{0}'".format(kwargs["name"])
kwargs.pop ("label")
else:
kwargs["label"] = QubesVmLabels[kwargs["label"]]
vm = QubesNetVm(**kwargs) vm = QubesNetVm(**kwargs)
self[vm.qid] = vm self[vm.qid] = vm
@ -1869,7 +1880,7 @@ class QubesVmCollection(dict):
try: try:
kwargs = {} kwargs = {}
attr_list = ("qid", "netid", "name", "dir_path", "conf_file", "updateable", attr_list = ("qid", "netid", "name", "dir_path", "conf_file", "updateable",
"private_img", "template_qid") "private_img", "template_qid", "label")
for attribute in attr_list: for attribute in attr_list:
kwargs[attribute] = element.get(attribute) kwargs[attribute] = element.get(attribute)
@ -1887,6 +1898,13 @@ class QubesVmCollection(dict):
kwargs["template_vm"] = template_vm kwargs["template_vm"] = template_vm
kwargs["netid"] = int(kwargs["netid"]) kwargs["netid"] = int(kwargs["netid"])
if kwargs["label"] is not None:
if kwargs["label"] not in QubesVmLabels:
print "ERROR: incorrect label for VM '{0}'".format(kwargs["name"])
kwargs.pop ("label")
else:
kwargs["label"] = QubesVmLabels[kwargs["label"]]
vm = QubesProxyVm(**kwargs) vm = QubesProxyVm(**kwargs)
self[vm.qid] = vm self[vm.qid] = vm

View File

@ -67,21 +67,19 @@ def main():
if options.netvm and options.proxyvm: if options.netvm and options.proxyvm:
parser.error ("You must specify at most one of --proxy and --net") parser.error ("You must specify at most one of --proxy and --net")
label = None if options.label is None:
if not options.proxyvm and not options.netvm: print "You must choose a label for the new VM by passing the --label option."
if options.label is None: print "Possible values are:"
print "You must choose a label for the new VM by passing the --label option." for l in QubesVmLabels.values():
print "Possible values are:" print "* {0}".format(l.name)
for l in QubesVmLabels.values(): exit (1)
print "* {0}".format(l.name)
exit (1)
if options.label not in QubesVmLabels: if options.label not in QubesVmLabels:
print "Wrong label name, supported values are the following:" print "Wrong label name, supported values are the following:"
for l in QubesVmLabels.values(): for l in QubesVmLabels.values():
print "* {0}".format(l.name) print "* {0}".format(l.name)
exit (1) exit (1)
label = QubesVmLabels[options.label] label = QubesVmLabels[options.label]
qvm_collection = QubesVmCollection() qvm_collection = QubesVmCollection()
qvm_collection.lock_db_for_writing() qvm_collection.lock_db_for_writing()
@ -113,7 +111,7 @@ def main():
vm = None vm = None
if options.netvm: if options.netvm:
vm = qvm_collection.add_new_netvm(vmname, template_vm) vm = qvm_collection.add_new_netvm(vmname, template_vm, label = label)
net_devices = find_net_devices() net_devices = find_net_devices()
print "Found the following net devices in your system:" print "Found the following net devices in your system:"
@ -126,12 +124,11 @@ def main():
vm.pcidevs = dev_str vm.pcidevs = dev_str
elif options.proxyvm: elif options.proxyvm:
vm = qvm_collection.add_new_proxyvm(vmname, template_vm) vm = qvm_collection.add_new_proxyvm(vmname, template_vm, label = label)
else: else:
vm = qvm_collection.add_new_appvm(vmname, template_vm, label = label) vm = qvm_collection.add_new_appvm(vmname, template_vm, label = label)
try: try:
vm.create_on_disk(verbose=options.verbose) vm.create_on_disk(verbose=options.verbose)
vm.add_to_xen_storage()
except (IOError, OSError) as err: except (IOError, OSError) as err:
print "ERROR: {0}".format(err) print "ERROR: {0}".format(err)

View File

@ -39,6 +39,9 @@ Requires: fedora-release = 13
%description %description
The Qubes core files for installation inside a Qubes VM. The Qubes core files for installation inside a Qubes VM.
%build
make
%pre %pre
if [ "$1" != 1 ] ; then if [ "$1" != 1 ] ; then
@ -62,10 +65,12 @@ mkdir -p $RPM_BUILD_ROOT/etc/sysconfig
cp iptables $RPM_BUILD_ROOT/etc/sysconfig/ cp iptables $RPM_BUILD_ROOT/etc/sysconfig/
mkdir -p $RPM_BUILD_ROOT/etc/yum.repos.d mkdir -p $RPM_BUILD_ROOT/etc/yum.repos.d
cp ../appvm/qubes.repo $RPM_BUILD_ROOT/etc/yum.repos.d cp ../appvm/qubes.repo $RPM_BUILD_ROOT/etc/yum.repos.d
mkdir -p $RPM_BUILD_ROOT/sbin mkdir -p $RPM_BUILD_ROOT/sbin
cp ../common/qubes_serial_login $RPM_BUILD_ROOT/sbin cp qubes_serial_login $RPM_BUILD_ROOT/sbin
mkdir -p $RPM_BUILD_ROOT/usr/bin
cp xenstore-watch $RPM_BUILD_ROOT/usr/bin
mkdir -p $RPM_BUILD_ROOT/etc mkdir -p $RPM_BUILD_ROOT/etc
cp ../common/serial.conf $RPM_BUILD_ROOT/var/lib/qubes/ cp serial.conf $RPM_BUILD_ROOT/var/lib/qubes/
%triggerin -- initscripts %triggerin -- initscripts
cp /var/lib/qubes/serial.conf /etc/init/serial.conf cp /var/lib/qubes/serial.conf /etc/init/serial.conf
@ -164,3 +169,4 @@ rm -rf $RPM_BUILD_ROOT
/var/lib/qubes /var/lib/qubes
/etc/yum.repos.d/qubes.repo /etc/yum.repos.d/qubes.repo
/sbin/qubes_serial_login /sbin/qubes_serial_login
/usr/bin/xenstore-watch