--- eucalyptus-1.6.2.orig/aclocal.m4
+++ eucalyptus-1.6.2/aclocal.m4
@@ -0,0 +1,171 @@
+# generated automatically by aclocal 1.11 -*- Autoconf -*-
+
+# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004,
+# 2005, 2006, 2007, 2008, 2009 Free Software Foundation, Inc.
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+# pkg.m4 - Macros to locate and utilise pkg-config. -*- Autoconf -*-
+#
+# Copyright © 2004 Scott James Remnant .
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# This program 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
+# General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+#
+# As a special exception to the GNU General Public License, if you
+# distribute this file as part of a program that contains a
+# configuration script generated by Autoconf, you may include it under
+# the same distribution terms that you use for the rest of that program.
+
+# PKG_PROG_PKG_CONFIG([MIN-VERSION])
+# ----------------------------------
+AC_DEFUN([PKG_PROG_PKG_CONFIG],
+[m4_pattern_forbid([^_?PKG_[A-Z_]+$])
+m4_pattern_allow([^PKG_CONFIG(_PATH)?$])
+AC_ARG_VAR([PKG_CONFIG], [path to pkg-config utility])dnl
+if test "x$ac_cv_env_PKG_CONFIG_set" != "xset"; then
+ AC_PATH_TOOL([PKG_CONFIG], [pkg-config])
+fi
+if test -n "$PKG_CONFIG"; then
+ _pkg_min_version=m4_default([$1], [0.9.0])
+ AC_MSG_CHECKING([pkg-config is at least version $_pkg_min_version])
+ if $PKG_CONFIG --atleast-pkgconfig-version $_pkg_min_version; then
+ AC_MSG_RESULT([yes])
+ else
+ AC_MSG_RESULT([no])
+ PKG_CONFIG=""
+ fi
+
+fi[]dnl
+])# PKG_PROG_PKG_CONFIG
+
+# PKG_CHECK_EXISTS(MODULES, [ACTION-IF-FOUND], [ACTION-IF-NOT-FOUND])
+#
+# Check to see whether a particular set of modules exists. Similar
+# to PKG_CHECK_MODULES(), but does not set variables or print errors.
+#
+#
+# Similar to PKG_CHECK_MODULES, make sure that the first instance of
+# this or PKG_CHECK_MODULES is called, or make sure to call
+# PKG_CHECK_EXISTS manually
+# --------------------------------------------------------------
+AC_DEFUN([PKG_CHECK_EXISTS],
+[AC_REQUIRE([PKG_PROG_PKG_CONFIG])dnl
+if test -n "$PKG_CONFIG" && \
+ AC_RUN_LOG([$PKG_CONFIG --exists --print-errors "$1"]); then
+ m4_ifval([$2], [$2], [:])
+m4_ifvaln([$3], [else
+ $3])dnl
+fi])
+
+
+# _PKG_CONFIG([VARIABLE], [COMMAND], [MODULES])
+# ---------------------------------------------
+m4_define([_PKG_CONFIG],
+[if test -n "$PKG_CONFIG"; then
+ if test -n "$$1"; then
+ pkg_cv_[]$1="$$1"
+ else
+ PKG_CHECK_EXISTS([$3],
+ [pkg_cv_[]$1=`$PKG_CONFIG --[]$2 "$3" 2>/dev/null`],
+ [pkg_failed=yes])
+ fi
+else
+ pkg_failed=untried
+fi[]dnl
+])# _PKG_CONFIG
+
+# _PKG_SHORT_ERRORS_SUPPORTED
+# -----------------------------
+AC_DEFUN([_PKG_SHORT_ERRORS_SUPPORTED],
+[AC_REQUIRE([PKG_PROG_PKG_CONFIG])
+if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then
+ _pkg_short_errors_supported=yes
+else
+ _pkg_short_errors_supported=no
+fi[]dnl
+])# _PKG_SHORT_ERRORS_SUPPORTED
+
+
+# PKG_CHECK_MODULES(VARIABLE-PREFIX, MODULES, [ACTION-IF-FOUND],
+# [ACTION-IF-NOT-FOUND])
+#
+#
+# Note that if there is a possibility the first call to
+# PKG_CHECK_MODULES might not happen, you should be sure to include an
+# explicit call to PKG_PROG_PKG_CONFIG in your configure.ac
+#
+#
+# --------------------------------------------------------------
+AC_DEFUN([PKG_CHECK_MODULES],
+[AC_REQUIRE([PKG_PROG_PKG_CONFIG])dnl
+AC_ARG_VAR([$1][_CFLAGS], [C compiler flags for $1, overriding pkg-config])dnl
+AC_ARG_VAR([$1][_LIBS], [linker flags for $1, overriding pkg-config])dnl
+
+pkg_failed=no
+AC_MSG_CHECKING([for $1])
+
+_PKG_CONFIG([$1][_CFLAGS], [cflags], [$2])
+_PKG_CONFIG([$1][_LIBS], [libs], [$2])
+
+m4_define([_PKG_TEXT], [Alternatively, you may set the environment variables $1[]_CFLAGS
+and $1[]_LIBS to avoid the need to call pkg-config.
+See the pkg-config man page for more details.])
+
+if test $pkg_failed = yes; then
+ _PKG_SHORT_ERRORS_SUPPORTED
+ if test $_pkg_short_errors_supported = yes; then
+ $1[]_PKG_ERRORS=`$PKG_CONFIG --short-errors --errors-to-stdout --print-errors "$2"`
+ else
+ $1[]_PKG_ERRORS=`$PKG_CONFIG --errors-to-stdout --print-errors "$2"`
+ fi
+ # Put the nasty error message in config.log where it belongs
+ echo "$$1[]_PKG_ERRORS" >&AS_MESSAGE_LOG_FD
+
+ ifelse([$4], , [AC_MSG_ERROR(dnl
+[Package requirements ($2) were not met:
+
+$$1_PKG_ERRORS
+
+Consider adjusting the PKG_CONFIG_PATH environment variable if you
+installed software in a non-standard prefix.
+
+_PKG_TEXT
+])],
+ [AC_MSG_RESULT([no])
+ $4])
+elif test $pkg_failed = untried; then
+ ifelse([$4], , [AC_MSG_FAILURE(dnl
+[The pkg-config script could not be found or is too old. Make sure it
+is in your PATH or set the PKG_CONFIG environment variable to the full
+path to pkg-config.
+
+_PKG_TEXT
+
+To get pkg-config, see .])],
+ [$4])
+else
+ $1[]_CFLAGS=$pkg_cv_[]$1[]_CFLAGS
+ $1[]_LIBS=$pkg_cv_[]$1[]_LIBS
+ AC_MSG_RESULT([yes])
+ ifelse([$3], , :, [$3])
+fi[]dnl
+])# PKG_CHECK_MODULES
+
--- eucalyptus-1.6.2.orig/gatherlog/Makefile
+++ eucalyptus-1.6.2/gatherlog/Makefile
@@ -16,14 +16,17 @@
build: all
generated/stubs: $(GLWSDL)
- rm -rf generated
- mkdir -p generated
- @echo Generating client stubs
- sh $(WSDL2C) -uri $(GLWSDL) -g -d adb -u -uw -f -o generated | grep -v 'the classpath'
- @echo Generating server stubs
- sh $(WSDL2C) -uri $(GLWSDL) -sd -ss -d adb -u -uw -f -o generated | grep -v 'the classpath'
- @echo Adding marshalling calls to server stubs
- ../tools/add_marshalling.pl generated/axis2_skel_*.c
+ if test -n "$(REBUILD_STUBS)"; \
+ then \
+ rm -rf generated; \
+ mkdir -p generated; \
+ echo Generating client stubs; \
+ sh $(WSDL2C) -uri $(GLWSDL) -g -d adb -u -uw -f -o generated | grep -v 'the classpath'; \
+ echo Generating server stubs; \
+ sh $(WSDL2C) -uri $(GLWSDL) -sd -ss -d adb -u -uw -f -o generated | grep -v 'the classpath'; \
+ echo Adding marshalling calls to server stubs; \
+ ../tools/add_marshalling.pl generated/axis2_skel_*.c; \
+ fi
@echo Compiling the stubs
cd generated; $(CC) -c $(CFLAGS) $(INCLUDES) -I../../util *.c; cd ..
@echo "this is a cute little makefile marker" >generated/stubs
@@ -64,7 +67,9 @@
rm -f $(SERVICE_SO) *.o $(CLIENT) *~* *#*
distclean:
- rm -rf generated $(SERVICE_SO) *.o $(CLIENT) *~* *#*
+ find generated -name '*.o' -print0 | xargs -0 rm -f
+ rm -f generated/stubs
+ rm -rf $(SERVICE_SO) *.o $(CLIENT) *~* *#*
install:
--- eucalyptus-1.6.2.orig/node/Makefile
+++ eucalyptus-1.6.2/node/Makefile
@@ -20,16 +20,21 @@
build: all
generated/stubs: $(NCWSDL)
- @echo Generating server stubs
- rm -rf generated
- mkdir -p generated
- sh $(WSDL2C) -uri $(NCWSDL) -sd -ss -d adb -u -uw -f -o generated | grep -v 'the classpath'
- @echo Adding marshalling calls to server stubs
- ../tools/add_marshalling.pl generated/axis2_skel_*.c
- @echo Generating client stubs
- sh $(WSDL2C) -uri $(NCWSDL) -g -d adb -u -uw -f -o generated | grep -v 'the classpath'
+ if test -n "$(REBUILD_STUBS)"; \
+ then \
+ echo Generating server stubs; \
+ rm -rf generated; \
+ mkdir -p generated; \
+ sh $(WSDL2C) -uri $(NCWSDL) -sd -ss -d adb -u -uw -f -o generated | grep -v 'the classpath'; \
+ echo Adding marshalling calls to server stubs; \
+ ../tools/add_marshalling.pl generated/axis2_skel_*.c; \
+ echo Generating client stubs; \
+ sh $(WSDL2C) -uri $(NCWSDL) -g -d adb -u -uw -f -o generated | grep -v 'the classpath'; \
+ echo Patching; \
+ patch -d generated -p1 < axis2_svc_generated.patch; \
+ fi
@echo Compiling the stubs
- cd generated; patch -p1 < ../axis2_svc_generated.patch; $(CC) -c $(CFLAGS) $(INCLUDES) *.c
+ cd generated; $(CC) -c $(CFLAGS) $(INCLUDES) *.c
@echo "this is a cute little makefile marker" >generated/stubs
@echo Stubs generated.
@@ -96,7 +101,10 @@
rm -rf $(SERVICE_SO) *.o $(CLIENT) $(CLIENT)_local *~* *#*
distclean:
- rm -rf generated $(SERVICE_SO) *.o $(CLIENT) $(CLIENT)_local *~* *#*
+ find generated -name '*.o' -print0 | xargs -0 rm -f
+ test -e generated/stubs && cd generated && patch -R -p1 < ../axis2_svc_generated.patch
+ rm -f generated/stubs
+ rm -rf $(SERVICE_SO) *.o $(CLIENT) $(CLIENT)_local *~* *#*
install: deploy
$(INSTALL) nc-client-policy.xml $(DESTDIR)$(vardir)/lib/eucalyptus/keys/
--- eucalyptus-1.6.2.orig/node/handlers_xen.c
+++ eucalyptus-1.6.2/node/handlers_xen.c
@@ -298,15 +298,9 @@
output = malloc(bufsize);
bzero(output, bufsize);
- snprintf(filename, 1024, "/tmp/consoleOutput.%s", instanceId);
-
pid = fork();
if (pid == 0) {
- int fd;
- fd = open(filename, O_WRONLY | O_TRUNC | O_CREAT, 0644);
- if (fd < 0) {
- // error
- } else {
+ {
dup2(fd, 2);
dup2(2, 1);
close(0);
@@ -324,9 +318,8 @@
struct stat statbuf;
count=0;
- while(count < 10000 && stat(filename, &statbuf) < 0) {count++;}
- fd = open(filename, O_RDONLY);
- if (fd < 0) {
+ close(fd); // reset fd
+ if ( (fd = open(filename, O_RDONLY)) < 0) {
logprintfl (EUCAERROR, "ERROR: could not open consoleOutput file %s for reading\n", filename);
} else {
FD_ZERO(&rfds);
@@ -350,6 +343,7 @@
unlink(filename);
+encode_free_exit:
if (output[0] == '\0') {
snprintf(output, bufsize, "EMPTY");
}
--- eucalyptus-1.6.2.orig/clc/modules/image-manager/src/main/java/edu/ucsb/eucalyptus/cloud/ws/ImageManager.java
+++ eucalyptus-1.6.2/clc/modules/image-manager/src/main/java/edu/ucsb/eucalyptus/cloud/ws/ImageManager.java
@@ -191,8 +191,9 @@
db.rollback( );
throw new EucalyptusCloudException( "Unable to determine required kernel image." );
}
-
- String ramdiskId = ImageUtil.getImageInfobyId( msg.getRamdiskId( ), diskInfo.getRamdiskId( ), defaultRamdiskId );
+ boolean nord = ( ImageUtil.isSet( msg.getKernelId( ) ) && !ImageUtil.isSet( msg.getRamdiskId( ) ) );
+ nord |= ( !ImageUtil.isSet( msg.getKernelId() ) && ImageUtil.isSet( diskInfo.getKernelId( ) ) && !ImageUtil.isSet( diskInfo.getRamdiskId() ) && !ImageUtil.isSet( msg.getRamdiskId() ) );
+ String ramdiskId = nord?null:ImageUtil.getImageInfobyId( msg.getRamdiskId( ), diskInfo.getRamdiskId( ), defaultRamdiskId );
ImageInfo kernelInfo = null;
try {
--- eucalyptus-1.6.2.orig/clc/modules/image-manager/src/main/java/edu/ucsb/eucalyptus/cloud/ws/VolumeManager.java
+++ eucalyptus-1.6.2/clc/modules/image-manager/src/main/java/edu/ucsb/eucalyptus/cloud/ws/VolumeManager.java
@@ -250,6 +250,9 @@
public AttachVolumeResponseType AttachVolume( AttachVolumeType request ) throws EucalyptusCloudException {
AttachVolumeResponseType reply = ( AttachVolumeResponseType ) request.getReply();
+ if( request.getDevice( ) == null || request.getDevice().endsWith( "sda" ) ) {
+ throw new EucalyptusCloudException( "Invalid device name specified: " + request.getDevice( ) );
+ }
VmInstance vm = null;
try {
vm = VmInstances.getInstance().lookup( request.getInstanceId() );
--- eucalyptus-1.6.2.orig/clc/modules/walrus/src/main/java/edu/ucsb/eucalyptus/cloud/ws/WalrusImageManager.java
+++ eucalyptus-1.6.2/clc/modules/walrus/src/main/java/edu/ucsb/eucalyptus/cloud/ws/WalrusImageManager.java
@@ -226,7 +226,7 @@
//Assemble parts
String encryptedImageKey = imageKey + "-" + Hashes.getRandom(5) + ".crypt.gz";
String encryptedImageName = storageManager.getObjectPath(bucketName, encryptedImageKey);
- String decryptedImageKey = encryptedImageKey.replaceAll("crypt.gz", "tgz");
+ String decryptedImageKey = encryptedImageKey.substring(0, encryptedImageKey.lastIndexOf("crypt.gz")) + "tgz";
String decryptedImageName = storageManager.getObjectPath(bucketName, decryptedImageKey);
assembleParts(encryptedImageName, qualifiedPaths);
//Decrypt key and IV
@@ -398,7 +398,7 @@
ImageCacheInfo searchImageCacheInfo = new ImageCacheInfo(bucketName, manifestKey);
try {
ImageCacheInfo foundImageCacheInfo = db.getUnique(searchImageCacheInfo);
- String cacheImageKey = foundImageCacheInfo.getImageName().replaceAll(".tgz", "");
+ String cacheImageKey = foundImageCacheInfo.getImageName().substring(0, foundImageCacheInfo.getImageName().lastIndexOf(".tgz"));
long objectSize = storageManager.getObjectSize(bucketName, cacheImageKey);
db.commit();
if(objectSize > 0) {
@@ -590,9 +590,10 @@
//update status
//wake up any waiting consumers
String decryptedImageName = storageManager.getObjectPath(bucketName, decryptedImageKey);
- String tarredImageName = decryptedImageName.replaceAll("tgz", "tar");
- String imageName = tarredImageName.replaceAll(".tar", "");
- String imageKey = decryptedImageKey.replaceAll(".tgz", "");
+ String imageName = decryptedImageName.substring(0, decryptedImageName.lastIndexOf(".tgz"));
+ String tarredImageName = imageName + (".tar");
+ String imageKey = decryptedImageKey.substring(0, decryptedImageKey.lastIndexOf(".tgz"));
+
Long unencryptedSize;
int numberOfRetries = 0;
while((unencryptedSize = tryToCache(decryptedImageName, tarredImageName, imageName)) < 0) {
--- eucalyptus-1.6.2.orig/clc/modules/www/src/main/java/edu/ucsb/eucalyptus/admin/public/EucalyptusWebInterface.html
+++ eucalyptus-1.6.2/clc/modules/www/src/main/java/edu/ucsb/eucalyptus/admin/public/EucalyptusWebInterface.html
@@ -34,7 +34,7 @@
- Eucalyptus
+ Ubuntu Enterprise Cloud, powered by Eucalyptus
--- eucalyptus-1.6.2.orig/clc/modules/www/src/main/java/edu/ucsb/eucalyptus/admin/public/themes/ubuntu/stylesheet.css
+++ eucalyptus-1.6.2/clc/modules/www/src/main/java/edu/ucsb/eucalyptus/admin/public/themes/ubuntu/stylesheet.css
@@ -223,7 +223,7 @@
border-color: #FF6600;
background: #FFCC33;
padding: 20px 20px 20px 20px;
- width: 400px;
+ width: 550px;
}
.gwt-DialogBox .Caption {
font-size: bold;
@@ -239,4 +239,4 @@
.euca-nonfirst-cluster-entry {
border-top:1px dashed grey;
padding:10px;
-}
\ No newline at end of file
+}
--- eucalyptus-1.6.2.orig/clc/modules/www/src/main/java/edu/ucsb/eucalyptus/admin/public/extensions/store/stylesheet.css
+++ eucalyptus-1.6.2/clc/modules/www/src/main/java/edu/ucsb/eucalyptus/admin/public/extensions/store/stylesheet.css
@@ -1,22 +1,6 @@
-/** Add css rules here for your application. */
-/** Example rules used by the template application (remove for your app) */
-h1 {
- font-size: 2em;
- font-weight: bold;
- color: #777777;
- margin: 40px 0px 70px;
- text-align: center;
-}
-
-.sendButton {
- display: block;
- font-size: 16pt;
-}
-
-/** Most GWT widgets already have a style name defined */
.gwt-DialogBox {
- width: 400px;
+ width: 550px;
}
.dialogVPanel {
@@ -36,6 +20,10 @@
width: 510px;
}
+.istore-image-store-widget td {
+ font-size: 1em;
+}
+
.istore-section-title {
font-weight: bold;
font-size: 150%;
@@ -204,6 +192,7 @@
}
.istore-status-widget .istore-show-error-anchor {
+ white-space: nowrap;
text-decoration: underline;
color: #ff0000;
}
@@ -239,7 +228,6 @@
padding: 2px;
padding-left: 0.3em;
height: 26px;
- font-size: 100%;
margin-right: 10px;
width: 350px; /* Update the spinner position when changing this. */
}
--- eucalyptus-1.6.2.orig/clc/modules/www/src/main/java/edu/ucsb/eucalyptus/admin/client/EucalyptusWebInterface.java
+++ eucalyptus-1.6.2/clc/modules/www/src/main/java/edu/ucsb/eucalyptus/admin/client/EucalyptusWebInterface.java
@@ -72,8 +72,11 @@
import com.google.gwt.user.client.Window;
import com.google.gwt.user.client.rpc.AsyncCallback;
import com.google.gwt.user.client.ui.*;
+import com.google.gwt.event.dom.client.ClickHandler;
+import com.google.gwt.event.dom.client.ClickEvent;
import edu.ucsb.eucalyptus.admin.client.extensions.store.ImageStoreClient;
import edu.ucsb.eucalyptus.admin.client.extensions.store.ImageStoreWidget;
+import edu.ucsb.eucalyptus.admin.client.extensions.store.FrameWidget;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
@@ -155,6 +158,7 @@
private static int confTabIndex = -1;
private static int downTabIndex = -1;
private static int storeTabIndex = -1;
+ private static int servicesTabIndex = -1;
private static boolean sortUsersLastFirst = true;
/* UI selections remembered for future use */
@@ -220,7 +224,7 @@
if (props == null) {
throw new Exception("Invalid server configuration");
}
- version = (String)props.get("version");
+ version = (String)props.get("version");
cloud_name = (String)props.get("cloud-name");
signup_greeting = (String)props.get("signup-greeting");
certificate_download_text = (String)props.get("certificate-download-text");
@@ -1337,12 +1341,13 @@
allTabs.addTab ("Images"); imgTabIndex = nTabs++;
/////allTabs.addTab ("Instances"); instTabIndex = nTabs++;
if (loggedInUser.isAdministrator().booleanValue()) {
+ if (extensions != null && extensions.contains("store")) {
+ allTabs.addTab ("Store"); storeTabIndex = nTabs++;
+ }
allTabs.addTab ("Users"); usrTabIndex = nTabs++;
allTabs.addTab ("Configuration"); confTabIndex = nTabs++;
+ allTabs.addTab ("Services"); servicesTabIndex = nTabs++;
allTabs.addTab ("Extras"); downTabIndex = nTabs++;
- if (extensions!=null && extensions.contains ("store") ) {
- allTabs.addTab ("Store"); storeTabIndex = nTabs++;
- }
}
// can happen if admin user re-logs in as regular without reloading
if (currentTabIndex > (nTabs-1) ) {
@@ -1360,6 +1365,7 @@
else if (tabIndex==confTabIndex) { displayConfTab(wrapper); }
else if (tabIndex==downTabIndex) { displayDownloadsTab(wrapper); }
else if (tabIndex==storeTabIndex) { displayStoreTab(wrapper); }
+ else if (tabIndex==servicesTabIndex) { displayServicesTab(wrapper); }
else { displayErrorPage("Invalid tab!"); }
}
public boolean onBeforeTabSelected(SourcesTabEvents sender, int tabIndex) {
@@ -1458,7 +1464,7 @@
if (ex==null) {
ip = in;
- text = "Warning: Rightscale could not discover the external IP address of your cloud. Hence, the pre-filled cloud URL may be incorrect. Check your firewall settings.
";
+ text = "Warning: RightScale could not discover the external IP address of your cloud. Hence, the pre-filled cloud URL may be incorrect. Check your firewall settings.";
} else if (!ex.equals(in)) {
ip = ex;
@@ -1488,6 +1494,92 @@
}
}
+ private class LandscapeDialog extends DialogBox {
+
+ private boolean cancelled = false;
+ private String landscapeUrl = null;
+
+ public LandscapeDialog () {
+
+ cancelled = false;
+ setHTML(" Checking the external IP address...");
+
+ final Button okButton = new Button("OK",
+ new ClickListener() {
+ public void onClick(Widget sender) {
+ LandscapeDialog.this.hide();
+ if (landscapeUrl!=null) {
+ Window.open(landscapeUrl, "_blank", "");
+ }
+ }
+ });
+ okButton.setEnabled (false);
+ Button cancelButton = new Button("Cancel",
+ new ClickListener() {
+ public void onClick(Widget sender) {
+ LandscapeDialog.this.hide();
+ cancelled = true;
+ }
+ });
+
+ HorizontalPanel buttonPanel = new HorizontalPanel();
+ buttonPanel.add (okButton);
+ buttonPanel.add (cancelButton);
+ setWidget (buttonPanel);
+
+ EucalyptusWebBackend.App.getInstance().getCloudInfo(
+ sessionId,
+ true, // DO check external IP
+ new AsyncCallback () {
+ public void onSuccess( Object result )
+ {
+ if (cancelled) {
+ return;
+ }
+ cloudInfo = (CloudInfoWeb) result;
+ String ex = cloudInfo.getExternalHostPort();
+ String in = cloudInfo.getInternalHostPort();
+ String text = "";
+ String ip;
+
+ if (ex==null) {
+ ip = in;
+ text = "Warning: The external IP address of your cloud could not be discovered. Hence, the pre-filled cloud URL may be incorrect. Check your firewall settings.";
+ } else if (!ex.equals(in)) {
+ ip = ex;
+ text = "Warning: The external cloud IP discovered (" + ex + ") is different from the IP found by Eucalyptus (" + in + "). Hence, the pre-filled cloud URL may be incorrect. Check your firewall settings.";
+ } else {
+ ip = ex;
+ }
+ String callbackUrl = "https://"
+ + ip
+ + cloudInfo.getServicePath();
+ // XXX Should really use the info-url instead
+ String ec2Url = "http://"
+ + ip
+ + "/services/Eucalyptus";
+ landscapeUrl =
+ "https://landscape.canonical.com/register-cloud"
+ + "?endpoint="
+ + GWTUtils.escape(ec2Url)
+ + "&info-url="
+ + GWTUtils.escape(callbackUrl)
+ + "&cloud-id="
+ + GWTUtils.escape(cloudInfo.getCloudId());
+ String pre = "Cloud registration You are about to open a new window to Landscape's web site, on which you will be able to complete the registraton.";
+ setHTML(pre + text);
+ okButton.setEnabled(true);
+ center();
+ }
+ public void onFailure(Throwable caught)
+ {
+ displayErrorPage(caught.getMessage());
+ }
+ }
+ );
+ }
+ }
+
public void actuallyDisplayCredentialsTab (VerticalPanel parent)
{
History.newItem("credentials");
@@ -1598,6 +1690,7 @@
// g.setWidget( 2, 0, rpanel ); g.getCellFormatter().setVerticalAlignment(2, 0, HasVerticalAlignment.ALIGN_TOP);
// g.setWidget( 2, 1, secretButton ); g.getCellFormatter().setVerticalAlignment(2, 1, HasVerticalAlignment.ALIGN_TOP);
+/*
if (loggedInUser.isAdministrator() && show_cloud_registration) {
VerticalPanel cloud_panel = new VerticalPanel();
cloud_panel.setSpacing (0);
@@ -1639,6 +1732,7 @@
// g.getCellFormatter().setVerticalAlignment(3, 1, HasVerticalAlignment.ALIGN_TOP);
credspanel.add(vp);
}
+ */
//credspanel.add(g);
}
@@ -2241,6 +2335,7 @@
showActions = true;
}
+
if (nimages>0) {
final Grid g = new Grid(nimages + 1, 6);
g.setStyleName("euca-table");
@@ -2331,7 +2426,157 @@
parent.clear();
parent.add(imageStore);
}
-
+
+ private class SectionWidget extends Composite {
+ private VerticalPanel verticalPanel = new VerticalPanel();
+ public SectionWidget(String title, String contentHtml) {
+ initialize(title, new HTML(contentHtml));
+ }
+ public SectionWidget(String title, Widget contentWidget) {
+ initialize(title, contentWidget);
+ }
+ private void initialize(String title, Widget contentWidget) {
+ Label titleLabel = new Label(title);
+ titleLabel.setStyleName("istore-section-title");
+ verticalPanel.add(titleLabel);
+ verticalPanel.add(new FrameWidget(contentWidget));
+ contentWidget.addStyleName("istore-images-panel");
+ initWidget(verticalPanel);
+ setStyleName("istore-image-section-widget");
+ }
+ }
+
+ public void displayServicesTab (final VerticalPanel parent)
+ {
+ History.newItem ("services");
+ VerticalPanel servicesPanel = new VerticalPanel();
+ servicesPanel.add(new SectionWidget(
+ "Ubuntu Enterprise Cloud Documentation",
+ "For UEC documentation, community pages and the " +
+ "UEC user mailing list please see the Ubuntu site:
" +
+ ""));
+ servicesPanel.add(new SectionWidget(
+ "Training",
+ "The Ubuntu Enterprise Cloud training course covers every " +
+ "aspect of running your own cloud. Including installing, " +
+ "configuring and optimising the infrastructure, along with " +
+ "setting up and managing virtual machines for your " +
+ "applications. To learn about the UEC course, and our other " +
+ "Ubuntu courses please see:
" +
+ ""));
+ servicesPanel.add(new SectionWidget(
+ "Eucalyptus",
+ "The UEC is powered by Eucalyptus, an open-source cloud " +
+ "computing platform with support for popular hypervisor and " +
+ "cloud computing interfaces. Eucalyptus enables users to " +
+ "easily implement on-premise and hybrid clouds that leverage " +
+ "both internal and external resources.
" +
+ "For open-source downloads, documentation and user forums " +
+ "please visit:
" +
+ "" +
+ "For enterprise support, professional services and " +
+ "additional Eucalyptus products please visit:" +
+ "
"));
+
+ HTMLPanel landscapePanel = new HTMLPanel(
+ "Landscape is " +
+ "a systems management service that provides package management, " +
+ "security alerts, custom script automation and monitoring. " +
+ "With Landscape you can see and manage all of your Cloud " +
+ "environment.
" +
+ "If you already have an account with Landscape, you can " +
+ "register this cloud now:
" +
+ "");
+
+ Anchor landscapeAnchor = Anchor.wrap(
+ landscapePanel.getElementById("ls-anchor"));
+
+ landscapeAnchor.addClickHandler(new ClickHandler() {
+ public void onClick(ClickEvent event) {
+ event.preventDefault();
+ new LandscapeDialog().center();
+ }
+ });
+
+ servicesPanel.add(new SectionWidget(
+ "Landscape",
+ landscapePanel
+ ));
+
+ if (loggedInUser.isAdministrator() && show_cloud_registration) {
+ HTMLPanel rightScalePanel = new HTMLPanel(
+ "Your Eucalyptus cloud can also be registered with " +
+ "RightScale , " +
+ "providing you and your users with an easy-to-use interface " +
+ "to both EC2 and your Eucalyptus cloud. The following two " +
+ "parameters will be necessary for registration:
" +
+ "" +
+ "
Cloud URL:
" +
+ "
Cloud ID:
" +
+ "
" +
+ "If you already have an account with RightScale, you can " +
+ "register this cloud now:
" +
+ "");
+
+ rightScalePanel.add(new InlineLabel(
+ "https://" +
+ cloudInfo.getInternalHostPort() +
+ cloudInfo.getServicePath()
+ ), "rs-cloud-url");
+
+ rightScalePanel.add(new InlineLabel(
+ cloudInfo.getCloudId()
+ ), "rs-cloud-id");
+
+ Anchor rightScaleAnchor = Anchor.wrap(
+ rightScalePanel.getElementById("rs-anchor"));
+
+ rightScaleAnchor.addClickHandler(new ClickHandler() {
+ public void onClick(ClickEvent event) {
+ event.preventDefault();
+ new RightscaleDialog().center();
+ }
+ });
+
+ servicesPanel.add(new SectionWidget(
+ "RightScale",
+ rightScalePanel
+ ));
+ }
+
+ servicesPanel.add(new SectionWidget(
+ "Support",
+ "With commercial support you have the certainty that your " +
+ "bugs and issues will be responded to promptly. Canonical " +
+ "provides business day and 24/7 for Ubuntu Enterprise Cloud. " +
+ "For more details on the service please see:
" +
+ ""));
+
+ parent.clear();
+ parent.add(servicesPanel);
+ }
+
public void displayFirstTimeConfiguration()
{
displayStatusPage("Loading first-time configuration page...");
--- eucalyptus-1.6.2.orig/clc/modules/bootstrap/eucalyptus-bootstrap.c
+++ eucalyptus-1.6.2/clc/modules/bootstrap/eucalyptus-bootstrap.c
@@ -585,7 +585,9 @@
if(args->remote_walrus_flag) {
JVM_ARG(opt[++x],"-Deuca.remote.walrus=true");
}
- if(args->disable_iscsi_flag) {
+ //if(args->disable_iscsi_flag) {
+ // iSCSI is disabled for Ubuntu 10.04 LTS
+ if(1) {
JVM_ARG(opt[++x],"-Deuca.disable.iscsi=true");
}
if(args->debug_flag) {
--- eucalyptus-1.6.2.orig/clc/modules/storage-controller/src/main/java/edu/ucsb/eucalyptus/storage/LVM2Manager.java
+++ eucalyptus-1.6.2/clc/modules/storage-controller/src/main/java/edu/ucsb/eucalyptus/storage/LVM2Manager.java
@@ -899,6 +899,13 @@
String password = Hashes.getRandom(16);
iscsiVolumeInfo.setEncryptedPassword(encryptTargetPassword(password));
String absoluteLVName = lvmRootDirectory + PATH_SEPARATOR + iscsiVolumeInfo.getVgName() + PATH_SEPARATOR + iscsiVolumeInfo.getLvName();
+ try {
+ enableLogicalVolume(absoluteLVName);
+ } catch(ExecutionException ex) {
+ String error = "Unable to run command: " + ex.getMessage();
+ LOG.error(error);
+ return;
+ }
((ISCSIManager)exportManager).exportTarget(iscsiVolumeInfo.getTid(), iscsiVolumeInfo.getStoreName(), iscsiVolumeInfo.getLun(), absoluteLVName, iscsiVolumeInfo.getStoreUser(), password);
}
}
--- eucalyptus-1.6.2.orig/clc/modules/cluster-manager/src/main/java/edu/ucsb/eucalyptus/cloud/cluster/VmInstance.java
+++ eucalyptus-1.6.2/clc/modules/cluster-manager/src/main/java/edu/ucsb/eucalyptus/cloud/cluster/VmInstance.java
@@ -346,13 +346,15 @@
m.put( "public-ipv4", this.getNetworkConfig( ).getIgnoredPublicIp( ) );
m.put( "reservation-id", this.getReservationId( ) );
m.put( "kernel-id", this.getImageInfo( ).getKernelId( ) );
- m.put( "ramdisk-id", this.getImageInfo( ).getRamdiskId( ) );
+ if( this.getImageInfo( ).getRamdiskId( ) != null ) {
+ m.put( "ramdisk-id", this.getImageInfo( ).getRamdiskId( ) );
+ }
m.put( "security-groups", this.getNetworkNames( ).toString( ).replaceAll( "[\\Q[]\\E]", "" ).replaceAll( ", ", "\n" ) );
m.put( "block-device-mapping/", "emi\nephemeral0\nroot\nswap" );
m.put( "block-device-mapping/emi", "sda1" );
m.put( "block-device-mapping/ami", "sda1" );
- m.put( "block-device-mapping/ephemeral", "sda2" );
+ m.put( "block-device-mapping/ephemeral0", "sda2" );
m.put( "block-device-mapping/swap", "sda3" );
m.put( "block-device-mapping/root", "/dev/sda1" );
@@ -366,6 +368,10 @@
String dir = "";
for ( String entry : m.keySet( ) ) {
if ( entry.contains( "/" ) && !entry.endsWith( "/" ) ) continue;
+ if ( entry.equals("ramdisk-id") &&
+ this.getImageInfo( ).getRamdiskId( ) == null ) {
+ continue;
+ }
dir += entry + "\n";
}
m.put( "", dir );
--- eucalyptus-1.6.2.orig/clc/modules/cluster-manager/src/main/java/edu/ucsb/eucalyptus/cloud/cluster/ConsoleOutputCallback.java
+++ eucalyptus-1.6.2/clc/modules/cluster-manager/src/main/java/edu/ucsb/eucalyptus/cloud/cluster/ConsoleOutputCallback.java
@@ -94,7 +94,8 @@
String output = null;
try {
output = new String( Base64.decode( reply.getOutput( ).getBytes( ) ) );
- if ( !"EMPTY".equals( output ) ) vm.getConsoleOutput( ).append( output );
+//for rolling serial we needed this... if ( !"EMPTY".equals( output ) ) vm.getConsoleOutput( ).append( output );
+ if ( !"EMPTY".equals( output ) ) vm.setConsoleOutput( new StringBuffer().append( output ) );
} catch ( ArrayIndexOutOfBoundsException e1 ) {}
reply.setInstanceId( this.getRequest( ).getInstanceId( ) );
reply.setTimestamp( new Date( ) );
--- eucalyptus-1.6.2.orig/clc/modules/cluster-manager/src/main/java/edu/ucsb/eucalyptus/cloud/cluster/UnassignAddressCallback.groovy
+++ eucalyptus-1.6.2/clc/modules/cluster-manager/src/main/java/edu/ucsb/eucalyptus/cloud/cluster/UnassignAddressCallback.groovy
@@ -127,6 +127,12 @@
this.address.clearPending( );
} catch(Throwable t) {
LOG.error(t,t)
+ } finally {
+ if( !this.address.isPending() && this.address.isSystemOwned() && Address.UNASSIGNED_INSTANCEID.equals( this.address.getInstanceId() ) ) {
+ try { this.address.release(); } catch( Throwable t ) {
+ LOG.warn( "Failed to release orphan address: " + this.address );
+ }
+ }
}
}
--- eucalyptus-1.6.2.orig/clc/modules/cluster-manager/src/main/java/com/eucalyptus/address/Address.java
+++ eucalyptus-1.6.2/clc/modules/cluster-manager/src/main/java/com/eucalyptus/address/Address.java
@@ -218,6 +218,7 @@
this.instanceAddress = UNASSIGNED_INSTANCEADDR;
this.instanceId = UNASSIGNED_INSTANCEID;
Address.removeAddress( this.name );
+ this.state.set( State.unallocated, false );
} else {
Addresses.getInstance( ).register( this );
this.state.set( State.allocated, false );
--- eucalyptus-1.6.2.orig/debian/eucalyptus.conf
+++ eucalyptus-1.6.2/debian/eucalyptus.conf
@@ -0,0 +1,60 @@
+# /etc/eucalyptus/eucalyptus.conf
+#
+# These are the Ubuntu Enterprise Cloud's default Eucalyptus parameters.
+
+# Affects: All
+# See: **NOTE** below
+EUCALYPTUS="/"
+EUCA_USER="eucalyptus"
+
+# Affects: CLC, Walrus, SC
+DISABLE_DNS="Y"
+DISABLE_ISCSI="Y"
+
+# Affects: CC, NC
+# See: **NOTE** below
+ENABLE_WS_SECURITY="Y"
+LOGLEVEL="DEBUG"
+VNET_PUBINTERFACE="eth0"
+VNET_PRIVINTERFACE="eth0"
+VNET_MODE="MANAGED-NOVLAN"
+
+# Affects: CC
+# See: **NOTE** below
+CC_PORT="8774"
+SCHEDPOLICY="ROUNDROBIN"
+POWER_IDLETHRESH="300"
+POWER_WAKETHRESH="300"
+NC_SERVICE="axis2/services/EucalyptusNC"
+VNET_DHCPDAEMON="/usr/sbin/dhcpd3"
+VNET_DHCPUSER="dhcpd"
+NODES=""
+VNET_ADDRSPERNET="32"
+#VNET_SUBNET=""
+#VNET_NETMASK=""
+#VNET_DNS=""
+#VNET_PUBLICIPS=""
+
+# Affects: NC
+NC_PORT="8775"
+HYPERVISOR="kvm"
+MANUAL_INSTANCES_CLEANUP=0
+VNET_BRIDGE="br0"
+INSTANCE_PATH="/var/lib/eucalyptus/instances/"
+
+
+##########################################################################
+#
+# Administrative overrides and customizations may go below, in accordance
+# with the manpage for eucalyptus.conf(5).
+#
+# However, to modify Eucalyptus parameters, you are advised to use
+# euca_conf(8), which will update eucalyptus.local.conf(5) and ensure
+# smooth package upgrades.
+#
+# **NOTE**: To activate changes of these parameters on a CC, you must:
+# sudo restart eucalyptus-cc CLEAN=1
+# HOWEVER, if you do this, all currently running virtual
+# machines in this cluster will lose network connectivity.
+#
+##########################################################################
--- eucalyptus-1.6.2.orig/debian/30-eucalyptus-nc.conf
+++ eucalyptus-1.6.2/debian/30-eucalyptus-nc.conf
@@ -0,0 +1,2 @@
+net.ipv4.ip_forward = 1
+net.bridge.bridge-nf-call-iptables = 1
--- eucalyptus-1.6.2.orig/debian/eucalyptus-walrus.prerm
+++ eucalyptus-1.6.2/debian/eucalyptus-walrus.prerm
@@ -0,0 +1,7 @@
+#!/bin/sh -e
+
+if [ "$1" = "remove" ]; then
+ stop eucalyptus-walrus-publication || true
+fi
+
+#DEBHELPER#
--- eucalyptus-1.6.2.orig/debian/eucalyptus-cc.dirs
+++ eucalyptus-1.6.2/debian/eucalyptus-cc.dirs
@@ -0,0 +1,4 @@
+/etc/eucalyptus/preseed
+/etc/update-motd.d
+/usr/lib/eucalyptus
+/var/lib/eucalyptus/CC
--- eucalyptus-1.6.2.orig/debian/eucalyptus-cloud.postrm
+++ eucalyptus-1.6.2/debian/eucalyptus-cloud.postrm
@@ -0,0 +1,24 @@
+#!/bin/sh -e
+
+
+if [ "$1" = "remove" ]; then
+ if [ -e /etc/init/eucalyptus.conf ]; then
+ restart eucalyptus || :
+ fi
+ if grep -qs "The Ubuntu Enterprise Cloud runs on port 8443" /var/www/index.html; then
+ cat > /var/www/index.html <It works!
+This is the default web page for this server.
+The web server software is running but no content has been added, yet.
+
+EOF
+ fi
+elif [ "$1" = "purge" ]; then
+ rm -rf /var/log/eucalyptus/cloud-*.log* \
+ /var/log/eucalyptus/jetty-request*.log \
+ /etc/eucalyptus/preseed/
+fi
+
+#DEBHELPER#
+
+exit 0
--- eucalyptus-1.6.2.orig/debian/uec-component-listener.postinst
+++ eucalyptus-1.6.2/debian/uec-component-listener.postinst
@@ -0,0 +1,20 @@
+#!/bin/sh -e
+
+. /usr/share/debconf/confmodule
+
+if [ "$1" = "configure" ]; then
+ if [ -z "$2" ]; then
+ db_get eucalyptus/autoregistration
+ if [ "$RET" = "false" ]; then
+ touch /var/lib/eucalyptus/registration.lock
+ fi
+ fi
+
+ if [ -e /etc/init/uec-component-listener.conf ]; then
+ start uec-component-listener || :
+ fi
+fi
+
+db_stop
+
+#DEBHELPER#
--- eucalyptus-1.6.2.orig/debian/eucalyptus-nc.eucalyptus-nc-publication.upstart
+++ eucalyptus-1.6.2/debian/eucalyptus-nc.eucalyptus-nc-publication.upstart
@@ -0,0 +1,20 @@
+# eucalyptus-nc-publication
+
+description "Eucalyptus node controller publication"
+author "Dustin Kirkland "
+
+start on (started ssh and started avahi-daemon and eucalyptus-network-is-ready)
+stop on runlevel [!2345]
+
+respawn
+
+script
+ [ -f "/var/lib/eucalyptus/.ssh/authorized_keys" ] || { stop; exit 0; }
+ [ -f "/etc/eucalyptus/eucalyptus-nc.conf" ] || { stop; exit 0; }
+ # Respawn, but not too fast
+ sleep 5
+ . /etc/eucalyptus/eucalyptus.conf
+ . /etc/eucalyptus/eucalyptus.local.conf
+ . /etc/eucalyptus/eucalyptus-nc.conf
+ exec avahi-publish -s "$CC_NAME node" _eucalyptus._tcp $NC_PORT txtvers=1 protovers=1.5.0 type=node
+end script
--- eucalyptus-1.6.2.orig/debian/wsdl_generator
+++ eucalyptus-1.6.2/debian/wsdl_generator
@@ -0,0 +1,85 @@
+#!/bin/sh
+#
+# Ideally, axis2 would be packaged for Ubuntu, and a build dependency of the
+# eucalyptus package.
+#
+# However, axis2 is not feasible to package in Ubuntu (ask Thierry Carrez).
+#
+# This script is intended to be run by the Ubuntu eucalyptus package maintainer.
+#
+# It will download the source/binary tarball for axis2, and run WSDL2C.sh, which
+# regenerates a bunch of C-stubs need for Eucalyptus. This only needs to be
+# executed if any of the wsdl files change:
+# * wsdl/eucalyptus_cc.wsdl
+# * wsdl/eucalyptus_gl.wsdl
+# * wsdl/eucalyptus_nc.wsdl
+#
+# -- Dustin Kirkland 2010-01-04 17:02:16
+
+set -e
+set -x
+
+ORIG_DIR="$PWD"
+DEST="$ORIG_DIR/debian/patches/01-wsdl-stubs.patch"
+if [ ! -f "$DEST" ]; then
+ echo
+ echo "Run '$0' from the root of the eucalyptus branch"
+ echo
+ exit 1
+fi
+
+# Create a sandbox
+DIR=$(mktemp -d)
+cd "$DIR"
+
+# Get the nasty axis2 tool
+if [ -z "$AXIS2_HOME" ] || [ ! -d "$AXIS2_HOME" ]; then
+ wget -O eucalyptus-1.6.1-src-deps.tar.gz http://open.eucalyptus.com/downloads/127
+ tar zxvf eucalyptus-1.6.1-src-deps.tar.gz
+ cd eucalyptus-src-deps
+ tar zxvf axis2-1.4.tgz
+ export AXIS2_HOME="$DIR"/eucalyptus-src-deps/axis2-1.4
+ cd ..
+fi
+
+# Grab the Ubuntu eucalyptus branch
+bzr branch "$ORIG_DIR" ubuntu
+cd "$DIR"/ubuntu
+
+# Reset the generated environment
+rm -rf cluster/generated node/generated gatherlog/generated
+mkdir -p cluster/generated node/generated gatherlog/generated
+
+# Generate the stubs
+sh /usr/lib/axis2/bin/tools/wsdl2c/WSDL2C.sh -uri wsdl/eucalyptus_gl.wsdl -g -d adb -u -uw -f -o gatherlog/generated | grep -v 'the classpath'
+sh /usr/lib/axis2/bin/tools/wsdl2c/WSDL2C.sh -uri wsdl/eucalyptus_gl.wsdl -sd -ss -d adb -u -uw -f -o gatherlog/generated | grep -v 'the classpath'
+sh /usr/lib/axis2/bin/tools/wsdl2c/WSDL2C.sh -uri wsdl/eucalyptus_nc.wsdl -g -d adb -u -uw -f -o node/generated | grep -v 'the classpath'
+sh /usr/lib/axis2/bin/tools/wsdl2c/WSDL2C.sh -uri wsdl/eucalyptus_nc.wsdl -sd -ss -d adb -u -uw -f -o node/generated | grep -v 'the classpath'
+sh /usr/lib/axis2/bin/tools/wsdl2c/WSDL2C.sh -uri wsdl/eucalyptus_cc.wsdl -g -d adb -u -uw -f -o cluster/generated | grep -v 'the classpath'
+sh /usr/lib/axis2/bin/tools/wsdl2c/WSDL2C.sh -uri wsdl/eucalyptus_nc.wsdl -g -d adb -u -uw -f -o cluster/generated | grep -v 'the classpath'
+sh /usr/lib/axis2/bin/tools/wsdl2c/WSDL2C.sh -uri wsdl/eucalyptus_cc.wsdl -sd -ss -d adb -u -uw -f -o cluster/generated | grep -v 'the classpath'
+
+# Doctor the generated output like Eucalyptus does
+./tools/add_marshalling.pl */generated/axis2_skel_*.c
+patch -d cluster/generated -p1 < cluster/axis2_svc_generated.patch
+patch -d node/generated -p1 < node/axis2_svc_generated.patch
+find . | grep "axis2_svc_skel_.*.orig" | xargs -i rm -f {}
+
+# Generate the diff, and update the md5sums
+bzr add cluster/generated node/generated gatherlog/generated
+bzr diff -p1 | tee "$DEST"
+cd "$ORIG_DIR"
+md5sum wsdl/*.wsdl | tee debian/wsdl.md5sums
+
+# Clean up
+rm -rf "$DIR"
+
+# Check work and commit
+bzr diff | diffstat
+echo
+echo "SUCCESS: $DEST updated"
+echo
+echo "INFO: Update changelog, and debcommit!"
+echo
+echo " * debian/patches/01-wsdl-stubs.patch, debian/wsdl.md5sums: wsdl stubs updated"
+echo
--- eucalyptus-1.6.2.orig/debian/eucalyptus-common.dirs
+++ eucalyptus-1.6.2/debian/eucalyptus-common.dirs
@@ -0,0 +1 @@
+/var/lib/eucalyptus/keys
--- eucalyptus-1.6.2.orig/debian/eucalyptus-cloud.postinst
+++ eucalyptus-1.6.2/debian/eucalyptus-cloud.postinst
@@ -0,0 +1,48 @@
+#!/bin/sh -e
+
+if [ "$1" = "configure" ]
+then
+ if ! dpkg-statoverride --list /var/lib/eucalyptus/db >/dev/null 2>&1; then
+ chown eucalyptus:eucalyptus /var/lib/eucalyptus/db
+ chmod 700 /var/lib/eucalyptus/db
+ fi
+
+ EUCA_HOME=`getent passwd eucalyptus | cut -f6 -d:`
+ if ! [ -d "$EUCA_HOME/.ssh" ]
+ then
+ mkdir -p "$EUCA_HOME/.ssh"
+ chown eucalyptus "$EUCA_HOME/.ssh"
+ chmod 755 "$EUCA_HOME/.ssh"
+ fi
+ if ! [ -f "$EUCA_HOME/.ssh/id_rsa" ]
+ then
+ su eucalyptus -c "ssh-keygen -N '' -t rsa -f $EUCA_HOME/.ssh/id_rsa"
+ fi
+
+ if [ -e /etc/init/eucalyptus.conf ]; then
+ restart eucalyptus || :
+ fi
+
+ if [ -r "/var/www/index.html" ]; then
+ # Replace the default "It works!" index.html with a redirect to the UEC front end
+ md5sum=$(md5sum /var/www/index.html | awk '{print $1}')
+ if [ "$md5sum" = "21dde95d9d269cbb2fa6560309dca40c" ]; then
+ cat > /var/www/index.html <Ubuntu Enterprise Cloud
+The Ubuntu Enterprise Cloud runs on port 8443.
+
+
+Please adjust the URL in your browser.
+
+
+EOF
+ fi
+ fi
+fi
+
+#DEBHELPER#
--- eucalyptus-1.6.2.orig/debian/uec-component-listener.prerm
+++ eucalyptus-1.6.2/debian/uec-component-listener.prerm
@@ -0,0 +1,9 @@
+#!/bin/sh -e
+
+#DEBHELPER#
+
+if [ "$1" = "remove" ]; then
+ if [ -e /etc/init/uec-component-listener.conf ]; then
+ stop uec-component-listener || :
+ fi
+fi
--- eucalyptus-1.6.2.orig/debian/eucalyptus-cc.install
+++ eucalyptus-1.6.2/debian/eucalyptus-cc.install
@@ -0,0 +1,4 @@
+/usr/lib/axis2/services/EucalyptusCC
+/var/lib/eucalyptus/keys/nc-client-policy.xml
+debian/eucalyptus-url /usr/lib/eucalyptus
+debian/registration/node /usr/share/eucalyptus/registration
--- eucalyptus-1.6.2.orig/debian/eucalyptus-cloud.dirs
+++ eucalyptus-1.6.2/debian/eucalyptus-cloud.dirs
@@ -0,0 +1,4 @@
+/etc/eucalyptus/preseed
+/var/lib/eucalyptus/db
+/var/lib/eucalyptus/modules
+/var/lib/eucalyptus/webapps
--- eucalyptus-1.6.2.orig/debian/eucalyptus-common.install
+++ eucalyptus-1.6.2/debian/eucalyptus-common.install
@@ -0,0 +1,21 @@
+debian/eucalyptus-ipaddr.conf etc/eucalyptus
+/var/log
+/etc/eucalyptus/eucalyptus-version
+/etc/eucalyptus/vtunall.conf.template
+/etc/eucalyptus/wrappers.conf
+/etc/bash_completion.d/euca_conf
+/usr/share/eucalyptus/add_key.pl
+/usr/share/eucalyptus/chgrp-dhcpd
+/usr/share/eucalyptus/chmod-dhcpd
+/usr/share/eucalyptus/dd-lv
+/usr/share/eucalyptus/modprobe-aoe
+/usr/share/eucalyptus/populate_arp.pl
+/usr/share/eucalyptus/euca_ipt
+/usr/lib/eucalyptus/euca_rootwrap
+/usr/sbin/euca_conf
+/usr/sbin/euca_sync_key
+/usr/sbin/euca_killall
+/etc/eucalyptus/httpd.conf
+debian/eucalyptus.conf etc/eucalyptus/
+debian/axis2.xml /etc/eucalyptus/axis2
+debian/source_eucalyptus.py usr/share/apport/package-hooks
--- eucalyptus-1.6.2.orig/debian/eucalyptus-udeb.install
+++ eucalyptus-1.6.2/debian/eucalyptus-udeb.install
@@ -0,0 +1,2 @@
+debian/local/euca_find_component usr/bin
+/usr/lib/finish-install.d
--- eucalyptus-1.6.2.orig/debian/eucalyptus-cc.postrm
+++ eucalyptus-1.6.2/debian/eucalyptus-cc.postrm
@@ -0,0 +1,19 @@
+#!/bin/sh
+
+set -e
+
+if [ "$1" = "remove" ]; then
+ if [ -e /etc/init/eucalyptus-cc.conf ]; then
+ stop eucalyptus-cc || :
+ fi
+elif [ "$1" = "purge" ]; then
+ rm -rf /var/log/eucalyptus/cc.log \
+ /etc/eucalyptus/preseed/ \
+ /etc/eucalyptus/eucalyptus-cc.conf \
+ /var/lib/eucalyptus/nodes.list \
+ /var/log/eucalyptus/httpd-cc_*_log*
+fi
+
+#DEBHELPER#
+
+exit 0
--- eucalyptus-1.6.2.orig/debian/eucalyptus-sc.upstart
+++ eucalyptus-1.6.2/debian/eucalyptus-sc.upstart
@@ -0,0 +1,25 @@
+# eucalyptus-sc
+
+description "Eucalyptus storage controller"
+author "Matt Zimmerman "
+
+start on started eucalyptus
+stop on stopping eucalyptus
+
+post-start script
+ timeout=60
+ while [ $timeout -gt 0 ]; do
+ . /etc/eucalyptus/eucalyptus-ipaddr.conf
+ if wget -q -T10 -t1 -O- \
+ http://$SC_IP_ADDR:8773/services/Heartbeat | \
+ grep "^name=storage.*enabled=true"; then
+
+ # It's alive!
+ exit 0
+ fi
+ sleep 2
+ timeout=$(($timeout-1))
+ done
+ stop
+ exit 1
+end script
--- eucalyptus-1.6.2.orig/debian/compat
+++ eucalyptus-1.6.2/debian/compat
@@ -0,0 +1 @@
+7
--- eucalyptus-1.6.2.orig/debian/build-jars
+++ eucalyptus-1.6.2/debian/build-jars
@@ -0,0 +1,44 @@
+/usr/share/java/commons-collections3.jar
+/usr/share/java/geronimo-j2ee-connector-1.5-spec.jar
+/usr/share/java/commons-codec.jar
+/usr/share/java/commons-io.jar
+/usr/share/java/jetty-util.jar
+/usr/share/java/hsqldb.jar
+/usr/share/java/jibx-bind.jar
+/usr/share/java/backport-util-concurrent.jar
+/usr/share/java/asm2.jar
+/usr/share/java/antlr.jar
+/usr/share/java/axiom-api.jar
+/usr/share/java/axiom-dom.jar
+/usr/share/java/axiom-impl.jar
+/usr/share/java/bcprov.jar
+/usr/share/java/commons-fileupload.jar
+/usr/share/java/commons-httpclient.jar
+/usr/share/java/commons-lang.jar
+/usr/share/java/commons-pool.jar
+/usr/share/java/commons-cli.jar
+/usr/share/java/dnsjava.jar
+/usr/share/java/drools-core.jar
+/usr/share/java/drools-compiler.jar
+/usr/share/eucalyptus/eucalyptus-commons-ext-0.4.jar
+/usr/share/java/gnumail.jar
+/usr/share/java/geronimo-jpa-3.0-spec.jar
+/usr/share/java/google-collect.jar
+/usr/share/java/groovy.jar
+/usr/share/java/gwt-servlet.jar
+/usr/share/java/gwt-user.jar
+/usr/share/java/jaxp-1.3.jar
+/usr/share/java/jetty.jar
+/usr/share/java/jibx-run.jar
+/usr/share/java/json-lib.jar
+/usr/share/java/junit.jar
+/usr/share/java/log4j-1.2.jar
+/usr/share/java/netty.jar
+/usr/share/java/servlet-api-2.5.jar
+/usr/share/java/wss4j.jar
+/usr/share/java/xalan2.jar
+/usr/share/java/xercesImpl.jar
+/usr/share/java/xml-security.jar
+/usr/share/java/gwt-dev-linux.jar
+/usr/share/java/ecj.jar
+/usr/share/java/ant.jar
--- eucalyptus-1.6.2.orig/debian/eucalyptus-cloud.prerm
+++ eucalyptus-1.6.2/debian/eucalyptus-cloud.prerm
@@ -0,0 +1,7 @@
+#!/bin/sh -e
+
+if [ "$1" = "remove" ]; then
+ stop eucalyptus-cloud || true
+fi
+
+#DEBHELPER#
--- eucalyptus-1.6.2.orig/debian/axis2.xml
+++ eucalyptus-1.6.2/debian/axis2.xml
@@ -0,0 +1,128 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ true
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 6060
+ false
+
+
+
+
+
+
+
+
+
+
+
+
+ HTTP/1.1
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
--- eucalyptus-1.6.2.orig/debian/eucalyptus-cloud.eucalyptus-cloud-publication.upstart
+++ eucalyptus-1.6.2/debian/eucalyptus-cloud.eucalyptus-cloud-publication.upstart
@@ -0,0 +1,18 @@
+# eucalyptus-cloud-publication
+
+description "Eucalyptus cloud controller publication"
+author "Colin Watson , Dustin Kirkland "
+
+start on started eucalyptus-cloud
+stop on stopping eucalyptus-cloud
+
+respawn
+
+script
+ # Respawn, but not too fast
+ sleep 5
+ . /etc/eucalyptus/eucalyptus.conf
+ . /etc/eucalyptus/eucalyptus.local.conf
+ . /etc/eucalyptus/eucalyptus-ipaddr.conf
+ exec avahi-publish -s "CLC" _eucalyptus._tcp 8773 txtvers=1 protovers=1.5.0 type=cloud ipaddr="$CLOUD_IP_ADDR"
+end script
--- eucalyptus-1.6.2.orig/debian/eucalyptus-walrus.eucalyptus-walrus-publication.upstart
+++ eucalyptus-1.6.2/debian/eucalyptus-walrus.eucalyptus-walrus-publication.upstart
@@ -0,0 +1,19 @@
+# eucalyptus-walrus-publication
+
+description "Eucalyptus walrus publication"
+author "Colin Watson , Dustin Kirkland "
+
+start on (started ssh and started avahi-daemon and eucalyptus-network-is-ready)
+stop on runlevel [!2345]
+
+respawn
+
+script
+ [ -f "/var/lib/eucalyptus/.ssh/authorized_keys" ] || { stop; exit 0; }
+ # Respawn, but not too fast
+ sleep 5
+ . /etc/eucalyptus/eucalyptus.conf
+ . /etc/eucalyptus/eucalyptus.local.conf
+ . /etc/eucalyptus/eucalyptus-ipaddr.conf
+ exec avahi-publish -s "Walrus" _eucalyptus._tcp 8773 txtvers=1 protovers=1.5.0 type=walrus ipaddr="$WALRUS_IP_ADDR"
+end script
--- eucalyptus-1.6.2.orig/debian/eucalyptus-common.postinst
+++ eucalyptus-1.6.2/debian/eucalyptus-common.postinst
@@ -0,0 +1,50 @@
+#!/bin/sh -e
+
+seed_local_conf() {
+ cat >/etc/eucalyptus/eucalyptus.local.conf < /dev/null 2>&1
+ then
+ adduser --system --shell /bin/bash --home /var/lib/eucalyptus --group eucalyptus
+ fi
+
+ if [ -z "$2" ]
+ then
+ # Some initial configuration
+ seed_local_conf
+ statoverride="$(dpkg-statoverride --list /usr/share/eucalyptus/euca_rootwrap || true)"
+ if [ "$statoverride" = 'root eucalyptus 04754 /usr/share/eucalyptus/euca_rootwrap' ] || \
+ [ "$statoverride" = 'root eucalyptus 04750 /usr/share/eucalyptus/euca_rootwrap' ]; then
+ # Clean up packaged-installed statoverride that should *not* be here,
+ # if it precisely matches the statoverride we previously installed.
+ dpkg-statoverride --remove /usr/share/eucalyptus/euca_rootwrap
+ fi
+ fi
+
+ if ! dpkg-statoverride --list /usr/lib/eucalyptus/euca_rootwrap; then
+ # Add nasty setuid, change group ownership
+ chown root:eucalyptus /usr/lib/eucalyptus/euca_rootwrap
+ chmod 04754 /usr/lib/eucalyptus/euca_rootwrap
+ fi
+
+ chown -R eucalyptus:eucalyptus /var/lib/eucalyptus/ /var/log/eucalyptus
+ chmod 700 /var/lib/eucalyptus/keys
+
+ if [ -e /etc/init/eucalyptus.conf ]; then
+ start eucalyptus || :
+ fi
+fi
+
+#DEBHELPER#
--- eucalyptus-1.6.2.orig/debian/eucalyptus-sc.templates
+++ eucalyptus-1.6.2/debian/eucalyptus-sc.templates
@@ -0,0 +1,7 @@
+Template: eucalyptus/cluster-name
+Type: string
+Default: cluster1
+_Description: Eucalyptus cluster name:
+ Enter a name for this cluster. The name should contain only ASCII letters,
+ digits, hyphens, and underscores. It will be shown to users as the name of
+ an availability zone.
--- eucalyptus-1.6.2.orig/debian/eucalyptus-cloud.upstart
+++ eucalyptus-1.6.2/debian/eucalyptus-cloud.upstart
@@ -0,0 +1,29 @@
+# eucalyptus-cloud
+
+description "Eucalyptus cloud controller"
+author "Matt Zimmerman "
+
+start on started eucalyptus
+stop on stopping eucalyptus
+
+post-start script
+ timeout=60
+ while [ $timeout -gt 0 ]; do
+ . /etc/eucalyptus/eucalyptus-ipaddr.conf
+ # Should this check something on :8773 instead? -mdz
+ if wget -q -T10 -t1 -O- --no-check-certificate \
+ https://$CLOUD_IP_ADDR:8443/register | \
+ grep CloudVersion; then
+
+ # It's alive! Start uec-component-listener if no CC
+ if [ ! -d /usr/lib/axis2/services/EucalyptusCC ]; then
+ initctl start uec-component-listener
+ fi
+ exit 0
+ fi
+ sleep 2
+ timeout=$(($timeout-1))
+ done
+ stop
+ exit 1
+end script
--- eucalyptus-1.6.2.orig/debian/eucalyptus-walrus.upstart
+++ eucalyptus-1.6.2/debian/eucalyptus-walrus.upstart
@@ -0,0 +1,25 @@
+# eucalyptus-walrus
+
+description "Eucalyptus walrus"
+author "Matt Zimmerman "
+
+start on started eucalyptus
+stop on stopping eucalyptus
+
+post-start script
+ timeout=60
+ while [ $timeout -gt 0 ]; do
+ . /etc/eucalyptus/eucalyptus-ipaddr.conf
+ if wget -q -T10 -t1 -O- \
+ http://$WALRUS_IP_ADDR:8773/services/Heartbeat | \
+ grep "^name=walrus.*enabled=true"; then
+
+ # It's alive!
+ exit 0
+ fi
+ sleep 2
+ timeout=$(($timeout-1))
+ done
+ stop
+ exit 1
+end script
--- eucalyptus-1.6.2.orig/debian/eucalyptus-cc.config
+++ eucalyptus-1.6.2/debian/eucalyptus-cc.config
@@ -0,0 +1,29 @@
+#! /bin/sh
+set -e
+
+. /usr/share/debconf/confmodule
+
+if [ "$1" = configure ] && [ -z "$2" ]; then
+ db_get eucalyptus/cluster-name || true
+ if [ -z "$RET" ]; then
+ db_set eucalyptus/cluster-name "cluster1"
+ fi
+ db_input high eucalyptus/cluster-name || true
+ db_input low eucalyptus/mode || true
+ db_go
+ db_get eucalyptus/mode
+ if [ "$RET" = "MANAGED-NOVLAN" -o "$RET" = "MANAGED" ]
+ then
+ current_dns="$(grep ^nameserver /etc/resolv.conf | head -n 1 | awk -- '{ print $NF }')"
+ db_set eucalyptus/dns "$current_dns"
+ db_input medium eucalyptus/subnet || true
+ db_input medium eucalyptus/netmask || true
+ db_input medium eucalyptus/dns || true
+ db_input medium eucalyptus/addrspernet || true
+ db_input medium eucalyptus/cloud-address || true
+ db_input high eucalyptus/publicips || true
+ db_go
+ fi
+fi
+
+exit 0
--- eucalyptus-1.6.2.orig/debian/eucalyptus-common.prerm
+++ eucalyptus-1.6.2/debian/eucalyptus-common.prerm
@@ -0,0 +1,7 @@
+#!/bin/sh -e
+
+if [ "$1" = "remove" ]; then
+ stop eucalyptus || true
+fi
+
+#DEBHELPER#
--- eucalyptus-1.6.2.orig/debian/eucalyptus-nc.install
+++ eucalyptus-1.6.2/debian/eucalyptus-nc.install
@@ -0,0 +1,10 @@
+/usr/lib/eucalyptus/euca_mountwrap
+/usr/share/eucalyptus/detach.pl
+/usr/share/eucalyptus/gen_libvirt_xml
+/usr/share/eucalyptus/gen_kvm_libvirt_xml
+/usr/share/eucalyptus/get_xen_info
+/usr/share/eucalyptus/get_sys_info
+/usr/share/eucalyptus/partition2disk
+/usr/sbin/euca_test_nc
+/usr/lib/axis2/services/EucalyptusNC
+debian/30-eucalyptus-nc.conf etc/sysctl.d
--- eucalyptus-1.6.2.orig/debian/eucalyptus-sc.postinst
+++ eucalyptus-1.6.2/debian/eucalyptus-sc.postinst
@@ -0,0 +1,34 @@
+#!/bin/sh
+
+set -e
+
+. /usr/share/debconf/confmodule
+
+#DEBHELPER#
+
+if [ "$1" = "configure" ]; then
+ if [ -z "$2" ]; then
+ # Shared with CC; we keep a separate configuration file for this so
+ # that we can advertise the intended cluster name over Avahi.
+ db_get eucalyptus/cluster-name
+ if [ "$RET" ]; then
+ echo "SC_NAME=\"$RET\"" >> /etc/eucalyptus/eucalyptus-sc.conf
+ fi
+ fi
+
+ EUCA_HOME=`getent passwd eucalyptus | cut -f6 -d:`
+ if ! [ -d "$EUCA_HOME/.ssh" ]
+ then
+ mkdir -p "$EUCA_HOME/.ssh"
+ chown eucalyptus "$EUCA_HOME/.ssh"
+ chmod 755 "$EUCA_HOME/.ssh"
+ fi
+ mkdir -p /var/lib/eucalyptus/volumes
+ chown eucalyptus:eucalyptus /var/lib/eucalyptus/volumes
+
+ if [ -e /etc/init/eucalyptus.conf ]; then
+ restart eucalyptus || :
+ fi
+fi
+
+exit 0
--- eucalyptus-1.6.2.orig/debian/uec-component-listener.install
+++ eucalyptus-1.6.2/debian/uec-component-listener.install
@@ -0,0 +1,3 @@
+debian/registration/uec_component_listener usr/sbin
+debian/registration/common usr/share/eucalyptus/registration
+debian/registration/uec-registration usr/bin
--- eucalyptus-1.6.2.orig/debian/eucalyptus-nc.config
+++ eucalyptus-1.6.2/debian/eucalyptus-nc.config
@@ -0,0 +1,19 @@
+#!/bin/sh -e
+
+. /usr/share/debconf/confmodule
+
+# Warn users that installing eucalyptus-nc on a system without VT
+# may be undesirable.
+
+if egrep -q "flags.*:.*(svm|vmx)" /proc/cpuinfo 2>&1
+then
+ true
+else
+ db_input high eucalyptus-nc/no_vmx || true
+ db_go
+fi
+
+db_get eucalyptus/cluster-name || true
+if [ -z "$RET" ]; then
+ db_set eucalyptus/cluster-name "cluster1"
+fi
--- eucalyptus-1.6.2.orig/debian/eucalyptus-walrus.postinst
+++ eucalyptus-1.6.2/debian/eucalyptus-walrus.postinst
@@ -0,0 +1,23 @@
+#!/bin/sh
+
+set -e
+
+#DEBHELPER#
+
+if [ "$1" = "configure" ]; then
+ mkdir -p /var/lib/eucalyptus/bukkits
+ chown eucalyptus:eucalyptus /var/lib/eucalyptus/bukkits
+ EUCA_HOME=`getent passwd eucalyptus | cut -f6 -d:`
+ if ! [ -d "$EUCA_HOME/.ssh" ]
+ then
+ mkdir -p "$EUCA_HOME/.ssh"
+ chown eucalyptus "$EUCA_HOME/.ssh"
+ chmod 755 "$EUCA_HOME/.ssh"
+ fi
+
+ if [ -e /etc/init/eucalyptus.conf ]; then
+ restart eucalyptus || :
+ fi
+fi
+
+exit 0
--- eucalyptus-1.6.2.orig/debian/rules
+++ eucalyptus-1.6.2/debian/rules
@@ -0,0 +1,82 @@
+#!/usr/bin/make -f
+
+include /usr/share/cdbs/1/rules/debhelper.mk
+include /usr/share/cdbs/1/rules/patchsys-quilt.mk
+include /usr/share/cdbs/1/class/autotools.mk
+
+EUCALYPTUS=/
+JAVA_HOME=/usr/lib/jvm/default-java
+AXIS2_CLASSPATH=$(shell echo /usr/share/eucalyptus/*.jar | tr \ :)
+# The GWT compile doesn't like to run with a $DISPLAY that it can't reach.
+
+unexport DISPLAY
+export EUCALYPTUS
+export JAVA_HOME
+export AXIS2_CLASSPATH
+
+DEB_CONFIGURE_EXTRA_FLAGS := --with-axis2=/usr/share/eucalyptus --with-axis2c=/usr/lib/axis2 --prefix=$(EUCALYPTUS) --with-interface-theme=ubuntu --enable-appliance-store
+
+makebuilddir/eucalyptus-common:: setup-libs
+
+setup-libs:
+ if md5sum -c debian/wsdl.md5sums; then \
+ echo "SUCCESS: WSDL stubs are valid."; \
+ else \
+ echo "ERROR: WSDL stubs must be updated!"; \
+ echo "HINT: ./debian/wsdl_generator"; \
+ exit 1; \
+ fi
+ cd clc && mkdir -p lib && \
+ for jar in `cat ../debian/build-jars`; do \
+ ln -fsv $$jar lib; done
+ touch setup-libs
+
+build/eucalyptus-udeb::
+ $(MAKE) -C debian/local
+
+build/uec-component-listener::
+ $(MAKE) -C debian/registration
+
+clean::
+ $(MAKE) -C debian/local clean
+ $(MAKE) -C debian/registration clean
+
+install/eucalyptus-common::
+ rm -f $(DEB_DESTDIR)/etc/init.d/eucalyptus
+
+install/eucalyptus-udeb::
+ install -D debian/eucalyptus-udeb.finish-install \
+ $(DEB_DESTDIR)/usr/lib/finish-install.d/60eucalyptus-udeb
+
+DEB_DH_INSTALLINIT_ARGS=--noscripts
+
+binary-install/eucalyptus-nc::
+ dh_installinit -p$(cdbs_curpkg) --noscripts --name=eucalyptus-nc
+ dh_installinit -p$(cdbs_curpkg) --name=eucalyptus-nc-publication
+
+binary-install/eucalyptus-common::
+ dh_installinit -p$(cdbs_curpkg) --noscripts --name=eucalyptus-network
+ dh_installinit -p$(cdbs_curpkg) --noscripts --name=eucalyptus
+
+binary-install/eucalyptus-cc::
+ dh_installinit -p$(cdbs_curpkg) --name=eucalyptus-cc-publication
+
+binary-install/eucalyptus-cloud::
+ dh_installinit -p$(cdbs_curpkg) --name=eucalyptus-cloud-publication
+
+binary-install/eucalyptus-walrus::
+ dh_installinit -p$(cdbs_curpkg) --name=eucalyptus-walrus-publication
+
+binary-install/eucalyptus-sc::
+ dh_installinit -p$(cdbs_curpkg) --name=eucalyptus-sc-publication
+
+binary-post-install/eucalyptus-cc::
+ chmod 755 debian/$(cdbs_curpkg)/usr/lib/eucalyptus/eucalyptus-url
+ chmod 755 debian/$(cdbs_curpkg)/usr/share/eucalyptus/registration/*
+
+binary-post-install/eucalyptus-cloud::
+ chmod 755 debian/$(cdbs_curpkg)/usr/share/eucalyptus/registration/*
+
+clean::
+ rm -rf clc/lib setup-libs clc/modules/msgs/src/main/resources/msgs-binding.xml clc/modules/storage-controller/lib/liblvm2control.so clc/modules/storage-manager/lib/libfsstorage.so clc/modules/www/webapps/root.war node/test_nc node/test config.status clc/modules/storage-controller/include/edu_ucsb_eucalyptus_storage_LVM2Manager.h clc/modules/storage-controller/include/edu_ucsb_eucalyptus_storage_AOEManager.h clc/modules/storage-manager/include/edu_ucsb_eucalyptus_storage_fs_FileSystemStorageManager.h cluster/cc-client-policy.xml node/nc-client-policy.xml util/config.h config.log Makedefs clc/modules/bootstrap/eucalyptus-bootstrap.o clc/modules/bootstrap/eucalyptus-opts.o clc/modules/bootstrap/eucalyptus-cloud tools/eucalyptus-nc tools/eucalyptus-java-ws tools/eucalyptus-cc tools/euca_conf util/eucalyptus-config.h
+
--- eucalyptus-1.6.2.orig/debian/eucalyptus-sc.config
+++ eucalyptus-1.6.2/debian/eucalyptus-sc.config
@@ -0,0 +1,15 @@
+#! /bin/sh
+set -e
+
+. /usr/share/debconf/confmodule
+
+if [ "$1" = configure ] && [ -z "$2" ]; then
+ db_get eucalyptus/cluster-name || true
+ if [ -z "$RET" ]; then
+ db_set eucalyptus/cluster-name "cluster1"
+ fi
+ db_input high eucalyptus/cluster-name || true
+ db_go
+fi
+
+exit 0
--- eucalyptus-1.6.2.orig/debian/uec-component-listener.upstart
+++ eucalyptus-1.6.2/debian/uec-component-listener.upstart
@@ -0,0 +1,12 @@
+# uec-component-listener
+
+description "UEC component listener"
+author "Thierry Carrez "
+
+start on (started eucalyptus-cloud and started eucalyptus-cc)
+stop on (stopping eucalyptus-cloud or stopping eucalyptus-cc)
+
+script
+ [ -f "/var/lib/eucalyptus/registration.lock" ] && { stop; exit 0; }
+ exec start-stop-daemon --start --chuid eucalyptus:eucalyptus --exec /usr/sbin/uec_component_listener
+end script
--- eucalyptus-1.6.2.orig/debian/eucalyptus-network.upstart
+++ eucalyptus-1.6.2/debian/eucalyptus-network.upstart
@@ -0,0 +1,28 @@
+# eucalyptus-network - emit a signal when the network is really ready
+
+description "Eucalyptus network readiness"
+author "Dustin Kirkland "
+
+start on net-device-up
+task
+instance $IFACE
+emits eucalyptus-network-is-ready
+
+script
+ default_route=$(ip route show to exact 0/0)
+ if [ -z "$default_route" ]; then
+ stop
+ exit 0
+ fi
+ default_interface=$(echo $default_route | sed -e 's/^.*dev \([^ ]*\).*$/\1/')
+ addr_withprefix=$(ip addr show label $default_interface scope global | awk '$1 == "inet" { print $2 }')
+ addr=${addr_withprefix%%/*}
+ cat >/etc/eucalyptus/eucalyptus-ipaddr.conf <>"$OUT"
+ fi
+}
+
+made_preseed=
+make_preseed_file () {
+ # Generate a preseed file from this installation suitable for publication by
+ # the cluster controller. The list of questions we copy is largely drawn
+ # from the installation guide.
+
+ if [ "$made_preseed" ]; then
+ return
+ fi
+ made_preseed=1
+
+ OUT=/target/etc/eucalyptus/preseed/preseed.conf
+ mkdir -p "${OUT%/*}"
+ >"$OUT"
+ chroot /target chown eucalyptus:eucalyptus "${OUT#/target}" || true
+ chmod 600 "$OUT"
+
+ cat >>"$OUT" <>"$OUT"
+
+ question d-i mirror/protocol string
+ question d-i mirror/country string
+ question d-i mirror/http/hostname string
+ question d-i mirror/http/directory string
+ question d-i mirror/http/proxy string
+ question d-i mirror/http/mirror select
+ question d-i mirror/suite string
+ question d-i mirror/udeb/suite string
+ question d-i mirror/udeb/components multiselect
+
+ question d-i clock-setup/utc boolean
+ question d-i time/zone string
+ question d-i clock-setup/ntp boolean
+ question d-i clock-setup/ntp-server string
+
+ # TODO partitioning?
+
+ question d-i base-installer/kernel/image string
+ question d-i passwd/root-login boolean
+ question d-i passwd/make-user boolean
+ ROOTPW="$(grep '^root:' /target/etc/shadow 2>/dev/null | head -n1 | cut -d: -f2)"
+ if [ -n "$ROOTPW" ] && [ "x$ROOTPW" != 'x*' ] && [ "x$ROOTPW" != 'x!' ]; then
+ echo "d-i passwd/root-password-crypted password $ROOTPW" >>"$OUT"
+ fi
+ ROOTPW=
+ if db_get passwd/make-user && [ "$RET" = true ]; then
+ question d-i passwd/user-fullname string
+ question d-i passwd/username string
+ if db_get passwd/username && [ -n "$RET" ]; then
+ USERPW="$(grep "^$RET:" /target/etc/shadow 2>/dev/null | head -n1 | cut -d: -f2)"
+ if [ -n "$USERPW" ] && [ "x$USERPW" != 'x*' ] && [ "x$USERPW" != 'x!' ]; then
+ echo "d-i passwd/user-password-crypted password $USERPW" >>"$OUT"
+ fi
+ USERPW=
+ fi
+ question d-i passwd/user-uid string
+ question d-i user-setup/allow-password-weak boolean
+ question d-i user-setup/encrypt-home boolean
+ question d-i passwd/user-default-groups string
+ fi
+
+ question d-i apt-setup/restricted boolean
+ question d-i apt-setup/universe boolean
+ question d-i apt-setup/backports boolean
+ question d-i apt-setup/use_mirror boolean
+ question d-i 'apt-setup/services-select' multiselect
+ question d-i apt-setup/security_host string
+ question d-i apt-setup/security_path string
+ # TODO apt-setup/local*/{repository,comment,source,key}
+ question d-i debian-installer/allow_unauthenticated string
+
+ # Tasks will be set differently during node installation.
+ question d-i pkgsel/upgrade select
+ question d-i pkgsel/language-packs multiselect
+ question d-i pkgsel/update-policy select
+ question popularity-contest popularity-contest/participate boolean
+ question d-i pkgsel/updatedb boolean
+
+ question d-i grub-installer/skip boolean
+ question d-i lilo-installer/skip boolean
+ question d-i grub-installer/only_debian boolean
+ question d-i grub-installer/with_other_os boolean
+ question d-i grub-installer/bootdev string
+ # TODO grub password?
+
+ question d-i finish-install/keep-consoles boolean
+ question d-i finish-install/reboot_in_progress note
+ question d-i cdrom-detect/eject boolean
+ question d-i debian-installer/exit/halt boolean
+ question d-i debian-installer/exit/poweroff boolean
+
+ # This owner is a bit of a cheat, but it does at least mean that the
+ # question will be purged if all eucalyptus packages are purged.
+ case " $components " in
+ *' cluster '*)
+ question eucalyptus-common eucalyptus/cluster-name string
+ ;;
+ esac
+
+ EUCA_HOME="$(chroot /target getent passwd eucalyptus | cut -f6 -d:)"
+ if [ "$EUCA_HOME" ] && [ "${EUCA_HOME#/}" != "$EUCA_HOME" ] && \
+ [ -f "/target$EUCA_HOME/.ssh/id_rsa.pub" ]; then
+ PUBKEY="$(cat "/target$EUCA_HOME/.ssh/id_rsa.pub")"
+ i=1
+ while db_get "eucalyptus/authorized-keys/$i" && [ "$RET" ]; do
+ echo "eucalyptus-common eucalyptus/authorized-keys/$i string $RET" >>"$OUT"
+ i=$(($i + 1))
+ done
+ echo "eucalyptus-common eucalyptus/authorized-keys/$i string $PUBKEY" >>"$OUT"
+ fi
+}
+
+install_parent_ssh_keys () {
+ # Allow SSH authentication by parent components.
+ EUCA_HOME="$(chroot /target getent passwd eucalyptus | cut -f6 -d:)"
+ if [ "$EUCA_HOME" ] && [ "${EUCA_HOME#/}" != "$EUCA_HOME" ]; then
+ i=1
+ while db_get "eucalyptus/authorized-keys/$i" && [ "$RET" ]; do
+ chroot /target mkdir -m700 -p "$EUCA_HOME/.ssh"
+ echo "$RET" >> "/target$EUCA_HOME/.ssh/authorized_keys"
+ i=$(($i + 1))
+ done
+ fi
+}
+
+install_ssh_key () {
+ # Allow the component's SSH key to authenticate to itself.
+ EUCA_HOME="$(chroot /target getent passwd eucalyptus | cut -f6 -d:)"
+ if [ "$EUCA_HOME" ] && [ "${EUCA_HOME#/}" != "$EUCA_HOME" ] && \
+ [ -f "/target$EUCA_HOME/.ssh/id_rsa.pub" ]; then
+ cat "/target$EUCA_HOME/.ssh/id_rsa.pub" \
+ >>"/target/$EUCA_HOME/.ssh/authorized_keys"
+ fi
+ # Add the host's public keys to its own known_hosts
+ if [ -r /target/etc/ssh/ssh_host_rsa_key.pub ]; then
+ pubkey=$(cat /target/etc/ssh/ssh_host_rsa_key.pub)
+ printf "localhost %s\n" "$pubkey" >> /target/etc/ssh/ssh_known_hosts
+ if [ -r /target/etc/hostname ]; then
+ hostname=$(cat /target/etc/hostname)
+ printf "%s %s\n" "$hostname" "$pubkey" >> /target/etc/ssh/ssh_known_hosts
+ fi
+ fi
+}
+
+set_conf_var () {
+ sed -i "s/^\\($1\\)=.*/\\1=\"$2\"/" \
+ /target/etc/eucalyptus/eucalyptus.local.conf
+}
+
+configure_interfaces () {
+ # Configure the public and private interfaces.
+
+ db_get eucalyptus/public-interface
+ public_interface="$RET"
+ set_conf_var VNET_PUBINTERFACE "$public_interface" || true
+
+ db_get eucalyptus/private-interface
+ private_interface="$RET"
+ set_conf_var VNET_PRIVINTERFACE "$private_interface" || true
+
+ if [ "$private_interface" != "$public_interface" ]; then
+ cat >> /target/etc/network/interfaces <> /target/etc/network/interfaces <, 12 Dec 2009
+
+# Current Eucalyptus Major.Minor version
+VER=1.6.2
+DIR=$(mktemp -d)
+cd $DIR
+
+# Grab the Upstream branch
+bzr branch lp:~eucalyptus-maintainers/eucalyptus/1.6.2 upstream
+
+# Get the current revision number
+cd upstream
+REVNO=$(bzr revno) && echo $REVNO
+
+# Upstream currently has it's own debian packaging, which is *not* what we want
+bzr rm debian
+bzr commit -m "remove the upstream debian packaging directory"
+bzr export --root eucalyptus-$VER~bzr$REVNO ../eucalyptus_$VER~bzr$REVNO.orig.tar.gz && ls -halF ../eucalyptus_$VER~bzr$REVNO.orig.tar.gz
+cd ..
+
+# Grab the Ubuntu branch
+bzr branch lp:~ubuntu-core-dev/eucalyptus/ubuntu ubuntu
+cd ubuntu
+
+# Do the Merge
+bzr merge ../upstream
+bzr conflicts
+
+##################################
+# MANUAL STEP: Resolve Conflicts #
+##################################
+
+# Get bugs fixed from upstream bzr log. Sanity check this!!!
+LAST_REVNO=$(head -n 1 debian/changelog | sed "s/^.*bzr//" | sed "s/-.*$//") && echo $LAST_REVNO
+cd ../upstream
+BUGS_FIXED=$(bzr log --include-merges | egrep -B 999999999 "^revno: $LAST_REVNO$" | egrep "\#[0-9]{6}" | sed "s/\(#[0-9]\+\)/LP: \1\n/g" | sed "s/^.*LP: / - LP: /g" | egrep "\#[0-9]{6}" | sort -u)
+echo " * Upstream merge fixes:"
+echo "$BUGS_FIXED"
+echo
+
+# Update new changelog
+cd ../ubuntu
+dch -i
+# Edit bzr $REVNO, and update -0ubuntu1
+# Add $BUGS_FIXED info, note what's changed
+
+# Do an intermediate commit, to separate the upstream merge changes
+# from our packaging changes
+debcommit
+
+# Test the source build
+bzr bd -S
+
+# Test the binary build
+bzr bd
+
+# Build your source package
+bzr bd -S
+
+##############################
+# MANUAL STEP: Test Packages #
+##############################
+
+# Update the changelog for release
+dch --release lucid
+
+# Commit and tag the release
+debcommit --release
+bzr push lp:~ubuntu-core-dev/eucalyptus/ubuntu
+# Or to the private branch
+#bzr push lp:~eucalyptus-maintainers/eucalyptus-devel/ubuntu-lucid
+
+# And upload!
+dput ../eucalyptus*_source.changes
+# Or to the private PPA
+#dput ppa:ubuntu-eucalyptus/devel ../eucalyptus*_source.changes
--- eucalyptus-1.6.2.orig/debian/eucalyptus-sc.prerm
+++ eucalyptus-1.6.2/debian/eucalyptus-sc.prerm
@@ -0,0 +1,7 @@
+#!/bin/sh -e
+
+if [ "$1" = "remove" ]; then
+ stop eucalyptus-sc-publication || true
+fi
+
+#DEBHELPER#
--- eucalyptus-1.6.2.orig/debian/eucalyptus-cc.postinst
+++ eucalyptus-1.6.2/debian/eucalyptus-cc.postinst
@@ -0,0 +1,79 @@
+#!/bin/sh -e
+
+. /usr/share/debconf/confmodule
+
+if [ "$1" = "configure" ]
+then
+ if ! dpkg-statoverride --list /var/lib/eucalyptus/CC >/dev/null 2>&1; then
+ chown eucalyptus:eucalyptus /var/lib/eucalyptus/CC
+ chmod 700 /var/lib/eucalyptus/CC
+ fi
+ if ! dpkg-statoverride --list /var/lib/eucalyptus/keys >/dev/null 2>&1; then
+ chown eucalyptus:eucalyptus /var/lib/eucalyptus/keys
+ chmod 700 /var/lib/eucalyptus/keys
+ fi
+ if [ -z "$2" ]
+ then
+ DEBCONF_KEY_MAP="eucalyptus/mode=VNET_MODE eucalyptus/subnet=VNET_SUBNET eucalyptus/netmask=VNET_NETMASK eucalyptus/dns=VNET_DNS eucalyptus/addrspernet=VNET_ADDRSPERNET eucalyptus/publicips=VNET_PUBLICIPS eucalyptus/cloud-address=VNET_CLOUDIP"
+ conf_tmp=$(tempfile)
+ for mapping in $DEBCONF_KEY_MAP
+ do
+ debconf_key="${mapping%=*}"
+ conf_key="${mapping#*=}"
+ db_get $debconf_key
+ if [ "$RET" ]; then
+ echo "$conf_key=\"$RET\"" >> $conf_tmp
+ fi
+ done
+ euca_conf --import-conf $conf_tmp
+ rm -f $conf_tmp
+
+ db_get eucalyptus/cluster-name
+ if [ "$RET" ]; then
+ echo "CC_NAME=\"$RET\"" >> /etc/eucalyptus/eucalyptus-cc.conf
+ fi
+ touch /var/lib/eucalyptus/nodes.list
+ chown eucalyptus /var/lib/eucalyptus/nodes.list
+ fi
+
+ if dpkg --compare-versions "$2" lt 1.5~bzr212-0ubuntu2
+ then
+ EUCA_HOME=`getent passwd eucalyptus | cut -f6 -d:`
+ if ! [ -d "$EUCA_HOME/.ssh" ]
+ then
+ mkdir -p "$EUCA_HOME/.ssh"
+ chown eucalyptus "$EUCA_HOME/.ssh"
+ chmod 755 "$EUCA_HOME/.ssh"
+ fi
+ if ! [ -f "$EUCA_HOME/.ssh/id_rsa" ]
+ then
+ su eucalyptus -c "ssh-keygen -N '' -t rsa -f $EUCA_HOME/.ssh/id_rsa"
+ fi
+ fi
+
+ if [ -n "$2" ] && dpkg --compare-versions "$2" lt 1.6~bzr588-0ubuntu5
+ then
+ for s in eucalyptus-cc eucalyptus-walrus eucalyptus-cloud; do
+ update-rc.d -f ${s} remove
+ done
+ fi
+
+ if [ -n "$2" ] && dpkg --compare-versions "$2" lt 1.6.2~bzr1176-0ubuntu2
+ then
+ if [ -f "/etc/eucalyptus/eucalyptus.local.conf" ]; then
+ . /etc/eucalyptus/eucalyptus.local.conf
+ if [ -n "$NODES" ]; then
+ echo "$NODES" >> /var/lib/eucalyptus/nodes.list
+ fi
+ chown eucalyptus /var/lib/eucalyptus/nodes.list
+ fi
+ fi
+
+ if [ -e /etc/init/eucalyptus-cc.conf ]; then
+ start eucalyptus-cc || :
+ fi
+fi
+
+db_stop
+
+#DEBHELPER#
--- eucalyptus-1.6.2.orig/debian/eucalyptus-common.postrm
+++ eucalyptus-1.6.2/debian/eucalyptus-common.postrm
@@ -0,0 +1,22 @@
+#!/bin/sh -e
+
+case "$1" in
+purge)
+ dpkg-statoverride --remove /usr/lib/eucalyptus/euca_rootwrap || true
+ rm -rf /var/lib/eucalyptus/.cache \
+ /var/lib/eucalyptus/.ssh \
+ /var/lib/eucalyptus/db \
+ /var/lib/eucalyptus/keys \
+ /var/lib/eucalyptus/volumes \
+ /var/log/eucalyptus/axis2c.log \
+ /var/log/eucalyptus/cloud-*.log* \
+ /etc/eucalyptus/eucalyptus.local.conf*
+ ;;
+remove)
+ if [ -e /etc/init/eucalyptus.conf ]; then
+ stop eucalyptus || :
+ fi
+ ;;
+esac
+
+#DEBHELPER#
--- eucalyptus-1.6.2.orig/debian/eucalyptus-nc.prerm
+++ eucalyptus-1.6.2/debian/eucalyptus-nc.prerm
@@ -0,0 +1,7 @@
+#!/bin/sh -e
+
+if [ "$1" = "remove" ]; then
+ stop eucalyptus-nc-publication || true
+fi
+
+#DEBHELPER#
--- eucalyptus-1.6.2.orig/debian/eucalyptus-udeb.postinst
+++ eucalyptus-1.6.2/debian/eucalyptus-udeb.postinst
@@ -0,0 +1,294 @@
+#! /bin/sh
+set -e
+
+. /usr/share/debconf/confmodule
+. /lib/preseed/preseed.sh
+
+NL='
+'
+
+install_mode_choices () {
+ local choices_c=
+ local choices=
+ for choice_c; do
+ choices_c="${choices_c:+$choices_c, }$choice_c"
+ db_metaget "eucalyptus/text/$choice_c" description
+ choices="${choices:+$choices, }$RET"
+ done
+ db_subst eucalyptus/install-mode CHOICES_C "$choices_c"
+ db_subst eucalyptus/install-mode CHOICES "$choices"
+}
+
+install_mode_default () {
+ db_fget eucalyptus/install-mode seen
+ if [ "$RET" = false ]; then
+ db_set eucalyptus/install-mode "$1"
+ fi
+}
+
+set_question () {
+ echo "$1 $2 $3 $4" >>"$logfile"
+ if ! db_fget "$2" seen; then
+ db_register debian-installer/dummy "$2"
+ db_subst "$2" ID "$2"
+ db_fget "$2" seen
+ fi
+ if [ "$RET" = false ]; then
+ db_set "$2" "$4"
+ db_fset "$2" seen true
+ fi
+}
+
+get_default_interface () {
+ db_get netcfg/choose_interface || return 1
+ default_interface="${RET%%:*}"
+ # Work around netcfg/choose_interface not always being set:
+ # https://bugs.launchpad.net/ubuntu/+source/netcfg/+bug/430820
+ if [ -z "$default_interface" ]; then
+ default_interface=eth0
+ fi
+}
+
+choose_interfaces () {
+ # Choose the public and private interfaces.
+
+ get_default_interface || return
+ # netcfg's default interface is by definition (we hope) public.
+ db_get eucalyptus/public-interface
+ if [ -z "$RET" ]; then
+ db_set eucalyptus/public-interface "$default_interface"
+ fi
+
+ # Cloned-and-hacked from netcfg/netcfg-common.c:get_all_ifs().
+ # /sys/class/net is easier to use from shell, though.
+ interfaces=
+ num_interfaces=0
+ for interface in /sys/class/net/*; do
+ [ -d "$interface" ] || continue
+ base="${interface##*/}"
+ # Ignore the loopback
+ [ "$base" != lo ] || continue
+ # Ignore tunnel devices
+ [ "${base#sit}" = "$base" ] || continue
+ # Ignore raw 802.11 devices
+ iftype="$(cat "$interface/type" 2>/dev/null)"
+ case $iftype in
+ 801|802|803)
+ continue
+ ;;
+ esac
+ interfaces="${interfaces:+$interfaces, }${base##*/}"
+ num_interfaces="$(($num_interfaces + 1))"
+ done
+
+ if [ "$num_interfaces" -eq 0 ]; then
+ db_set eucalyptus/private-interface "$default_interface"
+ elif [ "$num_interfaces" -eq 1 ]; then
+ db_set eucalyptus/private-interface "$interfaces"
+ else
+ db_get eucalyptus/private-interface
+ if [ -z "$RET" ]; then
+ db_set eucalyptus/private-interface \
+ "$default_interface"
+ fi
+ db_subst eucalyptus/private-interface INTERFACES "$interfaces"
+ db_subst eucalyptus/private-interface \
+ DEFAULT_INTERFACE "$default_interface"
+ db_input high eucalyptus/private-interface || true
+ db_go || true
+ fi
+}
+
+cloud_preseed () {
+ # busybox wget doesn't support HTTPS, and so neither does
+ # preseed_location. Work around this.
+ local tmp="$(mktemp -t eucalyptus-udeb.XXXXXX)"
+ logger -t eucalyptus-udeb "Loading cloud preseed file from $1"
+ wget.gnu -q --no-check-certificate -O "$tmp" "$1" || return $?
+ preseed_location "file://$tmp"
+ rm -f "$tmp"
+}
+
+# need this in several places, so check up-front
+clusters="$(euca_find_component cluster)"
+if [ "$clusters" ]; then
+ num_clusters="$(echo "$clusters" | wc -l)"
+else
+ num_clusters=0
+fi
+
+clouds="$(euca_find_component cloud)"
+if [ "$clouds" ]; then
+ num_clouds="$(echo "$clouds" | wc -l)"
+else
+ num_clouds=0
+fi
+
+if [ "$num_clouds" -gt 1 ]; then
+ IFS_SAVE="$IFS"
+ choices_c=
+ choices=
+ IFS="$NL"
+ for line in $clouds; do
+ name="${line%% *}"
+ ipport="${line#* }"
+ choices_c="${choices_c:+$choices_c, }$ipport"
+ choices="${choices:+$choices, }$name ($ipport)"
+ done
+ IFS="$IFS_SAVE"
+ db_subst 'eucalyptus/cloud-address-select' CHOICES_C "$choices_c"
+ db_subst 'eucalyptus/cloud-address-select' CHOICES "$choices"
+ db_input critical 'eucalyptus/cloud-address-select' || true
+ db_go
+ db_get 'eucalyptus/cloud-address-select'
+ cloud="$RET"
+elif [ "$num_clouds" = 1 ]; then
+ cloud="${clouds#* }"
+else
+ cloud=
+fi
+if [ -z "$cloud" ]; then
+ db_input high eucalyptus/cloud-address || true
+ db_go || true
+ db_get eucalyptus/cloud-address
+ cloud="$RET"
+fi
+
+if [ -z "$cloud" ]; then
+ install_mode_choices cloud walrus cluster storage node
+ install_mode_default 'cloud, walrus, cluster, storage'
+ db_metaget eucalyptus/install-mode-default-cloud description
+else
+ walruses="$(euca_find_component walrus)"
+ if [ "$walruses" ]; then
+ # clusters discovered above
+ if [ "$clusters" ]; then
+ storages="$(euca_find_component storage)"
+ if [ "$storages" ]; then
+ install_mode_choices node cluster storage
+ install_mode_default node
+ db_metaget eucalyptus/install-mode-default-node description
+ else
+ install_mode_choices storage cluster node
+ install_mode_default storage
+ db_metaget eucalyptus/install-mode-default-storage description
+ fi
+ else
+ install_mode_choices cluster storage node
+ install_mode_default 'cluster, storage'
+ db_metaget eucalyptus/install-mode-default-cluster description
+ fi
+ else
+ install_mode_choices walrus cluster storage node
+ install_mode_default walrus
+ db_metaget eucalyptus/install-mode-default-walrus description
+ fi
+fi
+db_subst eucalyptus/install-mode DEFAULT_TEXT "$RET"
+while :; do
+ db_input critical eucalyptus/install-mode || true
+ db_go
+ db_get eucalyptus/install-mode
+ components="$(echo "$RET" | sed 's/, */ /g')"
+
+ # awkward set-membership checks
+ case " $components " in
+ *' storage '*)
+ case " $components " in
+ *' cluster '*)
+ ;;
+ *)
+ if [ -z "$clusters" ]; then
+ db_input critical eucalyptus/sc-without-cc || true
+ db_go || true
+ continue
+ fi
+ ;;
+ esac
+ esac
+
+ break
+done
+
+tasksel=
+cloud_preseeded=
+for component in $components; do
+ case $component in
+ cloud)
+ tasksel="${tasksel:+$tasksel, }eucalyptus-cloud"
+
+ # needs to be preseeded in /target
+ echo 'postfix postfix/main_mailer_type select Internet Site' >> "$logfile"
+ ;;
+
+ walrus)
+ tasksel="${tasksel:+$tasksel, }eucalyptus-walrus"
+
+ if [ "$cloud" ] && [ -z "$cloud_preseeded" ]; then
+ cloud_preseed "https://${cloud%:*}:8443/preseed/preseed.conf" || true
+ cloud_preseeded=1
+ fi
+ ;;
+
+ cluster)
+ tasksel="${tasksel:+$tasksel, }eucalyptus-cluster"
+
+ if [ "$cloud" ]; then
+ echo "eucalyptus-cc eucalyptus/cloud-address string ${cloud%:*}" >> "$logfile"
+ fi
+
+ if [ "$cloud" ] && [ -z "$cloud_preseeded" ]; then
+ cloud_preseed "https://${cloud%:*}:8443/preseed/preseed.conf" || true
+ cloud_preseeded=1
+ fi
+
+ choose_interfaces
+ ;;
+
+ storage)
+ tasksel="${tasksel:+$tasksel, }eucalyptus-storage"
+
+ if [ "$cloud" ] && [ -z "$cloud_preseeded" ]; then
+ cloud_preseed "https://${cloud%:*}:8443/preseed/preseed.conf" || true
+ cloud_preseeded=1
+ fi
+ ;;
+
+ node)
+ tasksel="${tasksel:+$tasksel, }eucalyptus-node"
+
+ if [ "$num_clusters" -gt 1 ]; then
+ IFS_SAVE="$IFS"
+ choices_c=
+ choices=
+ IFS="$NL"
+ for line in $clusters; do
+ name="${line%% *}"
+ ipport="${line#* }"
+ choices_c="${choices_c:+$choices_c, }$ipport"
+ choices="${choices:+$choices, }$name ($ipport)"
+ done
+ IFS="$IFS_SAVE"
+ db_subst eucalyptus/cluster-address CHOICES_C "$choices_c"
+ db_subst eucalyptus/cluster-address CHOICES "$choices"
+ db_input critical eucalyptus/cluster-address || true
+ db_go
+ db_get eucalyptus/cluster-address
+ cluster="$RET"
+ elif [ "$num_clusters" = 1 ]; then
+ cluster="${clusters#* }"
+ else
+ cluster=
+ fi
+
+ if [ "$cluster" ]; then
+ # node-preseed for compatibility with Ubuntu 9.10
+ preseed_location "http://$cluster/preseed/preseed.conf" || \
+ preseed_location "http://$cluster/node-preseed" || true
+ fi
+ ;;
+ esac
+done
+set_question tasksel tasksel/first multiselect "$tasksel"
+
+exit 0
--- eucalyptus-1.6.2.orig/debian/eucalyptus-common.preinst
+++ eucalyptus-1.6.2/debian/eucalyptus-common.preinst
@@ -0,0 +1,73 @@
+#!/bin/sh -e
+
+case $1 in
+ install|upgrade)
+ if dpkg --compare-versions "$2" lt 1.6.2~bzr1124-0ubuntu2 && [ -f /etc/eucalyptus/eucalyptus.conf ]; then
+ # When upgrading from existing installations, we need to mv the user's
+ # existing eucalyptus configuration to the new .local configuration file.
+ mv /etc/eucalyptus/eucalyptus.conf /etc/eucalyptus/eucalyptus.local.conf
+ # We now install a cleaner conffile eucalyptus.conf.
+ # This is a duplication of debian/eucalyptus.conf. Care should be taken to keep
+ # the two in sync.
+ cat >/etc/eucalyptus/eucalyptus.conf <"
+
+# We would like to start on (started libvirt-bin and started eucalyptus),
+# however, we CANNOT do this until Bug #447654 is fixed in Upstart.
+start on started libvirt-bin
+stop on stopping libvirt-bin
+
+respawn
+
+# These must be set in the apache2 environment
+env HTTPD_CONF=/var/run/eucalyptus/httpd-nc.conf
+env EUCALYPTUS=/
+env AXIS2C_HOME=/etc/eucalyptus/axis2
+env LD_LIBRARY_PATH="$AXIS2C_HOME/lib:$AXIS2C_HOME/modules/rampart:$EUCALYPTUS/usr/lib/eucalyptus:$LD_LIBRARY_PATH"
+
+pre-start script
+ [ -x /usr/sbin/euca_test_nc ] || { stop; exit 0; }
+ . /etc/eucalyptus/eucalyptus.conf
+ . /etc/eucalyptus/eucalyptus.local.conf
+ rm -f /dev/shm/sem.eucalyptus-nc* /dev/shm/sem.eucalyptus-st*
+ iptables -L -n >/dev/null 2>&1
+ euca_test_nc $HYPERVISOR > /var/log/eucalyptus/euca_test_nc.log 2>&1 || exit 1
+ modprobe aoe
+ mkdir -p /var/run/eucalyptus
+ sed -e "s|EUCALYPTUS|$EUCALYPTUS|" \
+ -e "s|AXIS2C_HOME|$AXIS2C_HOME|" \
+ -e "s|\(ServerRoot\).*|\1 /|" \
+ -e "s|EUCA_USER|$EUCA_USER|" \
+ -e "s|\(Listen\).*|\1 $NC_PORT|" \
+ -e "s|\(PidFile\).*|\1 /var/run/eucalyptus/eucalyptus-nc.pid|" \
+ -e "s|\(Allow from\).*|\1 all|" \
+ -e "s|\(ErrorLog\).*|\1 /var/log/eucalyptus/httpd-nc_error_log|" /etc/eucalyptus/httpd.conf > $HTTPD_CONF
+
+ if [ -e /usr/lib/apache2/modules/mod_authz_host.so ]; then
+ echo "LoadModule authz_host_module /usr/lib/apache2/modules/mod_authz_host.so" >> $HTTPD_CONF
+ fi
+end script
+
+exec apache2 -f $HTTPD_CONF -D FOREGROUND
+
+post-stop script
+ rm -f /dev/shm/sem.eucalyptus-nc* /dev/shm/sem.eucalyptus-st*
+end script
--- eucalyptus-1.6.2.orig/debian/preseed.xml
+++ eucalyptus-1.6.2/debian/preseed.xml
@@ -0,0 +1,8 @@
+
+ /preseed
+ /etc/eucalyptus/preseed/
+
+ org.mortbay.jetty.servlet.DefaultServlet
+ /
+
+
--- eucalyptus-1.6.2.orig/debian/README.source
+++ eucalyptus-1.6.2/debian/README.source
@@ -0,0 +1,2 @@
+This package uses quilt to manage patches; see:
+ /usr/share/doc/quilt/README.source
--- eucalyptus-1.6.2.orig/debian/eucalyptus-ipaddr.conf
+++ eucalyptus-1.6.2/debian/eucalyptus-ipaddr.conf
@@ -0,0 +1,26 @@
+# This file should be sourced by scripts that need access to
+# the IP address of the cloud controller, such that the (albeit ugly)
+# logic is in a single place, and consistent.
+
+default_route=$(ip route show to exact 0/0)
+default_interface=$(echo $default_route | sed -e 's/^.*dev \([^ ]*\).*$/\1/')
+addr_withprefix=$(ip addr show label $default_interface scope global | awk '$1 == "inet" { print $2 }')
+addr=${addr_withprefix%%/*}
+
+
+# In the default UEC, all of these components live on the same system.
+#
+# It is possible, however, to install each of (cloud, cc, walrus, sc, cloud)
+# on separate hosts. The admin must ensure that the public key of
+# eucalyptus@cloud is installed on each of the systems to be registered.
+#
+# This sourcable file can be used to statically configure these IPs, or use
+# logic to discover the IPs of these services.
+#
+# Note that CC_IP_ADDR and SC_IP_ADDR can be a quoted, whitespace separated
+# list of IP addresses.
+
+CC_IP_ADDR="$addr"
+WALRUS_IP_ADDR="$addr"
+SC_IP_ADDR="$addr"
+CLOUD_IP_ADDR="$addr"
--- eucalyptus-1.6.2.orig/debian/eucalyptus-walrus.postrm
+++ eucalyptus-1.6.2/debian/eucalyptus-walrus.postrm
@@ -0,0 +1,10 @@
+#!/bin/sh -e
+
+case "$1" in
+purge)
+ rm -rf /var/log/eucalyptus/walrus-stats.log* \
+ /var/lib/eucalyptus/bukkits
+ ;;
+esac
+
+#DEBHELPER#
--- eucalyptus-1.6.2.orig/debian/eucalyptus-udeb.templates
+++ eucalyptus-1.6.2/debian/eucalyptus-udeb.templates
@@ -0,0 +1,122 @@
+Template: debian-installer/eucalyptus-udeb/title
+Type: text
+# Main menu entry
+_Description: Select cloud installation mode
+
+Template: eucalyptus/install-mode
+Type: multiselect
+Choices-C: ${CHOICES_C}
+Choices: ${CHOICES}
+#flag:translate!:2
+_Description: Cloud installation mode:
+ ${DEFAULT_TEXT}
+
+Template: eucalyptus/text/cloud
+Type: text
+# Entry in "Cloud installation mode:" menu
+_Description: Cloud controller
+
+Template: eucalyptus/text/walrus
+Type: text
+# Entry in "Cloud installation mode:" menu
+_Description: Walrus storage service
+
+Template: eucalyptus/text/cluster
+Type: text
+# Entry in "Cloud installation mode:" menu
+_Description: Cluster controller
+
+Template: eucalyptus/text/storage
+Type: text
+# Entry in "Cloud installation mode:" menu
+_Description: Storage controller
+
+Template: eucalyptus/text/node
+Type: text
+# Entry in "Cloud installation mode:" menu
+_Description: Node controller
+
+Template: eucalyptus/install-mode-default-cloud
+Type: text
+_Description: No Eucalyptus cloud controller found; install a cloud controller.
+ The default is to install all Eucalyptus components aside from the node
+ controller; this is reasonable for small clouds. Larger installations
+ may wish to install different components on different machines for
+ reasons of network architecture or performance.
+
+Template: eucalyptus/install-mode-default-walrus
+Type: text
+_Description: A Eucalyptus cloud controller was found, but no Walrus storage service.
+ This installation will default to installing Walrus.
+ If you wish, you may also install other Eucalyptus components on this
+ machine.
+
+Template: eucalyptus/install-mode-default-cluster
+Type: text
+_Description: No Eucalyptus cluster controller was found.
+ This installation will default to installing a new cluster with a local
+ storage controller.
+ If this is a mistake and you already have cluster and storage controllers
+ in place, deselect these components and select "Node controller" instead.
+
+Template: eucalyptus/install-mode-default-storage
+Type: text
+_Description: A Eucalyptus cluster controller was found, but no storage controller.
+ Each cluster controller must be paired with a storage controller.
+ This installation will default to installing a new storage controller.
+
+Template: eucalyptus/install-mode-default-node
+Type: text
+_Description: There is already a Eucalyptus cluster controller.
+ This installation will default to installing a new computing node.
+ If you want to create another cluster, deselect "Node" and select
+ "Cluster controller" and optionally "Storage controller" instead.
+
+Template: eucalyptus/sc-without-cc
+Type: error
+_Description: Cannot install storage controller without cluster controller
+ Each storage controller must be paired with a cluster controller, but no
+ cluster controller was found on your network and you did not choose to
+ install one on this machine. You should probably install both a cluster
+ controller and a storage controller.
+
+Template: eucalyptus/cloud-address
+Type: string
+_Description: Cloud controller address:
+ No Eucalyptus cloud controller was found on your network. If this is a
+ mistake and there is in fact already a cloud controller, enter its hostname
+ or IP address here. Otherwise, leave this blank.
+
+Template: eucalyptus/cloud-address-select
+Type: select
+Choices-C: ${CHOICES_C}
+Choices: ${CHOICES}
+_Description: Cloud controller:
+ More than one cloud controller is available on your network. Select which
+ cloud you want to join.
+
+Template: eucalyptus/cluster-address
+Type: select
+Choices-C: ${CHOICES_C}
+Choices: ${CHOICES}
+_Description: Cluster controller:
+ More than one cluster controller is available on your network. Select which
+ cluster you want this node to join.
+
+Template: eucalyptus/public-interface
+Type: string
+Description: for internal use; can be preseeded
+ Network interface for communication with the public network.
+
+Template: eucalyptus/private-interface
+Type: select
+Choices: ${INTERFACES}
+_Description: Network interface for communication with nodes:
+ More than one network interface is available on this system. The primary
+ interface configured during installation (${DEFAULT_INTERFACE}) will be
+ used for communication with the public network. If your computing nodes are
+ on a private network, then you will normally use a different network
+ interface for communication with computing nodes.
+ .
+ Select the network interface that is physically attached to the same
+ network as your computing nodes.
--- eucalyptus-1.6.2.orig/debian/changelog
+++ eucalyptus-1.6.2/debian/changelog
@@ -0,0 +1,1900 @@
+eucalyptus (1.6.2-0ubuntu12) lucid; urgency=low
+
+ * Cherry-pick merge from upstream 1.6.2, now on revision 1208
+ - LP: #532682 - fix long, pending instances that go straight to
+ 'terminated'
+
+ -- Dustin Kirkland Mon, 08 Mar 2010 17:34:24 -0600
+
+eucalyptus (1.6.2-0ubuntu11) lucid; urgency=low
+
+ * Cherry-pick merge from upstream 1.6.2, now on revision 1207
+ - LP: #532938: fix restarting the cloud controller while instances
+ are pending, which was causing incorrect address allocation state
+ * debian/eucalyptus-nc.dirs, debian/eucalyptus-nc.postinst: LP: #519653
+ - ensure that the instance directories are created and owned by
+ eucalyptus
+ * eucalyptus-cc.eucalyptus-cc-publication.upstart,
+ eucalyptus-nc.eucalyptus-nc-publication.upstart,
+ eucalyptus-sc.eucalyptus-sc-publication.upstart,
+ eucalyptus-walrus.eucalyptus-walrus-publication.upstart: LP: #534271
+ - stop publication jobs on run-level [!2345], fixes issue where
+ publication respawning delays shutdown
+
+ -- Dustin Kirkland Mon, 08 Mar 2010 14:23:53 -0600
+
+eucalyptus (1.6.2-0ubuntu10) lucid; urgency=low
+
+ * Cherry-pick merge from upstream 1.6.2 from revision 1199 to 1206,
+ affecting:
+ clc/modules/cluster-manager/src/main/java/edu/ucsb/eucalyptus/cloud/cluster/ConsoleOutputCallback.java,
+ clc/modules/cluster-manager/src/main/java/edu/ucsb/eucalyptus/cloud/cluster/VmInstance.java,
+ clc/modules/image-manager/src/main/java/edu/ucsb/eucalyptus/cloud/ws/ImageManager.java,
+ clc/modules/image-manager/src/main/java/edu/ucsb/eucalyptus/cloud/ws/VolumeManager.java,
+ clc/modules/storage-controller/src/main/java/edu/ucsb/eucalyptus/storage/LVM2Manager.java,
+ tools/euca_conf.in
+ * This merge is expected to fix:
+ - LP: #526506 - fix volume attach to /dev/sda
+ - LP: #525989 - improve handling of non-ramdisk images
+ - LP: #531536 - handle get-console-output better
+
+ -- Dustin Kirkland Fri, 05 Mar 2010 09:30:29 -0600
+
+eucalyptus (1.6.2-0ubuntu9) lucid; urgency=low
+
+ * debian/registration/uec_component_listener.c:
+ - Register a SIGCHLD handler to take care of dead children (LP: #531899)
+ - Do not create unnecessary child processes to call non-existent scripts
+
+ -- Thierry Carrez Fri, 05 Mar 2010 12:13:19 +0100
+
+eucalyptus (1.6.2-0ubuntu8) lucid; urgency=low
+
+ * debian/eucalyptus-udeb.postinst: Fix regression in default install
+ choices introduced at rev887 (LP: #526461)
+
+ -- Thierry Carrez Thu, 04 Mar 2010 11:15:25 +0100
+
+eucalyptus (1.6.2-0ubuntu7) lucid; urgency=low
+
+ [ Dustin Kirkland ]
+ * tools/euca_conf.in: fix manual node registration with rsync, LP: #530942
+ - fix one stray 'rsync', replace with $RSYNC
+ - use sudo -u $EUCA_USER to match (working) behavior with scp
+ - use local $RSYNC_RSH variable, rather than exporting to the environment
+ * eucalyptus-cc.templates, eucalyptus-nc.config, eucalyptus-nc.templates,
+ eucalyptus-sc.templates: fix the default cluster name 'cluster1', as
+ this was not getting populated in the -nc if the default cluster name
+ was accepted on the CC, LP: #530937
+
+ [ Thierry Carrez ]
+ * Fixed eucalyptus-nc.templates so that eucalyptus-nc postinst doesn't fail
+ * eucalyptus-udeb.*: Preseed detected cloud for the CC installer to pick
+ it up and set VNET_CLOUDIP in separated CC case (LP: #527648)
+
+ -- Thierry Carrez Wed, 03 Mar 2010 14:02:24 +0100
+
+eucalyptus (1.6.2-0ubuntu6) lucid; urgency=low
+
+ * debian/eucalyptus-cc.config, debian/eucalyptus-udeb.finish-install,
+ tools/euca_conf.in: continuation of previous fixes to LP: #527648;
+ must add VNET_CLOUDIP to euca_conf (should send this upstream)
+
+ -- Dustin Kirkland Fri, 26 Feb 2010 16:19:56 -0600
+
+eucalyptus (1.6.2-0ubuntu5) lucid; urgency=low
+
+ [ Colin Watson ]
+ * Preseed postfix/main_mailer_type on the cloud controller, not the
+ cluster controller (LP: #455746).
+
+ [ Dustin Kirkland ]
+ * debian/eucalyptus-cc.postinst, debian/eucalyptus-udeb.finish-install,
+ debian/eucalyptus-cc.templates, debian/eucalyptus-udeb.postinst:
+ - Have the CLC add it's IP address to the served preseed file, such
+ the CC can pick it up and write it to eucalyptus.local.conf
+ as the required VNET_CLOUDIP value (on separated CC, CLC installs),
+ LP: #527648
+
+ -- Dustin Kirkland Fri, 26 Feb 2010 11:41:45 -0600
+
+eucalyptus (1.6.2-0ubuntu4) lucid; urgency=low
+
+ [ Colin Watson ]
+ * Preseed postfix/main_mailer_type to "Internet Site" for cluster
+ controller installations (LP: #455746).
+
+ [ Scott Moser ]
+ * only show ramdisk-id in metadata service if present for booted
+ instance, LP: #526805
+
+ -- Thierry Carrez Wed, 24 Feb 2010 10:33:49 +0100
+
+eucalyptus (1.6.2-0ubuntu3) lucid; urgency=low
+
+ [ Thierry Carrez ]
+ * clc/modules/cluster-manager/src/main/java/edu/ucsb/eucalyptus/cloud/cluster/VmInstance.java:
+ fix incomplete ephemeral block device mapping path, LP: #525675
+
+ -- Dustin Kirkland Mon, 22 Feb 2010 14:09:26 -0600
+
+eucalyptus (1.6.2-0ubuntu2) lucid; urgency=low
+
+ [ Thierry Carrez ]
+ * debian/registration/node: Accept "clustername node #2" and next ones into
+ clustername (LP: #523826)
+
+ [ Dustin Kirkland ]
+ * debian/eucalyptus-url: improve format
+ * util/wrappers.conf: update for powernap-now
+
+ -- Dustin Kirkland Thu, 18 Feb 2010 14:04:21 -0600
+
+eucalyptus (1.6.2-0ubuntu1) lucid; urgency=low
+
+ * Eucalyptus upstream has officially released 1.6.2 at bzr 1199;
+ update our versioning accordingly
+
+ -- Dustin Kirkland Tue, 16 Feb 2010 14:30:41 -0600
+
+eucalyptus (1.6.2~bzr1199-0ubuntu1) lucid; urgency=low
+
+ * Merge from upstream bzr revision
+
+ -- Dustin Kirkland Mon, 15 Feb 2010 16:16:55 -0600
+
+eucalyptus (1.6.2~bzr1189-0ubuntu2) lucid; urgency=low
+
+ * Make node ask to be registered in a specific cluster (LP: #515812):
+ - debian/eucalyptus-nc.postinst: Store target cluster name, if any
+ - debian/eucalyptus-nc.eucalyptus-nc-publication.upstart: Use stored target
+ cluster name in node publication
+ - debian/registration/node: Only register if we are on target cluster
+
+ -- Thierry Carrez Mon, 15 Feb 2010 17:49:07 +0100
+
+eucalyptus (1.6.2~bzr1189-0ubuntu1) lucid; urgency=low
+
+ [ Thierry Carrez ]
+ * debian/rules: Start publication jobs on package install (LP: #504326)
+ * debian/*publication.upstart: Do not advertise Walrus, SC, CC or NC if
+ eucalyptus authorized_keys is missing, since autoregistration would then
+ partially fail (LP: #513722)
+
+ [ Dustin Kirkland ]
+ * Merge from upstream bzr revision, should fix:
+ - LP: #453416 - fix metadata subdirectory lists
+ - LP: #513842 - fix metadata ephemeral verbage
+
+ -- Dustin Kirkland Thu, 11 Feb 2010 16:32:06 -0600
+
+eucalyptus (1.6.2~bzr1180-0ubuntu2) lucid; urgency=low
+
+ * debian/eucalyptus-common.install: install bash completion information,
+ LP: #458203
+
+ -- Dustin Kirkland Wed, 10 Feb 2010 08:58:15 -0600
+
+eucalyptus (1.6.2~bzr1180-0ubuntu1) lucid; urgency=low
+
+ * Merge from upstream bzr revision, should fix:
+ - LP: #517769 - fix bucket acl server internal error
+
+ -- Dustin Kirkland Mon, 08 Feb 2010 12:42:18 -0600
+
+eucalyptus (1.6.2~bzr1176-0ubuntu4) lucid; urgency=low
+
+ * debian/eucalyptus-sc.config: Set default cluster name for SC
+ if not set.
+
+ -- Thierry Carrez Fri, 05 Feb 2010 14:34:44 -0800
+
+eucalyptus (1.6.2~bzr1176-0ubuntu3) lucid; urgency=low
+
+ * eucalyptus-sc.postinst, eucalyptus-sc.postrm,
+ eucalyptus-walrus.postinst: mkdir/chown the bukkits and volumes
+ folders, and purge them correctly
+
+ -- Dustin Kirkland Fri, 05 Feb 2010 13:24:02 -0800
+
+eucalyptus (1.6.2~bzr1176-0ubuntu2) lucid; urgency=low
+
+ [ Dustin Kirkland ]
+ * debian/eucalyptus-cloud.postinst: gracefully handle non-existant
+ index.html
+
+ [ Thierry Carrez ]
+ * Use a separate file for NODES, make eucalyptus-cc and euca_conf use it.
+ * Run uec-component-listener as the eucalyptus user (LP: #516373)
+
+ -- Thierry Carrez Fri, 05 Feb 2010 12:16:02 -0800
+
+eucalyptus (1.6.2~bzr1176-0ubuntu1) lucid; urgency=low
+
+ * Fix version naming of this upload to match the correct
+ bzr revision
+ * Merge from upstream bzr revision, should fix:
+ - LP: #475354 - send correct hostname in metadata service
+ - LP: #461464 - fix ec2 tools compatibility
+
+ -- Dustin Kirkland Fri, 05 Feb 2010 10:16:46 -0800
+
+eucalyptus (1.6.2~bzr1166-0ubuntu5) lucid; urgency=low
+
+ [ Colin Watson ]
+ * debian/eucalyptus-udeb.postinst: allow preseeding of
+ eucalyptus/install-mode, LP: #512633
+
+ -- Dustin Kirkland Thu, 04 Feb 2010 17:37:11 -0800
+
+eucalyptus (1.6.2~bzr1166-0ubuntu4) lucid; urgency=low
+
+ * eucalyptus-cc.eucalyptus-cc-publication.upstart,
+ eucalyptus-cloud.eucalyptus-cloud-publication.upstart,
+ eucalyptus-nc.eucalyptus-nc-publication.upstart,
+ eucalyptus-sc.eucalyptus-sc-publication.upstart,
+ eucalyptus-walrus.eucalyptus-walrus-publication.upstart: publication
+ jobs should respawn, but not too fast; also, revert a recent change
+ that stopped publication when the services stopped; this was
+ incorrect because publication is sometimes required for registration
+ * eucalyptus-cc.prerm, eucalyptus-cloud.prerm, eucalyptus-common.prerm,
+ eucalyptus-nc.prerm, eucalyptus-sc.prerm, eucalyptus-walrus.prerm: ensure
+ that publication services are stopped on package removal
+
+ -- Dustin Kirkland Thu, 04 Feb 2010 12:19:12 -0800
+
+eucalyptus (1.6.2~bzr1166-0ubuntu3) lucid; urgency=low
+
+ * debian/eucalyptus-nc.upstart: handle libvirt restarts, LP: #512887
+ * eucalyptus-cc.eucalyptus-cc-publication.upstart,
+ eucalyptus-cloud.eucalyptus-cloud-publication.upstart,
+ eucalyptus-cloud.upstart, eucalyptus-common.eucalyptus.upstart,
+ eucalyptus-nc.eucalyptus-nc-publication.upstart,
+ eucalyptus-nc.upstart,
+ eucalyptus-sc.eucalyptus-sc-publication.upstart,
+ eucalyptus-sc.upstart,
+ eucalyptus-walrus.eucalyptus-walrus-publication.upstart,
+ eucalyptus-walrus.upstart, uec-component-listener.upstart: add a few
+ inline comments, including a comment at the top of every upstart script
+ that seems to be required to get get vim syntax highlighting to work
+ * eucalyptus-cc.postrm, eucalyptus-cloud.postrm,
+ eucalyptus-common.postrm, eucalyptus-sc.postrm,
+ eucalyptus-walrus.postrm, uec-component-listener.postrm: fix package
+ purging with per-package file purging lists, LP: #503063
+ * eucalyptus-cc.eucalyptus-cc-publication.upstart,
+ eucalyptus-sc.eucalyptus-sc-publication.upstart,
+ eucalyptus-walrus.eucalyptus-walrus-publication.upstart: stop publication
+ jobs if the relevant service stops running
+
+ -- Dustin Kirkland Wed, 03 Feb 2010 19:01:47 -0800
+
+eucalyptus (1.6.2~bzr1166-0ubuntu2) lucid; urgency=low
+
+ * clc/modules/www/src/main/java/edu/ucsb/eucalyptus/admin/client/EucalyptusWebInterface.java:
+ use upstream's better method of getting the version displayed in the web
+ login page
+ * tools/euca_conf.in: add known_hosts -> /dev/null to the SCP_OPT
+ * debian/eucalyptus-common.eucalyptus.upstart: allow for simple
+ eucalyptus process management with 'start,stop,status' of 'eucalyptus'
+ by ensuring that a dummy sleep process at least runs when the cc or
+ nc are started, LP: #504521, #504704
+ * debian/eucalyptus-cc.upstart, debian/eucalyptus.conf,
+ tools/eucalyptus.conf.5: document CC clean restart, LP: #464384
+
+ -- Dustin Kirkland Wed, 03 Feb 2010 13:59:37 -0800
+
+eucalyptus (1.6.2~bzr1166-0ubuntu1) lucid; urgency=low
+
+ * Merge from upstream bzr revision
+
+ -- Dustin Kirkland Tue, 02 Feb 2010 17:26:47 -0800
+
+eucalyptus (1.6.2~bzr1136-0ubuntu3) lucid; urgency=low
+
+ * eucalyptus-cc.eucalyptus-cc-publication.upstart,
+ eucalyptus-common.eucalyptus.upstart, eucalyptus-network.upstart,
+ eucalyptus-sc.eucalyptus-sc-publication.upstart,
+ eucalyptus-walrus.eucalyptus-walrus-publication.upstart, rules: rework
+ our eucalyptus starting condition to depend on a new upstart emitted
+ signal, eucalyptus-network-is-ready, which is only fired once the
+ network interface providing the default route is in fact up, and
+ listening on a real ip address, LP: #503180
+ * debian/eucalyptus-common.eucalyptus.upstart:
+ - don't respawn eucalyptus-cloud
+ - ensure that the iptables module gets loaded soon enough, otherwise
+ much bad behavior happens in various nasty ways, most notably, a
+ wedged database which renders the CLC non responsive on restart/reboot,
+ LP: #503180 and dupes, LP: #444352, #444946, #467521, #478573, #480048
+
+ -- Dustin Kirkland Tue, 02 Feb 2010 17:13:52 -0800
+
+eucalyptus (1.6.2~bzr1136-0ubuntu2) lucid; urgency=low
+
+ [ Thierry Carrez ]
+ * debian/control, debian/build-jars, debian/eucalyptus-java-common.links:
+ Migrate from jetty6 to jetty (LP: #418836)
+
+ [ Dustin Kirkland ]
+ * debian/eucalyptus-url: conditionally print the CLC's ipaddress in the MOTD
+ only if we're on the CLC, LP: #494808
+ * debian/eucalyptus-cc.config: default the cluster-name to "cluster1",
+ ideally to eliminate one mostly unneeded (but preseedable) debconf
+ question, LP: #513379, #455062
+
+ -- Dustin Kirkland Mon, 01 Feb 2010 22:07:49 -0800
+
+eucalyptus (1.6.2~bzr1136-0ubuntu1) lucid; urgency=low
+
+ * Merge from upstream bzr revision
+
+ -- Dustin Kirkland Wed, 27 Jan 2010 09:01:56 -0600
+
+eucalyptus (1.6.2~bzr1128-0ubuntu4) lucid; urgency=low
+
+ * debian/uec-component-listener.*: Add low-priority debconf question to
+ allow to disable autoregistration at install-time.
+ Start/stop uec-component-listener at package install/removal time.
+ * debian/control: Have uec-component-listener depend on eucalyptus-common
+ to ensure /var/lib/eucalyptus is available during postinst.
+
+ -- Thierry Carrez Mon, 25 Jan 2010 17:09:04 +0100
+
+eucalyptus (1.6.2~bzr1128-0ubuntu3) lucid; urgency=low
+
+ * debian/registration/uec-registration: Add CLI helper to easily disable
+ (or reenable) automatic component registration.
+
+ -- Thierry Carrez Thu, 21 Jan 2010 15:28:21 +0100
+
+eucalyptus (1.6.2~bzr1128-0ubuntu2) lucid; urgency=low
+
+ [Chuck Short]
+ * debian/source_eucalptus.py: Update apport hook with a bit more information.
+
+ -- Dustin Kirkland Thu, 21 Jan 2010 10:45:34 +1300
+
+eucalyptus (1.6.2~bzr1128-0ubuntu1) lucid; urgency=low
+
+ * Merge from upstream 1.6.2 tree, minor logging fixes
+ * debian/eucalyptus-common.links: fix broken link
+
+ -- Dustin Kirkland Mon, 18 Jan 2010 09:35:11 +1300
+
+eucalyptus (1.6.2~bzr1124-0ubuntu3) lucid; urgency=low
+
+ * debian/eucalyptus-common.postinst: Add empty NODES variable to the
+ original eucalyptus.local.conf, so that euca_conf can actually modify
+ it when registering nodes (LP: #506316)
+
+ -- Thierry Carrez Tue, 12 Jan 2010 11:54:53 +0100
+
+eucalyptus (1.6.2~bzr1124-0ubuntu2) lucid; urgency=low
+
+ [ Mathias Gug ]
+ * tools/eucalyptus.conf.5: fix path to eucalyptus-local.conf file.
+
+ [ Dustin Kirkland ]
+ * debian/eucalyptus-cc.eucalyptus-cc-publication.upstart,
+ debian/eucalyptus-cc.upstart,
+ debian/eucalyptus-cloud.eucalyptus-cloud-publication.upstart,
+ debian/eucalyptus-common.eucalyptus.upstart,
+ debian/eucalyptus-common.install, debian/eucalyptus-common.links,
+ debian/eucalyptus-common.postinst, debian/eucalyptus-common.preinst,
+ debian/eucalyptus-defaults.conf,
+ debian/eucalyptus-nc.eucalyptus-nc-publication.upstart,
+ debian/eucalyptus-nc.upstart,
+ debian/eucalyptus-sc.eucalyptus-sc-publication.upstart,
+ debian/eucalyptus-udeb.finish-install,
+ debian/eucalyptus-walrus.eucalyptus-walrus-publication.upstart,
+ debian/eucalyptus.conf, debian/source_eucalyptus.py,
+ tools/euca_conf.in, tools/eucalyptus.conf.5:
+ - eucalyptus.conf rework, per discussion with mathiaz and nurmi
+ - preserve /etc/eucalyptus/eucalyptus.conf as a conffile
+ - eliminate eucalyptus-defaults.conf, moving the defaults to the
+ eucalyptus.conf conffile
+ - rename eucalyptus-local.conf to eucalyptus.local.conf to match
+ work Dan Nurmi had already started in the parser
+ - update a bunch scripts and packaging to handle the new names
+
+ -- Dustin Kirkland Tue, 12 Jan 2010 00:21:33 -0600
+
+eucalyptus (1.6.2~bzr1124-0ubuntu1) lucid; urgency=low
+
+ * Merge from upstream 1.6.2 tree
+ * Makefile, clc/build.xml, clc/modules/bootstrap/Makefile,
+ clc/modules/module-inc.xml,
+ clc/modules/storage-controller/native/Makefile,
+ clc/modules/www/build.xml, cluster/Makefile, gatherlog/Makefile,
+ node/Makefile, tools/Makefile, util/Makefile: revert DESTDIR patch,
+ as a more complete version has been integrated upstream
+
+ -- Dustin Kirkland Mon, 11 Jan 2010 15:37:09 -0600
+
+eucalyptus (1.6.2~bzr1120-0ubuntu7) lucid; urgency=low
+
+ [ Thierry Carrez ]
+ * debian/eucalyptus-sc.config: Ask for cluster name on SC-only installs
+ (LP: #497831)
+
+ [ Dustin Kirkland ]
+ * debian/eucalyptus-common.install, debian/eucalyptus-common.manpages,
+ debian/eucalyptus-common.postinst, debian/eucalyptus-common.preinst,
+ debian/eucalyptus-defaults.conf, debian/eucalyptus-nc.postinst,
+ debian/eucalyptus.conf, tools/euca_conf.8, tools/euca_conf.in:
+ - Massive rework fixing LP: #487275, improving the conffile handling
+ of eucalyptus.conf and euca_conf
+ + create /usr/share/eucalyptus/eucalyptus-defaults.conf,
+ which contains generic, distro defaults
+ + first source /usr/share/eucalyptus/eucalyptus-defaults.conf,
+ in eucalyptus.conf
+ + next source /etc/eucalyptus/eucalyptus-local.conf, in
+ eucalyptus.conf, containing site-specific customizations
+ + finally, allow for admin customizations at the bottom of
+ eucalyptus.conf
+ + move euca_conf.1 to euca_conf.8, and actually install it,
+ LP: #458211
+ + fix tools/euca_conf.in to use $FILE instead of eucalyptus.conf
+ + have tools/euca_conf.in write to eucalyptus-local.conf
+ + drop serveral postinst calls to euca_conf, now that these
+ defaults are set/sourced in eucalyptus-defaults.conf
+ + maintainer script fixes seeding eucalyptus-local.conf on new
+ installs, moving existing eucalyptus.conf data to
+ eucalyptus-local.conf on upgrades
+ * debian/eucalyptus-common.links, debian/eucalyptus-common.manpages,
+ tools/eucalyptus.conf.5: move most of the inline documentation from
+ eucalyptus.conf to a manpage, LP: #458211
+
+ -- Dustin Kirkland Sun, 10 Jan 2010 22:08:59 -0600
+
+eucalyptus (1.6.2~bzr1120-0ubuntu6) lucid; urgency=low
+
+ [ Thierry Carrez ]
+ * Revert eucalyptus-nc-publication to start on "started eucalyptus-nc",
+ pending a more elegant solution (LP: #504262)
+ * debian/eucalyptus-nc.eucalyptus-nc-publication.upstart: Be slightly more
+ accurate and start on started eucalyptus-nc, ssh and avahi-daemon.
+ * debian/eucalyptus-{sc,walrus}.postinst: Fix /var/lib/eucalyptus/.ssh
+ permissions, even for SC-only and Walrus-only installs (LP: #504309)
+
+ [ Dustin Kirkland ]
+ * debian/eucalyptus-cloud.postinst, debian/eucalyptus-cloud.postrm::
+ if the default "It works!" page is in place, enhance it with a redirect
+ to the real UEC front end, LP: #504615
+
+ -- Dustin Kirkland Fri, 08 Jan 2010 00:40:59 -0600
+
+eucalyptus (1.6.2~bzr1120-0ubuntu5) lucid; urgency=low
+
+ * Log the URL from which we're loading the cloud preseed file.
+ * When constructing the cloud preseed URL, strip the port from the cloud
+ before appending :8443 (LP: #504157).
+
+ -- Colin Watson Thu, 07 Jan 2010 09:54:53 +0000
+
+eucalyptus (1.6.2~bzr1120-0ubuntu4) lucid; urgency=low
+
+ [ Thierry Carrez ]
+ * debian/*publication.upstart: Start publication jobs when eth0 is up, and
+ never stop them to work around The Upstart Bug (LP: #503850)
+
+ [ Dustin Kirkland ]
+ * debian/control, debian/eucalyptus-nc.upstart: (LP: #446036, #452572)
+ - add a versioned depends for eucalyptus-nc on a new version
+ of libvirt-bin that starts using upstart
+ - start eucalyptus-nc on started libvirt-bin
+
+ -- Dustin Kirkland Wed, 06 Jan 2010 19:16:01 -0600
+
+eucalyptus (1.6.2~bzr1120-0ubuntu3) lucid; urgency=low
+
+ [ Thierry Carrez ]
+ * Move again eucalyptus-interface.jar from eucalyptus-cloud to
+ eucalyptus-java-common, fix got lost in bzr1103 merge (LP: #503400)
+ * debian/*publication.upstart, debian/control: Start publication when sshd
+ and avahi-daemon are started and package is installed. Add versioned
+ dependency on the upstart-enabled openssh-server, and move avahi-utils as
+ a dependency of eucalyptus-common (LP: #503340)
+
+ [ Dustin Kirkland ]
+ * eucalyptus-common.eucalyptus.upstart, eucalyptus-nc.upstart: per slangasek,
+ these should be starting on [2345], and stopping on [!2345], to prevent
+ respawning on killall5 at shutdown
+
+ -- Thierry Carrez Tue, 05 Jan 2010 16:24:03 +0100
+
+eucalyptus (1.6.2~bzr1120-0ubuntu2) lucid; urgency=low
+
+ * Merge debian/patches into the branch, since we're using bzr for merging:
+ - debian/patches/axis2c_home_init.diff, debian/patches/series,
+ tools/httpd.conf: change the location of the Axis2 Apache module to
+ match what is provided by the libapache2-mod-axis2c package, from
+ Thierry Carrez -- 7 Dec 2009
+ - debian/patches/series, tools/gen_kvm_libvirt_xml: Ubuntu prefers to
+ rely on libvirt's default choosing of the appropriate hypervisor, from
+ Dustin Kirkland -- 2 Dec 2009
+ - Makefile, clc/build.xml, clc/modules/bootstrap/Makefile,
+ clc/modules/module-inc.xml,
+ clc/modules/storage-controller/native/Makefile,
+ clc/modules/www/build.xml, cluster/Makefile,
+ debian/patches/03-DESTDIR.patch, debian/patches/series,
+ gatherlog/Makefile, node/Makefile, tools/Makefile, util/Makefile:
+ + this patch makes the eucalyptus installation work with a configurable
+ destination directory, much better for packaging
+ + this patch should be applied upstream (Dan Nurmi agreed to do so),
+ in which case we should get back in sync
+ * debian/rules, debian/wsdl.md5sums, debian/wsdl_generator: improve wsdl
+ stubs (LP: #487270);
+ - fail build if wsdl stubs need to be updated
+ - create a script that verbosely automates wsdl stub generation for
+ package maintainer(s)
+ * debian/patches/01-wsdl-stubs.patch, debian/wsdl.md5sums: wsdl stubs updated
+
+ -- Dustin Kirkland Mon, 04 Jan 2010 11:24:00 -0600
+
+eucalyptus (1.6.2~bzr1120-0ubuntu1) lucid; urgency=low
+
+ * Merge from upstream 1.6.2 tree
+
+ -- Dustin Kirkland Mon, 04 Jan 2010 09:26:03 -0600
+
+eucalyptus (1.6.2~bzr1113-0ubuntu2) lucid; urgency=low
+
+ * tools/euca_conf.in: Fix euca_conf local key sync regression (LP: #499811)
+ * debian/registration/uec_component_listener.c: Call registration scripts
+ asynchronously, so that SC can wait for CC to be registered.
+ * debian/registration/{cluster,storage}: Implement CC/SC autoregistration
+ * debian/*registration.upstart, debian/rules: Phase out old CC/SC register
+ * debian/registration/walrus: Stronger check for existing walrus
+ * debian/registration/node: Stronger check for existing nodes
+
+ -- Thierry Carrez Mon, 04 Jan 2010 15:38:22 +0100
+
+eucalyptus (1.6.2~bzr1113-0ubuntu1) lucid; urgency=low
+
+ * Merge from upstream 1.6.2 tree, fixes LP: #498379
+ * debian/eucalyptus-common.postinst: Apply the setuid bit not just on new
+ installs, so that it's not lost on upgrades (LP: #499480)
+
+ -- Thierry Carrez Tue, 22 Dec 2009 15:40:21 +0100
+
+eucalyptus (1.6.2~bzr1103-0ubuntu4) lucid; urgency=low
+
+ * debian/*publication.upstart: Do not use IP address as Avahi service name,
+ to avoid cloud/walrus conflicts (and be generally more readable), fixes
+ LP: #499098
+ * debian/registration/{node,walrus}: Do not include euca_conf output in log
+ * debian/{eucalyptus-cloud,eucalyptus-cc,uec-component-listener}.upstart:
+ Only start uec-component-listener when both CLC and CC are running (or one
+ them is absent), fixes LP: #499367
+
+ -- Thierry Carrez Tue, 22 Dec 2009 09:58:22 +0100
+
+eucalyptus (1.6.2~bzr1103-0ubuntu3) lucid; urgency=low
+
+ * debian/eucalyptus-nc.upstart: Fix httpd configuration in upstart script
+ so that eucalyptus-nc can actually start (LP: #499029)
+ * tools/euca_conf.in: Add --skip-scp-hostcheck option to euca_conf, which
+ is needed for node autoregistration (LP: #499049)
+ * debian/registration/{common,node}: Add node autoregistration script
+ * debian/uec-component-listener.upstart: Enable autoregistration lock
+ * Add walrus autoregistration, remove old walrus-registration upstart script
+ * debian/eucalyptus-common.postinst: chown *before* chmod 04754, so that
+ euca_rootwrap actually ends up setuid (LP: #499048)
+
+ -- Thierry Carrez Mon, 21 Dec 2009 16:30:33 +0100
+
+eucalyptus (1.6.2~bzr1103-0ubuntu2) lucid; urgency=low
+
+ [ Dustin Kirkland ]
+ * debian/control: add a recommends on bridge-utils, and a suggests
+ on aoetools, per feedback from Dan
+ * debian/eucalyptus-common.eucalyptus.upstart, debian/eucalyptus-nc.upstart:
+ move the loop device creation to the common upstart script, since several
+ eucalyptus components need this, LP: #498174
+ * clc/modules/bootstrap/eucalyptus-bootstrap.c: fix broken build, "true"
+ was undefined
+
+ -- Dustin Kirkland Sat, 19 Dec 2009 07:53:56 -0600
+
+eucalyptus (1.6.2~bzr1103-0ubuntu1) lucid; urgency=low
+
+ [ Dustin Kirkland ]
+ * Merge from Lucid's 1.6.1 tree, pull Colin's registration magic
+ * Merge from upstream 1.6.2 tree
+ - eucalyptus-cloud.install, eucalyptus-common.eucalyptus.upstart,
+ eucalyptus-java-common.install, eucalyptus-sc.install,
+ eucalyptus-walrus.install: jars are now named *-1.6.2.jar
+ - debian/eucalyptus-java-common.install: db is packaged independently now,
+ make sure this gets installed
+ - debian/eucalyptus-java-common.links: install proxool.jar link
+ * debian/eucalyptus-common.postinst: remove incorrect
+ 'dpkg-statoverride --add' calls, clean up existing ones, (LP: #437012)
+ * Improve lintian cleanliness of this package
+ - debian/control: bump standards version, no changes necessary
+ - debian/README.source: add patch info
+ - debian/eucalyptus-cc.templates, debian/eucalyptus-udeb.templates: drop
+ useless imperative, fix too-long descriptions
+ - debian/eucalyptus-cc.postinst, debian/eucalyptus-cloud.postinst,
+ debian/eucalyptus-cloud.postrm, debian/eucalyptus-common.postinst,
+ debian/eucalyptus-common.postrm, debian/eucalyptus-nc.config,
+ debian/eucalyptus-nc.postinst: fix maintainer-script-ignores-errors
+ lintian errors, this will need some testing and will probably
+ involve some (needed) error handling in the maintainer scripts
+ - debian/eucalyptus-common.install: fix lintian dir-or-file-in-var-run;
+ create in the upstart script, rather than the install file
+ - debian/control: fix lintian python-script-but-no-python-dep;
+ depend on python
+ - debian/eucalyptus-nc.postinst: fix postinst-does-not-load-confmodule,
+ source it
+ - debian/registration/common: fix script-not-executable, make executable
+ * util/wrappers.conf: add /usr/sbin/ietadm, (LP: #497196)
+ * clc/modules/bootstrap/eucalyptus-bootstrap.c: disable iscsi, (LP: #497196)
+ * clc/modules/configuration/src/main/java/com/eucalyptus/config/Configuration.java:
+ revert r582, as this is appropriately addressed now, no need to comment
+ out this code
+ * clc/modules/wsstack/src/main/java/com/eucalyptus/ws/handlers/WalrusRESTBinding.java:
+ fix minor whitespace diff against upstream
+ * debian/control, debian/eucalyptus-nc.eucalyptus-nc-publication.upstart,
+ debian/eucalyptus-nc.install, debian/eucalyptus-nc.upstart, debian/rules:
+ migrate the NC init to upstart, LP: #438631
+ * debian/30-eucalyptus-nc.conf, debian/eucalyptus-nc.install,
+ debian/eucalyptus-nc.upstart: use sysctl to load the eucalyptus-nc
+ networking settings
+
+ [ Thierry Carrez ]
+ * Move eucalyptus-interface-1.6-devel.jar from eucalyptus-cloud to
+ eucalyptus-java-common, since it is needed on Walrus and SC (LP: #494765)
+ * Fix dependencies: Remove c3p0 dependencies, add proxool, woodstox and
+ euca-commons-ext >=0.5.0
+
+ [ Mathias Gug ]
+ * debian/control: Add wget as an eucalyptus-cc dependency (required by
+ eucalyptus-cc upstart job).
+
+ -- Dustin Kirkland Thu, 17 Dec 2009 18:22:02 -0600
+
+eucalyptus (1.6.2~bzr1099-0ubuntu1~ppa1) lucid; urgency=low
+
+ * Merge from upstream bzr
+ - Conflict handling:
+ + .bzrignore: modules moved, accept upstream
+ + tools/eucalyptus-cloud.in: ubuntu doesn't use this file, accept
+ upstream
+ + clc/modules/wsstack/src/main/java/com/eucalyptus/ws/handlers/WalrusRESTBinding.java:
+ whitespace only, accept upstream
+ + clc/modules/module-inc.xml, debian/patches/03-DESTDIR.patch: move
+ stray DESTDIR change to the DESTDIR patch
+ + clc/modules/walrus/src/main/java/edu/ucsb/eucalyptus/cloud/ws/WalrusManager.java:
+ new function parameter, accept upstream
+ + clc/modules/msgs/src/main/java/com/eucalyptus/util/EntityWrapper.java: moved
+ + clc/modules/msgs/src/main/java/com/eucalyptus/util/TxHandle.java: moved
+ - debian/patches/03-DESTDIR.patch: patch ported forward
+ - Bugs fixed:
+ + LP: #461156 - User data is not parsed correctly in some cases
+ + LP: #477776 - Query string authentication does not work in some cases
+ - eucalyptus-cloud.install, eucalyptus-common.eucalyptus.upstart,
+ eucalyptus-java-common.install, eucalyptus-sc.install,
+ eucalyptus-walrus.install: update jar version from 1.6.1 to 1.6.2
+
+ -- Dustin Kirkland Wed, 09 Dec 2009 17:34:21 -0800
+
+eucalyptus (1.6.1~bzr1085-0ubuntu4) lucid; urgency=low
+
+ [ Colin Watson ]
+ * Append " storage" to the Avahi service name for storage controllers, to
+ ensure that they're distinct from cluster controllers on the same
+ machine.
+
+ [ Thierry Carrez ]
+ * Fix basic security issues in uec-component-listener by using
+ fork()/execvp() instead of system(), thanks to Colin Watson for the patch
+
+ -- Thierry Carrez Mon, 14 Dec 2009 08:25:59 +0100
+
+eucalyptus (1.6.1~bzr1085-0ubuntu3) lucid; urgency=low
+
+ * uec-component-listener:
+ - New binary package, provides a listener to remote avahi announces
+ - Add a build-dep on libavahi-client-dev
+ - Make eucalyptus-cc and eucalyptus-cloud depend on uec-component-listener
+ * Add dummy registration action scripts in eucalyptus-cc and -cloud
+
+ -- Thierry Carrez Fri, 11 Dec 2009 11:09:09 +0100
+
+eucalyptus (1.6.1~bzr1085-0ubuntu2) lucid; urgency=low
+
+ * Generate a preseed file on the CLC as well as the CC.
+ * If multiple CLCs are discovered, ask which to use.
+ * Use CLC preseed file when installing any of Walrus, CC, or SC on a
+ different machine from the CLC. (Requires wget-udeb since the CLC only
+ talks HTTPS.)
+ * Generate an SSH key on the CLC as well as the CC.
+
+ -- Colin Watson Thu, 10 Dec 2009 18:24:42 +0000
+
+eucalyptus (1.6.1~bzr1085-0ubuntu1) lucid; urgency=low
+
+ * Merge from upstream bzr revision 1085
+
+ -- Dustin Kirkland Mon, 07 Dec 2009 17:00:19 -0800
+
+eucalyptus (1.6.1~bzr1083-0ubuntu4) lucid; urgency=low
+
+ * debian/patches/axis2c_home_init.diff: Restore patch for Axis2 module
+ location, to allow CC to start (LP: #493523)
+
+ -- Thierry Carrez Mon, 07 Dec 2009 16:06:28 +0100
+
+eucalyptus (1.6.1~bzr1083-0ubuntu3) lucid; urgency=low
+
+ * Add eucalyptus/cluster-name to CC preseed file.
+ * Offer finer-grained choices between Eucalyptus components during
+ installation.
+ * Source debconf confmodule in eucalyptus-sc.postinst.
+ * Set correct permissions on /usr/lib/eucalyptus/eucalyptus-url at build
+ time rather than in eucalyptus-cc.postinst.
+
+ -- Colin Watson Fri, 04 Dec 2009 23:29:57 +0000
+
+eucalyptus (1.6.1~bzr1083-0ubuntu2) lucid; urgency=low
+
+ * debian/patches/06-symlinked-jars.patch: drop patch from source; this
+ patch hasn't been in the series file for a while now
+ * debian/patches/axis2c_home_init.diff:
+ - Dropping the httpd.conf part of this patch, since our upstart
+ script handles this properly.
+ - Dropping the tools/eucalyptus-cc.in part of this patch, since
+ we no longer use the eucalyptus-cc init script.
+ - The tools/eucalyptus-nc.in patch should be dropped as soon as
+ it's converted to an upstart script (which will need to handle
+ AXIS2C_HOME correctly), see lp#438631
+ * debian/patches/02-rely-on-libvirt-defaults.patch: add some documentation
+ in this patches headers
+ * debian/patches/var_lib_eucalyptus.diff: drop patch from source; this
+ patch hasn't been in the series file for a while now
+ * debian/patches/euca_conf-error-output.diff, debian/series,
+ tools/euca_conf.in:
+ - drop this patch from our series
+ - apply directly to the branch, cleaning up wget error printing
+ - upstream has agreed to take this, and fix this globally in their
+ source
+ * aclocal.m4, debian/patches/05-axis-alternative-repository.patch,
+ debian/patches/series:
+ - drop this patch from our series
+ - apply directly to the branch, to support pkg-config
+ - upstream cannot take this because not all distros will be able to
+ depend on pkg-config
+ * debian/patches/03-DESTDIR.patch: Eucalyptus will take this upstream;
+ should be dropped from the Ubuntu branch as soon as they do
+ * debian/eucalyptus-cc.upstart, debian/eucalyptus-common.eucalyptus.upstart:
+ support CLEAN=1 on start/stop/restart of eucalyptus/eucalyptus-cc; export
+ the CLEAN env variable in eucalyptus.init, and handle it in both the
+ pre-start and post-stop sections of eucalyptus-cc, (LP: #491254)
+
+ -- Dustin Kirkland Thu, 03 Dec 2009 07:29:32 -0600
+
+eucalyptus (1.6.1~bzr1083-0ubuntu1) lucid; urgency=low
+
+ [ Dustin Kirkland ]
+ * Merge upstream bzr revision 1082; the following bugs have been fixed
+ upstream since the last merge:
+ - LP: #378969 - private bug
+ - LP: #404842 - init script fix
+ - LP: #434283 - existing keys should be overwritten unconditionally
+ - LP: #445990 - run instance will fail if no kernel or ramdisk specified
+ - LP: #447457 - euca_conf --register-sc ... check the number of parameters
+ - LP: #449874 - fix incorrect help text (--delete-nodes doesn't exist)
+ - LP: #451795 - show registered images in elastic fox
+ - LP: #454405 - return correct networkIndex values on describeInstances
+ - LP: #456877 - init script fix
+ - LP: #456878 - fix for libvirt xen driver
+ - LP: #460085 - fix rampart memory leak
+ - LP: #461156 - fix authentication problem w/ userdata
+ - LP: #461394 - fix multiple concurrent snapshots on the same volume
+ - LP: #461444 - fix memory leaks in NC getConsoleOutput and startup_thread
+ - LP: #469984 - fix iptables rules issue
+ - LP: #477776 - fix query string authentication
+ - LP: #480783 - allow api connection over https
+ - LP: #482249 - fix "Describe Regions"
+ - LP: #484217 - create keypair should return an error if key exists
+ - LP: #490623 - parse RFC 1123 formatted datetime
+ * debian/control:
+ - make all package lists one-per-line (makes changes henceforth more
+ readable), sort lists
+ - depend on rampart >= 1.3.0-0ubuntu6, which fixes some shared library
+ installation issues
+ * debian/patches/04-axis2c-1.6.0-rampart-1.3.0.patch: drop this patch,
+ since Eucalyptus 1.6.1 natively supports axis2c 1.6.0 now
+ * debian/eucalyptus-cloud.install,
+ debian/eucalyptus-common.eucalyptus.upstart,
+ debian/eucalyptus-java-common.install, debian/eucalyptus-sc.install,
+ debian/eucalyptus-walrus.install: update static version number strings
+ from "1.6-devel" to "1.6.1"; (we should really find a better way to do
+ this)
+ * debian/patches/03-DESTDIR.patch: ported forward for merge
+
+ -- Dustin Kirkland Tue, 01 Dec 2009 21:09:28 -0600
+
+eucalyptus (1.6~bzr931-0ubuntu9) UNRELEASED; urgency=low
+
+ [ Dustin Kirkland ]
+ * cluster/handlers.c: euca_rootwrap rework did not whitelist powerwake;
+ however, powerwake does *not* need root privs, drop euca_rootwrap wrapper
+ (LP: #458163)
+ *
+
+ [ Thierry Carrez ]
+ * clc/modules/www/src/main/java/edu/ucsb/eucalyptus/admin/public/EucalyptusWebInterface.html:
+ Fix HTML title in the web UI for more consistency in naming (LP: #455293)
+ * debian/eucalyptus-common.eucalyptus.upstart: Add -l to eucalyptus-cloud
+ options so that cloud-output.log is affected by LOGLEVEL (LP: #458001)
+
+ [ Colin Watson ]
+ * Move cluster private interface selection forward to just after network
+ configuration (LP: #455816).
+ * Add the CC's IP address as an explicit TXT record in the Avahi
+ advertisement, and make use of it in euca_find_cluster (LP: #458904).
+ * Advertise the CLC and Walrus using Avahi.
+ * Rename euca_find_cluster to euca_find_component and make it take the
+ component type as its first argument, so that we can use it for other
+ advertisements.
+ * Advertise $CC_NAME rather than $CC_IP_ADDR as the cluster's Avahi
+ service name, reverting the workaround from 1.6~bzr916-0ubuntu1 now that
+ we have the ipaddr= TXT record. I've left the client side of this
+ workaround in euca_find_component for compatibility with old
+ advertisements.
+ * Show cluster service names in installer cluster selection dialog.
+ * Advertise the SC using Avahi.
+
+ -- Dustin Kirkland Tue, 01 Dec 2009 14:32:42 -0600
+
+eucalyptus (1.6~bzr931-0ubuntu7) karmic; urgency=low
+
+ * clc/modules/www/src/main/java/edu/ucsb/eucalyptus/admin/client/EucalyptusWebInterface.java:
+ Add a bit of branding text and pointers to documentation in the web
+ interface (LP: #455697)
+
+ -- Dustin Kirkland Mon, 19 Oct 2009 14:04:37 -0500
+
+eucalyptus (1.6~bzr931-0ubuntu6) karmic; urgency=low
+
+ * debian/control: Depend on libecj-java instead of ecj to get ecj.jar,
+ saves ~25Mb of CD space (LP: #455246)
+ * debian/control: Set Maintainer field to Ubuntu Developers
+
+ -- Thierry Carrez Mon, 19 Oct 2009 13:36:15 +0200
+
+eucalyptus (1.6~bzr931-0ubuntu5) karmic; urgency=low
+
+ * clc/modules/www/src/main/java/edu/ucsb/eucalyptus/admin/client/EucalyptusWebInterface.java:
+ change the Eucalyptus version string displayed in the web interface
+ from "1.6-devel" to "1.6"; this version is officially released by
+ upstream, and a far more invasive patch is required to fix all of
+ the -devel references; this minimal patch is required for the
+ cosmetics of the web front end for the Ubuntu 9.10 release (LP: #452271)
+
+ -- Dustin Kirkland Fri, 16 Oct 2009 15:41:15 -0500
+
+eucalyptus (1.6~bzr931-0ubuntu4) karmic; urgency=low
+
+ [ Kees Cook ]
+ * Fix unsafe /tmp file uses (LP: #445105):
+ - tools/detach.pl: remove debugging XML dump call.
+ - node/handlers_xen.c: use mkstemp().
+
+ [ Mathias Gug ]
+ * debian/eucalyptus-common.eucalyptus.upstart: Start eucalyptus-cloud
+ with all the relevant options (LP: #452665).
+
+ [ Dustin Kirkland ]
+ * cluster/handlers.c, net/vnetwork.c: label the 169.254.169.254 link
+ local address with :metadata, the public vm ip addresses with :pub,
+ and the private vm ip addresses with :priv, to separate it appropriately
+ (LP: #452754)
+ * debian/eucalyptus-ipaddr.conf: and now that we're separating the weird
+ addresses to their own labels, we can show just the device label, much
+ cleaner output, (LP: #451607)
+ * debian/copyright: Eucalyptus licensed 1.6 under the GPLv3, update
+ our copyright file accordingly, (LP: #453129)
+ * debian/control, debian/eucalyptus-java-common.links: the CLC absolutely
+ needs the ecj.jar installed and linked for euca-* and ec2-* API calls
+ to work (LP: #453177)
+
+ -- Dustin Kirkland Fri, 16 Oct 2009 13:28:32 -0500
+
+eucalyptus (1.6~bzr931-0ubuntu3) karmic; urgency=low
+
+ * debian/eucalyptus-ipaddr.conf: Only consider scope global addresses when
+ determining cloud IP addresses (LP: #451607)
+ * Cherrypick upstream r932 to fix regression in ElasticFox query handling
+ that would prevent registered images to show up (LP: #451795)
+ * Web UI changes: add Services tab and fix look of ImageStore (LP: #436447)
+
+ -- Thierry Carrez Thu, 15 Oct 2009 13:51:28 +0200
+
+eucalyptus (1.6~bzr931-0ubuntu2) karmic; urgency=low
+
+ [ Kees Cook, Dan Nurmi, Dustin Kirkland ]
+ * debian/control, util/Makefile, util/chgrp-dhcpd, util/chmod-dhcpd,
+ util/dd-lv, util/euca_rootwrap.c, util/modprobe-aoe,
+ util/wrappers.conf: LP: #436977
+ - rework euca_rootwrap to be a bit more secure;
+ - whitelist the commands that eucalyptus needs to run as root in a
+ configuration file
+ - build-depend on libcap-dev
+ * debian/eucalyptus-common.install: ensure the new utilities and conf
+ file gets installed
+ * debian/patches/03-DESTDIR.patch: updated for new util/Makefile
+ utility installs
+
+ -- Dustin Kirkland Wed, 14 Oct 2009 18:12:51 -0500
+
+eucalyptus (1.6~bzr931-0ubuntu1) karmic; urgency=low
+
+ * Merge from upstream revision 931
+ * This snapshot is expected to fix the following bug:
+ - LP: #450915 - fix issue with slow restoring of instances
+
+ -- Dustin Kirkland Tue, 13 Oct 2009 23:31:12 -0500
+
+eucalyptus (1.6~bzr930-0ubuntu1) karmic; urgency=low
+
+ [ Dustin Kirkland ]
+ * debian/eucalyptus-url, debian/eucalyptus-cc.install,
+ debian/eucalyptus-cc.links, debian/eucalyptus-cc.postinst::
+ - fix whitespace, to match other update-motd urls LP: #450449
+ - link to ubuntu.com/cloud, which links to our documentation,
+ necessary for new UEC admins
+ - ensure that it gets installed with executable permissions,
+ LP: #444970
+ * debian/eucalyptus-udeb.finish-install: fix typo; fix breakage of
+ /etc/network/interfaces when nodes are configured with static IP
+ addresses, LP: #446023
+ * eucalyptus-cc.upstart,
+ eucalyptus-cloud.eucalyptus-cc-registration.upstart,
+ eucalyptus-cloud.eucalyptus-sc-registration.upstart,
+ eucalyptus-cloud.eucalyptus-walrus-registration.upstart,
+ eucalyptus-sc.upstart, eucalyptus-walrus.upstart, rules, control:
+ - registration of cc/sc/walrus should *only* ever occur on the CLC,
+ so these scripts should be moved to the eucalyptus-cloud package,
+ LP: #450815
+ - starting cc/sc/walrus should *not* depend on eucalyptus-cloud
+ running, since these components can be installed on separate
+ machines, LP: #450777
+ - but if cc/sc/walrus are on a system doing registration, ensure that
+ these jobs kick off when "starting" registration
+ - allow for whitespace separated list of $CC_IP_ADDR and $SC_IP_ADDR,
+ as there can be more than one of these, and admins in multi-cluster
+ or multi-component mode would need to register a list
+ - use Replaces to ensure upgrades work properly
+ * debian/eucalyptus-ipaddr.conf: update inline documentation accordingly
+ * debian/eucalyptus-cc.templates: update public_ips instructions in the
+ installer to match the new upstream implementation, LP: #438565
+ * eucalyptus-common.eucalyptus.upstart: fix unclean package purging,
+ which hangs on stopping eucalyptus service
+
+ [ Upstream ]
+ * Merge upstream revision 930
+ * This snapshot is expected to fix the following bugs:
+ - LP: #449944 - fixes remote component bootstrap issue
+ - LP: #430852, #401996 - fix handling of security groups for the admin
+ - LP: #449948 - fix issues with network index and address recovery after
+ a system restart
+ - LP: #398867 - fix storing VLAN tag info from web ui
+ - LP: #430266 - fix setting of HTTP error codes
+ - LP: #449948 - part of fix to LP:#449948 the CC now correctly sets the
+ networkIndex field in the reponse message of describeInstances
+ - LP: #438565 - allowing a range of IPs to be specified in the
+ VNET_PUBLICIPS field of eucalyptus.conf
+ - LP: #449143 - Add the 169.254.169.254 address to eth0 as 'scope link'
+ in order to avoid conflict with the UEC avahi-publish mechanism
+ - LP: #449135 - Prevents a segfault in CC during client connection to NC
+ on describeInstances, when number of instances is high (> 20 or so).
+ The number of bytes sent to 'malloc' was being calculated incorrectly.
+ - LP: #444838 - fix to fully allow VMs to access meta-data service in
+ MANAGED-NOVLAN, when CC and CLC are on separate machines, and
+ VNET_CLOUDIP is set (more complete fix)
+ - LP: #447555 - off-by-one error was causing the public IPs in STATIC
+ mode to be reported incorrectly (last character was being truncated)
+ - LP: #447585 - flush cached images on deregister
+ - LP: #439410 - Add retry in the case where walrus responds to
+ getDecryptedImage with a 408 (connection timeout)
+
+ -- Dustin Kirkland Tue, 13 Oct 2009 23:03:15 -0500
+
+eucalyptus (1.6~bzr919-0ubuntu3) karmic; urgency=low
+
+ [ Matt Zimmerman ]
+ * Kill the Eucalyptus DHCP server in eucalyptus-cc.upstart:stop
+ (LP: #446056)
+
+ [ Thierry Carrez ]
+ * Add missing gnumail-providers.jar and inetlib.jar links to
+ /usr/share/eucalyptus to enable email sending (LP: #449530)
+ * Cherrypick upstream rev920, fixing Walrus timeouts (LP: #439410)
+
+ -- Thierry Carrez Mon, 12 Oct 2009 17:37:39 +0200
+
+eucalyptus (1.6~bzr919-0ubuntu2) karmic; urgency=low
+
+ * eucalyptus-cc need not depend on eucalyptus-cloud, so remove the dependency
+ (LP: #447991)
+
+ -- Matt Zimmerman Sat, 10 Oct 2009 14:12:40 +0100
+
+eucalyptus (1.6~bzr919-0ubuntu1) karmic; urgency=low
+
+ * Merge upstream revision 919
+ * This snapshot is expected to fix the following bugs:
+ - LP: #444908 - fixes addressing conflicts between MANAGED and SYSTEM
+ mode which cause run-instances to fail
+ - LP: #445997 - fix issues with failure cases and the release of
+ addresses and network indexes
+
+ -- Dustin Kirkland Fri, 09 Oct 2009 00:47:11 -0500
+
+eucalyptus (1.6~bzr916-0ubuntu1) karmic; urgency=low
+
+ * Merge upstream revision 916
+ * This snapshot is expected to fix the following bugs:
+ - LP: #443314 - fix system address selection
+ - LP: #443325 - fix regression in heartbeat, fix NPE in system mode
+ - LP: #444838 - fix meta-data service in multi-cluster
+ - LP: #444908 - fix running instances on multi-cluster
+ - LP: #445206 - fix remote bootstrap on walrus+sc
+ * debian/eucalyptus-cc.eucalyptus-cc-publication.upstart,
+ debian/local/euca_find_cluster.c: when doing the avahi-publish, use
+ $CC_IP_ADDR rather than $(hostname) for the "name" of the service;
+ use this ip address in the case where euca_find_cluster gets the
+ link-local 169.254.169.254 address, LP: #445738
+
+ -- Dustin Kirkland Wed, 07 Oct 2009 20:01:56 -0500
+
+eucalyptus (1.6~bzr912-0ubuntu3) UNRELEASED; urgency=low
+
+ * debian/eucalyptus-*.upstart: Make sure IP address is looked up at every
+ iteration of the loop, to have a chance to pick up late DHCP (LP: #445361)
+ * debian/eucalyptus-*.upstart: Increase timeouts waiting for the services
+ to appear, as we seem to be dangerously close to the limit for port 8443
+ and it still sometimes fails on first boot (LP: #445294)
+ * debian/eucalyptus-cloud.upstart: Remove useless "sleep 5" after checking
+ that port 8443 answers
+ * Cherrypicking Heartbeat fix from upstream rev913 (LP: #443325)
+ * debian/eucalyptus-*.upstart: Do NOT attempt autoregistration if the
+ services are not started after waiting 2 minutes for them (LP: #444504)
+
+ -- Thierry Carrez Wed, 07 Oct 2009 13:37:40 +0200
+
+eucalyptus (1.6~bzr912-0ubuntu2) karmic; urgency=low
+
+ [ Thierry Carrez ]
+ * debian/eucalyptus-cc.upstart: Really fix LP: #436407, since it was only
+ fixed in unused init scripts.
+ * tools/eucalyptus-cc.in, tools/eucalyptus-java-ws.in: No longer patch
+ those files, now that we use upstart we no longer use them.
+ * debian/eucalyptus-cc.upstart: Fix typo that made post-start fail early,
+ LP: #444560
+
+ [ Dustin Kirkland ]
+ * eucalyptus-cc.dirs, eucalyptus-cc.install, eucalyptus-cc.links: ensure
+ that update-motd.d/80-eucalyptus-url is executable, LP: #444970
+
+ -- Dustin Kirkland Tue, 06 Oct 2009 19:31:14 -0500
+
+eucalyptus (1.6~bzr912-0ubuntu1) karmic; urgency=low
+
+ * Merge upstream revision 912
+ * tools/eucalyptus-cc.in: resolve conflict, ensuring that we maintain
+ the 'ThreadsPerChild 1' sed
+ * clc/modules/www/src/main/java/edu/ucsb/eucalyptus/admin/server/ServletUtils.java:
+ resolve conflict, drop our diff, as upstream has solved the smtp
+ hostname issue
+ * debian/patches/boot-order.patch: dropped, applies to a file we don't
+ use anymore so it can be removed
+ * debian/eucalyptus-walrus.eucalyptus-walrus-registration.upstart: source
+ conf file and use $WALRUS_IP_ADDR variable, like the other scripts
+ * This snapshot is expected to fix the following bugs:
+ - LP: #388934 - apply authorization checks
+ - LP: #430226 - fix display of image permissions
+ - LP: #430957 - fix running of instances in SYSTEM mode
+ - LP: #436276 - sc should run as eucalyptus, instead of root
+ - LP: #436313 - fix sc registration through web ui
+ - LP: #436407 - fix cc segfaults with apache-mpm-worker, rampart
+ - LP: #436885 - fix database corruption, c3p0 deadlock on CLC
+ - LP: #437014 - handle execessive CLC sockets
+ - LP: #439251 - fix restart-required after autoregistration issue
+ - LP: #440744 - handle external command
+ - LP: #440817 - fail gracefully with volume deletion on sc
+ - LP: #443125 - fix loss of admin credentials
+
+ -- Dustin Kirkland Mon, 05 Oct 2009 15:02:11 -0500
+
+eucalyptus (1.6~bzr854-0ubuntu14) UNRELEASED; urgency=low
+
+ * Simplify eucalyptus-cc.eucalyptus-cc-publication.upstart and
+ eucalyptus-common.eucalyptus.upstart based on discussion with
+ Scott James Remnant
+ * debian/patches/euca_conf-error-output.diff: Don't suppress error output
+ from wget in checkLocalService, because it's useful in debugging
+
+ -- Matt Zimmerman Sat, 03 Oct 2009 16:57:56 +0100
+
+eucalyptus (1.6~bzr854-0ubuntu13) karmic; urgency=low
+
+ * eucalyptus-common.eucalyptus.upstart: the -L option was in the wrong
+ place, breaking the console.log logging, LP: #439161
+ * eucalyptus-cc.eucalyptus-cc-registration.upstart,
+ eucalyptus-cc.upstart, eucalyptus-cloud.upstart,
+ eucalyptus-ipaddr.conf, eucalyptus-common.install,
+ eucalyptus-sc.eucalyptus-sc-registration.upstart,
+ eucalyptus-sc.upstart, eucalyptus-walrus.upstart: using "localhost"
+ is breaking registration; instead, use the real, external ip
+ address; consolidate the (nasty) logic for determining this
+ into a single, sourcable, overridable location, LP: #437058, #438602
+ * 80-eucalyptus-url: use the new $CLOUD_IP_ADDR value and logic
+
+ -- Dustin Kirkland Wed, 30 Sep 2009 01:02:36 -0500
+
+eucalyptus (1.6~bzr854-0ubuntu12) karmic; urgency=low
+
+ * eucalyptus-cc.upstart, eucalyptus-common.eucalyptus.upstart: ensure
+ that the /var/run/eucalyptus/net directory gets created on upstart
+ job runs, and that all of /var/run/eucalyptus is owned by
+ eucalyptus:eucalyptus, LP: #438747
+ * debian/eucalyptus-common.postrm: fix lintian error, add missing
+ debhelper stubb
+ * Fix typo in post-stop stanza of eucalyptus-cc.upstart
+
+ -- Dustin Kirkland Tue, 29 Sep 2009 15:54:56 -0500
+
+eucalyptus (1.6~bzr854-0ubuntu11) karmic; urgency=low
+
+ * Restore /etc/init.d/eucalyptus-nc as a quickfix for node startup,
+ LP: #438585
+ * Wait 5 more seconds after eucalyptus-cloud appears to be started before
+ considering it started, to allow registration to succeed, LP: #438602
+ * Fix failure to import VNET_PUBLICIPS setting if a space-separated list
+ of IPs is entered, LP: #438586
+
+ -- Thierry Carrez Tue, 29 Sep 2009 11:42:26 +0200
+
+eucalyptus (1.6~bzr854-0ubuntu10) karmic; urgency=low
+
+ [ Matt Zimmerman ]
+ * Bump priority of eucalyptus/publicips to High, as we don't have a
+ reasonable default for this. The administrator needs to provide a
+ list of IP addresses on the local network which we can allocate.
+ * Updated question text for eucalyptus/publicips, thanks to Dan Nurmi
+
+ [ Thierry Carrez ]
+ * Revised question text for eucalyptus/publicips to include format info.
+
+ -- Thierry Carrez Mon, 28 Sep 2009 21:06:36 +0200
+
+eucalyptus (1.6~bzr854-0ubuntu9) karmic; urgency=low
+
+ [ Colin Watson ]
+ * Move eucalyptus-cloud slightly up the boot sequence, in particular so
+ that it starts before eucalyptus-cc.
+ * debian/patches/boot-order.patch: Adjust LSB init script headers to
+ declare that eucalyptus-cloud should start before eucalyptus-cc if
+ installed.
+
+ [ Matt Zimmerman ]
+ * tools/eucalyptus-java-ws.in: Print an error message, instead of silently
+ giving up, if we don't find /etc/eucalyptus/eucalyptus-cc.conf when trying
+ to autoregister the SC
+ * debian/source_eucalyptus.py, debian/rules: Add an apport hook to collect
+ configuration and log data
+ * Replace init scripts in eucalyptus-cloud, eucalyptus-cc, eucalyptus-sc and
+ eucalyptus-walrus with upstart jobs
+ * Add upstart jobs to register CC, SC and Walrus in the appropriate order, as
+ they come up, so that they are up and running out of the box instead of
+ having to be registered manually
+ * eucalyptus-{cloud,sc,walrus} depend on eucalyptus-common now, as they
+ rely on the eucalyptus upstart job
+
+ -- Matt Zimmerman Mon, 28 Sep 2009 16:02:13 +0100
+
+eucalyptus (1.6~bzr854-0ubuntu8) karmic; urgency=low
+
+ * Update two references to installer-cc.conf that now need to refer to
+ eucalyptus-cc.conf.
+ * Update translation templates.
+
+ -- Colin Watson Sat, 26 Sep 2009 10:09:27 +0100
+
+eucalyptus (1.6~bzr854-0ubuntu7) karmic; urgency=low
+
+ [ Dustin Kirkland ]
+ * tools/eucalyptus-nc.in: exit 0, rather than 1, in the -nc
+ init script when unconfigured, related to bug LP: #430075
+ * debian/eucalyptus-cc.in, debian/eucalyptus-java-ws.in: help registration
+ with local sync, no rsync parameters
+ * debian/eucalyptus-common.postrm: prune eucalyptus files from /etc and
+ /var on package purge, essential for testing, LP: #436928
+
+ [ Matt Zimmerman ]
+ * Revert revno 573, as according to Dan Nurmi it broke registration entirely
+ * Apply upstream revno 895, as according to Dan this fixes the same bug that
+ revno 573 attempted to fix, but properly (without breaking registration)
+ * debian/eucalyptus-cc.postinst: Guard update-rc.d remove calls so that they
+ don't run on initial installation. Because -cc could be configured before
+ or after -walrus/-cloud, this could cause -cc to clobber -walrus/-cloud
+ init scripts on initial installation
+ * tools/eucalyptus.conf: Don't try to run shell code here; it isn't (always)
+ interpreted as a shell script
+ * debian/eucalyptus-cc.postinst: Use euca_conf --import-conf to copy the
+ network settings into eucalyptus.conf instead
+ * Set the default VNET_MODE to MANAGED-NOVLAN
+ * The three preceding changes close LP: #435130
+ * Store the CC name in a new config file /etc/eucalyptus/eucalyptus-cc.conf
+ and get rid of /etc/eucalyptus/installer-cc.conf
+
+ [ Steve Langasek ]
+ * Move eucalyptus-nc "no VT" handling for LP: #426830 to a debconf script
+ instead, so that users are a bit more likely to see this.
+ * Drop the dpkg-statoverride check on /var/lib/eucalyptus/keys in the
+ eucalyptus-common postinst; this was ineffective anyway because we'd done
+ a chown -R immediately before that, so the only part that was respecting
+ statoverride were the directory perms.
+
+ -- Dustin Kirkland Sat, 26 Sep 2009 00:30:18 -0700
+
+eucalyptus (1.6~bzr854-0ubuntu6) karmic; urgency=low
+
+ [ Thierry Carrez ]
+ * Apply upstream rev867 and rev876 diffs to fix SC registration through
+ Web UI, LP: #436313
+ * tools/eucalyptus-java-ws.in: Reapply fix on boot messages that was lost
+ on a merge, LP: #435766
+
+ [ Dustin Kirkland ]
+ * debian/80-eucalyptus-url: add an update-motd script that
+ displays the administration URL in the MOTD at position 80, LP: #436199
+ * debian/eucalyptus-nc.preinst: echo a warning message if a system
+ installing the -nc does not have VT, LP: #426830
+ * debian/rules: don't fail package installation due to init script
+ failures, LP: #430075, #418473
+ * tools/euca_conf.in: vastly improve the output of
+ 'euca_conf --register-nodes', which was missing some pertinent
+ information, LP: #424457
+ * clc/modules/www/src/main/java/edu/ucsb/eucalyptus/admin/server/ServletUtils.java:
+ if we're going to use the local host to send email, use 'localhost' as
+ the hostname, rather than the externally resolvable hostname which
+ breaks in the default ubuntu postfix configuration, LP: #412676
+ * debian/control:
+ - have eucalyptus-common depend on openssh-server and openssh-client,
+ as these should really be installed on most any Eucalyptus system,
+ LP: #411656
+ - have eucalyptus-common recommend unzip, since Eucalyptus uses zip
+ files for credentials, which may be needed on various systems,
+ LP: #436876
+ - recommend libpam that provides pam_motd, LP: #436199
+ - conflict with apache2-mpm-itk, LP: #338344
+ * debian/eucalyptus-common.postinst: configure VNET_DHCPDAEMON and
+ VNET_DHCPUSER appropriately for default Ubuntu on initial install,
+ LP: #364938
+
+ [ Colin Watson ]
+ * debian/control:
+ - Make eucalyptus-nc explicitly depend on apache2-mpm-worker |
+ apache2-mpm-prefork, since the NC requires that Apache be configured
+ to only start a single child (LP: #338344).
+
+ -- Dustin Kirkland Fri, 25 Sep 2009 18:01:29 -0700
+
+eucalyptus (1.6~bzr854-0ubuntu5) karmic; urgency=low
+
+ [ Dustin Kirkland ]
+ * debian/control: drop dhcp from -nc's recommends, add it to -cc's
+ recommends, LP: #364925
+ * tools/euca_conf.in: use "-oStrictHostKeyChecking=no" if we're doing
+ --discover-nodes, LP: #436210
+ * debian/eucalyptus-udeb.finish-install: add own ssh host key to
+ /etc/ssh/ssh_known_hosts, LP: #436211
+
+ [ Colin Watson ]
+ * euca_find_cluster: Use the proper bracketed format for IPv6 host/port
+ combinations.
+ * euca_find_cluster: For now, only ask for an IPv4 address for the
+ cluster, as IPv6 addresses often show up by accident but don't work, and
+ we don't have time to deal with this right now (LP: #436200).
+ * tools/eucalyptus-java-ws.in: Increase timeout here too, to go with
+ Matt's previous change.
+
+ -- Colin Watson Fri, 25 Sep 2009 15:30:36 +0100
+
+eucalyptus (1.6~bzr854-0ubuntu4) karmic; urgency=low
+
+ * Temporarily disable rejection of loopback addresses in registerComponent.
+ This seems perfectly valid when the cloud and cluster controllers are
+ running on the same system.
+
+ This works around LP: #434593 (which is a blocker for 9.10 beta) and
+ reopens LP: #431934 (which is not)
+ * tools/eucalyptus-cc.in:register_local_cloud: Increase the timeout
+ waiting for the service to start before registering it. Increasing from 10
+ seconds to 60 seems to be sufficient to work around LP: #434590
+
+ -- Matt Zimmerman Thu, 24 Sep 2009 15:57:38 -0700
+
+eucalyptus (1.6~bzr854-0ubuntu3) karmic; urgency=low
+
+ * Continue in non-automated mode if we fail to download the preseed file
+ from the cluster during node installation.
+ * Carry over user-setup/encrypt-home value from cluster to node
+ installation.
+ * Fix euca_conf --discover-nodes to offer each discovered node separately,
+ not all at once.
+ * Fix euca_conf --discover-nodes to offer only nodes, not the cluster as
+ well.
+ * Make euca_conf rsync keys to ${EUCA_USER} rather than root, since the
+ former is set up for automatic authentication and the latter isn't (and
+ probably shouldn't be).
+
+ -- Colin Watson Thu, 24 Sep 2009 22:52:33 +0100
+
+eucalyptus (1.6~bzr854-0ubuntu2) karmic; urgency=low
+
+ * Fix query timeout issues in timezones > UTC (LP: #431847)
+ * Add --local-sync to allow euca_conf --register-* to sync keys locally
+ if an external (but local) IP address is used to register (LP: #434651)
+
+ -- Thierry Carrez Wed, 23 Sep 2009 18:27:06 +0200
+
+eucalyptus (1.6~bzr854-0ubuntu1) karmic; urgency=low
+
+ * New snapshot.
+
+ -- Soren Hansen Wed, 23 Sep 2009 10:50:10 +0200
+
+eucalyptus (1.6~bzr840-0ubuntu1) karmic; urgency=low
+
+ [ Colin Watson ]
+ * Configure VNET_PUBINTERFACE and VNET_PRIVINTERFACE, asking for the
+ private interface if multiple interfaces are available (LP: #425933). If
+ the private interface is not the same as the public interface configured
+ in netcfg, then give it basic DHCP configuration in
+ /etc/network/interfaces.
+
+ [ Soren Hansen ]
+ * New upstream snapshot.
+
+ -- Soren Hansen Tue, 22 Sep 2009 12:44:42 +0200
+
+eucalyptus (1.6~bzr808-0ubuntu1) karmic; urgency=low
+
+ [ Dustin Kirkland ]
+ * debian/eucalyptus-udeb.finish-install: eth0 should be set to
+ 'manual', when configured with br0 on dhcp, LP: #430820
+ * tools/euca_conf.in: ensure that /var/run/eucalyptus and
+ /var/run/eucalyptus/net are created at boot and have correct
+ ownerships, LP: #431114, #365349
+
+ [ Thierry Carrez ]
+ * cluster/Makefile, node/Makefile: Do not patch generated stubs if you
+ didn't regenerate them, to avoid spurious build interruptions.
+ * tools/eucalyptus-*.in: Do not guard initscripts basic output
+ messages with VERBOSE != no (LP: #431274)
+ * debian/control: Have eucalyptus-cc suggest vtun for full multi-cluster
+ networking capabilities (LP: #425928)
+
+ [ Colin Watson ]
+ * Align ports used for cloud startup detection in init scripts with the
+ corresponding code in euca_conf (LP: #430758).
+
+ [ Soren Hansen ]
+ * New snapshot.
+ * Add a build-dependency on libc3p0-java.
+
+ -- Soren Hansen Mon, 21 Sep 2009 12:14:12 +0200
+
+eucalyptus (1.6~bzr746-0ubuntu3) karmic; urgency=low
+
+ [ Dustin Kirkland ]
+ * tools/eucalyptus-nc.in: Create the suggested 32 loop devices using
+ mknod in the init script, perm'd 660, owned by root:disk, LP: #430846
+ * debian/eucalyptus-udeb.finish-install: br0 needs to start at boot,
+ LP: #430820
+
+ [ Colin Watson ]
+ * Work around netcfg/choose_interface not always being set (LP: #430820).
+ * Actually check timeout in register_local_cloud.
+
+ [ Mathias Gug ]
+ * Recommend python-image-store-proxy for eucalyptus-cloud. The Image Store
+ feature won't work without it, LP: #425926
+
+ -- Soren Hansen Wed, 16 Sep 2009 21:14:18 +0200
+
+eucalyptus (1.6~bzr746-0ubuntu2) karmic; urgency=low
+
+ [ Colin Watson ]
+ * On initial cluster installation, allow authentication to the front-end
+ using the cluster's SSH key (LP: #429087).
+ * Update the cloud .jar name we look for when registering a cluster with a
+ local cloud.
+ * Check for IPv6 listeners as well as IPv4 when registering a cluster with
+ a local cloud.
+ * Actually kill cloud/Walrus/SC processes before entering a timeout loop
+ to wait for them to die.
+ * Automatically register Walrus and storage controllers with any local
+ cloud (LP: #425922).
+ * Discard standard output from euca_conf when registering components in
+ init scripts.
+
+ [ Soren Hansen ]
+ * Add configuration for mpm_event.
+
+ -- Colin Watson Tue, 15 Sep 2009 22:44:25 +0100
+
+eucalyptus (1.6~bzr746-0ubuntu1) karmic; urgency=low
+
+ * New upstream, bugfix snapshot.
+ * Add more full-featured default network configuration (LP: #425914).
+
+ -- Soren Hansen Tue, 15 Sep 2009 13:50:40 +0200
+
+eucalyptus (1.6~bzr672-0ubuntu4) karmic; urgency=low
+
+ * Configure a bridge interface when installing a node controller
+ (LP: #424541).
+ * Don't remove /etc/eucalyptus/installer-cc.conf after registering the
+ cluster controller with a local cloud; we may need it later.
+
+ -- Colin Watson Mon, 14 Sep 2009 23:57:31 +0100
+
+eucalyptus (1.6~bzr672-0ubuntu3) karmic; urgency=low
+
+ [ Colin Watson ]
+ * Add euca_conf --discover-nodes option.
+ * Register cluster with local cloud in start as well as cleanstart.
+ * SECURITY UPDATE: Fix temporary file vulnerability in euca_conf by using
+ 'sed -i' (LP: #424459).
+
+ [ Soren Hansen ]
+ * Only ship antlr.jar in eucalyptus-java-common. (LP: #429086)
+
+ -- Soren Hansen Mon, 14 Sep 2009 12:59:40 +0200
+
+eucalyptus (1.6~bzr672-0ubuntu2) karmic; urgency=low
+
+ * Do a better job at unsetting $DISPLAY in the build.
+ * Remove gatherlog/generated/stubs which somehow snuck into the
+ diff.gz.
+
+ -- Soren Hansen Fri, 11 Sep 2009 13:26:37 +0200
+
+eucalyptus (1.6~bzr672-0ubuntu1) karmic; urgency=low
+
+ * Split eucalyptus-cloud into eucalyptus-java-common, eucalyptus-
+ cloud, eucalyptus-sc, and eucalyptus-walrus. (LP: #425908)
+ * Unset DISPLAY during the build process. The build would fail if
+ DISPLAY was set, but $DISPLAY couldn't be reached.
+ * Regenerate WSDL stubs.
+ * New, bugfix-only upstream snapshot. (LP: #426197)
+
+ -- Soren Hansen Fri, 11 Sep 2009 01:42:04 +0200
+
+eucalyptus (1.6~bzr645-0ubuntu2) karmic; urgency=low
+
+ [ Dustin Kirkland ]
+ * debian/control: eucalyptus-nc should depend on avahi-utils for the
+ avahi-publish utility used in the init script, LP: #424442
+ * tools/eucalyptus.conf: fix dhcpd configuration values, change default
+ bridge name from xenbr0 to br0
+
+ [ Colin Watson ]
+ * eucalyptus-cloud Replaces: eucalyptus-javadeps.
+
+ [ Soren Hansen ]
+ * Update WSDL stubs.
+
+ -- Soren Hansen Mon, 07 Sep 2009 15:24:04 +0200
+
+eucalyptus (1.6~bzr645-0ubuntu1) karmic; urgency=low
+
+ [ Dustin Kirkland ]
+ * debian/control:
+ - Add openssh-server and eucalyptus-common dependencies for
+ eucalyptus-cloud.
+ * debian/eucalyptus-cc.dirs, debian/eucalyptus-cloud.dirs,
+ debian/eucalyptus-nc.dirs:
+ - Consolidate directory creation.
+ * debian/eucalyptus-cc.postinst, debian/eucalyptus-cloud.postinst,
+ debian/eucalyptus-common.postinst:
+ - Adjust ownership/permissions for /var/lib/eucalyptus dirs.
+ * tools/euca_conf.in:
+ - Uncomment --no-rsync usage statement.
+ * debian/eucalyptus-cloud.install, debian/rules: install and start
+ the eucalyptus-sc init script in the eucalyptus-cloud package
+ * tools/eucalyptus-cc.in, tools/eucalyptus-java-ws.in,
+ tools/eucalyptus-nc.in: init script cleanups; use DESC appropriately,
+ exit 0 if already started when trying to start
+ * debian/eucalyptus-cc.postinst: prevent init script zombie by calling
+ db_stop to clean file descriptors properly and reap postinst script
+
+ [ Soren Hansen ]
+ * Only inject SSH keys if not running in MANAGED or MANAGED-NOVLAN
+ mode.
+ * New upstream (bugfix only) snapshot.
+ * Add commons-io build-dependency.
+
+ -- Soren Hansen Thu, 03 Sep 2009 19:15:58 -0500
+
+eucalyptus (1.6~bzr588-0ubuntu7) karmic; urgency=low
+
+ * When running in d-i, cdebconf doesn't set the seen flag on questions
+ asked interactively (otherwise there are problems with going back and
+ revisiting earlier parts of the installer). As such we can't use it to
+ decide whether questions have been preseeded. Just preseed questions if
+ they existed at all during cluster installation (LP: #423424).
+
+ -- Colin Watson Thu, 03 Sep 2009 18:09:07 +0100
+
+eucalyptus (1.6~bzr588-0ubuntu6) karmic; urgency=low
+
+ [ Dustin Kirkland ]
+ * Add Recommends: powerwake for eucalyptus-cc, and Recommends:
+ powernap for eucalyptus-nc.
+ * LSBify init script messages.
+
+ -- Soren Hansen Wed, 02 Sep 2009 16:45:39 -0500
+
+eucalyptus (1.6~bzr588-0ubuntu5) karmic; urgency=low
+
+ [ Soren Hansen ]
+ * Also include a /services symlink in our Axis2 repository.
+ * Add backport-util-concurrent runtime dependency.
+ * Set AXIS2C_HOME environment variable to point to our separate
+ repository, as the environment variable takes precedence over what
+ we put in the Apache configuration.
+ * Provide a default path for instances for the NC.
+ * For reasons unknown, Eucalyptus requires antlr.jar to be a regular
+ file rather than a symlink. We need to get to the bottom of this,
+ but for now, we will put a copy in the eucalyptus package at build
+ time.
+
+ [ Mathias Gug ]
+ * Fix eucalyptus init scripts ordering so that it starts after
+ avahi-daemon.
+ * Load apache2 alias module when generating httpd CC configuration.
+
+ -- Soren Hansen Wed, 02 Sep 2009 16:28:51 -0500
+
+eucalyptus (1.6~bzr588-0ubuntu4) karmic; urgency=low
+
+ * eucalyptus-commons-ext changed its jarname again. Adjust accordingly
+ to fix ftbfs.
+
+ -- Soren Hansen Wed, 02 Sep 2009 00:45:45 -0500
+
+eucalyptus (1.6~bzr588-0ubuntu3) karmic; urgency=low
+
+ * Install eucalyptus-nc's init script.
+ * Add extra 'dh_installinit --onlyscripts' calls to make sure update-
+ rc.d gets called correctly.
+
+ -- Soren Hansen Tue, 01 Sep 2009 23:39:01 -0500
+
+eucalyptus (1.6~bzr588-0ubuntu2) karmic; urgency=low
+
+ [ Soren Hansen ]
+ * Enable Appliance Store GUI and the Ubuntu theme. (Really fixes LP:
+ #420035)
+ * Fix Axis2 repository links.
+ * Always set the statoverride for euca_rootwrap on fresh installs.
+ This takes care of the case where there is already a eucalyptus user
+ on the system.
+ * Remove eucalyptus-{nc,cloud,cc}.prerm. They are not needed anymore.
+ * Make the java wrapper accept symlinks into its classpath.
+ * Add symlinks for all the jars needed at runtime.
+
+ [ Dustin Kirkland ]
+ * Merge Colin's changes to the init scripts. Salvaged from the
+ removed, old init scripts.
+
+ [ Colin Watson ]
+ * Run eucalyptus-udeb after netcfg (LP: #422876).
+ * Fix seen flag detection in finish-install script.
+
+ -- Soren Hansen Tue, 01 Sep 2009 18:14:04 -0500
+
+eucalyptus (1.6~bzr588-0ubuntu1) karmic; urgency=low
+
+ [ Colin Watson ]
+ * debian/eucalyptus-udeb.postinst:
+ - Fix order of db_set vs. db_metaget.
+ - Fix reversed sense of cluster detection.
+ - Ensure that tasksel/first preseeding will be propagated to /target.
+
+ [ Soren Hansen ]
+ * On upgrades, migrate statoverride for /usr/share/eucalyptus/euca_rootwrap
+ to /usr/lib/eucalyptus/euca_rootwrap, in case the admin overrode it.
+ * Make sure the configuration bits in eucalyptus-common's postinst
+ only get called during install and upgrade.
+ * Add axis2 "repository" for Eucalyptus. This is the only way to use a
+ separate Axis2/C configuration file for Eucalyptus.
+ * New upstream snapshot. (FFe: LP: #420035)
+
+ [ Dustin Kirkland ]
+ * Remove init scripts from source package that are no longer used.
+ * Make sure $EUID is set in init scripts.
+
+ -- Soren Hansen Mon, 31 Aug 2009 19:27:28 -0500
+
+eucalyptus (1.6~bzr515-0ubuntu4) karmic; urgency=low
+
+ * 04-axis2c-1.6.0-rampart-1.3.0.patch:
+ - Build against new Axis2/C+Rampart stack.
+
+ -- Soren Hansen Sat, 29 Aug 2009 00:03:02 +0000
+
+eucalyptus (1.6~bzr515-0ubuntu3) karmic; urgency=low
+
+ * debian/eucalyptus-udeb.postinst:
+ - Ignore errors from db_input, which usually just mean that the question
+ has been preseeded.
+ - Don't mark eucalyptus/install-mode as seen before asking it.
+ - Fix cluster detection.
+
+ -- Colin Watson Fri, 28 Aug 2009 17:52:20 +0100
+
+eucalyptus (1.6~bzr515-0ubuntu2) karmic; urgency=low
+
+ * Remove clc/modules/msgs/src/main/resources/msgs-binding.xml on clean
+ rather than clc/modules/msgs/resources/msgs-binding.xml (old location).
+ * Generate node preseed file on cluster installation.
+ * Fetch node preseed file from /node-preseed on the cluster rather than
+ /node.preseed.
+ * Alias /node-preseed on the cluster's web server to
+ /etc/eucalyptus/node-preseed.conf.
+ * Use new-style euca_conf options in eucalyptus-cc init script.
+
+ -- Colin Watson Thu, 27 Aug 2009 13:42:08 +0100
+
+eucalyptus (1.6~bzr515-0ubuntu1) karmic; urgency=low
+
+ * New upstream snapshot.
+
+ -- Soren Hansen Wed, 26 Aug 2009 23:17:49 +0000
+
+eucalyptus (1.6~bzr452-0ubuntu5) karmic; urgency=low
+
+ * Add a Vcs-Bzr field.
+ * Advertise running cluster and node controllers using Avahi.
+ * Add installer integration:
+ - eucalyptus-udeb asks whether you want to install a cluster or a node,
+ based on whether any cluster controllers are currently advertised on
+ the network.
+ - eucalyptus-cc asks for a cluster name on first installation, and drops
+ that into /etc/eucalyptus/installer-cc.conf. On startup, if the
+ cluster doesn't have its X.509 key yet, there's a cloud controller on
+ the local machine, and it knows the cluster name, it will
+ automatically register itself with the cloud controller.
+
+ -- Colin Watson Wed, 26 Aug 2009 12:25:14 +0100
+
+eucalyptus (1.6~bzr452-0ubuntu4) karmic; urgency=low
+
+ * Update and apply debian/patches/axis2c_home_init.diff.
+
+ -- Colin Watson Tue, 25 Aug 2009 09:37:35 +0100
+
+eucalyptus (1.6~bzr452-0ubuntu3) karmic; urgency=low
+
+ * Only install the /var/lib/eucalyptus/keys/ directory in
+ eucalyptus-cloud, not cc-client-policy.xml or nc-client-policy.xml;
+ thanks to Daniel Nurmi for confirmation (LP: #418350).
+
+ -- Colin Watson Tue, 25 Aug 2009 00:17:20 +0100
+
+eucalyptus (1.6~bzr452-0ubuntu2) karmic; urgency=low
+
+ * Newer version of libeucalyptus-commons-ext-java renamed the Eucalyptus jar.
+ Change accordingly in debian/build-jars and add a versioned dependency on
+ libeucalyptus-commons-ext-java.
+
+ -- Soren Hansen Mon, 24 Aug 2009 05:57:56 +0000
+
+eucalyptus (1.6~bzr452-0ubuntu1) karmic; urgency=low
+
+ * New upstream release
+
+ -- Soren Hansen Sun, 23 Aug 2009 23:18:20 +0000
+
+eucalyptus (1.5~bzr266-0ubuntu2) jaunty; urgency=low
+
+ * Ship missing populate_arp.pl. (LP: #358541)
+
+ -- Soren Hansen Thu, 09 Apr 2009 17:54:34 +0200
+
+eucalyptus (1.5~bzr266-0ubuntu1) jaunty; urgency=low
+
+ * New upstream snapshot. (LP: #356519)
+
+ -- Soren Hansen Tue, 07 Apr 2009 16:11:48 +0200
+
+eucalyptus (1.5~bzr265-0ubuntu1) jaunty; urgency=low
+
+ * New upstream snapshot. (LP: #354795, #354846, #352896, #354895,
+ #354852, #354098, #351650, #353301)
+
+ -- Soren Hansen Mon, 06 Apr 2009 11:27:50 +0200
+
+eucalyptus (1.5~bzr250-0ubuntu1) UNRELEASED; urgency=low
+
+ * New upstream snapshot. (LP: #347629, #345165)
+
+ -- Soren Hansen Wed, 01 Apr 2009 17:36:23 -0400
+
+eucalyptus (1.5~bzr241-0ubuntu1) jaunty; urgency=low
+
+ * New upstream snapshot.
+ + Make sure that no addresses outside the specified range are used.
+ (LP: #344330)
+ + Fix EBS volume detachment. (LP: #344568)
+ + Fix EBS volume attachment. (LP: #344613)
+ + Fix deletiong volumes marked as deleted. (LP: #344620)
+ + Add missing EBS flag in sample conffile. (LP: #345004)
+ + Allow more concurrent downloads from Walrus. (LP: #345034)
+ * Rely on libvirt's defaults for the emulator. (LP: #336852)
+
+ -- Soren Hansen Thu, 19 Mar 2009 00:33:07 +0100
+
+eucalyptus (1.5~bzr232-0ubuntu1) jaunty; urgency=low
+
+ * New upstream snapshot. (LP: #342024, #341965)
+ + Correctly set up swap and ephemeral storage for KVM VM's. (LP:
+ #332973)
+ + Use correct names for devices. (LP: #334665)
+ + Use compression for image transfers. (LP: #332971)
+ + Don't fail if first attempt at image download fails. (LP: #337027)
+ + Don't time out if image transfer takes more than one hour, but is
+ still on-going. (LP: #337870)
+ + Don't allow to delete in-use volumes. (LP: #342121)
+ + Correctly handle failure to attach volumes (LP: #342077)
+ + Handle unknown EBS block device names with KVM backend. (LP: #342076)
+ + Make euca_conf -delnode remove the node properly. (LP: #342055)
+ * Drop addnode-ssh-magic.patch. Adopted upstream.
+
+ -- Soren Hansen Tue, 17 Mar 2009 23:14:50 +0100
+
+eucalyptus (1.5~bzr212-0ubuntu4) UNRELEASED; urgency=low
+
+ * Also create /var/run/eucalyptus/net for the node controller.
+ (LP: #338764)
+ * Added bridge-utils and dhcp3-server as recommended packages for the
+ node controller. (LP: #338846)
+
+ -- Soren Hansen Mon, 16 Mar 2009 09:43:08 +0100
+
+eucalyptus (1.5~bzr212-0ubuntu3) jaunty; urgency=low
+
+ * Create /var/run/eucalyptus in all the init scripts.
+
+ -- Soren Hansen Tue, 10 Mar 2009 23:16:19 +0100
+
+eucalyptus (1.5~bzr212-0ubuntu2) jaunty; urgency=low
+
+ * Fix version check in eucalyptus-cc's postinst. (LP: #337477 (again))
+ * Patch euca_conf's addnode functionality to allow the use of sudo on
+ the node controller, and also fix up the path to authorized_keys.
+ * Have eucalyptus-nc's postinst script create the authorized_keys file
+ to make sure it gets the right ownership and mode.
+ * Give the eucalyptus user a shell, and remove the various hacks applied
+ to work around the lack of it.
+
+ -- Soren Hansen Tue, 10 Mar 2009 10:08:49 +0200
+
+eucalyptus (1.5~bzr212-0ubuntu1) jaunty; urgency=low
+
+ * New upstream release (LP: #337042, #337514, #337539, #337541, #337884,
+ #338486)
+ * Weed out the unused/obsolete patches.
+
+ -- Soren Hansen Mon, 09 Mar 2009 18:38:59 +0100
+
+eucalyptus (1.5~bzr203-0ubuntu3) UNRELEASED; urgency=low
+
+ * Create SSH keypair for eucalyptus user on cluster controller. (LP: 337477)
+
+ -- Soren Hansen Mon, 09 Mar 2009 16:58:40 +0100
+
+eucalyptus (1.5~bzr203-0ubuntu2) jaunty; urgency=low
+
+ * Added missing dependencies:
+ + eucalyptus-cloud: vblade, lvm2, dmsetup
+ + eucalyptus-nc: adduser
+ * Split out the init script so that each component has its own (LP: #334804)
+ * Make eucalyptus user a member of libvirtd on the node controller. (LP: #337482)
+
+ -- Soren Hansen Wed, 04 Mar 2009 12:07:53 -0800
+
+eucalyptus (1.5~bzr203-0ubuntu1) jaunty; urgency=low
+
+ * New upstream release. (LP: #334732, #336841)
+
+ -- Soren Hansen Tue, 03 Mar 2009 10:01:33 -0800
+
+eucalyptus (1.5~bzr198-0ubuntu5) UNRELEASED; urgency=low
+
+ * Fixed missing dependency on eucalytus-gl for eucalyptus-{nc,cc}.
+ * Disable JCE check. (LP: #334501)
+
+ -- Soren Hansen Tue, 03 Mar 2009 09:18:03 -0800
+
+eucalyptus (1.5~bzr198-0ubuntu4) jaunty; urgency=low
+
+ * Add libvirt-bin and kvm as Recommends for the node controller,
+ and make kvm the default hypervisor.
+
+ -- Soren Hansen Wed, 25 Feb 2009 14:07:45 +0100
+
+eucalyptus (1.5~bzr198-0ubuntu3) jaunty; urgency=low
+
+ * Fix spelling mistake in eucalyptus-common.postinst.
+ * Make sure we actually run the cloud controller by using a valid shell.
+ * Start the cluster controller even if no NODES are defined.
+
+ -- Soren Hansen Tue, 24 Feb 2009 16:49:06 +0100
+
+eucalyptus (1.5~bzr198-0ubuntu2) jaunty; urgency=low
+
+ * Make sure rootwrap binary gets its ownership and mode applied
+ immediately.
+ * Correctly set EUCA_USER from -common's postinst. (LP: #333341)
+ * Don't fail in the init script if NODES is empty. (LP: #333333)
+
+ -- Soren Hansen Mon, 23 Feb 2009 20:42:24 +0100
+
+eucalyptus (1.5~bzr198-0ubuntu1) jaunty; urgency=low
+
+ * New upstream release
+
+ -- Soren Hansen Thu, 19 Feb 2009 01:00:04 +0200
+
+eucalyptus (1.5~bzr184-0ubuntu3) UNRELEASED; urgency=low
+
+ * Create eucalyptus user in eucalyptus-common.postinst.
+ * Fix ownership of /usr/share/eucalyptus/euca_rootwrap
+ * init_lsb_headers.diff:
+ - Add LSB headers to init script
+ * axis2c_home_init.diff:
+ - Set AXIS2_HOME in init script.
+ - Point Eucalyptus apache instance at the axis2 module.
+ * Add apache2-mpm and libapache2-mod-axis2c dependencies to node and
+ cluster controller.
+
+ -- Soren Hansen Thu, 19 Feb 2009 00:50:30 +0200
+
+eucalyptus (1.5~bzr184-0ubuntu2) jaunty; urgency=low
+
+ * initscript-eucalyptus-path.diff:
+ - Default to "/" for the EUCALYPTUS variable in init script.
+ * init-reload.diff:
+ - Add a "reload" option to the init script (does the same as restart).
+ * var_lib_eucalyptus.diff:
+ - Change all references to /var/eucalyptus to /var/lib/eucalyptus.
+ * Make all components depend on eucalyptus-common.
+ * Make eucalyptus-common postinst perform some initial configuration.
+ * Have eucalyptus-cloud depend on eucalyptus-javadeps instead of
+ shipping them itself.
+ * Make eucalyptus-{cc,nc,cloud}.postinst set up the individual services
+ automatically.
+
+ -- Soren Hansen Wed, 18 Feb 2009 18:25:36 +0200
+
+eucalyptus (1.5~bzr184-0ubuntu1) jaunty; urgency=low
+
+ * New upstream release
+
+ -- Soren Hansen Wed, 18 Feb 2009 09:46:17 +0200
+
+eucalyptus (1.5~bzr139-0ubuntu1) jaunty; urgency=low
+
+ * Initial release.
+
+ -- Soren Hansen Wed, 11 Feb 2009 02:45:39 +0200
+
--- eucalyptus-1.6.2.orig/debian/eucalyptus-cc.upstart
+++ eucalyptus-1.6.2/debian/eucalyptus-cc.upstart
@@ -0,0 +1,101 @@
+# eucalyptus-cc
+
+description "Eucalyptus cluster controller"
+author "Matt Zimmerman "
+
+start on started eucalyptus
+stop on stopping eucalyptus
+
+# These must be set in the apache2 environment -mdz
+env HTTPD_CONF=/var/run/eucalyptus/httpd-cc.conf
+env EUCALYPTUS=/
+env AXIS2C_HOME=/etc/eucalyptus/axis2
+
+pre-start script
+ # clean up semaphores
+ rm -f /dev/shm/*eucalyptusCC*
+ [ "${CLEAN}" = 1 ] && rm -f /var/lib/eucalyptus/CC/*
+
+ # Enable IP forwarding
+ sysctl -w net.ipv4.ip_forward=1
+
+ mkdir -p /var/run/eucalyptus/net
+ chown eucalyptus:eucalyptus /var/run/eucalyptus /var/run/eucalyptus/net
+
+ . /etc/eucalyptus/eucalyptus.conf
+ . /etc/eucalyptus/eucalyptus.local.conf
+
+ # Generate httpd.conf
+ AXIS2C_HOME=/etc/eucalyptus/axis2
+ ALLOWED_IPS="all"
+ HTTPD_HOME="/"
+ tmp=$(tempfile)
+
+ # let's configure the common parts for both CC and NC
+ cat $EUCALYPTUS/etc/eucalyptus/httpd.conf |sed "s|EUCALYPTUS|$EUCALYPTUS|"|sed "s|AXIS2C_HOME|$AXIS2C_HOME|"|sed "s|\(ServerRoot\).*|\1 "$HTTPD_HOME"|" |sed "s|EUCA_USER|$EUCA_USER|" >> $tmp
+
+ # if we find authz load it (needed by ubuntu)
+ if [ -e $HTTPD_HOME/usr/lib/apache2/modules/mod_authz_host.so ]; then
+ echo "LoadModule authz_host_module /usr/lib/apache2/modules/mod_authz_host.so" >> $tmp
+ fi
+
+ # let's configure the CC
+ cat $tmp |sed "s|\(Listen\).*|\1 $CC_PORT|"|sed "s|\(PidFile\).*|\1 $EUCALYPTUS/var/run/eucalyptus/eucalyptus-cc.pid|"|sed "s|\(Allow from\).*|\1 $ALLOWED_IPS|"|sed "s|\(ErrorLog\).*|\1 $EUCALYPTUS/var/log/eucalyptus/httpd-cc_error_log|"|sed "s|\(StartServers\).*|\1 5|"|sed "s|\(MinSpareServers\).*|\1 5|"|sed "s|\(MaxSpareServers\).*|\1 10|"|sed "s|\(MaxClients\).*|\1 8|" |sed "s|\(MinSpareThreads\).*|\1 25|" | sed "s|\(MaxSpareThreads\).*|\1 75|" | sed "s|\(ThreadsPerChild\).*|\1 1|" | sed "s|\(ThreadLimit\).*|\1 64|" > $HTTPD_CONF
+
+ cat >>$HTTPD_CONF <
+ Order allow,deny
+ Allow from all
+
+EOF
+
+end script
+
+exec apache2 -f /var/run/eucalyptus/httpd-cc.conf -D FOREGROUND
+
+post-start script
+ timeout=60
+ while [ $timeout -gt 0 ]; do
+ . /etc/eucalyptus/eucalyptus-ipaddr.conf
+ if wget -q -T10 -t1 -O- http://$CC_IP_ADDR:8774/axis2/services/ | \
+ grep EucalyptusCC; then
+
+ # It's alive! Start uec-component-listener if no CLC
+ if [ ! -f /usr/share/eucalyptus/eucalyptus-cloud-1.6.2.jar ]; then
+ initctl start uec-component-listener
+ fi
+ exit 0
+ fi
+ sleep 2
+ timeout=$(($timeout-1))
+ done
+ stop
+ exit 1
+end script
+
+post-stop script
+ # clean up semaphores
+ rm -f /dev/shm/*eucalyptusCC*
+ [ "${CLEAN}" = 1 ] && rm -f /var/lib/eucalyptus/CC/*
+
+ # kill vtund processes
+ for pidfile in /var/run/eucalyptus/vtund*.pid \
+ /var/run/eucalyptus/net/euca-dhcp.pid; do
+
+ if [ -s $pidfile ]; then
+ pid=$(cat $pidfile)
+ timeout=5
+ while [ $timeout -gt 0 ] && ps $pid >/dev/null; do
+ kill $pid
+ sleep 1
+ timeout=$(($timeout-1))
+ done
+ fi
+ done
+
+ rm -f /var/lib/eucalyptus/CC/*
+end script
--- eucalyptus-1.6.2.orig/debian/uec-component-listener.config
+++ eucalyptus-1.6.2/debian/uec-component-listener.config
@@ -0,0 +1,11 @@
+#! /bin/sh
+set -e
+
+. /usr/share/debconf/confmodule
+
+if [ "$1" = configure ] && [ -z "$2" ]; then
+ db_input low eucalyptus/autoregistration || true
+ db_go
+fi
+
+exit 0
--- eucalyptus-1.6.2.orig/debian/uec-component-listener.templates
+++ eucalyptus-1.6.2/debian/uec-component-listener.templates
@@ -0,0 +1,8 @@
+Template: eucalyptus/autoregistration
+Type: boolean
+Default: true
+Description: Do you want to automatically register local UEC components ?
+ By default, this controller will automatically register other UEC components
+ from the local network. This can cause security issues on untrusted networks.
+ Note that you can manually enable or disable autoregistration after install
+ using the uec-registration tool.
--- eucalyptus-1.6.2.orig/debian/eucalyptus-url
+++ eucalyptus-1.6.2/debian/eucalyptus-url
@@ -0,0 +1,12 @@
+#!/bin/sh -e
+
+# Print the administration URL in the MOTD
+# Use an ip address URL for now; this could get prettier in the future,
+# perhaps using the hostname.
+
+printf "\nWelcome to the Ubuntu Enterprise Cloud!\n"
+printf " * Documentation: http://www.ubuntu.com/cloud\n"
+if [ -r "/etc/init/eucalyptus-cloud.conf" ]; then
+ . /etc/eucalyptus/eucalyptus-ipaddr.conf
+ printf " * Administration: https://%s:8443/\n" "$CLOUD_IP_ADDR"
+fi
--- eucalyptus-1.6.2.orig/debian/eucalyptus-common.manpages
+++ eucalyptus-1.6.2/debian/eucalyptus-common.manpages
@@ -0,0 +1,2 @@
+tools/euca_conf.8
+tools/eucalyptus.conf.5
--- eucalyptus-1.6.2.orig/debian/eucalyptus-cc.templates
+++ eucalyptus-1.6.2/debian/eucalyptus-cc.templates
@@ -0,0 +1,83 @@
+Template: eucalyptus/cluster-name
+Type: string
+Default: cluster1
+_Description: Eucalyptus cluster name:
+ Enter a name for this cluster. The name should contain only ASCII letters,
+ digits, hyphens, and underscores. It will be shown to users as the name of
+ an availability zone.
+
+Template: eucalyptus/subnet
+Type: string
+Default: 172.19.0.0
+Description: Choose a subnet for your UEC instances:
+ The subnet should be set to an IP subnet that is free for eucalyptus to use
+ (i.e. no other system connected to your network directly is configured with
+ addresses from this subnet).
+ .
+ Examples: 192.168.144.0, 172.17.0.0, 10.0.0.0
+
+Template: eucalyptus/netmask
+Type: string
+Default: 255.255.0.0
+Description: Choose a netmask for your UEC instances:
+ The netmask of subnet you specified.
+ .
+ Examples: 255.255.255.0, 255.255.240.0, 255.255.0.0
+
+Template: eucalyptus/dns
+Type: string
+Default: 192.168.144.0
+Description: Choose a DNS for your UEC instances:
+ The DNS should be set to the IP address of a DNS server that your systems use
+ (usually safe to use the same DNS that is configured on the front-end).
+
+Template: eucalyptus/publicips
+Type: string
+Default:
+Description: Provide a list of "public" IP's for your instances:
+ Eucalyptus requires a pool of IP addresses that can be dynamically assigned as
+ the "public" IPs of virtual machines. These IPs must be unused within their
+ Class C subnet, this system must have an interface configured with an address
+ on this subnet, and your prospective users must be able to connect to these
+ IPs from wherever they run the client tools.
+ .
+ Please specify one or more ranges of IP addresses, e.g.:
+ 192.168.1.100-192.168.1.199
+ or
+ 192.168.2.50-192.168.2.99 192.168.2.150-192.168.2.199
+ .
+ You may leave this blank if you have no IP addresses available, BUT you and
+ your users must then request the private addressing scheme when starting a
+ virtual machine instance. For ec2-run-instances and euca-run-instances, this
+ is done with the option "--addressing private".
+
+Template: eucalyptus/addrspernet
+Type: string
+Default: 32
+Description: Choose number of addresses per network/security group:
+ The number of addresses can be used to limit the number of instances that can
+ be attached to each named security group simultaneously.
+
+Template: eucalyptus/mode
+Type: select
+Default: MANAGED-NOVLAN
+Choices: STATIC, SYSTEM, MANAGED, MANAGED-NOVLAN
+Description: Networking mode for your cluster:
+ MANAGED and MANAGED-NOVLAN configure eucalyptus to fully manage
+ the VM networks, and enables the ability to use EBS, security groups
+ and dynamic public IP assignment (with and without vlan tagging of
+ security group networks, respectively).
+ .
+ In STATIC mode, you can manually configure a set of IP addresses that will be
+ allocated to VMs at boot time in a first come, first served manner.
+ .
+ If you would like UEC to not manage the VM network at all, choose SYSTEM. In
+ this mode, VM interfaces are attached directly to your physical ethernet by
+ way of a bridge, at which point they will typically invoke a DHCP client to
+ aquire an IP address. Use this mode if you wish to manage VM IPs yourself, or
+ allow the VMs to pick up an IP from a non-UEC managed DHCP server.
+
+Template: eucalyptus/cloud-address
+Type: string
+Description: Cloud controller address:
+ The IP address of the cloud controller, which should be preseeded in most cases
--- eucalyptus-1.6.2.orig/debian/eucalyptus-nc.templates
+++ eucalyptus-1.6.2/debian/eucalyptus-nc.templates
@@ -0,0 +1,14 @@
+Template: eucalyptus-nc/no_vmx
+Type: error
+_Description: This hardware does not support virtualization acceleration
+ This system's CPU does not have support for virtualization acceleration,
+ which is strongly recommended for Eucalyptus Nodes. Eucalyptus running on
+ this hardware will be unaccelerated.
+
+Template: eucalyptus/cluster-name
+Type: string
+Default: cluster1
+_Description: Eucalyptus cluster name:
+ Enter a name for this cluster. The name should contain only ASCII letters,
+ digits, hyphens, and underscores. It will be shown to users as the name of
+ an availability zone.
--- eucalyptus-1.6.2.orig/debian/eucalyptus-cc.prerm
+++ eucalyptus-1.6.2/debian/eucalyptus-cc.prerm
@@ -0,0 +1,7 @@
+#!/bin/sh -e
+
+if [ "$1" = "remove" ]; then
+ stop eucalyptus-cc-publication || true
+fi
+
+#DEBHELPER#
--- eucalyptus-1.6.2.orig/debian/eucalyptus-nc.postinst
+++ eucalyptus-1.6.2/debian/eucalyptus-nc.postinst
@@ -0,0 +1,49 @@
+#!/bin/sh -e
+
+. /usr/share/debconf/confmodule
+
+if [ "$1" = "configure" ]
+then
+ if [ -z "$2" ]; then
+ # Store target cluster name, if any
+ if db_get eucalyptus/cluster-name && [ -n "$RET" ]; then
+ echo "CC_NAME=\"$RET\"" >> /etc/eucalyptus/eucalyptus-nc.conf
+ fi
+ fi
+ if dpkg --compare-versions "$2" lt 1.5~bzr203-0ubuntu2
+ then
+ adduser eucalyptus libvirtd
+ fi
+
+ EUCA_HOME=`getent passwd eucalyptus | cut -f6 -d:`
+ if ! [ -d "$EUCA_HOME/.ssh" ]
+ then
+ mkdir -p "$EUCA_HOME/.ssh"
+ fi
+ if ! [ -f "$EUCA_HOME/.ssh/authorized_keys" ]
+ then
+ touch "$EUCA_HOME/.ssh/authorized_keys"
+ fi
+
+ if dpkg --compare-versions "$2" lt 1.5~bzr212-0ubuntu2
+ then
+ if [ -d "$EUCA_HOME/.ssh" ]
+ then
+ chown eucalyptus "$EUCA_HOME/.ssh"
+ chmod 755 "$EUCA_HOME/.ssh"
+ fi
+ if [ -f "$EUCA_HOME/.ssh/authorized_keys" ]
+ then
+ chown eucalyptus "$EUCA_HOME/.ssh/authorized_keys"
+ chmod 600 "$EUCA_HOME/.ssh/authorized_keys"
+ fi
+ fi
+
+ # Ensure eucalyptus user owns the instance dirs
+ for i in instances instances/admin instances/eucalyptus instances/eucalyptus/cache; do
+ dir="/var/lib/eucalyptus/$i"
+ [ -d "$dir" ] && chown eucalyptus:eucalyptus "$dir" || true
+ done
+fi
+
+#DEBHELPER#
--- eucalyptus-1.6.2.orig/debian/eucalyptus-common.eucalyptus.upstart
+++ eucalyptus-1.6.2/debian/eucalyptus-common.eucalyptus.upstart
@@ -0,0 +1,89 @@
+# eucalyptus
+
+description "Eucalyptus web services"
+author "Matt Zimmerman , Dustin Kirkland "
+
+start on eucalyptus-network-is-ready
+stop on runlevel [!2345]
+
+export CLEAN
+
+pre-start script
+ # Check if installed
+ [ -f /usr/sbin/euca_conf ] || { stop; exit 0; }
+
+ # Ensure that the iptables module gets loaded here
+ iptables -t nat -L -n >/dev/null
+ iptables -L -n > /dev/null
+
+ mkdir -p /var/run/eucalyptus/net
+ chown eucalyptus:eucalyptus /var/run/eucalyptus /var/run/eucalyptus/net
+
+ . /etc/eucalyptus/eucalyptus.conf
+ . /etc/eucalyptus/eucalyptus.local.conf
+
+ if [ "$EUCALYPTUS" = "not_configured" ]; then
+ echo "Eucalyptus is not configured yet"
+ exit 1
+ fi
+ # Several components of Eucalyptus (NC, SC) need more loop devices
+ # than the arbitrarily low Ubuntu default of 8
+ for i in $(seq 0 31); do
+ [ -b /dev/loop$i ] || (mknod -m 660 /dev/loop$i b 7 $i && chown root:disk /dev/loop$i)
+ done
+end script
+
+script
+ . /etc/eucalyptus/eucalyptus.conf
+
+ opts="-h $EUCALYPTUS -u $EUCA_USER --pidfile /var/run/eucalyptus/eucalyptus.pid -l $LOGLEVEL -L console-log"
+ services=""
+
+ # If the -cloud package is not installed, disable the cloud service
+ if [ ! -f /usr/share/eucalyptus/eucalyptus-cloud-1.6.2.jar ]; then
+ opts="$opts --disable-cloud"
+ else
+ services="$services cloud"
+ fi
+
+ # If the -walrus package is not installed, disable the walrus service
+ if [ ! -f /usr/share/eucalyptus/eucalyptus-walrus-1.6.2.jar ]; then
+ opts="$opts --disable-walrus"
+ else
+ services="$services walrus"
+ fi
+
+ # If the -sc package is not installed, disable the storage controller
+ # service
+ if [ ! -f /usr/share/eucalyptus/eucalyptus-storagecontroller-1.6.2.jar ]; then
+ opts="$opts --disable-storage"
+ else
+ services="$services sc"
+ fi
+
+ # handle eucalyptus.conf options
+ if [ "$DISABLE_DNS" = "Y" ]; then
+ opts="$opts --remote-dns"
+ fi
+ if [ "$DISABLE_EBS" = "Y" ]; then
+ opts="$opts --disable-ebs"
+ fi
+
+ # Start the appropriate service(s)
+ if [ -n "$services" ]; then
+ # Cloud services to run
+ exec eucalyptus-cloud $opts
+ elif [ -r "/etc/init/eucalyptus-nc.conf" ] || [ -r "/etc/init/eucalyptus-cc.conf" ]; then
+ # Node or CC services to run
+ # Why do we sleep here, rather than emitting a signal? Such that we can run:
+ # 'status eucalyptus' and see if the eucalyptus services are running.
+ # Actually, "status eucalyptus" on the NC won't work until Upstart Bug #447654
+ # gets fixed. Sorry.
+ exec sleep 999999999d
+ fi
+
+ # If we're here, then we're not actually running any eucalyptus services
+ stop
+ exit 0
+
+end script
--- eucalyptus-1.6.2.orig/debian/wsdl.md5sums
+++ eucalyptus-1.6.2/debian/wsdl.md5sums
@@ -0,0 +1,3 @@
+c34f53fd8c47ad46e9d0c2c69912bfcc wsdl/eucalyptus_cc.wsdl
+8998c4c94d1ec9e201778a734a5bcea2 wsdl/eucalyptus_gl.wsdl
+c6901d21c5bb5e613548cd2f252d637d wsdl/eucalyptus_nc.wsdl
--- eucalyptus-1.6.2.orig/debian/eucalyptus-walrus.install
+++ eucalyptus-1.6.2/debian/eucalyptus-walrus.install
@@ -0,0 +1 @@
+/usr/share/eucalyptus/eucalyptus-walrus-1.6.2.jar
--- eucalyptus-1.6.2.orig/debian/source_eucalyptus.py
+++ eucalyptus-1.6.2/debian/source_eucalyptus.py
@@ -0,0 +1,61 @@
+import os.path, os
+
+from apport.hookutils import *
+
+def installed_packages(report):
+ packages=['vmbuilder', 'euca2ools', 'ec2-api-tools', 'ec2-ami-tools', 'eucalyptus-common', 'eucalyptus-sc',
+ 'eucalyptus-cloud', 'eucalyptus-walrus', 'eucalyptus-java-common', 'eucalyptus-cc',
+ 'eucalyptus-nc', 'eucalyptus-gl', 'uec-component-listener']
+
+ version = ''
+ for package in packages:
+ try:
+ vesion = packaging.get_versions(package)
+ except ValueError:
+ version = 'N/A'
+ if version is None:
+ version = 'N/A'
+ versions += '%s %s\n' %(package, version)
+ report['EucalyptusInstalledVersions'] = versions
+
+def add_info(report):
+ # Report on the versions that are installed, including: vmbuilder, ec2-api-tools
+ # ec2-ami-tools, euca2ools, and eucalyptus*
+ installed_packages(report)
+
+ attach_file_if_exists(report, '/etc/eucalyptus/eucalyptus.conf', key='eucalyptus.conf')
+ attach_file_if_exists(report, '/etc/eucalyptus/eucalyptus.local.conf', key='eucalyptus.local.conf')
+ attach_file_if_exists(report, '/etc/eucalyptus/eucalyptus-cc.conf')
+
+ # Do these contain any private data? They're all currently world-readable
+ # -mdz
+ attach_file_if_exists(report, '/var/log/eucalyptus/axis2c.log', key='EucalyptusAxis2cLog')
+ attach_file_if_exists(report, '/var/log/eucalyptus/cc.log', key='EucalyptusCCLog')
+ attach_file_if_exists(report, '/var/log/eucalyptus/cloud-debug.log', key='EucalyptusCloudDebugLog')
+ attach_file_if_exists(report, '/var/log/eucalyptus/cloud-output.log', key='EucalyptusCloudOutputLog')
+ attach_file_if_exists(report, '/var/log/eucalyptus/httpd-cc_error_log', key='EucalyptusHTTPDErrorLog')
+
+ tags = []
+
+ ui.information("As part of the bug reporting process, you'll be asked a series of questions to help provide a more descriptive bug report. Please answer the following questions to the best of your ability. Afterwards, a browser will be opened to finish filling this as a bug in the Launchpad bug tracking system.")
+
+ response = ui.yesno("Is this issue easily reproducable in the current version of Eucalytptus?")
+ if response == None: #user canceled
+ raise StopIteration
+
+ if response == False:
+ report['EasilyReproduced'] = 'No'
+ elif rsponse == True:
+ report['EasilyReproduced'] = 'Yes'
+ ui.information("Please provide clear steps so that the Ubuntu Developers can reproduce your bug.")
+
+ response = ui.yesno("Are you able to provide more information on how your UEC is setup")
+ if response == None: #use canceled
+ raise StopIteration
+
+ if response == False:
+ report['UECDescSetup'] = 'No'
+ ui.information("It would be benefial to the bug report if you could provide how your UEC is setup.")
+ if response == True:
+ report['UECDescSetup'] = 'Yes'
+ ui.information("Please provide a detailed description of your UEC setup.")
--- eucalyptus-1.6.2.orig/debian/eucalyptus-java-common.links
+++ eucalyptus-1.6.2/debian/eucalyptus-java-common.links
@@ -0,0 +1,81 @@
+/usr/share/java/axiom-api.jar /usr/share/eucalyptus/axiom-api.jar
+/usr/share/java/axiom-dom.jar /usr/share/eucalyptus/axiom-dom.jar
+/usr/share/java/axiom-impl.jar /usr/share/eucalyptus/axiom-impl.jar
+/usr/share/java/backport-util-concurrent.jar /usr/share/eucalyptus/backport-util-concurrent.jar
+/usr/share/java/bcprov.jar /usr/share/eucalyptus/bcprov.jar
+/usr/share/java/commons-fileupload.jar /usr/share/eucalyptus/commons-fileupload.jar
+/usr/share/java/commons-httpclient.jar /usr/share/eucalyptus/commons-httpclient.jar
+/usr/share/java/commons-lang.jar /usr/share/eucalyptus/commons-lang.jar
+/usr/share/java/commons-pool.jar /usr/share/eucalyptus/commons-pool.jar
+/usr/share/java/dnsjava.jar /usr/share/eucalyptus/dnsjava.jar
+/usr/share/java/drools-core.jar /usr/share/eucalyptus/drools-core.jar
+/usr/share/java/drools-compiler.jar /usr/share/eucalyptus/drools-compiler.jar
+/usr/share/java/ecj.jar /usr/share/eucalyptus/ecj.jar
+/usr/share/java/gnumail.jar /usr/share/eucalyptus/gnumail.jar
+/usr/share/java/gnumail-providers.jar /usr/share/eucalyptus/gnumail-providers.jar
+/usr/share/java/inetlib.jar /usr/share/eucalyptus/inetlib.jar
+/usr/share/java/geronimo-jpa-3.0-spec.jar /usr/share/eucalyptus/geronimo-jpa-3.0-spec.jar
+/usr/share/java/google-collect.jar /usr/share/eucalyptus/google-collect.jar
+/usr/share/java/groovy.jar /usr/share/eucalyptus/groovy.jar
+/usr/share/java/gwt-servlet.jar /usr/share/eucalyptus/gwt-servlet.jar
+/usr/share/java/gwt-user.jar /usr/share/eucalyptus/gwt-user.jar
+/usr/share/java/jaxp-1.3.jar /usr/share/eucalyptus/jaxp-1.3.jar
+/usr/share/java/jetty.jar /usr/share/eucalyptus/jetty.jar
+/usr/share/java/jibx-run.jar /usr/share/eucalyptus/jibx-run.jar
+/usr/share/java/json-lib.jar /usr/share/eucalyptus/json-lib.jar
+/usr/share/java/junit.jar /usr/share/eucalyptus/junit.jar
+/usr/share/java/log4j-1.2.jar /usr/share/eucalyptus/log4j-1.2.jar
+/usr/share/java/netty.jar /usr/share/eucalyptus/netty.jar
+/usr/share/java/servlet-api-2.5.jar /usr/share/eucalyptus/servlet-api-2.5.jar
+/usr/share/java/wss4j.jar /usr/share/eucalyptus/wss4j.jar
+/usr/share/java/xalan2.jar /usr/share/eucalyptus/xalan2.jar
+/usr/share/java/xercesImpl.jar /usr/share/eucalyptus/xercesImpl.jar
+/usr/share/java/xml-security.jar /usr/share/eucalyptus/xml-security.jar
+/usr/share/java/antlr3-3.0.1+dfsg.jar /usr/share/eucalyptus/antlr3-3.0.1+dfsg.jar
+/usr/share/java/asm2.jar /usr/share/eucalyptus/asm2.jar
+/usr/share/java/bcel.jar /usr/share/eucalyptus/bcel.jar
+/usr/share/java/bsf.jar /usr/share/eucalyptus/bsf.jar
+/usr/share/java/cglib.jar /usr/share/eucalyptus/cglib.jar
+/usr/share/java/commons-beanutils.jar /usr/share/eucalyptus/commons-beanutils.jar
+/usr/share/java/commons-cli.jar /usr/share/eucalyptus/commons-cli.jar
+/usr/share/java/commons-codec.jar /usr/share/eucalyptus/commons-codec.jar
+/usr/share/java/commons-collections3.jar /usr/share/eucalyptus/commons-collections3.jar
+/usr/share/java/commons-discovery.jar /usr/share/eucalyptus/commons-discovery.jar
+/usr/share/java/commons-io.jar /usr/share/eucalyptus/commons-io.jar
+/usr/share/java/commons-jxpath.jar /usr/share/eucalyptus/commons-jxpath.jar
+/usr/share/java/commons-logging.jar /usr/share/eucalyptus/commons-logging.jar
+/usr/share/java/commons-logging-adapters.jar /usr/share/eucalyptus/commons-logging-adapters.jar
+/usr/share/java/commons-logging-api.jar /usr/share/eucalyptus/commons-logging-api.jar
+/usr/share/java/dom4j.jar /usr/share/eucalyptus/dom4j.jar
+/usr/share/java/el-api-2.1.jar /usr/share/eucalyptus/el-api-2.1.jar
+/usr/share/java/ezmorph.jar /usr/share/eucalyptus/ezmorph.jar
+/usr/share/java/activation.jar /usr/share/eucalyptus/activation.jar
+/usr/share/java/geronimo-ejb-3.0-spec.jar /usr/share/eucalyptus/geronimo-ejb-3.0-spec.jar
+/usr/share/java/geronimo-j2ee-connector-1.5-spec.jar /usr/share/eucalyptus/geronimo-j2ee-connector-1.5-spec.jar
+/usr/share/java/geronimo-jms-1.1-spec.jar /usr/share/eucalyptus/geronimo-jms-1.1-spec.jar
+/usr/share/java/geronimo-jta-1.0.1b-spec.jar /usr/share/eucalyptus/geronimo-jta-1.0.1b-spec.jar
+/usr/share/java/geronimo-jacc-1.1-spec.jar /usr/share/eucalyptus/geronimo-jacc-1.1-spec.jar
+/usr/share/java/geronimo-interceptor-3.0-spec.jar /usr/share/eucalyptus/geronimo-interceptor-3.0-spec.jar
+/usr/share/java/hsqldb.jar /usr/share/eucalyptus/hsqldb.jar
+/usr/share/java/hsqldbutil.jar /usr/share/eucalyptus/hsqldbutil.jar
+/usr/share/java/janino.jar /usr/share/eucalyptus/janino.jar
+/usr/share/java/javassist.jar /usr/share/eucalyptus/javassist.jar
+/usr/share/java/jaxen.jar /usr/share/eucalyptus/jaxen.jar
+/usr/share/java/jetty-sslengine.jar /usr/share/eucalyptus/jetty-sslengine.jar
+/usr/share/java/jetty-util.jar /usr/share/eucalyptus/jetty-util.jar
+/usr/share/java/jibx-bind.jar /usr/share/eucalyptus/jibx-bind.jar
+/usr/share/java/jibx-extras.jar /usr/share/eucalyptus/jibx-extras.jar
+/usr/share/java/jug-asl.jar /usr/share/eucalyptus/jug-asl.jar
+/usr/share/java/excalibur-logkit.jar /usr/share/eucalyptus/excalibur-logkit.jar
+/usr/share/java/mvel.jar /usr/share/eucalyptus/mvel.jar
+/usr/share/java/proxool.jar /usr/share/eucalyptus/proxool.jar
+/usr/share/java/regexp.jar /usr/share/eucalyptus/regexp.jar
+/usr/share/java/serializer.jar /usr/share/eucalyptus/serializer.jar
+/usr/share/java/slf4j-api.jar /usr/share/eucalyptus/slf4j-api.jar
+/usr/share/java/slf4j-log4j12.jar /usr/share/eucalyptus/slf4j-log4j12.jar
+/usr/share/java/jcl-over-slf4j.jar /usr/share/eucalyptus/jcl-over-slf4j.jar
+/usr/share/java/jul-to-slf4j.jar /usr/share/eucalyptus/jul-to-slf4j.jar
+/usr/share/java/wstx-lgpl.jar /usr/share/eucalyptus/wstx-lgpl.jar
+/usr/share/java/wsdl4j.jar /usr/share/eucalyptus/wsdl4j.jar
+/usr/share/java/xom.jar /usr/share/eucalyptus/xom.jar
+/usr/share/java/xpp3.jar /usr/share/eucalyptus/xpp3.jar
--- eucalyptus-1.6.2.orig/debian/copyright
+++ eucalyptus-1.6.2/debian/copyright
@@ -0,0 +1,82 @@
+This package was debianized by Soren Hansen on
+Wed, 11 Feb 2009 02:11:00 +0200
+
+It was downloaded from http://launchpad.net/eucalyptus
+
+Upstream Authors:
+ * Dan Nurmi
+ * Chris Grzegorczyk
+ * Graziano Obertelli
+ * Neil Soman
+ * Rich Wolski
+ * Dmitrii Zagorodnov
+
+Copyright:
+ Copyright (c) 2009 Eucalyptus Systems, Inc.
+
+clc/modules/core/src/main/java/org/hsqldb/HsqlSocketFactorySecure.java is
+covered under the following copyright and license:
+
+ Copyright (c) 2001-2008, The HSQL Development Group
+ All rights reserved.
+
+ Redistribution and use in source and binary forms, with or without
+ modification, are permitted provided that the following conditions are met:
+
+ Redistributions of source code must retain the above copyright notice, this
+ list of conditions and the following disclaimer.
+
+ Redistributions in binary form must reproduce the above copyright notice,
+ this list of conditions and the following disclaimer in the documentation
+ and/or other materials provided with the distribution.
+
+ Neither the name of the HSQL Development Group nor the names of its
+ contributors may be used to endorse or promote products derived from this
+ software without specific prior written permission.
+
+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+ AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ ARE DISCLAIMED. IN NO EVENT SHALL HSQL DEVELOPMENT GROUP, HSQLDB.ORG,
+ OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+ EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+ PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+ LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+debian/local/euca_find_component.c is derived from an example in Avahi,
+which is copyright:
+
+ Lennart Poettering
+ Trent Lloyd
+ Sebastien Estienne
+ Jakub Stachowski
+ James Willcox
+ Collabora Ltd.
+
+ Modifications for eucalyptus-udeb are copyright 2009 Canonical Ltd. It is
+ licensed under the GNU Lesser General Public License version 2.1 or later,
+ which can be found at /usr/share/common-licenses/LGPL-2.1 on Debian systems.
+
+The rest of the Eucalyptus source code is covered by the GPLv3:
+
+ This program is free software: you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation version 3 of the License.
+
+ This program 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 General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program. If not, see .
+
+ On Debian systems, the complete text of the GNU General Public
+ License, version 3, can be found in /usr/share/common-licenses/GPL-3.
+
+The Debian packaging is copyright 2009, Soren Hansen ,
+Dustin Kirkland and is licensed under the same
+license.
--- eucalyptus-1.6.2.orig/debian/control
+++ eucalyptus-1.6.2/debian/control
@@ -0,0 +1,315 @@
+Source: eucalyptus
+Section: admin
+Priority: extra
+Maintainer: Ubuntu Developers
+Build-Depends:
+ ant,
+ ant-optional,
+ cdbs,
+ debhelper (>= 7),
+ default-jdk,
+ groovy,
+ junit,
+ libantlr-java,
+ libavahi-core-dev,
+ libavahi-client-dev,
+ libaxiom-java,
+ libaxis2c-dev,
+ libbackport-util-concurrent-java,
+ libbcprov-java,
+ libcap-dev,
+ libcommons-fileupload-java,
+ libcommons-httpclient-java,
+ libcommons-io-java,
+ libcommons-lang-java,
+ libcommons-pool-java (>= 1.4),
+ libcurl4-gnutls-dev,
+ libdebian-installer-dev,
+ libdnsjava-java,
+ libdrools-core-java,
+ libecj-java,
+ libeucalyptus-commons-ext-java (>= 0.5.0),
+ libgeronimo-j2ee-connector-1.5-spec-java,
+ libgeronimo-jpa-3.0-spec-java,
+ libgnumail-java,
+ libgoogle-collections-java,
+ libgwt-dev-java,
+ libgwt-user-java,
+ libhsqldb-java,
+ libjaxp1.3-java,
+ libjetty-java,
+ libjibx-java (>= 1.1.6a),
+ libjson-java,
+ liblog4j1.2-java,
+ libnetty-java,
+ librampart-dev (>=1.3.0-0ubuntu6),
+ libservlet2.5-java,
+ libssl-dev,
+ libvirt-dev,
+ libwsdl4j-java,
+ libwss4j-java,
+ libxalan2-java,
+ libxerces2-java,
+ libxml-security-java (>= 1.4.2-1ubuntu1),
+ pkg-config,
+ quilt,
+ zlib1g-dev
+Standards-Version: 3.8.3
+Homepage: http://eucalyptus.cs.ucsb.edu/
+Vcs-Bzr: http://bazaar.launchpad.net/~ubuntu-core-dev/eucalyptus/ubuntu
+
+Package: eucalyptus-common
+Architecture: any
+Depends:
+ ${shlibs:Depends},
+ ${misc:Depends},
+ adduser,
+ openssh-server (>= 1:5.2p1-1ubuntu1),
+ openssh-client,
+ avahi-utils,
+ python
+Recommends:
+ unzip
+Description: Elastic Utility Computing Architecture - Common files
+ EUCALYPTUS is an open source service overlay that implements elastic
+ computing using existing resources. The goal of EUCALYPTUS is to allow
+ sites with existing clusters and server infrastructure to co-host an
+ elastic computing service that is interface-compatible with Amazon's EC2.
+ .
+ This package contains the common parts: you will need to install either
+ eucalyptus-cloud, eucalyptus-cc or eucalyptus-nc (or all of them).
+
+Package: eucalyptus-sc
+Architecture: any
+Depends:
+ ${shlibs:Depends},
+ ${misc:Depends},
+ eucalyptus-common,
+ eucalyptus-java-common
+Suggests: aoetools
+Description: Elastic Utility Computing Architecture - Storage controller
+ EUCALYPTUS is an open source service overlay that implements elastic
+ computing using existing resources. The goal of EUCALYPTUS is to allow
+ sites with existing clusters and server infrastructure to co-host an
+ elastic computing service that is interface-compatible with Amazon's EC2.
+ .
+ This package contains the storage controller part of eucalyptus.
+
+Package: eucalyptus-cloud
+Architecture: any
+Depends:
+ ${shlibs:Depends},
+ ${misc:Depends},
+ eucalyptus-common,
+ uec-component-listener,
+ eucalyptus-java-common
+Recommends:
+ python-image-store-proxy,
+ postfix | mail-transport-agent
+Replaces:
+ eucalyptus-cc (<= 1.6~bzr919-0ubuntu3),
+ eucalyptus-sc (<= 1.6~bzr919-0ubuntu3),
+ eucalyptus-walrus (<= 1.6~bzr919-0ubuntu3)
+Description: Elastic Utility Computing Architecture - Cloud controller
+ EUCALYPTUS is an open source service overlay that implements elastic
+ computing using existing resources. The goal of EUCALYPTUS is to allow
+ sites with existing clusters and server infrastructure to co-host an
+ elastic computing service that is interface-compatible with Amazon's EC2.
+ .
+ This package contains the cloud controller part of eucalyptus.
+
+Package: eucalyptus-walrus
+Architecture: any
+Depends:
+ ${shlibs:Depends},
+ ${misc:Depends},
+ eucalyptus-common,
+ eucalyptus-java-common
+Description: Elastic Utility Computing Architecture - Walrus (S3)
+ EUCALYPTUS is an open source service overlay that implements elastic
+ computing using existing resources. The goal of EUCALYPTUS is to allow
+ sites with existing clusters and server infrastructure to co-host an
+ elastic computing service that is interface-compatible with Amazon's EC2.
+ .
+ This package contains Walrus, the S3 part of eucalyptus.
+
+Package: eucalyptus-java-common
+Architecture: any
+Depends:
+ ${misc:Depends},
+ ${shlibs:Depends},
+ antlr3,
+ default-jre-headless | java5-runtime-headless,
+ dmsetup,
+ eucalyptus-common,
+ groovy,
+ janino,
+ junit,
+ libantlr-java,
+ libasm2-java,
+ libaxiom-java,
+ libbackport-util-concurrent-java,
+ libbcel-java,
+ libbcprov-java,
+ libbsf-java,
+ libc3p0-java,
+ libcglib-java,
+ libcommons-beanutils-java,
+ libcommons-cli-java,
+ libcommons-codec-java,
+ libcommons-collections3-java,
+ libcommons-discovery-java,
+ libcommons-fileupload-java,
+ libcommons-httpclient-java,
+ libcommons-io-java,
+ libcommons-jxpath-java,
+ libcommons-lang-java,
+ libcommons-logging-java,
+ libcommons-pool-java (>= 1.4),
+ libdnsjava-java,
+ libdom4j-java,
+ libdrools-core-java,
+ libecj-java,
+ libeucalyptus-commons-ext-java (>= 0.5.0),
+ libexcalibur-logkit-java,
+ libezmorph-java,
+ libgeronimo-ejb-3.0-spec-java,
+ libgeronimo-interceptor-3.0-spec-java,
+ libgeronimo-j2ee-connector-1.5-spec-java,
+ libgeronimo-jacc-1.1-spec-java,
+ libgeronimo-jms-1.1-spec-java,
+ libgeronimo-jpa-3.0-spec-java,
+ libgeronimo-jta-1.0.1b-spec-java,
+ libgnujaf-java,
+ libgnumail-java,
+ libgoogle-collections-java,
+ libgwt-user-java,
+ libhsqldb-java,
+ libjavassist-java,
+ libjaxen-java,
+ libjaxp1.3-java,
+ libjetty-java,
+ libjibx-java (>= 1.1.6a),
+ libjson-java,
+ libjug-java,
+ liblog4j1.2-java,
+ libmvel-java,
+ libnetty-java,
+ libproxool-java,
+ libregexp-java,
+ libservlet2.5-java,
+ libslf4j-java,
+ libwoodstox-java,
+ libwsdl4j-java,
+ libwss4j-java,
+ libxalan2-java,
+ libxerces2-java,
+ libxml-security-java (>= 1.4.2-1ubuntu1),
+ libxom-java,
+ libxpp3-java,
+ lvm2,
+ openssh-server,
+ vblade
+Replaces:
+ eucalyptus-javadeps,
+ eucalyptus-cloud (<= 1.6.2~bzr1120-0ubuntu2),
+ eucalyptus-common
+Description: Elastic Utility Computing Architecture - Common Java package
+ EUCALYPTUS is an open source service overlay that implements elastic
+ computing using existing resources. The goal of EUCALYPTUS is to allow
+ sites with existing clusters and server infrastructure to co-host an
+ elastic computing service that is interface-compatible with Amazon's EC2.
+ .
+ This package contains everything the java based packages share.
+
+Package: eucalyptus-cc
+Architecture: any
+Depends:
+ ${shlibs:Depends},
+ ${misc:Depends},
+ eucalyptus-common,
+ apache2,
+ libapache2-mod-axis2c,
+ eucalyptus-gl,
+ uec-component-listener,
+ wget
+Recommends:
+ bridge-utils,
+ vlan,
+ powerwake,
+ dhcp3-server,
+ libpam-modules (>= 1.0.1-9ubuntu3)
+Suggests: vtun
+Conflicts: apache2-mpm-itk
+Description: Elastic Utility Computing Architecture - Cluster controller
+ EUCALYPTUS is an open source service overlay that implements elastic
+ computing using existing resources. The goal of EUCALYPTUS is to allow
+ sites with existing clusters and server infrastructure to co-host an
+ elastic computing service that is interface-compatible with Amazon's EC2.
+ .
+ This package contains the cluster controller part of eucalyptus.
+
+Package: eucalyptus-nc
+Architecture: any
+Depends:
+ ${shlibs:Depends},
+ ${misc:Depends},
+ eucalyptus-common,
+ apache2-mpm-worker | apache2-mpm-prefork,
+ libvirt-bin (>= 0.7.2-4ubuntu5),
+ libapache2-mod-axis2c,
+ eucalyptus-gl,
+ adduser,
+ iptables
+Suggests: aoetools
+Recommends:
+ kvm,
+ vlan,
+ bridge-utils,
+ powernap
+Conflicts: apache2-mpm-itk
+Description: Elastic Utility Computing Architecture - Node controller
+ EUCALYPTUS is an open source service overlay that implements elastic
+ computing using existing resources. The goal of EUCALYPTUS is to allow
+ sites with existing clusters and server infrastructure to co-host an
+ elastic computing service that is interface-compatible with Amazon's EC2.
+ .
+ This package contains the node controller part of eucalyptus.
+
+Package: eucalyptus-gl
+Architecture: any
+Depends:
+ ${shlibs:Depends},
+ ${misc:Depends},
+ eucalyptus-common
+Description: Elastic Utility Computing Architecture - Logging service
+ EUCALYPTUS is an open source service overlay that implements elastic
+ computing using existing resources. The goal of EUCALYPTUS is to allow
+ sites with existing clusters and server infrastructure to co-host an
+ elastic computing service that is interface-compatible with Amazon's EC2.
+ .
+ This package contains the internal log service of eucalyptus.
+
+Package: uec-component-listener
+Architecture: any
+Depends:
+ eucalyptus-common,
+ avahi-daemon,
+ ${shlibs:Depends},
+ ${misc:Depends}
+Description: Ubuntu Enterprise Cloud - Component listener
+ This package contains the component listener that is used to automatically
+ register new UEC components.
+
+Package: eucalyptus-udeb
+XC-Package-Type: udeb
+Section: debian-installer
+Architecture: any
+Depends:
+ ${shlibs:Depends},
+ ${misc:Depends},
+ configured-network,
+ wget-udeb
+# after netcfg
+XB-Installer-Menu-Item: 1850
+Description: Elastic Utility Computing Architecture - installer integration
--- eucalyptus-1.6.2.orig/debian/eucalyptus-sc.eucalyptus-sc-publication.upstart
+++ eucalyptus-1.6.2/debian/eucalyptus-sc.eucalyptus-sc-publication.upstart
@@ -0,0 +1,20 @@
+# eucalyptus-sc-publication
+
+description "Eucalyptus storage controller publication"
+author "Colin Watson , Dustin Kirkland "
+
+start on (started ssh and started avahi-daemon and eucalyptus-network-is-ready)
+stop on runlevel [!2345]
+
+respawn
+
+script
+ [ -f "/var/lib/eucalyptus/.ssh/authorized_keys" ] || { stop; exit 0; }
+ # Respawn, but not too fast
+ sleep 5
+ . /etc/eucalyptus/eucalyptus.conf
+ . /etc/eucalyptus/eucalyptus.local.conf
+ . /etc/eucalyptus/eucalyptus-ipaddr.conf
+ . /etc/eucalyptus/eucalyptus-sc.conf
+ exec avahi-publish -s "$SC_NAME storage" _eucalyptus._tcp 8773 txtvers=1 protovers=1.5.0 type=storage ipaddr="$SC_IP_ADDR"
+end script
--- eucalyptus-1.6.2.orig/debian/eucalyptus-gl.install
+++ eucalyptus-1.6.2/debian/eucalyptus-gl.install
@@ -0,0 +1 @@
+/usr/lib/axis2/services/EucalyptusGL
--- eucalyptus-1.6.2.orig/debian/eucalyptus-cc.eucalyptus-cc-publication.upstart
+++ eucalyptus-1.6.2/debian/eucalyptus-cc.eucalyptus-cc-publication.upstart
@@ -0,0 +1,20 @@
+# eucalyptus-cc-publication
+
+description "Eucalyptus cluster controller publication"
+author "Matt Zimmerman , Dustin Kirkland "
+
+start on (started ssh and started avahi-daemon and eucalyptus-network-is-ready)
+stop on runlevel [!2345]
+
+respawn
+
+script
+ [ -f "/var/lib/eucalyptus/.ssh/authorized_keys" ] || { stop; exit 0; }
+ # Respawn, but not too fast
+ sleep 5
+ . /etc/eucalyptus/eucalyptus.conf
+ . /etc/eucalyptus/eucalyptus.local.conf
+ . /etc/eucalyptus/eucalyptus-ipaddr.conf
+ . /etc/eucalyptus/eucalyptus-cc.conf
+ exec avahi-publish -s "$CC_NAME" _eucalyptus._tcp $CC_PORT txtvers=1 protovers=1.5.0 type=cluster ipaddr="$CC_IP_ADDR"
+end script
--- eucalyptus-1.6.2.orig/debian/registration/uec-registration
+++ eucalyptus-1.6.2/debian/registration/uec-registration
@@ -0,0 +1,96 @@
+#!/bin/bash
+# UEC registration helper script
+# Allows to set components registration mode (manual or automatic)
+
+NAME=`basename $0`
+LOCK_LOCATION=/var/lib/eucalyptus/registration.lock
+
+usage () {
+ echo "$NAME [--manual|--auto|--help]"
+ echo
+ echo " Options:"
+ echo " --manual Disable automatic component registration"
+ echo " --auto Enable automatic component registration"
+ echo " -h, --help This message"
+}
+
+check_root () {
+ if [[ $EUID -ne 0 ]]; then
+ echo "To change registration mode, you need to run this command as root."
+ echo "You can do so by running 'sudo $NAME $1'"
+ exit 1
+ fi
+}
+
+listener-is-running () {
+ if status uec-component-listener 2>&1 | grep "start/running" > /dev/null; then
+ return 0
+ else
+ return 1
+ fi
+}
+
+if [ $# -gt 1 ]; then
+ echo "Error: Only one option allowed."
+ usage
+ exit 1
+fi
+
+if [ $# -eq 1 ]; then
+ if [ "$1" = "-h" -o "$1" = "--help" ]; then
+ usage
+ exit 0
+ else
+ if [ "$1" = "--manual" ]; then
+ REGMODE="manual"
+ check_root --manual
+ else
+ if [ "$1" = "--auto" ]; then
+ REGMODE="auto"
+ check_root --auto
+ else
+ echo "Error: option '$1' is invalid"
+ usage
+ exit 1
+ fi
+ fi
+ fi
+fi
+
+if [ -f $LOCK_LOCATION ]; then
+ echo "Automatic components registration is disabled on this controller."
+ if listener-is-running; then
+ echo "However, uec-component-listener is still running."
+ else
+ REGSTATUS=manual
+ fi
+else
+ echo "Automatic components registration is enabled on this controller."
+ if ! listener-is-running; then
+ echo "However, uec-component-listener is not running."
+ else
+ REGSTATUS=auto
+ fi
+fi
+
+if [ "$REGMODE" = "manual" ]; then
+ if [ "$REGSTATUS" = "manual" ]; then
+ echo "Registration is already in manual mode."
+ else
+ echo "Setting UEC registration mode to manual."
+ touch $LOCK_LOCATION && stop uec-component-listener
+ exit $?
+ fi
+fi
+
+if [ "$REGMODE" = "auto" ]; then
+ if [ "$REGSTATUS" = "auto" ]; then
+ echo "Registration is already in auto mode."
+ else
+ echo "Setting UEC registration mode to auto."
+ rm $LOCK_LOCATION && start uec-component-listener
+ exit $?
+ fi
+fi
+
+exit 0
--- eucalyptus-1.6.2.orig/debian/registration/uec_component_listener.c
+++ eucalyptus-1.6.2/debian/registration/uec_component_listener.c
@@ -0,0 +1,269 @@
+/* $Id$ */
+
+/***
+ UEC component listener
+ - Listens to announcements of new _eucalyptus._tcp services
+ - Calls corresponding registration action based on type:
+ /
+
+ This file is based on an example that is part of avahi, which is copyright:
+ Lennart Poettering
+ Trent Lloyd
+ Sebastien Estienne
+ Jakub Stachowski
+ James Willcox
+ Collabora Ltd.
+ Modifications for eucalyptus are copyright 2009 Canonical Ltd.
+
+ avahi 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.
+
+ avahi 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 avahi; if not, write to the Free Software
+ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
+ USA.
+***/
+
+#define _GNU_SOURCE 1
+
+#ifdef HAVE_CONFIG_H
+#include
+#endif
+
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+
+#include
+#include
+
+#include
+#include
+#include
+
+#define ACTIONS_DIR "/usr/share/eucalyptus/registration"
+#define AVAHI_EUCALYPTUS "_eucalyptus._tcp"
+
+static AvahiSimplePoll *simple_poll = NULL;
+
+char *xasprintf (const char *fmt, ...)
+{
+ va_list ap;
+ char *result;
+
+ va_start(ap, fmt);
+ if (vasprintf(&result, fmt, ap) < 0) {
+ if (errno == ENOMEM) {
+ fprintf(stderr, "out of memory\n");
+ exit(1);
+ }
+ result = NULL;
+ }
+ va_end(ap);
+
+ return result;
+}
+
+/* Returns first value in TXT that matches key
+ Returned pointer must be freed by calling function */
+char *get_txt_contents(AvahiStringList *txt, char *key) {
+ AvahiStringList *list;
+ char *itemkey, *itemvalue;
+
+ list = avahi_string_list_find(txt, key);
+ if (!list || avahi_string_list_get_pair(list, &itemkey, &itemvalue, NULL) != 0) {
+ fprintf(stderr, "Failed to get %s from service TXT\n",key);
+ return NULL;
+ }
+ avahi_free(itemkey);
+ return itemvalue;
+}
+
+/* Called whenever a service has been resolved successfully or timed out */
+static void resolve_callback(
+ AvahiServiceResolver *r,
+ AVAHI_GCC_UNUSED AvahiIfIndex interface,
+ AVAHI_GCC_UNUSED AvahiProtocol protocol,
+ AvahiResolverEvent event,
+ const char *name,
+ const char *type,
+ const char *domain,
+ const char *host_name,
+ const AvahiAddress *address,
+ uint16_t port,
+ AvahiStringList *txt,
+ AvahiLookupResultFlags flags,
+ AVAHI_GCC_UNUSED void* userdata) {
+
+ assert(r);
+
+ switch (event) {
+ case AVAHI_RESOLVER_FAILURE:
+ fprintf(stderr, "(Resolver) Failed to resolve service '%s' of type '%s' in domain '%s': %s\n", name, type, domain, avahi_strerror(avahi_client_errno(avahi_service_resolver_get_client(r))));
+ break;
+
+ case AVAHI_RESOLVER_FOUND: {
+ char *ipaddr, *nodetype;
+
+ /* Get IP address */
+ ipaddr = get_txt_contents(txt, "ipaddr");
+ /* Fallback to avahi IP resolution */
+ if (! ipaddr) {
+ ipaddr = avahi_malloc0(AVAHI_ADDRESS_STR_MAX);
+ avahi_address_snprint(ipaddr, AVAHI_ADDRESS_STR_MAX, address);
+ }
+ /* Get component type */
+ nodetype = get_txt_contents(txt, "type");
+
+ if (! nodetype || ! ipaddr) {
+ fprintf(stderr, "Missing items in TXT record ! Skipping.\n");
+ } else if (strchr(nodetype, '/')) {
+ fprintf(stderr, "nodetype \"%s\" contains forbidden character '/'\n", nodetype);
+ } else {
+ char *action_command = xasprintf("%s/%s", ACTIONS_DIR, nodetype);
+ if (!access(action_command, F_OK)) {
+ /* Call corresponding action */
+ pid_t child = 0;
+ fprintf(stderr, "Running %s \"%s\" \"%s\"\n", action_command, name, ipaddr);
+ child = fork();
+ if (child < 0) {
+ perror("fork");
+ exit(1);
+ } else if (child == 0) {
+ /* child */
+ char *action_args[4];
+ action_args[0] = action_command;
+ action_args[1] = (char *) name; /* execvp won't actually modify this */
+ action_args[2] = ipaddr;
+ action_args[3] = NULL;
+ execvp(action_command, action_args);
+ _exit(255); /* shouldn't be reached */
+ }
+ }
+ }
+ avahi_free(ipaddr);
+ avahi_free(nodetype);
+ }
+ }
+ avahi_service_resolver_free(r);
+}
+
+/* Called whenever a new services becomes available on the LAN or is removed from the LAN */
+static void browse_callback(
+ AvahiServiceBrowser *b,
+ AvahiIfIndex interface,
+ AvahiProtocol protocol,
+ AvahiBrowserEvent event,
+ const char *name,
+ const char *type,
+ const char *domain,
+ AVAHI_GCC_UNUSED AvahiLookupResultFlags flags,
+ void* userdata) {
+
+ AvahiClient *c = userdata;
+ assert(b);
+
+ switch (event) {
+
+ case AVAHI_BROWSER_FAILURE:
+
+ fprintf(stderr, "(Browser) %s\n", avahi_strerror(avahi_client_errno(avahi_service_browser_get_client(b))));
+ avahi_simple_poll_quit(simple_poll);
+ return;
+
+ case AVAHI_BROWSER_NEW:
+ fprintf(stderr, "(Browser) NEW: service '%s' of type '%s' in domain '%s'\n", name, type, domain);
+
+ if (!(avahi_service_resolver_new(c, interface, protocol, name, type, domain, AVAHI_PROTO_UNSPEC, 0, resolve_callback, c)))
+ fprintf(stderr, "Failed to resolve service '%s': %s\n", name, avahi_strerror(avahi_client_errno(c)));
+
+ break;
+
+ }
+}
+
+/* Called whenever the client or server state changes */
+static void client_callback(AvahiClient *c, AvahiClientState state, AVAHI_GCC_UNUSED void * userdata) {
+ assert(c);
+
+ if (state == AVAHI_CLIENT_FAILURE) {
+ fprintf(stderr, "Server connection failure: %s\n", avahi_strerror(avahi_client_errno(c)));
+ avahi_simple_poll_quit(simple_poll);
+ }
+}
+
+/* SIGCHLD handler */
+static void sigchld_hdl (int sig) {
+ while (waitpid(-1, NULL, WNOHANG) > 0) {
+ }
+}
+
+int main(AVAHI_GCC_UNUSED int argc, AVAHI_GCC_UNUSED char*argv[]) {
+ AvahiClient *client = NULL;
+ AvahiServiceBrowser *sb = NULL;
+ int error;
+ int ret = 1;
+
+ /* Register a SIGCHLD handler */
+ struct sigaction act;
+ memset (&act, 0, sizeof(act));
+ act.sa_handler = sigchld_hdl;
+ if (sigaction(SIGCHLD, &act, 0)) {
+ fprintf(stderr, "Failed to register the SIGCHLD handler.\n");
+ exit(1);
+ }
+
+ /* Allocate main loop object */
+ if (!(simple_poll = avahi_simple_poll_new())) {
+ fprintf(stderr, "Failed to create simple poll object.\n");
+ goto fail;
+ }
+
+ /* Allocate a new client */
+ client = avahi_client_new(avahi_simple_poll_get(simple_poll), 0, client_callback, NULL, &error);
+
+ /* Check wether creating the client object succeeded */
+ if (!client) {
+ fprintf(stderr, "Failed to create client: %s\n", avahi_strerror(error));
+ goto fail;
+ }
+
+ /* Create the service browser */
+ if (!(sb = avahi_service_browser_new(client, AVAHI_IF_UNSPEC, AVAHI_PROTO_UNSPEC, AVAHI_EUCALYPTUS, NULL, 0, browse_callback, client))) {
+ fprintf(stderr, "Failed to create service browser: %s\n", avahi_strerror(avahi_client_errno(client)));
+ goto fail;
+ }
+
+ /* Run the main loop */
+ avahi_simple_poll_loop(simple_poll);
+
+ ret = 0;
+
+fail:
+
+ /* Cleanup things */
+ if (sb)
+ avahi_service_browser_free(sb);
+
+ if (client)
+ avahi_client_free(client);
+
+ if (simple_poll)
+ avahi_simple_poll_free(simple_poll);
+
+ return ret;
+}
+
--- eucalyptus-1.6.2.orig/debian/registration/node
+++ eucalyptus-1.6.2/debian/registration/node
@@ -0,0 +1,31 @@
+#!/bin/bash
+
+# Node controller registration script
+# Registers NC at IP $2 with cluster $1 (on CC)
+
+# Source common functions
+. /usr/share/eucalyptus/registration/common
+
+# Parameter sanitizing
+CLUSTERNAME=${1% node*}
+IP=$2
+testip "${IP}"
+
+# Check if we are on the target cluster
+. /etc/eucalyptus/eucalyptus-cc.conf
+if [ "${CLUSTERNAME}" != "${CC_NAME}" ]; then
+ reglog "Node is not a candidate for local cluster."
+ exit 1
+fi
+
+# Check if node isn't already registered
+. /etc/eucalyptus/eucalyptus.conf
+for nip in "$NODES"; do
+ if [ "${nip# }" == "${IP}" ]; then
+ reglog "Node $IP is already registered."
+ exit 1
+ fi
+done
+
+/usr/sbin/euca_conf --no-rsync --skip-scp-hostcheck --register-nodes "${IP}"
+reglog "euca_conf --register-nodes returned $?"
--- eucalyptus-1.6.2.orig/debian/registration/storage
+++ eucalyptus-1.6.2/debian/registration/storage
@@ -0,0 +1,44 @@
+#!/bin/bash
+
+# Storage controller registration script
+# Registers SC at IP $2 with cluster $1 (on CLC)
+
+# Source common functions
+. /usr/share/eucalyptus/registration/common
+
+# Parameter sanitizing
+CLUSTERNAME=${1% storage}
+IP=$2
+testip "${IP}"
+
+# Check if SC isn't already registered
+for sc in `euca_conf --list-scs | tail -n +2 | awk '{ print $1 }'`; do
+ if [ "$sc" == "$CLUSTERNAME" ]; then
+ reglog "SC for $CLUSTERNAME is already registered."
+ exit 1
+ fi
+done
+
+# Register SC if CC exists
+function tryregistersc {
+ for cc in `euca_conf --list-clusters | tail -n +2 | awk '{ print $1 }'`; do
+ if [ "$cc" == "$1" ]; then
+ /usr/sbin/euca_conf --no-rsync --skip-scp-hostcheck --register-sc "${CLUSTERNAME}" "${IP}"
+ reglog "euca_conf --register-sc returned $?"
+ exit 0
+ fi
+ done
+}
+
+tryregistersc "${CLUSTERNAME}"
+
+retries=2
+while [ $retries -gt 0 ]; do
+ reglog "Cluster $CLUSTERNAME doesn't exist, retrying in 10 seconds."
+ sleep 10
+ tryregistersc "${CLUSTERNAME}"
+ tries=$(($tries-1))
+done
+
+reglog "Cluster $CLUSTERNAME doesn't exist"
+exit 1
--- eucalyptus-1.6.2.orig/debian/registration/walrus
+++ eucalyptus-1.6.2/debian/registration/walrus
@@ -0,0 +1,22 @@
+#!/bin/bash
+
+# Walrus registration script
+# Registers Walrus at IP $2 (on CLC)
+
+# Source common functions
+. /usr/share/eucalyptus/registration/common
+
+# Parameter sanitizing
+IP=$2
+testip "${IP}"
+
+# Check if walrus isn't already registered
+for pip in `euca_conf --list-walruses | tail -n +2 | awk '{ print $2 }'`; do
+ if [ "$IP" == "$pip" ]; then
+ reglog "Walrus $IP is already registered."
+ exit 1
+ fi
+done
+
+/usr/sbin/euca_conf --no-rsync --skip-scp-hostcheck --register-walrus "${IP}"
+reglog "euca_conf --register-walrus returned $?"
--- eucalyptus-1.6.2.orig/debian/registration/Makefile
+++ eucalyptus-1.6.2/debian/registration/Makefile
@@ -0,0 +1,7 @@
+CFLAGS := $(shell pkg-config --cflags avahi-client) -g
+LDFLAGS := $(shell pkg-config --libs avahi-client)
+
+all: uec_component_listener
+
+clean:
+ rm -f uec_component_listener
--- eucalyptus-1.6.2.orig/debian/registration/common
+++ eucalyptus-1.6.2/debian/registration/common
@@ -0,0 +1,28 @@
+#!/bin/bash
+
+# Common functions for registration scripts
+LOCK_LOCATION=/var/lib/eucalyptus/registration.lock
+
+# Logging
+function reglog {
+ if [ -d /var/log/eucalyptus ]; then
+ echo "$(date --rfc-3339=seconds) | $$ -> $1" >> /var/log/eucalyptus/registration.log
+ fi
+}
+
+# Parameter sanitizing functions
+function testip {
+ if [ -n "${1//[0-9.]/}" ]; then
+ reglog "Input parameter is not an IP address."
+ exit 2
+ fi
+}
+
+# Startup
+reglog "Calling $(basename $0) $1 $2"
+
+# Test lock
+if [ -f "${LOCK_LOCATION}" ]; then
+ reglog "Registration locked by ${LOCK_LOCATION}"
+ exit 0
+fi
--- eucalyptus-1.6.2.orig/debian/registration/cluster
+++ eucalyptus-1.6.2/debian/registration/cluster
@@ -0,0 +1,23 @@
+#!/bin/bash
+
+# Cluster controller registration script
+# Registers CC as cluster $1 at IP $2 (on CLC)
+
+# Source common functions
+. /usr/share/eucalyptus/registration/common
+
+# Parameter sanitizing
+CLUSTERNAME=$1
+IP=$2
+testip "${IP}"
+
+# Check if cluster isn't already registered
+for cc in `euca_conf --list-clusters | tail -n +2 | awk '{ print $1 }'`; do
+ if [ "$cc" == "$CLUSTERNAME" ]; then
+ reglog "Cluster $CLUSTERNAME is already registered."
+ exit 1
+ fi
+done
+
+/usr/sbin/euca_conf --no-rsync --skip-scp-hostcheck --register-cluster "${CLUSTERNAME}" "${IP}"
+reglog "euca_conf --register-cluster returned $?"
--- eucalyptus-1.6.2.orig/debian/local/euca_find_component.c
+++ eucalyptus-1.6.2/debian/local/euca_find_component.c
@@ -0,0 +1,286 @@
+/* $Id$ */
+
+/***
+ This file is based on an example that is part of avahi, which is copyright:
+ Lennart Poettering
+ Trent Lloyd
+ Sebastien Estienne
+ Jakub Stachowski
+ James Willcox
+ Collabora Ltd.
+ Modifications for eucalyptus-udeb are copyright 2009 Canonical Ltd.
+
+ avahi 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.
+
+ avahi 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 avahi; if not, write to the Free Software
+ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
+ USA.
+***/
+
+#ifdef HAVE_CONFIG_H
+#include
+#endif
+
+#include
+#include
+#include
+#include
+#include
+
+#include
+#include
+#include
+#include
+#include
+#include
+
+#include
+
+static AvahiSimplePoll *simple_poll = NULL;
+static AvahiServer *server = NULL;
+
+static di_hash_table *resolver_hash = NULL;
+
+static const char *component_type = NULL;
+
+static int debug = 0;
+
+static void quiet_logger(AvahiLogLevel level, const char *txt) {
+}
+
+static bool resolver_equal_func(const void *key1, const void *key2) {
+ return !strcmp((const char *) key1, (const char *) key2);
+}
+
+static uint32_t resolver_hash_func(const void *key) {
+ /* save reimplementing our own hash algorithm ... */
+ di_rstring rstring;
+ rstring.string = (char *) key;
+ rstring.size = strlen(key);
+ return di_rstring_hash(&rstring);
+}
+
+static void resolve_callback(
+ AvahiSServiceResolver *r,
+ AVAHI_GCC_UNUSED AvahiIfIndex interface,
+ AVAHI_GCC_UNUSED AvahiProtocol protocol,
+ AvahiResolverEvent event,
+ const char *name,
+ const char *type,
+ const char *domain,
+ const char *host_name,
+ const AvahiAddress *address,
+ uint16_t port,
+ AvahiStringList *txt,
+ AvahiLookupResultFlags flags,
+ AVAHI_GCC_UNUSED void* userdata) {
+
+ assert(r);
+
+ /* Called whenever a service has been resolved successfully or timed out */
+
+ switch (event) {
+ case AVAHI_RESOLVER_FAILURE:
+ if (debug)
+ fprintf(stderr, "(Resolver) Failed to resolve service '%s' of type '%s' in domain '%s': %s\n", name, type, domain, avahi_strerror(avahi_server_errno(server)));
+ break;
+
+ case AVAHI_RESOLVER_FOUND: {
+ char *human_address = avahi_malloc0(AVAHI_ADDRESS_STR_MAX);
+ char *key = NULL;
+ AvahiStringList *ipaddr_entry;
+ char *ipaddr_key, *ipaddr_value;
+
+ ipaddr_entry = avahi_string_list_find(txt, "ipaddr");
+ if (ipaddr_entry && avahi_string_list_get_pair(ipaddr_entry, &ipaddr_key, &ipaddr_value, NULL) == 0) {
+ key = avahi_strdup_printf("%s:%u", ipaddr_value, port);
+ avahi_free(ipaddr_value);
+ avahi_free(ipaddr_key);
+ } else if (avahi_address_snprint(human_address, AVAHI_ADDRESS_STR_MAX, address)) {
+ if (address->proto == AVAHI_PROTO_INET6)
+ key = avahi_strdup_printf("[%s]:%u", human_address, port);
+ else if (strncmp(human_address, "169.254.169.254", 15) == 0)
+ key = avahi_strdup_printf("%s:%u", name, port);
+ else
+ key = avahi_strdup_printf("%s:%u", human_address, port);
+ } else {
+ if (debug)
+ fprintf(stderr, "(Resolver) failed to resolve %s to IP address/port\n", key);
+ }
+ avahi_free(human_address);
+
+ if (di_hash_table_lookup(resolver_hash, key)) {
+ if (debug)
+ fprintf(stderr, "(Resolver) Already seen %s\n", key);
+ free(key);
+ } else {
+ AvahiStringList *type_entry;
+ char *type_key, *type_value;
+
+ type_entry = avahi_string_list_find(txt, "type");
+ if (avahi_string_list_get_pair(type_entry, &type_key, &type_value, NULL) == 0) {
+ if (!strcmp(type_value, component_type)) {
+ di_hash_table_insert(resolver_hash, key, "");
+ if (debug)
+ fprintf(stderr, "(Resolver) Service '%s' of type '%s' in domain '%s':\n", name, type, domain);
+ printf("%s %s\n", name, key);
+ avahi_free(type_value);
+ avahi_free(type_key);
+ } else {
+ if (debug)
+ fprintf(stderr, "(Resolver) %s has type '%s', not '%s'\n", key, type_value, component_type);
+ }
+ } else {
+ if (debug)
+ fprintf(stderr, "(Resolver) %s has no 'type' TXT record\n", key);
+ }
+ /* don't free key; di_hash_table_insert doesn't copy it */
+ }
+ }
+ }
+
+ avahi_s_service_resolver_free(r);
+}
+
+static void browse_callback(
+ AvahiSServiceBrowser *b,
+ AvahiIfIndex interface,
+ AvahiProtocol protocol,
+ AvahiBrowserEvent event,
+ const char *name,
+ const char *type,
+ const char *domain,
+ AVAHI_GCC_UNUSED AvahiLookupResultFlags flags,
+ void* userdata) {
+
+ AvahiServer *s = userdata;
+ assert(b);
+
+ /* Called whenever a new services becomes available on the LAN or is removed from the LAN */
+
+ switch (event) {
+
+ case AVAHI_BROWSER_FAILURE:
+ fprintf(stderr, "(Browser) %s\n", avahi_strerror(avahi_server_errno(server)));
+ avahi_simple_poll_quit(simple_poll);
+ return;
+
+ case AVAHI_BROWSER_NEW:
+ if (debug)
+ fprintf(stderr, "(Browser) NEW: service '%s' of type '%s' in domain '%s'\n", name, type, domain);
+
+ /* We ignore the returned resolver object. In the callback
+ function we free it. If the server is terminated before
+ the callback function is called the server will free
+ the resolver for us. */
+
+ if (!(avahi_s_service_resolver_new(s, interface, protocol, name, type, domain, AVAHI_PROTO_INET, 0, resolve_callback, s)))
+ fprintf(stderr, "Failed to resolve service '%s': %s\n", name, avahi_strerror(avahi_server_errno(s)));
+
+ break;
+
+ case AVAHI_BROWSER_REMOVE:
+ if (debug)
+ fprintf(stderr, "(Browser) REMOVE: service '%s' of type '%s' in domain '%s'\n", name, type, domain);
+ break;
+
+ case AVAHI_BROWSER_ALL_FOR_NOW:
+ if (debug)
+ fprintf(stderr, "(Browser) %s\n", "ALL_FOR_NOW");
+ exit(0);
+ break;
+
+ case AVAHI_BROWSER_CACHE_EXHAUSTED:
+ if (debug)
+ fprintf(stderr, "(Browser) %s\n", "CACHE_EXHAUSTED");
+ break;
+ }
+}
+
+int main(AVAHI_GCC_UNUSED int argc, AVAHI_GCC_UNUSED char*argv[]) {
+ AvahiServerConfig config;
+ AvahiSServiceBrowser *sb = NULL;
+ int error;
+ struct timeval tv;
+ int ret = 1;
+
+ if (getenv("EUCA_FIND_COMPONENT_DEBUG"))
+ debug = 1;
+
+ if (argc < 2) {
+ fprintf(stderr, "Usage: %s COMPONENT-TYPE\n", argv[0]);
+ goto fail;
+ }
+ component_type = argv[1];
+
+ /* Initialize the pseudo-RNG */
+ srand(time(NULL));
+
+ if (!debug)
+ avahi_set_log_function(quiet_logger);
+
+ /* Allocate main loop object */
+ if (!(simple_poll = avahi_simple_poll_new())) {
+ fprintf(stderr, "Failed to create simple poll object.\n");
+ goto fail;
+ }
+
+ /* Do not publish any local records */
+ avahi_server_config_init(&config);
+ config.publish_hinfo = 0;
+ config.publish_addresses = 0;
+ config.publish_workstation = 0;
+ config.publish_domain = 0;
+
+ /* Allocate a new server */
+ server = avahi_server_new(avahi_simple_poll_get(simple_poll), &config, NULL, NULL, &error);
+
+ /* Free the configuration data */
+ avahi_server_config_free(&config);
+
+ /* Check whether creating the server object succeeded */
+ if (!server) {
+ fprintf(stderr, "Failed to create server: %s\n", avahi_strerror(error));
+ goto fail;
+ }
+
+ /* Create the service browser */
+ if (!(sb = avahi_s_service_browser_new(server, AVAHI_IF_UNSPEC, AVAHI_PROTO_UNSPEC, "_eucalyptus._tcp", NULL, 0, browse_callback, server))) {
+ fprintf(stderr, "Failed to create service browser: %s\n", avahi_strerror(avahi_server_errno(server)));
+ goto fail;
+ }
+
+ /* Create a hash table so we can uniquify resolver results */
+ resolver_hash = di_hash_table_new_full(resolver_hash_func, resolver_equal_func, avahi_free, NULL);
+
+ /* Run the main loop */
+ avahi_simple_poll_loop(simple_poll);
+
+ ret = 0;
+
+fail:
+
+ if (resolver_hash)
+ di_hash_table_destroy (resolver_hash);
+
+ /* Cleanup things */
+ if (sb)
+ avahi_s_service_browser_free(sb);
+
+ if (server)
+ avahi_server_free(server);
+
+ if (simple_poll)
+ avahi_simple_poll_free(simple_poll);
+
+ return ret;
+}
--- eucalyptus-1.6.2.orig/debian/local/Makefile
+++ eucalyptus-1.6.2/debian/local/Makefile
@@ -0,0 +1,7 @@
+CFLAGS := $(shell pkg-config --cflags avahi-core) -g
+LDFLAGS := $(shell pkg-config --libs avahi-core) -ldebian-installer
+
+all: euca_find_component
+
+clean:
+ rm -f euca_find_component
--- eucalyptus-1.6.2.orig/debian/po/templates.pot
+++ eucalyptus-1.6.2/debian/po/templates.pot
@@ -0,0 +1,230 @@
+# SOME DESCRIPTIVE TITLE.
+# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
+# This file is distributed under the same license as the PACKAGE package.
+# FIRST AUTHOR , YEAR.
+#
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"Report-Msgid-Bugs-To: cjwatson@ubuntu.com\n"
+"POT-Creation-Date: 2009-12-10 18:23+0000\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME \n"
+"Language-Team: LANGUAGE \n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=CHARSET\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Type: text
+#. Description
+#. Main menu entry
+#: ../eucalyptus-udeb.templates:1001
+msgid "Select cloud installation mode"
+msgstr ""
+
+#. Type: multiselect
+#. Description
+#: ../eucalyptus-udeb.templates:2001
+msgid "Cloud installation mode:"
+msgstr ""
+
+#. Type: text
+#. Description
+#. Entry in "Cloud installation mode:" menu
+#: ../eucalyptus-udeb.templates:3001
+msgid "Cloud controller"
+msgstr ""
+
+#. Type: text
+#. Description
+#. Entry in "Cloud installation mode:" menu
+#: ../eucalyptus-udeb.templates:4001
+msgid "Walrus storage service"
+msgstr ""
+
+#. Type: text
+#. Description
+#. Entry in "Cloud installation mode:" menu
+#: ../eucalyptus-udeb.templates:5001
+msgid "Cluster controller"
+msgstr ""
+
+#. Type: text
+#. Description
+#. Entry in "Cloud installation mode:" menu
+#: ../eucalyptus-udeb.templates:6001
+msgid "Storage controller"
+msgstr ""
+
+#. Type: text
+#. Description
+#. Entry in "Cloud installation mode:" menu
+#: ../eucalyptus-udeb.templates:7001
+msgid "Node controller"
+msgstr ""
+
+#. Type: text
+#. Description
+#: ../eucalyptus-udeb.templates:8001
+msgid ""
+"No Eucalyptus cloud controller was found on your network, so you must "
+"install a cloud controller. The default is to install all Eucalyptus "
+"components aside from the node controller; this is reasonable for small "
+"clouds. Larger installations may wish to install different components on "
+"different machines for reasons of network architecture or performance."
+msgstr ""
+
+#. Type: text
+#. Description
+#: ../eucalyptus-udeb.templates:9001
+msgid ""
+"A Eucalyptus cloud controller was found on your network, but no Walrus "
+"storage service. This installation will default to installing Walrus. If you "
+"wish, you may also install other Eucalyptus components on this machine."
+msgstr ""
+
+#. Type: text
+#. Description
+#: ../eucalyptus-udeb.templates:10001
+msgid ""
+"No Eucalyptus cluster controller was found on your network, so this "
+"installation will default to installing a new cluster with a local storage "
+"controller. If this is a mistake and you already have cluster and storage "
+"controllers in place, deselect these components and select \"Node controller"
+"\" instead."
+msgstr ""
+
+#. Type: text
+#. Description
+#: ../eucalyptus-udeb.templates:11001
+msgid ""
+"A Eucalyptus cluster controller was found on your network, but no storage "
+"controller. Each cluster controller must be paired with a storage "
+"controller. This installation will default to installing a new storage "
+"controller."
+msgstr ""
+
+#. Type: text
+#. Description
+#: ../eucalyptus-udeb.templates:12001
+msgid ""
+"There is already a Eucalyptus cluster controller on your network, so this "
+"installation will default to installing a new computing node. If you want to "
+"create another cluster, deselect \"Node\" and select \"Cluster controller\" "
+"and optionally \"Storage controller\" instead."
+msgstr ""
+
+#. Type: error
+#. Description
+#: ../eucalyptus-udeb.templates:13001
+msgid "Cannot install storage controller without cluster controller"
+msgstr ""
+
+#. Type: error
+#. Description
+#: ../eucalyptus-udeb.templates:13001
+msgid ""
+"Each storage controller must be paired with a cluster controller, but no "
+"cluster controller was found on your network and you did not choose to "
+"install one on this machine. You should probably install both a cluster "
+"controller and a storage controller."
+msgstr ""
+
+#. Type: string
+#. Description
+#: ../eucalyptus-udeb.templates:14001
+msgid "Cloud controller address:"
+msgstr ""
+
+#. Type: string
+#. Description
+#: ../eucalyptus-udeb.templates:14001
+msgid ""
+"No Eucalyptus cloud controller was found on your network. If this is a "
+"mistake and there is in fact already a cloud controller, enter its hostname "
+"or IP address here. Otherwise, leave this blank."
+msgstr ""
+
+#. Type: select
+#. Description
+#: ../eucalyptus-udeb.templates:15001
+msgid "Select cloud controller:"
+msgstr ""
+
+#. Type: select
+#. Description
+#: ../eucalyptus-udeb.templates:15001
+msgid ""
+"More than one cloud controller is available on your network. Select which "
+"cloud you want to join."
+msgstr ""
+
+#. Type: select
+#. Description
+#: ../eucalyptus-udeb.templates:16001
+msgid "Select cluster controller:"
+msgstr ""
+
+#. Type: select
+#. Description
+#: ../eucalyptus-udeb.templates:16001
+msgid ""
+"More than one cluster controller is available on your network. Select which "
+"cluster you want this node to join."
+msgstr ""
+
+#. Type: select
+#. Description
+#: ../eucalyptus-udeb.templates:18001
+msgid "Network interface for communication with nodes:"
+msgstr ""
+
+#. Type: select
+#. Description
+#: ../eucalyptus-udeb.templates:18001
+msgid ""
+"More than one network interface is available on this system. The primary "
+"interface configured during installation (${DEFAULT_INTERFACE}) will be used "
+"for communication with the public network. If your computing nodes are on a "
+"private network, then you will normally use a different network interface "
+"for communication with computing nodes."
+msgstr ""
+
+#. Type: select
+#. Description
+#: ../eucalyptus-udeb.templates:18001
+msgid ""
+"Select the network interface that is physically attached to the same network "
+"as your computing nodes."
+msgstr ""
+
+#. Type: string
+#. Description
+#: ../eucalyptus-cc.templates:1001 ../eucalyptus-sc.templates:1001
+msgid "Eucalyptus cluster name:"
+msgstr ""
+
+#. Type: string
+#. Description
+#: ../eucalyptus-cc.templates:1001 ../eucalyptus-sc.templates:1001
+msgid ""
+"Enter a name for this cluster. The name should contain only ASCII letters, "
+"digits, hyphens, and underscores. It will be shown to users as the name of "
+"an availability zone."
+msgstr ""
+
+#. Type: error
+#. Description
+#: ../eucalyptus-nc.templates:1001
+msgid "This hardware does not support virtualization acceleration"
+msgstr ""
+
+#. Type: error
+#. Description
+#: ../eucalyptus-nc.templates:1001
+msgid ""
+"This system's CPU does not have support for virtualization acceleration, "
+"which is strongly recommended for Eucalyptus Nodes. Eucalyptus running on "
+"this hardware will be unaccelerated."
+msgstr ""
--- eucalyptus-1.6.2.orig/debian/po/POTFILES.in
+++ eucalyptus-1.6.2/debian/po/POTFILES.in
@@ -0,0 +1,4 @@
+[type: gettext/rfc822deb] eucalyptus-udeb.templates
+[type: gettext/rfc822deb] eucalyptus-cc.templates
+[type: gettext/rfc822deb] eucalyptus-sc.templates
+[type: gettext/rfc822deb] eucalyptus-nc.templates
--- eucalyptus-1.6.2.orig/debian/patches/series
+++ eucalyptus-1.6.2/debian/patches/series
@@ -0,0 +1 @@
+01-wsdl-stubs.patch
--- eucalyptus-1.6.2.orig/debian/patches/01-wsdl-stubs.patch
+++ eucalyptus-1.6.2/debian/patches/01-wsdl-stubs.patch
@@ -0,0 +1,324717 @@
+=== added directory 'cluster/generated'
+=== added file 'cluster/generated/adb_AssignAddress.c'
+--- old/cluster/generated/adb_AssignAddress.c 1970-01-01 00:00:00 +0000
++++ new/cluster/generated/adb_AssignAddress.c 2010-01-05 01:00:49 +0000
+@@ -0,0 +1,525 @@
++
++
++ /**
++ * adb_AssignAddress.c
++ *
++ * This file was auto-generated from WSDL
++ * by the Apache Axis2/C version: SNAPSHOT Built on : Mar 10, 2008 (08:35:52 GMT+00:00)
++ */
++
++ #include "adb_AssignAddress.h"
++
++ /*
++ * implmentation of the AssignAddress|http://eucalyptus.ucsb.edu/ element
++ */
++
++
++
++ struct adb_AssignAddress
++ {
++
++ axutil_qname_t* qname;
++ adb_assignAddressType_t* property_AssignAddress;
++
++
++ axis2_bool_t is_valid_AssignAddress;
++
++
++
++ };
++
++
++ /************************* Private Function prototypes ********************************/
++
++
++
++ /************************* Function Implmentations ********************************/
++ adb_AssignAddress_t* AXIS2_CALL
++ adb_AssignAddress_create(
++ const axutil_env_t *env)
++ {
++ adb_AssignAddress_t *_AssignAddress = NULL;
++
++ axutil_qname_t* qname = NULL;
++
++ AXIS2_ENV_CHECK(env, NULL);
++
++ _AssignAddress = (adb_AssignAddress_t *) AXIS2_MALLOC(env->
++ allocator, sizeof(adb_AssignAddress_t));
++
++ if(NULL == _AssignAddress)
++ {
++ AXIS2_ERROR_SET(env->error, AXIS2_ERROR_NO_MEMORY, AXIS2_FAILURE);
++ return NULL;
++ }
++
++ memset(_AssignAddress, 0, sizeof(adb_AssignAddress_t));
++
++ _AssignAddress->property_AssignAddress = NULL;
++ _AssignAddress->is_valid_AssignAddress = AXIS2_FALSE;
++
++ qname = axutil_qname_create (env,
++ "AssignAddress",
++ "http://eucalyptus.ucsb.edu/",
++ NULL);
++ _AssignAddress->qname = qname;
++
++
++ return _AssignAddress;
++ }
++
++ axis2_status_t AXIS2_CALL
++ adb_AssignAddress_free (
++ adb_AssignAddress_t* _AssignAddress,
++ const axutil_env_t *env)
++ {
++
++
++ AXIS2_ENV_CHECK(env, AXIS2_FAILURE);
++ AXIS2_PARAM_CHECK(env->error, _AssignAddress, AXIS2_FAILURE);
++
++ adb_AssignAddress_reset_AssignAddress(_AssignAddress, env);
++
++ if(_AssignAddress->qname)
++ {
++ axutil_qname_free (_AssignAddress->qname, env);
++ _AssignAddress->qname = NULL;
++ }
++
++
++ if(_AssignAddress)
++ {
++ AXIS2_FREE(env->allocator, _AssignAddress);
++ _AssignAddress = NULL;
++ }
++ return AXIS2_SUCCESS;
++ }
++
++
++
++
++ axis2_status_t AXIS2_CALL
++ adb_AssignAddress_deserialize(
++ adb_AssignAddress_t* _AssignAddress,
++ const axutil_env_t *env,
++ axiom_node_t **dp_parent,
++ axis2_bool_t *dp_is_early_node_valid,
++ axis2_bool_t dont_care_minoccurs)
++ {
++ axiom_node_t *parent = *dp_parent;
++
++ axis2_status_t status = AXIS2_SUCCESS;
++
++ void *element = NULL;
++
++ axis2_char_t* text_value = NULL;
++ axutil_qname_t *qname = NULL;
++
++ axutil_qname_t *element_qname = NULL;
++
++ axiom_node_t *first_node = NULL;
++ axis2_bool_t is_early_node_valid = AXIS2_TRUE;
++ axiom_node_t *current_node = NULL;
++ axiom_element_t *current_element = NULL;
++
++ AXIS2_ENV_CHECK(env, AXIS2_FAILURE);
++ AXIS2_PARAM_CHECK(env->error, _AssignAddress, AXIS2_FAILURE);
++
++
++
++ while(parent && axiom_node_get_node_type(parent, env) != AXIOM_ELEMENT)
++ {
++ parent = axiom_node_get_next_sibling(parent, env);
++ }
++ if (NULL == parent)
++ {
++ /* This should be checked before everything */
++ AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI,
++ "Failed in building adb object for AssignAddress : "
++ "NULL elemenet can not be passed to deserialize");
++ return AXIS2_FAILURE;
++ }
++
++
++ current_element = (axiom_element_t *)axiom_node_get_data_element(parent, env);
++ qname = axiom_element_get_qname(current_element, env, parent);
++ if (axutil_qname_equals(qname, env, _AssignAddress-> qname))
++ {
++
++ first_node = parent;
++
++ }
++ else
++ {
++ AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI,
++ "Failed in building adb object for AssignAddress : "
++ "Expected %s but returned %s",
++ axutil_qname_to_string(_AssignAddress-> qname, env),
++ axutil_qname_to_string(qname, env));
++
++ return AXIS2_FAILURE;
++ }
++
++
++
++ /*
++ * building AssignAddress element
++ */
++
++
++
++ current_node = first_node;
++ is_early_node_valid = AXIS2_FALSE;
++
++
++ while(current_node && axiom_node_get_node_type(current_node, env) != AXIOM_ELEMENT)
++ {
++ current_node = axiom_node_get_next_sibling(current_node, env);
++ }
++ if(current_node != NULL)
++ {
++ current_element = (axiom_element_t *)axiom_node_get_data_element(current_node, env);
++ qname = axiom_element_get_qname(current_element, env, current_node);
++ }
++
++ element_qname = axutil_qname_create(env, "AssignAddress", "http://eucalyptus.ucsb.edu/", NULL);
++
++
++ if (adb_assignAddressType_is_particle() ||
++ (current_node && current_element && (axutil_qname_equals(element_qname, env, qname))))
++ {
++ if( current_node && current_element && (axutil_qname_equals(element_qname, env, qname)))
++ {
++ is_early_node_valid = AXIS2_TRUE;
++ }
++
++
++ element = (void*)adb_assignAddressType_create(env);
++
++ status = adb_assignAddressType_deserialize((adb_assignAddressType_t*)element,
++ env, ¤t_node, &is_early_node_valid, AXIS2_FALSE);
++ if(AXIS2_FAILURE == status)
++ {
++ AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "failed in building adb object for element AssignAddress");
++ }
++ else
++ {
++ status = adb_AssignAddress_set_AssignAddress(_AssignAddress, env,
++ (adb_assignAddressType_t*)element);
++ }
++
++ if(AXIS2_FAILURE == status)
++ {
++ AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "failed in setting the value for AssignAddress ");
++ if(element_qname)
++ {
++ axutil_qname_free(element_qname, env);
++ }
++ return AXIS2_FAILURE;
++ }
++ }
++
++ else if(!dont_care_minoccurs)
++ {
++ if(element_qname)
++ {
++ axutil_qname_free(element_qname, env);
++ }
++ /* this is not a nillable element*/
++ AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "non nillable or minOuccrs != 0 element AssignAddress missing");
++ return AXIS2_FAILURE;
++ }
++
++ if(element_qname)
++ {
++ axutil_qname_free(element_qname, env);
++ element_qname = NULL;
++ }
++
++ return status;
++ }
++
++ axis2_bool_t AXIS2_CALL
++ adb_AssignAddress_is_particle()
++ {
++
++ return AXIS2_FALSE;
++
++ }
++
++
++ void AXIS2_CALL
++ adb_AssignAddress_declare_parent_namespaces(
++ adb_AssignAddress_t* _AssignAddress,
++ const axutil_env_t *env, axiom_element_t *parent_element,
++ axutil_hash_t *namespaces, int *next_ns_index)
++ {
++
++ /* Here this is an empty function, Nothing to declare */
++
++ }
++
++
++
++ axiom_node_t* AXIS2_CALL
++ adb_AssignAddress_serialize(
++ adb_AssignAddress_t* _AssignAddress,
++ const axutil_env_t *env, axiom_node_t *parent, axiom_element_t *parent_element, int parent_tag_closed, axutil_hash_t *namespaces, int *next_ns_index)
++ {
++
++
++
++ axiom_node_t *current_node = NULL;
++ int tag_closed = 0;
++
++
++
++ axiom_namespace_t *ns1 = NULL;
++
++ axis2_char_t *qname_uri = NULL;
++ axis2_char_t *qname_prefix = NULL;
++ axis2_char_t *p_prefix = NULL;
++ axis2_bool_t ns_already_defined;
++
++ axis2_char_t text_value_1[64];
++
++ axis2_char_t *start_input_str = NULL;
++ axis2_char_t *end_input_str = NULL;
++ unsigned int start_input_str_len = 0;
++ unsigned int end_input_str_len = 0;
++
++
++ axiom_data_source_t *data_source = NULL;
++ axutil_stream_t *stream = NULL;
++
++
++ int next_ns_index_value = 0;
++
++
++ AXIS2_ENV_CHECK(env, NULL);
++ AXIS2_PARAM_CHECK(env->error, _AssignAddress, NULL);
++
++
++ namespaces = axutil_hash_make(env);
++ next_ns_index = &next_ns_index_value;
++
++ ns1 = axiom_namespace_create (env,
++ "http://eucalyptus.ucsb.edu/",
++ "n");
++ axutil_hash_set(namespaces, "http://eucalyptus.ucsb.edu/", AXIS2_HASH_KEY_STRING, axutil_strdup(env, "n"));
++
++
++ parent_element = axiom_element_create (env, NULL, "AssignAddress", ns1 , &parent);
++
++
++ axiom_element_set_namespace(parent_element, env, ns1, parent);
++
++
++
++ data_source = axiom_data_source_create(env, parent, ¤t_node);
++ stream = axiom_data_source_get_stream(data_source, env);
++
++ if(!(p_prefix = (axis2_char_t*)axutil_hash_get(namespaces, "http://eucalyptus.ucsb.edu/", AXIS2_HASH_KEY_STRING)))
++ {
++ p_prefix = (axis2_char_t*)AXIS2_MALLOC(env->allocator, sizeof (axis2_char_t) * ADB_DEFAULT_NAMESPACE_PREFIX_LIMIT);
++ sprintf(p_prefix, "n%d", (*next_ns_index)++);
++ axutil_hash_set(namespaces, "http://eucalyptus.ucsb.edu/", AXIS2_HASH_KEY_STRING, p_prefix);
++
++ axiom_element_declare_namespace_assume_param_ownership(parent_element, env, axiom_namespace_create (env,
++ "http://eucalyptus.ucsb.edu/",
++ p_prefix));
++ }
++
++
++ if (!_AssignAddress->is_valid_AssignAddress)
++ {
++
++
++ start_input_str = (axis2_char_t*)AXIS2_MALLOC(env->allocator, sizeof(axis2_char_t) *
++ (5 + axutil_strlen(p_prefix) +
++ axutil_strlen("AssignAddress") +
++ axutil_strlen(" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:nil=\"1\"")));
++
++
++ sprintf(start_input_str, "<%s%sAssignAddress xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:nil=\"1\"/>",
++ p_prefix?p_prefix:"",
++ (p_prefix && axutil_strcmp(p_prefix, ""))?":":"");
++
++ axutil_stream_write(stream, env, start_input_str, axutil_strlen(start_input_str));
++ AXIS2_FREE(env->allocator,start_input_str);
++
++ }
++ else
++ {
++ start_input_str = (axis2_char_t*)AXIS2_MALLOC(env->allocator, sizeof(axis2_char_t) *
++ (4 + axutil_strlen(p_prefix) +
++ axutil_strlen("AssignAddress")));
++
++ /* axutil_strlen("<:>") + 1 = 4 */
++ end_input_str = (axis2_char_t*)AXIS2_MALLOC(env->allocator, sizeof(axis2_char_t) *
++ (5 + axutil_strlen(p_prefix) + axutil_strlen("AssignAddress")));
++ /* axutil_strlen("") + 1 = 5 */
++
++
++
++
++
++
++ /*
++ * parsing AssignAddress element
++ */
++
++
++
++ sprintf(start_input_str, "<%s%sAssignAddress",
++ p_prefix?p_prefix:"",
++ (p_prefix && axutil_strcmp(p_prefix, ""))?":":"");
++
++ start_input_str_len = axutil_strlen(start_input_str);
++ sprintf(end_input_str, "%s%sAssignAddress>",
++ p_prefix?p_prefix:"",
++ (p_prefix && axutil_strcmp(p_prefix, ""))?":":"");
++ end_input_str_len = axutil_strlen(end_input_str);
++
++ adb_assignAddressType_serialize(_AssignAddress->property_AssignAddress,
++ env, current_node, parent_element,
++ adb_assignAddressType_is_particle() || AXIS2_TRUE, namespaces, next_ns_index);
++
++
++ AXIS2_FREE(env->allocator,start_input_str);
++ AXIS2_FREE(env->allocator,end_input_str);
++ }
++
++
++ if(namespaces)
++ {
++ axutil_hash_index_t *hi;
++ void *val;
++ for (hi = axutil_hash_first(namespaces, env); hi; hi = axutil_hash_next(env, hi))
++ {
++ axutil_hash_this(hi, NULL, NULL, &val);
++ AXIS2_FREE(env->allocator, val);
++ }
++ axutil_hash_free(namespaces, env);
++ }
++
++
++ return parent;
++ }
++
++
++
++
++ /**
++ * getter for AssignAddress.
++ */
++ adb_assignAddressType_t* AXIS2_CALL
++ adb_AssignAddress_get_AssignAddress(
++ adb_AssignAddress_t* _AssignAddress,
++ const axutil_env_t *env)
++ {
++
++ AXIS2_ENV_CHECK(env, NULL);
++ AXIS2_PARAM_CHECK(env->error, _AssignAddress, NULL);
++
++
++ return _AssignAddress->property_AssignAddress;
++ }
++
++ /**
++ * setter for AssignAddress
++ */
++ axis2_status_t AXIS2_CALL
++ adb_AssignAddress_set_AssignAddress(
++ adb_AssignAddress_t* _AssignAddress,
++ const axutil_env_t *env,
++ adb_assignAddressType_t* arg_AssignAddress)
++ {
++
++
++ AXIS2_ENV_CHECK(env, AXIS2_FAILURE);
++ AXIS2_PARAM_CHECK(env->error, _AssignAddress, AXIS2_FAILURE);
++
++ if(_AssignAddress->is_valid_AssignAddress &&
++ arg_AssignAddress == _AssignAddress->property_AssignAddress)
++ {
++
++ return AXIS2_SUCCESS;
++ }
++
++ adb_AssignAddress_reset_AssignAddress(_AssignAddress, env);
++
++
++ if(NULL == arg_AssignAddress)
++ {
++ /* We are already done */
++ return AXIS2_SUCCESS;
++ }
++ _AssignAddress->property_AssignAddress = arg_AssignAddress;
++ _AssignAddress->is_valid_AssignAddress = AXIS2_TRUE;
++
++ return AXIS2_SUCCESS;
++ }
++
++
++
++ /**
++ * resetter for AssignAddress
++ */
++ axis2_status_t AXIS2_CALL
++ adb_AssignAddress_reset_AssignAddress(
++ adb_AssignAddress_t* _AssignAddress,
++ const axutil_env_t *env)
++ {
++ int i = 0;
++ int count = 0;
++ void *element = NULL;
++
++ AXIS2_ENV_CHECK(env, AXIS2_FAILURE);
++ AXIS2_PARAM_CHECK(env->error, _AssignAddress, AXIS2_FAILURE);
++
++
++
++
++
++ if(_AssignAddress->property_AssignAddress != NULL)
++ {
++
++
++ adb_assignAddressType_free(_AssignAddress->property_AssignAddress, env);
++ _AssignAddress->property_AssignAddress = NULL;
++ }
++
++
++
++ _AssignAddress->is_valid_AssignAddress = AXIS2_FALSE;
++ return AXIS2_SUCCESS;
++ }
++
++ /**
++ * Check whether AssignAddress is nill
++ */
++ axis2_bool_t AXIS2_CALL
++ adb_AssignAddress_is_AssignAddress_nil(
++ adb_AssignAddress_t* _AssignAddress,
++ const axutil_env_t *env)
++ {
++ AXIS2_ENV_CHECK(env, AXIS2_TRUE);
++ AXIS2_PARAM_CHECK(env->error, _AssignAddress, AXIS2_TRUE);
++
++ return !_AssignAddress->is_valid_AssignAddress;
++ }
++
++ /**
++ * Set AssignAddress to nill (currently the same as reset)
++ */
++ axis2_status_t AXIS2_CALL
++ adb_AssignAddress_set_AssignAddress_nil(
++ adb_AssignAddress_t* _AssignAddress,
++ const axutil_env_t *env)
++ {
++ return adb_AssignAddress_reset_AssignAddress(_AssignAddress, env);
++ }
++
++
++
+
+=== added file 'cluster/generated/adb_AssignAddress.h'
+--- old/cluster/generated/adb_AssignAddress.h 1970-01-01 00:00:00 +0000
++++ new/cluster/generated/adb_AssignAddress.h 2010-01-05 01:00:49 +0000
+@@ -0,0 +1,208 @@
++
++
++ #ifndef ADB_ASSIGNADDRESS_H
++ #define ADB_ASSIGNADDRESS_H
++
++ /**
++ * adb_AssignAddress.h
++ *
++ * This file was auto-generated from WSDL
++ * by the Apache Axis2/Java version: 1.4 Built on : Apr 26, 2008 (06:25:17 EDT)
++ */
++
++ /**
++ * adb_AssignAddress class
++ */
++ typedef struct adb_AssignAddress adb_AssignAddress_t;
++
++
++ #include "adb_assignAddressType.h"
++
++
++ #include
++ #include
++ #include
++ #include
++ #include
++
++ #ifdef __cplusplus
++ extern "C"
++ {
++ #endif
++
++ #define ADB_DEFAULT_DIGIT_LIMIT 64
++ #define ADB_DEFAULT_NAMESPACE_PREFIX_LIMIT 64
++
++
++ /******************************* Create and Free functions *********************************/
++
++ /**
++ * Constructor for creating adb_AssignAddress_t
++ * @param env pointer to environment struct
++ * @return newly created adb_AssignAddress_t object
++ */
++ adb_AssignAddress_t* AXIS2_CALL
++ adb_AssignAddress_create(
++ const axutil_env_t *env );
++
++ /**
++ * Free adb_AssignAddress_t object
++ * @param _AssignAddress adb_AssignAddress_t object to free
++ * @param env pointer to environment struct
++ * @return AXIS2_SUCCESS on success, else AXIS2_FAILURE
++ */
++ axis2_status_t AXIS2_CALL
++ adb_AssignAddress_free (
++ adb_AssignAddress_t* _AssignAddress,
++ const axutil_env_t *env);
++
++
++
++ /********************************** Getters and Setters **************************************/
++
++
++
++ /**
++ * Getter for AssignAddress.
++ * @param _AssignAddress adb_AssignAddress_t object
++ * @param env pointer to environment struct
++ * @return adb_assignAddressType_t*
++ */
++ adb_assignAddressType_t* AXIS2_CALL
++ adb_AssignAddress_get_AssignAddress(
++ adb_AssignAddress_t* _AssignAddress,
++ const axutil_env_t *env);
++
++ /**
++ * Setter for AssignAddress.
++ * @param _AssignAddress adb_AssignAddress_t object
++ * @param env pointer to environment struct
++ * @param arg_AssignAddress adb_assignAddressType_t*
++ * @return AXIS2_SUCCESS on success, else AXIS2_FAILURE
++ */
++ axis2_status_t AXIS2_CALL
++ adb_AssignAddress_set_AssignAddress(
++ adb_AssignAddress_t* _AssignAddress,
++ const axutil_env_t *env,
++ adb_assignAddressType_t* arg_AssignAddress);
++
++ /**
++ * Resetter for AssignAddress
++ * @param _AssignAddress adb_AssignAddress_t object
++ * @param env pointer to environment struct
++ * @return AXIS2_SUCCESS on success, else AXIS2_FAILURE
++ */
++ axis2_status_t AXIS2_CALL
++ adb_AssignAddress_reset_AssignAddress(
++ adb_AssignAddress_t* _AssignAddress,
++ const axutil_env_t *env);
++
++
++
++
++ /******************************* Checking and Setting NIL values *********************************/
++
++
++ /**
++ * NOTE: set_nil is only available for nillable properties
++ */
++
++
++
++ /**
++ * Check whether AssignAddress is nill
++ * @param _AssignAddress adb_AssignAddress_t object
++ * @param env pointer to environment struct
++ * @return AXIS2_TRUE if the element is nil or AXIS2_FALSE otherwise
++ */
++ axis2_bool_t AXIS2_CALL
++ adb_AssignAddress_is_AssignAddress_nil(
++ adb_AssignAddress_t* _AssignAddress,
++ const axutil_env_t *env);
++
++
++
++ /**
++ * Set AssignAddress to nill (currently the same as reset)
++ * @param _AssignAddress adb_AssignAddress_t object
++ * @param env pointer to environment struct
++ * @return AXIS2_SUCCESS on success, else AXIS2_FAILURE
++ */
++ axis2_status_t AXIS2_CALL
++ adb_AssignAddress_set_AssignAddress_nil(
++ adb_AssignAddress_t* _AssignAddress,
++ const axutil_env_t *env);
++
++
++ /**************************** Serialize and Deserialize functions ***************************/
++ /*********** These functions are for use only inside the generated code *********************/
++
++
++ /**
++ * Deserialize an XML to adb objects
++ * @param _AssignAddress adb_AssignAddress_t object
++ * @param env pointer to environment struct
++ * @param dp_parent double pointer to the parent node to deserialize
++ * @param dp_is_early_node_valid double pointer to a flag (is_early_node_valid?)
++ * @param dont_care_minoccurs Dont set errors on validating minoccurs,
++ * (Parent will order this in a case of choice)
++ * @return AXIS2_SUCCESS on success, else AXIS2_FAILURE
++ */
++ axis2_status_t AXIS2_CALL
++ adb_AssignAddress_deserialize(
++ adb_AssignAddress_t* _AssignAddress,
++ const axutil_env_t *env,
++ axiom_node_t** dp_parent,
++ axis2_bool_t *dp_is_early_node_valid,
++ axis2_bool_t dont_care_minoccurs);
++
++
++
++ /**
++ * Declare namespace in the most parent node
++ * @param _AssignAddress adb_AssignAddress_t object
++ * @param env pointer to environment struct
++ * @param parent_element parent element
++ * @param namespaces hash of namespace uri to prefix
++ * @param next_ns_index pointer to an int which contain the next namespace index
++ */
++ void AXIS2_CALL
++ adb_AssignAddress_declare_parent_namespaces(
++ adb_AssignAddress_t* _AssignAddress,
++ const axutil_env_t *env, axiom_element_t *parent_element,
++ axutil_hash_t *namespaces, int *next_ns_index);
++
++
++
++ /**
++ * Serialize to an XML from the adb objects
++ * @param _AssignAddress adb_AssignAddress_t object
++ * @param env pointer to environment struct
++ * @param AssignAddress_om_node node to serialize from
++ * @param AssignAddress_om_element parent element to serialize from
++ * @param tag_closed whether the parent tag is closed or not
++ * @param namespaces hash of namespace uri to prefix
++ * @param next_ns_index an int which contain the next namespace index
++ * @return AXIS2_SUCCESS on success, else AXIS2_FAILURE
++ */
++ axiom_node_t* AXIS2_CALL
++ adb_AssignAddress_serialize(
++ adb_AssignAddress_t* _AssignAddress,
++ const axutil_env_t *env,
++ axiom_node_t* AssignAddress_om_node, axiom_element_t *AssignAddress_om_element, int tag_closed, axutil_hash_t *namespaces, int *next_ns_index);
++
++ /**
++ * Check whether the adb_AssignAddress is a particle class (E.g. group, inner sequence)
++ * @return whether this is a particle class.
++ */
++ axis2_bool_t AXIS2_CALL
++ adb_AssignAddress_is_particle();
++
++
++ #ifdef __cplusplus
++ }
++ #endif
++
++ #endif /* ADB_ASSIGNADDRESS_H */
++
++
+
+=== added file 'cluster/generated/adb_AssignAddressResponse.c'
+--- old/cluster/generated/adb_AssignAddressResponse.c 1970-01-01 00:00:00 +0000
++++ new/cluster/generated/adb_AssignAddressResponse.c 2010-01-05 01:00:49 +0000
+@@ -0,0 +1,525 @@
++
++
++ /**
++ * adb_AssignAddressResponse.c
++ *
++ * This file was auto-generated from WSDL
++ * by the Apache Axis2/C version: SNAPSHOT Built on : Mar 10, 2008 (08:35:52 GMT+00:00)
++ */
++
++ #include "adb_AssignAddressResponse.h"
++
++ /*
++ * implmentation of the AssignAddressResponse|http://eucalyptus.ucsb.edu/ element
++ */
++
++
++
++ struct adb_AssignAddressResponse
++ {
++
++ axutil_qname_t* qname;
++ adb_assignAddressResponseType_t* property_AssignAddressResponse;
++
++
++ axis2_bool_t is_valid_AssignAddressResponse;
++
++
++
++ };
++
++
++ /************************* Private Function prototypes ********************************/
++
++
++
++ /************************* Function Implmentations ********************************/
++ adb_AssignAddressResponse_t* AXIS2_CALL
++ adb_AssignAddressResponse_create(
++ const axutil_env_t *env)
++ {
++ adb_AssignAddressResponse_t *_AssignAddressResponse = NULL;
++
++ axutil_qname_t* qname = NULL;
++
++ AXIS2_ENV_CHECK(env, NULL);
++
++ _AssignAddressResponse = (adb_AssignAddressResponse_t *) AXIS2_MALLOC(env->
++ allocator, sizeof(adb_AssignAddressResponse_t));
++
++ if(NULL == _AssignAddressResponse)
++ {
++ AXIS2_ERROR_SET(env->error, AXIS2_ERROR_NO_MEMORY, AXIS2_FAILURE);
++ return NULL;
++ }
++
++ memset(_AssignAddressResponse, 0, sizeof(adb_AssignAddressResponse_t));
++
++ _AssignAddressResponse->property_AssignAddressResponse = NULL;
++ _AssignAddressResponse->is_valid_AssignAddressResponse = AXIS2_FALSE;
++
++ qname = axutil_qname_create (env,
++ "AssignAddressResponse",
++ "http://eucalyptus.ucsb.edu/",
++ NULL);
++ _AssignAddressResponse->qname = qname;
++
++
++ return _AssignAddressResponse;
++ }
++
++ axis2_status_t AXIS2_CALL
++ adb_AssignAddressResponse_free (
++ adb_AssignAddressResponse_t* _AssignAddressResponse,
++ const axutil_env_t *env)
++ {
++
++
++ AXIS2_ENV_CHECK(env, AXIS2_FAILURE);
++ AXIS2_PARAM_CHECK(env->error, _AssignAddressResponse, AXIS2_FAILURE);
++
++ adb_AssignAddressResponse_reset_AssignAddressResponse(_AssignAddressResponse, env);
++
++ if(_AssignAddressResponse->qname)
++ {
++ axutil_qname_free (_AssignAddressResponse->qname, env);
++ _AssignAddressResponse->qname = NULL;
++ }
++
++
++ if(_AssignAddressResponse)
++ {
++ AXIS2_FREE(env->allocator, _AssignAddressResponse);
++ _AssignAddressResponse = NULL;
++ }
++ return AXIS2_SUCCESS;
++ }
++
++
++
++
++ axis2_status_t AXIS2_CALL
++ adb_AssignAddressResponse_deserialize(
++ adb_AssignAddressResponse_t* _AssignAddressResponse,
++ const axutil_env_t *env,
++ axiom_node_t **dp_parent,
++ axis2_bool_t *dp_is_early_node_valid,
++ axis2_bool_t dont_care_minoccurs)
++ {
++ axiom_node_t *parent = *dp_parent;
++
++ axis2_status_t status = AXIS2_SUCCESS;
++
++ void *element = NULL;
++
++ axis2_char_t* text_value = NULL;
++ axutil_qname_t *qname = NULL;
++
++ axutil_qname_t *element_qname = NULL;
++
++ axiom_node_t *first_node = NULL;
++ axis2_bool_t is_early_node_valid = AXIS2_TRUE;
++ axiom_node_t *current_node = NULL;
++ axiom_element_t *current_element = NULL;
++
++ AXIS2_ENV_CHECK(env, AXIS2_FAILURE);
++ AXIS2_PARAM_CHECK(env->error, _AssignAddressResponse, AXIS2_FAILURE);
++
++
++
++ while(parent && axiom_node_get_node_type(parent, env) != AXIOM_ELEMENT)
++ {
++ parent = axiom_node_get_next_sibling(parent, env);
++ }
++ if (NULL == parent)
++ {
++ /* This should be checked before everything */
++ AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI,
++ "Failed in building adb object for AssignAddressResponse : "
++ "NULL elemenet can not be passed to deserialize");
++ return AXIS2_FAILURE;
++ }
++
++
++ current_element = (axiom_element_t *)axiom_node_get_data_element(parent, env);
++ qname = axiom_element_get_qname(current_element, env, parent);
++ if (axutil_qname_equals(qname, env, _AssignAddressResponse-> qname))
++ {
++
++ first_node = parent;
++
++ }
++ else
++ {
++ AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI,
++ "Failed in building adb object for AssignAddressResponse : "
++ "Expected %s but returned %s",
++ axutil_qname_to_string(_AssignAddressResponse-> qname, env),
++ axutil_qname_to_string(qname, env));
++
++ return AXIS2_FAILURE;
++ }
++
++
++
++ /*
++ * building AssignAddressResponse element
++ */
++
++
++
++ current_node = first_node;
++ is_early_node_valid = AXIS2_FALSE;
++
++
++ while(current_node && axiom_node_get_node_type(current_node, env) != AXIOM_ELEMENT)
++ {
++ current_node = axiom_node_get_next_sibling(current_node, env);
++ }
++ if(current_node != NULL)
++ {
++ current_element = (axiom_element_t *)axiom_node_get_data_element(current_node, env);
++ qname = axiom_element_get_qname(current_element, env, current_node);
++ }
++
++ element_qname = axutil_qname_create(env, "AssignAddressResponse", "http://eucalyptus.ucsb.edu/", NULL);
++
++
++ if (adb_assignAddressResponseType_is_particle() ||
++ (current_node && current_element && (axutil_qname_equals(element_qname, env, qname))))
++ {
++ if( current_node && current_element && (axutil_qname_equals(element_qname, env, qname)))
++ {
++ is_early_node_valid = AXIS2_TRUE;
++ }
++
++
++ element = (void*)adb_assignAddressResponseType_create(env);
++
++ status = adb_assignAddressResponseType_deserialize((adb_assignAddressResponseType_t*)element,
++ env, ¤t_node, &is_early_node_valid, AXIS2_FALSE);
++ if(AXIS2_FAILURE == status)
++ {
++ AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "failed in building adb object for element AssignAddressResponse");
++ }
++ else
++ {
++ status = adb_AssignAddressResponse_set_AssignAddressResponse(_AssignAddressResponse, env,
++ (adb_assignAddressResponseType_t*)element);
++ }
++
++ if(AXIS2_FAILURE == status)
++ {
++ AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "failed in setting the value for AssignAddressResponse ");
++ if(element_qname)
++ {
++ axutil_qname_free(element_qname, env);
++ }
++ return AXIS2_FAILURE;
++ }
++ }
++
++ else if(!dont_care_minoccurs)
++ {
++ if(element_qname)
++ {
++ axutil_qname_free(element_qname, env);
++ }
++ /* this is not a nillable element*/
++ AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "non nillable or minOuccrs != 0 element AssignAddressResponse missing");
++ return AXIS2_FAILURE;
++ }
++
++ if(element_qname)
++ {
++ axutil_qname_free(element_qname, env);
++ element_qname = NULL;
++ }
++
++ return status;
++ }
++
++ axis2_bool_t AXIS2_CALL
++ adb_AssignAddressResponse_is_particle()
++ {
++
++ return AXIS2_FALSE;
++
++ }
++
++
++ void AXIS2_CALL
++ adb_AssignAddressResponse_declare_parent_namespaces(
++ adb_AssignAddressResponse_t* _AssignAddressResponse,
++ const axutil_env_t *env, axiom_element_t *parent_element,
++ axutil_hash_t *namespaces, int *next_ns_index)
++ {
++
++ /* Here this is an empty function, Nothing to declare */
++
++ }
++
++
++
++ axiom_node_t* AXIS2_CALL
++ adb_AssignAddressResponse_serialize(
++ adb_AssignAddressResponse_t* _AssignAddressResponse,
++ const axutil_env_t *env, axiom_node_t *parent, axiom_element_t *parent_element, int parent_tag_closed, axutil_hash_t *namespaces, int *next_ns_index)
++ {
++
++
++
++ axiom_node_t *current_node = NULL;
++ int tag_closed = 0;
++
++
++
++ axiom_namespace_t *ns1 = NULL;
++
++ axis2_char_t *qname_uri = NULL;
++ axis2_char_t *qname_prefix = NULL;
++ axis2_char_t *p_prefix = NULL;
++ axis2_bool_t ns_already_defined;
++
++ axis2_char_t text_value_1[64];
++
++ axis2_char_t *start_input_str = NULL;
++ axis2_char_t *end_input_str = NULL;
++ unsigned int start_input_str_len = 0;
++ unsigned int end_input_str_len = 0;
++
++
++ axiom_data_source_t *data_source = NULL;
++ axutil_stream_t *stream = NULL;
++
++
++ int next_ns_index_value = 0;
++
++
++ AXIS2_ENV_CHECK(env, NULL);
++ AXIS2_PARAM_CHECK(env->error, _AssignAddressResponse, NULL);
++
++
++ namespaces = axutil_hash_make(env);
++ next_ns_index = &next_ns_index_value;
++
++ ns1 = axiom_namespace_create (env,
++ "http://eucalyptus.ucsb.edu/",
++ "n");
++ axutil_hash_set(namespaces, "http://eucalyptus.ucsb.edu/", AXIS2_HASH_KEY_STRING, axutil_strdup(env, "n"));
++
++
++ parent_element = axiom_element_create (env, NULL, "AssignAddressResponse", ns1 , &parent);
++
++
++ axiom_element_set_namespace(parent_element, env, ns1, parent);
++
++
++
++ data_source = axiom_data_source_create(env, parent, ¤t_node);
++ stream = axiom_data_source_get_stream(data_source, env);
++
++ if(!(p_prefix = (axis2_char_t*)axutil_hash_get(namespaces, "http://eucalyptus.ucsb.edu/", AXIS2_HASH_KEY_STRING)))
++ {
++ p_prefix = (axis2_char_t*)AXIS2_MALLOC(env->allocator, sizeof (axis2_char_t) * ADB_DEFAULT_NAMESPACE_PREFIX_LIMIT);
++ sprintf(p_prefix, "n%d", (*next_ns_index)++);
++ axutil_hash_set(namespaces, "http://eucalyptus.ucsb.edu/", AXIS2_HASH_KEY_STRING, p_prefix);
++
++ axiom_element_declare_namespace_assume_param_ownership(parent_element, env, axiom_namespace_create (env,
++ "http://eucalyptus.ucsb.edu/",
++ p_prefix));
++ }
++
++
++ if (!_AssignAddressResponse->is_valid_AssignAddressResponse)
++ {
++
++
++ start_input_str = (axis2_char_t*)AXIS2_MALLOC(env->allocator, sizeof(axis2_char_t) *
++ (5 + axutil_strlen(p_prefix) +
++ axutil_strlen("AssignAddressResponse") +
++ axutil_strlen(" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:nil=\"1\"")));
++
++
++ sprintf(start_input_str, "<%s%sAssignAddressResponse xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:nil=\"1\"/>",
++ p_prefix?p_prefix:"",
++ (p_prefix && axutil_strcmp(p_prefix, ""))?":":"");
++
++ axutil_stream_write(stream, env, start_input_str, axutil_strlen(start_input_str));
++ AXIS2_FREE(env->allocator,start_input_str);
++
++ }
++ else
++ {
++ start_input_str = (axis2_char_t*)AXIS2_MALLOC(env->allocator, sizeof(axis2_char_t) *
++ (4 + axutil_strlen(p_prefix) +
++ axutil_strlen("AssignAddressResponse")));
++
++ /* axutil_strlen("<:>") + 1 = 4 */
++ end_input_str = (axis2_char_t*)AXIS2_MALLOC(env->allocator, sizeof(axis2_char_t) *
++ (5 + axutil_strlen(p_prefix) + axutil_strlen("AssignAddressResponse")));
++ /* axutil_strlen("") + 1 = 5 */
++
++
++
++
++
++
++ /*
++ * parsing AssignAddressResponse element
++ */
++
++
++
++ sprintf(start_input_str, "<%s%sAssignAddressResponse",
++ p_prefix?p_prefix:"",
++ (p_prefix && axutil_strcmp(p_prefix, ""))?":":"");
++
++ start_input_str_len = axutil_strlen(start_input_str);
++ sprintf(end_input_str, "%s%sAssignAddressResponse>",
++ p_prefix?p_prefix:"",
++ (p_prefix && axutil_strcmp(p_prefix, ""))?":":"");
++ end_input_str_len = axutil_strlen(end_input_str);
++
++ adb_assignAddressResponseType_serialize(_AssignAddressResponse->property_AssignAddressResponse,
++ env, current_node, parent_element,
++ adb_assignAddressResponseType_is_particle() || AXIS2_TRUE, namespaces, next_ns_index);
++
++
++ AXIS2_FREE(env->allocator,start_input_str);
++ AXIS2_FREE(env->allocator,end_input_str);
++ }
++
++
++ if(namespaces)
++ {
++ axutil_hash_index_t *hi;
++ void *val;
++ for (hi = axutil_hash_first(namespaces, env); hi; hi = axutil_hash_next(env, hi))
++ {
++ axutil_hash_this(hi, NULL, NULL, &val);
++ AXIS2_FREE(env->allocator, val);
++ }
++ axutil_hash_free(namespaces, env);
++ }
++
++
++ return parent;
++ }
++
++
++
++
++ /**
++ * getter for AssignAddressResponse.
++ */
++ adb_assignAddressResponseType_t* AXIS2_CALL
++ adb_AssignAddressResponse_get_AssignAddressResponse(
++ adb_AssignAddressResponse_t* _AssignAddressResponse,
++ const axutil_env_t *env)
++ {
++
++ AXIS2_ENV_CHECK(env, NULL);
++ AXIS2_PARAM_CHECK(env->error, _AssignAddressResponse, NULL);
++
++
++ return _AssignAddressResponse->property_AssignAddressResponse;
++ }
++
++ /**
++ * setter for AssignAddressResponse
++ */
++ axis2_status_t AXIS2_CALL
++ adb_AssignAddressResponse_set_AssignAddressResponse(
++ adb_AssignAddressResponse_t* _AssignAddressResponse,
++ const axutil_env_t *env,
++ adb_assignAddressResponseType_t* arg_AssignAddressResponse)
++ {
++
++
++ AXIS2_ENV_CHECK(env, AXIS2_FAILURE);
++ AXIS2_PARAM_CHECK(env->error, _AssignAddressResponse, AXIS2_FAILURE);
++
++ if(_AssignAddressResponse->is_valid_AssignAddressResponse &&
++ arg_AssignAddressResponse == _AssignAddressResponse->property_AssignAddressResponse)
++ {
++
++ return AXIS2_SUCCESS;
++ }
++
++ adb_AssignAddressResponse_reset_AssignAddressResponse(_AssignAddressResponse, env);
++
++
++ if(NULL == arg_AssignAddressResponse)
++ {
++ /* We are already done */
++ return AXIS2_SUCCESS;
++ }
++ _AssignAddressResponse->property_AssignAddressResponse = arg_AssignAddressResponse;
++ _AssignAddressResponse->is_valid_AssignAddressResponse = AXIS2_TRUE;
++
++ return AXIS2_SUCCESS;
++ }
++
++
++
++ /**
++ * resetter for AssignAddressResponse
++ */
++ axis2_status_t AXIS2_CALL
++ adb_AssignAddressResponse_reset_AssignAddressResponse(
++ adb_AssignAddressResponse_t* _AssignAddressResponse,
++ const axutil_env_t *env)
++ {
++ int i = 0;
++ int count = 0;
++ void *element = NULL;
++
++ AXIS2_ENV_CHECK(env, AXIS2_FAILURE);
++ AXIS2_PARAM_CHECK(env->error, _AssignAddressResponse, AXIS2_FAILURE);
++
++
++
++
++
++ if(_AssignAddressResponse->property_AssignAddressResponse != NULL)
++ {
++
++
++ adb_assignAddressResponseType_free(_AssignAddressResponse->property_AssignAddressResponse, env);
++ _AssignAddressResponse->property_AssignAddressResponse = NULL;
++ }
++
++
++
++ _AssignAddressResponse->is_valid_AssignAddressResponse = AXIS2_FALSE;
++ return AXIS2_SUCCESS;
++ }
++
++ /**
++ * Check whether AssignAddressResponse is nill
++ */
++ axis2_bool_t AXIS2_CALL
++ adb_AssignAddressResponse_is_AssignAddressResponse_nil(
++ adb_AssignAddressResponse_t* _AssignAddressResponse,
++ const axutil_env_t *env)
++ {
++ AXIS2_ENV_CHECK(env, AXIS2_TRUE);
++ AXIS2_PARAM_CHECK(env->error, _AssignAddressResponse, AXIS2_TRUE);
++
++ return !_AssignAddressResponse->is_valid_AssignAddressResponse;
++ }
++
++ /**
++ * Set AssignAddressResponse to nill (currently the same as reset)
++ */
++ axis2_status_t AXIS2_CALL
++ adb_AssignAddressResponse_set_AssignAddressResponse_nil(
++ adb_AssignAddressResponse_t* _AssignAddressResponse,
++ const axutil_env_t *env)
++ {
++ return adb_AssignAddressResponse_reset_AssignAddressResponse(_AssignAddressResponse, env);
++ }
++
++
++
+
+=== added file 'cluster/generated/adb_AssignAddressResponse.h'
+--- old/cluster/generated/adb_AssignAddressResponse.h 1970-01-01 00:00:00 +0000
++++ new/cluster/generated/adb_AssignAddressResponse.h 2010-01-05 01:00:49 +0000
+@@ -0,0 +1,208 @@
++
++
++ #ifndef ADB_ASSIGNADDRESSRESPONSE_H
++ #define ADB_ASSIGNADDRESSRESPONSE_H
++
++ /**
++ * adb_AssignAddressResponse.h
++ *
++ * This file was auto-generated from WSDL
++ * by the Apache Axis2/Java version: 1.4 Built on : Apr 26, 2008 (06:25:17 EDT)
++ */
++
++ /**
++ * adb_AssignAddressResponse class
++ */
++ typedef struct adb_AssignAddressResponse adb_AssignAddressResponse_t;
++
++
++ #include "adb_assignAddressResponseType.h"
++
++
++ #include
++ #include
++ #include
++ #include
++ #include
++
++ #ifdef __cplusplus
++ extern "C"
++ {
++ #endif
++
++ #define ADB_DEFAULT_DIGIT_LIMIT 64
++ #define ADB_DEFAULT_NAMESPACE_PREFIX_LIMIT 64
++
++
++ /******************************* Create and Free functions *********************************/
++
++ /**
++ * Constructor for creating adb_AssignAddressResponse_t
++ * @param env pointer to environment struct
++ * @return newly created adb_AssignAddressResponse_t object
++ */
++ adb_AssignAddressResponse_t* AXIS2_CALL
++ adb_AssignAddressResponse_create(
++ const axutil_env_t *env );
++
++ /**
++ * Free adb_AssignAddressResponse_t object
++ * @param _AssignAddressResponse adb_AssignAddressResponse_t object to free
++ * @param env pointer to environment struct
++ * @return AXIS2_SUCCESS on success, else AXIS2_FAILURE
++ */
++ axis2_status_t AXIS2_CALL
++ adb_AssignAddressResponse_free (
++ adb_AssignAddressResponse_t* _AssignAddressResponse,
++ const axutil_env_t *env);
++
++
++
++ /********************************** Getters and Setters **************************************/
++
++
++
++ /**
++ * Getter for AssignAddressResponse.
++ * @param _AssignAddressResponse adb_AssignAddressResponse_t object
++ * @param env pointer to environment struct
++ * @return adb_assignAddressResponseType_t*
++ */
++ adb_assignAddressResponseType_t* AXIS2_CALL
++ adb_AssignAddressResponse_get_AssignAddressResponse(
++ adb_AssignAddressResponse_t* _AssignAddressResponse,
++ const axutil_env_t *env);
++
++ /**
++ * Setter for AssignAddressResponse.
++ * @param _AssignAddressResponse adb_AssignAddressResponse_t object
++ * @param env pointer to environment struct
++ * @param arg_AssignAddressResponse adb_assignAddressResponseType_t*
++ * @return AXIS2_SUCCESS on success, else AXIS2_FAILURE
++ */
++ axis2_status_t AXIS2_CALL
++ adb_AssignAddressResponse_set_AssignAddressResponse(
++ adb_AssignAddressResponse_t* _AssignAddressResponse,
++ const axutil_env_t *env,
++ adb_assignAddressResponseType_t* arg_AssignAddressResponse);
++
++ /**
++ * Resetter for AssignAddressResponse
++ * @param _AssignAddressResponse adb_AssignAddressResponse_t object
++ * @param env pointer to environment struct
++ * @return AXIS2_SUCCESS on success, else AXIS2_FAILURE
++ */
++ axis2_status_t AXIS2_CALL
++ adb_AssignAddressResponse_reset_AssignAddressResponse(
++ adb_AssignAddressResponse_t* _AssignAddressResponse,
++ const axutil_env_t *env);
++
++
++
++
++ /******************************* Checking and Setting NIL values *********************************/
++
++
++ /**
++ * NOTE: set_nil is only available for nillable properties
++ */
++
++
++
++ /**
++ * Check whether AssignAddressResponse is nill
++ * @param _AssignAddressResponse adb_AssignAddressResponse_t object
++ * @param env pointer to environment struct
++ * @return AXIS2_TRUE if the element is nil or AXIS2_FALSE otherwise
++ */
++ axis2_bool_t AXIS2_CALL
++ adb_AssignAddressResponse_is_AssignAddressResponse_nil(
++ adb_AssignAddressResponse_t* _AssignAddressResponse,
++ const axutil_env_t *env);
++
++
++
++ /**
++ * Set AssignAddressResponse to nill (currently the same as reset)
++ * @param _AssignAddressResponse adb_AssignAddressResponse_t object
++ * @param env pointer to environment struct
++ * @return AXIS2_SUCCESS on success, else AXIS2_FAILURE
++ */
++ axis2_status_t AXIS2_CALL
++ adb_AssignAddressResponse_set_AssignAddressResponse_nil(
++ adb_AssignAddressResponse_t* _AssignAddressResponse,
++ const axutil_env_t *env);
++
++
++ /**************************** Serialize and Deserialize functions ***************************/
++ /*********** These functions are for use only inside the generated code *********************/
++
++
++ /**
++ * Deserialize an XML to adb objects
++ * @param _AssignAddressResponse adb_AssignAddressResponse_t object
++ * @param env pointer to environment struct
++ * @param dp_parent double pointer to the parent node to deserialize
++ * @param dp_is_early_node_valid double pointer to a flag (is_early_node_valid?)
++ * @param dont_care_minoccurs Dont set errors on validating minoccurs,
++ * (Parent will order this in a case of choice)
++ * @return AXIS2_SUCCESS on success, else AXIS2_FAILURE
++ */
++ axis2_status_t AXIS2_CALL
++ adb_AssignAddressResponse_deserialize(
++ adb_AssignAddressResponse_t* _AssignAddressResponse,
++ const axutil_env_t *env,
++ axiom_node_t** dp_parent,
++ axis2_bool_t *dp_is_early_node_valid,
++ axis2_bool_t dont_care_minoccurs);
++
++
++
++ /**
++ * Declare namespace in the most parent node
++ * @param _AssignAddressResponse adb_AssignAddressResponse_t object
++ * @param env pointer to environment struct
++ * @param parent_element parent element
++ * @param namespaces hash of namespace uri to prefix
++ * @param next_ns_index pointer to an int which contain the next namespace index
++ */
++ void AXIS2_CALL
++ adb_AssignAddressResponse_declare_parent_namespaces(
++ adb_AssignAddressResponse_t* _AssignAddressResponse,
++ const axutil_env_t *env, axiom_element_t *parent_element,
++ axutil_hash_t *namespaces, int *next_ns_index);
++
++
++
++ /**
++ * Serialize to an XML from the adb objects
++ * @param _AssignAddressResponse adb_AssignAddressResponse_t object
++ * @param env pointer to environment struct
++ * @param AssignAddressResponse_om_node node to serialize from
++ * @param AssignAddressResponse_om_element parent element to serialize from
++ * @param tag_closed whether the parent tag is closed or not
++ * @param namespaces hash of namespace uri to prefix
++ * @param next_ns_index an int which contain the next namespace index
++ * @return AXIS2_SUCCESS on success, else AXIS2_FAILURE
++ */
++ axiom_node_t* AXIS2_CALL
++ adb_AssignAddressResponse_serialize(
++ adb_AssignAddressResponse_t* _AssignAddressResponse,
++ const axutil_env_t *env,
++ axiom_node_t* AssignAddressResponse_om_node, axiom_element_t *AssignAddressResponse_om_element, int tag_closed, axutil_hash_t *namespaces, int *next_ns_index);
++
++ /**
++ * Check whether the adb_AssignAddressResponse is a particle class (E.g. group, inner sequence)
++ * @return whether this is a particle class.
++ */
++ axis2_bool_t AXIS2_CALL
++ adb_AssignAddressResponse_is_particle();
++
++
++ #ifdef __cplusplus
++ }
++ #endif
++
++ #endif /* ADB_ASSIGNADDRESSRESPONSE_H */
++
++
+
+=== added file 'cluster/generated/adb_AttachVolume.c'
+--- old/cluster/generated/adb_AttachVolume.c 1970-01-01 00:00:00 +0000
++++ new/cluster/generated/adb_AttachVolume.c 2010-01-05 01:00:49 +0000
+@@ -0,0 +1,525 @@
++
++
++ /**
++ * adb_AttachVolume.c
++ *
++ * This file was auto-generated from WSDL
++ * by the Apache Axis2/C version: SNAPSHOT Built on : Mar 10, 2008 (08:35:52 GMT+00:00)
++ */
++
++ #include "adb_AttachVolume.h"
++
++ /*
++ * implmentation of the AttachVolume|http://eucalyptus.ucsb.edu/ element
++ */
++
++
++
++ struct adb_AttachVolume
++ {
++
++ axutil_qname_t* qname;
++ adb_attachVolumeType_t* property_AttachVolume;
++
++
++ axis2_bool_t is_valid_AttachVolume;
++
++
++
++ };
++
++
++ /************************* Private Function prototypes ********************************/
++
++
++
++ /************************* Function Implmentations ********************************/
++ adb_AttachVolume_t* AXIS2_CALL
++ adb_AttachVolume_create(
++ const axutil_env_t *env)
++ {
++ adb_AttachVolume_t *_AttachVolume = NULL;
++
++ axutil_qname_t* qname = NULL;
++
++ AXIS2_ENV_CHECK(env, NULL);
++
++ _AttachVolume = (adb_AttachVolume_t *) AXIS2_MALLOC(env->
++ allocator, sizeof(adb_AttachVolume_t));
++
++ if(NULL == _AttachVolume)
++ {
++ AXIS2_ERROR_SET(env->error, AXIS2_ERROR_NO_MEMORY, AXIS2_FAILURE);
++ return NULL;
++ }
++
++ memset(_AttachVolume, 0, sizeof(adb_AttachVolume_t));
++
++ _AttachVolume->property_AttachVolume = NULL;
++ _AttachVolume->is_valid_AttachVolume = AXIS2_FALSE;
++
++ qname = axutil_qname_create (env,
++ "AttachVolume",
++ "http://eucalyptus.ucsb.edu/",
++ NULL);
++ _AttachVolume->qname = qname;
++
++
++ return _AttachVolume;
++ }
++
++ axis2_status_t AXIS2_CALL
++ adb_AttachVolume_free (
++ adb_AttachVolume_t* _AttachVolume,
++ const axutil_env_t *env)
++ {
++
++
++ AXIS2_ENV_CHECK(env, AXIS2_FAILURE);
++ AXIS2_PARAM_CHECK(env->error, _AttachVolume, AXIS2_FAILURE);
++
++ adb_AttachVolume_reset_AttachVolume(_AttachVolume, env);
++
++ if(_AttachVolume->qname)
++ {
++ axutil_qname_free (_AttachVolume->qname, env);
++ _AttachVolume->qname = NULL;
++ }
++
++
++ if(_AttachVolume)
++ {
++ AXIS2_FREE(env->allocator, _AttachVolume);
++ _AttachVolume = NULL;
++ }
++ return AXIS2_SUCCESS;
++ }
++
++
++
++
++ axis2_status_t AXIS2_CALL
++ adb_AttachVolume_deserialize(
++ adb_AttachVolume_t* _AttachVolume,
++ const axutil_env_t *env,
++ axiom_node_t **dp_parent,
++ axis2_bool_t *dp_is_early_node_valid,
++ axis2_bool_t dont_care_minoccurs)
++ {
++ axiom_node_t *parent = *dp_parent;
++
++ axis2_status_t status = AXIS2_SUCCESS;
++
++ void *element = NULL;
++
++ axis2_char_t* text_value = NULL;
++ axutil_qname_t *qname = NULL;
++
++ axutil_qname_t *element_qname = NULL;
++
++ axiom_node_t *first_node = NULL;
++ axis2_bool_t is_early_node_valid = AXIS2_TRUE;
++ axiom_node_t *current_node = NULL;
++ axiom_element_t *current_element = NULL;
++
++ AXIS2_ENV_CHECK(env, AXIS2_FAILURE);
++ AXIS2_PARAM_CHECK(env->error, _AttachVolume, AXIS2_FAILURE);
++
++
++
++ while(parent && axiom_node_get_node_type(parent, env) != AXIOM_ELEMENT)
++ {
++ parent = axiom_node_get_next_sibling(parent, env);
++ }
++ if (NULL == parent)
++ {
++ /* This should be checked before everything */
++ AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI,
++ "Failed in building adb object for AttachVolume : "
++ "NULL elemenet can not be passed to deserialize");
++ return AXIS2_FAILURE;
++ }
++
++
++ current_element = (axiom_element_t *)axiom_node_get_data_element(parent, env);
++ qname = axiom_element_get_qname(current_element, env, parent);
++ if (axutil_qname_equals(qname, env, _AttachVolume-> qname))
++ {
++
++ first_node = parent;
++
++ }
++ else
++ {
++ AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI,
++ "Failed in building adb object for AttachVolume : "
++ "Expected %s but returned %s",
++ axutil_qname_to_string(_AttachVolume-> qname, env),
++ axutil_qname_to_string(qname, env));
++
++ return AXIS2_FAILURE;
++ }
++
++
++
++ /*
++ * building AttachVolume element
++ */
++
++
++
++ current_node = first_node;
++ is_early_node_valid = AXIS2_FALSE;
++
++
++ while(current_node && axiom_node_get_node_type(current_node, env) != AXIOM_ELEMENT)
++ {
++ current_node = axiom_node_get_next_sibling(current_node, env);
++ }
++ if(current_node != NULL)
++ {
++ current_element = (axiom_element_t *)axiom_node_get_data_element(current_node, env);
++ qname = axiom_element_get_qname(current_element, env, current_node);
++ }
++
++ element_qname = axutil_qname_create(env, "AttachVolume", "http://eucalyptus.ucsb.edu/", NULL);
++
++
++ if (adb_attachVolumeType_is_particle() ||
++ (current_node && current_element && (axutil_qname_equals(element_qname, env, qname))))
++ {
++ if( current_node && current_element && (axutil_qname_equals(element_qname, env, qname)))
++ {
++ is_early_node_valid = AXIS2_TRUE;
++ }
++
++
++ element = (void*)adb_attachVolumeType_create(env);
++
++ status = adb_attachVolumeType_deserialize((adb_attachVolumeType_t*)element,
++ env, ¤t_node, &is_early_node_valid, AXIS2_FALSE);
++ if(AXIS2_FAILURE == status)
++ {
++ AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "failed in building adb object for element AttachVolume");
++ }
++ else
++ {
++ status = adb_AttachVolume_set_AttachVolume(_AttachVolume, env,
++ (adb_attachVolumeType_t*)element);
++ }
++
++ if(AXIS2_FAILURE == status)
++ {
++ AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "failed in setting the value for AttachVolume ");
++ if(element_qname)
++ {
++ axutil_qname_free(element_qname, env);
++ }
++ return AXIS2_FAILURE;
++ }
++ }
++
++ else if(!dont_care_minoccurs)
++ {
++ if(element_qname)
++ {
++ axutil_qname_free(element_qname, env);
++ }
++ /* this is not a nillable element*/
++ AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "non nillable or minOuccrs != 0 element AttachVolume missing");
++ return AXIS2_FAILURE;
++ }
++
++ if(element_qname)
++ {
++ axutil_qname_free(element_qname, env);
++ element_qname = NULL;
++ }
++
++ return status;
++ }
++
++ axis2_bool_t AXIS2_CALL
++ adb_AttachVolume_is_particle()
++ {
++
++ return AXIS2_FALSE;
++
++ }
++
++
++ void AXIS2_CALL
++ adb_AttachVolume_declare_parent_namespaces(
++ adb_AttachVolume_t* _AttachVolume,
++ const axutil_env_t *env, axiom_element_t *parent_element,
++ axutil_hash_t *namespaces, int *next_ns_index)
++ {
++
++ /* Here this is an empty function, Nothing to declare */
++
++ }
++
++
++
++ axiom_node_t* AXIS2_CALL
++ adb_AttachVolume_serialize(
++ adb_AttachVolume_t* _AttachVolume,
++ const axutil_env_t *env, axiom_node_t *parent, axiom_element_t *parent_element, int parent_tag_closed, axutil_hash_t *namespaces, int *next_ns_index)
++ {
++
++
++
++ axiom_node_t *current_node = NULL;
++ int tag_closed = 0;
++
++
++
++ axiom_namespace_t *ns1 = NULL;
++
++ axis2_char_t *qname_uri = NULL;
++ axis2_char_t *qname_prefix = NULL;
++ axis2_char_t *p_prefix = NULL;
++ axis2_bool_t ns_already_defined;
++
++ axis2_char_t text_value_1[64];
++
++ axis2_char_t *start_input_str = NULL;
++ axis2_char_t *end_input_str = NULL;
++ unsigned int start_input_str_len = 0;
++ unsigned int end_input_str_len = 0;
++
++
++ axiom_data_source_t *data_source = NULL;
++ axutil_stream_t *stream = NULL;
++
++
++ int next_ns_index_value = 0;
++
++
++ AXIS2_ENV_CHECK(env, NULL);
++ AXIS2_PARAM_CHECK(env->error, _AttachVolume, NULL);
++
++
++ namespaces = axutil_hash_make(env);
++ next_ns_index = &next_ns_index_value;
++
++ ns1 = axiom_namespace_create (env,
++ "http://eucalyptus.ucsb.edu/",
++ "n");
++ axutil_hash_set(namespaces, "http://eucalyptus.ucsb.edu/", AXIS2_HASH_KEY_STRING, axutil_strdup(env, "n"));
++
++
++ parent_element = axiom_element_create (env, NULL, "AttachVolume", ns1 , &parent);
++
++
++ axiom_element_set_namespace(parent_element, env, ns1, parent);
++
++
++
++ data_source = axiom_data_source_create(env, parent, ¤t_node);
++ stream = axiom_data_source_get_stream(data_source, env);
++
++ if(!(p_prefix = (axis2_char_t*)axutil_hash_get(namespaces, "http://eucalyptus.ucsb.edu/", AXIS2_HASH_KEY_STRING)))
++ {
++ p_prefix = (axis2_char_t*)AXIS2_MALLOC(env->allocator, sizeof (axis2_char_t) * ADB_DEFAULT_NAMESPACE_PREFIX_LIMIT);
++ sprintf(p_prefix, "n%d", (*next_ns_index)++);
++ axutil_hash_set(namespaces, "http://eucalyptus.ucsb.edu/", AXIS2_HASH_KEY_STRING, p_prefix);
++
++ axiom_element_declare_namespace_assume_param_ownership(parent_element, env, axiom_namespace_create (env,
++ "http://eucalyptus.ucsb.edu/",
++ p_prefix));
++ }
++
++
++ if (!_AttachVolume->is_valid_AttachVolume)
++ {
++
++
++ start_input_str = (axis2_char_t*)AXIS2_MALLOC(env->allocator, sizeof(axis2_char_t) *
++ (5 + axutil_strlen(p_prefix) +
++ axutil_strlen("AttachVolume") +
++ axutil_strlen(" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:nil=\"1\"")));
++
++
++ sprintf(start_input_str, "<%s%sAttachVolume xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:nil=\"1\"/>",
++ p_prefix?p_prefix:"",
++ (p_prefix && axutil_strcmp(p_prefix, ""))?":":"");
++
++ axutil_stream_write(stream, env, start_input_str, axutil_strlen(start_input_str));
++ AXIS2_FREE(env->allocator,start_input_str);
++
++ }
++ else
++ {
++ start_input_str = (axis2_char_t*)AXIS2_MALLOC(env->allocator, sizeof(axis2_char_t) *
++ (4 + axutil_strlen(p_prefix) +
++ axutil_strlen("AttachVolume")));
++
++ /* axutil_strlen("<:>") + 1 = 4 */
++ end_input_str = (axis2_char_t*)AXIS2_MALLOC(env->allocator, sizeof(axis2_char_t) *
++ (5 + axutil_strlen(p_prefix) + axutil_strlen("AttachVolume")));
++ /* axutil_strlen("") + 1 = 5 */
++
++
++
++
++
++
++ /*
++ * parsing AttachVolume element
++ */
++
++
++
++ sprintf(start_input_str, "<%s%sAttachVolume",
++ p_prefix?p_prefix:"",
++ (p_prefix && axutil_strcmp(p_prefix, ""))?":":"");
++
++ start_input_str_len = axutil_strlen(start_input_str);
++ sprintf(end_input_str, "%s%sAttachVolume>",
++ p_prefix?p_prefix:"",
++ (p_prefix && axutil_strcmp(p_prefix, ""))?":":"");
++ end_input_str_len = axutil_strlen(end_input_str);
++
++ adb_attachVolumeType_serialize(_AttachVolume->property_AttachVolume,
++ env, current_node, parent_element,
++ adb_attachVolumeType_is_particle() || AXIS2_TRUE, namespaces, next_ns_index);
++
++
++ AXIS2_FREE(env->allocator,start_input_str);
++ AXIS2_FREE(env->allocator,end_input_str);
++ }
++
++
++ if(namespaces)
++ {
++ axutil_hash_index_t *hi;
++ void *val;
++ for (hi = axutil_hash_first(namespaces, env); hi; hi = axutil_hash_next(env, hi))
++ {
++ axutil_hash_this(hi, NULL, NULL, &val);
++ AXIS2_FREE(env->allocator, val);
++ }
++ axutil_hash_free(namespaces, env);
++ }
++
++
++ return parent;
++ }
++
++
++
++
++ /**
++ * getter for AttachVolume.
++ */
++ adb_attachVolumeType_t* AXIS2_CALL
++ adb_AttachVolume_get_AttachVolume(
++ adb_AttachVolume_t* _AttachVolume,
++ const axutil_env_t *env)
++ {
++
++ AXIS2_ENV_CHECK(env, NULL);
++ AXIS2_PARAM_CHECK(env->error, _AttachVolume, NULL);
++
++
++ return _AttachVolume->property_AttachVolume;
++ }
++
++ /**
++ * setter for AttachVolume
++ */
++ axis2_status_t AXIS2_CALL
++ adb_AttachVolume_set_AttachVolume(
++ adb_AttachVolume_t* _AttachVolume,
++ const axutil_env_t *env,
++ adb_attachVolumeType_t* arg_AttachVolume)
++ {
++
++
++ AXIS2_ENV_CHECK(env, AXIS2_FAILURE);
++ AXIS2_PARAM_CHECK(env->error, _AttachVolume, AXIS2_FAILURE);
++
++ if(_AttachVolume->is_valid_AttachVolume &&
++ arg_AttachVolume == _AttachVolume->property_AttachVolume)
++ {
++
++ return AXIS2_SUCCESS;
++ }
++
++ adb_AttachVolume_reset_AttachVolume(_AttachVolume, env);
++
++
++ if(NULL == arg_AttachVolume)
++ {
++ /* We are already done */
++ return AXIS2_SUCCESS;
++ }
++ _AttachVolume->property_AttachVolume = arg_AttachVolume;
++ _AttachVolume->is_valid_AttachVolume = AXIS2_TRUE;
++
++ return AXIS2_SUCCESS;
++ }
++
++
++
++ /**
++ * resetter for AttachVolume
++ */
++ axis2_status_t AXIS2_CALL
++ adb_AttachVolume_reset_AttachVolume(
++ adb_AttachVolume_t* _AttachVolume,
++ const axutil_env_t *env)
++ {
++ int i = 0;
++ int count = 0;
++ void *element = NULL;
++
++ AXIS2_ENV_CHECK(env, AXIS2_FAILURE);
++ AXIS2_PARAM_CHECK(env->error, _AttachVolume, AXIS2_FAILURE);
++
++
++
++
++
++ if(_AttachVolume->property_AttachVolume != NULL)
++ {
++
++
++ adb_attachVolumeType_free(_AttachVolume->property_AttachVolume, env);
++ _AttachVolume->property_AttachVolume = NULL;
++ }
++
++
++
++ _AttachVolume->is_valid_AttachVolume = AXIS2_FALSE;
++ return AXIS2_SUCCESS;
++ }
++
++ /**
++ * Check whether AttachVolume is nill
++ */
++ axis2_bool_t AXIS2_CALL
++ adb_AttachVolume_is_AttachVolume_nil(
++ adb_AttachVolume_t* _AttachVolume,
++ const axutil_env_t *env)
++ {
++ AXIS2_ENV_CHECK(env, AXIS2_TRUE);
++ AXIS2_PARAM_CHECK(env->error, _AttachVolume, AXIS2_TRUE);
++
++ return !_AttachVolume->is_valid_AttachVolume;
++ }
++
++ /**
++ * Set AttachVolume to nill (currently the same as reset)
++ */
++ axis2_status_t AXIS2_CALL
++ adb_AttachVolume_set_AttachVolume_nil(
++ adb_AttachVolume_t* _AttachVolume,
++ const axutil_env_t *env)
++ {
++ return adb_AttachVolume_reset_AttachVolume(_AttachVolume, env);
++ }
++
++
++
+
+=== added file 'cluster/generated/adb_AttachVolume.h'
+--- old/cluster/generated/adb_AttachVolume.h 1970-01-01 00:00:00 +0000
++++ new/cluster/generated/adb_AttachVolume.h 2010-01-05 01:00:49 +0000
+@@ -0,0 +1,208 @@
++
++
++ #ifndef ADB_ATTACHVOLUME_H
++ #define ADB_ATTACHVOLUME_H
++
++ /**
++ * adb_AttachVolume.h
++ *
++ * This file was auto-generated from WSDL
++ * by the Apache Axis2/Java version: 1.4 Built on : Apr 26, 2008 (06:25:17 EDT)
++ */
++
++ /**
++ * adb_AttachVolume class
++ */
++ typedef struct adb_AttachVolume adb_AttachVolume_t;
++
++
++ #include "adb_attachVolumeType.h"
++
++
++ #include
++ #include
++ #include
++ #include
++ #include
++
++ #ifdef __cplusplus
++ extern "C"
++ {
++ #endif
++
++ #define ADB_DEFAULT_DIGIT_LIMIT 64
++ #define ADB_DEFAULT_NAMESPACE_PREFIX_LIMIT 64
++
++
++ /******************************* Create and Free functions *********************************/
++
++ /**
++ * Constructor for creating adb_AttachVolume_t
++ * @param env pointer to environment struct
++ * @return newly created adb_AttachVolume_t object
++ */
++ adb_AttachVolume_t* AXIS2_CALL
++ adb_AttachVolume_create(
++ const axutil_env_t *env );
++
++ /**
++ * Free adb_AttachVolume_t object
++ * @param _AttachVolume adb_AttachVolume_t object to free
++ * @param env pointer to environment struct
++ * @return AXIS2_SUCCESS on success, else AXIS2_FAILURE
++ */
++ axis2_status_t AXIS2_CALL
++ adb_AttachVolume_free (
++ adb_AttachVolume_t* _AttachVolume,
++ const axutil_env_t *env);
++
++
++
++ /********************************** Getters and Setters **************************************/
++
++
++
++ /**
++ * Getter for AttachVolume.
++ * @param _AttachVolume adb_AttachVolume_t object
++ * @param env pointer to environment struct
++ * @return adb_attachVolumeType_t*
++ */
++ adb_attachVolumeType_t* AXIS2_CALL
++ adb_AttachVolume_get_AttachVolume(
++ adb_AttachVolume_t* _AttachVolume,
++ const axutil_env_t *env);
++
++ /**
++ * Setter for AttachVolume.
++ * @param _AttachVolume adb_AttachVolume_t object
++ * @param env pointer to environment struct
++ * @param arg_AttachVolume adb_attachVolumeType_t*
++ * @return AXIS2_SUCCESS on success, else AXIS2_FAILURE
++ */
++ axis2_status_t AXIS2_CALL
++ adb_AttachVolume_set_AttachVolume(
++ adb_AttachVolume_t* _AttachVolume,
++ const axutil_env_t *env,
++ adb_attachVolumeType_t* arg_AttachVolume);
++
++ /**
++ * Resetter for AttachVolume
++ * @param _AttachVolume adb_AttachVolume_t object
++ * @param env pointer to environment struct
++ * @return AXIS2_SUCCESS on success, else AXIS2_FAILURE
++ */
++ axis2_status_t AXIS2_CALL
++ adb_AttachVolume_reset_AttachVolume(
++ adb_AttachVolume_t* _AttachVolume,
++ const axutil_env_t *env);
++
++
++
++
++ /******************************* Checking and Setting NIL values *********************************/
++
++
++ /**
++ * NOTE: set_nil is only available for nillable properties
++ */
++
++
++
++ /**
++ * Check whether AttachVolume is nill
++ * @param _AttachVolume adb_AttachVolume_t object
++ * @param env pointer to environment struct
++ * @return AXIS2_TRUE if the element is nil or AXIS2_FALSE otherwise
++ */
++ axis2_bool_t AXIS2_CALL
++ adb_AttachVolume_is_AttachVolume_nil(
++ adb_AttachVolume_t* _AttachVolume,
++ const axutil_env_t *env);
++
++
++
++ /**
++ * Set AttachVolume to nill (currently the same as reset)
++ * @param _AttachVolume adb_AttachVolume_t object
++ * @param env pointer to environment struct
++ * @return AXIS2_SUCCESS on success, else AXIS2_FAILURE
++ */
++ axis2_status_t AXIS2_CALL
++ adb_AttachVolume_set_AttachVolume_nil(
++ adb_AttachVolume_t* _AttachVolume,
++ const axutil_env_t *env);
++
++
++ /**************************** Serialize and Deserialize functions ***************************/
++ /*********** These functions are for use only inside the generated code *********************/
++
++
++ /**
++ * Deserialize an XML to adb objects
++ * @param _AttachVolume adb_AttachVolume_t object
++ * @param env pointer to environment struct
++ * @param dp_parent double pointer to the parent node to deserialize
++ * @param dp_is_early_node_valid double pointer to a flag (is_early_node_valid?)
++ * @param dont_care_minoccurs Dont set errors on validating minoccurs,
++ * (Parent will order this in a case of choice)
++ * @return AXIS2_SUCCESS on success, else AXIS2_FAILURE
++ */
++ axis2_status_t AXIS2_CALL
++ adb_AttachVolume_deserialize(
++ adb_AttachVolume_t* _AttachVolume,
++ const axutil_env_t *env,
++ axiom_node_t** dp_parent,
++ axis2_bool_t *dp_is_early_node_valid,
++ axis2_bool_t dont_care_minoccurs);
++
++
++
++ /**
++ * Declare namespace in the most parent node
++ * @param _AttachVolume adb_AttachVolume_t object
++ * @param env pointer to environment struct
++ * @param parent_element parent element
++ * @param namespaces hash of namespace uri to prefix
++ * @param next_ns_index pointer to an int which contain the next namespace index
++ */
++ void AXIS2_CALL
++ adb_AttachVolume_declare_parent_namespaces(
++ adb_AttachVolume_t* _AttachVolume,
++ const axutil_env_t *env, axiom_element_t *parent_element,
++ axutil_hash_t *namespaces, int *next_ns_index);
++
++
++
++ /**
++ * Serialize to an XML from the adb objects
++ * @param _AttachVolume adb_AttachVolume_t object
++ * @param env pointer to environment struct
++ * @param AttachVolume_om_node node to serialize from
++ * @param AttachVolume_om_element parent element to serialize from
++ * @param tag_closed whether the parent tag is closed or not
++ * @param namespaces hash of namespace uri to prefix
++ * @param next_ns_index an int which contain the next namespace index
++ * @return AXIS2_SUCCESS on success, else AXIS2_FAILURE
++ */
++ axiom_node_t* AXIS2_CALL
++ adb_AttachVolume_serialize(
++ adb_AttachVolume_t* _AttachVolume,
++ const axutil_env_t *env,
++ axiom_node_t* AttachVolume_om_node, axiom_element_t *AttachVolume_om_element, int tag_closed, axutil_hash_t *namespaces, int *next_ns_index);
++
++ /**
++ * Check whether the adb_AttachVolume is a particle class (E.g. group, inner sequence)
++ * @return whether this is a particle class.
++ */
++ axis2_bool_t AXIS2_CALL
++ adb_AttachVolume_is_particle();
++
++
++ #ifdef __cplusplus
++ }
++ #endif
++
++ #endif /* ADB_ATTACHVOLUME_H */
++
++
+
+=== added file 'cluster/generated/adb_AttachVolumeResponse.c'
+--- old/cluster/generated/adb_AttachVolumeResponse.c 1970-01-01 00:00:00 +0000
++++ new/cluster/generated/adb_AttachVolumeResponse.c 2010-01-05 01:00:49 +0000
+@@ -0,0 +1,525 @@
++
++
++ /**
++ * adb_AttachVolumeResponse.c
++ *
++ * This file was auto-generated from WSDL
++ * by the Apache Axis2/C version: SNAPSHOT Built on : Mar 10, 2008 (08:35:52 GMT+00:00)
++ */
++
++ #include "adb_AttachVolumeResponse.h"
++
++ /*
++ * implmentation of the AttachVolumeResponse|http://eucalyptus.ucsb.edu/ element
++ */
++
++
++
++ struct adb_AttachVolumeResponse
++ {
++
++ axutil_qname_t* qname;
++ adb_attachVolumeResponseType_t* property_AttachVolumeResponse;
++
++
++ axis2_bool_t is_valid_AttachVolumeResponse;
++
++
++
++ };
++
++
++ /************************* Private Function prototypes ********************************/
++
++
++
++ /************************* Function Implmentations ********************************/
++ adb_AttachVolumeResponse_t* AXIS2_CALL
++ adb_AttachVolumeResponse_create(
++ const axutil_env_t *env)
++ {
++ adb_AttachVolumeResponse_t *_AttachVolumeResponse = NULL;
++
++ axutil_qname_t* qname = NULL;
++
++ AXIS2_ENV_CHECK(env, NULL);
++
++ _AttachVolumeResponse = (adb_AttachVolumeResponse_t *) AXIS2_MALLOC(env->
++ allocator, sizeof(adb_AttachVolumeResponse_t));
++
++ if(NULL == _AttachVolumeResponse)
++ {
++ AXIS2_ERROR_SET(env->error, AXIS2_ERROR_NO_MEMORY, AXIS2_FAILURE);
++ return NULL;
++ }
++
++ memset(_AttachVolumeResponse, 0, sizeof(adb_AttachVolumeResponse_t));
++
++ _AttachVolumeResponse->property_AttachVolumeResponse = NULL;
++ _AttachVolumeResponse->is_valid_AttachVolumeResponse = AXIS2_FALSE;
++
++ qname = axutil_qname_create (env,
++ "AttachVolumeResponse",
++ "http://eucalyptus.ucsb.edu/",
++ NULL);
++ _AttachVolumeResponse->qname = qname;
++
++
++ return _AttachVolumeResponse;
++ }
++
++ axis2_status_t AXIS2_CALL
++ adb_AttachVolumeResponse_free (
++ adb_AttachVolumeResponse_t* _AttachVolumeResponse,
++ const axutil_env_t *env)
++ {
++
++
++ AXIS2_ENV_CHECK(env, AXIS2_FAILURE);
++ AXIS2_PARAM_CHECK(env->error, _AttachVolumeResponse, AXIS2_FAILURE);
++
++ adb_AttachVolumeResponse_reset_AttachVolumeResponse(_AttachVolumeResponse, env);
++
++ if(_AttachVolumeResponse->qname)
++ {
++ axutil_qname_free (_AttachVolumeResponse->qname, env);
++ _AttachVolumeResponse->qname = NULL;
++ }
++
++
++ if(_AttachVolumeResponse)
++ {
++ AXIS2_FREE(env->allocator, _AttachVolumeResponse);
++ _AttachVolumeResponse = NULL;
++ }
++ return AXIS2_SUCCESS;
++ }
++
++
++
++
++ axis2_status_t AXIS2_CALL
++ adb_AttachVolumeResponse_deserialize(
++ adb_AttachVolumeResponse_t* _AttachVolumeResponse,
++ const axutil_env_t *env,
++ axiom_node_t **dp_parent,
++ axis2_bool_t *dp_is_early_node_valid,
++ axis2_bool_t dont_care_minoccurs)
++ {
++ axiom_node_t *parent = *dp_parent;
++
++ axis2_status_t status = AXIS2_SUCCESS;
++
++ void *element = NULL;
++
++ axis2_char_t* text_value = NULL;
++ axutil_qname_t *qname = NULL;
++
++ axutil_qname_t *element_qname = NULL;
++
++ axiom_node_t *first_node = NULL;
++ axis2_bool_t is_early_node_valid = AXIS2_TRUE;
++ axiom_node_t *current_node = NULL;
++ axiom_element_t *current_element = NULL;
++
++ AXIS2_ENV_CHECK(env, AXIS2_FAILURE);
++ AXIS2_PARAM_CHECK(env->error, _AttachVolumeResponse, AXIS2_FAILURE);
++
++
++
++ while(parent && axiom_node_get_node_type(parent, env) != AXIOM_ELEMENT)
++ {
++ parent = axiom_node_get_next_sibling(parent, env);
++ }
++ if (NULL == parent)
++ {
++ /* This should be checked before everything */
++ AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI,
++ "Failed in building adb object for AttachVolumeResponse : "
++ "NULL elemenet can not be passed to deserialize");
++ return AXIS2_FAILURE;
++ }
++
++
++ current_element = (axiom_element_t *)axiom_node_get_data_element(parent, env);
++ qname = axiom_element_get_qname(current_element, env, parent);
++ if (axutil_qname_equals(qname, env, _AttachVolumeResponse-> qname))
++ {
++
++ first_node = parent;
++
++ }
++ else
++ {
++ AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI,
++ "Failed in building adb object for AttachVolumeResponse : "
++ "Expected %s but returned %s",
++ axutil_qname_to_string(_AttachVolumeResponse-> qname, env),
++ axutil_qname_to_string(qname, env));
++
++ return AXIS2_FAILURE;
++ }
++
++
++
++ /*
++ * building AttachVolumeResponse element
++ */
++
++
++
++ current_node = first_node;
++ is_early_node_valid = AXIS2_FALSE;
++
++
++ while(current_node && axiom_node_get_node_type(current_node, env) != AXIOM_ELEMENT)
++ {
++ current_node = axiom_node_get_next_sibling(current_node, env);
++ }
++ if(current_node != NULL)
++ {
++ current_element = (axiom_element_t *)axiom_node_get_data_element(current_node, env);
++ qname = axiom_element_get_qname(current_element, env, current_node);
++ }
++
++ element_qname = axutil_qname_create(env, "AttachVolumeResponse", "http://eucalyptus.ucsb.edu/", NULL);
++
++
++ if (adb_attachVolumeResponseType_is_particle() ||
++ (current_node && current_element && (axutil_qname_equals(element_qname, env, qname))))
++ {
++ if( current_node && current_element && (axutil_qname_equals(element_qname, env, qname)))
++ {
++ is_early_node_valid = AXIS2_TRUE;
++ }
++
++
++ element = (void*)adb_attachVolumeResponseType_create(env);
++
++ status = adb_attachVolumeResponseType_deserialize((adb_attachVolumeResponseType_t*)element,
++ env, ¤t_node, &is_early_node_valid, AXIS2_FALSE);
++ if(AXIS2_FAILURE == status)
++ {
++ AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "failed in building adb object for element AttachVolumeResponse");
++ }
++ else
++ {
++ status = adb_AttachVolumeResponse_set_AttachVolumeResponse(_AttachVolumeResponse, env,
++ (adb_attachVolumeResponseType_t*)element);
++ }
++
++ if(AXIS2_FAILURE == status)
++ {
++ AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "failed in setting the value for AttachVolumeResponse ");
++ if(element_qname)
++ {
++ axutil_qname_free(element_qname, env);
++ }
++ return AXIS2_FAILURE;
++ }
++ }
++
++ else if(!dont_care_minoccurs)
++ {
++ if(element_qname)
++ {
++ axutil_qname_free(element_qname, env);
++ }
++ /* this is not a nillable element*/
++ AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "non nillable or minOuccrs != 0 element AttachVolumeResponse missing");
++ return AXIS2_FAILURE;
++ }
++
++ if(element_qname)
++ {
++ axutil_qname_free(element_qname, env);
++ element_qname = NULL;
++ }
++
++ return status;
++ }
++
++ axis2_bool_t AXIS2_CALL
++ adb_AttachVolumeResponse_is_particle()
++ {
++
++ return AXIS2_FALSE;
++
++ }
++
++
++ void AXIS2_CALL
++ adb_AttachVolumeResponse_declare_parent_namespaces(
++ adb_AttachVolumeResponse_t* _AttachVolumeResponse,
++ const axutil_env_t *env, axiom_element_t *parent_element,
++ axutil_hash_t *namespaces, int *next_ns_index)
++ {
++
++ /* Here this is an empty function, Nothing to declare */
++
++ }
++
++
++
++ axiom_node_t* AXIS2_CALL
++ adb_AttachVolumeResponse_serialize(
++ adb_AttachVolumeResponse_t* _AttachVolumeResponse,
++ const axutil_env_t *env, axiom_node_t *parent, axiom_element_t *parent_element, int parent_tag_closed, axutil_hash_t *namespaces, int *next_ns_index)
++ {
++
++
++
++ axiom_node_t *current_node = NULL;
++ int tag_closed = 0;
++
++
++
++ axiom_namespace_t *ns1 = NULL;
++
++ axis2_char_t *qname_uri = NULL;
++ axis2_char_t *qname_prefix = NULL;
++ axis2_char_t *p_prefix = NULL;
++ axis2_bool_t ns_already_defined;
++
++ axis2_char_t text_value_1[64];
++
++ axis2_char_t *start_input_str = NULL;
++ axis2_char_t *end_input_str = NULL;
++ unsigned int start_input_str_len = 0;
++ unsigned int end_input_str_len = 0;
++
++
++ axiom_data_source_t *data_source = NULL;
++ axutil_stream_t *stream = NULL;
++
++
++ int next_ns_index_value = 0;
++
++
++ AXIS2_ENV_CHECK(env, NULL);
++ AXIS2_PARAM_CHECK(env->error, _AttachVolumeResponse, NULL);
++
++
++ namespaces = axutil_hash_make(env);
++ next_ns_index = &next_ns_index_value;
++
++ ns1 = axiom_namespace_create (env,
++ "http://eucalyptus.ucsb.edu/",
++ "n");
++ axutil_hash_set(namespaces, "http://eucalyptus.ucsb.edu/", AXIS2_HASH_KEY_STRING, axutil_strdup(env, "n"));
++
++
++ parent_element = axiom_element_create (env, NULL, "AttachVolumeResponse", ns1 , &parent);
++
++
++ axiom_element_set_namespace(parent_element, env, ns1, parent);
++
++
++
++ data_source = axiom_data_source_create(env, parent, ¤t_node);
++ stream = axiom_data_source_get_stream(data_source, env);
++
++ if(!(p_prefix = (axis2_char_t*)axutil_hash_get(namespaces, "http://eucalyptus.ucsb.edu/", AXIS2_HASH_KEY_STRING)))
++ {
++ p_prefix = (axis2_char_t*)AXIS2_MALLOC(env->allocator, sizeof (axis2_char_t) * ADB_DEFAULT_NAMESPACE_PREFIX_LIMIT);
++ sprintf(p_prefix, "n%d", (*next_ns_index)++);
++ axutil_hash_set(namespaces, "http://eucalyptus.ucsb.edu/", AXIS2_HASH_KEY_STRING, p_prefix);
++
++ axiom_element_declare_namespace_assume_param_ownership(parent_element, env, axiom_namespace_create (env,
++ "http://eucalyptus.ucsb.edu/",
++ p_prefix));
++ }
++
++
++ if (!_AttachVolumeResponse->is_valid_AttachVolumeResponse)
++ {
++
++
++ start_input_str = (axis2_char_t*)AXIS2_MALLOC(env->allocator, sizeof(axis2_char_t) *
++ (5 + axutil_strlen(p_prefix) +
++ axutil_strlen("AttachVolumeResponse") +
++ axutil_strlen(" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:nil=\"1\"")));
++
++
++ sprintf(start_input_str, "<%s%sAttachVolumeResponse xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:nil=\"1\"/>",
++ p_prefix?p_prefix:"",
++ (p_prefix && axutil_strcmp(p_prefix, ""))?":":"");
++
++ axutil_stream_write(stream, env, start_input_str, axutil_strlen(start_input_str));
++ AXIS2_FREE(env->allocator,start_input_str);
++
++ }
++ else
++ {
++ start_input_str = (axis2_char_t*)AXIS2_MALLOC(env->allocator, sizeof(axis2_char_t) *
++ (4 + axutil_strlen(p_prefix) +
++ axutil_strlen("AttachVolumeResponse")));
++
++ /* axutil_strlen("<:>") + 1 = 4 */
++ end_input_str = (axis2_char_t*)AXIS2_MALLOC(env->allocator, sizeof(axis2_char_t) *
++ (5 + axutil_strlen(p_prefix) + axutil_strlen("AttachVolumeResponse")));
++ /* axutil_strlen("") + 1 = 5 */
++
++
++
++
++
++
++ /*
++ * parsing AttachVolumeResponse element
++ */
++
++
++
++ sprintf(start_input_str, "<%s%sAttachVolumeResponse",
++ p_prefix?p_prefix:"",
++ (p_prefix && axutil_strcmp(p_prefix, ""))?":":"");
++
++ start_input_str_len = axutil_strlen(start_input_str);
++ sprintf(end_input_str, "%s%sAttachVolumeResponse>",
++ p_prefix?p_prefix:"",
++ (p_prefix && axutil_strcmp(p_prefix, ""))?":":"");
++ end_input_str_len = axutil_strlen(end_input_str);
++
++ adb_attachVolumeResponseType_serialize(_AttachVolumeResponse->property_AttachVolumeResponse,
++ env, current_node, parent_element,
++ adb_attachVolumeResponseType_is_particle() || AXIS2_TRUE, namespaces, next_ns_index);
++
++
++ AXIS2_FREE(env->allocator,start_input_str);
++ AXIS2_FREE(env->allocator,end_input_str);
++ }
++
++
++ if(namespaces)
++ {
++ axutil_hash_index_t *hi;
++ void *val;
++ for (hi = axutil_hash_first(namespaces, env); hi; hi = axutil_hash_next(env, hi))
++ {
++ axutil_hash_this(hi, NULL, NULL, &val);
++ AXIS2_FREE(env->allocator, val);
++ }
++ axutil_hash_free(namespaces, env);
++ }
++
++
++ return parent;
++ }
++
++
++
++
++ /**
++ * getter for AttachVolumeResponse.
++ */
++ adb_attachVolumeResponseType_t* AXIS2_CALL
++ adb_AttachVolumeResponse_get_AttachVolumeResponse(
++ adb_AttachVolumeResponse_t* _AttachVolumeResponse,
++ const axutil_env_t *env)
++ {
++
++ AXIS2_ENV_CHECK(env, NULL);
++ AXIS2_PARAM_CHECK(env->error, _AttachVolumeResponse, NULL);
++
++
++ return _AttachVolumeResponse->property_AttachVolumeResponse;
++ }
++
++ /**
++ * setter for AttachVolumeResponse
++ */
++ axis2_status_t AXIS2_CALL
++ adb_AttachVolumeResponse_set_AttachVolumeResponse(
++ adb_AttachVolumeResponse_t* _AttachVolumeResponse,
++ const axutil_env_t *env,
++ adb_attachVolumeResponseType_t* arg_AttachVolumeResponse)
++ {
++
++
++ AXIS2_ENV_CHECK(env, AXIS2_FAILURE);
++ AXIS2_PARAM_CHECK(env->error, _AttachVolumeResponse, AXIS2_FAILURE);
++
++ if(_AttachVolumeResponse->is_valid_AttachVolumeResponse &&
++ arg_AttachVolumeResponse == _AttachVolumeResponse->property_AttachVolumeResponse)
++ {
++
++ return AXIS2_SUCCESS;
++ }
++
++ adb_AttachVolumeResponse_reset_AttachVolumeResponse(_AttachVolumeResponse, env);
++
++
++ if(NULL == arg_AttachVolumeResponse)
++ {
++ /* We are already done */
++ return AXIS2_SUCCESS;
++ }
++ _AttachVolumeResponse->property_AttachVolumeResponse = arg_AttachVolumeResponse;
++ _AttachVolumeResponse->is_valid_AttachVolumeResponse = AXIS2_TRUE;
++
++ return AXIS2_SUCCESS;
++ }
++
++
++
++ /**
++ * resetter for AttachVolumeResponse
++ */
++ axis2_status_t AXIS2_CALL
++ adb_AttachVolumeResponse_reset_AttachVolumeResponse(
++ adb_AttachVolumeResponse_t* _AttachVolumeResponse,
++ const axutil_env_t *env)
++ {
++ int i = 0;
++ int count = 0;
++ void *element = NULL;
++
++ AXIS2_ENV_CHECK(env, AXIS2_FAILURE);
++ AXIS2_PARAM_CHECK(env->error, _AttachVolumeResponse, AXIS2_FAILURE);
++
++
++
++
++
++ if(_AttachVolumeResponse->property_AttachVolumeResponse != NULL)
++ {
++
++
++ adb_attachVolumeResponseType_free(_AttachVolumeResponse->property_AttachVolumeResponse, env);
++ _AttachVolumeResponse->property_AttachVolumeResponse = NULL;
++ }
++
++
++
++ _AttachVolumeResponse->is_valid_AttachVolumeResponse = AXIS2_FALSE;
++ return AXIS2_SUCCESS;
++ }
++
++ /**
++ * Check whether AttachVolumeResponse is nill
++ */
++ axis2_bool_t AXIS2_CALL
++ adb_AttachVolumeResponse_is_AttachVolumeResponse_nil(
++ adb_AttachVolumeResponse_t* _AttachVolumeResponse,
++ const axutil_env_t *env)
++ {
++ AXIS2_ENV_CHECK(env, AXIS2_TRUE);
++ AXIS2_PARAM_CHECK(env->error, _AttachVolumeResponse, AXIS2_TRUE);
++
++ return !_AttachVolumeResponse->is_valid_AttachVolumeResponse;
++ }
++
++ /**
++ * Set AttachVolumeResponse to nill (currently the same as reset)
++ */
++ axis2_status_t AXIS2_CALL
++ adb_AttachVolumeResponse_set_AttachVolumeResponse_nil(
++ adb_AttachVolumeResponse_t* _AttachVolumeResponse,
++ const axutil_env_t *env)
++ {
++ return adb_AttachVolumeResponse_reset_AttachVolumeResponse(_AttachVolumeResponse, env);
++ }
++
++
++
+
+=== added file 'cluster/generated/adb_AttachVolumeResponse.h'
+--- old/cluster/generated/adb_AttachVolumeResponse.h 1970-01-01 00:00:00 +0000
++++ new/cluster/generated/adb_AttachVolumeResponse.h 2010-01-05 01:00:49 +0000
+@@ -0,0 +1,208 @@
++
++
++ #ifndef ADB_ATTACHVOLUMERESPONSE_H
++ #define ADB_ATTACHVOLUMERESPONSE_H
++
++ /**
++ * adb_AttachVolumeResponse.h
++ *
++ * This file was auto-generated from WSDL
++ * by the Apache Axis2/Java version: 1.4 Built on : Apr 26, 2008 (06:25:17 EDT)
++ */
++
++ /**
++ * adb_AttachVolumeResponse class
++ */
++ typedef struct adb_AttachVolumeResponse adb_AttachVolumeResponse_t;
++
++
++ #include "adb_attachVolumeResponseType.h"
++
++
++ #include
++ #include
++ #include
++ #include
++ #include
++
++ #ifdef __cplusplus
++ extern "C"
++ {
++ #endif
++
++ #define ADB_DEFAULT_DIGIT_LIMIT 64
++ #define ADB_DEFAULT_NAMESPACE_PREFIX_LIMIT 64
++
++
++ /******************************* Create and Free functions *********************************/
++
++ /**
++ * Constructor for creating adb_AttachVolumeResponse_t
++ * @param env pointer to environment struct
++ * @return newly created adb_AttachVolumeResponse_t object
++ */
++ adb_AttachVolumeResponse_t* AXIS2_CALL
++ adb_AttachVolumeResponse_create(
++ const axutil_env_t *env );
++
++ /**
++ * Free adb_AttachVolumeResponse_t object
++ * @param _AttachVolumeResponse adb_AttachVolumeResponse_t object to free
++ * @param env pointer to environment struct
++ * @return AXIS2_SUCCESS on success, else AXIS2_FAILURE
++ */
++ axis2_status_t AXIS2_CALL
++ adb_AttachVolumeResponse_free (
++ adb_AttachVolumeResponse_t* _AttachVolumeResponse,
++ const axutil_env_t *env);
++
++
++
++ /********************************** Getters and Setters **************************************/
++
++
++
++ /**
++ * Getter for AttachVolumeResponse.
++ * @param _AttachVolumeResponse adb_AttachVolumeResponse_t object
++ * @param env pointer to environment struct
++ * @return adb_attachVolumeResponseType_t*
++ */
++ adb_attachVolumeResponseType_t* AXIS2_CALL
++ adb_AttachVolumeResponse_get_AttachVolumeResponse(
++ adb_AttachVolumeResponse_t* _AttachVolumeResponse,
++ const axutil_env_t *env);
++
++ /**
++ * Setter for AttachVolumeResponse.
++ * @param _AttachVolumeResponse adb_AttachVolumeResponse_t object
++ * @param env pointer to environment struct
++ * @param arg_AttachVolumeResponse adb_attachVolumeResponseType_t*
++ * @return AXIS2_SUCCESS on success, else AXIS2_FAILURE
++ */
++ axis2_status_t AXIS2_CALL
++ adb_AttachVolumeResponse_set_AttachVolumeResponse(
++ adb_AttachVolumeResponse_t* _AttachVolumeResponse,
++ const axutil_env_t *env,
++ adb_attachVolumeResponseType_t* arg_AttachVolumeResponse);
++
++ /**
++ * Resetter for AttachVolumeResponse
++ * @param _AttachVolumeResponse adb_AttachVolumeResponse_t object
++ * @param env pointer to environment struct
++ * @return AXIS2_SUCCESS on success, else AXIS2_FAILURE
++ */
++ axis2_status_t AXIS2_CALL
++ adb_AttachVolumeResponse_reset_AttachVolumeResponse(
++ adb_AttachVolumeResponse_t* _AttachVolumeResponse,
++ const axutil_env_t *env);
++
++
++
++
++ /******************************* Checking and Setting NIL values *********************************/
++
++
++ /**
++ * NOTE: set_nil is only available for nillable properties
++ */
++
++
++
++ /**
++ * Check whether AttachVolumeResponse is nill
++ * @param _AttachVolumeResponse adb_AttachVolumeResponse_t object
++ * @param env pointer to environment struct
++ * @return AXIS2_TRUE if the element is nil or AXIS2_FALSE otherwise
++ */
++ axis2_bool_t AXIS2_CALL
++ adb_AttachVolumeResponse_is_AttachVolumeResponse_nil(
++ adb_AttachVolumeResponse_t* _AttachVolumeResponse,
++ const axutil_env_t *env);
++
++
++
++ /**
++ * Set AttachVolumeResponse to nill (currently the same as reset)
++ * @param _AttachVolumeResponse adb_AttachVolumeResponse_t object
++ * @param env pointer to environment struct
++ * @return AXIS2_SUCCESS on success, else AXIS2_FAILURE
++ */
++ axis2_status_t AXIS2_CALL
++ adb_AttachVolumeResponse_set_AttachVolumeResponse_nil(
++ adb_AttachVolumeResponse_t* _AttachVolumeResponse,
++ const axutil_env_t *env);
++
++
++ /**************************** Serialize and Deserialize functions ***************************/
++ /*********** These functions are for use only inside the generated code *********************/
++
++
++ /**
++ * Deserialize an XML to adb objects
++ * @param _AttachVolumeResponse adb_AttachVolumeResponse_t object
++ * @param env pointer to environment struct
++ * @param dp_parent double pointer to the parent node to deserialize
++ * @param dp_is_early_node_valid double pointer to a flag (is_early_node_valid?)
++ * @param dont_care_minoccurs Dont set errors on validating minoccurs,
++ * (Parent will order this in a case of choice)
++ * @return AXIS2_SUCCESS on success, else AXIS2_FAILURE
++ */
++ axis2_status_t AXIS2_CALL
++ adb_AttachVolumeResponse_deserialize(
++ adb_AttachVolumeResponse_t* _AttachVolumeResponse,
++ const axutil_env_t *env,
++ axiom_node_t** dp_parent,
++ axis2_bool_t *dp_is_early_node_valid,
++ axis2_bool_t dont_care_minoccurs);
++
++
++
++ /**
++ * Declare namespace in the most parent node
++ * @param _AttachVolumeResponse adb_AttachVolumeResponse_t object
++ * @param env pointer to environment struct
++ * @param parent_element parent element
++ * @param namespaces hash of namespace uri to prefix
++ * @param next_ns_index pointer to an int which contain the next namespace index
++ */
++ void AXIS2_CALL
++ adb_AttachVolumeResponse_declare_parent_namespaces(
++ adb_AttachVolumeResponse_t* _AttachVolumeResponse,
++ const axutil_env_t *env, axiom_element_t *parent_element,
++ axutil_hash_t *namespaces, int *next_ns_index);
++
++
++
++ /**
++ * Serialize to an XML from the adb objects
++ * @param _AttachVolumeResponse adb_AttachVolumeResponse_t object
++ * @param env pointer to environment struct
++ * @param AttachVolumeResponse_om_node node to serialize from
++ * @param AttachVolumeResponse_om_element parent element to serialize from
++ * @param tag_closed whether the parent tag is closed or not
++ * @param namespaces hash of namespace uri to prefix
++ * @param next_ns_index an int which contain the next namespace index
++ * @return AXIS2_SUCCESS on success, else AXIS2_FAILURE
++ */
++ axiom_node_t* AXIS2_CALL
++ adb_AttachVolumeResponse_serialize(
++ adb_AttachVolumeResponse_t* _AttachVolumeResponse,
++ const axutil_env_t *env,
++ axiom_node_t* AttachVolumeResponse_om_node, axiom_element_t *AttachVolumeResponse_om_element, int tag_closed, axutil_hash_t *namespaces, int *next_ns_index);
++
++ /**
++ * Check whether the adb_AttachVolumeResponse is a particle class (E.g. group, inner sequence)
++ * @return whether this is a particle class.
++ */
++ axis2_bool_t AXIS2_CALL
++ adb_AttachVolumeResponse_is_particle();
++
++
++ #ifdef __cplusplus
++ }
++ #endif
++
++ #endif /* ADB_ATTACHVOLUMERESPONSE_H */
++
++
+
+=== added file 'cluster/generated/adb_ConfigureNetwork.c'
+--- old/cluster/generated/adb_ConfigureNetwork.c 1970-01-01 00:00:00 +0000
++++ new/cluster/generated/adb_ConfigureNetwork.c 2010-01-05 01:00:49 +0000
+@@ -0,0 +1,525 @@
++
++
++ /**
++ * adb_ConfigureNetwork.c
++ *
++ * This file was auto-generated from WSDL
++ * by the Apache Axis2/C version: SNAPSHOT Built on : Mar 10, 2008 (08:35:52 GMT+00:00)
++ */
++
++ #include "adb_ConfigureNetwork.h"
++
++ /*
++ * implmentation of the ConfigureNetwork|http://eucalyptus.ucsb.edu/ element
++ */
++
++
++
++ struct adb_ConfigureNetwork
++ {
++
++ axutil_qname_t* qname;
++ adb_configureNetworkType_t* property_ConfigureNetwork;
++
++
++ axis2_bool_t is_valid_ConfigureNetwork;
++
++
++
++ };
++
++
++ /************************* Private Function prototypes ********************************/
++
++
++
++ /************************* Function Implmentations ********************************/
++ adb_ConfigureNetwork_t* AXIS2_CALL
++ adb_ConfigureNetwork_create(
++ const axutil_env_t *env)
++ {
++ adb_ConfigureNetwork_t *_ConfigureNetwork = NULL;
++
++ axutil_qname_t* qname = NULL;
++
++ AXIS2_ENV_CHECK(env, NULL);
++
++ _ConfigureNetwork = (adb_ConfigureNetwork_t *) AXIS2_MALLOC(env->
++ allocator, sizeof(adb_ConfigureNetwork_t));
++
++ if(NULL == _ConfigureNetwork)
++ {
++ AXIS2_ERROR_SET(env->error, AXIS2_ERROR_NO_MEMORY, AXIS2_FAILURE);
++ return NULL;
++ }
++
++ memset(_ConfigureNetwork, 0, sizeof(adb_ConfigureNetwork_t));
++
++ _ConfigureNetwork->property_ConfigureNetwork = NULL;
++ _ConfigureNetwork->is_valid_ConfigureNetwork = AXIS2_FALSE;
++
++ qname = axutil_qname_create (env,
++ "ConfigureNetwork",
++ "http://eucalyptus.ucsb.edu/",
++ NULL);
++ _ConfigureNetwork->qname = qname;
++
++
++ return _ConfigureNetwork;
++ }
++
++ axis2_status_t AXIS2_CALL
++ adb_ConfigureNetwork_free (
++ adb_ConfigureNetwork_t* _ConfigureNetwork,
++ const axutil_env_t *env)
++ {
++
++
++ AXIS2_ENV_CHECK(env, AXIS2_FAILURE);
++ AXIS2_PARAM_CHECK(env->error, _ConfigureNetwork, AXIS2_FAILURE);
++
++ adb_ConfigureNetwork_reset_ConfigureNetwork(_ConfigureNetwork, env);
++
++ if(_ConfigureNetwork->qname)
++ {
++ axutil_qname_free (_ConfigureNetwork->qname, env);
++ _ConfigureNetwork->qname = NULL;
++ }
++
++
++ if(_ConfigureNetwork)
++ {
++ AXIS2_FREE(env->allocator, _ConfigureNetwork);
++ _ConfigureNetwork = NULL;
++ }
++ return AXIS2_SUCCESS;
++ }
++
++
++
++
++ axis2_status_t AXIS2_CALL
++ adb_ConfigureNetwork_deserialize(
++ adb_ConfigureNetwork_t* _ConfigureNetwork,
++ const axutil_env_t *env,
++ axiom_node_t **dp_parent,
++ axis2_bool_t *dp_is_early_node_valid,
++ axis2_bool_t dont_care_minoccurs)
++ {
++ axiom_node_t *parent = *dp_parent;
++
++ axis2_status_t status = AXIS2_SUCCESS;
++
++ void *element = NULL;
++
++ axis2_char_t* text_value = NULL;
++ axutil_qname_t *qname = NULL;
++
++ axutil_qname_t *element_qname = NULL;
++
++ axiom_node_t *first_node = NULL;
++ axis2_bool_t is_early_node_valid = AXIS2_TRUE;
++ axiom_node_t *current_node = NULL;
++ axiom_element_t *current_element = NULL;
++
++ AXIS2_ENV_CHECK(env, AXIS2_FAILURE);
++ AXIS2_PARAM_CHECK(env->error, _ConfigureNetwork, AXIS2_FAILURE);
++
++
++
++ while(parent && axiom_node_get_node_type(parent, env) != AXIOM_ELEMENT)
++ {
++ parent = axiom_node_get_next_sibling(parent, env);
++ }
++ if (NULL == parent)
++ {
++ /* This should be checked before everything */
++ AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI,
++ "Failed in building adb object for ConfigureNetwork : "
++ "NULL elemenet can not be passed to deserialize");
++ return AXIS2_FAILURE;
++ }
++
++
++ current_element = (axiom_element_t *)axiom_node_get_data_element(parent, env);
++ qname = axiom_element_get_qname(current_element, env, parent);
++ if (axutil_qname_equals(qname, env, _ConfigureNetwork-> qname))
++ {
++
++ first_node = parent;
++
++ }
++ else
++ {
++ AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI,
++ "Failed in building adb object for ConfigureNetwork : "
++ "Expected %s but returned %s",
++ axutil_qname_to_string(_ConfigureNetwork-> qname, env),
++ axutil_qname_to_string(qname, env));
++
++ return AXIS2_FAILURE;
++ }
++
++
++
++ /*
++ * building ConfigureNetwork element
++ */
++
++
++
++ current_node = first_node;
++ is_early_node_valid = AXIS2_FALSE;
++
++
++ while(current_node && axiom_node_get_node_type(current_node, env) != AXIOM_ELEMENT)
++ {
++ current_node = axiom_node_get_next_sibling(current_node, env);
++ }
++ if(current_node != NULL)
++ {
++ current_element = (axiom_element_t *)axiom_node_get_data_element(current_node, env);
++ qname = axiom_element_get_qname(current_element, env, current_node);
++ }
++
++ element_qname = axutil_qname_create(env, "ConfigureNetwork", "http://eucalyptus.ucsb.edu/", NULL);
++
++
++ if (adb_configureNetworkType_is_particle() ||
++ (current_node && current_element && (axutil_qname_equals(element_qname, env, qname))))
++ {
++ if( current_node && current_element && (axutil_qname_equals(element_qname, env, qname)))
++ {
++ is_early_node_valid = AXIS2_TRUE;
++ }
++
++
++ element = (void*)adb_configureNetworkType_create(env);
++
++ status = adb_configureNetworkType_deserialize((adb_configureNetworkType_t*)element,
++ env, ¤t_node, &is_early_node_valid, AXIS2_FALSE);
++ if(AXIS2_FAILURE == status)
++ {
++ AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "failed in building adb object for element ConfigureNetwork");
++ }
++ else
++ {
++ status = adb_ConfigureNetwork_set_ConfigureNetwork(_ConfigureNetwork, env,
++ (adb_configureNetworkType_t*)element);
++ }
++
++ if(AXIS2_FAILURE == status)
++ {
++ AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "failed in setting the value for ConfigureNetwork ");
++ if(element_qname)
++ {
++ axutil_qname_free(element_qname, env);
++ }
++ return AXIS2_FAILURE;
++ }
++ }
++
++ else if(!dont_care_minoccurs)
++ {
++ if(element_qname)
++ {
++ axutil_qname_free(element_qname, env);
++ }
++ /* this is not a nillable element*/
++ AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "non nillable or minOuccrs != 0 element ConfigureNetwork missing");
++ return AXIS2_FAILURE;
++ }
++
++ if(element_qname)
++ {
++ axutil_qname_free(element_qname, env);
++ element_qname = NULL;
++ }
++
++ return status;
++ }
++
++ axis2_bool_t AXIS2_CALL
++ adb_ConfigureNetwork_is_particle()
++ {
++
++ return AXIS2_FALSE;
++
++ }
++
++
++ void AXIS2_CALL
++ adb_ConfigureNetwork_declare_parent_namespaces(
++ adb_ConfigureNetwork_t* _ConfigureNetwork,
++ const axutil_env_t *env, axiom_element_t *parent_element,
++ axutil_hash_t *namespaces, int *next_ns_index)
++ {
++
++ /* Here this is an empty function, Nothing to declare */
++
++ }
++
++
++
++ axiom_node_t* AXIS2_CALL
++ adb_ConfigureNetwork_serialize(
++ adb_ConfigureNetwork_t* _ConfigureNetwork,
++ const axutil_env_t *env, axiom_node_t *parent, axiom_element_t *parent_element, int parent_tag_closed, axutil_hash_t *namespaces, int *next_ns_index)
++ {
++
++
++
++ axiom_node_t *current_node = NULL;
++ int tag_closed = 0;
++
++
++
++ axiom_namespace_t *ns1 = NULL;
++
++ axis2_char_t *qname_uri = NULL;
++ axis2_char_t *qname_prefix = NULL;
++ axis2_char_t *p_prefix = NULL;
++ axis2_bool_t ns_already_defined;
++
++ axis2_char_t text_value_1[64];
++
++ axis2_char_t *start_input_str = NULL;
++ axis2_char_t *end_input_str = NULL;
++ unsigned int start_input_str_len = 0;
++ unsigned int end_input_str_len = 0;
++
++
++ axiom_data_source_t *data_source = NULL;
++ axutil_stream_t *stream = NULL;
++
++
++ int next_ns_index_value = 0;
++
++
++ AXIS2_ENV_CHECK(env, NULL);
++ AXIS2_PARAM_CHECK(env->error, _ConfigureNetwork, NULL);
++
++
++ namespaces = axutil_hash_make(env);
++ next_ns_index = &next_ns_index_value;
++
++ ns1 = axiom_namespace_create (env,
++ "http://eucalyptus.ucsb.edu/",
++ "n");
++ axutil_hash_set(namespaces, "http://eucalyptus.ucsb.edu/", AXIS2_HASH_KEY_STRING, axutil_strdup(env, "n"));
++
++
++ parent_element = axiom_element_create (env, NULL, "ConfigureNetwork", ns1 , &parent);
++
++
++ axiom_element_set_namespace(parent_element, env, ns1, parent);
++
++
++
++ data_source = axiom_data_source_create(env, parent, ¤t_node);
++ stream = axiom_data_source_get_stream(data_source, env);
++
++ if(!(p_prefix = (axis2_char_t*)axutil_hash_get(namespaces, "http://eucalyptus.ucsb.edu/", AXIS2_HASH_KEY_STRING)))
++ {
++ p_prefix = (axis2_char_t*)AXIS2_MALLOC(env->allocator, sizeof (axis2_char_t) * ADB_DEFAULT_NAMESPACE_PREFIX_LIMIT);
++ sprintf(p_prefix, "n%d", (*next_ns_index)++);
++ axutil_hash_set(namespaces, "http://eucalyptus.ucsb.edu/", AXIS2_HASH_KEY_STRING, p_prefix);
++
++ axiom_element_declare_namespace_assume_param_ownership(parent_element, env, axiom_namespace_create (env,
++ "http://eucalyptus.ucsb.edu/",
++ p_prefix));
++ }
++
++
++ if (!_ConfigureNetwork->is_valid_ConfigureNetwork)
++ {
++
++
++ start_input_str = (axis2_char_t*)AXIS2_MALLOC(env->allocator, sizeof(axis2_char_t) *
++ (5 + axutil_strlen(p_prefix) +
++ axutil_strlen("ConfigureNetwork") +
++ axutil_strlen(" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:nil=\"1\"")));
++
++
++ sprintf(start_input_str, "<%s%sConfigureNetwork xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:nil=\"1\"/>",
++ p_prefix?p_prefix:"",
++ (p_prefix && axutil_strcmp(p_prefix, ""))?":":"");
++
++ axutil_stream_write(stream, env, start_input_str, axutil_strlen(start_input_str));
++ AXIS2_FREE(env->allocator,start_input_str);
++
++ }
++ else
++ {
++ start_input_str = (axis2_char_t*)AXIS2_MALLOC(env->allocator, sizeof(axis2_char_t) *
++ (4 + axutil_strlen(p_prefix) +
++ axutil_strlen("ConfigureNetwork")));
++
++ /* axutil_strlen("<:>") + 1 = 4 */
++ end_input_str = (axis2_char_t*)AXIS2_MALLOC(env->allocator, sizeof(axis2_char_t) *
++ (5 + axutil_strlen(p_prefix) + axutil_strlen("ConfigureNetwork")));
++ /* axutil_strlen("") + 1 = 5 */
++
++
++
++
++
++
++ /*
++ * parsing ConfigureNetwork element
++ */
++
++
++
++ sprintf(start_input_str, "<%s%sConfigureNetwork",
++ p_prefix?p_prefix:"",
++ (p_prefix && axutil_strcmp(p_prefix, ""))?":":"");
++
++ start_input_str_len = axutil_strlen(start_input_str);
++ sprintf(end_input_str, "%s%sConfigureNetwork>",
++ p_prefix?p_prefix:"",
++ (p_prefix && axutil_strcmp(p_prefix, ""))?":":"");
++ end_input_str_len = axutil_strlen(end_input_str);
++
++ adb_configureNetworkType_serialize(_ConfigureNetwork->property_ConfigureNetwork,
++ env, current_node, parent_element,
++ adb_configureNetworkType_is_particle() || AXIS2_TRUE, namespaces, next_ns_index);
++
++
++ AXIS2_FREE(env->allocator,start_input_str);
++ AXIS2_FREE(env->allocator,end_input_str);
++ }
++
++
++ if(namespaces)
++ {
++ axutil_hash_index_t *hi;
++ void *val;
++ for (hi = axutil_hash_first(namespaces, env); hi; hi = axutil_hash_next(env, hi))
++ {
++ axutil_hash_this(hi, NULL, NULL, &val);
++ AXIS2_FREE(env->allocator, val);
++ }
++ axutil_hash_free(namespaces, env);
++ }
++
++
++ return parent;
++ }
++
++
++
++
++ /**
++ * getter for ConfigureNetwork.
++ */
++ adb_configureNetworkType_t* AXIS2_CALL
++ adb_ConfigureNetwork_get_ConfigureNetwork(
++ adb_ConfigureNetwork_t* _ConfigureNetwork,
++ const axutil_env_t *env)
++ {
++
++ AXIS2_ENV_CHECK(env, NULL);
++ AXIS2_PARAM_CHECK(env->error, _ConfigureNetwork, NULL);
++
++
++ return _ConfigureNetwork->property_ConfigureNetwork;
++ }
++
++ /**
++ * setter for ConfigureNetwork
++ */
++ axis2_status_t AXIS2_CALL
++ adb_ConfigureNetwork_set_ConfigureNetwork(
++ adb_ConfigureNetwork_t* _ConfigureNetwork,
++ const axutil_env_t *env,
++ adb_configureNetworkType_t* arg_ConfigureNetwork)
++ {
++
++
++ AXIS2_ENV_CHECK(env, AXIS2_FAILURE);
++ AXIS2_PARAM_CHECK(env->error, _ConfigureNetwork, AXIS2_FAILURE);
++
++ if(_ConfigureNetwork->is_valid_ConfigureNetwork &&
++ arg_ConfigureNetwork == _ConfigureNetwork->property_ConfigureNetwork)
++ {
++
++ return AXIS2_SUCCESS;
++ }
++
++ adb_ConfigureNetwork_reset_ConfigureNetwork(_ConfigureNetwork, env);
++
++
++ if(NULL == arg_ConfigureNetwork)
++ {
++ /* We are already done */
++ return AXIS2_SUCCESS;
++ }
++ _ConfigureNetwork->property_ConfigureNetwork = arg_ConfigureNetwork;
++ _ConfigureNetwork->is_valid_ConfigureNetwork = AXIS2_TRUE;
++
++ return AXIS2_SUCCESS;
++ }
++
++
++
++ /**
++ * resetter for ConfigureNetwork
++ */
++ axis2_status_t AXIS2_CALL
++ adb_ConfigureNetwork_reset_ConfigureNetwork(
++ adb_ConfigureNetwork_t* _ConfigureNetwork,
++ const axutil_env_t *env)
++ {
++ int i = 0;
++ int count = 0;
++ void *element = NULL;
++
++ AXIS2_ENV_CHECK(env, AXIS2_FAILURE);
++ AXIS2_PARAM_CHECK(env->error, _ConfigureNetwork, AXIS2_FAILURE);
++
++
++
++
++
++ if(_ConfigureNetwork->property_ConfigureNetwork != NULL)
++ {
++
++
++ adb_configureNetworkType_free(_ConfigureNetwork->property_ConfigureNetwork, env);
++ _ConfigureNetwork->property_ConfigureNetwork = NULL;
++ }
++
++
++
++ _ConfigureNetwork->is_valid_ConfigureNetwork = AXIS2_FALSE;
++ return AXIS2_SUCCESS;
++ }
++
++ /**
++ * Check whether ConfigureNetwork is nill
++ */
++ axis2_bool_t AXIS2_CALL
++ adb_ConfigureNetwork_is_ConfigureNetwork_nil(
++ adb_ConfigureNetwork_t* _ConfigureNetwork,
++ const axutil_env_t *env)
++ {
++ AXIS2_ENV_CHECK(env, AXIS2_TRUE);
++ AXIS2_PARAM_CHECK(env->error, _ConfigureNetwork, AXIS2_TRUE);
++
++ return !_ConfigureNetwork->is_valid_ConfigureNetwork;
++ }
++
++ /**
++ * Set ConfigureNetwork to nill (currently the same as reset)
++ */
++ axis2_status_t AXIS2_CALL
++ adb_ConfigureNetwork_set_ConfigureNetwork_nil(
++ adb_ConfigureNetwork_t* _ConfigureNetwork,
++ const axutil_env_t *env)
++ {
++ return adb_ConfigureNetwork_reset_ConfigureNetwork(_ConfigureNetwork, env);
++ }
++
++
++
+
+=== added file 'cluster/generated/adb_ConfigureNetwork.h'
+--- old/cluster/generated/adb_ConfigureNetwork.h 1970-01-01 00:00:00 +0000
++++ new/cluster/generated/adb_ConfigureNetwork.h 2010-01-05 01:00:49 +0000
+@@ -0,0 +1,208 @@
++
++
++ #ifndef ADB_CONFIGURENETWORK_H
++ #define ADB_CONFIGURENETWORK_H
++
++ /**
++ * adb_ConfigureNetwork.h
++ *
++ * This file was auto-generated from WSDL
++ * by the Apache Axis2/Java version: 1.4 Built on : Apr 26, 2008 (06:25:17 EDT)
++ */
++
++ /**
++ * adb_ConfigureNetwork class
++ */
++ typedef struct adb_ConfigureNetwork adb_ConfigureNetwork_t;
++
++
++ #include "adb_configureNetworkType.h"
++
++
++ #include
++ #include
++ #include
++ #include
++ #include
++
++ #ifdef __cplusplus
++ extern "C"
++ {
++ #endif
++
++ #define ADB_DEFAULT_DIGIT_LIMIT 64
++ #define ADB_DEFAULT_NAMESPACE_PREFIX_LIMIT 64
++
++
++ /******************************* Create and Free functions *********************************/
++
++ /**
++ * Constructor for creating adb_ConfigureNetwork_t
++ * @param env pointer to environment struct
++ * @return newly created adb_ConfigureNetwork_t object
++ */
++ adb_ConfigureNetwork_t* AXIS2_CALL
++ adb_ConfigureNetwork_create(
++ const axutil_env_t *env );
++
++ /**
++ * Free adb_ConfigureNetwork_t object
++ * @param _ConfigureNetwork adb_ConfigureNetwork_t object to free
++ * @param env pointer to environment struct
++ * @return AXIS2_SUCCESS on success, else AXIS2_FAILURE
++ */
++ axis2_status_t AXIS2_CALL
++ adb_ConfigureNetwork_free (
++ adb_ConfigureNetwork_t* _ConfigureNetwork,
++ const axutil_env_t *env);
++
++
++
++ /********************************** Getters and Setters **************************************/
++
++
++
++ /**
++ * Getter for ConfigureNetwork.
++ * @param _ConfigureNetwork adb_ConfigureNetwork_t object
++ * @param env pointer to environment struct
++ * @return adb_configureNetworkType_t*
++ */
++ adb_configureNetworkType_t* AXIS2_CALL
++ adb_ConfigureNetwork_get_ConfigureNetwork(
++ adb_ConfigureNetwork_t* _ConfigureNetwork,
++ const axutil_env_t *env);
++
++ /**
++ * Setter for ConfigureNetwork.
++ * @param _ConfigureNetwork adb_ConfigureNetwork_t object
++ * @param env pointer to environment struct
++ * @param arg_ConfigureNetwork adb_configureNetworkType_t*
++ * @return AXIS2_SUCCESS on success, else AXIS2_FAILURE
++ */
++ axis2_status_t AXIS2_CALL
++ adb_ConfigureNetwork_set_ConfigureNetwork(
++ adb_ConfigureNetwork_t* _ConfigureNetwork,
++ const axutil_env_t *env,
++ adb_configureNetworkType_t* arg_ConfigureNetwork);
++
++ /**
++ * Resetter for ConfigureNetwork
++ * @param _ConfigureNetwork adb_ConfigureNetwork_t object
++ * @param env pointer to environment struct
++ * @return AXIS2_SUCCESS on success, else AXIS2_FAILURE
++ */
++ axis2_status_t AXIS2_CALL
++ adb_ConfigureNetwork_reset_ConfigureNetwork(
++ adb_ConfigureNetwork_t* _ConfigureNetwork,
++ const axutil_env_t *env);
++
++
++
++
++ /******************************* Checking and Setting NIL values *********************************/
++
++
++ /**
++ * NOTE: set_nil is only available for nillable properties
++ */
++
++
++
++ /**
++ * Check whether ConfigureNetwork is nill
++ * @param _ConfigureNetwork adb_ConfigureNetwork_t object
++ * @param env pointer to environment struct
++ * @return AXIS2_TRUE if the element is nil or AXIS2_FALSE otherwise
++ */
++ axis2_bool_t AXIS2_CALL
++ adb_ConfigureNetwork_is_ConfigureNetwork_nil(
++ adb_ConfigureNetwork_t* _ConfigureNetwork,
++ const axutil_env_t *env);
++
++
++
++ /**
++ * Set ConfigureNetwork to nill (currently the same as reset)
++ * @param _ConfigureNetwork adb_ConfigureNetwork_t object
++ * @param env pointer to environment struct
++ * @return AXIS2_SUCCESS on success, else AXIS2_FAILURE
++ */
++ axis2_status_t AXIS2_CALL
++ adb_ConfigureNetwork_set_ConfigureNetwork_nil(
++ adb_ConfigureNetwork_t* _ConfigureNetwork,
++ const axutil_env_t *env);
++
++
++ /**************************** Serialize and Deserialize functions ***************************/
++ /*********** These functions are for use only inside the generated code *********************/
++
++
++ /**
++ * Deserialize an XML to adb objects
++ * @param _ConfigureNetwork adb_ConfigureNetwork_t object
++ * @param env pointer to environment struct
++ * @param dp_parent double pointer to the parent node to deserialize
++ * @param dp_is_early_node_valid double pointer to a flag (is_early_node_valid?)
++ * @param dont_care_minoccurs Dont set errors on validating minoccurs,
++ * (Parent will order this in a case of choice)
++ * @return AXIS2_SUCCESS on success, else AXIS2_FAILURE
++ */
++ axis2_status_t AXIS2_CALL
++ adb_ConfigureNetwork_deserialize(
++ adb_ConfigureNetwork_t* _ConfigureNetwork,
++ const axutil_env_t *env,
++ axiom_node_t** dp_parent,
++ axis2_bool_t *dp_is_early_node_valid,
++ axis2_bool_t dont_care_minoccurs);
++
++
++
++ /**
++ * Declare namespace in the most parent node
++ * @param _ConfigureNetwork adb_ConfigureNetwork_t object
++ * @param env pointer to environment struct
++ * @param parent_element parent element
++ * @param namespaces hash of namespace uri to prefix
++ * @param next_ns_index pointer to an int which contain the next namespace index
++ */
++ void AXIS2_CALL
++ adb_ConfigureNetwork_declare_parent_namespaces(
++ adb_ConfigureNetwork_t* _ConfigureNetwork,
++ const axutil_env_t *env, axiom_element_t *parent_element,
++ axutil_hash_t *namespaces, int *next_ns_index);
++
++
++
++ /**
++ * Serialize to an XML from the adb objects
++ * @param _ConfigureNetwork adb_ConfigureNetwork_t object
++ * @param env pointer to environment struct
++ * @param ConfigureNetwork_om_node node to serialize from
++ * @param ConfigureNetwork_om_element parent element to serialize from
++ * @param tag_closed whether the parent tag is closed or not
++ * @param namespaces hash of namespace uri to prefix
++ * @param next_ns_index an int which contain the next namespace index
++ * @return AXIS2_SUCCESS on success, else AXIS2_FAILURE
++ */
++ axiom_node_t* AXIS2_CALL
++ adb_ConfigureNetwork_serialize(
++ adb_ConfigureNetwork_t* _ConfigureNetwork,
++ const axutil_env_t *env,
++ axiom_node_t* ConfigureNetwork_om_node, axiom_element_t *ConfigureNetwork_om_element, int tag_closed, axutil_hash_t *namespaces, int *next_ns_index);
++
++ /**
++ * Check whether the adb_ConfigureNetwork is a particle class (E.g. group, inner sequence)
++ * @return whether this is a particle class.
++ */
++ axis2_bool_t AXIS2_CALL
++ adb_ConfigureNetwork_is_particle();
++
++
++ #ifdef __cplusplus
++ }
++ #endif
++
++ #endif /* ADB_CONFIGURENETWORK_H */
++
++
+
+=== added file 'cluster/generated/adb_ConfigureNetworkResponse.c'
+--- old/cluster/generated/adb_ConfigureNetworkResponse.c 1970-01-01 00:00:00 +0000
++++ new/cluster/generated/adb_ConfigureNetworkResponse.c 2010-01-05 01:00:49 +0000
+@@ -0,0 +1,525 @@
++
++
++ /**
++ * adb_ConfigureNetworkResponse.c
++ *
++ * This file was auto-generated from WSDL
++ * by the Apache Axis2/C version: SNAPSHOT Built on : Mar 10, 2008 (08:35:52 GMT+00:00)
++ */
++
++ #include "adb_ConfigureNetworkResponse.h"
++
++ /*
++ * implmentation of the ConfigureNetworkResponse|http://eucalyptus.ucsb.edu/ element
++ */
++
++
++
++ struct adb_ConfigureNetworkResponse
++ {
++
++ axutil_qname_t* qname;
++ adb_configureNetworkResponseType_t* property_ConfigureNetworkResponse;
++
++
++ axis2_bool_t is_valid_ConfigureNetworkResponse;
++
++
++
++ };
++
++
++ /************************* Private Function prototypes ********************************/
++
++
++
++ /************************* Function Implmentations ********************************/
++ adb_ConfigureNetworkResponse_t* AXIS2_CALL
++ adb_ConfigureNetworkResponse_create(
++ const axutil_env_t *env)
++ {
++ adb_ConfigureNetworkResponse_t *_ConfigureNetworkResponse = NULL;
++
++ axutil_qname_t* qname = NULL;
++
++ AXIS2_ENV_CHECK(env, NULL);
++
++ _ConfigureNetworkResponse = (adb_ConfigureNetworkResponse_t *) AXIS2_MALLOC(env->
++ allocator, sizeof(adb_ConfigureNetworkResponse_t));
++
++ if(NULL == _ConfigureNetworkResponse)
++ {
++ AXIS2_ERROR_SET(env->error, AXIS2_ERROR_NO_MEMORY, AXIS2_FAILURE);
++ return NULL;
++ }
++
++ memset(_ConfigureNetworkResponse, 0, sizeof(adb_ConfigureNetworkResponse_t));
++
++ _ConfigureNetworkResponse->property_ConfigureNetworkResponse = NULL;
++ _ConfigureNetworkResponse->is_valid_ConfigureNetworkResponse = AXIS2_FALSE;
++
++ qname = axutil_qname_create (env,
++ "ConfigureNetworkResponse",
++ "http://eucalyptus.ucsb.edu/",
++ NULL);
++ _ConfigureNetworkResponse->qname = qname;
++
++
++ return _ConfigureNetworkResponse;
++ }
++
++ axis2_status_t AXIS2_CALL
++ adb_ConfigureNetworkResponse_free (
++ adb_ConfigureNetworkResponse_t* _ConfigureNetworkResponse,
++ const axutil_env_t *env)
++ {
++
++
++ AXIS2_ENV_CHECK(env, AXIS2_FAILURE);
++ AXIS2_PARAM_CHECK(env->error, _ConfigureNetworkResponse, AXIS2_FAILURE);
++
++ adb_ConfigureNetworkResponse_reset_ConfigureNetworkResponse(_ConfigureNetworkResponse, env);
++
++ if(_ConfigureNetworkResponse->qname)
++ {
++ axutil_qname_free (_ConfigureNetworkResponse->qname, env);
++ _ConfigureNetworkResponse->qname = NULL;
++ }
++
++
++ if(_ConfigureNetworkResponse)
++ {
++ AXIS2_FREE(env->allocator, _ConfigureNetworkResponse);
++ _ConfigureNetworkResponse = NULL;
++ }
++ return AXIS2_SUCCESS;
++ }
++
++
++
++
++ axis2_status_t AXIS2_CALL
++ adb_ConfigureNetworkResponse_deserialize(
++ adb_ConfigureNetworkResponse_t* _ConfigureNetworkResponse,
++ const axutil_env_t *env,
++ axiom_node_t **dp_parent,
++ axis2_bool_t *dp_is_early_node_valid,
++ axis2_bool_t dont_care_minoccurs)
++ {
++ axiom_node_t *parent = *dp_parent;
++
++ axis2_status_t status = AXIS2_SUCCESS;
++
++ void *element = NULL;
++
++ axis2_char_t* text_value = NULL;
++ axutil_qname_t *qname = NULL;
++
++ axutil_qname_t *element_qname = NULL;
++
++ axiom_node_t *first_node = NULL;
++ axis2_bool_t is_early_node_valid = AXIS2_TRUE;
++ axiom_node_t *current_node = NULL;
++ axiom_element_t *current_element = NULL;
++
++ AXIS2_ENV_CHECK(env, AXIS2_FAILURE);
++ AXIS2_PARAM_CHECK(env->error, _ConfigureNetworkResponse, AXIS2_FAILURE);
++
++
++
++ while(parent && axiom_node_get_node_type(parent, env) != AXIOM_ELEMENT)
++ {
++ parent = axiom_node_get_next_sibling(parent, env);
++ }
++ if (NULL == parent)
++ {
++ /* This should be checked before everything */
++ AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI,
++ "Failed in building adb object for ConfigureNetworkResponse : "
++ "NULL elemenet can not be passed to deserialize");
++ return AXIS2_FAILURE;
++ }
++
++
++ current_element = (axiom_element_t *)axiom_node_get_data_element(parent, env);
++ qname = axiom_element_get_qname(current_element, env, parent);
++ if (axutil_qname_equals(qname, env, _ConfigureNetworkResponse-> qname))
++ {
++
++ first_node = parent;
++
++ }
++ else
++ {
++ AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI,
++ "Failed in building adb object for ConfigureNetworkResponse : "
++ "Expected %s but returned %s",
++ axutil_qname_to_string(_ConfigureNetworkResponse-> qname, env),
++ axutil_qname_to_string(qname, env));
++
++ return AXIS2_FAILURE;
++ }
++
++
++
++ /*
++ * building ConfigureNetworkResponse element
++ */
++
++
++
++ current_node = first_node;
++ is_early_node_valid = AXIS2_FALSE;
++
++
++ while(current_node && axiom_node_get_node_type(current_node, env) != AXIOM_ELEMENT)
++ {
++ current_node = axiom_node_get_next_sibling(current_node, env);
++ }
++ if(current_node != NULL)
++ {
++ current_element = (axiom_element_t *)axiom_node_get_data_element(current_node, env);
++ qname = axiom_element_get_qname(current_element, env, current_node);
++ }
++
++ element_qname = axutil_qname_create(env, "ConfigureNetworkResponse", "http://eucalyptus.ucsb.edu/", NULL);
++
++
++ if (adb_configureNetworkResponseType_is_particle() ||
++ (current_node && current_element && (axutil_qname_equals(element_qname, env, qname))))
++ {
++ if( current_node && current_element && (axutil_qname_equals(element_qname, env, qname)))
++ {
++ is_early_node_valid = AXIS2_TRUE;
++ }
++
++
++ element = (void*)adb_configureNetworkResponseType_create(env);
++
++ status = adb_configureNetworkResponseType_deserialize((adb_configureNetworkResponseType_t*)element,
++ env, ¤t_node, &is_early_node_valid, AXIS2_FALSE);
++ if(AXIS2_FAILURE == status)
++ {
++ AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "failed in building adb object for element ConfigureNetworkResponse");
++ }
++ else
++ {
++ status = adb_ConfigureNetworkResponse_set_ConfigureNetworkResponse(_ConfigureNetworkResponse, env,
++ (adb_configureNetworkResponseType_t*)element);
++ }
++
++ if(AXIS2_FAILURE == status)
++ {
++ AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "failed in setting the value for ConfigureNetworkResponse ");
++ if(element_qname)
++ {
++ axutil_qname_free(element_qname, env);
++ }
++ return AXIS2_FAILURE;
++ }
++ }
++
++ else if(!dont_care_minoccurs)
++ {
++ if(element_qname)
++ {
++ axutil_qname_free(element_qname, env);
++ }
++ /* this is not a nillable element*/
++ AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "non nillable or minOuccrs != 0 element ConfigureNetworkResponse missing");
++ return AXIS2_FAILURE;
++ }
++
++ if(element_qname)
++ {
++ axutil_qname_free(element_qname, env);
++ element_qname = NULL;
++ }
++
++ return status;
++ }
++
++ axis2_bool_t AXIS2_CALL
++ adb_ConfigureNetworkResponse_is_particle()
++ {
++
++ return AXIS2_FALSE;
++
++ }
++
++
++ void AXIS2_CALL
++ adb_ConfigureNetworkResponse_declare_parent_namespaces(
++ adb_ConfigureNetworkResponse_t* _ConfigureNetworkResponse,
++ const axutil_env_t *env, axiom_element_t *parent_element,
++ axutil_hash_t *namespaces, int *next_ns_index)
++ {
++
++ /* Here this is an empty function, Nothing to declare */
++
++ }
++
++
++
++ axiom_node_t* AXIS2_CALL
++ adb_ConfigureNetworkResponse_serialize(
++ adb_ConfigureNetworkResponse_t* _ConfigureNetworkResponse,
++ const axutil_env_t *env, axiom_node_t *parent, axiom_element_t *parent_element, int parent_tag_closed, axutil_hash_t *namespaces, int *next_ns_index)
++ {
++
++
++
++ axiom_node_t *current_node = NULL;
++ int tag_closed = 0;
++
++
++
++ axiom_namespace_t *ns1 = NULL;
++
++ axis2_char_t *qname_uri = NULL;
++ axis2_char_t *qname_prefix = NULL;
++ axis2_char_t *p_prefix = NULL;
++ axis2_bool_t ns_already_defined;
++
++ axis2_char_t text_value_1[64];
++
++ axis2_char_t *start_input_str = NULL;
++ axis2_char_t *end_input_str = NULL;
++ unsigned int start_input_str_len = 0;
++ unsigned int end_input_str_len = 0;
++
++
++ axiom_data_source_t *data_source = NULL;
++ axutil_stream_t *stream = NULL;
++
++
++ int next_ns_index_value = 0;
++
++
++ AXIS2_ENV_CHECK(env, NULL);
++ AXIS2_PARAM_CHECK(env->error, _ConfigureNetworkResponse, NULL);
++
++
++ namespaces = axutil_hash_make(env);
++ next_ns_index = &next_ns_index_value;
++
++ ns1 = axiom_namespace_create (env,
++ "http://eucalyptus.ucsb.edu/",
++ "n");
++ axutil_hash_set(namespaces, "http://eucalyptus.ucsb.edu/", AXIS2_HASH_KEY_STRING, axutil_strdup(env, "n"));
++
++
++ parent_element = axiom_element_create (env, NULL, "ConfigureNetworkResponse", ns1 , &parent);
++
++
++ axiom_element_set_namespace(parent_element, env, ns1, parent);
++
++
++
++ data_source = axiom_data_source_create(env, parent, ¤t_node);
++ stream = axiom_data_source_get_stream(data_source, env);
++
++ if(!(p_prefix = (axis2_char_t*)axutil_hash_get(namespaces, "http://eucalyptus.ucsb.edu/", AXIS2_HASH_KEY_STRING)))
++ {
++ p_prefix = (axis2_char_t*)AXIS2_MALLOC(env->allocator, sizeof (axis2_char_t) * ADB_DEFAULT_NAMESPACE_PREFIX_LIMIT);
++ sprintf(p_prefix, "n%d", (*next_ns_index)++);
++ axutil_hash_set(namespaces, "http://eucalyptus.ucsb.edu/", AXIS2_HASH_KEY_STRING, p_prefix);
++
++ axiom_element_declare_namespace_assume_param_ownership(parent_element, env, axiom_namespace_create (env,
++ "http://eucalyptus.ucsb.edu/",
++ p_prefix));
++ }
++
++
++ if (!_ConfigureNetworkResponse->is_valid_ConfigureNetworkResponse)
++ {
++
++
++ start_input_str = (axis2_char_t*)AXIS2_MALLOC(env->allocator, sizeof(axis2_char_t) *
++ (5 + axutil_strlen(p_prefix) +
++ axutil_strlen("ConfigureNetworkResponse") +
++ axutil_strlen(" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:nil=\"1\"")));
++
++
++ sprintf(start_input_str, "<%s%sConfigureNetworkResponse xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:nil=\"1\"/>",
++ p_prefix?p_prefix:"",
++ (p_prefix && axutil_strcmp(p_prefix, ""))?":":"");
++
++ axutil_stream_write(stream, env, start_input_str, axutil_strlen(start_input_str));
++ AXIS2_FREE(env->allocator,start_input_str);
++
++ }
++ else
++ {
++ start_input_str = (axis2_char_t*)AXIS2_MALLOC(env->allocator, sizeof(axis2_char_t) *
++ (4 + axutil_strlen(p_prefix) +
++ axutil_strlen("ConfigureNetworkResponse")));
++
++ /* axutil_strlen("<:>") + 1 = 4 */
++ end_input_str = (axis2_char_t*)AXIS2_MALLOC(env->allocator, sizeof(axis2_char_t) *
++ (5 + axutil_strlen(p_prefix) + axutil_strlen("ConfigureNetworkResponse")));
++ /* axutil_strlen("") + 1 = 5 */
++
++
++
++
++
++
++ /*
++ * parsing ConfigureNetworkResponse element
++ */
++
++
++
++ sprintf(start_input_str, "<%s%sConfigureNetworkResponse",
++ p_prefix?p_prefix:"",
++ (p_prefix && axutil_strcmp(p_prefix, ""))?":":"");
++
++ start_input_str_len = axutil_strlen(start_input_str);
++ sprintf(end_input_str, "%s%sConfigureNetworkResponse>",
++ p_prefix?p_prefix:"",
++ (p_prefix && axutil_strcmp(p_prefix, ""))?":":"");
++ end_input_str_len = axutil_strlen(end_input_str);
++
++ adb_configureNetworkResponseType_serialize(_ConfigureNetworkResponse->property_ConfigureNetworkResponse,
++ env, current_node, parent_element,
++ adb_configureNetworkResponseType_is_particle() || AXIS2_TRUE, namespaces, next_ns_index);
++
++
++ AXIS2_FREE(env->allocator,start_input_str);
++ AXIS2_FREE(env->allocator,end_input_str);
++ }
++
++
++ if(namespaces)
++ {
++ axutil_hash_index_t *hi;
++ void *val;
++ for (hi = axutil_hash_first(namespaces, env); hi; hi = axutil_hash_next(env, hi))
++ {
++ axutil_hash_this(hi, NULL, NULL, &val);
++ AXIS2_FREE(env->allocator, val);
++ }
++ axutil_hash_free(namespaces, env);
++ }
++
++
++ return parent;
++ }
++
++
++
++
++ /**
++ * getter for ConfigureNetworkResponse.
++ */
++ adb_configureNetworkResponseType_t* AXIS2_CALL
++ adb_ConfigureNetworkResponse_get_ConfigureNetworkResponse(
++ adb_ConfigureNetworkResponse_t* _ConfigureNetworkResponse,
++ const axutil_env_t *env)
++ {
++
++ AXIS2_ENV_CHECK(env, NULL);
++ AXIS2_PARAM_CHECK(env->error, _ConfigureNetworkResponse, NULL);
++
++
++ return _ConfigureNetworkResponse->property_ConfigureNetworkResponse;
++ }
++
++ /**
++ * setter for ConfigureNetworkResponse
++ */
++ axis2_status_t AXIS2_CALL
++ adb_ConfigureNetworkResponse_set_ConfigureNetworkResponse(
++ adb_ConfigureNetworkResponse_t* _ConfigureNetworkResponse,
++ const axutil_env_t *env,
++ adb_configureNetworkResponseType_t* arg_ConfigureNetworkResponse)
++ {
++
++
++ AXIS2_ENV_CHECK(env, AXIS2_FAILURE);
++ AXIS2_PARAM_CHECK(env->error, _ConfigureNetworkResponse, AXIS2_FAILURE);
++
++ if(_ConfigureNetworkResponse->is_valid_ConfigureNetworkResponse &&
++ arg_ConfigureNetworkResponse == _ConfigureNetworkResponse->property_ConfigureNetworkResponse)
++ {
++
++ return AXIS2_SUCCESS;
++ }
++
++ adb_ConfigureNetworkResponse_reset_ConfigureNetworkResponse(_ConfigureNetworkResponse, env);
++
++
++ if(NULL == arg_ConfigureNetworkResponse)
++ {
++ /* We are already done */
++ return AXIS2_SUCCESS;
++ }
++ _ConfigureNetworkResponse->property_ConfigureNetworkResponse = arg_ConfigureNetworkResponse;
++ _ConfigureNetworkResponse->is_valid_ConfigureNetworkResponse = AXIS2_TRUE;
++
++ return AXIS2_SUCCESS;
++ }
++
++
++
++ /**
++ * resetter for ConfigureNetworkResponse
++ */
++ axis2_status_t AXIS2_CALL
++ adb_ConfigureNetworkResponse_reset_ConfigureNetworkResponse(
++ adb_ConfigureNetworkResponse_t* _ConfigureNetworkResponse,
++ const axutil_env_t *env)
++ {
++ int i = 0;
++ int count = 0;
++ void *element = NULL;
++
++ AXIS2_ENV_CHECK(env, AXIS2_FAILURE);
++ AXIS2_PARAM_CHECK(env->error, _ConfigureNetworkResponse, AXIS2_FAILURE);
++
++
++
++
++
++ if(_ConfigureNetworkResponse->property_ConfigureNetworkResponse != NULL)
++ {
++
++
++ adb_configureNetworkResponseType_free(_ConfigureNetworkResponse->property_ConfigureNetworkResponse, env);
++ _ConfigureNetworkResponse->property_ConfigureNetworkResponse = NULL;
++ }
++
++
++
++ _ConfigureNetworkResponse->is_valid_ConfigureNetworkResponse = AXIS2_FALSE;
++ return AXIS2_SUCCESS;
++ }
++
++ /**
++ * Check whether ConfigureNetworkResponse is nill
++ */
++ axis2_bool_t AXIS2_CALL
++ adb_ConfigureNetworkResponse_is_ConfigureNetworkResponse_nil(
++ adb_ConfigureNetworkResponse_t* _ConfigureNetworkResponse,
++ const axutil_env_t *env)
++ {
++ AXIS2_ENV_CHECK(env, AXIS2_TRUE);
++ AXIS2_PARAM_CHECK(env->error, _ConfigureNetworkResponse, AXIS2_TRUE);
++
++ return !_ConfigureNetworkResponse->is_valid_ConfigureNetworkResponse;
++ }
++
++ /**
++ * Set ConfigureNetworkResponse to nill (currently the same as reset)
++ */
++ axis2_status_t AXIS2_CALL
++ adb_ConfigureNetworkResponse_set_ConfigureNetworkResponse_nil(
++ adb_ConfigureNetworkResponse_t* _ConfigureNetworkResponse,
++ const axutil_env_t *env)
++ {
++ return adb_ConfigureNetworkResponse_reset_ConfigureNetworkResponse(_ConfigureNetworkResponse, env);
++ }
++
++
++
+
+=== added file 'cluster/generated/adb_ConfigureNetworkResponse.h'
+--- old/cluster/generated/adb_ConfigureNetworkResponse.h 1970-01-01 00:00:00 +0000
++++ new/cluster/generated/adb_ConfigureNetworkResponse.h 2010-01-05 01:00:49 +0000
+@@ -0,0 +1,208 @@
++
++
++ #ifndef ADB_CONFIGURENETWORKRESPONSE_H
++ #define ADB_CONFIGURENETWORKRESPONSE_H
++
++ /**
++ * adb_ConfigureNetworkResponse.h
++ *
++ * This file was auto-generated from WSDL
++ * by the Apache Axis2/Java version: 1.4 Built on : Apr 26, 2008 (06:25:17 EDT)
++ */
++
++ /**
++ * adb_ConfigureNetworkResponse class
++ */
++ typedef struct adb_ConfigureNetworkResponse adb_ConfigureNetworkResponse_t;
++
++
++ #include "adb_configureNetworkResponseType.h"
++
++
++ #include
++ #include
++ #include
++ #include
++ #include
++
++ #ifdef __cplusplus
++ extern "C"
++ {
++ #endif
++
++ #define ADB_DEFAULT_DIGIT_LIMIT 64
++ #define ADB_DEFAULT_NAMESPACE_PREFIX_LIMIT 64
++
++
++ /******************************* Create and Free functions *********************************/
++
++ /**
++ * Constructor for creating adb_ConfigureNetworkResponse_t
++ * @param env pointer to environment struct
++ * @return newly created adb_ConfigureNetworkResponse_t object
++ */
++ adb_ConfigureNetworkResponse_t* AXIS2_CALL
++ adb_ConfigureNetworkResponse_create(
++ const axutil_env_t *env );
++
++ /**
++ * Free adb_ConfigureNetworkResponse_t object
++ * @param _ConfigureNetworkResponse adb_ConfigureNetworkResponse_t object to free
++ * @param env pointer to environment struct
++ * @return AXIS2_SUCCESS on success, else AXIS2_FAILURE
++ */
++ axis2_status_t AXIS2_CALL
++ adb_ConfigureNetworkResponse_free (
++ adb_ConfigureNetworkResponse_t* _ConfigureNetworkResponse,
++ const axutil_env_t *env);
++
++
++
++ /********************************** Getters and Setters **************************************/
++
++
++
++ /**
++ * Getter for ConfigureNetworkResponse.
++ * @param _ConfigureNetworkResponse adb_ConfigureNetworkResponse_t object
++ * @param env pointer to environment struct
++ * @return adb_configureNetworkResponseType_t*
++ */
++ adb_configureNetworkResponseType_t* AXIS2_CALL
++ adb_ConfigureNetworkResponse_get_ConfigureNetworkResponse(
++ adb_ConfigureNetworkResponse_t* _ConfigureNetworkResponse,
++ const axutil_env_t *env);
++
++ /**
++ * Setter for ConfigureNetworkResponse.
++ * @param _ConfigureNetworkResponse adb_ConfigureNetworkResponse_t object
++ * @param env pointer to environment struct
++ * @param arg_ConfigureNetworkResponse adb_configureNetworkResponseType_t*
++ * @return AXIS2_SUCCESS on success, else AXIS2_FAILURE
++ */
++ axis2_status_t AXIS2_CALL
++ adb_ConfigureNetworkResponse_set_ConfigureNetworkResponse(
++ adb_ConfigureNetworkResponse_t* _ConfigureNetworkResponse,
++ const axutil_env_t *env,
++ adb_configureNetworkResponseType_t* arg_ConfigureNetworkResponse);
++
++ /**
++ * Resetter for ConfigureNetworkResponse
++ * @param _ConfigureNetworkResponse adb_ConfigureNetworkResponse_t object
++ * @param env pointer to environment struct
++ * @return AXIS2_SUCCESS on success, else AXIS2_FAILURE
++ */
++ axis2_status_t AXIS2_CALL
++ adb_ConfigureNetworkResponse_reset_ConfigureNetworkResponse(
++ adb_ConfigureNetworkResponse_t* _ConfigureNetworkResponse,
++ const axutil_env_t *env);
++
++
++
++
++ /******************************* Checking and Setting NIL values *********************************/
++
++
++ /**
++ * NOTE: set_nil is only available for nillable properties
++ */
++
++
++
++ /**
++ * Check whether ConfigureNetworkResponse is nill
++ * @param _ConfigureNetworkResponse adb_ConfigureNetworkResponse_t object
++ * @param env pointer to environment struct
++ * @return AXIS2_TRUE if the element is nil or AXIS2_FALSE otherwise
++ */
++ axis2_bool_t AXIS2_CALL
++ adb_ConfigureNetworkResponse_is_ConfigureNetworkResponse_nil(
++ adb_ConfigureNetworkResponse_t* _ConfigureNetworkResponse,
++ const axutil_env_t *env);
++
++
++
++ /**
++ * Set ConfigureNetworkResponse to nill (currently the same as reset)
++ * @param _ConfigureNetworkResponse adb_ConfigureNetworkResponse_t object
++ * @param env pointer to environment struct
++ * @return AXIS2_SUCCESS on success, else AXIS2_FAILURE
++ */
++ axis2_status_t AXIS2_CALL
++ adb_ConfigureNetworkResponse_set_ConfigureNetworkResponse_nil(
++ adb_ConfigureNetworkResponse_t* _ConfigureNetworkResponse,
++ const axutil_env_t *env);
++
++
++ /**************************** Serialize and Deserialize functions ***************************/
++ /*********** These functions are for use only inside the generated code *********************/
++
++
++ /**
++ * Deserialize an XML to adb objects
++ * @param _ConfigureNetworkResponse adb_ConfigureNetworkResponse_t object
++ * @param env pointer to environment struct
++ * @param dp_parent double pointer to the parent node to deserialize
++ * @param dp_is_early_node_valid double pointer to a flag (is_early_node_valid?)
++ * @param dont_care_minoccurs Dont set errors on validating minoccurs,
++ * (Parent will order this in a case of choice)
++ * @return AXIS2_SUCCESS on success, else AXIS2_FAILURE
++ */
++ axis2_status_t AXIS2_CALL
++ adb_ConfigureNetworkResponse_deserialize(
++ adb_ConfigureNetworkResponse_t* _ConfigureNetworkResponse,
++ const axutil_env_t *env,
++ axiom_node_t** dp_parent,
++ axis2_bool_t *dp_is_early_node_valid,
++ axis2_bool_t dont_care_minoccurs);
++
++
++
++ /**
++ * Declare namespace in the most parent node
++ * @param _ConfigureNetworkResponse adb_ConfigureNetworkResponse_t object
++ * @param env pointer to environment struct
++ * @param parent_element parent element
++ * @param namespaces hash of namespace uri to prefix
++ * @param next_ns_index pointer to an int which contain the next namespace index
++ */
++ void AXIS2_CALL
++ adb_ConfigureNetworkResponse_declare_parent_namespaces(
++ adb_ConfigureNetworkResponse_t* _ConfigureNetworkResponse,
++ const axutil_env_t *env, axiom_element_t *parent_element,
++ axutil_hash_t *namespaces, int *next_ns_index);
++
++
++
++ /**
++ * Serialize to an XML from the adb objects
++ * @param _ConfigureNetworkResponse adb_ConfigureNetworkResponse_t object
++ * @param env pointer to environment struct
++ * @param ConfigureNetworkResponse_om_node node to serialize from
++ * @param ConfigureNetworkResponse_om_element parent element to serialize from
++ * @param tag_closed whether the parent tag is closed or not
++ * @param namespaces hash of namespace uri to prefix
++ * @param next_ns_index an int which contain the next namespace index
++ * @return AXIS2_SUCCESS on success, else AXIS2_FAILURE
++ */
++ axiom_node_t* AXIS2_CALL
++ adb_ConfigureNetworkResponse_serialize(
++ adb_ConfigureNetworkResponse_t* _ConfigureNetworkResponse,
++ const axutil_env_t *env,
++ axiom_node_t* ConfigureNetworkResponse_om_node, axiom_element_t *ConfigureNetworkResponse_om_element, int tag_closed, axutil_hash_t *namespaces, int *next_ns_index);
++
++ /**
++ * Check whether the adb_ConfigureNetworkResponse is a particle class (E.g. group, inner sequence)
++ * @return whether this is a particle class.
++ */
++ axis2_bool_t AXIS2_CALL
++ adb_ConfigureNetworkResponse_is_particle();
++
++
++ #ifdef __cplusplus
++ }
++ #endif
++
++ #endif /* ADB_CONFIGURENETWORKRESPONSE_H */
++
++
+
+=== added file 'cluster/generated/adb_DescribeInstances.c'
+--- old/cluster/generated/adb_DescribeInstances.c 1970-01-01 00:00:00 +0000
++++ new/cluster/generated/adb_DescribeInstances.c 2010-01-05 01:00:49 +0000
+@@ -0,0 +1,525 @@
++
++
++ /**
++ * adb_DescribeInstances.c
++ *
++ * This file was auto-generated from WSDL
++ * by the Apache Axis2/C version: SNAPSHOT Built on : Mar 10, 2008 (08:35:52 GMT+00:00)
++ */
++
++ #include "adb_DescribeInstances.h"
++
++ /*
++ * implmentation of the DescribeInstances|http://eucalyptus.ucsb.edu/ element
++ */
++
++
++
++ struct adb_DescribeInstances
++ {
++
++ axutil_qname_t* qname;
++ adb_describeInstancesType_t* property_DescribeInstances;
++
++
++ axis2_bool_t is_valid_DescribeInstances;
++
++
++
++ };
++
++
++ /************************* Private Function prototypes ********************************/
++
++
++
++ /************************* Function Implmentations ********************************/
++ adb_DescribeInstances_t* AXIS2_CALL
++ adb_DescribeInstances_create(
++ const axutil_env_t *env)
++ {
++ adb_DescribeInstances_t *_DescribeInstances = NULL;
++
++ axutil_qname_t* qname = NULL;
++
++ AXIS2_ENV_CHECK(env, NULL);
++
++ _DescribeInstances = (adb_DescribeInstances_t *) AXIS2_MALLOC(env->
++ allocator, sizeof(adb_DescribeInstances_t));
++
++ if(NULL == _DescribeInstances)
++ {
++ AXIS2_ERROR_SET(env->error, AXIS2_ERROR_NO_MEMORY, AXIS2_FAILURE);
++ return NULL;
++ }
++
++ memset(_DescribeInstances, 0, sizeof(adb_DescribeInstances_t));
++
++ _DescribeInstances->property_DescribeInstances = NULL;
++ _DescribeInstances->is_valid_DescribeInstances = AXIS2_FALSE;
++
++ qname = axutil_qname_create (env,
++ "DescribeInstances",
++ "http://eucalyptus.ucsb.edu/",
++ NULL);
++ _DescribeInstances->qname = qname;
++
++
++ return _DescribeInstances;
++ }
++
++ axis2_status_t AXIS2_CALL
++ adb_DescribeInstances_free (
++ adb_DescribeInstances_t* _DescribeInstances,
++ const axutil_env_t *env)
++ {
++
++
++ AXIS2_ENV_CHECK(env, AXIS2_FAILURE);
++ AXIS2_PARAM_CHECK(env->error, _DescribeInstances, AXIS2_FAILURE);
++
++ adb_DescribeInstances_reset_DescribeInstances(_DescribeInstances, env);
++
++ if(_DescribeInstances->qname)
++ {
++ axutil_qname_free (_DescribeInstances->qname, env);
++ _DescribeInstances->qname = NULL;
++ }
++
++
++ if(_DescribeInstances)
++ {
++ AXIS2_FREE(env->allocator, _DescribeInstances);
++ _DescribeInstances = NULL;
++ }
++ return AXIS2_SUCCESS;
++ }
++
++
++
++
++ axis2_status_t AXIS2_CALL
++ adb_DescribeInstances_deserialize(
++ adb_DescribeInstances_t* _DescribeInstances,
++ const axutil_env_t *env,
++ axiom_node_t **dp_parent,
++ axis2_bool_t *dp_is_early_node_valid,
++ axis2_bool_t dont_care_minoccurs)
++ {
++ axiom_node_t *parent = *dp_parent;
++
++ axis2_status_t status = AXIS2_SUCCESS;
++
++ void *element = NULL;
++
++ axis2_char_t* text_value = NULL;
++ axutil_qname_t *qname = NULL;
++
++ axutil_qname_t *element_qname = NULL;
++
++ axiom_node_t *first_node = NULL;
++ axis2_bool_t is_early_node_valid = AXIS2_TRUE;
++ axiom_node_t *current_node = NULL;
++ axiom_element_t *current_element = NULL;
++
++ AXIS2_ENV_CHECK(env, AXIS2_FAILURE);
++ AXIS2_PARAM_CHECK(env->error, _DescribeInstances, AXIS2_FAILURE);
++
++
++
++ while(parent && axiom_node_get_node_type(parent, env) != AXIOM_ELEMENT)
++ {
++ parent = axiom_node_get_next_sibling(parent, env);
++ }
++ if (NULL == parent)
++ {
++ /* This should be checked before everything */
++ AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI,
++ "Failed in building adb object for DescribeInstances : "
++ "NULL elemenet can not be passed to deserialize");
++ return AXIS2_FAILURE;
++ }
++
++
++ current_element = (axiom_element_t *)axiom_node_get_data_element(parent, env);
++ qname = axiom_element_get_qname(current_element, env, parent);
++ if (axutil_qname_equals(qname, env, _DescribeInstances-> qname))
++ {
++
++ first_node = parent;
++
++ }
++ else
++ {
++ AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI,
++ "Failed in building adb object for DescribeInstances : "
++ "Expected %s but returned %s",
++ axutil_qname_to_string(_DescribeInstances-> qname, env),
++ axutil_qname_to_string(qname, env));
++
++ return AXIS2_FAILURE;
++ }
++
++
++
++ /*
++ * building DescribeInstances element
++ */
++
++
++
++ current_node = first_node;
++ is_early_node_valid = AXIS2_FALSE;
++
++
++ while(current_node && axiom_node_get_node_type(current_node, env) != AXIOM_ELEMENT)
++ {
++ current_node = axiom_node_get_next_sibling(current_node, env);
++ }
++ if(current_node != NULL)
++ {
++ current_element = (axiom_element_t *)axiom_node_get_data_element(current_node, env);
++ qname = axiom_element_get_qname(current_element, env, current_node);
++ }
++
++ element_qname = axutil_qname_create(env, "DescribeInstances", "http://eucalyptus.ucsb.edu/", NULL);
++
++
++ if (adb_describeInstancesType_is_particle() ||
++ (current_node && current_element && (axutil_qname_equals(element_qname, env, qname))))
++ {
++ if( current_node && current_element && (axutil_qname_equals(element_qname, env, qname)))
++ {
++ is_early_node_valid = AXIS2_TRUE;
++ }
++
++
++ element = (void*)adb_describeInstancesType_create(env);
++
++ status = adb_describeInstancesType_deserialize((adb_describeInstancesType_t*)element,
++ env, ¤t_node, &is_early_node_valid, AXIS2_FALSE);
++ if(AXIS2_FAILURE == status)
++ {
++ AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "failed in building adb object for element DescribeInstances");
++ }
++ else
++ {
++ status = adb_DescribeInstances_set_DescribeInstances(_DescribeInstances, env,
++ (adb_describeInstancesType_t*)element);
++ }
++
++ if(AXIS2_FAILURE == status)
++ {
++ AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "failed in setting the value for DescribeInstances ");
++ if(element_qname)
++ {
++ axutil_qname_free(element_qname, env);
++ }
++ return AXIS2_FAILURE;
++ }
++ }
++
++ else if(!dont_care_minoccurs)
++ {
++ if(element_qname)
++ {
++ axutil_qname_free(element_qname, env);
++ }
++ /* this is not a nillable element*/
++ AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "non nillable or minOuccrs != 0 element DescribeInstances missing");
++ return AXIS2_FAILURE;
++ }
++
++ if(element_qname)
++ {
++ axutil_qname_free(element_qname, env);
++ element_qname = NULL;
++ }
++
++ return status;
++ }
++
++ axis2_bool_t AXIS2_CALL
++ adb_DescribeInstances_is_particle()
++ {
++
++ return AXIS2_FALSE;
++
++ }
++
++
++ void AXIS2_CALL
++ adb_DescribeInstances_declare_parent_namespaces(
++ adb_DescribeInstances_t* _DescribeInstances,
++ const axutil_env_t *env, axiom_element_t *parent_element,
++ axutil_hash_t *namespaces, int *next_ns_index)
++ {
++
++ /* Here this is an empty function, Nothing to declare */
++
++ }
++
++
++
++ axiom_node_t* AXIS2_CALL
++ adb_DescribeInstances_serialize(
++ adb_DescribeInstances_t* _DescribeInstances,
++ const axutil_env_t *env, axiom_node_t *parent, axiom_element_t *parent_element, int parent_tag_closed, axutil_hash_t *namespaces, int *next_ns_index)
++ {
++
++
++
++ axiom_node_t *current_node = NULL;
++ int tag_closed = 0;
++
++
++
++ axiom_namespace_t *ns1 = NULL;
++
++ axis2_char_t *qname_uri = NULL;
++ axis2_char_t *qname_prefix = NULL;
++ axis2_char_t *p_prefix = NULL;
++ axis2_bool_t ns_already_defined;
++
++ axis2_char_t text_value_1[64];
++
++ axis2_char_t *start_input_str = NULL;
++ axis2_char_t *end_input_str = NULL;
++ unsigned int start_input_str_len = 0;
++ unsigned int end_input_str_len = 0;
++
++
++ axiom_data_source_t *data_source = NULL;
++ axutil_stream_t *stream = NULL;
++
++
++ int next_ns_index_value = 0;
++
++
++ AXIS2_ENV_CHECK(env, NULL);
++ AXIS2_PARAM_CHECK(env->error, _DescribeInstances, NULL);
++
++
++ namespaces = axutil_hash_make(env);
++ next_ns_index = &next_ns_index_value;
++
++ ns1 = axiom_namespace_create (env,
++ "http://eucalyptus.ucsb.edu/",
++ "n");
++ axutil_hash_set(namespaces, "http://eucalyptus.ucsb.edu/", AXIS2_HASH_KEY_STRING, axutil_strdup(env, "n"));
++
++
++ parent_element = axiom_element_create (env, NULL, "DescribeInstances", ns1 , &parent);
++
++
++ axiom_element_set_namespace(parent_element, env, ns1, parent);
++
++
++
++ data_source = axiom_data_source_create(env, parent, ¤t_node);
++ stream = axiom_data_source_get_stream(data_source, env);
++
++ if(!(p_prefix = (axis2_char_t*)axutil_hash_get(namespaces, "http://eucalyptus.ucsb.edu/", AXIS2_HASH_KEY_STRING)))
++ {
++ p_prefix = (axis2_char_t*)AXIS2_MALLOC(env->allocator, sizeof (axis2_char_t) * ADB_DEFAULT_NAMESPACE_PREFIX_LIMIT);
++ sprintf(p_prefix, "n%d", (*next_ns_index)++);
++ axutil_hash_set(namespaces, "http://eucalyptus.ucsb.edu/", AXIS2_HASH_KEY_STRING, p_prefix);
++
++ axiom_element_declare_namespace_assume_param_ownership(parent_element, env, axiom_namespace_create (env,
++ "http://eucalyptus.ucsb.edu/",
++ p_prefix));
++ }
++
++
++ if (!_DescribeInstances->is_valid_DescribeInstances)
++ {
++
++
++ start_input_str = (axis2_char_t*)AXIS2_MALLOC(env->allocator, sizeof(axis2_char_t) *
++ (5 + axutil_strlen(p_prefix) +
++ axutil_strlen("DescribeInstances") +
++ axutil_strlen(" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:nil=\"1\"")));
++
++
++ sprintf(start_input_str, "<%s%sDescribeInstances xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:nil=\"1\"/>",
++ p_prefix?p_prefix:"",
++ (p_prefix && axutil_strcmp(p_prefix, ""))?":":"");
++
++ axutil_stream_write(stream, env, start_input_str, axutil_strlen(start_input_str));
++ AXIS2_FREE(env->allocator,start_input_str);
++
++ }
++ else
++ {
++ start_input_str = (axis2_char_t*)AXIS2_MALLOC(env->allocator, sizeof(axis2_char_t) *
++ (4 + axutil_strlen(p_prefix) +
++ axutil_strlen("DescribeInstances")));
++
++ /* axutil_strlen("<:>") + 1 = 4 */
++ end_input_str = (axis2_char_t*)AXIS2_MALLOC(env->allocator, sizeof(axis2_char_t) *
++ (5 + axutil_strlen(p_prefix) + axutil_strlen("DescribeInstances")));
++ /* axutil_strlen("") + 1 = 5 */
++
++
++
++
++
++
++ /*
++ * parsing DescribeInstances element
++ */
++
++
++
++ sprintf(start_input_str, "<%s%sDescribeInstances",
++ p_prefix?p_prefix:"",
++ (p_prefix && axutil_strcmp(p_prefix, ""))?":":"");
++
++ start_input_str_len = axutil_strlen(start_input_str);
++ sprintf(end_input_str, "%s%sDescribeInstances>",
++ p_prefix?p_prefix:"",
++ (p_prefix && axutil_strcmp(p_prefix, ""))?":":"");
++ end_input_str_len = axutil_strlen(end_input_str);
++
++ adb_describeInstancesType_serialize(_DescribeInstances->property_DescribeInstances,
++ env, current_node, parent_element,
++ adb_describeInstancesType_is_particle() || AXIS2_TRUE, namespaces, next_ns_index);
++
++
++ AXIS2_FREE(env->allocator,start_input_str);
++ AXIS2_FREE(env->allocator,end_input_str);
++ }
++
++
++ if(namespaces)
++ {
++ axutil_hash_index_t *hi;
++ void *val;
++ for (hi = axutil_hash_first(namespaces, env); hi; hi = axutil_hash_next(env, hi))
++ {
++ axutil_hash_this(hi, NULL, NULL, &val);
++ AXIS2_FREE(env->allocator, val);
++ }
++ axutil_hash_free(namespaces, env);
++ }
++
++
++ return parent;
++ }
++
++
++
++
++ /**
++ * getter for DescribeInstances.
++ */
++ adb_describeInstancesType_t* AXIS2_CALL
++ adb_DescribeInstances_get_DescribeInstances(
++ adb_DescribeInstances_t* _DescribeInstances,
++ const axutil_env_t *env)
++ {
++
++ AXIS2_ENV_CHECK(env, NULL);
++ AXIS2_PARAM_CHECK(env->error, _DescribeInstances, NULL);
++
++
++ return _DescribeInstances->property_DescribeInstances;
++ }
++
++ /**
++ * setter for DescribeInstances
++ */
++ axis2_status_t AXIS2_CALL
++ adb_DescribeInstances_set_DescribeInstances(
++ adb_DescribeInstances_t* _DescribeInstances,
++ const axutil_env_t *env,
++ adb_describeInstancesType_t* arg_DescribeInstances)
++ {
++
++
++ AXIS2_ENV_CHECK(env, AXIS2_FAILURE);
++ AXIS2_PARAM_CHECK(env->error, _DescribeInstances, AXIS2_FAILURE);
++
++ if(_DescribeInstances->is_valid_DescribeInstances &&
++ arg_DescribeInstances == _DescribeInstances->property_DescribeInstances)
++ {
++
++ return AXIS2_SUCCESS;
++ }
++
++ adb_DescribeInstances_reset_DescribeInstances(_DescribeInstances, env);
++
++
++ if(NULL == arg_DescribeInstances)
++ {
++ /* We are already done */
++ return AXIS2_SUCCESS;
++ }
++ _DescribeInstances->property_DescribeInstances = arg_DescribeInstances;
++ _DescribeInstances->is_valid_DescribeInstances = AXIS2_TRUE;
++
++ return AXIS2_SUCCESS;
++ }
++
++
++
++ /**
++ * resetter for DescribeInstances
++ */
++ axis2_status_t AXIS2_CALL
++ adb_DescribeInstances_reset_DescribeInstances(
++ adb_DescribeInstances_t* _DescribeInstances,
++ const axutil_env_t *env)
++ {
++ int i = 0;
++ int count = 0;
++ void *element = NULL;
++
++ AXIS2_ENV_CHECK(env, AXIS2_FAILURE);
++ AXIS2_PARAM_CHECK(env->error, _DescribeInstances, AXIS2_FAILURE);
++
++
++
++
++
++ if(_DescribeInstances->property_DescribeInstances != NULL)
++ {
++
++
++ adb_describeInstancesType_free(_DescribeInstances->property_DescribeInstances, env);
++ _DescribeInstances->property_DescribeInstances = NULL;
++ }
++
++
++
++ _DescribeInstances->is_valid_DescribeInstances = AXIS2_FALSE;
++ return AXIS2_SUCCESS;
++ }
++
++ /**
++ * Check whether DescribeInstances is nill
++ */
++ axis2_bool_t AXIS2_CALL
++ adb_DescribeInstances_is_DescribeInstances_nil(
++ adb_DescribeInstances_t* _DescribeInstances,
++ const axutil_env_t *env)
++ {
++ AXIS2_ENV_CHECK(env, AXIS2_TRUE);
++ AXIS2_PARAM_CHECK(env->error, _DescribeInstances, AXIS2_TRUE);
++
++ return !_DescribeInstances->is_valid_DescribeInstances;
++ }
++
++ /**
++ * Set DescribeInstances to nill (currently the same as reset)
++ */
++ axis2_status_t AXIS2_CALL
++ adb_DescribeInstances_set_DescribeInstances_nil(
++ adb_DescribeInstances_t* _DescribeInstances,
++ const axutil_env_t *env)
++ {
++ return adb_DescribeInstances_reset_DescribeInstances(_DescribeInstances, env);
++ }
++
++
++
+
+=== added file 'cluster/generated/adb_DescribeInstances.h'
+--- old/cluster/generated/adb_DescribeInstances.h 1970-01-01 00:00:00 +0000
++++ new/cluster/generated/adb_DescribeInstances.h 2010-01-05 01:00:49 +0000
+@@ -0,0 +1,208 @@
++
++
++ #ifndef ADB_DESCRIBEINSTANCES_H
++ #define ADB_DESCRIBEINSTANCES_H
++
++ /**
++ * adb_DescribeInstances.h
++ *
++ * This file was auto-generated from WSDL
++ * by the Apache Axis2/Java version: 1.4 Built on : Apr 26, 2008 (06:25:17 EDT)
++ */
++
++ /**
++ * adb_DescribeInstances class
++ */
++ typedef struct adb_DescribeInstances adb_DescribeInstances_t;
++
++
++ #include "adb_describeInstancesType.h"
++
++
++ #include