|
From: <jc...@us...> - 2008-07-18 15:35:49
|
Revision: 757
http://omc.svn.sourceforge.net/omc/?rev=757&view=rev
Author: jcarey
Date: 2008-07-18 15:19:43 +0000 (Fri, 18 Jul 2008)
Log Message:
-----------
added vnc password to install
Modified Paths:
--------------
contrib/xen-vm-builder/trunk/mof/XEN_VMBuilderVirtualSystemCreationData.mof
contrib/xen-vm-builder/trunk/src/providers/vm-builder/builder-service.c
Modified: contrib/xen-vm-builder/trunk/mof/XEN_VMBuilderVirtualSystemCreationData.mof
===================================================================
--- contrib/xen-vm-builder/trunk/mof/XEN_VMBuilderVirtualSystemCreationData.mof 2008-07-18 00:27:28 UTC (rev 756)
+++ contrib/xen-vm-builder/trunk/mof/XEN_VMBuilderVirtualSystemCreationData.mof 2008-07-18 15:19:43 UTC (rev 757)
@@ -78,6 +78,9 @@
[Description("Port to use for VNC server")]
uint32 VNCPort;
+ [Description("VNC Password")]
+ string VNCPassword;
+
[Description("Field for users of this object to store additional data related "
"to this object. This is not used by the providers. It is user-defined "
"and user consumed. It is defined as a string array to allow for "
Modified: contrib/xen-vm-builder/trunk/src/providers/vm-builder/builder-service.c
===================================================================
--- contrib/xen-vm-builder/trunk/src/providers/vm-builder/builder-service.c 2008-07-18 00:27:28 UTC (rev 756)
+++ contrib/xen-vm-builder/trunk/src/providers/vm-builder/builder-service.c 2008-07-18 15:19:43 UTC (rev 757)
@@ -777,6 +777,15 @@
cmpiutilStrArray_append(pstra, wkbfr);
}
}
+ /**** VNCPassword ****/
+ data = CMGetProperty(cdci, "VNCPassword", NULL);
+ if (!CMIsNullValue(data)) {
+ const char *vncpwd = CMGetCharPtr(data.value.string);
+ if (vncpwd && strlen(vncpwd)) {
+ cmpiutilStrArray_append(pstra, "--vnc-password");
+ cmpiutilStrArray_append(pstra, vncpwd);
+ }
+ }
/**** SourceURL ****/
data = CMGetProperty(cdci, "SourceURL", NULL);
if (!CMIsNullValue(data)) {
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <np...@us...> - 2008-08-18 19:40:21
|
Revision: 858
http://omc.svn.sourceforge.net/omc/?rev=858&view=rev
Author: npaxton
Date: 2008-08-18 19:40:23 +0000 (Mon, 18 Aug 2008)
Log Message:
-----------
move to new registration scheme with .reg file instead of .registration file; checkin the modifed spec to sync up with the one that has been working in obs for a while now
Modified Paths:
--------------
contrib/xen-vm-builder/trunk/mof/Makefile.am
contrib/xen-vm-builder/trunk/sblim-cmpi-xenvm-builder.spec
Modified: contrib/xen-vm-builder/trunk/mof/Makefile.am
===================================================================
--- contrib/xen-vm-builder/trunk/mof/Makefile.am 2008-08-18 16:56:00 UTC (rev 857)
+++ contrib/xen-vm-builder/trunk/mof/Makefile.am 2008-08-18 19:40:23 UTC (rev 858)
@@ -12,7 +12,8 @@
owning-job-peg.reg \
settings-define-build-peg.reg \
vmcreation-data-peg.reg \
- XEN_VMBuilder.registration
+ XEN_VMBuilder.registration \
+ XEN_VMBuilder.reg
mofdir = $(datadir)/mof/$(PACKAGE_NAME)
Modified: contrib/xen-vm-builder/trunk/sblim-cmpi-xenvm-builder.spec
===================================================================
--- contrib/xen-vm-builder/trunk/sblim-cmpi-xenvm-builder.spec 2008-08-18 16:56:00 UTC (rev 857)
+++ contrib/xen-vm-builder/trunk/sblim-cmpi-xenvm-builder.spec 2008-08-18 19:40:23 UTC (rev 858)
@@ -1,7 +1,7 @@
#
# spec file for package sblim-cmpi-xenvm-builder (Version 1.0.0)
#
-# Copyright (c) 2006 SUSE LINUX Products GmbH, Nuernberg, Germany.
+# Copyright (c) 2008 SUSE LINUX Products GmbH, Nuernberg, Germany.
# This file and all modifications and additions to the pristine
# package are under the same license as the package itself.
#
@@ -9,39 +9,38 @@
#
# norootforbuild
-# usedforbuild aaa_base acl attr audit-libs autoconf automake bash bind-libs bind-utils binutils bison blocxx blocxx-devel bzip2 cim-schema coreutils cpio cpp cracklib cvs cyrus-sasl db dbus-1 dbus-1-glib dejagnu diffutils docbook-xsl-stylesheets docbook_4 doxygen e2fsprogs expat expect file filesystem fillup findutils flex fop gawk gcc gcc-c++ gdbm gdbm-devel gettext gettext-devel glib2 glibc glibc-devel glibc-locale gnome-filesystem gpm grep groff gzip hal hwinfo hwinfo-devel info insserv java-1_4_2-sun jpackage-utils klogd less libacl libapr-util1 libapr1 libattr libcom_err libgcc libgcrypt libgpg-error libltdl libnscd libpng libstdc++ libstdc++-devel libtool libusb libvolume_id libxcrypt libxml2 libxslt libzio limal limal-devel limal-devtools limal-runlevel limal-runlevel-devel m4 make man mktemp module-init-tools ncurses ncurses-devel neon net-tools netcfg openldap2-client openslp openslp-devel openssl openssl-devel openwbem openwbem-devel pam pam-devel pam-modules patch pcre pcre-devel perl perl-Config-IniFiles perl-XML-Parser perl-XML-Writer permissions pkgconfig popt procinfo procps psmisc pwdutils rcs readline recode rpm sed strace subversion swig sysfsutils sysvinit tar tcl tcpd texinfo timezone udev unzip util-linux vim wireless-tools zlib zlib-devel
+
Name: sblim-cmpi-xenvm-builder
-BuildRequires: gcc sblim-cmpi-devel sblim-cmpiutil-devel sqlite-devel pkgconfig
+BuildRequires: gcc pkgconfig sblim-cmpi-devel sblim-cmpiutil sblim-cmpiutil-devel sqlite-devel sblim-sfcb sblim-cmpi-base
%define tarname sblim-cmpi-xenvm-builder
-URL: http://www.omc-project.org
-%define sblimprefix /usr
-
+Url: http://www.omc-project.org
# Increment the version every time the source code changes.
-Version: 1.0.0
-Release: 1
+Version: 1.0.1
+Release: 0.2
Group: System/Management
-Summary: Linux CIM providers for CMPI instrumentation of virtual machine creation.
-PreReq: %{_datadir}/sblim-cmpi-base/provider-register.sh coreutils
-License: Other License(s), see package, Commercial
-
+Summary: Linux CIM providers for CMPI instrumentation of virtual machine creation
+PreReq: coreutils
+License: Other uncritical OpenSource License
# This is necessary to build the RPM as a non-root user.
BuildRoot: %{_tmppath}/%{name}-%{version}-build
# "yes" is the default, but we put it here explicitly to avoid someone
# setting it to "no"
-AutoReqProv: yes
-Requires: cim-server, cim-schema, sblim-cmpiutil sblim-cmpi-base xen-tools
+AutoReqProv: yes
+Requires: sblim-sfcb cim-schema sblim-cmpiutil sblim-cmpi-base xen-tools
Source0: %{tarname}-%{version}.tar.gz
#Source1: %{tarname}-mof.tar.bz2
%description
-Linux CIM providers for CMPI instrumentation of XEN virtual machine creation.
+Linux CIM providers for CMPI instrumentation of XEN virtual machine
+creation.
+
+
Authors:
--------
Jon Carey
-
%prep
# Untar the sources.
%setup -n %{tarname}-%{version}
@@ -55,68 +54,61 @@
autoreconf --force --install
CFLAGS="$RPM_OPT_FLAGS -fstack-protector" \
CXXFLAGS="$RPM_OPT_FLAGS -fstack-protector" \
-./configure --prefix=%{sblimprefix} \
- --libdir=%_libdir
-make %{?jobs:-j%jobs}
+%configure
+%{__make}
%install
%{__rm} -rf $RPM_BUILD_ROOT
%{__mkdir} -p $RPM_BUILD_ROOT
# Tell 'make install' to install into the BuildRoot
make DESTDIR=$RPM_BUILD_ROOT install
-MOFDIR=$RPM_BUILD_ROOT/%{sblimprefix}/share/%{name}
-install -d $MOFDIR
-install mof/*.mof $MOFDIR/
-install mof/*.registration $MOFDIR/
-install mof/*-peg.reg $MOFDIR/
-%{__rm} -f $RPM_BUILD_ROOT%{sblimprefix}/%_lib/cmpi/*.{a,la}
-%{__rm} -f $RPM_BUILD_ROOT%{sblimprefix}/%_lib/libcmpixen*.{a,la}
+#MOFDIR=$RPM_BUILD_ROOT/%{_datadir}/mof/%{name}
+#install -d $MOFDIR
+#install mof/*.mof $MOFDIR/
+#install mof/*.registration $MOFDIR/
+#install mof/*-peg.reg $MOFDIR/
+%{__rm} -f $RPM_BUILD_ROOT%{_libdir}/cmpi/*.{a,la}
+%{__rm} -f $RPM_BUILD_ROOT%{_libdir}/libcmpixen*.{a,la}
%clean
%{__rm} -rf $RPM_BUILD_ROOT
%pre
# Conditional definition of schema and registration files
-%define SCHEMA %{_datadir}/%{name}/XEN_VMBuilder.mof
-%define REGISTRATION %{_datadir}/%{name}/XEN_VMBuilder.registration
-%define PROVREG %{_datadir}/sblim-cmpi-base/provider-register.sh
-
-# If upgrading, deregister old version
+%define SCHEMA %{_datadir}/mof/%{name}/XEN_VMBuilder.mof
+%define REGISTRATION %{_datadir}/mof/%{name}/XEN_VMBuilder.reg
+# If upgrading/not new install/not removing, deregister old version
if [ $1 -gt 1 ]
then
- %{PROVREG} -d -r %{REGISTRATION} -m %{SCHEMA} > /dev/null
+# /usr/sbin/provider-register.sh -d -r %{_datadir}/mof/%{name}/*.registration -m %{_datadir}/mof/%{name}/*.mof
+ sfcbunstage -n root/cimv2 -r XEN_VMBuilder.reg XEN_VMBuilder.mof
+ sfcbrepos -f
+ /etc/init.d/sfcb condrestart
fi
%post
-# Any RPM that installs a shared library into any directory
-# listed in /etc/ld.so.conf (or into /usr/lib if it hasn't been
-# fixed yet to install into the correct FHS compliant paths)
-# must run ldconfig in its post install script.
-%run_ldconfig
-# load MOF
-MOFDIR=%{sblimprefix}/share/%{name}
+/sbin/ldconfig
+#/usr/sbin/provider-register.sh -r %{_datadir}/mof/%{name}/*.registration -m %{_datadir}/mof/%{name}/*.mof
+sfcbstage -n root/cimv2 -r %{REGISTRATION} %{SCHEMA}
+sfcbrepos -f
+/etc/init.d/sfcb condrestart
-%{PROVREG} -r %{REGISTRATION} -m %{SCHEMA}
-
%preun
-%{PROVREG} -r %{REGISTRATION} -m %{SCHEMA}
+# If removing (not upgrading) then de-register, before the files are gone
+if [ "x$1" = "x0" ]; then
+# /usr/sbin/provider-register.sh -d -r %{_datadir}/mof/%{name}/*.registration -m %{_datadir}/mof/%{name}/*.mof
+ sfcbunstage -n root/cimv2 -r XEN_VMBuilder.reg XEN_VMBuilder.mof
+ sfcbrepos -f
+ /etc/init.d/sfcb condrestart
+fi
-# if -e operation, not -U
-#if remove/not an upgrade, then deregister
-if [ "x$1" = "x0" ]; then
-%{PROVREG} -d -r %{_datadir}/%{name}/*.registration -m %{_datadir}/%{name}/*.mof
-fi
-
-%postun
-%run_ldconfig
-
%files
%defattr(-,root,root)
-%{sblimprefix}/%_lib/cmpi/*.so*
-%{sblimprefix}/%_lib/libcmpixen*.so*
+/%{_libdir}/cmpi/*.so*
+/%{_libdir}/libcmpixen*.so*
+%dir %{_datadir}/mof/%{name}
+%{_datadir}/mof/%{name}/*
-%dir %{sblimprefix}/share/%{name}
-%{sblimprefix}/share/%{name}/*
-
-%changelog -n sblim-cmpi-xenvm-builder
-
+%changelog
+* Mon Jul 07 2008 - jc...@no...
+- Initial Revision
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <mgf...@us...> - 2009-04-02 18:37:26
|
Revision: 1171
http://omc.svn.sourceforge.net/omc/?rev=1171&view=rev
Author: mgfritch
Date: 2009-04-02 18:37:19 +0000 (Thu, 02 Apr 2009)
Log Message:
-----------
- Added patch for extending the OSTypes available on SUSE11
Modified Paths:
--------------
contrib/xen-vm-builder/trunk/sblim-cmpi-xenvm-builder.spec
Added Paths:
-----------
contrib/xen-vm-builder/trunk/suse11_ostypes.patch
Modified: contrib/xen-vm-builder/trunk/sblim-cmpi-xenvm-builder.spec
===================================================================
--- contrib/xen-vm-builder/trunk/sblim-cmpi-xenvm-builder.spec 2009-04-01 16:17:49 UTC (rev 1170)
+++ contrib/xen-vm-builder/trunk/sblim-cmpi-xenvm-builder.spec 2009-04-02 18:37:19 UTC (rev 1171)
@@ -16,7 +16,7 @@
%define tarname sblim-cmpi-xenvm-builder
Url: http://www.omc-project.org
# Increment the version every time the source code changes.
-Version: 1.0.1
+Version: 1.0.3
Release: 0.2
Group: System/Management
Summary: Linux CIM providers for CMPI instrumentation of virtual machine creation
@@ -31,7 +31,11 @@
Obsoletes: novell-zenworks-vmbuilder-cimproviders novell-zenworks-vmbuilder-cli novell-zenworks-vmbuilder-zosjob
Source0: %{tarname}-%{version}.tar.gz
#Source1: %{tarname}-mof.tar.bz2
+%if 0%{?suse_version} >= 1100 || 0%{?sles_version} >= 11
+Patch0: suse11_ostypes.patch
+%endif
+
%description
Linux CIM providers for CMPI instrumentation of XEN virtual machine
creation.
@@ -45,6 +49,9 @@
%prep
# Untar the sources.
%setup -n %{tarname}-%{version}
+%if 0%{?suse_version} >= 1100 || 0%{?sles_version} >= 11
+%patch0 -p0
+%endif
%build
# If the LD_RUN_PATH environment variable is set at link time,
Added: contrib/xen-vm-builder/trunk/suse11_ostypes.patch
===================================================================
--- contrib/xen-vm-builder/trunk/suse11_ostypes.patch (rev 0)
+++ contrib/xen-vm-builder/trunk/suse11_ostypes.patch 2009-04-02 18:37:19 UTC (rev 1171)
@@ -0,0 +1,37 @@
+Index: mof/XEN_VMBuilderVirtualSystemCreationData.mof
+===================================================================
+--- mof/XEN_VMBuilderVirtualSystemCreationData.mof (revision 1169)
++++ mof/XEN_VMBuilderVirtualSystemCreationData.mof (working copy)
+@@ -110,13 +110,13 @@
+ " provides bootstrap capability. "),
+ ValueMap { "0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10",
+ "11", "12", "13", "14", "15", "16", "17", "18", "19", "20", "21",
+- "22", "23", "24"},
++ "22", "23", "24", "25", "26", "27", "28"},
+ Values { "other", "suse", "sles8", "sles9", "sles10", "sled10",
+ "oes2l", "oes2nw", "netware", "redhat", "rhel3", "rhel4",
+ "rhel5", "solaris9", "solaris10", "windows", "windowsx64",
+ "windowsnt", "windowsxp", "windowsxpx64", "windowsvista",
+ "windowsvistax64", "opensuse", "winserver2008",
+- "winserver2008x64" }]
++ "winserver2008x64", "opensuse11", "pxe", "sled11", "sles11" }]
+ uint32 OSType;
+
+ [Description("Behaviour of a domain when it is powered off. "
+Index: src/providers/vm-builder/builder-service.c
+===================================================================
+--- src/providers/vm-builder/builder-service.c (revision 1169)
++++ src/providers/vm-builder/builder-service.c (working copy)
+@@ -93,7 +93,11 @@
+ "windowsvistax64",
+ "opensuse",
+ "winserver2008",
+- "winserver2008x64"
++ "winserver2008x64",
++ "opensuse11",
++ "pxe",
++ "sled11",
++ "sles11"
+ };
+ size_t NumOsTypes = sizeof(OSTypes) / sizeof(char*);
+
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <jb...@us...> - 2009-05-05 14:57:57
|
Revision: 1173
http://omc.svn.sourceforge.net/omc/?rev=1173&view=rev
Author: jbgill
Date: 2009-05-05 14:56:53 +0000 (Tue, 05 May 2009)
Log Message:
-----------
added PXE boot option to provider and db schema to support vm-install's
new --pxe-boot flag.
Modified Paths:
--------------
contrib/xen-vm-builder/trunk/mof/XEN_VMBuilderVirtualSystemCreationData.mof
contrib/xen-vm-builder/trunk/sblim-cmpi-xenvm-builder.spec
contrib/xen-vm-builder/trunk/src/providers/vm-builder/builder-service.c
contrib/xen-vm-builder/trunk/src/providers/vm-builder/vmbuilder-db.c
contrib/xen-vm-builder/trunk/src/providers/vm-builder/vmcreation-data.c
Added Paths:
-----------
contrib/xen-vm-builder/trunk/pxeboot.patch
Modified: contrib/xen-vm-builder/trunk/mof/XEN_VMBuilderVirtualSystemCreationData.mof
===================================================================
--- contrib/xen-vm-builder/trunk/mof/XEN_VMBuilderVirtualSystemCreationData.mof 2009-04-02 22:29:05 UTC (rev 1172)
+++ contrib/xen-vm-builder/trunk/mof/XEN_VMBuilderVirtualSystemCreationData.mof 2009-05-05 14:56:53 UTC (rev 1173)
@@ -157,5 +157,11 @@
Values{"Destroy", "Restart", "Preserve", "Rename-Restart",
"Coredump-Destroy", "Coredump-Restart"}]
uint16 OnCrash;
+
+ [Description("Tells whether or not the VM should PXE boot. "
+ "Applies only to fully-virtualized (HVM) VMs."),
+ ValueMap{"0", "1"},
+ Values{"No PXE Boot", "PXE Boot"}]
+ uint8 PXEBoot;
};
Added: contrib/xen-vm-builder/trunk/pxeboot.patch
===================================================================
--- contrib/xen-vm-builder/trunk/pxeboot.patch (rev 0)
+++ contrib/xen-vm-builder/trunk/pxeboot.patch 2009-05-05 14:56:53 UTC (rev 1173)
@@ -0,0 +1,172 @@
+Index: mof/XEN_VMBuilderVirtualSystemCreationData.mof
+===================================================================
+--- mof/XEN_VMBuilderVirtualSystemCreationData.mof (revision 1172)
++++ mof/XEN_VMBuilderVirtualSystemCreationData.mof (working copy)
+@@ -157,5 +157,11 @@
+ Values{"Destroy", "Restart", "Preserve", "Rename-Restart",
+ "Coredump-Destroy", "Coredump-Restart"}]
+ uint16 OnCrash;
++
++ [Description("Tells whether or not the VM should PXE boot. "
++ "Applies only to fully-virtualized (HVM) VMs."),
++ ValueMap{"0", "1"},
++ Values{"No PXE Boot", "PXE Boot"}]
++ uint8 PXEBoot;
+ };
+
+Index: src/providers/vm-builder/vmcreation-data.c
+===================================================================
+--- src/providers/vm-builder/vmcreation-data.c (revision 1172)
++++ src/providers/vm-builder/vmcreation-data.c (working copy)
+@@ -102,7 +102,8 @@
+ "VirtualSystemType," \
+ "OnPowerOff," \
+ "OnReboot," \
+- "OnCrash"
++ "OnCrash," \
++ "PXEBoot"
+
+ const char* all_cd_fields_query_with_where = "SELECT "CSV_FIELDS" FROM CreationData "
+ "WHERE InstanceID=%Q;";
+@@ -151,7 +152,8 @@
+ CDF_VirtualSystemType,
+ CDF_OnPowerOff,
+ CDF_OnReboot,
+- CDF_OnCrash
++ CDF_OnCrash,
++ CDF_PXEBoot
+ };
+
+ /*
+@@ -282,6 +284,21 @@
+
+ /*****************************************************************************/
+ static CMPIrc
++valid_pxe_boot(const CMPIData *pdata, CMPIStatus* pstatus)
++{
++ CMSetStatus(pstatus, CMPI_RC_OK);
++ if (!CMIsNullValue((*pdata))) {
++ if (pdata->value.uint8 > 1) {
++ CMSetStatusWithChars(_broker, pstatus,
++ CMPI_RC_ERR_INVALID_PARAMETER,
++ "Invalid 'PXEBoot' property");
++ }
++ }
++ return pstatus->rc;
++}
++
++/*****************************************************************************/
++static CMPIrc
+ valid_automatic_recovery_action(const CMPIData *pdata, CMPIStatus* pstatus)
+ {
+ CMSetStatus(pstatus, CMPI_RC_OK);
+@@ -328,17 +345,25 @@
+ /*****************************************************************************/
+ static int
+ add_u8_prop_to_query(cmpiutilStrBuf* pstrbuf, const CMPIInstance* instance,
+- const char* prop_name)
++ const char* prop_name, int endstmt)
+ {
+ int cc = 0;
+ CMPIData data = CMGetProperty(instance, prop_name, NULL);
+ if (!CMIsNullValue(data)) {
+ char wkbfr[32];
+- snprintf(wkbfr, sizeof(wkbfr), "%u,", data.value.uint8);
++ if (endstmt) {
++ snprintf(wkbfr, sizeof(wkbfr), "%u", data.value.uint8);
++ } else {
++ snprintf(wkbfr, sizeof(wkbfr), "%u,", data.value.uint8);
++ }
+ cmpiutilStrBuf_cat(pstrbuf, wkbfr, 0);
+ cc = 1;
+ } else {
+- cmpiutilStrBuf_cat(pstrbuf, "NULL,", 0);
++ if (endstmt) {
++ cmpiutilStrBuf_cat(pstrbuf, "NULL", 0);
++ } else {
++ cmpiutilStrBuf_cat(pstrbuf, "NULL,", 0);
++ }
+ }
+ return cc;
+ }
+@@ -523,6 +548,7 @@
+ set_u16_prop(dbctx, CDF_OnPowerOff, instance, "OnPowerOff");
+ set_u16_prop(dbctx, CDF_OnReboot, instance, "OnReboot");
+ set_u16_prop(dbctx, CDF_OnCrash, instance, "OnCrash");
++ set_u8_prop(dbctx, CDF_PXEBoot, instance, "PXEBoot");
+ }
+
+ /******************************************************************************
+@@ -1044,6 +1070,12 @@
+ return status;
+ }
+ }
++ if (mod_add_u8_prop(pstra, modified_instance, "PXEBoot", properties)) {
++ if (valid_pxe_boot(&data, &status) != CMPI_RC_OK) {
++ cmpiutilStrArray_destroy(pstra);
++ return status;
++ }
++ }
+ pstrbuf = cmpiutilStrBuf_create();
+ if (!pstrbuf) {
+ CMSetStatusWithChars(_broker, &status, CMPI_RC_ERROR_SYSTEM,
+@@ -1221,7 +1253,7 @@
+ add_u32_prop_to_query(pstrbuf, newinstance, "Memory", NULL);
+ add_stra_prop_to_query(pstrbuf, newinstance, "Nics");
+ add_stra_prop_to_query(pstrbuf, newinstance, "Notes");
+- add_u8_prop_to_query(pstrbuf, newinstance, "NumVCPUs");
++ add_u8_prop_to_query(pstrbuf, newinstance, "NumVCPUs", 0);
+ if (add_u32_prop_to_query(pstrbuf, newinstance, "OSType", &data)) {
+ if (valid_os_type(&data, &status) != CMPI_RC_OK) {
+ cmpiutilStrBuf_destroy(pstrbuf);
+@@ -1256,12 +1288,19 @@
+ return status;
+ }
+ }
+- if (add_u16_prop_to_query(pstrbuf, newinstance, "OnCrash", &data, 1)) {
++ if (add_u16_prop_to_query(pstrbuf, newinstance, "OnCrash", &data, 0)) {
+ if (valid_on_crash(&data, &status) != CMPI_RC_OK) {
+ cmpiutilStrBuf_destroy(pstrbuf);
+ return status;
+ }
+ }
++ if (add_u8_prop_to_query(pstrbuf, newinstance, "PXEBoot", 1)) {
++ if (valid_pxe_boot(&data, &status) != CMPI_RC_OK) {
++ cmpiutilStrBuf_destroy(pstrbuf);
++ return status;
++ }
++ }
++
+ cmpiutilStrBuf_cat(pstrbuf, ");", 0);
+
+ DEBUGOUT("SQL: %s\n", pstrbuf->bfr);
+Index: src/providers/vm-builder/builder-service.c
+===================================================================
+--- src/providers/vm-builder/builder-service.c (revision 1172)
++++ src/providers/vm-builder/builder-service.c (working copy)
+@@ -894,6 +894,11 @@
+ return NULL;
+ }
+
++ /**** PXEBoot ****/
++ data = CMGetProperty(cdci, "PXEBoot", NULL);
++ if (!CMIsNullValue(data) && data.value.uint8 == 1)
++ cmpiutilStrArray_append(pstra, "--pxe-boot");
++
+ /**** OnPowerOff ****/
+ data = CMGetProperty(cdci, "OnPowerOff", NULL);
+ if (!CMIsNullValue(data)) {
+Index: src/providers/vm-builder/vmbuilder-db.c
+===================================================================
+--- src/providers/vm-builder/vmbuilder-db.c (revision 1172)
++++ src/providers/vm-builder/vmbuilder-db.c (working copy)
+@@ -103,6 +103,9 @@
+ //-- 4: Coredump-Destroy
+ //-- 5: Coredump-Restart
+ "OnCrash INTEGER,"
++ //-- 0: No PXE Boot
++ //-- 1: PXE Boot
++ "PXEBoot INTEGER,"
+ "PRIMARY KEY(InstanceID COLLATE NOCASE));"
+ "CREATE TABLE Job("
+ "JobName TEXT NOT NULL,"
Modified: contrib/xen-vm-builder/trunk/sblim-cmpi-xenvm-builder.spec
===================================================================
--- contrib/xen-vm-builder/trunk/sblim-cmpi-xenvm-builder.spec 2009-04-02 22:29:05 UTC (rev 1172)
+++ contrib/xen-vm-builder/trunk/sblim-cmpi-xenvm-builder.spec 2009-05-05 14:56:53 UTC (rev 1173)
@@ -34,8 +34,8 @@
%if 0%{?suse_version} >= 1100 || 0%{?sles_version} >= 11
Patch0: suse11_ostypes.patch
%endif
+Patch1: pxeboot.patch
-
%description
Linux CIM providers for CMPI instrumentation of XEN virtual machine
creation.
@@ -52,6 +52,7 @@
%if 0%{?suse_version} >= 1100 || 0%{?sles_version} >= 11
%patch0 -p0
%endif
+%patch1 -p0
%build
# If the LD_RUN_PATH environment variable is set at link time,
@@ -100,6 +101,7 @@
sfcbstage -n root/cimv2 -r %{REGISTRATION} %{SCHEMA}
sfcbrepos -f
/etc/init.d/sfcb condrestart
+%{__rm} -f /var/opt/xen-vm-builder/db/vmbuilder.db
%preun
# If removing (not upgrading) then de-register, before the files are gone
Modified: contrib/xen-vm-builder/trunk/src/providers/vm-builder/builder-service.c
===================================================================
--- contrib/xen-vm-builder/trunk/src/providers/vm-builder/builder-service.c 2009-04-02 22:29:05 UTC (rev 1172)
+++ contrib/xen-vm-builder/trunk/src/providers/vm-builder/builder-service.c 2009-05-05 14:56:53 UTC (rev 1173)
@@ -894,6 +894,11 @@
return NULL;
}
+ /**** PXEBoot ****/
+ data = CMGetProperty(cdci, "PXEBoot", NULL);
+ if (!CMIsNullValue(data) && data.value.uint8 == 1)
+ cmpiutilStrArray_append(pstra, "--pxe-boot");
+
/**** OnPowerOff ****/
data = CMGetProperty(cdci, "OnPowerOff", NULL);
if (!CMIsNullValue(data)) {
Modified: contrib/xen-vm-builder/trunk/src/providers/vm-builder/vmbuilder-db.c
===================================================================
--- contrib/xen-vm-builder/trunk/src/providers/vm-builder/vmbuilder-db.c 2009-04-02 22:29:05 UTC (rev 1172)
+++ contrib/xen-vm-builder/trunk/src/providers/vm-builder/vmbuilder-db.c 2009-05-05 14:56:53 UTC (rev 1173)
@@ -103,6 +103,9 @@
//-- 4: Coredump-Destroy
//-- 5: Coredump-Restart
"OnCrash INTEGER,"
+ //-- 0: No PXE Boot
+ //-- 1: PXE Boot
+ "PXEBoot INTEGER,"
"PRIMARY KEY(InstanceID COLLATE NOCASE));"
"CREATE TABLE Job("
"JobName TEXT NOT NULL,"
Modified: contrib/xen-vm-builder/trunk/src/providers/vm-builder/vmcreation-data.c
===================================================================
--- contrib/xen-vm-builder/trunk/src/providers/vm-builder/vmcreation-data.c 2009-04-02 22:29:05 UTC (rev 1172)
+++ contrib/xen-vm-builder/trunk/src/providers/vm-builder/vmcreation-data.c 2009-05-05 14:56:53 UTC (rev 1173)
@@ -102,7 +102,8 @@
"VirtualSystemType," \
"OnPowerOff," \
"OnReboot," \
- "OnCrash"
+ "OnCrash," \
+ "PXEBoot"
const char* all_cd_fields_query_with_where = "SELECT "CSV_FIELDS" FROM CreationData "
"WHERE InstanceID=%Q;";
@@ -151,7 +152,8 @@
CDF_VirtualSystemType,
CDF_OnPowerOff,
CDF_OnReboot,
- CDF_OnCrash
+ CDF_OnCrash,
+ CDF_PXEBoot
};
/*
@@ -282,6 +284,21 @@
/*****************************************************************************/
static CMPIrc
+valid_pxe_boot(const CMPIData *pdata, CMPIStatus* pstatus)
+{
+ CMSetStatus(pstatus, CMPI_RC_OK);
+ if (!CMIsNullValue((*pdata))) {
+ if (pdata->value.uint8 > 1) {
+ CMSetStatusWithChars(_broker, pstatus,
+ CMPI_RC_ERR_INVALID_PARAMETER,
+ "Invalid 'PXEBoot' property");
+ }
+ }
+ return pstatus->rc;
+}
+
+/*****************************************************************************/
+static CMPIrc
valid_automatic_recovery_action(const CMPIData *pdata, CMPIStatus* pstatus)
{
CMSetStatus(pstatus, CMPI_RC_OK);
@@ -328,17 +345,25 @@
/*****************************************************************************/
static int
add_u8_prop_to_query(cmpiutilStrBuf* pstrbuf, const CMPIInstance* instance,
- const char* prop_name)
+ const char* prop_name, int endstmt)
{
int cc = 0;
CMPIData data = CMGetProperty(instance, prop_name, NULL);
if (!CMIsNullValue(data)) {
char wkbfr[32];
- snprintf(wkbfr, sizeof(wkbfr), "%u,", data.value.uint8);
+ if (endstmt) {
+ snprintf(wkbfr, sizeof(wkbfr), "%u", data.value.uint8);
+ } else {
+ snprintf(wkbfr, sizeof(wkbfr), "%u,", data.value.uint8);
+ }
cmpiutilStrBuf_cat(pstrbuf, wkbfr, 0);
cc = 1;
} else {
- cmpiutilStrBuf_cat(pstrbuf, "NULL,", 0);
+ if (endstmt) {
+ cmpiutilStrBuf_cat(pstrbuf, "NULL", 0);
+ } else {
+ cmpiutilStrBuf_cat(pstrbuf, "NULL,", 0);
+ }
}
return cc;
}
@@ -523,6 +548,7 @@
set_u16_prop(dbctx, CDF_OnPowerOff, instance, "OnPowerOff");
set_u16_prop(dbctx, CDF_OnReboot, instance, "OnReboot");
set_u16_prop(dbctx, CDF_OnCrash, instance, "OnCrash");
+ set_u8_prop(dbctx, CDF_PXEBoot, instance, "PXEBoot");
}
/******************************************************************************
@@ -1044,6 +1070,12 @@
return status;
}
}
+ if (mod_add_u8_prop(pstra, modified_instance, "PXEBoot", properties)) {
+ if (valid_pxe_boot(&data, &status) != CMPI_RC_OK) {
+ cmpiutilStrArray_destroy(pstra);
+ return status;
+ }
+ }
pstrbuf = cmpiutilStrBuf_create();
if (!pstrbuf) {
CMSetStatusWithChars(_broker, &status, CMPI_RC_ERROR_SYSTEM,
@@ -1221,7 +1253,7 @@
add_u32_prop_to_query(pstrbuf, newinstance, "Memory", NULL);
add_stra_prop_to_query(pstrbuf, newinstance, "Nics");
add_stra_prop_to_query(pstrbuf, newinstance, "Notes");
- add_u8_prop_to_query(pstrbuf, newinstance, "NumVCPUs");
+ add_u8_prop_to_query(pstrbuf, newinstance, "NumVCPUs", 0);
if (add_u32_prop_to_query(pstrbuf, newinstance, "OSType", &data)) {
if (valid_os_type(&data, &status) != CMPI_RC_OK) {
cmpiutilStrBuf_destroy(pstrbuf);
@@ -1256,12 +1288,19 @@
return status;
}
}
- if (add_u16_prop_to_query(pstrbuf, newinstance, "OnCrash", &data, 1)) {
+ if (add_u16_prop_to_query(pstrbuf, newinstance, "OnCrash", &data, 0)) {
if (valid_on_crash(&data, &status) != CMPI_RC_OK) {
cmpiutilStrBuf_destroy(pstrbuf);
return status;
}
}
+ if (add_u8_prop_to_query(pstrbuf, newinstance, "PXEBoot", 1)) {
+ if (valid_pxe_boot(&data, &status) != CMPI_RC_OK) {
+ cmpiutilStrBuf_destroy(pstrbuf);
+ return status;
+ }
+ }
+
cmpiutilStrBuf_cat(pstrbuf, ");", 0);
DEBUGOUT("SQL: %s\n", pstrbuf->bfr);
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <jc...@us...> - 2008-09-08 19:46:13
|
Revision: 920
http://omc.svn.sourceforge.net/omc/?rev=920&view=rev
Author: jcarey
Date: 2008-09-08 19:46:23 +0000 (Mon, 08 Sep 2008)
Log Message:
-----------
Added processing for on_reboot, on_crash, on_poweroff
Modified Paths:
--------------
contrib/xen-vm-builder/trunk/mof/XEN_VMBuilderVirtualSystemCreationData.mof
contrib/xen-vm-builder/trunk/src/providers/vm-builder/builder-service.c
contrib/xen-vm-builder/trunk/src/providers/vm-builder/vmbuilder-db.c
contrib/xen-vm-builder/trunk/src/providers/vm-builder/vmcreation-data.c
Modified: contrib/xen-vm-builder/trunk/mof/XEN_VMBuilderVirtualSystemCreationData.mof
===================================================================
--- contrib/xen-vm-builder/trunk/mof/XEN_VMBuilderVirtualSystemCreationData.mof 2008-09-05 22:54:02 UTC (rev 919)
+++ contrib/xen-vm-builder/trunk/mof/XEN_VMBuilderVirtualSystemCreationData.mof 2008-09-08 19:46:23 UTC (rev 920)
@@ -116,5 +116,44 @@
"windowsvistax64", "opensuse", "winserver2008",
"winserver2008x64" }]
uint32 OSType;
+
+ [Description("Behaviour of a domain when it is powered off. "
+ "Possible values: "
+ "Destroy: Domain is cleaned up as normal"
+ "Restart: Domain is started in place of the old one"
+ "Preserve: No clean-up s done until the domain is manually destroyed"
+ "Rename-Restart: Old domain is not cleaned up, but is renamed and "
+ "a new domain started in its place. "
+ "Default is 'Destroy'."),
+ ValueMap{"0", "1", "2", "3"},
+ Values{"Destroy", "Restart", "Preserve", "Rename-Restart"}]
+ uint16 OnPowerOff;
+
+ [Description("Behaviour of a domain when it is rebooted. "
+ "Possible values: "
+ "Destroy: Domain is cleaned up as normal"
+ "Restart: Domain is started in place of the old one"
+ "Preserve: No clean-up s done until the domain is manually destroyed"
+ "Rename-Restart: Old domain is not cleaned up, but is renamed and "
+ "a new domain started in its place. "
+ "Default is 'Restart'."),
+ ValueMap{"0", "1", "2", "3"},
+ Values{"Destroy", "Restart", "Preserve", "Rename-Restart"}]
+ uint16 OnReboot;
+
+ [Description("Behaviour of a domain when it crashes. "
+ "Possible values: "
+ "Destroy: Domain is cleaned up as normal"
+ "Restart: Domain is started in place of the old one"
+ "Preserve: No clean-up s done until the domain is manually destroyed"
+ "Rename-Restart: Old domain is not cleaned up, but is renamed and "
+ "a new domain started in its place. "
+ "Coredump-Destroy: Dump the crashed domain's core and then destroy. "
+ "Coredump-Restart: Dump the crashed domain's core and the restart. "
+ "Default is 'Restart'."),
+ ValueMap{"0", "1", "2", "3", "4", "5"},
+ Values{"Destroy", "Restart", "Preserve", "Rename-Restart",
+ "Coredump-Destroy", "Coredump-Restart"}]
+ uint16 OnCrash;
};
Modified: contrib/xen-vm-builder/trunk/src/providers/vm-builder/builder-service.c
===================================================================
--- contrib/xen-vm-builder/trunk/src/providers/vm-builder/builder-service.c 2008-09-05 22:54:02 UTC (rev 919)
+++ contrib/xen-vm-builder/trunk/src/providers/vm-builder/builder-service.c 2008-09-08 19:46:23 UTC (rev 920)
@@ -593,12 +593,18 @@
CMPIStatus* pstatus)
{
FILE* fd = cmpiutilCreateTempFile(filename, filename_length);
+ if (!fd) {
+ CMPIUTIL_SETSTATUS(_broker, pstatus, CMPI_RC_ERROR_SYSTEM,
+ "Failed to create temp file for response file");
+ return NULL;
+ }
+
size_t rflen = strlen(rf);
if (fwrite(rf, sizeof(char), rflen, fd) != rflen) {
fclose(fd);
unlink(filename);
CMPIUTIL_SETSTATUS(_broker, pstatus, CMPI_RC_ERROR_SYSTEM,
- "Failed to create temp file for response file");
+ "Failed writing contents of response file");
return NULL;
}
fclose(fd);
@@ -606,6 +612,56 @@
}
/*****************************************************************************/
+char*
+create_settings_file(cmpiutilStrArray* lines, char *filename,
+ size_t filename_length, CMPIStatus* pstatus)
+{
+ int i, sz, len;
+ const char* iserr = NULL;
+ const char* line;
+ const char* hdr = "<domain type='xen'>";
+ const char* trlr = "</domain>";
+ FILE* fd = cmpiutilCreateTempFile(filename, filename_length);
+ if (!fd) {
+ CMPIUTIL_SETSTATUS(_broker, pstatus, CMPI_RC_ERROR_SYSTEM,
+ "Failed to create temp file for VM settings");
+ return NULL;
+ }
+
+ for(;;) {
+ len = strlen(hdr);
+ if (fwrite(hdr, sizeof(char), len, fd) != len) {
+ iserr = "Failed to write XML to vm-settings file";
+ break;
+ }
+ sz = cmpiutilStrArray_size(lines);
+ for(i = 0; i < sz; i++) {
+ line = cmpiutilStrArray_get_element(lines, i);
+ len = strlen(line);
+ if (fwrite(line, sizeof(char), len, fd) != len) {
+ iserr = "Failed to write XML to vm-settings file";
+ break;
+ }
+ }
+ if (!iserr) {
+ len = strlen(trlr);
+ if (fwrite(trlr, sizeof(char), len, fd) != len)
+ iserr = "Failed to write XML to vm-settings file";
+ }
+ break;
+ }
+
+ fclose(fd);
+ if (iserr) {
+ unlink(filename);
+ CMPIUTIL_SETSTATUS(_broker, pstatus, CMPI_RC_ERROR_SYSTEM, iserr);
+ return NULL;
+ }
+
+ return filename;
+}
+
+/*****************************************************************************/
static CMPIObjectPath*
start_create_vm(
const CMPIContext* context,
@@ -617,16 +673,22 @@
CMPIStatus *pstatus)
{
CMPIData data;
- cmpiutilStrArray *pstra;
+ cmpiutilStrArray *pstra, *vm_settings = NULL;
const char *iid = NULL;
const char *os_type;
char wkbfr[256];
char rspbfr[PATH_MAX];
+ char settingsbfr[PATH_MAX];
char *response_file = NULL;
+ char *settings_file = NULL;
int cc, i;
size_t output_size;
char* output;
CMPIObjectPath *jobref = NULL;
+ static const char* on_actions[] = {
+ "destroy", "restart", "preserve", "rename-restart",
+ "coredump-destroy", "coredump-restart"
+ };
DEBUGOUT("start_create_vm() called...\n");
data = CMGetProperty(cdci, "InstanceID", NULL);
@@ -819,6 +881,56 @@
}
}
+ vm_settings = cmpiutilStrArray_create();
+ if (!vm_settings) {
+ if (response_file) {
+ unlink(response_file);
+ }
+ cmpiutilStrArray_destroy(pstra);
+ CMPIUTIL_SETSTATUS(_broker, pstatus, CMPI_RC_ERROR_SYSTEM,
+ "Failed to create string array for vm settings");
+ return NULL;
+ }
+
+ /**** OnPowerOff ****/
+ data = CMGetProperty(cdci, "OnPowerOff", NULL);
+ if (!CMIsNullValue(data)) {
+ snprintf(wkbfr, sizeof(wkbfr), "<on_poweroff>%s</on_poweroff>", on_actions[data.value.uint16]);
+ cmpiutilStrArray_append(vm_settings, wkbfr);
+ }
+
+ /**** OnReboot ****/
+ data = CMGetProperty(cdci, "OnReboot", NULL);
+ if (!CMIsNullValue(data)) {
+ snprintf(wkbfr, sizeof(wkbfr), "<on_reboot>%s</on_reboot>", on_actions[data.value.uint16]);
+ cmpiutilStrArray_append(vm_settings, wkbfr);
+ }
+
+ /**** OnCrash ****/
+ data = CMGetProperty(cdci, "OnCrash", NULL);
+ if (!CMIsNullValue(data)) {
+ snprintf(wkbfr, sizeof(wkbfr), "<on_crash>%s</on_crash>", on_actions[data.value.uint16]);
+ cmpiutilStrArray_append(vm_settings, wkbfr);
+ }
+
+ /* If OnPowerOff/OnReboot/OnCrash specified then create a vm-settings file */
+ if (cmpiutilStrArray_size(vm_settings) > 0)
+ {
+ settings_file = create_settings_file(vm_settings, settingsbfr,
+ sizeof(settingsbfr), pstatus);
+ if (!settings_file) {
+ if (response_file) {
+ unlink(response_file);
+ }
+ cmpiutilStrArray_destroy(vm_settings);
+ cmpiutilStrArray_destroy(pstra);
+ return NULL;
+ }
+ cmpiutilStrArray_append(pstra, "--vm-settings");
+ cmpiutilStrArray_append(pstra, settings_file);
+ }
+ cmpiutilStrArray_destroy(vm_settings);
+
/* Execute vm-install with the constructed command line */
#ifdef XEN_VMBUILDER_DEBUG
printf("Executing:\n");
@@ -864,49 +976,60 @@
free(output);
}
cmpiutilStrArray_destroy(pstra);
- DEBUGOUT("checking for existence response file\n");
- if (response_file) {
- DEBUGOUT("Should have response file %s\n", response_file);
- if (jobref) {
- DEBUGOUT("There is a job reference, so waiting for right state\n");
- /*
- * Wait until Job state reaches the 'INSTALL' and then delete
- * the response file.
- */
- CMPIInstance *jobci;
- CMPIStatus lstatus;
- int fail_count = 0;
- DEBUGOUT("Entering GetInstance loop for Job instance...\n");
- while(fail_count < 10) {
- cmpiutilMilliSleep(1000);
- jobci = CBGetInstance(_broker, context, jobref, NULL,
- &lstatus);
- if (jobci == NULL) {
- DEBUGOUT("GetInstance for Job returned NULL. "
- "Inc fail count\n");
- fail_count++;
+
+ /* If a jobref was returned, wait for it to get beyond
+ * the 'SETTINGS' state before any clean up.
+ */
+ if (jobref) {
+ DEBUGOUT("There is a job reference, so waiting for right state\n");
+ /*
+ * Wait until Job state goes beyond the 'SETTINGS' state.
+ */
+ CMPIInstance *jobci;
+ CMPIStatus lstatus;
+ int fail_count = 0;
+ DEBUGOUT("Entering GetInstance loop for Job instance...\n");
+ while(fail_count < 10) {
+ cmpiutilMilliSleep(1000);
+ jobci = CBGetInstance(_broker, context, jobref, NULL,
+ &lstatus);
+ if (jobci == NULL) {
+ DEBUGOUT("GetInstance for Job returned NULL. "
+ "Inc fail count\n");
+ fail_count++;
+ continue;
+ }
+ data = CMGetProperty(jobci, "JobStatus", NULL);
+ if (!CMIsNullValue(data)) {
+ const char *p = CMGetCharPtr(data.value.string);
+ if (strcasecmp(p, "SETTINGS") == 0) {
+ DEBUGOUT("Still to soon to delete Response file\n");
continue;
}
- data = CMGetProperty(jobci, "JobStatus", NULL);
- if (!CMIsNullValue(data)) {
- const char *p = CMGetCharPtr(data.value.string);
- if (strcasecmp(p, "SETTINGS") == 0) {
- DEBUGOUT("Still to soon to delete Response file\n");
- continue;
- }
- DEBUGOUT("Install state allows for response file "
- "delete\n");
- break;
- } else {
- DEBUGOUT("Job instance has NULL JobStatus property. "
- "Inc Fail count\n");
- fail_count++;
- }
+ DEBUGOUT("Install state allows for response file "
+ "delete\n");
+ break;
+ } else {
+ DEBUGOUT("Job instance has NULL JobStatus property. "
+ "Inc Fail count\n");
+ fail_count++;
}
}
+ }
+
+ DEBUGOUT("checking for existence response file\n");
+ if (response_file) {
+ DEBUGOUT("Should have response file %s\n", response_file);
DEBUGOUT("Deleting response file: %s\n", response_file);
unlink(response_file);
}
+
+ DEBUGOUT("checking for existence of settings file\n");
+ if (settings_file) {
+ DEBUGOUT("Should have settings file %s\n", settings_file);
+ DEBUGOUT("Deleting settings file: %s\n", settings_file);
+ unlink(settings_file);
+ }
DEBUGOUT("start_create_vm() returning\n");
return jobref;
}
Modified: contrib/xen-vm-builder/trunk/src/providers/vm-builder/vmbuilder-db.c
===================================================================
--- contrib/xen-vm-builder/trunk/src/providers/vm-builder/vmbuilder-db.c 2008-09-05 22:54:02 UTC (rev 919)
+++ contrib/xen-vm-builder/trunk/src/providers/vm-builder/vmbuilder-db.c 2008-09-08 19:46:23 UTC (rev 920)
@@ -86,6 +86,23 @@
"VirtType INTEGER,"
"VirtualSystemIdentifier TEXT,"
"VirtualSystemType TEXT,"
+ //-- 0: Destroy
+ //-- 1: Restart
+ //-- 2: Preserve
+ //-- 3: Rename-Restart
+ "OnPowerOff INTEGER,"
+ //-- 0: Destroy
+ //-- 1: Restart
+ //-- 2: Preserve
+ //-- 3: Rename-Restart
+ "OnReboot INTEGER,"
+ //-- 0: Destroy
+ //-- 1: Restart
+ //-- 2: Preserve
+ //-- 3: Rename-Restart
+ //-- 4: Coredump-Destroy
+ //-- 5: Coredump-Restart
+ "OnCrash INTEGER,"
"PRIMARY KEY(InstanceID COLLATE NOCASE));"
"CREATE TABLE Job("
"JobName TEXT NOT NULL,"
Modified: contrib/xen-vm-builder/trunk/src/providers/vm-builder/vmcreation-data.c
===================================================================
--- contrib/xen-vm-builder/trunk/src/providers/vm-builder/vmcreation-data.c 2008-09-05 22:54:02 UTC (rev 919)
+++ contrib/xen-vm-builder/trunk/src/providers/vm-builder/vmcreation-data.c 2008-09-08 19:46:23 UTC (rev 920)
@@ -99,7 +99,10 @@
"VNCPassword," \
"VirtType," \
"VirtualSystemIdentifier," \
- "VirtualSystemType"
+ "VirtualSystemType," \
+ "OnPowerOff," \
+ "OnReboot," \
+ "OnCrash"
const char* all_cd_fields_query_with_where = "SELECT "CSV_FIELDS" FROM CreationData "
"WHERE InstanceID=%Q;";
@@ -145,7 +148,10 @@
CDF_VNCPassword,
CDF_VirtType,
CDF_VirtualSystemIdentifier,
- CDF_VirtualSystemType
+ CDF_VirtualSystemType,
+ CDF_OnPowerOff,
+ CDF_OnReboot,
+ CDF_OnCrash
};
/*
@@ -231,6 +237,51 @@
/*****************************************************************************/
static CMPIrc
+valid_on_power_off(const CMPIData *pdata, CMPIStatus* pstatus)
+{
+ CMSetStatus(pstatus, CMPI_RC_OK);
+ if (!CMIsNullValue((*pdata))) {
+ if (pdata->value.uint16 > 3) {
+ CMSetStatusWithChars(_broker, pstatus,
+ CMPI_RC_ERR_INVALID_PARAMETER,
+ "Invalid 'OnPowerOff' property");
+ }
+ }
+ return pstatus->rc;
+}
+
+/*****************************************************************************/
+static CMPIrc
+valid_on_reboot(const CMPIData *pdata, CMPIStatus* pstatus)
+{
+ CMSetStatus(pstatus, CMPI_RC_OK);
+ if (!CMIsNullValue((*pdata))) {
+ if (pdata->value.uint16 > 3) {
+ CMSetStatusWithChars(_broker, pstatus,
+ CMPI_RC_ERR_INVALID_PARAMETER,
+ "Invalid 'OnReboot' property");
+ }
+ }
+ return pstatus->rc;
+}
+
+/*****************************************************************************/
+static CMPIrc
+valid_on_crash(const CMPIData *pdata, CMPIStatus* pstatus)
+{
+ CMSetStatus(pstatus, CMPI_RC_OK);
+ if (!CMIsNullValue((*pdata))) {
+ if (pdata->value.uint16 > 5) {
+ CMSetStatusWithChars(_broker, pstatus,
+ CMPI_RC_ERR_INVALID_PARAMETER,
+ "Invalid 'OnCrash' property");
+ }
+ }
+ return pstatus->rc;
+}
+
+/*****************************************************************************/
+static CMPIrc
valid_automatic_recovery_action(const CMPIData *pdata, CMPIStatus* pstatus)
{
CMSetStatus(pstatus, CMPI_RC_OK);
@@ -292,19 +343,29 @@
/*****************************************************************************/
static void
add_u16_prop_to_query(cmpiutilStrBuf* pstrbuf, const CMPIInstance* instance,
- const char* prop_name, CMPIData *pdata)
+ const char* prop_name, CMPIData *pdata, int endstmt)
{
CMPIData data;
+ const char* pnnfmt;
+ const char* pnullfmt;
if (!pdata) {
pdata = &data;
}
+
+ if (endstmt) {
+ pnnfmt = "%d";
+ pnullfmt = "NULL";
+ } else {
+ pnnfmt = "%d,";
+ pnullfmt = "NULL,";
+ }
*pdata = CMGetProperty(instance, prop_name, NULL);
if (!CMIsNullValue((*pdata))) {
char wkbfr[32];
- snprintf(wkbfr, sizeof(wkbfr), "%u,", pdata->value.uint16);
+ snprintf(wkbfr, sizeof(wkbfr), pnnfmt, pdata->value.uint16);
cmpiutilStrBuf_cat(pstrbuf, wkbfr, 0);
} else {
- cmpiutilStrBuf_cat(pstrbuf, "NULL,", 0);
+ cmpiutilStrBuf_cat(pstrbuf, pnullfmt, 0);
}
}
@@ -444,6 +505,9 @@
set_u32_prop(dbctx, CDF_VirtType, instance, "VirtType");
set_str_prop(dbctx, CDF_VirtualSystemIdentifier, instance, "VirtualSystemIdentifier");
set_str_prop(dbctx, CDF_VirtualSystemType, instance, "VirtualSystemType");
+ set_u16_prop(dbctx, CDF_OnPowerOff, instance, "OnPowerOff");
+ set_u16_prop(dbctx, CDF_OnReboot, instance, "OnReboot");
+ set_u16_prop(dbctx, CDF_OnCrash, instance, "OnCrash");
}
/******************************************************************************
@@ -935,6 +999,24 @@
mod_add_str_prop(pstra, modified_instance, "VirtualSystemIdentifier", properties);
mod_add_str_prop(pstra, modified_instance, "VirtualSystemType", properties);
+ mod_add_u16_prop(pstra, modified_instance, "OnPowerOff", properties, &data);
+ if (valid_on_power_off(&data, &status) != CMPI_RC_OK) {
+ cmpiutilStrArray_destroy(pstra);
+ return status;
+ }
+
+ mod_add_u16_prop(pstra, modified_instance, "OnReboot", properties, &data);
+ if (valid_on_reboot(&data, &status) != CMPI_RC_OK) {
+ cmpiutilStrArray_destroy(pstra);
+ return status;
+ }
+
+ mod_add_u16_prop(pstra, modified_instance, "OnCrash", properties, &data);
+ if (valid_on_crash(&data, &status) != CMPI_RC_OK) {
+ cmpiutilStrArray_destroy(pstra);
+ return status;
+ }
+
pstrbuf = cmpiutilStrBuf_create();
if (!pstrbuf) {
CMSetStatusWithChars(_broker, &status, CMPI_RC_ERROR_SYSTEM,
@@ -1024,17 +1106,17 @@
cmpiutilStrBuf_cat(pstrbuf, ") VALUES (", 0);
db_sql_insert(pstrbuf, "%Q,", iid);
- add_u16_prop_to_query(pstrbuf, newinstance, "AutoMaticRecoveryAction", &data);
+ add_u16_prop_to_query(pstrbuf, newinstance, "AutoMaticRecoveryAction", &data, 0);
if (valid_automatic_recovery_action(&data, &status) != CMPI_RC_OK) {
cmpiutilStrBuf_destroy(pstrbuf);
return status;
}
- add_u16_prop_to_query(pstrbuf, newinstance, "AutoMaticShutdownAction", &data);
+ add_u16_prop_to_query(pstrbuf, newinstance, "AutoMaticShutdownAction", &data, 0);
if (valid_automatic_shutdown_action(&data, &status) != CMPI_RC_OK) {
cmpiutilStrBuf_destroy(pstrbuf);
return status;
}
- add_u16_prop_to_query(pstrbuf, newinstance, "AutoMaticStartupAction", &data);
+ add_u16_prop_to_query(pstrbuf, newinstance, "AutoMaticStartupAction", &data, 0);
if (valid_automatic_startup_action(&data, &status) != CMPI_RC_OK) {
cmpiutilStrBuf_destroy(pstrbuf);
return status;
@@ -1056,10 +1138,10 @@
cmpiutilStrBuf_cat(pstrbuf, "NULL,", 0);
}
- add_u16_prop_to_query(pstrbuf, newinstance, "AutoMaticStartupActionSequenceNumber", NULL);
+ add_u16_prop_to_query(pstrbuf, newinstance, "AutoMaticStartupActionSequenceNumber", NULL, 0);
add_str_prop_to_query(pstrbuf, newinstance, "CPUArchitecture", 0);
add_str_prop_to_query(pstrbuf, newinstance, "Caption", 0);
- add_u16_prop_to_query(pstrbuf, newinstance, "ChangeableType", &data);
+ add_u16_prop_to_query(pstrbuf, newinstance, "ChangeableType", &data, 0);
if (valid_changeable_type(&data, &status) != CMPI_RC_OK) {
cmpiutilStrBuf_destroy(pstrbuf);
return status;
@@ -1126,9 +1208,26 @@
return status;
}
add_str_prop_to_query(pstrbuf, newinstance, "VirtualSystemIdentifier", 0);
- add_str_prop_to_query(pstrbuf, newinstance, "VirtualSystemType", 1);
+ add_str_prop_to_query(pstrbuf, newinstance, "VirtualSystemType", 0);
+ add_u16_prop_to_query(pstrbuf, newinstance, "OnPowerOff", &data, 0);
+ if (valid_on_power_off(&data, &status) != CMPI_RC_OK) {
+ cmpiutilStrBuf_destroy(pstrbuf);
+ return status;
+ }
+ add_u16_prop_to_query(pstrbuf, newinstance, "OnReboot", &data, 0);
+ if (valid_on_reboot(&data, &status) != CMPI_RC_OK) {
+ cmpiutilStrBuf_destroy(pstrbuf);
+ return status;
+ }
+ add_u16_prop_to_query(pstrbuf, newinstance, "OnCrash", &data, 1);
+ if (valid_on_crash(&data, &status) != CMPI_RC_OK) {
+ cmpiutilStrBuf_destroy(pstrbuf);
+ return status;
+ }
cmpiutilStrBuf_cat(pstrbuf, ");", 0);
+ printf("SQL: %s\n", pstrbuf->bfr);
+
if (db_exec(pstrbuf->bfr, wkbfr, sizeof(wkbfr)) < 0LL) {
DEBUGOUT("CreateInstance(): failed inserting record into "
"database: %s", wkbfr);
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <jc...@us...> - 2008-10-19 20:57:37
|
Revision: 1113
http://omc.svn.sourceforge.net/omc/?rev=1113&view=rev
Author: jcarey
Date: 2008-10-19 20:57:27 +0000 (Sun, 19 Oct 2008)
Log Message:
-----------
Added code to print debug trace message if the VM_BUILDER_DEBUG environment variable is set. Even if not built for debug
Modified Paths:
--------------
contrib/xen-vm-builder/trunk/configure.ac
contrib/xen-vm-builder/trunk/src/providers/vm-builder/builder-job.c
contrib/xen-vm-builder/trunk/src/providers/vm-builder/builder-service.c
contrib/xen-vm-builder/trunk/src/providers/vm-builder/owning-job.c
contrib/xen-vm-builder/trunk/src/providers/vm-builder/setting-define-build.c
contrib/xen-vm-builder/trunk/src/providers/vm-builder/vmbuilder-util.c
contrib/xen-vm-builder/trunk/src/providers/vm-builder/vmbuilder-util.h
contrib/xen-vm-builder/trunk/src/providers/vm-builder/vmcreation-data.c
Modified: contrib/xen-vm-builder/trunk/configure.ac
===================================================================
--- contrib/xen-vm-builder/trunk/configure.ac 2008-10-17 08:36:30 UTC (rev 1112)
+++ contrib/xen-vm-builder/trunk/configure.ac 2008-10-19 20:57:27 UTC (rev 1113)
@@ -2,7 +2,7 @@
# Process this file with autoconf to produce a configure script.
AC_PREREQ(2.57)
-AC_INIT(sblim-cmpi-xenvm-builder, 1.0.2)
+AC_INIT(sblim-cmpi-xenvm-builder, 1.0.3)
AM_INIT_AUTOMAKE
AC_CONFIG_SRCDIR([src])
AC_CONFIG_HEADER([config.h])
Modified: contrib/xen-vm-builder/trunk/src/providers/vm-builder/builder-job.c
===================================================================
--- contrib/xen-vm-builder/trunk/src/providers/vm-builder/builder-job.c 2008-10-17 08:36:30 UTC (rev 1112)
+++ contrib/xen-vm-builder/trunk/src/providers/vm-builder/builder-job.c 2008-10-19 20:57:27 UTC (rev 1113)
@@ -157,7 +157,7 @@
memset(pinfo, 0, sizeof(*pinfo));
if (cmpiutilExecuteProcessAndGatherOutputAndError((char* const*)cmd, NULL, &output,
&output_size, -1, NULL, NULL, -1, NULL, &status, -1) == 0) {
- //DEBUGOUT("vm-install-jobs -s returned %d - %s\n", status, output);
+ DEBUGOUT("vm-install-jobs -s returned %d - %s\n", status, output);
unsigned int num_elements;
lines = cmpiutilStrTokenize(output, "\r\n", &num_elements);
if (lines) {
@@ -739,11 +739,10 @@
Init(
CMPIInstanceMI* self)
{
+ set_debug_for_env();
DEBUGOUT("Initialize() called\n");
-
DEBUGOUT("Deleting job xref recs that no longer exist\n");
db_delete_dead_job_recs(NULL);
-
DEBUGOUT("Leaving Initialize()\n");
}
@@ -775,6 +774,7 @@
MethodInit(
CMPIMethodMI * self)
{
+ set_debug_for_env();
DEBUGOUT("MethodInitialize() called\n");
// do work here if necessary
@@ -916,6 +916,7 @@
AssocInit(
CMPIAssociationMI* self)
{
+ set_debug_for_env();
DEBUGOUT("AssocInit() called");
DEBUGOUT("Leaving AssocInit()\n");
Modified: contrib/xen-vm-builder/trunk/src/providers/vm-builder/builder-service.c
===================================================================
--- contrib/xen-vm-builder/trunk/src/providers/vm-builder/builder-service.c 2008-10-17 08:36:30 UTC (rev 1112)
+++ contrib/xen-vm-builder/trunk/src/providers/vm-builder/builder-service.c 2008-10-19 20:57:27 UTC (rev 1113)
@@ -527,6 +527,7 @@
Init(
CMPIInstanceMI* self)
{
+ set_debug_for_env();
DEBUGOUT("Initialize() called\n");
DEBUGOUT("Leaving Initialize()\n");
@@ -560,6 +561,7 @@
MethodInit(
CMPIMethodMI * self)
{
+ set_debug_for_env();
DEBUGOUT("MethodInitialize() called\n");
// do work here if necessary
@@ -1168,6 +1170,7 @@
AssocInit(
CMPIAssociationMI* self)
{
+ set_debug_for_env();
DEBUGOUT("AssocInit() called");
DEBUGOUT("Leaving AssocInit()\n");
Modified: contrib/xen-vm-builder/trunk/src/providers/vm-builder/owning-job.c
===================================================================
--- contrib/xen-vm-builder/trunk/src/providers/vm-builder/owning-job.c 2008-10-17 08:36:30 UTC (rev 1112)
+++ contrib/xen-vm-builder/trunk/src/providers/vm-builder/owning-job.c 2008-10-19 20:57:27 UTC (rev 1113)
@@ -414,6 +414,7 @@
Init(
CMPIInstanceMI* self)
{
+ set_debug_for_env();
DEBUGOUT("Initialize() called\n");
db_delete_dead_job_recs(NULL);
@@ -453,6 +454,7 @@
AssocInit(
CMPIAssociationMI* self)
{
+ set_debug_for_env();
DEBUGOUT("AssocInit() called");
DEBUGOUT("Leaving AssocInit()\n");
Modified: contrib/xen-vm-builder/trunk/src/providers/vm-builder/setting-define-build.c
===================================================================
--- contrib/xen-vm-builder/trunk/src/providers/vm-builder/setting-define-build.c 2008-10-17 08:36:30 UTC (rev 1112)
+++ contrib/xen-vm-builder/trunk/src/providers/vm-builder/setting-define-build.c 2008-10-19 20:57:27 UTC (rev 1113)
@@ -436,6 +436,7 @@
Init(
CMPIInstanceMI* self)
{
+ set_debug_for_env();
DEBUGOUT("Initialize() called\n");
db_delete_dead_job_recs(NULL);
@@ -475,6 +476,7 @@
AssocInit(
CMPIAssociationMI* self)
{
+ set_debug_for_env();
DEBUGOUT("AssocInit() called");
DEBUGOUT("Leaving AssocInit()\n");
Modified: contrib/xen-vm-builder/trunk/src/providers/vm-builder/vmbuilder-util.c
===================================================================
--- contrib/xen-vm-builder/trunk/src/providers/vm-builder/vmbuilder-util.c 2008-10-17 08:36:30 UTC (rev 1112)
+++ contrib/xen-vm-builder/trunk/src/providers/vm-builder/vmbuilder-util.c 2008-10-19 20:57:27 UTC (rev 1113)
@@ -1,6 +1,9 @@
#include "vmbuilder-util.h"
#include <stdio.h>
+#include <stdarg.h>
+#include <stdlib.h>
+
#include <errno.h>
#include <cmpidt.h>
#include <cmpift.h>
@@ -8,7 +11,48 @@
#include <cmpiutil/string.h>
#include <cmpiutil/exec.h>
+
+#ifdef XEN_VMBUILDER_DEBUG
+static int _is_debug = 1;
+#else
+static int _is_debug = 0;
+#endif
+
/******************************************************************************/
+void
+set_debug_for_env()
+{
+ const char* penv = getenv("VM_BUILDER_DEBUG");
+ if (NULL != penv)
+ {
+ if (strncmp(penv, "0", 1)
+ && strncasecmp(penv, "false", 5))
+ _is_debug = 1;
+ else
+ _is_debug = 0;
+ }
+#ifndef XEN_VMBUILDER_DEBUG
+ else
+ {
+ _is_debug = 0;
+ }
+#endif
+}
+
+/******************************************************************************/
+void
+vmbuilder_debug_out(const char* fmt, ...)
+{
+ if (_is_debug)
+ {
+ va_list ap;
+ va_start(ap, fmt);
+ vfprintf(stdout, fmt, ap);
+ va_end(ap);
+ }
+}
+
+/******************************************************************************/
CMPIArray*
str2UInt16Array(const CMPIBroker* broker, const char* str)
{
Modified: contrib/xen-vm-builder/trunk/src/providers/vm-builder/vmbuilder-util.h
===================================================================
--- contrib/xen-vm-builder/trunk/src/providers/vm-builder/vmbuilder-util.h 2008-10-17 08:36:30 UTC (rev 1112)
+++ contrib/xen-vm-builder/trunk/src/providers/vm-builder/vmbuilder-util.h 2008-10-19 20:57:27 UTC (rev 1113)
@@ -24,12 +24,9 @@
void set_dt_prop(const CMPIBroker* broker, VMBDBCtx dbctx, int col_ndx,
CMPIInstance* instance, const char* prop_name, CMPIBoolean isInterval);
char** get_job_names();
+void set_debug_for_env();
+void vmbuilder_debug_out(const char* fmt, ...);
-/* If built for debug, enable tracing */
-#ifdef XEN_VMBUILDER_DEBUG
-#define DEBUGOUT(fmt, args...) printf(fmt,## args)
-#else
-#define DEBUGOUT(fmt, args...)
-#endif
+#define DEBUGOUT(fmt, args...) vmbuilder_debug_out(fmt,## args)
#endif /* VMBUILDER_UTIL_H_GUARD */
Modified: contrib/xen-vm-builder/trunk/src/providers/vm-builder/vmcreation-data.c
===================================================================
--- contrib/xen-vm-builder/trunk/src/providers/vm-builder/vmcreation-data.c 2008-10-17 08:36:30 UTC (rev 1112)
+++ contrib/xen-vm-builder/trunk/src/providers/vm-builder/vmcreation-data.c 2008-10-19 20:57:27 UTC (rev 1113)
@@ -1335,6 +1335,7 @@
Init(
CMPIInstanceMI* self)
{
+ set_debug_for_env();
DEBUGOUT("Initialize() called\n");
/* Delete jobs xref recs for jobs that no longer exist */
@@ -1371,6 +1372,7 @@
MethodInit(
CMPIMethodMI * self)
{
+ set_debug_for_env();
DEBUGOUT("MethodInitialize() called\n");
// do work here if necessary
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|