[libvirt] PATCH : Opennebula, adding xen i686 domain capability and updating some error messages
by "Abel Míguez Rodríguez"
Hi,
this patch uses "OPERATION_INVALID" error instead "OPERATION_FAILED" error where should be used, also adds a missing capability, defining Xen i686 domains.
Thanks for the patches,
--- one_driver.c.bak 2009-06-30 15:02:28.000000000 +0200
+++ one_driver.c 2009-06-30 15:02:29.000000000 +0200
@@ -505,7 +505,7 @@ static int oneDomainShutdown(virDomainPt
ret= 0;
goto return_point;
}
- oneError(dom->conn, dom, VIR_ERR_OPERATION_FAILED,
+ oneError(dom->conn, dom, VIR_ERR_OPERATION_INVALID,
_("Wrong state to perform action"));
goto return_point;
}
@@ -541,7 +541,7 @@ static int oneDomainDestroy(virDomainPtr
if(c_oneCancel(vm->pid)) {
/* VM not running, delete the instance at ONE DB */
if(c_oneFinalize(vm->pid)){
- oneError(dom->conn, dom, VIR_ERR_OPERATION_FAILED,
+ oneError(dom->conn, dom, VIR_ERR_OPERATION_INVALID,
_("Wrong state to perform action"));
goto return_point;
}
@@ -576,11 +576,11 @@ static int oneDomainSuspend(virDomainPtr
ret=0;
goto return_point;
}
- oneError(dom->conn, dom, VIR_ERR_OPERATION_FAILED,
+ oneError(dom->conn, dom, VIR_ERR_OPERATION_INVALID,
_("Wrong state to perform action"));
goto return_point;
}
- oneError(dom->conn,dom,VIR_ERR_OPERATION_FAILED,
+ oneError(dom->conn,dom,VIR_ERR_OPERATION_INVALID,
_("domain is not running"));
} else {
oneError(dom->conn, dom, VIR_ERR_INVALID_DOMAIN,
@@ -609,11 +609,11 @@ static int oneDomainResume(virDomainPtr
ret=0;
goto return_point;
}
- oneError(dom->conn, dom, VIR_ERR_OPERATION_FAILED,
+ oneError(dom->conn, dom, VIR_ERR_OPERATION_INVALID,
_("Wrong state to perform action"));
goto return_point;
}
- oneError(dom->conn,dom,VIR_ERR_OPERATION_FAILED,
+ oneError(dom->conn,dom,VIR_ERR_OPERATION_INVALID,
_("domain is not paused "));
} else {
oneError(dom->conn, dom, VIR_ERR_INVALID_DOMAIN,
--- one_conf.c.bak 2009-06-30 15:01:06.000000000 +0200
+++ one_conf.c 2009-06-30 15:00:58.000000000 +0200
@@ -94,6 +94,27 @@ virCapsPtr oneCapsInit(void)
{
goto no_memory;
}
+ if ((guest = virCapabilitiesAddGuest(caps,
+ "xen",
+ "i686",
+ 32,
+ NULL,
+ NULL,
+ 0,
+ NULL)) == NULL)
+ {
+ goto no_memory;
+ }
+ if (virCapabilitiesAddGuestDomain(guest,
+ "one",
+ NULL,
+ NULL,
+ 0,
+ NULL) == NULL)
+ {
+ goto no_memory;
+ }
+
return caps;
Abel Miguez Rodriguez
----
Distributed System Architecture Group
(http://dsa-research.org)
GridWay, http://www.gridway.org
OpenNEbula, http://www.opennebula.org
15 years, 4 months
[libvirt] [PATCH] logging: remove unused level 0
by Amy Griffis
Some more logging cleanup. Remove all references to log level 0,
and replace with VIR_LOG_DEBUG where appropriate. Also change any
hard numbers to the corresponding VirLogPriority and add
VIR_LOG_DEFAULT for the starting log level.
Signed-off-by: Amy Griffis <amy.griffis(a)hp.com
---
docs/logging.html.in | 6 ++----
qemud/libvirtd.conf | 5 ++---
qemud/qemud.c | 11 ++++++-----
src/logging.c | 10 +++++-----
src/logging.h | 2 ++
5 files changed, 17 insertions(+), 17 deletions(-)
diff --git a/docs/logging.html.in b/docs/logging.html.in
index 11ea68c..fcd100f 100644
--- a/docs/logging.html.in
+++ b/docs/logging.html.in
@@ -49,7 +49,6 @@
<ul>
<li>log_level: accepts the following values:
<ul>
- <li>0: no logging at all</li>
<li>4: only errors</li>
<li>3: warnings and errors</li>
<li>2: informations, warnings and errors</li>
@@ -84,20 +83,19 @@
</ul>
<p>In all cases the x prefix is the minimal level, acting as a filter:</p>
<ul>
- <li>0: everything</li>
<li>1: DEBUG</li>
<li>2: INFO</li>
<li>3: WARNING</li>
<li>4: ERROR</li>
</ul>
<p>Multiple output can be defined , they just need to be separated by
- spaces, e.g.: <code>"3:syslog:libvirtd 0:file:/tmp/libvirt.log"</code>
+ spaces, e.g.: <code>"3:syslog:libvirtd 1:file:/tmp/libvirt.log"</code>
will log all warnings and errors to syslog under the libvirtd ident
but also log everything debugging and informations included in the
file <code>/tmp/libvirt.log</code></p>
<p>For example setting up the following:</p>
<pre>export LIBVIRT_DEBUG=1
-export LIBVIRT_LOG_OUTPUTS="0:file:virsh.log"</pre>
+export LIBVIRT_LOG_OUTPUTS="1:file:virsh.log"</pre>
<p>and then running virsh will accumulate the logs in the
<code>virsh.log</code> file in a way similar to:</p>
<pre>14:29:04.771: debug : virInitialize:278 : register drivers
diff --git a/qemud/libvirtd.conf b/qemud/libvirtd.conf
index 1fd5918..49de466 100644
--- a/qemud/libvirtd.conf
+++ b/qemud/libvirtd.conf
@@ -269,7 +269,7 @@
# Logging controls
#
-# Logging level: 0 none, 4 errors, 3 warnings, 2 informations, 1 debug
+# Logging level: 4 errors, 3 warnings, 2 informations, 1 debug
# basically 1 will log everything possible
#log_level = 3
@@ -303,13 +303,12 @@
# x:file:file_path
# output to a file, with the given filepath
# In all case the x prefix is the minimal level, acting as a filter
-# 0: everything
# 1: DEBUG
# 2: INFO
# 3: WARNING
# 4: ERROR
#
-# Multiple output can be defined , they just need to be separated by spaces.
+# Multiple output can be defined, they just need to be separated by spaces.
# e.g.:
# log_outputs="3:syslog:libvirtd"
# to log all warnings and errors to syslog under the libvirtd ident
diff --git a/qemud/qemud.c b/qemud/qemud.c
index b5e3665..da20aa9 100644
--- a/qemud/qemud.c
+++ b/qemud/qemud.c
@@ -128,7 +128,7 @@ static int sigwrite = -1; /* Signal handler pipe */
static int ipsock = 0; /* -l Listen for TCP/IP */
/* Defaults for logging */
-static int log_level = 3;
+static int log_level = VIR_LOG_DEFAULT;
static char *log_filters = NULL;
static char *log_outputs = NULL;
@@ -2499,15 +2499,16 @@ qemudSetLogging(virConfPtr conf, const char *filename) {
log_outputs = strdup(debugEnv);
}
if (!log_outputs) {
+ char *tmp = NULL;
if (godaemon) {
- char *tmp = NULL;
if (virAsprintf (&tmp, "%d:syslog:libvirtd", log_level) < 0)
goto free_and_fail;
- virLogParseOutputs (tmp);
- VIR_FREE (tmp);
} else {
- virLogParseOutputs("0:stderr:libvirtd");
+ if (virAsprintf(&tmp, "%d:stderr", log_level) < 0)
+ goto free_and_fail;
}
+ virLogParseOutputs(tmp);
+ VIR_FREE(tmp);
} else {
virLogParseOutputs(log_outputs);
}
diff --git a/src/logging.c b/src/logging.c
index fd1d5d4..d13ae0f 100644
--- a/src/logging.c
+++ b/src/logging.c
@@ -119,7 +119,7 @@ static int virLogNbOutputs = 0;
/*
* Default priorities
*/
-static virLogPriority virLogDefaultPriority = VIR_LOG_WARN;
+static virLogPriority virLogDefaultPriority = VIR_LOG_DEFAULT;
static int virLogResetFilters(void);
static int virLogResetOutputs(void);
@@ -174,7 +174,7 @@ int virLogStartup(void) {
virLogLen = 0;
virLogStart = 0;
virLogEnd = 0;
- virLogDefaultPriority = VIR_LOG_WARN;
+ virLogDefaultPriority = VIR_LOG_DEFAULT;
virLogUnlock();
return(0);
}
@@ -196,7 +196,7 @@ int virLogReset(void) {
virLogLen = 0;
virLogStart = 0;
virLogEnd = 0;
- virLogDefaultPriority = VIR_LOG_WARN;
+ virLogDefaultPriority = VIR_LOG_DEFAULT;
virLogUnlock();
return(0);
}
@@ -689,7 +689,7 @@ int virLogParseOutputs(const char *outputs) {
virSkipSpaces(&cur);
while (*cur != 0) {
prio= virParseNumber(&cur);
- if ((prio < 0) || (prio > 4))
+ if ((prio < VIR_LOG_DEBUG) || (prio > VIR_LOG_ERROR))
return(-1);
if (*cur != ':')
return(-1);
@@ -770,7 +770,7 @@ int virLogParseFilters(const char *filters) {
virSkipSpaces(&cur);
while (*cur != 0) {
prio= virParseNumber(&cur);
- if ((prio < 0) || (prio > 4))
+ if ((prio < VIR_LOG_DEBUG) || (prio > VIR_LOG_ERROR))
return(-1);
if (*cur != ':')
return(-1);
diff --git a/src/logging.h b/src/logging.h
index d99bb31..0b9ae79 100644
--- a/src/logging.h
+++ b/src/logging.h
@@ -77,6 +77,8 @@ typedef enum {
VIR_LOG_ERROR,
} virLogPriority;
+#define VIR_LOG_DEFAULT VIR_LOG_WARN
+
/**
* virLogOutputFunc:
* @category: the category for the message
15 years, 4 months
[libvirt] feature or bug?
by Gene Czarcinski
Yet another question.
I am using the virt-manager GUI. When I begin to define a new guest and
attempt to "browse" to specify where the iso image file is, the GUI dialog
brings me up in my home directory. But, almost everything associated with
libvirt is done as the root user.
By default, why isn't the initial directory "/var/lib/libvirt/images"?
Gene
15 years, 4 months
[libvirt] your patence is appreciated
by Gene Czarcinski
I really hate being a bit of a PITA with all of my question/comments, but I am
just trying to use Fedora virtualization in a manner where I can reasonably
manage the configuration.
I suspect I am not the first ex-VMware user and I will not be the last such
user who is trying to use Fedora virtualization in place of VMware. I am very
familiar with how guests are "managed" with VMware.
I want Fedora (and Linux) virtualization to be a good product. Your patience
is appreciated!
Gene
15 years, 4 months
[libvirt] need some help/asdive
by Gene Czarcinski
Background:
I am a newbie to Linux Virtualization.
However, I have been using Linux for a long time. After a short time with
Slackware, I started with Red Hat Linux 2 and went on to 2.1, 3.0.3, 4, 4.2,
5, 5.2, ..., 8, 9. And then on to Fedora Core 1, 2, ... until I installed
Fedora 11 about a month ago.
I have also run VMware starting when it first appeared. Initially I used
VMware to run Windows. These days I use it to run up to from 25 to 30 guests
(between 1 and 5 at the same time) [yes, I have lots of system memory].
Besides a couple of Windows guests, I have some guests supporting both 32 bit
(i386) and 64 bit (x86_64) architectures of older releases as well as
alternatives such as CentOS -- I use these to build RPMs. Then there are the
guests supporting other operating systems such as Solaris and *BSD. Finally,
I have a set of test guest that I use for testing stuff which could destroy the
operating system or which require a lot of re-booting. All of this in 25 to
30 guests.
With Fedora 11, I started by trying VMware-server. Server 1.0.9 (which I used
on Fedora 9) looks like much more work to get running ... more or less "a
bridge too far". So, I tried server 2.0.2 ... but the client interface
changed from a separate GUI application to a browser based interface: 1) this
impacts my usage of the firefox browser; 2) it is a buggy implementation; and
3) it is a crappy interface which I do not like.
So, I (finally) noticed that Linux in general and Fedora specifically has
packages supporting running guests virtually ... so, lets change my "problem
sets" and give this a try ... especially when I noticed that it could use the
hardware support in my new AMD Phenom II 940 processor.
Before getting into my specific questions/problem, let me describe how my
systems are set up. First of all, I have a basic rule: "don't screw with a
working system." Therefore, on each of my systems I have at least two root
partitions defined -- one for the current (working) system and one for the next
(new) system [these days it is actually a /boot partition with root being on a
striped logical volume]. I also have a small (think minimal install)
partition with Fedora to serve as a boot selector (using chainloader), as
something to to define striped logical volumes, and to be there for "emergency"
maintenance. Guys, this works for me and always doing fresh installs saves on
other headaches.
Implicit in the above is that I put all of my data and my /home into separate
partitions or logical volumes. One of these are my VMware guest systems. Now
VMware puts all of the files (configuration, disk image, etc.) associated a
guest under a separate directory. Fedora virtualization does not do this and
separation is something I need so that I can easily move to a new version of
the operating system such as when Fedora 12 becomes available in November.
Questions/problems:
My first question: it appears to me that a guest is defined by two things -- a
configuration file in /etc/libvirt/qemu and one or more disk images in
/var/lib/libvirt/images ... is this it or are there other files I need to
consider?
My second question concerns the location of the disk images: what is the
"best practical way" to move these out of the root partition? I have come up
with these different approaches which could/may work:
1. change the "path" value in /etc/libvirt/storage/default.xml to point to a
directory in a different partition.
2. Use a /etc/fstab entry to "bind mount" a directory in a separate partition
onto /var/lib/libvirt/images
3. Just use an /etc/fstab entry to mount a partition on
/var/lib/libvirt/images or, perhaps, on /var/lib/libvirt. [This could be done
during system installation]
OK, any comments on these??
I can live with changing some configuration files, I can live with copying guest
configuration files between systems, I CANNOT live with the disk image files
being put into the root partition. Before jumping "whole hog" into using
Fedora Virtualization in place of VMware, I need to be able to live with the
result. Figure 30 guest virtuals with 10GB of virtual disk each, that is
300GB. I have that space but not for every root partition on my system!
Comment: It sure would be nice if Fedora Virtualization put all files related
to a guest under a single directory the way VMware does.
Comment: It sure would be nice if there was some system-wide configuration
parameter that defined where virtualization files went.
Right now, as a newbie, I am using the virt-manage GUI interface. I am
studying the command-line programs to see what they offer me.
So far, I like what I see in Fedora Virtualization but I need to address how
things will be practically managed sooner rather than later.
Any help appreciated.
Gene
15 years, 4 months
[libvirt] PATCH: Remove unused Open Nebula code, fix potential missing NULL terminator
by Daniel P. Berrange
This patch removes a bunch of unused Open Nebula code which has a number
of flaws. It also fixes handling of a strncpy() call to ensure there is
a NULL terminator in the copied string. And finally it makes a couple
of strings be 'const' since they're never changed
Daniel
Index: src/opennebula/one_client.c
===================================================================
RCS file: /data/cvs/libvirt/src/opennebula/one_client.c,v
retrieving revision 1.1
diff -u -p -r1.1 one_client.c
--- src/opennebula/one_client.c 24 Jun 2009 17:32:56 -0000 1.1
+++ src/opennebula/one_client.c 30 Jun 2009 11:05:12 -0000
@@ -33,16 +33,9 @@ void c_oneStart()
xmlrpc_client_init2(&one_client.env, XMLRPC_CLIENT_NO_FLAGS,
"OpenNebula API Client", "1.2", NULL, 0);
- one_client.error=0;
-
-#ifdef ONED_PORT
- one_client.url=(char *)malloc(64);
- snprintf(one_client.url, 63, "http://localhost:%d/RPC2", ONED_PORT);
-#else
- one_client.url=(char *)"http://localhost:2633/RPC2";
-#endif
-
- one_client.session=(char *)"one-session";
+ one_client.error = 0;
+ one_client.url = "http://localhost:2633/RPC2";
+ one_client.session = "one-session";
};
@@ -94,35 +87,6 @@ int c_oneMigrate(int vmid, int hid, int
return c_oneReturnCode(resultP);
}
-int c_oneAllocate(char* template_file)
-{
- int file;
- int size;
- int bytes_read;
- char *file_text;
- int return_code;
-
- file=open(template_file, O_RDONLY);
- size=lseek(file, 0, SEEK_END);
- lseek(file, 0, SEEK_SET);
-
- file_text=(char *)malloc(size+1);
- bytes_read=read(file, file_text, size);
- close(file);
-
- if(bytes_read==size) {
- file_text[size]=0;
-
- return_code=c_oneAllocateTemplate(file_text);
- free(file_text);
-
- return return_code;
- } else {
- free(file_text);
- return -1;
- }
-}
-
int c_oneAllocateTemplate(char* vm_template)
{
xmlrpc_value *resultP;
@@ -222,6 +186,7 @@ int c_oneVmInfo(int vmid, char* ret_info
if( return_code )
{
strncpy(ret_info, return_string, length-1);
+ ret_info[length-1] = '\0';
xmlrpc_DECREF(resultP);
free(return_string);
@@ -241,9 +206,6 @@ void c_oneFree()
{
xmlrpc_env_clean(&one_client.env);
xmlrpc_client_cleanup();
-#ifdef ONE_PORT
- free(one_client.url);
-#endif
}
Index: src/opennebula/one_client.h
===================================================================
RCS file: /data/cvs/libvirt/src/opennebula/one_client.h,v
retrieving revision 1.1
diff -u -p -r1.1 one_client.h
--- src/opennebula/one_client.h 24 Jun 2009 17:32:56 -0000 1.1
+++ src/opennebula/one_client.h 30 Jun 2009 11:05:12 -0000
@@ -24,8 +24,8 @@
struct _oneClient {
xmlrpc_env env;
- char *url;
- char *session;
+ const char *url;
+ const char *session;
char *error;
};
@@ -38,8 +38,6 @@ int c_oneDeploy(int vmid, int hid);
int c_oneMigrate(int vmid, int hid, int flag);
-int c_oneAllocate(char* template_file);
-
int c_oneAllocateTemplate(char* vm_template);
int c_oneAction(int vmid,char* action);
--
|: Red Hat, Engineering, London -o- http://people.redhat.com/berrange/ :|
|: http://libvirt.org -o- http://virt-manager.org -o- http://ovirt.org :|
|: http://autobuild.org -o- http://search.cpan.org/~danberr/ :|
|: GnuPG: 7D3B9505 -o- F3C9 553F A1DA 4AC2 5648 23C1 B3DF F742 7D3B 9505 :|
15 years, 4 months
[libvirt] problem: deleting a guest
by Gene Czarcinski
I defined a new guest using the virt-manager GUI ... everything fine so far. I
then decided that my definition was not correct (or I could be done with that
guest) and could not find a way to delete the guest.
OK, quit virt-manager, delete the configuration and disk-image files for the
guest, restart libvirtd, and then start virt-manager again. The guest
definition (according to virt-manager) was still there. I finnaly got rid of
the definition by re-booting the system. THIS IS NOT SATISFACTORY!
IMHO, I should be able to:
1. Define a new guest.
2. Delete the definition of a new guest but not the related configuration and
disk-image files.
3. Delete the guest definition and the related configuration and disk image files
but NOT and CD/DVD image files external to /var/lib/libvirt/images.
4. Import new guests which were created as clones, copied from another host,
or convert created from something like VMware.
Not it is certainly possible (or even likely) that I h\just do not understand
how to do things yet. Or, this could be a bug. Or, this could be a lack of
capabilities.
Help appreciated in pointing me in the right direction. I will bugzilla where
appropriate.
Gene
15 years, 4 months
[libvirt] How does libvirt 0.6.3 load kvm driver
by Jason Wong
Dear all,
I found that libvirt 0.6.3 seems does not load KVM driver while libvirt
0.3.3 does.
Situation description:
I am using CentOS 5.3, and the kernel I used is 2.6.30.
I downloaded the kernel from kernel.org andcompile it. KVM was compiled
as a module.
libvirt: libvirt 0.6.3, released by Eucalyptus(a cloud computing
infrastructure software which supports KVM as well)
(1) libvirt 0.6.3 does not load KVM driver
After booting the machine with kernel 2.6.30 and probe KVM related module.
I started libvirtd 0.6.3 and set LD_LIBRARY_PATH to
"$LIBVIRT_063_HOME/lib:$LIBVIRT_063_HOME/usr/lib:$LD_LIBRARY_PATH".
I found that I am not able to connect to libvirtd using "virsh --connect
qemu:///system"(the virsh used is virsh 0.6.3 that shipped with libvirt
0.6.3), here is the debug message:
======================================= debug message
=========================================
17:41:11.219: debug : virInitialize:290 : register drivers
17:41:11.219: debug : virRegisterDriver:667 : registering Test as driver 0
17:41:11.219: debug : virRegisterNetworkDriver:567 : registering Test as
network driver 0
17:41:11.219: debug : virRegisterStorageDriver:598 : registering Test as
storage driver 0
17:41:11.219: debug : virRegisterDeviceMonitor:629 : registering Test as
device driver 0
17:41:11.219: debug : virRegisterDriver:667 : registering Xen as driver 1
17:41:11.219: debug : vboxRegister:68 : VBoxCGlueInit failed: 0.0.0,
errorval=-1
17:41:11.219: debug : virRegisterDriver:667 : registering VBOX as driver 2
17:41:11.219: debug : virConnectOpen:1050 : name=qemu:///system
17:41:11.219: debug : do_open:920 : name "qemu:///system" to URI components:
scheme qemu
opaque (null)
authority (null)
server (null)
user (null)
port 0
path /system
17:41:11.219: debug : do_open:930 : trying driver 0 (Test) ...
17:41:11.219: debug : do_open:936 : driver 0 Test returned DECLINED
17:41:11.219: debug : do_open:930 : trying driver 1 (Xen) ...
17:41:11.219: debug : do_open:936 : driver 1 Xen returned DECLINED
17:41:11.219: debug : do_open:930 : trying driver 2 (VBOX) ...
17:41:11.219: debug : do_open:936 : driver 2 VBOX returned DECLINED
libvir: error : could not connect to qemu:///system
17:41:11.219: debug : virUnrefConnect:210 : unref connection 0x60dd00 1
17:41:11.219: debug : virReleaseConnect:171 : release connection 0x60dd00
libvirt error: could not connect to qemu:///system (code=5)
error: failed to connect to hypervisor
================================end of debug message
=========================================
It seems that libvirt 0.6.3 does not load QEMU driver.
(2) libvirt 0.3.3 does load KVM driver
However, when I run the command "lsmod | grep kvm". I found KVM module
was present:
================================= result of lsmod
==============================================
[root@node2 ~]# lsmod | grep kvm
kvm_intel 46664 0
kvm 166224 1 kvm_intel
[root@node2 ~]#
================================= end of result of lsmod
=========================================
I stopped libvirtd 0.6.3 and then started libvirtd 0.3.3(the one shipped
with CentOS 5.3).
The virtual machine manager works well and I can use "virsh --connect
qemu:///system"(the virsh used is virsh 0.3.3 that shipped with CentOS
5.3) to connect to libvirtd.
I dig into libvirt source code.
I found that in libvirt 0.3.3:
There is qemudRegister() in libvirt.c. I think this function
call is responsible for loading qemu(kvm) driver.
And in libvirt 0.6.3:
I cannot found qemudRegister() or virDriverLoadModule("qemu")
in the source code.
My question is: Does libvirt 0.6.3 support KVM? If yes, how does it
load KVM driver?
I want to find out why libvirt 0.3.3 works well while libvirt 0.6.3 does
not work in my computer.
Thanks.
--
Jason Wong
System engineer
Cluster Technology Limited
Email: hcwong(a)clustertech.com
Direct Line: (852) 2655-6129
Tel: (852) 2655-6100
Fax: (852) 2994-2101
Website: www.clustertech.com
------------------------------
**************************************************************************
The information and attachment contained in this e-mail originating from
Cluster Technology Limited is confidential and intended solely for
the specified addressees. If you have received this email in error,
please do not read, copy, distribute, disclose or use any information of
this email in any way and please immediately notify the sender and delete
this email. Thank you for your cooperation.
**************************************************************************
15 years, 4 months
[libvirt] hooking a physical nic to a bridge with net-create
by Shahar Klein
Hi
I trying to set up a network configuration using libvirt
The setup is:
1. a VM using virtio using a tap device connected to a bridge device
2. on the host side eth0 added to the same bridge device(without ip)
using libvirt application (say virsh) I want to launch this set up:
virsh net-create for the second part
virsh create for the first part(tap, virtio, vm etc)
I can set the first part(vm, tap, virtio) using the domain xml
but I'm also interested in XMLing the second part and net-create it.
I tried but only suceeded in creating the bridge
Is it possible? am I missing somthing?
Thanks in advance
15 years, 4 months