--without-uml \
--without-vbox \
--without-openvz \
- --without-one \
--without-phyp \
--without-netcf \
--without-audit \
[with_vbox=yes])
AC_ARG_WITH([lxc],
AC_HELP_STRING([--with-lxc], [add Linux Container support @<:@default=check@:>@]),[],[with_lxc=check])
-AC_ARG_WITH([one],
- AC_HELP_STRING([--with-one], [add ONE support @<:@default=check@:>@]),[],[with_one=check])
AC_ARG_WITH([esx],
AC_HELP_STRING([--with-esx], [add ESX support @<:@default=check@:>@]),[],[with_esx=check])
AC_ARG_WITH([test],
fi
AM_CONDITIONAL([WITH_QEMU], [test "$with_qemu" = "yes"])
-if test "$with_one" = "yes" ; then
- AC_DEFINE_UNQUOTED([WITH_ONE],1,[whether ONE driver is enabled])
-fi
-AM_CONDITIONAL([WITH_ONE],[test "$with_one" = "yes"])
-
if test "$with_test" = "yes" ; then
AC_DEFINE_UNQUOTED([WITH_TEST], 1, [whether Test driver is enabled])
fi
dnl Need to test if pkg-config exists
PKG_PROG_PKG_CONFIG
-dnl OpenNebula driver Compilation setting
-dnl
-
-if test "$with_libvirtd" = "no" ; then
- with_one=no
-fi
-XMLRPC_CFLAGS=
-XMLRPC_LIBS=
-if test "x$with_one" = "xyes" || test "x$with_one" = "xcheck"; then
- PKG_CHECK_MODULES(XMLRPC, xmlrpc_client >= $XMLRPC_REQUIRED,
- [with_one=yes], [
- if test "x$with_one" = "xcheck" ; then
- with_one=no
- else
- AC_MSG_ERROR(
- [You must install XMLRPC-C >= $XMLRPC_REQUIRED to compile libvirt ONE driver])
- fi
- ])
- if test "x$with_one" = "xyes" ; then
- AC_DEFINE_UNQUOTED([HAVE_XMLRPC], 1,
- [whether One is used to broadcast server presence])
- fi
-fi
-AM_CONDITIONAL([HAVE_XMLRPC], [test "x$with_one" = "xyes"])
-AM_CONDITIONAL([WITH_ONE], [test "x$with_one" = "xyes"])
-AC_SUBST([XMLRPC_CFLAGS])
-AC_SUBST([XMLRPC_LIBS])
-
dnl ==========================================================================
dnl find libxml2 library, borrowed from xmlsec
AC_MSG_NOTICE([xenlight: $with_libxl])
AC_MSG_NOTICE([ LXC: $with_lxc])
AC_MSG_NOTICE([ PHYP: $with_phyp])
-AC_MSG_NOTICE([ ONE: $with_one])
AC_MSG_NOTICE([ ESX: $with_esx])
AC_MSG_NOTICE([ Test: $with_test])
AC_MSG_NOTICE([ Remote: $with_remote])
else
AC_MSG_NOTICE([ netcf: no])
fi
-if test "$with_one" = "yes" ; then
-AC_MSG_NOTICE([ xmlrpc: $XMLRPC_CFLAGS $XMLRPC_LIBS])
-else
-AC_MSG_NOTICE([ xmlrpc: no])
-fi
if test "$with_qemu" = "yes" && test "$LIBPCAP_FOUND" != "no"; then
AC_MSG_NOTICE([ pcap: $LIBPCAP_CFLAGS $LIBPCAP_LIBS])
else
libvirtd_LDADD += ../src/libvirt_driver_uml.la
endif
-if WITH_ONE
- libvirtd_LDADD += ../src/libvirt_driver_one.la
-endif
-
if WITH_STORAGE_DIR
libvirtd_LDADD += ../src/libvirt_driver_storage.la
endif
# ifdef WITH_UML
# include "uml/uml_driver.h"
# endif
-# ifdef WITH_ONE
-# include "opennebula/one_driver.h"
-# endif
# ifdef WITH_NETWORK
# include "network/bridge_driver.h"
# endif
virDriverLoadModule("qemu");
virDriverLoadModule("lxc");
virDriverLoadModule("uml");
- virDriverLoadModule("one");
virDriverLoadModule("nwfilter");
#else
# ifdef WITH_NETWORK
# ifdef WITH_UML
umlRegister();
# endif
-# ifdef WITH_ONE
- oneRegister();
-# endif
#endif
return server;
<ul>
<li><strong><a href="drvlxc.html">LXC</a></strong> - Linux Containers</li>
- <li><strong><a href="drvone.html">OpenNebula</a></strong></li>
<li><strong><a href="drvopenvz.html">OpenVZ</a></strong></li>
<li><strong><a href="drvqemu.html">QEMU</a></strong></li>
<li><strong><a href="drvtest.html">Test</a></strong> - Used for testing</li>
+++ /dev/null
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
-<html>
-<head>
-<meta http-equiv="CONTENT-TYPE" content="text/html; charset=utf-8">
-<title></title>
-<meta name="GENERATOR" content="OpenOffice.org 3.0 (Linux)">
-<meta name="CREATED" content="0;0">
-<meta name="CHANGED" content="20090701;13170700">
-</head>
-<body lang="en-US" dir="LTR">
-<h1>OpenNebula Virtual Infrastructure Manager driver</h1>
-<p><a name="toc"></a><a href="http://opennebula.org/">OpenNebula</a>
-is a Virtual Infrastructure Manager that controls Virtual Machines (VM) in a pool of distributed resources
-by orchestrating network, storage and virtualization technologies. The OpenNebula driver lets you manage your private or hybrid (<a href="http://aws.amazon.com/ec2/">Amazon EC2</a> or <a href="http://www.elastichosts.com/">Elastic Hosts</a> based) cloud using a standard libvirt interface, including the API as well as the related
-tools and VM description files.</p>
-<h2>
-<a name="prereq"></a>Deployment pre-requisites</h2>
-<ul>
-<li>
-<p style="margin-bottom: 0in">A working OpenNebula installation,
- version 1.2 or higher.
- </p>
- </li>
-</ul>
-<h2>
-<a name="uris"></a>Connections to OpenNebula driver</h2>
-<p>The Uri of the driver protocol is "one". Some example
-connection Uris for the driver are:
-</p>
-<pre>
-one:/// (local access)
-one+unix:/// (local access)
-one://example.com/ (remote access)
-one+tcp://example.com/ (remote access, SASl/Kerberos)
-one+ssh://user@example.com/ (remote access, SSH tunnelled)
-</pre>
-<h2>
-<a name="xmlconfig"></a>Example domain XML config</h2>
-<p>There are some limitations on the XML attributes that may be
-specified when interfacing OpenNebula. The following xml example
-details the attributes and options supported by the OpenNebula
-driver:</p>
-
-<h3>Paravirtualized guest direct kernel boot
-</h3>
-<pre>
-<domain type='one'>
- <name>vm01</name>
- <memory>32768</memory>
- <vcpu>1</vcpu>
-
- <os>
- <type>linux</type>
- <kernel>/boot/vmlinuz-2.6.24-17-xen</kernel>
- <initrd>/boot/initrd.img-2.6.24-17-xen</initrd>
- <cmdline></cmdline>
- <root>sda1</root>
- </os>
-
- <devices>
- <disk type='file' device='disk'>
- <source file='/images/sgehosts/01/disk.img'/>
- <target dev='sda1'/>
- </disk>
-
- <disk type='file' device='disk'>
- <source file='/images/sgehosts/01/swap.img'/>
- <target dev='sda2'/>
- </disk>
-
- <disk type='file' device='cdrom'>
- <source file='/images/iso/cdrom.iso'/>
- <target dev='hdc'/>
- <readonly/>
- </disk>
-
-
- <!--BRIDGE-->
- <interface type='bridge'>
- <source bridge='eth0'/>
- <mac address='00:16:3e:5d:c7:9e'/>
- </interface>
-
- <!--ONE Network-->
- <interface type='network'>
- <source network='onenetwork'/>
- </interface>
- </devices>
-</domain>
-</pre>
-<p>
-<b>Note:</b> The "<interface type='network'>" will
-attach the interface to a previously configured network (named
-<tt>onenetwork</tt>) within the <a href="http://opennebula.org/">OpenNebula</a> system, typically with the
-<tt>onevnet</tt> CLI command.</p>
-
-<p><b>Note</b>: OpenNebula supports the simultaneous use of different hypervisors, so you can specify any os type (linux or hvm) supported by your cluster.
-</p>
-
-<h2>Links</h2>
-<ul>
-<li><a href="http://www.opennebula.org/doku.php?id=documentation">OpenNebula Documentation</a>
-</li>
-<li><a href="http://www.opennebula.org/doku.php?id=documentation:rel1.2:ug">OpenNebula User Guide</a>
-</li>
-</ul>
-</body>
-</html>
<a href="drvvbox.html">VirtualBox</a>
<span>Driver for VirtualBox</span>
</li>
- <li>
- <a href="drvone.html">OpenNebula</a>
- <span>Driver for OpenNebula</span>
- </li>
<li>
<a href="drvesx.html">VMware ESX</a>
<span>Driver for VMware ESX</span>
VIR_FROM_SECURITY = 24, /* Error from security framework */
VIR_FROM_VBOX = 25, /* Error from VirtualBox driver */
VIR_FROM_INTERFACE = 26, /* Error when operating on an interface */
- VIR_FROM_ONE = 27, /* Error from OpenNebula driver */
+ VIR_FROM_ONE = 27, /* The OpenNebula driver no longer exists. Retained for ABI/API compat only */
VIR_FROM_ESX = 28, /* Error from ESX driver */
VIR_FROM_PHYP = 29, /* Error from IBM power hypervisor */
VIR_FROM_SECRET = 30, /* Error from secret storage */
%define with_uml 0%{!?_without_uml:%{server_drivers}}
%define with_xenapi 0%{!?_without_xenapi:%{server_drivers}}
%define with_libxl 0%{!?_without_libxl:%{server_drivers}}
-# XXX this shouldn't be here, but it mistakenly links into libvirtd
-%define with_one 0%{!?_without_one:%{server_drivers}}
# Then the hypervisor drivers that talk a native remote protocol
%define with_phyp 0%{!?_without_phyp:1}
%define with_numactl 0
%endif
-# RHEL doesn't ship OpenVZ, VBox, UML, OpenNebula, PowerHypervisor,
+# RHEL doesn't ship OpenVZ, VBox, UML, PowerHypervisor,
# VMWare, libxenserver (xenapi), or libxenlight (Xen 4.1 and newer)
%if 0%{?rhel}
%define with_openvz 0
%define with_vbox 0
%define with_uml 0
-%define with_one 0
%define with_phyp 0
%define with_vmware 0
%define with_xenapi 0
%if %{with_xen}
BuildRequires: xen-devel
%endif
-%if %{with_one}
-BuildRequires: xmlrpc-c-devel >= 1.14.0
-%endif
BuildRequires: libxml2-devel
BuildRequires: xhtml1-dtds
BuildRequires: libxslt
%define _without_uml --without-uml
%endif
-%if ! %{with_one}
-%define _without_one --without-one
-%endif
-
%if %{with_rhel5}
%define _with_rhel5_api --with-rhel5-api
%endif
--without-uml \
--without-vbox \
--without-openvz \
- --without-one \
--without-phyp \
--without-netcf \
--without-audit \
src/nwfilter/nwfilter_ebiptables_driver.c
src/nwfilter/nwfilter_gentech_driver.c
src/nwfilter/nwfilter_learnipaddr.c
-src/opennebula/one_conf.c
-src/opennebula/one_driver.c
src/openvz/openvz_conf.c
src/openvz/openvz_driver.c
src/phyp/phyp_driver.c
uml/uml_conf.c uml/uml_conf.h \
uml/uml_driver.c uml/uml_driver.h
-ONE_DRIVER_SOURCES = \
- ./opennebula/one_conf.c \
- ./opennebula/one_conf.h \
- ./opennebula/one_driver.c \
- ./opennebula/one_driver.h \
- ./opennebula/one_client.c \
- ./opennebula/one_client.h
-
ESX_DRIVER_SOURCES = \
esx/esx_private.h \
esx/esx_driver.c esx/esx_driver.h \
libvirt_driver_uml_la_SOURCES = $(UML_DRIVER_SOURCES)
endif
-if WITH_ONE
-if WITH_DRIVER_MODULES
-mod_LTLIBRARIES += libvirt_driver_one.la
-else
-noinst_LTLIBRARIES += libvirt_driver_one.la
-# Stateful, so linked to daemon instead
-#libvirt_la_BUILT_LIBADD += libvirt_driver_one.la
-endif
-libvirt_driver_one_la_CFLAGS = $(XMLRPC_CFLAGS) \
- -I@top_srcdir@/src/conf $(AM_CFLAGS)
-libvirt_driver_one_la_LDFLAGS = $(AM_LDFLAGS)
-libvirt_driver_one_la_LIBADD = $(XMLRPC_LIBS)
-#libvirt_driver_one_la_CFLAGS = "-DWITH_ONE"
-if WITH_DRIVER_MODULES
-libvirt_driver_one_la_LIBADD += ../gnulib/lib/libgnu.la
-libvirt_driver_one_la_LDFLAGS += -module -avoid-version
-endif
-libvirt_driver_one_la_SOURCES = $(ONE_DRIVER_SOURCES)
-endif
-
BUILT_SOURCES += $(ESX_DRIVER_GENERATED)
$(QEMU_DRIVER_SOURCES) \
$(LXC_DRIVER_SOURCES) \
$(UML_DRIVER_SOURCES) \
- $(ONE_DRIVER_SOURCES) \
$(OPENVZ_DRIVER_SOURCES) \
$(PHYP_DRIVER_SOURCES) \
$(VBOX_DRIVER_SOURCES) \
* esx/ - VMware ESX and GSX support using vSphere API over SOAP
* lxc/ - Linux Native Containers
- * opennebula/ - Open Nebula using XMLRPC
* openvz/ - OpenVZ containers using cli tools
* phyp/ - IBM Power Hypervisor using CLI tools over SSH
* qemu/ - QEMU / KVM using qemu CLI/monitor
Finally some secondary drivers that are shared for several HVs.
Currently these are used by LXC, OpenVZ, QEMU, UML and Xen drivers.
-The ESX, OpenNebula, Power Hypervisor, Remote, Test & VirtualBox
-drivers all implement the secondary drivers directly
+The ESX, Power Hypervisor, Remote, Test & VirtualBox drivers all
+implement the secondary drivers directly
* cpu/ - CPU feature management
* interface/ - Host network interface management
+++ /dev/null
-/* Copyright 2002-2009, Distributed Systems Architecture Group, Universidad
- * Complutense de Madrid (dsa-research.org)
- *
- * 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, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
- */
-
-#include <config.h>
-
-#include <stdlib.h>
-#include <stdio.h>
-#include <string.h>
-#include <fcntl.h>
-#include <unistd.h>
-#include "one_client.h"
-#include "datatypes.h"
-#include "util.h"
-#include "memory.h"
-
-oneClient one_client;
-
-void c_oneStart()
-{
- xmlrpc_env_init(&one_client.env);
- xmlrpc_client_init2(&one_client.env, XMLRPC_CLIENT_NO_FLAGS,
- "OpenNebula API Client", "1.2", NULL, 0);
-
- one_client.error = 0;
- one_client.url = "http://localhost:2633/RPC2";
- one_client.session = "one-session";
-};
-
-
-int c_oneReturnCode(xmlrpc_value *resultP);
-
-int c_oneReturnCode(xmlrpc_value *resultP)
-{
- int return_code;
- char *return_string;
-
- xmlrpc_decompose_value(&one_client.env, resultP, "(bs)",
- &return_code, &return_string);
-
- if( return_code )
- {
- xmlrpc_DECREF(resultP);
- VIR_FREE(return_string);
- return 0;
- }
- else
- {
- VIR_FREE(one_client.error);
-
- one_client.error=return_string;
- return -1;
- }
-}
-
-int c_oneDeploy(int vmid, int hid)
-{
- xmlrpc_value *resultP;
-
- resultP = xmlrpc_client_call(&one_client.env, one_client.url,
- "one.vmdeploy", "(sii)", one_client.session, (xmlrpc_int32)vmid,
- (xmlrpc_int32)hid);
-
- return c_oneReturnCode(resultP);
-}
-
-int c_oneMigrate(int vmid, int hid, int flag)
-{
- xmlrpc_value *resultP;
-
- resultP = xmlrpc_client_call(&one_client.env, one_client.url,
- "one.vmmigrate", "(siib)", one_client.session, (xmlrpc_int32)vmid,
- (xmlrpc_int32)hid,
- (xmlrpc_bool)flag);
-
- return c_oneReturnCode(resultP);
-}
-
-int c_oneAllocateTemplate(char* vm_template)
-{
- xmlrpc_value *resultP;
- xmlrpc_value *valueP;
- int return_code;
- char *return_string;
- int vmid;
-
-
- resultP = xmlrpc_client_call(&one_client.env, one_client.url,
- "one.vmallocate", "(ss)", one_client.session, vm_template);
-
- xmlrpc_array_read_item(&one_client.env, resultP, 0, &valueP);
- xmlrpc_read_bool(&one_client.env, valueP, &return_code);
-
- if( return_code )
- {
- xmlrpc_DECREF(valueP);
- xmlrpc_array_read_item(&one_client.env, resultP, 1, &valueP);
- xmlrpc_read_int(&one_client.env, valueP, &vmid);
-
- xmlrpc_DECREF(valueP);
- xmlrpc_DECREF(resultP);
-
- return vmid;
- }
- else
- {
- xmlrpc_DECREF(valueP);
- xmlrpc_array_read_item(&one_client.env, resultP, 1, &valueP);
- xmlrpc_read_string(&one_client.env, valueP,
- (const char **)&return_string);
-
- xmlrpc_DECREF(valueP);
- xmlrpc_DECREF(resultP);
-
- VIR_FREE(one_client.error);
-
- one_client.error=return_string;
- return -1;
- }
-}
-
-int c_oneAction(int vmid, char* action)
-{
- xmlrpc_value *resultP;
-
- resultP = xmlrpc_client_call(&one_client.env, one_client.url,
- "one.vmaction", "(ssi)", one_client.session, action,
- (xmlrpc_int32)vmid);
-
- return c_oneReturnCode(resultP);
-}
-
-int c_oneShutdown(int vmid)
-{
- return c_oneAction(vmid, (char *)"shutdown");
-}
-
-int c_oneSuspend(int vmid)
-{
- return c_oneAction(vmid, (char *)"suspend");
-}
-
-int c_oneStop(int vmid)
-{
- return c_oneAction(vmid, (char *)"stop");
-}
-
-int c_oneResume(int vmid)
-{
- return c_oneAction(vmid, (char *)"resume");
-}
-
-int c_oneCancel(int vmid)
-{
- return c_oneAction(vmid, (char *)"cancel");
-}
-
-int c_oneFinalize(int vmid)
-{
- return c_oneAction(vmid, (char *)"finalize");
-}
-
-int c_oneVmInfo(int vmid, char* ret_info, int length)
-{
- xmlrpc_value *resultP;
- int return_code;
- char *return_string;
- int retval = -1;
-
- resultP = xmlrpc_client_call(&one_client.env, one_client.url,
- "one.vmget_info", "(si)", one_client.session, vmid);
-
- xmlrpc_decompose_value(&one_client.env, resultP, "(bs)",
- &return_code, &return_string);
-
- if( return_code )
- {
- if (virStrncpy(ret_info, return_string, length-1, length) != NULL)
- /* Only set the return value to 0 if we succeeded */
- retval = 0;
- }
-
- xmlrpc_DECREF(resultP);
- VIR_FREE(return_string);
-
- return retval;
-}
-
-void c_oneFree()
-{
- xmlrpc_env_clean(&one_client.env);
- xmlrpc_client_cleanup();
-}
+++ /dev/null
-/* Copyright 2002-2009, Distributed Systems Architecture Group, Universidad
- * Complutense de Madrid (dsa-research.org)
- *
- * 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, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
- */
-
-#ifndef ONE_CLIENT_H_
-# define ONE_CLIENT_H_
-
-# include <xmlrpc-c/base.h>
-# include <xmlrpc-c/client.h>
-
-struct _oneClient {
- xmlrpc_env env;
- const char *url;
- const char *session;
- char *error;
-};
-
-typedef struct _oneClient oneClient;
-typedef oneClient *oneClientPtr;
-
-void c_oneStart(void);
-
-int c_oneDeploy(int vmid, int hid);
-
-int c_oneMigrate(int vmid, int hid, int flag);
-
-int c_oneAllocateTemplate(char* vm_template);
-
-int c_oneAction(int vmid,char* action);
-
-int c_oneShutdown(int vmid);
-
-int c_oneSuspend(int vmid);
-
-int c_oneStop(int vmid);
-
-int c_oneResume(int vmid);
-
-int c_oneCancel(int vmid);
-
-int c_oneFinalize(int vmid);
-
-int c_oneVmInfo(int vmid, char* ret_info,int leng);
-
-void c_oneFree(void);
-
-
-#endif /* ONE_CLIENT_H_ */
+++ /dev/null
-/*----------------------------------------------------------------------------------*/
-/*
- * Copyright (C) 2010 Red Hat, Inc.
- * Copyright 2002-2009, Distributed Systems Architecture Group, Universidad
- * Complutense de Madrid (dsa-research.org)
- *
- * 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, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
- */
-/*-----------------------------------------------------------------------------------*/
-
-#include <config.h>
-#include <sys/utsname.h>
-
-#include "virterror_internal.h"
-#include "one_conf.h"
-#include "buf.h"
-#include "memory.h"
-#include "util.h"
-
-#define VIR_FROM_THIS VIR_FROM_ONE
-/* --------------------------------------------------------------------------------- */
-
-/**
- * oneCapsInit initialize the driver capabilities
- * @return a pointer to the driver capabilities NULL in case of error
- */
-
-virCapsPtr oneCapsInit(void)
-{
- struct utsname utsname;
- virCapsPtr caps;
- virCapsGuestPtr guest;
-
- uname(&utsname);
-
- if ((caps = virCapabilitiesNew(utsname.machine,0,0)) == NULL)
- {
- goto no_memory;
- }
-
- virCapabilitiesSetMacPrefix(caps,(unsigned char[]){ 0x52, 0x54, 0x00 });
-
- if ((guest = virCapabilitiesAddGuest(caps,
- "hvm",
- "i686",
- 32,
- NULL,
- NULL,
- 0,
- NULL)) == NULL)
- {
- goto no_memory;
- }
-
- if (virCapabilitiesAddGuestDomain(guest,
- "one",
- NULL,
- NULL,
- 0,
- NULL) == NULL)
- {
- goto no_memory;
- }
-
-
- if ((guest = virCapabilitiesAddGuest(caps,
- "hvm",
- "x86_64",
- 64,
- NULL,
- NULL,
- 0,
- NULL)) == NULL)
- {
- goto no_memory;
- }
-
- if (virCapabilitiesAddGuestDomain(guest,
- "one",
- NULL,
- NULL,
- 0,
- NULL) == NULL)
- {
- 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;
-
-no_memory:
-
- virCapabilitiesFree(caps);
- return NULL;
-}
-
-/* --------------------------------------------------------------------------------- */
-/* --------------------------------------------------------------------------------- */
-/* --------------------------------------------------------------------------------- */
-
-
-/**
- * oneSubmitVM generates an OpenNebula description file and submits the new VM
- * @param driver the OpenNebula driver
- * @param vm the virtual machine pointer
- * @return the OpenNebula ID for the new VM or -1 in case of error
- */
-
-int oneSubmitVM(one_driver_t* driver ATTRIBUTE_UNUSED,
- virDomainObjPtr vm)
-{
- char* templ;
- int oneid;
-
- if ((templ = xmlOneTemplate(vm->def)) == NULL)
- return -1;
-
- if ((oneid = c_oneAllocateTemplate(templ)) < 0) {
- oneError(VIR_ERR_OPERATION_FAILED, "%s",
- _("Error submitting virtual machine to OpenNebula"));
- VIR_FREE(templ);
- return -1;
- }
-
- VIR_FREE(templ);
- return oneid;
-}
-/* --------------------------------------------------------------------------------- */
-/* --------------------------------------------------------------------------------- */
-/* --------------------------------------------------------------------------------- */
-
-/**
- * xmlOneTemplate Generate an OpenNebula template to deploy a VM from libvirt
- * internal Domain definition.
- * @param def Internal libvirt Domain definition
- * @return OpenNebula VM template.
- */
-
-char* xmlOneTemplate(virDomainDefPtr def)
-{
- int i;
- virBuffer buf= VIR_BUFFER_INITIALIZER;
- virBufferVSprintf(&buf,"#OpenNebula Template automatically generated "
- "by libvirt\nNAME = %s\nCPU = %d\nMEMORY = %ld\n",
- def->name,
- def->maxvcpus,
- VIR_DIV_UP(def->mem.max_balloon, 1024));
-
- /*Optional Booting OpenNebula Information:*/
- if (def->os.kernel) {
- virBufferVSprintf(&buf,"OS=[ kernel = \"%s\"",def->os.kernel);
- if (def->os.initrd)
- virBufferVSprintf(&buf,",\n initrd = \"%s\"",def->os.initrd);
- if (def->os.cmdline)
- virBufferVSprintf(&buf,",\n kernel_cmd = \"%s\"",def->os.cmdline);
- if (def->os.root)
- virBufferVSprintf(&buf,",\n root = \"%s\"",def->os.root);
-
- virBufferAddLit(&buf," ]\n");
- }
- /* set Disks & NICS */
- for (i=0 ; i < def->ndisks ; i++) {
- /* missing source is only allowed at cdrom and floppy */
- if (def->disks[i]->device == VIR_DOMAIN_DISK_DEVICE_DISK) {
- virBufferVSprintf(&buf, "DISK=[ type = disk,\n"
- "\tsource = \"%s\",\n",
- def->disks[i]->src);
- }
- else if (def->disks[i]->device == VIR_DOMAIN_DISK_DEVICE_CDROM) {
- virBufferAddLit(&buf, "DISK=[ type = cdrom,\n");
- if (def->disks[i]->src) virBufferVSprintf(&buf, "\tsource = \"%s\",\n",def->disks[i]->src);
- }
- else if (def->disks[i]->device == VIR_DOMAIN_DISK_DEVICE_FLOPPY) {
- virBufferAddLit(&buf, "DISK=[ type = floppy,\n");
- if (def->disks[i]->src) virBufferVSprintf(&buf, "\tsource = \"%s\",\n",def->disks[i]->src);
- }
-
- virBufferVSprintf(&buf, "\ttarget = \"%s\",\n"
- "\treadonly =",
- def->disks[i]->dst);
-
- if (def->disks[i]->readonly)
- virBufferAddLit(&buf,"\"yes\"]\n");
- else
- virBufferAddLit(&buf,"\"no\"]\n");
- }
-
- for (i=0 ; i< def->nnets ; i++)
- {
- if (!def->nets[i]) {
- continue;
- }
-
- switch(def->nets[i]->type)
- {
- case VIR_DOMAIN_NET_TYPE_BRIDGE:
- virBufferVSprintf(&buf,"NIC=[ bridge =\"%s\",\n",def->nets[i]->data.bridge.brname);
-
- if (def->nets[i]->ifname)
- virBufferVSprintf(&buf," target =\"%s\",\n",def->nets[i]->ifname);
-
- virBufferVSprintf(&buf," mac =\"%02x:%02x:%02x:%02x:%02x:%02x\" ]\n",
- def->nets[i]->mac[0],def->nets[i]->mac[1],
- def->nets[i]->mac[2],def->nets[i]->mac[3],
- def->nets[i]->mac[4],def->nets[i]->mac[5]);
- break;
-
- case VIR_DOMAIN_NET_TYPE_NETWORK:
- virBufferVSprintf(&buf,"NIC=[ network=\"%s\"",def->nets[i]->data.network.name);
- if (def->nets[i]->ifname)
- virBufferVSprintf(&buf,",\n target =\"%s\"",def->nets[i]->ifname);
- virBufferAddLit(&buf," ]\n");
- break;
-
- default: break;
- }
- }
-
- for(i=0;i<def->ngraphics;i++) {
- if (def->graphics[i] == NULL)
- continue;
-
- if (def->graphics[i]->type == VIR_DOMAIN_GRAPHICS_TYPE_VNC) {
- virBufferAddLit(&buf,"GRAPHICS = [\n type = \"vnc\"");
-
- if (def->graphics[i]->data.vnc.listenAddr != NULL)
- virBufferVSprintf(&buf,",\n listen = \"%s\"",
- def->graphics[i]->data.vnc.listenAddr);
-
- if (def->graphics[i]->data.vnc.autoport == 0)
- virBufferVSprintf(&buf,",\n port = \"%d\"",
- def->graphics[i]->data.vnc.port);
-
- if (def->graphics[i]->data.vnc.auth.passwd != NULL)
- virBufferVSprintf(&buf,",\n passwd = \"%s\"",
- def->graphics[i]->data.vnc.auth.passwd);
-
- virBufferAddLit(&buf," ]\n");
-
- }
- else /* graphics.type==VIR_DOMAIN_GRAPHICS_TYPE_SDL */
- virBufferAddLit(&buf,"GRAPHICS = [\n type = \"sdl\" ]\n");
-
- }
- if (virBufferError(&buf))
- goto no_memory;
-
- return virBufferContentAndReset(&buf);
-
-no_memory:
- virReportOOMError();
- virBufferFreeAndReset(&buf);
- return NULL;
-};
+++ /dev/null
-/*----------------------------------------------------------------------------------*/
-/*
- * Copyright (C) 2010 Red Hat, Inc.
- * Copyright 2002-2009, Distributed Systems Architecture Group, Universidad
- * Complutense de Madrid (dsa-research.org)
- *
- * 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, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
- */
-/*-----------------------------------------------------------------------------------*/
-
-#ifndef ONE_CONF_H
-# define ONE_CONF_H
-
-# include <config.h>
-
-# include "internal.h"
-# include "domain_conf.h"
-# include "capabilities.h"
-# include "threads.h"
-# include "one_client.h"
-
-struct one_driver{
- virMutex lock;
-
- virCapsPtr caps;
- virDomainObjList domains;
- int nextid;
-};
-
-typedef struct one_driver one_driver_t;
-
-virCapsPtr oneCapsInit(void);
-
-int oneSubmitVM(one_driver_t* driver, virDomainObjPtr vm);
-
-char* xmlOneTemplate(virDomainDefPtr def);
-
-# define oneError(code, ...) \
- virReportErrorHelper(NULL, VIR_FROM_ONE, code, __FILE__, \
- __FUNCTION__, __LINE__, __VA_ARGS__)
-
-#endif /* ONE_CONF_H */
+++ /dev/null
-/*---------------------------------------------------------------------------*/
-/*
- * Copyright (C) 2010-2011 Red Hat, Inc.
- * Copyright 2002-2009, Distributed Systems Architecture Group, Universidad
- * Complutense de Madrid (dsa-research.org)
- *
- * 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, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
- */
-/*---------------------------------------------------------------------------*/
-
-#include <config.h>
-
-#include <fcntl.h>
-#include <sched.h>
-#include <sys/utsname.h>
-#include <string.h>
-#include <sys/types.h>
-#include <sys/socket.h>
-#include <sys/un.h>
-#include <sys/poll.h>
-#include <unistd.h>
-#include <wait.h>
-#include <sys/time.h>
-
-#include "virterror_internal.h"
-#include "logging.h"
-#include "datatypes.h"
-#include "one_conf.h"
-#include "one_driver.h"
-#include "memory.h"
-#include "util.h"
-#include "bridge.h"
-
-#define VIR_FROM_THIS VIR_FROM_ONE
-
-static int oneStartup(int privileged);
-static int oneShutdown(void);
-static int oneActive(void);
-
-static void oneDriverLock(one_driver_t* driver)
-{
- virMutexLock(&driver->lock);
-}
-
-static void oneDriverUnlock(one_driver_t* driver)
-{
- virMutexUnlock(&driver->lock);
-}
-
-static one_driver_t *one_driver =NULL;
-
-
-static virDrvOpenStatus oneOpen(virConnectPtr conn,
- virConnectAuthPtr auth ATTRIBUTE_UNUSED,
- int flags ATTRIBUTE_UNUSED)
-{
- /* Verify uri was specified */
- if (conn->uri == NULL) {
- conn->uri = xmlParseURI("one:///");
- if (!conn->uri) {
- virReportOOMError();
- return VIR_DRV_OPEN_ERROR;
- }
- } else if (conn->uri->scheme == NULL ||
- STRNEQ(conn->uri->scheme, "one")) {
- goto declineConnection;
- }
- conn->privateData = one_driver;
-
- return VIR_DRV_OPEN_SUCCESS;
-
-declineConnection:
- return VIR_DRV_OPEN_DECLINED;
-}
-
-static int oneClose(virConnectPtr conn)
-{
- conn->privateData = NULL;
- return 0;
-}
-
-
-static int oneIsEncrypted(virConnectPtr conn ATTRIBUTE_UNUSED)
-{
- /* Not encrypted because it uses HTTP, not HTTPs */
- return 0;
-}
-
-
-static int oneIsSecure(virConnectPtr conn ATTRIBUTE_UNUSED)
-{
- /* Not secure because it uses HTTP, not HTTPs */
- return 0;
-}
-
-static int oneIsUpdated(virDomainPtr conn ATTRIBUTE_UNUSED)
-{
- return 0;
-}
-
-static virDomainPtr oneDomainLookupByID(virConnectPtr conn,
- int id)
-{
- one_driver_t *driver = conn->privateData;
- virDomainPtr dom = NULL;
- virDomainObjPtr vm = NULL;
-
- oneDriverLock(driver);
- vm = virDomainFindByID(&driver->domains, id);
- oneDriverUnlock(driver);
-
- if (!vm) {
- oneError(VIR_ERR_NO_DOMAIN, NULL);
- goto return_point;
- }
-
- dom = virGetDomain(conn, vm->def->name, vm->def->uuid);
- if (dom) {
- dom->id = vm->def->id;
- }
-
-return_point:
- if(vm) {
- virDomainObjUnlock(vm);
- }
-
- return dom;
-}
-
-static virDomainPtr oneDomainLookupByUUID(virConnectPtr conn,
- const unsigned char *uuid)
-{
- one_driver_t *driver = conn->privateData;
- virDomainPtr dom = NULL;
- virDomainObjPtr vm = NULL;
-
- oneDriverLock(driver);
- vm = virDomainFindByUUID(&driver->domains, uuid);
- oneDriverUnlock(driver);
- if (!vm) {
- oneError(VIR_ERR_NO_DOMAIN, NULL);
- goto return_point;
- }
-
- dom = virGetDomain(conn, vm->def->name, vm->def->uuid);
- if (dom) {
- dom->id = vm->def->id;
- }
-
-return_point:
- if(vm) {
- virDomainObjUnlock(vm);
- }
-
- return dom;
-}
-
-static virDomainPtr oneDomainLookupByName(virConnectPtr conn,
- const char *name)
-{
- one_driver_t *driver = conn->privateData;
- virDomainObjPtr vm = NULL;
- virDomainPtr dom=NULL;
-
- oneDriverLock(driver);
- vm = virDomainFindByName(&driver->domains, name);
- oneDriverUnlock(driver);
-
- if (!vm) {
- oneError(VIR_ERR_NO_DOMAIN, NULL);
- goto return_point;
- }
-
- dom = virGetDomain(conn, vm->def->name, vm->def->uuid);
- if (dom) {
- dom->id = vm->def->id;
- }
-return_point:
- if(vm) {
- virDomainObjUnlock(vm);
- }
-
- return dom;
-}
-
-static int oneListDomains(virConnectPtr conn, int *ids, int nids)
-{
- one_driver_t *driver = conn->privateData;
- int n;
-
- oneDriverLock(driver);
- n = virDomainObjListGetActiveIDs(&driver->domains, ids, nids);
- oneDriverUnlock(driver);
-
- return n;
-}
-
-static int oneNumDomains(virConnectPtr conn)
-{
- one_driver_t *driver = conn->privateData;
- int n;
-
- oneDriverLock(driver);
- n = virDomainObjListNumOfDomains(&driver->domains, 1);
- oneDriverUnlock(driver);
-
- return n;
-}
-
-static int oneListDefinedDomains(virConnectPtr conn,
- char **const names, int nnames) {
- one_driver_t *driver = conn->privateData;
- int n;
-
- oneDriverLock(driver);
- n = virDomainObjListGetInactiveNames(&driver->domains, names, nnames);
- oneDriverUnlock(driver);
-
- return n;
-}
-
-static int oneNumDefinedDomains(virConnectPtr conn)
-{
- one_driver_t *driver = conn->privateData;
- int n;
-
- oneDriverLock(driver);
- n = virDomainObjListNumOfDomains(&driver->domains, 0);
- oneDriverUnlock(driver);
-
- return n;
-}
-
-static virDomainPtr oneDomainDefine(virConnectPtr conn, const char *xml)
-{
- one_driver_t *driver = conn->privateData;
- virDomainDefPtr def;
- virDomainObjPtr vm;
- virDomainPtr dom=NULL;
-
- oneDriverLock(driver);
- if (!(def = virDomainDefParseString(driver->caps, xml,
- VIR_DOMAIN_XML_INACTIVE)))
- goto return_point;
-
- if (!(vm = virDomainAssignDef(driver->caps,
- &driver->domains, def, false))) {
- virDomainDefFree(def);
- goto return_point;
- }
-
- vm->def->id = -1;
- vm->persistent = 1;
- dom = virGetDomain(conn, vm->def->name, vm->def->uuid);
- if (dom) {
- dom->id = vm->def->id;
- }
- virDomainObjUnlock(vm);
-
-return_point:
- oneDriverUnlock(driver);
- return dom;
-}
-
-
-static int oneDomainUndefine(virDomainPtr dom)
-{
- one_driver_t *driver = dom->conn->privateData;
- virDomainObjPtr vm = NULL;
- int ret=-1;
-
- oneDriverLock(driver);
- vm =virDomainFindByUUID(&driver->domains, dom->uuid);
- if (!vm) {
- oneError(VIR_ERR_NO_DOMAIN, "%s",
- _("no domain with matching uuid"));
- goto return_point;
- }
-
- if (!vm->persistent) {
- oneError(VIR_ERR_OPERATION_INVALID, "%s",
- _("cannot undefine transient domain"));
- goto return_point;
- }
- virDomainRemoveInactive(&driver->domains, vm);
- ret=0;
-
-return_point:
- if (vm)
- virDomainObjUnlock(vm);
- oneDriverUnlock(driver);
- return ret;
-}
-
-static int oneDomainGetInfo(virDomainPtr dom,
- virDomainInfoPtr info)
-{
- one_driver_t *driver = dom->conn->privateData;
- struct timeval tv;
- virDomainObjPtr vm;
- oneDriverLock(driver);
- vm= virDomainFindByUUID(&driver->domains, dom->uuid);
- oneDriverUnlock(driver);
-
- if (!vm) {
- oneError(VIR_ERR_NO_DOMAIN, "%s",
- _("no domain with matching uuid"));
- return -1;
- }
-
- if(gettimeofday(&tv,NULL)<0) {
- oneError(VIR_ERR_INTERNAL_ERROR, "%s",
- _("getting time of day"));
- virDomainObjUnlock(vm);
- return -1;
- }
-
- if (!virDomainObjIsActive(vm)) {
- info->cpuTime = 0;
- } else {
- char vm_info[257];
- c_oneVmInfo(vm->pid,vm_info,256);
- /* State: */
- char* cptr = strstr(vm_info,"STATE");
- cptr = index(cptr, ':');
- cptr++;
- int one_state=atoi(cptr);
-
- switch(one_state) {
- case 3: /** running */
- if (vm->state!=VIR_DOMAIN_SHUTDOWN)
- vm->state=VIR_DOMAIN_RUNNING;
- break;
- case 5: /** pause */
- vm->state=VIR_DOMAIN_PAUSED;
- break;
- case 6: /** done */
- vm->state=VIR_DOMAIN_SHUTOFF;
- vm->def->id=-1;
- break;
- case 7: /** error */
- vm->state=VIR_DOMAIN_CRASHED;
- break;
- default:
- break;
- };
- /* Memory: */
- cptr=strstr(vm_info,"MEMORY");
- cptr=index(cptr,':');
- cptr++;
- vm->def->mem.cur_balloon = atoi(cptr);
-
- /* run time: */
- cptr=strstr(vm_info,"START TIME");
- cptr=index(cptr,':');
- cptr++;
- long starttime = atol(cptr);
- info->cpuTime = (tv.tv_sec - starttime) *1000ll *1000ll *1000ll;
-
- }
-
- info->state = vm->state;
- info->maxMem = vm->def->mem.max_balloon;
- info->memory = vm->def->mem.cur_balloon;
- info->nrVirtCpu = vm->def->vcpus;
-
- virDomainObjUnlock(vm);
- return 0;
-}
-
-static char *oneGetOSType(virDomainPtr dom)
-{
- one_driver_t *driver = dom->conn->privateData;
- virDomainObjPtr vm = NULL;
- char *ret = NULL;
-
- oneDriverLock(driver);
- vm =virDomainFindByUUID(&driver->domains, dom->uuid);
- oneDriverUnlock(driver);
- if (!vm) {
- oneError(VIR_ERR_NO_DOMAIN, "%s",
- _("no domain with matching uuid"));
- goto cleanup;
- }
-
- ret = strdup(vm->def->os.type);
- if (!ret)
- virReportOOMError();
-
-cleanup:
- if (vm)
- virDomainObjUnlock(vm);
- return ret;
-}
-
-static int oneDomainStartWithFlags(virDomainPtr dom, unsigned int flags)
-{
- virConnectPtr conn = dom->conn;
- one_driver_t *driver = conn->privateData;
- virDomainObjPtr vm;
- int ret = -1;
- int oneid;
-
- virCheckFlags(0, -1);
-
- oneDriverLock(driver);
- vm = virDomainFindByName(&driver->domains, dom->name);
-
- if (!vm) {
- oneError(VIR_ERR_NO_DOMAIN,
- _("no domain named %s"), dom->name);
- goto return_point;
- }
- if((oneid = oneSubmitVM(driver, vm)) < 0) {
- goto return_point;
- }
- vm->pid=oneid;
- vm->def->id=driver->nextid++;
- vm->state=VIR_DOMAIN_BLOCKED;
- ret=0;
-
-return_point:
- if(vm)
- virDomainObjUnlock(vm);
- oneDriverUnlock(driver);
-
- return ret;
-}
-
-static int oneDomainStart(virDomainPtr dom)
-{
- return oneDomainStartWithFlags(dom, 0);
-}
-
-static virDomainPtr
-oneDomainCreateAndStart(virConnectPtr conn,
- const char *xml,
- unsigned int flags) {
- one_driver_t *driver = conn->privateData;
- virDomainObjPtr vm = NULL;
- virDomainDefPtr def;
- virDomainPtr dom = NULL;
- int oneid;
-
- virCheckFlags(0, NULL);
-
- oneDriverLock(driver);
- if (!(def = virDomainDefParseString(driver->caps, xml,
- VIR_DOMAIN_XML_INACTIVE)))
- goto return_point;
-
- vm = virDomainFindByName(&driver->domains, def->name);
- if (vm) {
- oneError(VIR_ERR_OPERATION_FAILED,
- _("Already an OpenNebula VM active with the name: '%s' id: %d "),
- def->name,def->id);
- goto return_point;
- }
-
- if (!(vm = virDomainAssignDef(driver->caps,
- &driver->domains, def, false))) {
- virDomainDefFree(def);
- goto return_point;
- }
- if ((oneid = oneSubmitVM(driver, vm)) < 0) {
- virDomainRemoveInactive(&driver->domains, vm);
- vm=NULL;
- goto return_point;
- }
-
- vm->def->id=driver->nextid++;
- vm->persistent=0;
- vm->pid=oneid;
- vm->state=VIR_DOMAIN_BLOCKED;
-
- dom = virGetDomain(conn, vm->def->name, vm->def->uuid);
- if (dom) {
- dom->id = vm->def->id;
- }
-
-return_point:
- if(vm)
- virDomainObjUnlock(vm);
- oneDriverUnlock(driver);
-
- return dom;
-}
-
-static int oneDomainShutdown(virDomainPtr dom)
-{
- one_driver_t *driver = dom->conn->privateData;
- virDomainObjPtr vm;
- int ret=-1;
-
- oneDriverLock(driver);
- if (!(vm=virDomainFindByID(&driver->domains, dom->id))) {
- oneError(VIR_ERR_NO_DOMAIN,
- _("no domain with id %d"), dom->id);
- goto return_point;
- }
-
- if (c_oneShutdown(vm->pid)) {
- oneError(VIR_ERR_OPERATION_INVALID, "%s",
- _("Wrong state to perform action"));
- goto return_point;
- }
- vm->state=VIR_DOMAIN_SHUTDOWN;
- ret= 0;
-
- if (!vm->persistent) {
- virDomainRemoveInactive(&driver->domains, vm);
- vm = NULL;
- }
-
-return_point:
- if(vm)
- virDomainObjUnlock(vm);
- oneDriverUnlock(driver);
-
- return ret;
-}
-
-static int oneDomainDestroy(virDomainPtr dom)
-{
- one_driver_t *driver = dom->conn->privateData;
- virDomainObjPtr vm;
- int ret=-1;
-
- oneDriverLock(driver);
- vm= virDomainFindByID(&driver->domains, dom->id);
- if (!vm) {
- oneError(VIR_ERR_NO_DOMAIN,
- _("no domain with id %d"), dom->id);
- goto return_point;
- }
- if(c_oneCancel(vm->pid)) {
- /* VM not running, delete the instance at ONE DB */
- if(c_oneFinalize(vm->pid)){
- oneError(VIR_ERR_OPERATION_INVALID, "%s",
- _("Wrong state to perform action"));
- goto return_point;
- }
- }
- if(!vm->persistent) {
- virDomainRemoveInactive(&driver->domains,vm);
- vm=NULL;
- }
- ret=0;
-
-return_point:
- if(vm)
- virDomainObjUnlock(vm);
-
- oneDriverUnlock(driver);
-
- return ret;
-}
-
-static int oneDomainSuspend(virDomainPtr dom)
-{
- one_driver_t* driver = dom->conn->privateData;
- virDomainObjPtr vm;
- int ret=-1;
-
- oneDriverLock(driver);
- if ((vm=virDomainFindByID(&driver->domains,dom->id))){
-
- if (vm->state == VIR_DOMAIN_RUNNING) {
- if( !(c_oneSuspend(vm->pid)) ) {
- vm->state=VIR_DOMAIN_PAUSED;
- ret=0;
- goto return_point;
- }
- oneError(VIR_ERR_OPERATION_INVALID, "%s",
- _("Wrong state to perform action"));
- goto return_point;
- }
- oneError(VIR_ERR_OPERATION_INVALID, "%s",
- _("domain is not running"));
- } else {
- oneError(VIR_ERR_NO_DOMAIN,
- _("no domain with matching id %d"), dom->id);
- }
-
-return_point:
- if(vm)
- virDomainObjUnlock(vm);
- oneDriverUnlock(driver);
-
- return ret;
-};
-
-static int oneDomainResume(virDomainPtr dom)
-{
- one_driver_t* driver = dom->conn->privateData;
- virDomainObjPtr vm;
- int ret=-1;
-
- oneDriverLock(driver);
- if ((vm=virDomainFindByID(&driver->domains,dom->id))) {
- if (vm->state == VIR_DOMAIN_PAUSED) {
- if( !(c_oneResume(vm->pid)) ) {
- vm->state=VIR_DOMAIN_RUNNING;
- ret=0;
- goto return_point;
- }
- oneError(VIR_ERR_OPERATION_INVALID, "%s",
- _("Wrong state to perform action"));
- goto return_point;
- }
- oneError(VIR_ERR_OPERATION_INVALID, "%s",
- _("domain is not paused"));
- } else {
- oneError(VIR_ERR_NO_DOMAIN,
- _("no domain with matching id %d"), dom->id);
- }
-
-return_point:
- if(vm)
- virDomainObjUnlock(vm);
- oneDriverUnlock(driver);
-
- return ret;
-};
-
-static int oneStartup(int privileged ATTRIBUTE_UNUSED){
-
- if (VIR_ALLOC(one_driver) < 0) {
- return -1;
- }
-
- if(virMutexInit(&one_driver->lock)<0){
- VIR_FREE(one_driver);
- return -1;
- }
-
- c_oneStart();
- oneDriverLock(one_driver);
-
- if (virDomainObjListInit(&one_driver->domains) < 0) {
- goto error;
- }
-
- one_driver->nextid=1;
- if ((one_driver->caps = oneCapsInit()) == NULL) {
- virReportOOMError();
- goto error;
- }
- oneDriverUnlock(one_driver);
-
- return 0;
-
-error:
- oneDriverUnlock(one_driver);
- oneShutdown();
- return -1;
-}
-
-static int oneShutdown(void){
- if (one_driver == NULL)
- return(-1);
-
- oneDriverLock(one_driver);
- virDomainObjListDeinit(&one_driver->domains);
-
- virCapabilitiesFree(one_driver->caps);
- oneDriverUnlock(one_driver);
- virMutexDestroy(&one_driver->lock);
- VIR_FREE(one_driver);
- one_driver = NULL;
- c_oneFree();
- return 0;
-}
-
-static int oneActive(void){
- int active = 0;
-
- if (one_driver == NULL)
- return(0);
-
- oneDriverLock(one_driver);
- active = virDomainObjListNumOfDomains(&one_driver->domains, 1);
- oneDriverUnlock(one_driver);
-
- return active;
-
-}
-
-static int oneVersion(virConnectPtr conn ATTRIBUTE_UNUSED, unsigned long *hvVer)
-{
- *hvVer = 1;
- return 0;
-}
-
-
-static int oneGetAutostart(virDomainPtr domain ATTRIBUTE_UNUSED, int *autostart)
-{
- autostart=0;
- return 0;
-}
-
-static char* oneGetCapabilities(virConnectPtr conn){
- one_driver_t* privconn = conn->privateData;
- char *xml;
- oneDriverLock(privconn);
- if ((xml = virCapabilitiesFormatXML(privconn->caps)) == NULL)
- virReportOOMError();
- oneDriverUnlock(privconn);
- return xml;
-}
-/* Function Tables */
-static virDriver oneDriver = {
- VIR_DRV_ONE, /* the number virDrvNo */
- "one", /* the name of the driver */
- oneOpen, /* open */
- oneClose, /* close */
- NULL, /* supports_feature */
- NULL, /* type */
- oneVersion, /* version */
- NULL, /* libvirtVersion (impl. in libvirt.c) */
- NULL, /* getHostname */
- NULL, /* getSysinfo */
- NULL, /* getMaxVcpus */
- NULL, /* nodeGetInfo */
- oneGetCapabilities, /* getCapabilities */
- oneListDomains, /* listDomains */
- oneNumDomains, /* numOfDomains */
- oneDomainCreateAndStart, /* domainCreateXML */
- oneDomainLookupByID, /* domainLookupByID */
- oneDomainLookupByUUID, /* domainLookupByUUID */
- oneDomainLookupByName, /* domainLookupByName */
- oneDomainSuspend, /* domainSuspend */
- oneDomainResume, /* domainResume */
- oneDomainShutdown, /* domainShutdown */
- NULL, /* domainReboot */
- oneDomainDestroy, /* domainDestroy */
- oneGetOSType, /* domainGetOSType */
- NULL, /* domainGetMaxMemory */
- NULL, /* domainSetMaxMemory */
- NULL, /* domainSetMemory */
- NULL, /* domainSetMemoryFlags */
- NULL, /* domainSetMemoryParameters */
- NULL, /* domainGetMemoryParameters */
- NULL, /* domainSetBlkioParameters */
- NULL, /* domainGetBlkioParameters */
- oneDomainGetInfo, /* domainGetInfo */
- NULL, /* domainSave */
- NULL, /* domainRestore */
- NULL, /* domainCoreDump */
- NULL, /* domainSetVcpus */
- NULL, /* domainSetVcpusFlags */
- NULL, /* domainGetVcpusFlags */
- NULL, /* domainPinVcpu */
- NULL, /* domainGetVcpus */
- NULL, /* domainGetMaxVcpus */
- NULL, /* domainGetSecurityLabel */
- NULL, /* nodeGetSecurityModel */
- NULL, /* domainDumpXML */
- NULL, /* domainXMLFromNative */
- NULL, /* domainXMLToNative */
- oneListDefinedDomains, /* listDefinedDomains */
- oneNumDefinedDomains, /* numOfDefinedDomains */
- oneDomainStart, /* domainCreate */
- oneDomainStartWithFlags, /* domainCreateWithFlags */
- oneDomainDefine, /* domainDefineXML */
- oneDomainUndefine, /* domainUndefine */
- NULL, /* domainAttachDevice */
- NULL, /* domainAttachDeviceFlags */
- NULL, /* domainDetachDevice */
- NULL, /* domainDetachDeviceFlags */
- NULL, /* domainUpdateDeviceFlags */
- oneGetAutostart, /* domainGetAutostart */
- NULL, /* domainSetAutostart */
- NULL, /* domainGetSchedulerType */
- NULL, /* domainGetSchedulerParameters */
- NULL, /* domainSetSchedulerParameters */
- NULL, /* domainMigratePrepare */
- NULL, /* domainMigratePerform */
- NULL, /* domainMigrateFinish */
- NULL, /* domainBlockStats */
- NULL, /* domainInterfaceStats */
- NULL, /* domainMemoryStats */
- NULL, /* domainBlockPeek */
- NULL, /* domainMemoryPeek */
- NULL, /* domainGetBlockInfo */
- NULL, /* nodeGetCellsFreeMemory */
- NULL, /* getFreeMemory */
- NULL, /* domainEventRegister */
- NULL, /* domainEventDeregister */
- NULL, /* domainMigratePrepare2 */
- NULL, /* domainMigrateFinish2 */
- NULL, /* nodeDeviceDettach; */
- NULL, /* nodeDeviceReAttach; */
- NULL, /* nodeDeviceReset; */
- NULL, /* domainMigratePrepareTunnel */
- oneIsEncrypted, /* isEncrypted */
- oneIsSecure, /* isSecure */
- NULL, /* domainIsActive */
- NULL, /* domainIsPersistent */
- oneIsUpdated, /* domainIsUpdated */
- NULL, /* cpuCompare */
- NULL, /* cpuBaseline */
- NULL, /* domainGetJobInfo */
- NULL, /* domainAbortJob */
- NULL, /* domainMigrateSetMaxDowntime */
- NULL, /* domainMigrateSetMaxSpeed */
- NULL, /* domainEventRegisterAny */
- NULL, /* domainEventDeregisterAny */
- NULL, /* domainManagedSave */
- NULL, /* domainHasManagedSaveImage */
- NULL, /* domainManagedSaveRemove */
- NULL, /* domainSnapshotCreateXML */
- NULL, /* domainSnapshotDumpXML */
- NULL, /* domainSnapshotNum */
- NULL, /* domainSnapshotListNames */
- NULL, /* domainSnapshotLookupByName */
- NULL, /* domainHasCurrentSnapshot */
- NULL, /* domainSnapshotCurrent */
- NULL, /* domainRevertToSnapshot */
- NULL, /* domainSnapshotDelete */
- NULL, /* qemuDomainMonitorCommand */
- NULL, /* domainOpenConsole */
-};
-
-static virStateDriver oneStateDriver = {
- .name = "OpenNebula",
- .initialize = oneStartup,
- .cleanup = oneShutdown,
- .active = oneActive,
-};
-
-
-int oneRegister(void)
-{
- virRegisterDriver(&oneDriver);
- virRegisterStateDriver(&oneStateDriver);
- return 0;
-}
+++ /dev/null
-/*---------------------------------------------------------------------------*/
-/* Copyright 2002-2009, Distributed Systems Architecture Group, Universidad
- * Complutense de Madrid (dsa-research.org)
- *
- * 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, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
- */
-/*---------------------------------------------------------------------------*/
-
-
-#ifndef ONE_DRIVER_H
-# define ONE_DRIVER_H
-
-# include <config.h>
-# include "one_client.h"
-
-int oneRegister(void);
-
-#endif /* ONE_DRIVER_H */
Operating Systems concurrently on a single hardware system where the
basic resources are driven by a Linux instance. The library aims at
providing a long term stable C API. It currently supports Xen, QEmu,
-KVM, LXC, OpenVZ, VirtualBox, OpenNebula, and VMware ESX.
+KVM, LXC, OpenVZ, VirtualBox and VMware ESX.
The basic structure of most virsh usage is: