diff --git a/.gitignore b/.gitignore
index 33f95c7902c..9511e9ede2f 100644
--- a/.gitignore
+++ b/.gitignore
@@ -67,8 +67,10 @@ awsapi/modules/*
.settings/
db.properties.override
awsapi/overlays/
+tools/marvin/marvin/cloudstackAPI/*
*.egg-info/
docs/tmp
docs/publish
docs/runbook/tmp
docs/runbook/publish
+Gemfile.lock
diff --git a/LICENSE b/LICENSE
index 3f01e10f654..afb662a77e2 100644
--- a/LICENSE
+++ b/LICENSE
@@ -309,10 +309,1906 @@ Within the deps directory
XenServerJava http://community.citrix.com/cdn/xs/sdks/
+Within the patches/systemvm/debian/config/etc directory
+ placed in the public domain
+ by Simon Kelley
+ dnsmasq.conf
+ vpcdnsmasq.conf
+
+
+Within the patches/systemvm/debian/config/etc/apache2 directory
+ licensed under the Apache License, Version 2 http://www.apache.org/licenses/LICENSE-2.0.txt (as above)
+ Copyright (c) 2012 The Apache Software Foundation
+ from The Apache Software Foundation http://www.apache.org/
+ httpd.conf
+ ports.conf
+ sites-available/default
+ sites-available/default-ssl
+ vhostexample.conf
+
+
+Within the patches/systemvm/debian/config/etc/ssh/ directory
+ licensed under the BSD (2-clause) http://www.opensource.org/licenses/BSD-2-Clause (as follows)
+
+
+ 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 author nor the names of 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 THE COPYRIGHT OWNER 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.
+
+ from OpenSSH Project http://www.openssh.org/
+ sshd_config
+
+
+Within the patches/systemvm/debian/config/root/redundant_router directory
+ placed in the public domain
+ by The netfilter.org project http://www.netfilter.org/
+ conntrackd.conf.templ
+
+
+Within the scripts/storage/secondary directory
+ licensed under the Apache License, Version 2 http://www.apache.org/licenses/LICENSE-2.0.txt (as above)
+ Copyright (c) 2010-2011 OpenStack, LLC.
+ from OpenStack, LLC http://www.openstack.org
+ swift
+
+
+Within the scripts/vm/hypervisor/xenserver directory
+ licensed under the Apache License, Version 2 http://www.apache.org/licenses/LICENSE-2.0.txt (as above)
+ Copyright (c) 2010-2011 OpenStack, LLC.
+ from OpenStack, LLC http://www.openstack.org
+ swift
+
+
+Within the ui/lib directory
+ placed in the public domain
+ by Eric Meyer http://meyerweb.com/eric/
+ reset.css
+
+ licensed under the Apache License, Version 2 http://www.apache.org/licenses/LICENSE-2.0.txt (as above)
+ Copyright (c) 2006 Google Inc.
+ from Google Inc. http://google.com
+ excanvas.js http://code.google.com/p/explorercanvas/
+
+ licensed under the BSD (2-clause) http://www.opensource.org/licenses/BSD-2-Clause (as follows)
+
+ Copyright (c) 2008 George McGinley Smith
+ 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 author nor the names of 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 THE COPYRIGHT OWNER 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.
+
+ from George McGinley Smith
+ jquery.easing.js
+
+ licensed under the MIT License http://www.opensource.org/licenses/mit-license.php (as follows)
+
+ Copyright (c) 2011, John Resig
+
+ Permission is hereby granted, free of charge, to any person obtaining
+ a copy of this software and associated documentation files (the
+ "Software"), to deal in the Software without restriction, including
+ without limitation the rights to use, copy, modify, merge, publish,
+ distribute, sublicense, and/or sell copies of the Software, and to
+ permit persons to whom the Software is furnished to do so, subject to
+ the following conditions:
+
+ The above copyright notice and this permission notice shall be
+ included in all copies or substantial portions of the Software.
+
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+ LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+ OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+ from John Resig
+ jquery.js
+
+ licensed under the MIT License http://www.opensource.org/licenses/mit-license.php (as follows)
+
+ Copyright (c) 2006 - 2011 Jörn Zaefferer
+
+ Permission is hereby granted, free of charge, to any person obtaining
+ a copy of this software and associated documentation files (the
+ "Software"), to deal in the Software without restriction, including
+ without limitation the rights to use, copy, modify, merge, publish,
+ distribute, sublicense, and/or sell copies of the Software, and to
+ permit persons to whom the Software is furnished to do so, subject to
+ the following conditions:
+
+ The above copyright notice and this permission notice shall be
+ included in all copies or substantial portions of the Software.
+
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+ LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+ OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+ from Jorn Zaefferer
+ jquery.validate.js
+
+ licensed under the MIT License http://www.opensource.org/licenses/mit-license.php (as follows)
+
+ Copyright (c) 2010, Sebastian Tschan
+
+ Permission is hereby granted, free of charge, to any person obtaining
+ a copy of this software and associated documentation files (the
+ "Software"), to deal in the Software without restriction, including
+ without limitation the rights to use, copy, modify, merge, publish,
+ distribute, sublicense, and/or sell copies of the Software, and to
+ permit persons to whom the Software is furnished to do so, subject to
+ the following conditions:
+
+ The above copyright notice and this permission notice shall be
+ included in all copies or substantial portions of the Software.
+
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+ LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+ OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+ from Sebastian Tschan https://blueimp.net
+ jquery.md5.js
+
+ licensed under the MIT License http://www.opensource.org/licenses/mit-license.php (as follows)
+
+ Copyright (c) 2006 Klaus Hartl (stilbuero.de)
+
+ Permission is hereby granted, free of charge, to any person obtaining
+ a copy of this software and associated documentation files (the
+ "Software"), to deal in the Software without restriction, including
+ without limitation the rights to use, copy, modify, merge, publish,
+ distribute, sublicense, and/or sell copies of the Software, and to
+ permit persons to whom the Software is furnished to do so, subject to
+ the following conditions:
+
+ The above copyright notice and this permission notice shall be
+ included in all copies or substantial portions of the Software.
+
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+ LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+ OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+ from Klaus Hartl http://stilbuero.de
+ jquery.cookies.js
+
+
+Within the ui/lib/flot directory
+ licensed under the MIT License http://www.opensource.org/licenses/mit-license.php (as follows)
+
+ Released under the MIT license by IOLA, December 2007.
+
+ Permission is hereby granted, free of charge, to any person obtaining
+ a copy of this software and associated documentation files (the
+ "Software"), to deal in the Software without restriction, including
+ without limitation the rights to use, copy, modify, merge, publish,
+ distribute, sublicense, and/or sell copies of the Software, and to
+ permit persons to whom the Software is furnished to do so, subject to
+ the following conditions:
+
+ The above copyright notice and this permission notice shall be
+ included in all copies or substantial portions of the Software.
+
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+ LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+ OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+ from IOLA http://www.iola.dk/
+ jquery.flot.crosshair.js
+ jquery.flot.fillbetween.js
+ jquery.flot.image.js
+ jquery.flot.js
+ jquery.flot.navigate.js
+ jquery.flot.resize.js
+ jquery.flot.selection.js
+ jquery.flot.stack.js
+ jquery.flot.symbol.js
+ jquery.flot.threshold.js
+
+ licensed under the MIT License http://www.opensource.org/licenses/mit-license.php (as follows)
+
+ Created by Brian Medendorp, June 2009
+ Updated November 2009 with contributions from: btburnett3, Anthony Aragues and Xavi Ivars
+
+ Permission is hereby granted, free of charge, to any person obtaining
+ a copy of this software and associated documentation files (the
+ "Software"), to deal in the Software without restriction, including
+ without limitation the rights to use, copy, modify, merge, publish,
+ distribute, sublicense, and/or sell copies of the Software, and to
+ permit persons to whom the Software is furnished to do so, subject to
+ the following conditions:
+
+ The above copyright notice and this permission notice shall be
+ included in all copies or substantial portions of the Software.
+
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+ LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+ OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+ from Brian Medendorp
+ jquery.pie.js
+
+ licensed under the MIT License http://www.opensource.org/licenses/mit-license.php (as follows)
+
+
+ Permission is hereby granted, free of charge, to any person obtaining
+ a copy of this software and associated documentation files (the
+ "Software"), to deal in the Software without restriction, including
+ without limitation the rights to use, copy, modify, merge, publish,
+ distribute, sublicense, and/or sell copies of the Software, and to
+ permit persons to whom the Software is furnished to do so, subject to
+ the following conditions:
+
+ The above copyright notice and this permission notice shall be
+ included in all copies or substantial portions of the Software.
+
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+ LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+ OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+ from Ole Laursen
+ jquery.colorhelpers.js
+
+
+Within the ui/lib/jquery-ui directory
+ licensed under the MIT License http://www.opensource.org/licenses/mit-license.php (as follows)
+
+
+ Permission is hereby granted, free of charge, to any person obtaining
+ a copy of this software and associated documentation files (the
+ "Software"), to deal in the Software without restriction, including
+ without limitation the rights to use, copy, modify, merge, publish,
+ distribute, sublicense, and/or sell copies of the Software, and to
+ permit persons to whom the Software is furnished to do so, subject to
+ the following conditions:
+
+ The above copyright notice and this permission notice shall be
+ included in all copies or substantial portions of the Software.
+
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+ LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+ OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+ from jQuery UI Developers http://jqueryui.com/about
+ css/jquery-ui.css
+ index.html
+ js/jquery-ui.js
+
+
+Within the ui/lib/qunit directory
+ licensed under the MIT License http://www.opensource.org/licenses/mit-license.php (as follows)
+
+ Copyright (c) 2012 John Resig, Jörn Zaefferer
+
+ Permission is hereby granted, free of charge, to any person obtaining
+ a copy of this software and associated documentation files (the
+ "Software"), to deal in the Software without restriction, including
+ without limitation the rights to use, copy, modify, merge, publish,
+ distribute, sublicense, and/or sell copies of the Software, and to
+ permit persons to whom the Software is furnished to do so, subject to
+ the following conditions:
+
+ The above copyright notice and this permission notice shall be
+ included in all copies or substantial portions of the Software.
+
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+ LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+ OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+ from Jorn Zaefferer
+ qunit.css http://docs.jquery.com/QUnit
+ qunit.js http://docs.jquery.com/QUnit
+
+
+Within the utils/src/com/cloud/utils/db directory
+ licensed under the Apache License, Version 2 http://www.apache.org/licenses/LICENSE-2.0.txt (as above)
+ Copyright (c) 2004 Clinton Begin
+ from Clinton Begin http://code.google.com/p/mybatis/
+ ScriptRunner.java http://code.google.com/p/mybatis/
+
+
+
+********************************************************************************
+
+Binary or packaged versions of this software (including versions built from source)
+contain third party resources (as listed below).
+
+Within the target/jar directory
+ placed in the public domain
+ by Distributed Computing Laboratory at Emory University http://creativecommons.org/licenses/publicdomain/
+ cloud-backport-util-concurrent-3.0.jar
+
+ licensed under the Apache License, Version 1.1 http://www.apache.org/licenses/LICENSE-1.1 (as follows)
+
+ Copyright (c) 2012 The Apache Software Foundation
+
+ /* ====================================================================
+ * The Apache Software License, Version 1.1
+ *
+ * Copyright (c) 2000 The Apache Software Foundation. All rights
+ * reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ *
+ * 2. 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.
+ *
+ * 3. The end-user documentation included with the redistribution,
+ * if any, must include the following acknowledgment:
+ * "This product includes software developed by the
+ * Apache Software Foundation (http://www.apache.org/)."
+ * Alternately, this acknowledgment may appear in the software itself,
+ * if and wherever such third-party acknowledgments normally appear.
+ *
+ * 4. The names "Apache" and "Apache Software Foundation" must
+ * not be used to endorse or promote products derived from this
+ * software without prior written permission. For written
+ * permission, please contact apache@apache.org.
+ *
+ * 5. Products derived from this software may not be called "Apache",
+ * nor may "Apache" appear in their name, without prior written
+ * permission of the Apache Software Foundation.
+ *
+ * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED 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 THE APACHE SOFTWARE FOUNDATION OR
+ * ITS 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.
+ * ====================================================================
+ *
+ * This software consists of voluntary contributions made by many
+ * individuals on behalf of the Apache Software Foundation. For more
+ * information on the Apache Software Foundation, please see
+ * .
+ */
+
+ from The Apache Software Foundation http://www.apache.org/
+ cloud-commons-discovery.jar http://commons.apache.org/discovery/
+
+ licensed under the Apache License, Version 2 http://www.apache.org/licenses/LICENSE-2.0.txt (as above)
+ Copyright (c) 2012 The Apache Software Foundation
+ from The Apache Software Foundation http://www.apache.org/
+ cloud-axis.jar http://axis.apache.org/axis/
+ cloud-cglib.jar http://cglib.sourceforge.net/
+ cloud-commons-codec-1.5.jar http://commons.apache.org/codec/
+ cloud-commons-collections-3.2.1.jar http://commons.apache.org/collections/
+ cloud-commons-configuration-1.8.jar http://commons.apache.org/configuration/
+ cloud-commons-dbcp-1.4.jar http://commons.apache.org/dbcp/
+ cloud-commons-httpclient-3.1.jar http://hc.apache.org/httpclient-3.x/
+ cloud-commons-lang-2.6.jar http://commons.apache.org/lang/
+ cloud-commons-logging-1.1.1.jar http://commons.apache.org/logging/
+ cloud-commons-pool-1.5.6.jar http://commons.apache.org/pool/
+ cloud-log4j-extras.jar http://logging.apache.org/log4j/companions/extras/
+ cloud-log4j.jar http://logging.apache.org/log4j/
+ cloud-ws-commons-util-1.0.2.jar http://ws.apache.org/commons/util/
+ cloud-xmlrpc-client-3.1.3.jar http://ws.apache.org/xmlrpc/client.html
+ cloud-xmlrpc-common-3.1.3.jar http://ws.apache.org/xmlrpc/xmlrpc-common/
+
+ licensed under the Apache License, Version 2 http://www.apache.org/licenses/LICENSE-2.0.txt (as above)
+ Copyright (c) 2007-2010, The JASYPT team (http://www.jasypt.org)
+ from The JASYPT team http://www.jasypt.org
+ cloud-jasypt-1.9.jar http://www.jasypt.org
+
+ licensed under the Apache License, Version 2 http://www.apache.org/licenses/LICENSE-2.0.txt (as above)
+ Copyright (c) 2003-2007 Luck Consulting Pty Ltd
+ from Luck Consulting Pty Ltd http://gregluck.com/blog/about/
+ cloud-ehcache.jar http://ehcache.org/
+
+ licensed under the Apache License, Version 2 http://www.apache.org/licenses/LICENSE-2.0.txt (as above)
+ Copyright (c) 2009 Google Inc.
+ from Google Inc. http://google.com
+ cloud-google-gson-1.7.1.jar http://code.google.com/p/google-gson/
+
+ licensed under the Apache License, Version 2 http://www.apache.org/licenses/LICENSE-2.0.txt (as above)
+
+ from Jetty Committers http://jetty.codehaus.org/jetty/
+ jetty-6.1.26.jar http://repo1.maven.org/maven2/org/mortbay/jetty/jetty/6.1.26/jetty-6.1.26-sources.jar
+ jetty-util-6.1.26.jar http://repo1.maven.org/maven2/org/mortbay/jetty/jetty-util/6.1.26/jetty-util-6.1.26-sources.jar
+
+ licensed under the BSD (3-clause) http://www.opensource.org/licenses/BSD-3-Clause (as follows)
+
+ Copyright (c) 2009, Caringo, Inc.
+
+ Redistribution and use in source and binary forms, with or without
+ modification, are permitted provided that the following conditions
+ are met:
+ 1. Redistributions of source code must retain the above copyright
+ notice, this list of conditions and the following disclaimer.
+ 2. 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.
+ 3. Neither the name of the copyright holders 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 THE COPYRIGHT OWNER 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.
+
+ from Caringo, Inc. http://www.caringo.com/
+ CAStorSDK.jar http://www.castor.org/download.html
+
+ licensed under the BSD (3-clause) http://www.opensource.org/licenses/BSD-3-Clause (as follows)
+
+ Copyright (c) 2002-2011 Atsuhiko Yamanaka, JCraft,Inc.
+
+ Redistribution and use in source and binary forms, with or without
+ modification, are permitted provided that the following conditions
+ are met:
+ 1. Redistributions of source code must retain the above copyright
+ notice, this list of conditions and the following disclaimer.
+ 2. 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.
+ 3. Neither the name of the copyright holders 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 THE COPYRIGHT OWNER 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.
+
+ from JCraft http://www.jcraft.com/
+ cloud-jsch-0.1.42.jar http://www.jcraft.com/jsch/
+
+ licensed under the BSD (3-clause) http://www.opensource.org/licenses/BSD-3-Clause (as follows)
+
+ Copyright (c) 2007-2008 Trilead AG (http://www.trilead.com)
+ All rights reserved.
+
+ Redistribution and use in source and binary forms, with or without
+ modification, are permitted provided that the following conditions
+ are met:
+ 1. Redistributions of source code must retain the above copyright
+ notice, this list of conditions and the following disclaimer.
+ 2. 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.
+ 3. Neither the name of the copyright holders 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 THE COPYRIGHT OWNER 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.
+
+ from Trilead AG http://www.trilead.com
+ cloud-trilead-ssh2-build213.jar http://sourceforge.net/projects/orion-ssh2/
+
+ licensed under the Bouncy Castle adaptation of MIT X11 License http://www.bouncycastle.org/licence.html (as follows)
+
+
+ Please note: our license is an adaptation of the MIT X11 License and should be
+ read as such.
+
+ LICENSE Copyright (c) 2000 - 2011 The Legion Of The Bouncy Castle
+ (http://www.bouncycastle.org)
+
+ Permission is hereby granted, free of charge, to any person obtaining a copy of
+ this software and associated documentation files (the "Software"), to deal in
+ the Software without restriction, including without limitation the rights to
+ use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
+ the Software, and to permit persons to whom the Software is furnished to do so,
+ subject to the following conditions:
+
+ The above copyright notice and this permission notice shall be included in all
+ copies or substantial portions of the Software.
+
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
+ FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
+ COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
+ IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+ from The Legion Of The Bouncy Castle http://www.bouncycastle.org
+ cloud-bcprov-jdk16-1.45.jar http://repo1.maven.org/maven2/org/bouncycastle/bcprov-jdk16/1.45/bcprov-jdk16-1.45-sources.jar
+
+ licensed under the COMMON DEVELOPMENT AND DISTRIBUTION LICENSE (CDDL) Version 1.0 http://www.opensource.org/licenses/CDDL-1.0 (as follows)
+
+ Copyright (c) 2006 Sun Microsystems, Inc. All rights reserved.
+
+ COMMON DEVELOPMENT AND DISTRIBUTION LICENSE (CDDL) Version 1.0
+
+ 1. Definitions.
+
+ 1.1. "Contributor" means each individual or entity that
+ creates or contributes to the creation of Modifications.
+
+ 1.2. "Contributor Version" means the combination of the
+ Original Software, prior Modifications used by a
+ Contributor (if any), and the Modifications made by that
+ particular Contributor.
+
+ 1.3. "Covered Software" means (a) the Original Software, or
+ (b) Modifications, or (c) the combination of files
+ containing Original Software with files containing
+ Modifications, in each case including portions thereof.
+
+ 1.4. "Executable" means the Covered Software in any form
+ other than Source Code.
+
+ 1.5. "Initial Developer" means the individual or entity
+ that first makes Original Software available under this
+ License.
+
+ 1.6. "Larger Work" means a work which combines Covered
+ Software or portions thereof with code not governed by the
+ terms of this License.
+
+ 1.7. "License" means this document.
+
+ 1.8. "Licensable" means having the right to grant, to the
+ maximum extent possible, whether at the time of the initial
+ grant or subsequently acquired, any and all of the rights
+ conveyed herein.
+
+ 1.9. "Modifications" means the Source Code and Executable
+ form of any of the following:
+
+ A. Any file that results from an addition to,
+ deletion from or modification of the contents of a
+ file containing Original Software or previous
+ Modifications;
+
+ B. Any new file that contains any part of the
+ Original Software or previous Modification; or
+
+ C. Any new file that is contributed or otherwise made
+ available under the terms of this License.
+
+ 1.10. "Original Software" means the Source Code and
+ Executable form of computer software code that is
+ originally released under this License.
+
+ 1.11. "Patent Claims" means any patent claim(s), now owned
+ or hereafter acquired, including without limitation,
+ method, process, and apparatus claims, in any patent
+ Licensable by grantor.
+
+ 1.12. "Source Code" means (a) the common form of computer
+ software code in which modifications are made and (b)
+ associated documentation included in or with such code.
+
+ 1.13. "You" (or "Your") means an individual or a legal
+ entity exercising rights under, and complying with all of
+ the terms of, this License. For legal entities, "You"
+ includes any entity which controls, is controlled by, or is
+ under common control with You. For purposes of this
+ definition, "control" means (a) the power, direct or
+ indirect, to cause the direction or management of such
+ entity, whether by contract or otherwise, or (b) ownership
+ of more than fifty percent (50%) of the outstanding shares
+ or beneficial ownership of such entity.
+
+ 2. License Grants.
+
+ 2.1. The Initial Developer Grant.
+
+ Conditioned upon Your compliance with Section 3.1 below and
+ subject to third party intellectual property claims, the
+ Initial Developer hereby grants You a world-wide,
+ royalty-free, non-exclusive license:
+
+ (a) under intellectual property rights (other than
+ patent or trademark) Licensable by Initial Developer,
+ to use, reproduce, modify, display, perform,
+ sublicense and distribute the Original Software (or
+ portions thereof), with or without Modifications,
+ and/or as part of a Larger Work; and
+
+ (b) under Patent Claims infringed by the making,
+ using or selling of Original Software, to make, have
+ made, use, practice, sell, and offer for sale, and/or
+ otherwise dispose of the Original Software (or
+ portions thereof).
+
+ (c) The licenses granted in Sections 2.1(a) and (b)
+ are effective on the date Initial Developer first
+ distributes or otherwise makes the Original Software
+ available to a third party under the terms of this
+ License.
+
+ (d) Notwithstanding Section 2.1(b) above, no patent
+ license is granted: (1) for code that You delete from
+ the Original Software, or (2) for infringements
+ caused by: (i) the modification of the Original
+ Software, or (ii) the combination of the Original
+ Software with other software or devices.
+
+ 2.2. Contributor Grant.
+
+ Conditioned upon Your compliance with Section 3.1 below and
+ subject to third party intellectual property claims, each
+ Contributor hereby grants You a world-wide, royalty-free,
+ non-exclusive license:
+
+ (a) under intellectual property rights (other than
+ patent or trademark) Licensable by Contributor to
+ use, reproduce, modify, display, perform, sublicense
+ and distribute the Modifications created by such
+ Contributor (or portions thereof), either on an
+ unmodified basis, with other Modifications, as
+ Covered Software and/or as part of a Larger Work; and
+
+ (b) under Patent Claims infringed by the making,
+ using, or selling of Modifications made by that
+ Contributor either alone and/or in combination with
+ its Contributor Version (or portions of such
+ combination), to make, use, sell, offer for sale,
+ have made, and/or otherwise dispose of: (1)
+ Modifications made by that Contributor (or portions
+ thereof); and (2) the combination of Modifications
+ made by that Contributor with its Contributor Version
+ (or portions of such combination).
+
+ (c) The licenses granted in Sections 2.2(a) and
+ 2.2(b) are effective on the date Contributor first
+ distributes or otherwise makes the Modifications
+ available to a third party.
+
+ (d) Notwithstanding Section 2.2(b) above, no patent
+ license is granted: (1) for any code that Contributor
+ has deleted from the Contributor Version; (2) for
+ infringements caused by: (i) third party
+ modifications of Contributor Version, or (ii) the
+ combination of Modifications made by that Contributor
+ with other software (except as part of the
+ Contributor Version) or other devices; or (3) under
+ Patent Claims infringed by Covered Software in the
+ absence of Modifications made by that Contributor.
+
+ 3. Distribution Obligations.
+
+ 3.1. Availability of Source Code.
+
+ Any Covered Software that You distribute or otherwise make
+ available in Executable form must also be made available in
+ Source Code form and that Source Code form must be
+ distributed only under the terms of this License. You must
+ include a copy of this License with every copy of the
+ Source Code form of the Covered Software You distribute or
+ otherwise make available. You must inform recipients of any
+ such Covered Software in Executable form as to how they can
+ obtain such Covered Software in Source Code form in a
+ reasonable manner on or through a medium customarily used
+ for software exchange.
+
+ 3.2. Modifications.
+
+ The Modifications that You create or to which You
+ contribute are governed by the terms of this License. You
+ represent that You believe Your Modifications are Your
+ original creation(s) and/or You have sufficient rights to
+ grant the rights conveyed by this License.
+
+ 3.3. Required Notices.
+
+ You must include a notice in each of Your Modifications
+ that identifies You as the Contributor of the Modification.
+ You may not remove or alter any copyright, patent or
+ trademark notices contained within the Covered Software, or
+ any notices of licensing or any descriptive text giving
+ attribution to any Contributor or the Initial Developer.
+
+ 3.4. Application of Additional Terms.
+
+ You may not offer or impose any terms on any Covered
+ Software in Source Code form that alters or restricts the
+ applicable version of this License or the recipients'
+ rights hereunder. You may choose to offer, and to charge a
+ fee for, warranty, support, indemnity or liability
+ obligations to one or more recipients of Covered Software.
+ However, you may do so only on Your own behalf, and not on
+ behalf of the Initial Developer or any Contributor. You
+ must make it absolutely clear that any such warranty,
+ support, indemnity or liability obligation is offered by
+ You alone, and You hereby agree to indemnify the Initial
+ Developer and every Contributor for any liability incurred
+ by the Initial Developer or such Contributor as a result of
+ warranty, support, indemnity or liability terms You offer.
+
+ 3.5. Distribution of Executable Versions.
+
+ You may distribute the Executable form of the Covered
+ Software under the terms of this License or under the terms
+ of a license of Your choice, which may contain terms
+ different from this License, provided that You are in
+ compliance with the terms of this License and that the
+ license for the Executable form does not attempt to limit
+ or alter the recipient's rights in the Source Code form
+ from the rights set forth in this License. If You
+ distribute the Covered Software in Executable form under a
+ different license, You must make it absolutely clear that
+ any terms which differ from this License are offered by You
+ alone, not by the Initial Developer or Contributor. You
+ hereby agree to indemnify the Initial Developer and every
+ Contributor for any liability incurred by the Initial
+ Developer or such Contributor as a result of any such terms
+ You offer.
+
+ 3.6. Larger Works.
+
+ You may create a Larger Work by combining Covered Software
+ with other code not governed by the terms of this License
+ and distribute the Larger Work as a single product. In such
+ a case, You must make sure the requirements of this License
+ are fulfilled for the Covered Software.
+
+ 4. Versions of the License.
+
+ 4.1. New Versions.
+
+ Sun Microsystems, Inc. is the initial license steward and
+ may publish revised and/or new versions of this License
+ from time to time. Each version will be given a
+ distinguishing version number. Except as provided in
+ Section 4.3, no one other than the license steward has the
+ right to modify this License.
+
+ 4.2. Effect of New Versions.
+
+ You may always continue to use, distribute or otherwise
+ make the Covered Software available under the terms of the
+ version of the License under which You originally received
+ the Covered Software. If the Initial Developer includes a
+ notice in the Original Software prohibiting it from being
+ distributed or otherwise made available under any
+ subsequent version of the License, You must distribute and
+ make the Covered Software available under the terms of the
+ version of the License under which You originally received
+ the Covered Software. Otherwise, You may also choose to
+ use, distribute or otherwise make the Covered Software
+ available under the terms of any subsequent version of the
+ License published by the license steward.
+
+ 4.3. Modified Versions.
+
+ When You are an Initial Developer and You want to create a
+ new license for Your Original Software, You may create and
+ use a modified version of this License if You: (a) rename
+ the license and remove any references to the name of the
+ license steward (except to note that the license differs
+ from this License); and (b) otherwise make it clear that
+ the license contains terms which differ from this License.
+
+ 5. DISCLAIMER OF WARRANTY.
+
+ COVERED SOFTWARE IS PROVIDED UNDER THIS LICENSE ON AN "AS IS"
+ BASIS, WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED,
+ INCLUDING, WITHOUT LIMITATION, WARRANTIES THAT THE COVERED
+ SOFTWARE IS FREE OF DEFECTS, MERCHANTABLE, FIT FOR A PARTICULAR
+ PURPOSE OR NON-INFRINGING. THE ENTIRE RISK AS TO THE QUALITY AND
+ PERFORMANCE OF THE COVERED SOFTWARE IS WITH YOU. SHOULD ANY
+ COVERED SOFTWARE PROVE DEFECTIVE IN ANY RESPECT, YOU (NOT THE
+ INITIAL DEVELOPER OR ANY OTHER CONTRIBUTOR) ASSUME THE COST OF
+ ANY NECESSARY SERVICING, REPAIR OR CORRECTION. THIS DISCLAIMER OF
+ WARRANTY CONSTITUTES AN ESSENTIAL PART OF THIS LICENSE. NO USE OF
+ ANY COVERED SOFTWARE IS AUTHORIZED HEREUNDER EXCEPT UNDER THIS
+ DISCLAIMER.
+
+ 6. TERMINATION.
+
+ 6.1. This License and the rights granted hereunder will
+ terminate automatically if You fail to comply with terms
+ herein and fail to cure such breach within 30 days of
+ becoming aware of the breach. Provisions which, by their
+ nature, must remain in effect beyond the termination of
+ this License shall survive.
+
+ 6.2. If You assert a patent infringement claim (excluding
+ declaratory judgment actions) against Initial Developer or
+ a Contributor (the Initial Developer or Contributor against
+ whom You assert such claim is referred to as "Participant")
+ alleging that the Participant Software (meaning the
+ Contributor Version where the Participant is a Contributor
+ or the Original Software where the Participant is the
+ Initial Developer) directly or indirectly infringes any
+ patent, then any and all rights granted directly or
+ indirectly to You by such Participant, the Initial
+ Developer (if the Initial Developer is not the Participant)
+ and all Contributors under Sections 2.1 and/or 2.2 of this
+ License shall, upon 60 days notice from Participant
+ terminate prospectively and automatically at the expiration
+ of such 60 day notice period, unless if within such 60 day
+ period You withdraw Your claim with respect to the
+ Participant Software against such Participant either
+ unilaterally or pursuant to a written agreement with
+ Participant.
+
+ 6.3. In the event of termination under Sections 6.1 or 6.2
+ above, all end user licenses that have been validly granted
+ by You or any distributor hereunder prior to termination
+ (excluding licenses granted to You by any distributor)
+ shall survive termination.
+
+ 7. LIMITATION OF LIABILITY.
+
+ UNDER NO CIRCUMSTANCES AND UNDER NO LEGAL THEORY, WHETHER TORT
+ (INCLUDING NEGLIGENCE), CONTRACT, OR OTHERWISE, SHALL YOU, THE
+ INITIAL DEVELOPER, ANY OTHER CONTRIBUTOR, OR ANY DISTRIBUTOR OF
+ COVERED SOFTWARE, OR ANY SUPPLIER OF ANY OF SUCH PARTIES, BE
+ LIABLE TO ANY PERSON FOR ANY INDIRECT, SPECIAL, INCIDENTAL, OR
+ CONSEQUENTIAL DAMAGES OF ANY CHARACTER INCLUDING, WITHOUT
+ LIMITATION, DAMAGES FOR LOST PROFITS, LOSS OF GOODWILL, WORK
+ STOPPAGE, COMPUTER FAILURE OR MALFUNCTION, OR ANY AND ALL OTHER
+ COMMERCIAL DAMAGES OR LOSSES, EVEN IF SUCH PARTY SHALL HAVE BEEN
+ INFORMED OF THE POSSIBILITY OF SUCH DAMAGES. THIS LIMITATION OF
+ LIABILITY SHALL NOT APPLY TO LIABILITY FOR DEATH OR PERSONAL
+ INJURY RESULTING FROM SUCH PARTY'S NEGLIGENCE TO THE EXTENT
+ APPLICABLE LAW PROHIBITS SUCH LIMITATION. SOME JURISDICTIONS DO
+ NOT ALLOW THE EXCLUSION OR LIMITATION OF INCIDENTAL OR
+ CONSEQUENTIAL DAMAGES, SO THIS EXCLUSION AND LIMITATION MAY NOT
+ APPLY TO YOU.
+
+ 8. U.S. GOVERNMENT END USERS.
+
+ The Covered Software is a "commercial item," as that term is
+ defined in 48 C.F.R. 2.101 (Oct. 1995), consisting of "commercial
+ computer software" (as that term is defined at 48 C.F.R. ¤
+ 252.227-7014(a)(1)) and "commercial computer software
+ documentation" as such terms are used in 48 C.F.R. 12.212 (Sept.
+ 1995). Consistent with 48 C.F.R. 12.212 and 48 C.F.R. 227.7202-1
+ through 227.7202-4 (June 1995), all U.S. Government End Users
+ acquire Covered Software with only those rights set forth herein.
+ This U.S. Government Rights clause is in lieu of, and supersedes,
+ any other FAR, DFAR, or other clause or provision that addresses
+ Government rights in computer software under this License.
+
+ 9. MISCELLANEOUS.
+
+ This License represents the complete agreement concerning subject
+ matter hereof. If any provision of this License is held to be
+ unenforceable, such provision shall be reformed only to the
+ extent necessary to make it enforceable. This License shall be
+ governed by the law of the jurisdiction specified in a notice
+ contained within the Original Software (except to the extent
+ applicable law, if any, provides otherwise), excluding such
+ jurisdiction's conflict-of-law provisions. Any litigation
+ relating to this License shall be subject to the jurisdiction of
+ the courts located in the jurisdiction and venue specified in a
+ notice contained within the Original Software, with the losing
+ party responsible for costs, including, without limitation, court
+ costs and reasonable attorneys' fees and expenses. The
+ application of the United Nations Convention on Contracts for the
+ International Sale of Goods is expressly excluded. Any law or
+ regulation which provides that the language of a contract shall
+ be construed against the drafter shall not apply to this License.
+ You agree that You alone are responsible for compliance with the
+ United States export administration regulations (and the export
+ control laws and regulation of any other countries) when You use,
+ distribute or otherwise make available any Covered Software.
+
+ 10. RESPONSIBILITY FOR CLAIMS.
+
+ As between Initial Developer and the Contributors, each party is
+ responsible for claims and damages arising, directly or
+ indirectly, out of its utilization of rights under this License
+ and You agree to work with Initial Developer and Contributors to
+ distribute such responsibility on an equitable basis. Nothing
+ herein is intended or shall be deemed to constitute any admission
+ of liability.
+
+ from Project GlassFish http://glassfish.java.net/
+ cloud-ejb-api-3.0.jar http://repo1.maven.org/maven2/javax/ejb/ejb-api/3.0/ejb-api-3.0-sources.jar
+ cloud-jstl-1.2.jar http://jstl.java.net/
+
+ licensed under the COMMON DEVELOPMENT AND DISTRIBUTION LICENSE (CDDL) Version 1.0 http://www.opensource.org/licenses/CDDL-1.0 (as follows)
+
+ Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+ COMMON DEVELOPMENT AND DISTRIBUTION LICENSE (CDDL) Version 1.0
+
+ 1. Definitions.
+
+ 1.1. "Contributor" means each individual or entity that
+ creates or contributes to the creation of Modifications.
+
+ 1.2. "Contributor Version" means the combination of the
+ Original Software, prior Modifications used by a
+ Contributor (if any), and the Modifications made by that
+ particular Contributor.
+
+ 1.3. "Covered Software" means (a) the Original Software, or
+ (b) Modifications, or (c) the combination of files
+ containing Original Software with files containing
+ Modifications, in each case including portions thereof.
+
+ 1.4. "Executable" means the Covered Software in any form
+ other than Source Code.
+
+ 1.5. "Initial Developer" means the individual or entity
+ that first makes Original Software available under this
+ License.
+
+ 1.6. "Larger Work" means a work which combines Covered
+ Software or portions thereof with code not governed by the
+ terms of this License.
+
+ 1.7. "License" means this document.
+
+ 1.8. "Licensable" means having the right to grant, to the
+ maximum extent possible, whether at the time of the initial
+ grant or subsequently acquired, any and all of the rights
+ conveyed herein.
+
+ 1.9. "Modifications" means the Source Code and Executable
+ form of any of the following:
+
+ A. Any file that results from an addition to,
+ deletion from or modification of the contents of a
+ file containing Original Software or previous
+ Modifications;
+
+ B. Any new file that contains any part of the
+ Original Software or previous Modification; or
+
+ C. Any new file that is contributed or otherwise made
+ available under the terms of this License.
+
+ 1.10. "Original Software" means the Source Code and
+ Executable form of computer software code that is
+ originally released under this License.
+
+ 1.11. "Patent Claims" means any patent claim(s), now owned
+ or hereafter acquired, including without limitation,
+ method, process, and apparatus claims, in any patent
+ Licensable by grantor.
+
+ 1.12. "Source Code" means (a) the common form of computer
+ software code in which modifications are made and (b)
+ associated documentation included in or with such code.
+
+ 1.13. "You" (or "Your") means an individual or a legal
+ entity exercising rights under, and complying with all of
+ the terms of, this License. For legal entities, "You"
+ includes any entity which controls, is controlled by, or is
+ under common control with You. For purposes of this
+ definition, "control" means (a) the power, direct or
+ indirect, to cause the direction or management of such
+ entity, whether by contract or otherwise, or (b) ownership
+ of more than fifty percent (50%) of the outstanding shares
+ or beneficial ownership of such entity.
+
+ 2. License Grants.
+
+ 2.1. The Initial Developer Grant.
+
+ Conditioned upon Your compliance with Section 3.1 below and
+ subject to third party intellectual property claims, the
+ Initial Developer hereby grants You a world-wide,
+ royalty-free, non-exclusive license:
+
+ (a) under intellectual property rights (other than
+ patent or trademark) Licensable by Initial Developer,
+ to use, reproduce, modify, display, perform,
+ sublicense and distribute the Original Software (or
+ portions thereof), with or without Modifications,
+ and/or as part of a Larger Work; and
+
+ (b) under Patent Claims infringed by the making,
+ using or selling of Original Software, to make, have
+ made, use, practice, sell, and offer for sale, and/or
+ otherwise dispose of the Original Software (or
+ portions thereof).
+
+ (c) The licenses granted in Sections 2.1(a) and (b)
+ are effective on the date Initial Developer first
+ distributes or otherwise makes the Original Software
+ available to a third party under the terms of this
+ License.
+
+ (d) Notwithstanding Section 2.1(b) above, no patent
+ license is granted: (1) for code that You delete from
+ the Original Software, or (2) for infringements
+ caused by: (i) the modification of the Original
+ Software, or (ii) the combination of the Original
+ Software with other software or devices.
+
+ 2.2. Contributor Grant.
+
+ Conditioned upon Your compliance with Section 3.1 below and
+ subject to third party intellectual property claims, each
+ Contributor hereby grants You a world-wide, royalty-free,
+ non-exclusive license:
+
+ (a) under intellectual property rights (other than
+ patent or trademark) Licensable by Contributor to
+ use, reproduce, modify, display, perform, sublicense
+ and distribute the Modifications created by such
+ Contributor (or portions thereof), either on an
+ unmodified basis, with other Modifications, as
+ Covered Software and/or as part of a Larger Work; and
+
+ (b) under Patent Claims infringed by the making,
+ using, or selling of Modifications made by that
+ Contributor either alone and/or in combination with
+ its Contributor Version (or portions of such
+ combination), to make, use, sell, offer for sale,
+ have made, and/or otherwise dispose of: (1)
+ Modifications made by that Contributor (or portions
+ thereof); and (2) the combination of Modifications
+ made by that Contributor with its Contributor Version
+ (or portions of such combination).
+
+ (c) The licenses granted in Sections 2.2(a) and
+ 2.2(b) are effective on the date Contributor first
+ distributes or otherwise makes the Modifications
+ available to a third party.
+
+ (d) Notwithstanding Section 2.2(b) above, no patent
+ license is granted: (1) for any code that Contributor
+ has deleted from the Contributor Version; (2) for
+ infringements caused by: (i) third party
+ modifications of Contributor Version, or (ii) the
+ combination of Modifications made by that Contributor
+ with other software (except as part of the
+ Contributor Version) or other devices; or (3) under
+ Patent Claims infringed by Covered Software in the
+ absence of Modifications made by that Contributor.
+
+ 3. Distribution Obligations.
+
+ 3.1. Availability of Source Code.
+
+ Any Covered Software that You distribute or otherwise make
+ available in Executable form must also be made available in
+ Source Code form and that Source Code form must be
+ distributed only under the terms of this License. You must
+ include a copy of this License with every copy of the
+ Source Code form of the Covered Software You distribute or
+ otherwise make available. You must inform recipients of any
+ such Covered Software in Executable form as to how they can
+ obtain such Covered Software in Source Code form in a
+ reasonable manner on or through a medium customarily used
+ for software exchange.
+
+ 3.2. Modifications.
+
+ The Modifications that You create or to which You
+ contribute are governed by the terms of this License. You
+ represent that You believe Your Modifications are Your
+ original creation(s) and/or You have sufficient rights to
+ grant the rights conveyed by this License.
+
+ 3.3. Required Notices.
+
+ You must include a notice in each of Your Modifications
+ that identifies You as the Contributor of the Modification.
+ You may not remove or alter any copyright, patent or
+ trademark notices contained within the Covered Software, or
+ any notices of licensing or any descriptive text giving
+ attribution to any Contributor or the Initial Developer.
+
+ 3.4. Application of Additional Terms.
+
+ You may not offer or impose any terms on any Covered
+ Software in Source Code form that alters or restricts the
+ applicable version of this License or the recipients'
+ rights hereunder. You may choose to offer, and to charge a
+ fee for, warranty, support, indemnity or liability
+ obligations to one or more recipients of Covered Software.
+ However, you may do so only on Your own behalf, and not on
+ behalf of the Initial Developer or any Contributor. You
+ must make it absolutely clear that any such warranty,
+ support, indemnity or liability obligation is offered by
+ You alone, and You hereby agree to indemnify the Initial
+ Developer and every Contributor for any liability incurred
+ by the Initial Developer or such Contributor as a result of
+ warranty, support, indemnity or liability terms You offer.
+
+ 3.5. Distribution of Executable Versions.
+
+ You may distribute the Executable form of the Covered
+ Software under the terms of this License or under the terms
+ of a license of Your choice, which may contain terms
+ different from this License, provided that You are in
+ compliance with the terms of this License and that the
+ license for the Executable form does not attempt to limit
+ or alter the recipient's rights in the Source Code form
+ from the rights set forth in this License. If You
+ distribute the Covered Software in Executable form under a
+ different license, You must make it absolutely clear that
+ any terms which differ from this License are offered by You
+ alone, not by the Initial Developer or Contributor. You
+ hereby agree to indemnify the Initial Developer and every
+ Contributor for any liability incurred by the Initial
+ Developer or such Contributor as a result of any such terms
+ You offer.
+
+ 3.6. Larger Works.
+
+ You may create a Larger Work by combining Covered Software
+ with other code not governed by the terms of this License
+ and distribute the Larger Work as a single product. In such
+ a case, You must make sure the requirements of this License
+ are fulfilled for the Covered Software.
+
+ 4. Versions of the License.
+
+ 4.1. New Versions.
+
+ Sun Microsystems, Inc. is the initial license steward and
+ may publish revised and/or new versions of this License
+ from time to time. Each version will be given a
+ distinguishing version number. Except as provided in
+ Section 4.3, no one other than the license steward has the
+ right to modify this License.
+
+ 4.2. Effect of New Versions.
+
+ You may always continue to use, distribute or otherwise
+ make the Covered Software available under the terms of the
+ version of the License under which You originally received
+ the Covered Software. If the Initial Developer includes a
+ notice in the Original Software prohibiting it from being
+ distributed or otherwise made available under any
+ subsequent version of the License, You must distribute and
+ make the Covered Software available under the terms of the
+ version of the License under which You originally received
+ the Covered Software. Otherwise, You may also choose to
+ use, distribute or otherwise make the Covered Software
+ available under the terms of any subsequent version of the
+ License published by the license steward.
+
+ 4.3. Modified Versions.
+
+ When You are an Initial Developer and You want to create a
+ new license for Your Original Software, You may create and
+ use a modified version of this License if You: (a) rename
+ the license and remove any references to the name of the
+ license steward (except to note that the license differs
+ from this License); and (b) otherwise make it clear that
+ the license contains terms which differ from this License.
+
+ 5. DISCLAIMER OF WARRANTY.
+
+ COVERED SOFTWARE IS PROVIDED UNDER THIS LICENSE ON AN "AS IS"
+ BASIS, WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED,
+ INCLUDING, WITHOUT LIMITATION, WARRANTIES THAT THE COVERED
+ SOFTWARE IS FREE OF DEFECTS, MERCHANTABLE, FIT FOR A PARTICULAR
+ PURPOSE OR NON-INFRINGING. THE ENTIRE RISK AS TO THE QUALITY AND
+ PERFORMANCE OF THE COVERED SOFTWARE IS WITH YOU. SHOULD ANY
+ COVERED SOFTWARE PROVE DEFECTIVE IN ANY RESPECT, YOU (NOT THE
+ INITIAL DEVELOPER OR ANY OTHER CONTRIBUTOR) ASSUME THE COST OF
+ ANY NECESSARY SERVICING, REPAIR OR CORRECTION. THIS DISCLAIMER OF
+ WARRANTY CONSTITUTES AN ESSENTIAL PART OF THIS LICENSE. NO USE OF
+ ANY COVERED SOFTWARE IS AUTHORIZED HEREUNDER EXCEPT UNDER THIS
+ DISCLAIMER.
+
+ 6. TERMINATION.
+
+ 6.1. This License and the rights granted hereunder will
+ terminate automatically if You fail to comply with terms
+ herein and fail to cure such breach within 30 days of
+ becoming aware of the breach. Provisions which, by their
+ nature, must remain in effect beyond the termination of
+ this License shall survive.
+
+ 6.2. If You assert a patent infringement claim (excluding
+ declaratory judgment actions) against Initial Developer or
+ a Contributor (the Initial Developer or Contributor against
+ whom You assert such claim is referred to as "Participant")
+ alleging that the Participant Software (meaning the
+ Contributor Version where the Participant is a Contributor
+ or the Original Software where the Participant is the
+ Initial Developer) directly or indirectly infringes any
+ patent, then any and all rights granted directly or
+ indirectly to You by such Participant, the Initial
+ Developer (if the Initial Developer is not the Participant)
+ and all Contributors under Sections 2.1 and/or 2.2 of this
+ License shall, upon 60 days notice from Participant
+ terminate prospectively and automatically at the expiration
+ of such 60 day notice period, unless if within such 60 day
+ period You withdraw Your claim with respect to the
+ Participant Software against such Participant either
+ unilaterally or pursuant to a written agreement with
+ Participant.
+
+ 6.3. In the event of termination under Sections 6.1 or 6.2
+ above, all end user licenses that have been validly granted
+ by You or any distributor hereunder prior to termination
+ (excluding licenses granted to You by any distributor)
+ shall survive termination.
+
+ 7. LIMITATION OF LIABILITY.
+
+ UNDER NO CIRCUMSTANCES AND UNDER NO LEGAL THEORY, WHETHER TORT
+ (INCLUDING NEGLIGENCE), CONTRACT, OR OTHERWISE, SHALL YOU, THE
+ INITIAL DEVELOPER, ANY OTHER CONTRIBUTOR, OR ANY DISTRIBUTOR OF
+ COVERED SOFTWARE, OR ANY SUPPLIER OF ANY OF SUCH PARTIES, BE
+ LIABLE TO ANY PERSON FOR ANY INDIRECT, SPECIAL, INCIDENTAL, OR
+ CONSEQUENTIAL DAMAGES OF ANY CHARACTER INCLUDING, WITHOUT
+ LIMITATION, DAMAGES FOR LOST PROFITS, LOSS OF GOODWILL, WORK
+ STOPPAGE, COMPUTER FAILURE OR MALFUNCTION, OR ANY AND ALL OTHER
+ COMMERCIAL DAMAGES OR LOSSES, EVEN IF SUCH PARTY SHALL HAVE BEEN
+ INFORMED OF THE POSSIBILITY OF SUCH DAMAGES. THIS LIMITATION OF
+ LIABILITY SHALL NOT APPLY TO LIABILITY FOR DEATH OR PERSONAL
+ INJURY RESULTING FROM SUCH PARTY'S NEGLIGENCE TO THE EXTENT
+ APPLICABLE LAW PROHIBITS SUCH LIMITATION. SOME JURISDICTIONS DO
+ NOT ALLOW THE EXCLUSION OR LIMITATION OF INCIDENTAL OR
+ CONSEQUENTIAL DAMAGES, SO THIS EXCLUSION AND LIMITATION MAY NOT
+ APPLY TO YOU.
+
+ 8. U.S. GOVERNMENT END USERS.
+
+ The Covered Software is a "commercial item," as that term is
+ defined in 48 C.F.R. 2.101 (Oct. 1995), consisting of "commercial
+ computer software" (as that term is defined at 48 C.F.R. ¤
+ 252.227-7014(a)(1)) and "commercial computer software
+ documentation" as such terms are used in 48 C.F.R. 12.212 (Sept.
+ 1995). Consistent with 48 C.F.R. 12.212 and 48 C.F.R. 227.7202-1
+ through 227.7202-4 (June 1995), all U.S. Government End Users
+ acquire Covered Software with only those rights set forth herein.
+ This U.S. Government Rights clause is in lieu of, and supersedes,
+ any other FAR, DFAR, or other clause or provision that addresses
+ Government rights in computer software under this License.
+
+ 9. MISCELLANEOUS.
+
+ This License represents the complete agreement concerning subject
+ matter hereof. If any provision of this License is held to be
+ unenforceable, such provision shall be reformed only to the
+ extent necessary to make it enforceable. This License shall be
+ governed by the law of the jurisdiction specified in a notice
+ contained within the Original Software (except to the extent
+ applicable law, if any, provides otherwise), excluding such
+ jurisdiction's conflict-of-law provisions. Any litigation
+ relating to this License shall be subject to the jurisdiction of
+ the courts located in the jurisdiction and venue specified in a
+ notice contained within the Original Software, with the losing
+ party responsible for costs, including, without limitation, court
+ costs and reasonable attorneys' fees and expenses. The
+ application of the United Nations Convention on Contracts for the
+ International Sale of Goods is expressly excluded. Any law or
+ regulation which provides that the language of a contract shall
+ be construed against the drafter shall not apply to this License.
+ You agree that You alone are responsible for compliance with the
+ United States export administration regulations (and the export
+ control laws and regulation of any other countries) when You use,
+ distribute or otherwise make available any Covered Software.
+
+ 10. RESPONSIBILITY FOR CLAIMS.
+
+ As between Initial Developer and the Contributors, each party is
+ responsible for claims and damages arising, directly or
+ indirectly, out of its utilization of rights under this License
+ and You agree to work with Initial Developer and Contributors to
+ distribute such responsibility on an equitable basis. Nothing
+ herein is intended or shall be deemed to constitute any admission
+ of liability.
+
+ from Oracle and/or its affiliates http://oracle.com
+ cloud-email.jar http://kenai.com/projects/javamail
+
+ licensed under the Common Public License - v 1.0 http://opensource.org/licenses/cpl1.0 (as follows)
+
+ Copyright (c) IBM Corp 2006
+
+ Common Public License Version 1.0 (CPL)
+
+ THE ACCOMPANYING PROGRAM IS PROVIDED UNDER THE TERMS OF THIS COMMON PUBLIC
+ LICENSE ("AGREEMENT"). ANY USE, REPRODUCTION OR DISTRIBUTION OF THE PROGRAM
+ CONSTITUTES RECIPIENT'S ACCEPTANCE OF THIS AGREEMENT.
+
+ 1. DEFINITIONS
+
+ "Contribution means:
+
+ a) in the case of the initial Contributor, the initial code and documentation
+ distributed under this Agreement, and
+
+ b) in the case of each subsequent Contributor:
+
+ i) changes to the Program, and
+
+ ii) additions to the Program;
+
+ where such changes and/or additions to the Program originate from and are
+ distributed by that particular Contributor. A Contribution 'originates' from a
+ Contributor if it was added to the Program by such Contributor itself or anyone
+ acting on such Contributor's behalf. Contributions do not include additions to
+ the Program which: (i) are separate modules of software distributed in
+ conjunction with the Program under their own license agreement, and (ii) are not
+ derivative works of the Program.
+
+ "Contributor means any person or entity that distributes the Program.
+
+ "Licensed Patents mean patent claims licensable by a Contributor which are
+ "necessarily infringed by the use or sale of its Contribution alone or when
+ "combined with the Program.
+
+ "Program means the Contributions distributed in accordance with this Agreement.
+
+ "Recipient means anyone who receives the Program under this Agreement, including
+ "all Contributors.
+
+ 2. GRANT OF RIGHTS
+
+ a) Subject to the terms of this Agreement, each Contributor hereby grants
+ Recipient a non-exclusive, worldwide, royalty-free copyright license to
+ reproduce, prepare derivative works of, publicly display, publicly perform,
+ distribute and sublicense the Contribution of such Contributor, if any, and such
+ derivative works, in source code and object code form.
+
+ b) Subject to the terms of this Agreement, each Contributor hereby grants
+ Recipient a non-exclusive, worldwide, royalty-free patent license under Licensed
+ Patents to make, use, sell, offer to sell, import and otherwise transfer the
+ Contribution of such Contributor, if any, in source code and object code form.
+ This patent license shall apply to the combination of the Contribution and the
+ Program if, at the time the Contribution is added by the Contributor, such
+ addition of the Contribution causes such combination to be covered by the
+ Licensed Patents. The patent license shall not apply to any other combinations
+ which include the Contribution. No hardware per se is licensed hereunder.
+
+ c) Recipient understands that although each Contributor grants the licenses to
+ its Contributions set forth herein, no assurances are provided by any
+ Contributor that the Program does not infringe the patent or other intellectual
+ property rights of any other entity. Each Contributor disclaims any liability to
+ Recipient for claims brought by any other entity based on infringement of
+ intellectual property rights or otherwise. As a condition to exercising the
+ rights and licenses granted hereunder, each Recipient hereby assumes sole
+ responsibility to secure any other intellectual property rights needed, if any.
+ For example, if a third party patent license is required to allow Recipient to
+ distribute the Program, it is Recipient's responsibility to acquire that license
+ before distributing the Program.
+
+ d) Each Contributor represents that to its knowledge it has sufficient copyright
+ rights in its Contribution, if any, to grant the copyright license set forth in
+ this Agreement.
+
+ 3. REQUIREMENTS
+
+ A Contributor may choose to distribute the Program in object code form under its
+ own license agreement, provided that:
+
+ a) it complies with the terms and conditions of this Agreement; and
+
+ b) its license agreement:
+
+ i) effectively disclaims on behalf of all Contributors all warranties and
+ conditions, express and implied, including warranties or conditions of title and
+ non-infringement, and implied warranties or conditions of merchantability and
+ fitness for a particular purpose;
+
+ ii) effectively excludes on behalf of all Contributors all liability for
+ damages, including direct, indirect, special, incidental and consequential
+ damages, such as lost profits;
+
+ iii) states that any provisions which differ from this Agreement are offered by
+ that Contributor alone and not by any other party; and
+
+ iv) states that source code for the Program is available from such Contributor,
+ and informs licensees how to obtain it in a reasonable manner on or through a
+ medium customarily used for software exchange.
+
+ When the Program is made available in source code form:
+
+ a) it must be made available under this Agreement; and
+
+ b) a copy of this Agreement must be included with each copy of the Program.
+
+ Contributors may not remove or alter any copyright notices contained within the
+ Program.
+
+ Each Contributor must identify itself as the originator of its Contribution, if
+ any, in a manner that reasonably allows subsequent Recipients to identify the
+ originator of the Contribution.
+
+ 4. COMMERCIAL DISTRIBUTION
+
+ Commercial distributors of software may accept certain responsibilities with
+ respect to end users, business partners and the like. While this license is
+ intended to facilitate the commercial use of the Program, the Contributor who
+ includes the Program in a commercial product offering should do so in a manner
+ which does not create potential liability for other Contributors. Therefore, if
+ a Contributor includes the Program in a commercial product offering, such
+ Contributor ("Commercial Contributor") hereby agrees to defend and indemnify
+ every other Contributor ("Indemnified Contributor") against any losses, damages
+ and costs (collectively "Losses") arising from claims, lawsuits and other legal
+ actions brought by a third party against the Indemnified Contributor to the
+ extent caused by the acts or omissions of such Commercial Contributor in
+ connection with its distribution of the Program in a commercial product
+ offering. The obligations in this section do not apply to any claims or Losses
+ relating to any actual or alleged intellectual property infringement. In order
+ to qualify, an Indemnified Contributor must: a) promptly notify the Commercial
+ Contributor in writing of such claim, and b) allow the Commercial Contributor to
+ control, and cooperate with the Commercial Contributor in, the defense and any
+ related settlement negotiations. The Indemnified Contributor may participate in
+ any such claim at its own expense.
+
+ For example, a Contributor might include the Program in a commercial product
+ offering, Product X. That Contributor is then a Commercial Contributor. If that
+ Commercial Contributor then makes performance claims, or offers warranties
+ related to Product X, those performance claims and warranties are such
+ Commercial Contributor's responsibility alone. Under this section, the
+ Commercial Contributor would have to defend claims against the other
+ Contributors related to those performance claims and warranties, and if a court
+ requires any other Contributor to pay any damages as a result, the Commercial
+ Contributor must pay those damages.
+
+ 5. NO WARRANTY
+
+ EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, THE PROGRAM IS PROVIDED ON AN
+ "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, EITHER EXPRESS OR
+ IMPLIED INCLUDING, WITHOUT LIMITATION, ANY WARRANTIES OR CONDITIONS OF TITLE,
+ NON-INFRINGEMENT, MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. Each
+ Recipient is solely responsible for determining the appropriateness of using and
+ distributing the Program and assumes all risks associated with its exercise of
+ rights under this Agreement, including but not limited to the risks and costs of
+ program errors, compliance with applicable laws, damage to or loss of data,
+ programs or equipment, and unavailability or interruption of operations.
+
+ 6. DISCLAIMER OF LIABILITY
+
+ EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, NEITHER RECIPIENT NOR ANY
+ CONTRIBUTORS SHALL HAVE ANY LIABILITY FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING WITHOUT LIMITATION LOST
+ PROFITS), 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 OR DISTRIBUTION OF THE PROGRAM OR THE EXERCISE OF ANY RIGHTS
+ GRANTED HEREUNDER, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
+
+ 7. GENERAL
+
+ If any provision of this Agreement is invalid or unenforceable under applicable
+ law, it shall not affect the validity or enforceability of the remainder of the
+ terms of this Agreement, and without further action by the parties hereto, such
+ provision shall be reformed to the minimum extent necessary to make such
+ provision valid and enforceable.
+
+ If Recipient institutes patent litigation against a Contributor with respect to
+ a patent applicable to software (including a cross-claim or counterclaim in a
+ lawsuit), then any patent licenses granted by that Contributor to such Recipient
+ under this Agreement shall terminate as of the date such litigation is filed. In
+ addition, if Recipient institutes patent litigation against any entity
+ (including a cross-claim or counterclaim in a lawsuit) alleging that the Program
+ itself (excluding combinations of the Program with other software or hardware)
+ infringes such Recipient's patent(s), then such Recipient's rights granted under
+ Section 2(b) shall terminate as of the date such litigation is filed.
+
+ All Recipient's rights under this Agreement shall terminate if it fails to
+ comply with any of the material terms or conditions of this Agreement and does
+ not cure such failure in a reasonable period of time after becoming aware of
+ such noncompliance. If all Recipient's rights under this Agreement terminate,
+ Recipient agrees to cease use and distribution of the Program as soon as
+ reasonably practicable. However, Recipient's obligations under this Agreement
+ and any licenses granted by Recipient relating to the Program shall continue and
+ survive.
+
+ Everyone is permitted to copy and distribute copies of this Agreement, but in
+ order to avoid inconsistency the Agreement is copyrighted and may only be
+ modified in the following manner. The Agreement Steward reserves the right to
+ publish new versions (including revisions) of this Agreement from time to time.
+ No one other than the Agreement Steward has the right to modify this Agreement.
+ IBM is the initial Agreement Steward. IBM may assign the responsibility to serve
+ as the Agreement Steward to a suitable separate entity. Each new version of the
+ Agreement will be given a distinguishing version number. The Program (including
+ Contributions) may always be distributed subject to the version of the Agreement
+ under which it was received. In addition, after a new version of the Agreement
+ is published, Contributor may elect to distribute the Program (including its
+ Contributions) under the new version. Except as expressly stated in Sections
+ 2(a) and 2(b) above, Recipient receives no rights or licenses to the
+ intellectual property of any Contributor under this Agreement, whether
+ expressly, by implication, estoppel or otherwise. All rights in the Program not
+ expressly granted under this Agreement are reserved.
+
+ This Agreement is governed by the laws of the State of New York and the
+ intellectual property laws of the United States of America. No party to this
+ Agreement will bring a legal action under this Agreement more than one year
+ after the cause of action arose. Each party waives its rights to a jury trial in
+ any resulting litigation.
+
+ from IBM Corp http://www.ibm.com/
+ cloud-wsdl4j-1.6.2.jar http://sourceforge.net/projects/wsdl4j/
+ cloud-wsdl4j.jar http://sourceforge.net/projects/wsdl4j/
+
+ licensed under the Common Public License - v 1.0 http://opensource.org/licenses/cpl1.0 (as follows)
+
+
+ Common Public License Version 1.0 (CPL)
+
+ THE ACCOMPANYING PROGRAM IS PROVIDED UNDER THE TERMS OF THIS COMMON PUBLIC
+ LICENSE ("AGREEMENT"). ANY USE, REPRODUCTION OR DISTRIBUTION OF THE PROGRAM
+ CONSTITUTES RECIPIENT'S ACCEPTANCE OF THIS AGREEMENT.
+
+ 1. DEFINITIONS
+
+ "Contribution means:
+
+ a) in the case of the initial Contributor, the initial code and documentation
+ distributed under this Agreement, and
+
+ b) in the case of each subsequent Contributor:
+
+ i) changes to the Program, and
+
+ ii) additions to the Program;
+
+ where such changes and/or additions to the Program originate from and are
+ distributed by that particular Contributor. A Contribution 'originates' from a
+ Contributor if it was added to the Program by such Contributor itself or anyone
+ acting on such Contributor's behalf. Contributions do not include additions to
+ the Program which: (i) are separate modules of software distributed in
+ conjunction with the Program under their own license agreement, and (ii) are not
+ derivative works of the Program.
+
+ "Contributor means any person or entity that distributes the Program.
+
+ "Licensed Patents mean patent claims licensable by a Contributor which are
+ "necessarily infringed by the use or sale of its Contribution alone or when
+ "combined with the Program.
+
+ "Program means the Contributions distributed in accordance with this Agreement.
+
+ "Recipient means anyone who receives the Program under this Agreement, including
+ "all Contributors.
+
+ 2. GRANT OF RIGHTS
+
+ a) Subject to the terms of this Agreement, each Contributor hereby grants
+ Recipient a non-exclusive, worldwide, royalty-free copyright license to
+ reproduce, prepare derivative works of, publicly display, publicly perform,
+ distribute and sublicense the Contribution of such Contributor, if any, and such
+ derivative works, in source code and object code form.
+
+ b) Subject to the terms of this Agreement, each Contributor hereby grants
+ Recipient a non-exclusive, worldwide, royalty-free patent license under Licensed
+ Patents to make, use, sell, offer to sell, import and otherwise transfer the
+ Contribution of such Contributor, if any, in source code and object code form.
+ This patent license shall apply to the combination of the Contribution and the
+ Program if, at the time the Contribution is added by the Contributor, such
+ addition of the Contribution causes such combination to be covered by the
+ Licensed Patents. The patent license shall not apply to any other combinations
+ which include the Contribution. No hardware per se is licensed hereunder.
+
+ c) Recipient understands that although each Contributor grants the licenses to
+ its Contributions set forth herein, no assurances are provided by any
+ Contributor that the Program does not infringe the patent or other intellectual
+ property rights of any other entity. Each Contributor disclaims any liability to
+ Recipient for claims brought by any other entity based on infringement of
+ intellectual property rights or otherwise. As a condition to exercising the
+ rights and licenses granted hereunder, each Recipient hereby assumes sole
+ responsibility to secure any other intellectual property rights needed, if any.
+ For example, if a third party patent license is required to allow Recipient to
+ distribute the Program, it is Recipient's responsibility to acquire that license
+ before distributing the Program.
+
+ d) Each Contributor represents that to its knowledge it has sufficient copyright
+ rights in its Contribution, if any, to grant the copyright license set forth in
+ this Agreement.
+
+ 3. REQUIREMENTS
+
+ A Contributor may choose to distribute the Program in object code form under its
+ own license agreement, provided that:
+
+ a) it complies with the terms and conditions of this Agreement; and
+
+ b) its license agreement:
+
+ i) effectively disclaims on behalf of all Contributors all warranties and
+ conditions, express and implied, including warranties or conditions of title and
+ non-infringement, and implied warranties or conditions of merchantability and
+ fitness for a particular purpose;
+
+ ii) effectively excludes on behalf of all Contributors all liability for
+ damages, including direct, indirect, special, incidental and consequential
+ damages, such as lost profits;
+
+ iii) states that any provisions which differ from this Agreement are offered by
+ that Contributor alone and not by any other party; and
+
+ iv) states that source code for the Program is available from such Contributor,
+ and informs licensees how to obtain it in a reasonable manner on or through a
+ medium customarily used for software exchange.
+
+ When the Program is made available in source code form:
+
+ a) it must be made available under this Agreement; and
+
+ b) a copy of this Agreement must be included with each copy of the Program.
+
+ Contributors may not remove or alter any copyright notices contained within the
+ Program.
+
+ Each Contributor must identify itself as the originator of its Contribution, if
+ any, in a manner that reasonably allows subsequent Recipients to identify the
+ originator of the Contribution.
+
+ 4. COMMERCIAL DISTRIBUTION
+
+ Commercial distributors of software may accept certain responsibilities with
+ respect to end users, business partners and the like. While this license is
+ intended to facilitate the commercial use of the Program, the Contributor who
+ includes the Program in a commercial product offering should do so in a manner
+ which does not create potential liability for other Contributors. Therefore, if
+ a Contributor includes the Program in a commercial product offering, such
+ Contributor ("Commercial Contributor") hereby agrees to defend and indemnify
+ every other Contributor ("Indemnified Contributor") against any losses, damages
+ and costs (collectively "Losses") arising from claims, lawsuits and other legal
+ actions brought by a third party against the Indemnified Contributor to the
+ extent caused by the acts or omissions of such Commercial Contributor in
+ connection with its distribution of the Program in a commercial product
+ offering. The obligations in this section do not apply to any claims or Losses
+ relating to any actual or alleged intellectual property infringement. In order
+ to qualify, an Indemnified Contributor must: a) promptly notify the Commercial
+ Contributor in writing of such claim, and b) allow the Commercial Contributor to
+ control, and cooperate with the Commercial Contributor in, the defense and any
+ related settlement negotiations. The Indemnified Contributor may participate in
+ any such claim at its own expense.
+
+ For example, a Contributor might include the Program in a commercial product
+ offering, Product X. That Contributor is then a Commercial Contributor. If that
+ Commercial Contributor then makes performance claims, or offers warranties
+ related to Product X, those performance claims and warranties are such
+ Commercial Contributor's responsibility alone. Under this section, the
+ Commercial Contributor would have to defend claims against the other
+ Contributors related to those performance claims and warranties, and if a court
+ requires any other Contributor to pay any damages as a result, the Commercial
+ Contributor must pay those damages.
+
+ 5. NO WARRANTY
+
+ EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, THE PROGRAM IS PROVIDED ON AN
+ "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, EITHER EXPRESS OR
+ IMPLIED INCLUDING, WITHOUT LIMITATION, ANY WARRANTIES OR CONDITIONS OF TITLE,
+ NON-INFRINGEMENT, MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. Each
+ Recipient is solely responsible for determining the appropriateness of using and
+ distributing the Program and assumes all risks associated with its exercise of
+ rights under this Agreement, including but not limited to the risks and costs of
+ program errors, compliance with applicable laws, damage to or loss of data,
+ programs or equipment, and unavailability or interruption of operations.
+
+ 6. DISCLAIMER OF LIABILITY
+
+ EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, NEITHER RECIPIENT NOR ANY
+ CONTRIBUTORS SHALL HAVE ANY LIABILITY FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING WITHOUT LIMITATION LOST
+ PROFITS), 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 OR DISTRIBUTION OF THE PROGRAM OR THE EXERCISE OF ANY RIGHTS
+ GRANTED HEREUNDER, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
+
+ 7. GENERAL
+
+ If any provision of this Agreement is invalid or unenforceable under applicable
+ law, it shall not affect the validity or enforceability of the remainder of the
+ terms of this Agreement, and without further action by the parties hereto, such
+ provision shall be reformed to the minimum extent necessary to make such
+ provision valid and enforceable.
+
+ If Recipient institutes patent litigation against a Contributor with respect to
+ a patent applicable to software (including a cross-claim or counterclaim in a
+ lawsuit), then any patent licenses granted by that Contributor to such Recipient
+ under this Agreement shall terminate as of the date such litigation is filed. In
+ addition, if Recipient institutes patent litigation against any entity
+ (including a cross-claim or counterclaim in a lawsuit) alleging that the Program
+ itself (excluding combinations of the Program with other software or hardware)
+ infringes such Recipient's patent(s), then such Recipient's rights granted under
+ Section 2(b) shall terminate as of the date such litigation is filed.
+
+ All Recipient's rights under this Agreement shall terminate if it fails to
+ comply with any of the material terms or conditions of this Agreement and does
+ not cure such failure in a reasonable period of time after becoming aware of
+ such noncompliance. If all Recipient's rights under this Agreement terminate,
+ Recipient agrees to cease use and distribution of the Program as soon as
+ reasonably practicable. However, Recipient's obligations under this Agreement
+ and any licenses granted by Recipient relating to the Program shall continue and
+ survive.
+
+ Everyone is permitted to copy and distribute copies of this Agreement, but in
+ order to avoid inconsistency the Agreement is copyrighted and may only be
+ modified in the following manner. The Agreement Steward reserves the right to
+ publish new versions (including revisions) of this Agreement from time to time.
+ No one other than the Agreement Steward has the right to modify this Agreement.
+ IBM is the initial Agreement Steward. IBM may assign the responsibility to serve
+ as the Agreement Steward to a suitable separate entity. Each new version of the
+ Agreement will be given a distinguishing version number. The Program (including
+ Contributions) may always be distributed subject to the version of the Agreement
+ under which it was received. In addition, after a new version of the Agreement
+ is published, Contributor may elect to distribute the Program (including its
+ Contributions) under the new version. Except as expressly stated in Sections
+ 2(a) and 2(b) above, Recipient receives no rights or licenses to the
+ intellectual property of any Contributor under this Agreement, whether
+ expressly, by implication, estoppel or otherwise. All rights in the Program not
+ expressly granted under this Agreement are reserved.
+
+ This Agreement is governed by the laws of the State of New York and the
+ intellectual property laws of the United States of America. No party to this
+ Agreement will bring a legal action under this Agreement more than one year
+ after the cause of action arose. Each party waives its rights to a jury trial in
+ any resulting litigation.
+
+ from JUnit Project http://www.junit.org/
+ cloud-junit.jar http://kentbeck.github.com/junit/
+
+ licensed under the Eclipse Distribution License Version 1.0 http://www.eclipse.org/org/documents/edl-v10.php (as follows)
+
+ Copyright (c) 2012 The Eclipse Foundation.
+
+ Eclipse Distribution License Version 1.0
+
+ Copyright (c) 2007, Eclipse Foundation, Inc. and its licensors.
+
+ 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 Eclipse Foundation, Inc. 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 THE COPYRIGHT OWNER 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.
+
+ from The Eclipse Foundation http://www.eclipse.org
+ cloud-javax.persistence-2.0.0.jar http://wiki.eclipse.org/EclipseLink/Release/2.0.0
+
+ licensed under the XStream BSD Style License https://fisheye.codehaus.org/browse/xstream/trunk/LICENSE.txt?hb=true (as follows)
+
+
+ (BSD Style License)
+
+ Copyright (c) 2003-2006, Joe Walnes Copyright (c) 2006-2011, XStream Committers
+ 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 XStream 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 THE COPYRIGHT OWNER 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.
+
+ from XStream Committers http://xstream.codehaus.org/
+ cloud-xstream-1.3.1.jar http://xstream.codehaus.org/repository.html
+
+
Within the deps/awsapi-lib directory
licensed under the ANTLR 2 License http://www.antlr2.org/license.html (as follows)
-
+
ANTLR 2 License
We reserve no legal rights to the ANTLR--it is fully in the public domain. An
@@ -328,7 +2224,7 @@ Within the deps/awsapi-lib directory
remain intact in our source code. As long as these guidelines are kept, we
expect to continue enhancing this system and expect to make other tools
available as they are completed.
-
+
from ANTLR Translator Generator Project http://www.antlr2.org/
antlr-2.7.6.jar http://repo1.maven.org/maven2/antlr/antlr/2.7.6/antlr-2.7.6-sources.jar
@@ -1841,7 +3737,7 @@ Within the deps/awsapi-lib directory
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.
-
+
from DOM4J Project http://dom4j.sourceforge.net/
dom4j-1.6.1.jar http://dom4j.sourceforge.net/source-repository.html
@@ -2345,1927 +4241,7 @@ Within the deps/awsapi-lib directory
use the text of this Exhibit A rather than the text found in the
Original Code Source Code for Your Modifications.]
-
+
from Shigeru Chiba http://www.csg.ci.i.u-tokyo.ac.jp/~chiba/javassist/
javassist-3.9.0.GA.jar http://sourceforge.net/projects/jboss/files/Javassist/
-
-Within the patches/systemvm/debian/config/etc directory
- placed in the public domain
- by Adiscon GmbH http://www.adiscon.com/
- rsyslog.conf
- by Simon Kelley
- dnsmasq.conf
- vpcdnsmasq.conf
-
-
-Within the patches/systemvm/debian/config/etc/apache2 directory
- licensed under the Apache License, Version 2 http://www.apache.org/licenses/LICENSE-2.0.txt (as above)
- Copyright (c) 2012 The Apache Software Foundation
- from The Apache Software Foundation http://www.apache.org/
- httpd.conf
- ports.conf
- sites-available/default
- sites-available/default-ssl
- vhostexample.conf
-
-
-Within the patches/systemvm/debian/config/etc/ssh/ directory
- licensed under the BSD (2-clause) http://www.opensource.org/licenses/BSD-2-Clause (as follows)
-
-
- 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 author nor the names of 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 THE COPYRIGHT OWNER 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.
-
- from OpenSSH Project http://www.openssh.org/
- sshd_config
-
-
-Within the patches/systemvm/debian/config/root/redundant_router directory
- placed in the public domain
- by The netfilter.org project http://www.netfilter.org/
- conntrackd.conf.templ
-
-
-Within the scripts/storage/secondary directory
- licensed under the Apache License, Version 2 http://www.apache.org/licenses/LICENSE-2.0.txt (as above)
- Copyright (c) 2010-2011 OpenStack, LLC.
- from OpenStack, LLC http://www.openstack.org
- swift
-
-
-Within the scripts/vm/hypervisor/xenserver directory
- licensed under the Apache License, Version 2 http://www.apache.org/licenses/LICENSE-2.0.txt (as above)
- Copyright (c) 2010-2011 OpenStack, LLC.
- from OpenStack, LLC http://www.openstack.org
- swift
-
-
-Within the target/jar directory
- placed in the public domain
- by Distributed Computing Laboratory at Emory University http://creativecommons.org/licenses/publicdomain/
- cloud-backport-util-concurrent-3.0.jar
-
- licensed under the Apache License, Version 1.1 http://www.apache.org/licenses/LICENSE-1.1 (as follows)
-
- Copyright (c) 2012 The Apache Software Foundation
-
- /* ====================================================================
- * The Apache Software License, Version 1.1
- *
- * Copyright (c) 2000 The Apache Software Foundation. All rights
- * reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- *
- * 2. 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.
- *
- * 3. The end-user documentation included with the redistribution,
- * if any, must include the following acknowledgment:
- * "This product includes software developed by the
- * Apache Software Foundation (http://www.apache.org/)."
- * Alternately, this acknowledgment may appear in the software itself,
- * if and wherever such third-party acknowledgments normally appear.
- *
- * 4. The names "Apache" and "Apache Software Foundation" must
- * not be used to endorse or promote products derived from this
- * software without prior written permission. For written
- * permission, please contact apache@apache.org.
- *
- * 5. Products derived from this software may not be called "Apache",
- * nor may "Apache" appear in their name, without prior written
- * permission of the Apache Software Foundation.
- *
- * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED 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 THE APACHE SOFTWARE FOUNDATION OR
- * ITS 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.
- * ====================================================================
- *
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Apache Software Foundation. For more
- * information on the Apache Software Foundation, please see
- * .
- */
-
- from The Apache Software Foundation http://www.apache.org/
- cloud-commons-discovery.jar http://commons.apache.org/discovery/
-
- licensed under the Apache License, Version 2 http://www.apache.org/licenses/LICENSE-2.0.txt (as above)
- Copyright (c) 2012 The Apache Software Foundation
- from The Apache Software Foundation http://www.apache.org/
- cloud-axis.jar http://axis.apache.org/axis/
- cloud-cglib.jar http://cglib.sourceforge.net/
- cloud-commons-codec-1.5.jar http://commons.apache.org/codec/
- cloud-commons-collections-3.2.1.jar http://commons.apache.org/collections/
- cloud-commons-configuration-1.8.jar http://commons.apache.org/configuration/
- cloud-commons-dbcp-1.4.jar http://commons.apache.org/dbcp/
- cloud-commons-httpclient-3.1.jar http://hc.apache.org/httpclient-3.x/
- cloud-commons-lang-2.6.jar http://commons.apache.org/lang/
- cloud-commons-logging-1.1.1.jar http://commons.apache.org/logging/
- cloud-commons-pool-1.5.6.jar http://commons.apache.org/pool/
- cloud-log4j-extras.jar http://logging.apache.org/log4j/companions/extras/
- cloud-log4j.jar http://logging.apache.org/log4j/
- cloud-ws-commons-util-1.0.2.jar http://ws.apache.org/commons/util/
- cloud-xmlrpc-client-3.1.3.jar http://ws.apache.org/xmlrpc/client.html
- cloud-xmlrpc-common-3.1.3.jar http://ws.apache.org/xmlrpc/xmlrpc-common/
-
- licensed under the Apache License, Version 2 http://www.apache.org/licenses/LICENSE-2.0.txt (as above)
- Copyright (c) 2007-2010, The JASYPT team (http://www.jasypt.org)
- from The JASYPT team http://www.jasypt.org
- cloud-jasypt-1.9.jar http://www.jasypt.org
-
- licensed under the Apache License, Version 2 http://www.apache.org/licenses/LICENSE-2.0.txt (as above)
- Copyright (c) 2003-2007 Luck Consulting Pty Ltd
- from Luck Consulting Pty Ltd http://gregluck.com/blog/about/
- cloud-ehcache.jar http://ehcache.org/
-
- licensed under the Apache License, Version 2 http://www.apache.org/licenses/LICENSE-2.0.txt (as above)
- Copyright (c) 2009 Google Inc.
- from Google Inc. http://google.com
- cloud-google-gson-1.7.1.jar http://code.google.com/p/google-gson/
-
- licensed under the Apache License, Version 2 http://www.apache.org/licenses/LICENSE-2.0.txt (as above)
-
- from Jetty Committers http://jetty.codehaus.org/jetty/
- jetty-6.1.26.jar http://repo1.maven.org/maven2/org/mortbay/jetty/jetty/6.1.26/jetty-6.1.26-sources.jar
- jetty-util-6.1.26.jar http://repo1.maven.org/maven2/org/mortbay/jetty/jetty-util/6.1.26/jetty-util-6.1.26-sources.jar
-
- licensed under the BSD (3-clause) http://www.opensource.org/licenses/BSD-3-Clause (as follows)
-
- Copyright (c) 2009, Caringo, Inc.
-
- Redistribution and use in source and binary forms, with or without
- modification, are permitted provided that the following conditions
- are met:
- 1. Redistributions of source code must retain the above copyright
- notice, this list of conditions and the following disclaimer.
- 2. 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.
- 3. Neither the name of the copyright holders 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 THE COPYRIGHT OWNER 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.
-
- from Caringo, Inc. http://www.caringo.com/
- CAStorSDK.jar http://www.castor.org/download.html
-
- licensed under the BSD (3-clause) http://www.opensource.org/licenses/BSD-3-Clause (as follows)
-
- Copyright (c) 2002-2011 Atsuhiko Yamanaka, JCraft,Inc.
-
- Redistribution and use in source and binary forms, with or without
- modification, are permitted provided that the following conditions
- are met:
- 1. Redistributions of source code must retain the above copyright
- notice, this list of conditions and the following disclaimer.
- 2. 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.
- 3. Neither the name of the copyright holders 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 THE COPYRIGHT OWNER 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.
-
- from JCraft http://www.jcraft.com/
- cloud-jsch-0.1.42.jar http://www.jcraft.com/jsch/
-
- licensed under the BSD (3-clause) http://www.opensource.org/licenses/BSD-3-Clause (as follows)
-
- Copyright (c) 2007-2008 Trilead AG (http://www.trilead.com)
- All rights reserved.
-
- Redistribution and use in source and binary forms, with or without
- modification, are permitted provided that the following conditions
- are met:
- 1. Redistributions of source code must retain the above copyright
- notice, this list of conditions and the following disclaimer.
- 2. 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.
- 3. Neither the name of the copyright holders 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 THE COPYRIGHT OWNER 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.
-
- from Trilead AG http://www.trilead.com
- cloud-trilead-ssh2-build213.jar http://sourceforge.net/projects/orion-ssh2/
-
- licensed under the Bouncy Castle adaptation of MIT X11 License http://www.bouncycastle.org/licence.html (as follows)
-
-
- Please note: our license is an adaptation of the MIT X11 License and should be
- read as such.
-
- LICENSE Copyright (c) 2000 - 2011 The Legion Of The Bouncy Castle
- (http://www.bouncycastle.org)
-
- Permission is hereby granted, free of charge, to any person obtaining a copy of
- this software and associated documentation files (the "Software"), to deal in
- the Software without restriction, including without limitation the rights to
- use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
- the Software, and to permit persons to whom the Software is furnished to do so,
- subject to the following conditions:
-
- The above copyright notice and this permission notice shall be included in all
- copies or substantial portions of the Software.
-
- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
- FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
- COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
- IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
- CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
- from The Legion Of The Bouncy Castle http://www.bouncycastle.org
- cloud-bcprov-jdk16-1.45.jar http://repo1.maven.org/maven2/org/bouncycastle/bcprov-jdk16/1.45/bcprov-jdk16-1.45-sources.jar
-
- licensed under the COMMON DEVELOPMENT AND DISTRIBUTION LICENSE (CDDL) Version 1.0 http://www.opensource.org/licenses/CDDL-1.0 (as follows)
-
- Copyright (c) 2006 Sun Microsystems, Inc. All rights reserved.
-
- COMMON DEVELOPMENT AND DISTRIBUTION LICENSE (CDDL) Version 1.0
-
- 1. Definitions.
-
- 1.1. "Contributor" means each individual or entity that
- creates or contributes to the creation of Modifications.
-
- 1.2. "Contributor Version" means the combination of the
- Original Software, prior Modifications used by a
- Contributor (if any), and the Modifications made by that
- particular Contributor.
-
- 1.3. "Covered Software" means (a) the Original Software, or
- (b) Modifications, or (c) the combination of files
- containing Original Software with files containing
- Modifications, in each case including portions thereof.
-
- 1.4. "Executable" means the Covered Software in any form
- other than Source Code.
-
- 1.5. "Initial Developer" means the individual or entity
- that first makes Original Software available under this
- License.
-
- 1.6. "Larger Work" means a work which combines Covered
- Software or portions thereof with code not governed by the
- terms of this License.
-
- 1.7. "License" means this document.
-
- 1.8. "Licensable" means having the right to grant, to the
- maximum extent possible, whether at the time of the initial
- grant or subsequently acquired, any and all of the rights
- conveyed herein.
-
- 1.9. "Modifications" means the Source Code and Executable
- form of any of the following:
-
- A. Any file that results from an addition to,
- deletion from or modification of the contents of a
- file containing Original Software or previous
- Modifications;
-
- B. Any new file that contains any part of the
- Original Software or previous Modification; or
-
- C. Any new file that is contributed or otherwise made
- available under the terms of this License.
-
- 1.10. "Original Software" means the Source Code and
- Executable form of computer software code that is
- originally released under this License.
-
- 1.11. "Patent Claims" means any patent claim(s), now owned
- or hereafter acquired, including without limitation,
- method, process, and apparatus claims, in any patent
- Licensable by grantor.
-
- 1.12. "Source Code" means (a) the common form of computer
- software code in which modifications are made and (b)
- associated documentation included in or with such code.
-
- 1.13. "You" (or "Your") means an individual or a legal
- entity exercising rights under, and complying with all of
- the terms of, this License. For legal entities, "You"
- includes any entity which controls, is controlled by, or is
- under common control with You. For purposes of this
- definition, "control" means (a) the power, direct or
- indirect, to cause the direction or management of such
- entity, whether by contract or otherwise, or (b) ownership
- of more than fifty percent (50%) of the outstanding shares
- or beneficial ownership of such entity.
-
- 2. License Grants.
-
- 2.1. The Initial Developer Grant.
-
- Conditioned upon Your compliance with Section 3.1 below and
- subject to third party intellectual property claims, the
- Initial Developer hereby grants You a world-wide,
- royalty-free, non-exclusive license:
-
- (a) under intellectual property rights (other than
- patent or trademark) Licensable by Initial Developer,
- to use, reproduce, modify, display, perform,
- sublicense and distribute the Original Software (or
- portions thereof), with or without Modifications,
- and/or as part of a Larger Work; and
-
- (b) under Patent Claims infringed by the making,
- using or selling of Original Software, to make, have
- made, use, practice, sell, and offer for sale, and/or
- otherwise dispose of the Original Software (or
- portions thereof).
-
- (c) The licenses granted in Sections 2.1(a) and (b)
- are effective on the date Initial Developer first
- distributes or otherwise makes the Original Software
- available to a third party under the terms of this
- License.
-
- (d) Notwithstanding Section 2.1(b) above, no patent
- license is granted: (1) for code that You delete from
- the Original Software, or (2) for infringements
- caused by: (i) the modification of the Original
- Software, or (ii) the combination of the Original
- Software with other software or devices.
-
- 2.2. Contributor Grant.
-
- Conditioned upon Your compliance with Section 3.1 below and
- subject to third party intellectual property claims, each
- Contributor hereby grants You a world-wide, royalty-free,
- non-exclusive license:
-
- (a) under intellectual property rights (other than
- patent or trademark) Licensable by Contributor to
- use, reproduce, modify, display, perform, sublicense
- and distribute the Modifications created by such
- Contributor (or portions thereof), either on an
- unmodified basis, with other Modifications, as
- Covered Software and/or as part of a Larger Work; and
-
- (b) under Patent Claims infringed by the making,
- using, or selling of Modifications made by that
- Contributor either alone and/or in combination with
- its Contributor Version (or portions of such
- combination), to make, use, sell, offer for sale,
- have made, and/or otherwise dispose of: (1)
- Modifications made by that Contributor (or portions
- thereof); and (2) the combination of Modifications
- made by that Contributor with its Contributor Version
- (or portions of such combination).
-
- (c) The licenses granted in Sections 2.2(a) and
- 2.2(b) are effective on the date Contributor first
- distributes or otherwise makes the Modifications
- available to a third party.
-
- (d) Notwithstanding Section 2.2(b) above, no patent
- license is granted: (1) for any code that Contributor
- has deleted from the Contributor Version; (2) for
- infringements caused by: (i) third party
- modifications of Contributor Version, or (ii) the
- combination of Modifications made by that Contributor
- with other software (except as part of the
- Contributor Version) or other devices; or (3) under
- Patent Claims infringed by Covered Software in the
- absence of Modifications made by that Contributor.
-
- 3. Distribution Obligations.
-
- 3.1. Availability of Source Code.
-
- Any Covered Software that You distribute or otherwise make
- available in Executable form must also be made available in
- Source Code form and that Source Code form must be
- distributed only under the terms of this License. You must
- include a copy of this License with every copy of the
- Source Code form of the Covered Software You distribute or
- otherwise make available. You must inform recipients of any
- such Covered Software in Executable form as to how they can
- obtain such Covered Software in Source Code form in a
- reasonable manner on or through a medium customarily used
- for software exchange.
-
- 3.2. Modifications.
-
- The Modifications that You create or to which You
- contribute are governed by the terms of this License. You
- represent that You believe Your Modifications are Your
- original creation(s) and/or You have sufficient rights to
- grant the rights conveyed by this License.
-
- 3.3. Required Notices.
-
- You must include a notice in each of Your Modifications
- that identifies You as the Contributor of the Modification.
- You may not remove or alter any copyright, patent or
- trademark notices contained within the Covered Software, or
- any notices of licensing or any descriptive text giving
- attribution to any Contributor or the Initial Developer.
-
- 3.4. Application of Additional Terms.
-
- You may not offer or impose any terms on any Covered
- Software in Source Code form that alters or restricts the
- applicable version of this License or the recipients'
- rights hereunder. You may choose to offer, and to charge a
- fee for, warranty, support, indemnity or liability
- obligations to one or more recipients of Covered Software.
- However, you may do so only on Your own behalf, and not on
- behalf of the Initial Developer or any Contributor. You
- must make it absolutely clear that any such warranty,
- support, indemnity or liability obligation is offered by
- You alone, and You hereby agree to indemnify the Initial
- Developer and every Contributor for any liability incurred
- by the Initial Developer or such Contributor as a result of
- warranty, support, indemnity or liability terms You offer.
-
- 3.5. Distribution of Executable Versions.
-
- You may distribute the Executable form of the Covered
- Software under the terms of this License or under the terms
- of a license of Your choice, which may contain terms
- different from this License, provided that You are in
- compliance with the terms of this License and that the
- license for the Executable form does not attempt to limit
- or alter the recipient's rights in the Source Code form
- from the rights set forth in this License. If You
- distribute the Covered Software in Executable form under a
- different license, You must make it absolutely clear that
- any terms which differ from this License are offered by You
- alone, not by the Initial Developer or Contributor. You
- hereby agree to indemnify the Initial Developer and every
- Contributor for any liability incurred by the Initial
- Developer or such Contributor as a result of any such terms
- You offer.
-
- 3.6. Larger Works.
-
- You may create a Larger Work by combining Covered Software
- with other code not governed by the terms of this License
- and distribute the Larger Work as a single product. In such
- a case, You must make sure the requirements of this License
- are fulfilled for the Covered Software.
-
- 4. Versions of the License.
-
- 4.1. New Versions.
-
- Sun Microsystems, Inc. is the initial license steward and
- may publish revised and/or new versions of this License
- from time to time. Each version will be given a
- distinguishing version number. Except as provided in
- Section 4.3, no one other than the license steward has the
- right to modify this License.
-
- 4.2. Effect of New Versions.
-
- You may always continue to use, distribute or otherwise
- make the Covered Software available under the terms of the
- version of the License under which You originally received
- the Covered Software. If the Initial Developer includes a
- notice in the Original Software prohibiting it from being
- distributed or otherwise made available under any
- subsequent version of the License, You must distribute and
- make the Covered Software available under the terms of the
- version of the License under which You originally received
- the Covered Software. Otherwise, You may also choose to
- use, distribute or otherwise make the Covered Software
- available under the terms of any subsequent version of the
- License published by the license steward.
-
- 4.3. Modified Versions.
-
- When You are an Initial Developer and You want to create a
- new license for Your Original Software, You may create and
- use a modified version of this License if You: (a) rename
- the license and remove any references to the name of the
- license steward (except to note that the license differs
- from this License); and (b) otherwise make it clear that
- the license contains terms which differ from this License.
-
- 5. DISCLAIMER OF WARRANTY.
-
- COVERED SOFTWARE IS PROVIDED UNDER THIS LICENSE ON AN "AS IS"
- BASIS, WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED,
- INCLUDING, WITHOUT LIMITATION, WARRANTIES THAT THE COVERED
- SOFTWARE IS FREE OF DEFECTS, MERCHANTABLE, FIT FOR A PARTICULAR
- PURPOSE OR NON-INFRINGING. THE ENTIRE RISK AS TO THE QUALITY AND
- PERFORMANCE OF THE COVERED SOFTWARE IS WITH YOU. SHOULD ANY
- COVERED SOFTWARE PROVE DEFECTIVE IN ANY RESPECT, YOU (NOT THE
- INITIAL DEVELOPER OR ANY OTHER CONTRIBUTOR) ASSUME THE COST OF
- ANY NECESSARY SERVICING, REPAIR OR CORRECTION. THIS DISCLAIMER OF
- WARRANTY CONSTITUTES AN ESSENTIAL PART OF THIS LICENSE. NO USE OF
- ANY COVERED SOFTWARE IS AUTHORIZED HEREUNDER EXCEPT UNDER THIS
- DISCLAIMER.
-
- 6. TERMINATION.
-
- 6.1. This License and the rights granted hereunder will
- terminate automatically if You fail to comply with terms
- herein and fail to cure such breach within 30 days of
- becoming aware of the breach. Provisions which, by their
- nature, must remain in effect beyond the termination of
- this License shall survive.
-
- 6.2. If You assert a patent infringement claim (excluding
- declaratory judgment actions) against Initial Developer or
- a Contributor (the Initial Developer or Contributor against
- whom You assert such claim is referred to as "Participant")
- alleging that the Participant Software (meaning the
- Contributor Version where the Participant is a Contributor
- or the Original Software where the Participant is the
- Initial Developer) directly or indirectly infringes any
- patent, then any and all rights granted directly or
- indirectly to You by such Participant, the Initial
- Developer (if the Initial Developer is not the Participant)
- and all Contributors under Sections 2.1 and/or 2.2 of this
- License shall, upon 60 days notice from Participant
- terminate prospectively and automatically at the expiration
- of such 60 day notice period, unless if within such 60 day
- period You withdraw Your claim with respect to the
- Participant Software against such Participant either
- unilaterally or pursuant to a written agreement with
- Participant.
-
- 6.3. In the event of termination under Sections 6.1 or 6.2
- above, all end user licenses that have been validly granted
- by You or any distributor hereunder prior to termination
- (excluding licenses granted to You by any distributor)
- shall survive termination.
-
- 7. LIMITATION OF LIABILITY.
-
- UNDER NO CIRCUMSTANCES AND UNDER NO LEGAL THEORY, WHETHER TORT
- (INCLUDING NEGLIGENCE), CONTRACT, OR OTHERWISE, SHALL YOU, THE
- INITIAL DEVELOPER, ANY OTHER CONTRIBUTOR, OR ANY DISTRIBUTOR OF
- COVERED SOFTWARE, OR ANY SUPPLIER OF ANY OF SUCH PARTIES, BE
- LIABLE TO ANY PERSON FOR ANY INDIRECT, SPECIAL, INCIDENTAL, OR
- CONSEQUENTIAL DAMAGES OF ANY CHARACTER INCLUDING, WITHOUT
- LIMITATION, DAMAGES FOR LOST PROFITS, LOSS OF GOODWILL, WORK
- STOPPAGE, COMPUTER FAILURE OR MALFUNCTION, OR ANY AND ALL OTHER
- COMMERCIAL DAMAGES OR LOSSES, EVEN IF SUCH PARTY SHALL HAVE BEEN
- INFORMED OF THE POSSIBILITY OF SUCH DAMAGES. THIS LIMITATION OF
- LIABILITY SHALL NOT APPLY TO LIABILITY FOR DEATH OR PERSONAL
- INJURY RESULTING FROM SUCH PARTY'S NEGLIGENCE TO THE EXTENT
- APPLICABLE LAW PROHIBITS SUCH LIMITATION. SOME JURISDICTIONS DO
- NOT ALLOW THE EXCLUSION OR LIMITATION OF INCIDENTAL OR
- CONSEQUENTIAL DAMAGES, SO THIS EXCLUSION AND LIMITATION MAY NOT
- APPLY TO YOU.
-
- 8. U.S. GOVERNMENT END USERS.
-
- The Covered Software is a "commercial item," as that term is
- defined in 48 C.F.R. 2.101 (Oct. 1995), consisting of "commercial
- computer software" (as that term is defined at 48 C.F.R. ¤
- 252.227-7014(a)(1)) and "commercial computer software
- documentation" as such terms are used in 48 C.F.R. 12.212 (Sept.
- 1995). Consistent with 48 C.F.R. 12.212 and 48 C.F.R. 227.7202-1
- through 227.7202-4 (June 1995), all U.S. Government End Users
- acquire Covered Software with only those rights set forth herein.
- This U.S. Government Rights clause is in lieu of, and supersedes,
- any other FAR, DFAR, or other clause or provision that addresses
- Government rights in computer software under this License.
-
- 9. MISCELLANEOUS.
-
- This License represents the complete agreement concerning subject
- matter hereof. If any provision of this License is held to be
- unenforceable, such provision shall be reformed only to the
- extent necessary to make it enforceable. This License shall be
- governed by the law of the jurisdiction specified in a notice
- contained within the Original Software (except to the extent
- applicable law, if any, provides otherwise), excluding such
- jurisdiction's conflict-of-law provisions. Any litigation
- relating to this License shall be subject to the jurisdiction of
- the courts located in the jurisdiction and venue specified in a
- notice contained within the Original Software, with the losing
- party responsible for costs, including, without limitation, court
- costs and reasonable attorneys' fees and expenses. The
- application of the United Nations Convention on Contracts for the
- International Sale of Goods is expressly excluded. Any law or
- regulation which provides that the language of a contract shall
- be construed against the drafter shall not apply to this License.
- You agree that You alone are responsible for compliance with the
- United States export administration regulations (and the export
- control laws and regulation of any other countries) when You use,
- distribute or otherwise make available any Covered Software.
-
- 10. RESPONSIBILITY FOR CLAIMS.
-
- As between Initial Developer and the Contributors, each party is
- responsible for claims and damages arising, directly or
- indirectly, out of its utilization of rights under this License
- and You agree to work with Initial Developer and Contributors to
- distribute such responsibility on an equitable basis. Nothing
- herein is intended or shall be deemed to constitute any admission
- of liability.
-
- from Project GlassFish http://glassfish.java.net/
- cloud-ejb-api-3.0.jar http://repo1.maven.org/maven2/javax/ejb/ejb-api/3.0/ejb-api-3.0-sources.jar
- cloud-jstl-1.2.jar http://jstl.java.net/
-
- licensed under the COMMON DEVELOPMENT AND DISTRIBUTION LICENSE (CDDL) Version 1.0 http://www.opensource.org/licenses/CDDL-1.0 (as follows)
-
- Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
-
- COMMON DEVELOPMENT AND DISTRIBUTION LICENSE (CDDL) Version 1.0
-
- 1. Definitions.
-
- 1.1. "Contributor" means each individual or entity that
- creates or contributes to the creation of Modifications.
-
- 1.2. "Contributor Version" means the combination of the
- Original Software, prior Modifications used by a
- Contributor (if any), and the Modifications made by that
- particular Contributor.
-
- 1.3. "Covered Software" means (a) the Original Software, or
- (b) Modifications, or (c) the combination of files
- containing Original Software with files containing
- Modifications, in each case including portions thereof.
-
- 1.4. "Executable" means the Covered Software in any form
- other than Source Code.
-
- 1.5. "Initial Developer" means the individual or entity
- that first makes Original Software available under this
- License.
-
- 1.6. "Larger Work" means a work which combines Covered
- Software or portions thereof with code not governed by the
- terms of this License.
-
- 1.7. "License" means this document.
-
- 1.8. "Licensable" means having the right to grant, to the
- maximum extent possible, whether at the time of the initial
- grant or subsequently acquired, any and all of the rights
- conveyed herein.
-
- 1.9. "Modifications" means the Source Code and Executable
- form of any of the following:
-
- A. Any file that results from an addition to,
- deletion from or modification of the contents of a
- file containing Original Software or previous
- Modifications;
-
- B. Any new file that contains any part of the
- Original Software or previous Modification; or
-
- C. Any new file that is contributed or otherwise made
- available under the terms of this License.
-
- 1.10. "Original Software" means the Source Code and
- Executable form of computer software code that is
- originally released under this License.
-
- 1.11. "Patent Claims" means any patent claim(s), now owned
- or hereafter acquired, including without limitation,
- method, process, and apparatus claims, in any patent
- Licensable by grantor.
-
- 1.12. "Source Code" means (a) the common form of computer
- software code in which modifications are made and (b)
- associated documentation included in or with such code.
-
- 1.13. "You" (or "Your") means an individual or a legal
- entity exercising rights under, and complying with all of
- the terms of, this License. For legal entities, "You"
- includes any entity which controls, is controlled by, or is
- under common control with You. For purposes of this
- definition, "control" means (a) the power, direct or
- indirect, to cause the direction or management of such
- entity, whether by contract or otherwise, or (b) ownership
- of more than fifty percent (50%) of the outstanding shares
- or beneficial ownership of such entity.
-
- 2. License Grants.
-
- 2.1. The Initial Developer Grant.
-
- Conditioned upon Your compliance with Section 3.1 below and
- subject to third party intellectual property claims, the
- Initial Developer hereby grants You a world-wide,
- royalty-free, non-exclusive license:
-
- (a) under intellectual property rights (other than
- patent or trademark) Licensable by Initial Developer,
- to use, reproduce, modify, display, perform,
- sublicense and distribute the Original Software (or
- portions thereof), with or without Modifications,
- and/or as part of a Larger Work; and
-
- (b) under Patent Claims infringed by the making,
- using or selling of Original Software, to make, have
- made, use, practice, sell, and offer for sale, and/or
- otherwise dispose of the Original Software (or
- portions thereof).
-
- (c) The licenses granted in Sections 2.1(a) and (b)
- are effective on the date Initial Developer first
- distributes or otherwise makes the Original Software
- available to a third party under the terms of this
- License.
-
- (d) Notwithstanding Section 2.1(b) above, no patent
- license is granted: (1) for code that You delete from
- the Original Software, or (2) for infringements
- caused by: (i) the modification of the Original
- Software, or (ii) the combination of the Original
- Software with other software or devices.
-
- 2.2. Contributor Grant.
-
- Conditioned upon Your compliance with Section 3.1 below and
- subject to third party intellectual property claims, each
- Contributor hereby grants You a world-wide, royalty-free,
- non-exclusive license:
-
- (a) under intellectual property rights (other than
- patent or trademark) Licensable by Contributor to
- use, reproduce, modify, display, perform, sublicense
- and distribute the Modifications created by such
- Contributor (or portions thereof), either on an
- unmodified basis, with other Modifications, as
- Covered Software and/or as part of a Larger Work; and
-
- (b) under Patent Claims infringed by the making,
- using, or selling of Modifications made by that
- Contributor either alone and/or in combination with
- its Contributor Version (or portions of such
- combination), to make, use, sell, offer for sale,
- have made, and/or otherwise dispose of: (1)
- Modifications made by that Contributor (or portions
- thereof); and (2) the combination of Modifications
- made by that Contributor with its Contributor Version
- (or portions of such combination).
-
- (c) The licenses granted in Sections 2.2(a) and
- 2.2(b) are effective on the date Contributor first
- distributes or otherwise makes the Modifications
- available to a third party.
-
- (d) Notwithstanding Section 2.2(b) above, no patent
- license is granted: (1) for any code that Contributor
- has deleted from the Contributor Version; (2) for
- infringements caused by: (i) third party
- modifications of Contributor Version, or (ii) the
- combination of Modifications made by that Contributor
- with other software (except as part of the
- Contributor Version) or other devices; or (3) under
- Patent Claims infringed by Covered Software in the
- absence of Modifications made by that Contributor.
-
- 3. Distribution Obligations.
-
- 3.1. Availability of Source Code.
-
- Any Covered Software that You distribute or otherwise make
- available in Executable form must also be made available in
- Source Code form and that Source Code form must be
- distributed only under the terms of this License. You must
- include a copy of this License with every copy of the
- Source Code form of the Covered Software You distribute or
- otherwise make available. You must inform recipients of any
- such Covered Software in Executable form as to how they can
- obtain such Covered Software in Source Code form in a
- reasonable manner on or through a medium customarily used
- for software exchange.
-
- 3.2. Modifications.
-
- The Modifications that You create or to which You
- contribute are governed by the terms of this License. You
- represent that You believe Your Modifications are Your
- original creation(s) and/or You have sufficient rights to
- grant the rights conveyed by this License.
-
- 3.3. Required Notices.
-
- You must include a notice in each of Your Modifications
- that identifies You as the Contributor of the Modification.
- You may not remove or alter any copyright, patent or
- trademark notices contained within the Covered Software, or
- any notices of licensing or any descriptive text giving
- attribution to any Contributor or the Initial Developer.
-
- 3.4. Application of Additional Terms.
-
- You may not offer or impose any terms on any Covered
- Software in Source Code form that alters or restricts the
- applicable version of this License or the recipients'
- rights hereunder. You may choose to offer, and to charge a
- fee for, warranty, support, indemnity or liability
- obligations to one or more recipients of Covered Software.
- However, you may do so only on Your own behalf, and not on
- behalf of the Initial Developer or any Contributor. You
- must make it absolutely clear that any such warranty,
- support, indemnity or liability obligation is offered by
- You alone, and You hereby agree to indemnify the Initial
- Developer and every Contributor for any liability incurred
- by the Initial Developer or such Contributor as a result of
- warranty, support, indemnity or liability terms You offer.
-
- 3.5. Distribution of Executable Versions.
-
- You may distribute the Executable form of the Covered
- Software under the terms of this License or under the terms
- of a license of Your choice, which may contain terms
- different from this License, provided that You are in
- compliance with the terms of this License and that the
- license for the Executable form does not attempt to limit
- or alter the recipient's rights in the Source Code form
- from the rights set forth in this License. If You
- distribute the Covered Software in Executable form under a
- different license, You must make it absolutely clear that
- any terms which differ from this License are offered by You
- alone, not by the Initial Developer or Contributor. You
- hereby agree to indemnify the Initial Developer and every
- Contributor for any liability incurred by the Initial
- Developer or such Contributor as a result of any such terms
- You offer.
-
- 3.6. Larger Works.
-
- You may create a Larger Work by combining Covered Software
- with other code not governed by the terms of this License
- and distribute the Larger Work as a single product. In such
- a case, You must make sure the requirements of this License
- are fulfilled for the Covered Software.
-
- 4. Versions of the License.
-
- 4.1. New Versions.
-
- Sun Microsystems, Inc. is the initial license steward and
- may publish revised and/or new versions of this License
- from time to time. Each version will be given a
- distinguishing version number. Except as provided in
- Section 4.3, no one other than the license steward has the
- right to modify this License.
-
- 4.2. Effect of New Versions.
-
- You may always continue to use, distribute or otherwise
- make the Covered Software available under the terms of the
- version of the License under which You originally received
- the Covered Software. If the Initial Developer includes a
- notice in the Original Software prohibiting it from being
- distributed or otherwise made available under any
- subsequent version of the License, You must distribute and
- make the Covered Software available under the terms of the
- version of the License under which You originally received
- the Covered Software. Otherwise, You may also choose to
- use, distribute or otherwise make the Covered Software
- available under the terms of any subsequent version of the
- License published by the license steward.
-
- 4.3. Modified Versions.
-
- When You are an Initial Developer and You want to create a
- new license for Your Original Software, You may create and
- use a modified version of this License if You: (a) rename
- the license and remove any references to the name of the
- license steward (except to note that the license differs
- from this License); and (b) otherwise make it clear that
- the license contains terms which differ from this License.
-
- 5. DISCLAIMER OF WARRANTY.
-
- COVERED SOFTWARE IS PROVIDED UNDER THIS LICENSE ON AN "AS IS"
- BASIS, WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED,
- INCLUDING, WITHOUT LIMITATION, WARRANTIES THAT THE COVERED
- SOFTWARE IS FREE OF DEFECTS, MERCHANTABLE, FIT FOR A PARTICULAR
- PURPOSE OR NON-INFRINGING. THE ENTIRE RISK AS TO THE QUALITY AND
- PERFORMANCE OF THE COVERED SOFTWARE IS WITH YOU. SHOULD ANY
- COVERED SOFTWARE PROVE DEFECTIVE IN ANY RESPECT, YOU (NOT THE
- INITIAL DEVELOPER OR ANY OTHER CONTRIBUTOR) ASSUME THE COST OF
- ANY NECESSARY SERVICING, REPAIR OR CORRECTION. THIS DISCLAIMER OF
- WARRANTY CONSTITUTES AN ESSENTIAL PART OF THIS LICENSE. NO USE OF
- ANY COVERED SOFTWARE IS AUTHORIZED HEREUNDER EXCEPT UNDER THIS
- DISCLAIMER.
-
- 6. TERMINATION.
-
- 6.1. This License and the rights granted hereunder will
- terminate automatically if You fail to comply with terms
- herein and fail to cure such breach within 30 days of
- becoming aware of the breach. Provisions which, by their
- nature, must remain in effect beyond the termination of
- this License shall survive.
-
- 6.2. If You assert a patent infringement claim (excluding
- declaratory judgment actions) against Initial Developer or
- a Contributor (the Initial Developer or Contributor against
- whom You assert such claim is referred to as "Participant")
- alleging that the Participant Software (meaning the
- Contributor Version where the Participant is a Contributor
- or the Original Software where the Participant is the
- Initial Developer) directly or indirectly infringes any
- patent, then any and all rights granted directly or
- indirectly to You by such Participant, the Initial
- Developer (if the Initial Developer is not the Participant)
- and all Contributors under Sections 2.1 and/or 2.2 of this
- License shall, upon 60 days notice from Participant
- terminate prospectively and automatically at the expiration
- of such 60 day notice period, unless if within such 60 day
- period You withdraw Your claim with respect to the
- Participant Software against such Participant either
- unilaterally or pursuant to a written agreement with
- Participant.
-
- 6.3. In the event of termination under Sections 6.1 or 6.2
- above, all end user licenses that have been validly granted
- by You or any distributor hereunder prior to termination
- (excluding licenses granted to You by any distributor)
- shall survive termination.
-
- 7. LIMITATION OF LIABILITY.
-
- UNDER NO CIRCUMSTANCES AND UNDER NO LEGAL THEORY, WHETHER TORT
- (INCLUDING NEGLIGENCE), CONTRACT, OR OTHERWISE, SHALL YOU, THE
- INITIAL DEVELOPER, ANY OTHER CONTRIBUTOR, OR ANY DISTRIBUTOR OF
- COVERED SOFTWARE, OR ANY SUPPLIER OF ANY OF SUCH PARTIES, BE
- LIABLE TO ANY PERSON FOR ANY INDIRECT, SPECIAL, INCIDENTAL, OR
- CONSEQUENTIAL DAMAGES OF ANY CHARACTER INCLUDING, WITHOUT
- LIMITATION, DAMAGES FOR LOST PROFITS, LOSS OF GOODWILL, WORK
- STOPPAGE, COMPUTER FAILURE OR MALFUNCTION, OR ANY AND ALL OTHER
- COMMERCIAL DAMAGES OR LOSSES, EVEN IF SUCH PARTY SHALL HAVE BEEN
- INFORMED OF THE POSSIBILITY OF SUCH DAMAGES. THIS LIMITATION OF
- LIABILITY SHALL NOT APPLY TO LIABILITY FOR DEATH OR PERSONAL
- INJURY RESULTING FROM SUCH PARTY'S NEGLIGENCE TO THE EXTENT
- APPLICABLE LAW PROHIBITS SUCH LIMITATION. SOME JURISDICTIONS DO
- NOT ALLOW THE EXCLUSION OR LIMITATION OF INCIDENTAL OR
- CONSEQUENTIAL DAMAGES, SO THIS EXCLUSION AND LIMITATION MAY NOT
- APPLY TO YOU.
-
- 8. U.S. GOVERNMENT END USERS.
-
- The Covered Software is a "commercial item," as that term is
- defined in 48 C.F.R. 2.101 (Oct. 1995), consisting of "commercial
- computer software" (as that term is defined at 48 C.F.R. ¤
- 252.227-7014(a)(1)) and "commercial computer software
- documentation" as such terms are used in 48 C.F.R. 12.212 (Sept.
- 1995). Consistent with 48 C.F.R. 12.212 and 48 C.F.R. 227.7202-1
- through 227.7202-4 (June 1995), all U.S. Government End Users
- acquire Covered Software with only those rights set forth herein.
- This U.S. Government Rights clause is in lieu of, and supersedes,
- any other FAR, DFAR, or other clause or provision that addresses
- Government rights in computer software under this License.
-
- 9. MISCELLANEOUS.
-
- This License represents the complete agreement concerning subject
- matter hereof. If any provision of this License is held to be
- unenforceable, such provision shall be reformed only to the
- extent necessary to make it enforceable. This License shall be
- governed by the law of the jurisdiction specified in a notice
- contained within the Original Software (except to the extent
- applicable law, if any, provides otherwise), excluding such
- jurisdiction's conflict-of-law provisions. Any litigation
- relating to this License shall be subject to the jurisdiction of
- the courts located in the jurisdiction and venue specified in a
- notice contained within the Original Software, with the losing
- party responsible for costs, including, without limitation, court
- costs and reasonable attorneys' fees and expenses. The
- application of the United Nations Convention on Contracts for the
- International Sale of Goods is expressly excluded. Any law or
- regulation which provides that the language of a contract shall
- be construed against the drafter shall not apply to this License.
- You agree that You alone are responsible for compliance with the
- United States export administration regulations (and the export
- control laws and regulation of any other countries) when You use,
- distribute or otherwise make available any Covered Software.
-
- 10. RESPONSIBILITY FOR CLAIMS.
-
- As between Initial Developer and the Contributors, each party is
- responsible for claims and damages arising, directly or
- indirectly, out of its utilization of rights under this License
- and You agree to work with Initial Developer and Contributors to
- distribute such responsibility on an equitable basis. Nothing
- herein is intended or shall be deemed to constitute any admission
- of liability.
-
- from Oracle and/or its affiliates http://oracle.com
- cloud-email.jar http://kenai.com/projects/javamail
-
- licensed under the Common Public License - v 1.0 http://opensource.org/licenses/cpl1.0 (as follows)
-
- Copyright (c) IBM Corp 2006
-
- Common Public License Version 1.0 (CPL)
-
- THE ACCOMPANYING PROGRAM IS PROVIDED UNDER THE TERMS OF THIS COMMON PUBLIC
- LICENSE ("AGREEMENT"). ANY USE, REPRODUCTION OR DISTRIBUTION OF THE PROGRAM
- CONSTITUTES RECIPIENT'S ACCEPTANCE OF THIS AGREEMENT.
-
- 1. DEFINITIONS
-
- "Contribution means:
-
- a) in the case of the initial Contributor, the initial code and documentation
- distributed under this Agreement, and
-
- b) in the case of each subsequent Contributor:
-
- i) changes to the Program, and
-
- ii) additions to the Program;
-
- where such changes and/or additions to the Program originate from and are
- distributed by that particular Contributor. A Contribution 'originates' from a
- Contributor if it was added to the Program by such Contributor itself or anyone
- acting on such Contributor's behalf. Contributions do not include additions to
- the Program which: (i) are separate modules of software distributed in
- conjunction with the Program under their own license agreement, and (ii) are not
- derivative works of the Program.
-
- "Contributor means any person or entity that distributes the Program.
-
- "Licensed Patents mean patent claims licensable by a Contributor which are
- "necessarily infringed by the use or sale of its Contribution alone or when
- "combined with the Program.
-
- "Program means the Contributions distributed in accordance with this Agreement.
-
- "Recipient means anyone who receives the Program under this Agreement, including
- "all Contributors.
-
- 2. GRANT OF RIGHTS
-
- a) Subject to the terms of this Agreement, each Contributor hereby grants
- Recipient a non-exclusive, worldwide, royalty-free copyright license to
- reproduce, prepare derivative works of, publicly display, publicly perform,
- distribute and sublicense the Contribution of such Contributor, if any, and such
- derivative works, in source code and object code form.
-
- b) Subject to the terms of this Agreement, each Contributor hereby grants
- Recipient a non-exclusive, worldwide, royalty-free patent license under Licensed
- Patents to make, use, sell, offer to sell, import and otherwise transfer the
- Contribution of such Contributor, if any, in source code and object code form.
- This patent license shall apply to the combination of the Contribution and the
- Program if, at the time the Contribution is added by the Contributor, such
- addition of the Contribution causes such combination to be covered by the
- Licensed Patents. The patent license shall not apply to any other combinations
- which include the Contribution. No hardware per se is licensed hereunder.
-
- c) Recipient understands that although each Contributor grants the licenses to
- its Contributions set forth herein, no assurances are provided by any
- Contributor that the Program does not infringe the patent or other intellectual
- property rights of any other entity. Each Contributor disclaims any liability to
- Recipient for claims brought by any other entity based on infringement of
- intellectual property rights or otherwise. As a condition to exercising the
- rights and licenses granted hereunder, each Recipient hereby assumes sole
- responsibility to secure any other intellectual property rights needed, if any.
- For example, if a third party patent license is required to allow Recipient to
- distribute the Program, it is Recipient's responsibility to acquire that license
- before distributing the Program.
-
- d) Each Contributor represents that to its knowledge it has sufficient copyright
- rights in its Contribution, if any, to grant the copyright license set forth in
- this Agreement.
-
- 3. REQUIREMENTS
-
- A Contributor may choose to distribute the Program in object code form under its
- own license agreement, provided that:
-
- a) it complies with the terms and conditions of this Agreement; and
-
- b) its license agreement:
-
- i) effectively disclaims on behalf of all Contributors all warranties and
- conditions, express and implied, including warranties or conditions of title and
- non-infringement, and implied warranties or conditions of merchantability and
- fitness for a particular purpose;
-
- ii) effectively excludes on behalf of all Contributors all liability for
- damages, including direct, indirect, special, incidental and consequential
- damages, such as lost profits;
-
- iii) states that any provisions which differ from this Agreement are offered by
- that Contributor alone and not by any other party; and
-
- iv) states that source code for the Program is available from such Contributor,
- and informs licensees how to obtain it in a reasonable manner on or through a
- medium customarily used for software exchange.
-
- When the Program is made available in source code form:
-
- a) it must be made available under this Agreement; and
-
- b) a copy of this Agreement must be included with each copy of the Program.
-
- Contributors may not remove or alter any copyright notices contained within the
- Program.
-
- Each Contributor must identify itself as the originator of its Contribution, if
- any, in a manner that reasonably allows subsequent Recipients to identify the
- originator of the Contribution.
-
- 4. COMMERCIAL DISTRIBUTION
-
- Commercial distributors of software may accept certain responsibilities with
- respect to end users, business partners and the like. While this license is
- intended to facilitate the commercial use of the Program, the Contributor who
- includes the Program in a commercial product offering should do so in a manner
- which does not create potential liability for other Contributors. Therefore, if
- a Contributor includes the Program in a commercial product offering, such
- Contributor ("Commercial Contributor") hereby agrees to defend and indemnify
- every other Contributor ("Indemnified Contributor") against any losses, damages
- and costs (collectively "Losses") arising from claims, lawsuits and other legal
- actions brought by a third party against the Indemnified Contributor to the
- extent caused by the acts or omissions of such Commercial Contributor in
- connection with its distribution of the Program in a commercial product
- offering. The obligations in this section do not apply to any claims or Losses
- relating to any actual or alleged intellectual property infringement. In order
- to qualify, an Indemnified Contributor must: a) promptly notify the Commercial
- Contributor in writing of such claim, and b) allow the Commercial Contributor to
- control, and cooperate with the Commercial Contributor in, the defense and any
- related settlement negotiations. The Indemnified Contributor may participate in
- any such claim at its own expense.
-
- For example, a Contributor might include the Program in a commercial product
- offering, Product X. That Contributor is then a Commercial Contributor. If that
- Commercial Contributor then makes performance claims, or offers warranties
- related to Product X, those performance claims and warranties are such
- Commercial Contributor's responsibility alone. Under this section, the
- Commercial Contributor would have to defend claims against the other
- Contributors related to those performance claims and warranties, and if a court
- requires any other Contributor to pay any damages as a result, the Commercial
- Contributor must pay those damages.
-
- 5. NO WARRANTY
-
- EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, THE PROGRAM IS PROVIDED ON AN
- "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, EITHER EXPRESS OR
- IMPLIED INCLUDING, WITHOUT LIMITATION, ANY WARRANTIES OR CONDITIONS OF TITLE,
- NON-INFRINGEMENT, MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. Each
- Recipient is solely responsible for determining the appropriateness of using and
- distributing the Program and assumes all risks associated with its exercise of
- rights under this Agreement, including but not limited to the risks and costs of
- program errors, compliance with applicable laws, damage to or loss of data,
- programs or equipment, and unavailability or interruption of operations.
-
- 6. DISCLAIMER OF LIABILITY
-
- EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, NEITHER RECIPIENT NOR ANY
- CONTRIBUTORS SHALL HAVE ANY LIABILITY FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING WITHOUT LIMITATION LOST
- PROFITS), 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 OR DISTRIBUTION OF THE PROGRAM OR THE EXERCISE OF ANY RIGHTS
- GRANTED HEREUNDER, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
-
- 7. GENERAL
-
- If any provision of this Agreement is invalid or unenforceable under applicable
- law, it shall not affect the validity or enforceability of the remainder of the
- terms of this Agreement, and without further action by the parties hereto, such
- provision shall be reformed to the minimum extent necessary to make such
- provision valid and enforceable.
-
- If Recipient institutes patent litigation against a Contributor with respect to
- a patent applicable to software (including a cross-claim or counterclaim in a
- lawsuit), then any patent licenses granted by that Contributor to such Recipient
- under this Agreement shall terminate as of the date such litigation is filed. In
- addition, if Recipient institutes patent litigation against any entity
- (including a cross-claim or counterclaim in a lawsuit) alleging that the Program
- itself (excluding combinations of the Program with other software or hardware)
- infringes such Recipient's patent(s), then such Recipient's rights granted under
- Section 2(b) shall terminate as of the date such litigation is filed.
-
- All Recipient's rights under this Agreement shall terminate if it fails to
- comply with any of the material terms or conditions of this Agreement and does
- not cure such failure in a reasonable period of time after becoming aware of
- such noncompliance. If all Recipient's rights under this Agreement terminate,
- Recipient agrees to cease use and distribution of the Program as soon as
- reasonably practicable. However, Recipient's obligations under this Agreement
- and any licenses granted by Recipient relating to the Program shall continue and
- survive.
-
- Everyone is permitted to copy and distribute copies of this Agreement, but in
- order to avoid inconsistency the Agreement is copyrighted and may only be
- modified in the following manner. The Agreement Steward reserves the right to
- publish new versions (including revisions) of this Agreement from time to time.
- No one other than the Agreement Steward has the right to modify this Agreement.
- IBM is the initial Agreement Steward. IBM may assign the responsibility to serve
- as the Agreement Steward to a suitable separate entity. Each new version of the
- Agreement will be given a distinguishing version number. The Program (including
- Contributions) may always be distributed subject to the version of the Agreement
- under which it was received. In addition, after a new version of the Agreement
- is published, Contributor may elect to distribute the Program (including its
- Contributions) under the new version. Except as expressly stated in Sections
- 2(a) and 2(b) above, Recipient receives no rights or licenses to the
- intellectual property of any Contributor under this Agreement, whether
- expressly, by implication, estoppel or otherwise. All rights in the Program not
- expressly granted under this Agreement are reserved.
-
- This Agreement is governed by the laws of the State of New York and the
- intellectual property laws of the United States of America. No party to this
- Agreement will bring a legal action under this Agreement more than one year
- after the cause of action arose. Each party waives its rights to a jury trial in
- any resulting litigation.
-
- from IBM Corp http://www.ibm.com/
- cloud-wsdl4j-1.6.2.jar http://sourceforge.net/projects/wsdl4j/
- cloud-wsdl4j.jar http://sourceforge.net/projects/wsdl4j/
-
- licensed under the Common Public License - v 1.0 http://opensource.org/licenses/cpl1.0 (as follows)
-
-
- Common Public License Version 1.0 (CPL)
-
- THE ACCOMPANYING PROGRAM IS PROVIDED UNDER THE TERMS OF THIS COMMON PUBLIC
- LICENSE ("AGREEMENT"). ANY USE, REPRODUCTION OR DISTRIBUTION OF THE PROGRAM
- CONSTITUTES RECIPIENT'S ACCEPTANCE OF THIS AGREEMENT.
-
- 1. DEFINITIONS
-
- "Contribution means:
-
- a) in the case of the initial Contributor, the initial code and documentation
- distributed under this Agreement, and
-
- b) in the case of each subsequent Contributor:
-
- i) changes to the Program, and
-
- ii) additions to the Program;
-
- where such changes and/or additions to the Program originate from and are
- distributed by that particular Contributor. A Contribution 'originates' from a
- Contributor if it was added to the Program by such Contributor itself or anyone
- acting on such Contributor's behalf. Contributions do not include additions to
- the Program which: (i) are separate modules of software distributed in
- conjunction with the Program under their own license agreement, and (ii) are not
- derivative works of the Program.
-
- "Contributor means any person or entity that distributes the Program.
-
- "Licensed Patents mean patent claims licensable by a Contributor which are
- "necessarily infringed by the use or sale of its Contribution alone or when
- "combined with the Program.
-
- "Program means the Contributions distributed in accordance with this Agreement.
-
- "Recipient means anyone who receives the Program under this Agreement, including
- "all Contributors.
-
- 2. GRANT OF RIGHTS
-
- a) Subject to the terms of this Agreement, each Contributor hereby grants
- Recipient a non-exclusive, worldwide, royalty-free copyright license to
- reproduce, prepare derivative works of, publicly display, publicly perform,
- distribute and sublicense the Contribution of such Contributor, if any, and such
- derivative works, in source code and object code form.
-
- b) Subject to the terms of this Agreement, each Contributor hereby grants
- Recipient a non-exclusive, worldwide, royalty-free patent license under Licensed
- Patents to make, use, sell, offer to sell, import and otherwise transfer the
- Contribution of such Contributor, if any, in source code and object code form.
- This patent license shall apply to the combination of the Contribution and the
- Program if, at the time the Contribution is added by the Contributor, such
- addition of the Contribution causes such combination to be covered by the
- Licensed Patents. The patent license shall not apply to any other combinations
- which include the Contribution. No hardware per se is licensed hereunder.
-
- c) Recipient understands that although each Contributor grants the licenses to
- its Contributions set forth herein, no assurances are provided by any
- Contributor that the Program does not infringe the patent or other intellectual
- property rights of any other entity. Each Contributor disclaims any liability to
- Recipient for claims brought by any other entity based on infringement of
- intellectual property rights or otherwise. As a condition to exercising the
- rights and licenses granted hereunder, each Recipient hereby assumes sole
- responsibility to secure any other intellectual property rights needed, if any.
- For example, if a third party patent license is required to allow Recipient to
- distribute the Program, it is Recipient's responsibility to acquire that license
- before distributing the Program.
-
- d) Each Contributor represents that to its knowledge it has sufficient copyright
- rights in its Contribution, if any, to grant the copyright license set forth in
- this Agreement.
-
- 3. REQUIREMENTS
-
- A Contributor may choose to distribute the Program in object code form under its
- own license agreement, provided that:
-
- a) it complies with the terms and conditions of this Agreement; and
-
- b) its license agreement:
-
- i) effectively disclaims on behalf of all Contributors all warranties and
- conditions, express and implied, including warranties or conditions of title and
- non-infringement, and implied warranties or conditions of merchantability and
- fitness for a particular purpose;
-
- ii) effectively excludes on behalf of all Contributors all liability for
- damages, including direct, indirect, special, incidental and consequential
- damages, such as lost profits;
-
- iii) states that any provisions which differ from this Agreement are offered by
- that Contributor alone and not by any other party; and
-
- iv) states that source code for the Program is available from such Contributor,
- and informs licensees how to obtain it in a reasonable manner on or through a
- medium customarily used for software exchange.
-
- When the Program is made available in source code form:
-
- a) it must be made available under this Agreement; and
-
- b) a copy of this Agreement must be included with each copy of the Program.
-
- Contributors may not remove or alter any copyright notices contained within the
- Program.
-
- Each Contributor must identify itself as the originator of its Contribution, if
- any, in a manner that reasonably allows subsequent Recipients to identify the
- originator of the Contribution.
-
- 4. COMMERCIAL DISTRIBUTION
-
- Commercial distributors of software may accept certain responsibilities with
- respect to end users, business partners and the like. While this license is
- intended to facilitate the commercial use of the Program, the Contributor who
- includes the Program in a commercial product offering should do so in a manner
- which does not create potential liability for other Contributors. Therefore, if
- a Contributor includes the Program in a commercial product offering, such
- Contributor ("Commercial Contributor") hereby agrees to defend and indemnify
- every other Contributor ("Indemnified Contributor") against any losses, damages
- and costs (collectively "Losses") arising from claims, lawsuits and other legal
- actions brought by a third party against the Indemnified Contributor to the
- extent caused by the acts or omissions of such Commercial Contributor in
- connection with its distribution of the Program in a commercial product
- offering. The obligations in this section do not apply to any claims or Losses
- relating to any actual or alleged intellectual property infringement. In order
- to qualify, an Indemnified Contributor must: a) promptly notify the Commercial
- Contributor in writing of such claim, and b) allow the Commercial Contributor to
- control, and cooperate with the Commercial Contributor in, the defense and any
- related settlement negotiations. The Indemnified Contributor may participate in
- any such claim at its own expense.
-
- For example, a Contributor might include the Program in a commercial product
- offering, Product X. That Contributor is then a Commercial Contributor. If that
- Commercial Contributor then makes performance claims, or offers warranties
- related to Product X, those performance claims and warranties are such
- Commercial Contributor's responsibility alone. Under this section, the
- Commercial Contributor would have to defend claims against the other
- Contributors related to those performance claims and warranties, and if a court
- requires any other Contributor to pay any damages as a result, the Commercial
- Contributor must pay those damages.
-
- 5. NO WARRANTY
-
- EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, THE PROGRAM IS PROVIDED ON AN
- "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, EITHER EXPRESS OR
- IMPLIED INCLUDING, WITHOUT LIMITATION, ANY WARRANTIES OR CONDITIONS OF TITLE,
- NON-INFRINGEMENT, MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. Each
- Recipient is solely responsible for determining the appropriateness of using and
- distributing the Program and assumes all risks associated with its exercise of
- rights under this Agreement, including but not limited to the risks and costs of
- program errors, compliance with applicable laws, damage to or loss of data,
- programs or equipment, and unavailability or interruption of operations.
-
- 6. DISCLAIMER OF LIABILITY
-
- EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, NEITHER RECIPIENT NOR ANY
- CONTRIBUTORS SHALL HAVE ANY LIABILITY FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING WITHOUT LIMITATION LOST
- PROFITS), 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 OR DISTRIBUTION OF THE PROGRAM OR THE EXERCISE OF ANY RIGHTS
- GRANTED HEREUNDER, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
-
- 7. GENERAL
-
- If any provision of this Agreement is invalid or unenforceable under applicable
- law, it shall not affect the validity or enforceability of the remainder of the
- terms of this Agreement, and without further action by the parties hereto, such
- provision shall be reformed to the minimum extent necessary to make such
- provision valid and enforceable.
-
- If Recipient institutes patent litigation against a Contributor with respect to
- a patent applicable to software (including a cross-claim or counterclaim in a
- lawsuit), then any patent licenses granted by that Contributor to such Recipient
- under this Agreement shall terminate as of the date such litigation is filed. In
- addition, if Recipient institutes patent litigation against any entity
- (including a cross-claim or counterclaim in a lawsuit) alleging that the Program
- itself (excluding combinations of the Program with other software or hardware)
- infringes such Recipient's patent(s), then such Recipient's rights granted under
- Section 2(b) shall terminate as of the date such litigation is filed.
-
- All Recipient's rights under this Agreement shall terminate if it fails to
- comply with any of the material terms or conditions of this Agreement and does
- not cure such failure in a reasonable period of time after becoming aware of
- such noncompliance. If all Recipient's rights under this Agreement terminate,
- Recipient agrees to cease use and distribution of the Program as soon as
- reasonably practicable. However, Recipient's obligations under this Agreement
- and any licenses granted by Recipient relating to the Program shall continue and
- survive.
-
- Everyone is permitted to copy and distribute copies of this Agreement, but in
- order to avoid inconsistency the Agreement is copyrighted and may only be
- modified in the following manner. The Agreement Steward reserves the right to
- publish new versions (including revisions) of this Agreement from time to time.
- No one other than the Agreement Steward has the right to modify this Agreement.
- IBM is the initial Agreement Steward. IBM may assign the responsibility to serve
- as the Agreement Steward to a suitable separate entity. Each new version of the
- Agreement will be given a distinguishing version number. The Program (including
- Contributions) may always be distributed subject to the version of the Agreement
- under which it was received. In addition, after a new version of the Agreement
- is published, Contributor may elect to distribute the Program (including its
- Contributions) under the new version. Except as expressly stated in Sections
- 2(a) and 2(b) above, Recipient receives no rights or licenses to the
- intellectual property of any Contributor under this Agreement, whether
- expressly, by implication, estoppel or otherwise. All rights in the Program not
- expressly granted under this Agreement are reserved.
-
- This Agreement is governed by the laws of the State of New York and the
- intellectual property laws of the United States of America. No party to this
- Agreement will bring a legal action under this Agreement more than one year
- after the cause of action arose. Each party waives its rights to a jury trial in
- any resulting litigation.
-
- from JUnit Project http://www.junit.org/
- cloud-junit.jar http://kentbeck.github.com/junit/
-
- licensed under the Eclipse Distribution License Version 1.0 http://www.eclipse.org/org/documents/edl-v10.php (as follows)
-
- Copyright (c) 2012 The Eclipse Foundation.
-
- Eclipse Distribution License Version 1.0
-
- Copyright (c) 2007, Eclipse Foundation, Inc. and its licensors.
-
- 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 Eclipse Foundation, Inc. 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 THE COPYRIGHT OWNER 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.
-
- from The Eclipse Foundation http://www.eclipse.org
- cloud-javax.persistence-2.0.0.jar http://wiki.eclipse.org/EclipseLink/Release/2.0.0
-
- licensed under the MIT License http://www.opensource.org/licenses/mit-license.php (as follows)
-
- Copyright (C) 2008 Tóth István
- 2008-2012 Daniel Veillard
- 2009-2011 Bryan Kearney
-
- Permission is hereby granted, free of charge, to any person obtaining
- a copy of this software and associated documentation files (the
- "Software"), to deal in the Software without restriction, including
- without limitation the rights to use, copy, modify, merge, publish,
- distribute, sublicense, and/or sell copies of the Software, and to
- permit persons to whom the Software is furnished to do so, subject to
- the following conditions:
-
- The above copyright notice and this permission notice shall be
- included in all copies or substantial portions of the Software.
-
- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
- EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
- NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
- LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
- OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
- WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
- from The libvirt project http://libvirt.org/
- libvirt-java-0.4.9
-
- licensed under the XStream BSD Style License https://fisheye.codehaus.org/browse/xstream/trunk/LICENSE.txt?hb=true (as follows)
-
-
- (BSD Style License)
-
- Copyright (c) 2003-2006, Joe Walnes Copyright (c) 2006-2011, XStream Committers
- 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 XStream 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 THE COPYRIGHT OWNER 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.
-
- from XStream Committers http://xstream.codehaus.org/
- cloud-xstream-1.3.1.jar http://xstream.codehaus.org/repository.html
-
-
-Within the ui/lib directory
- placed in the public domain
- by Eric Meyer http://meyerweb.com/eric/
- reset.css
-
- licensed under the Apache License, Version 2 http://www.apache.org/licenses/LICENSE-2.0.txt (as above)
- Copyright (c) 2006 Google Inc.
- from Google Inc. http://google.com
- excanvas.js http://code.google.com/p/explorercanvas/
-
- licensed under the BSD (2-clause) http://www.opensource.org/licenses/BSD-2-Clause (as follows)
-
- Copyright (c) 2008 George McGinley Smith
- 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 author nor the names of 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 THE COPYRIGHT OWNER 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.
-
- from George McGinley Smith
- jquery.easing.js
-
- licensed under the MIT License http://www.opensource.org/licenses/mit-license.php (as follows)
-
- Copyright (c) 2011, John Resig
-
- Permission is hereby granted, free of charge, to any person obtaining
- a copy of this software and associated documentation files (the
- "Software"), to deal in the Software without restriction, including
- without limitation the rights to use, copy, modify, merge, publish,
- distribute, sublicense, and/or sell copies of the Software, and to
- permit persons to whom the Software is furnished to do so, subject to
- the following conditions:
-
- The above copyright notice and this permission notice shall be
- included in all copies or substantial portions of the Software.
-
- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
- EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
- NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
- LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
- OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
- WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
- from John Resig
- jquery.js
-
- licensed under the MIT License http://www.opensource.org/licenses/mit-license.php (as follows)
-
- Copyright (c) 2006 - 2011 Jörn Zaefferer
-
- Permission is hereby granted, free of charge, to any person obtaining
- a copy of this software and associated documentation files (the
- "Software"), to deal in the Software without restriction, including
- without limitation the rights to use, copy, modify, merge, publish,
- distribute, sublicense, and/or sell copies of the Software, and to
- permit persons to whom the Software is furnished to do so, subject to
- the following conditions:
-
- The above copyright notice and this permission notice shall be
- included in all copies or substantial portions of the Software.
-
- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
- EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
- NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
- LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
- OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
- WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
- from Jorn Zaefferer
- jquery.validate.js
-
- licensed under the MIT License http://www.opensource.org/licenses/mit-license.php (as follows)
-
- Copyright (c) 2010, Sebastian Tschan
-
- Permission is hereby granted, free of charge, to any person obtaining
- a copy of this software and associated documentation files (the
- "Software"), to deal in the Software without restriction, including
- without limitation the rights to use, copy, modify, merge, publish,
- distribute, sublicense, and/or sell copies of the Software, and to
- permit persons to whom the Software is furnished to do so, subject to
- the following conditions:
-
- The above copyright notice and this permission notice shall be
- included in all copies or substantial portions of the Software.
-
- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
- EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
- NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
- LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
- OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
- WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
- from Sebastian Tschan https://blueimp.net
- jquery.md5.js
-
- licensed under the MIT License http://www.opensource.org/licenses/mit-license.php (as follows)
-
- Copyright (c) 2006 Klaus Hartl (stilbuero.de)
-
- Permission is hereby granted, free of charge, to any person obtaining
- a copy of this software and associated documentation files (the
- "Software"), to deal in the Software without restriction, including
- without limitation the rights to use, copy, modify, merge, publish,
- distribute, sublicense, and/or sell copies of the Software, and to
- permit persons to whom the Software is furnished to do so, subject to
- the following conditions:
-
- The above copyright notice and this permission notice shall be
- included in all copies or substantial portions of the Software.
-
- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
- EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
- NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
- LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
- OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
- WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
- from Klaus Hartl http://stilbuero.de
- jquery.cookies.js
-
-
-Within the ui/lib/flot directory
- licensed under the MIT License http://www.opensource.org/licenses/mit-license.php (as follows)
-
- Released under the MIT license by IOLA, December 2007.
-
- Permission is hereby granted, free of charge, to any person obtaining
- a copy of this software and associated documentation files (the
- "Software"), to deal in the Software without restriction, including
- without limitation the rights to use, copy, modify, merge, publish,
- distribute, sublicense, and/or sell copies of the Software, and to
- permit persons to whom the Software is furnished to do so, subject to
- the following conditions:
-
- The above copyright notice and this permission notice shall be
- included in all copies or substantial portions of the Software.
-
- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
- EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
- NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
- LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
- OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
- WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
- from IOLA http://www.iola.dk/
- jquery.flot.crosshair.js
- jquery.flot.fillbetween.js
- jquery.flot.image.js
- jquery.flot.js
- jquery.flot.navigate.js
- jquery.flot.resize.js
- jquery.flot.selection.js
- jquery.flot.stack.js
- jquery.flot.symbol.js
- jquery.flot.threshold.js
-
- licensed under the MIT License http://www.opensource.org/licenses/mit-license.php (as follows)
-
- Created by Brian Medendorp, June 2009
- Updated November 2009 with contributions from: btburnett3, Anthony Aragues and Xavi Ivars
-
- Permission is hereby granted, free of charge, to any person obtaining
- a copy of this software and associated documentation files (the
- "Software"), to deal in the Software without restriction, including
- without limitation the rights to use, copy, modify, merge, publish,
- distribute, sublicense, and/or sell copies of the Software, and to
- permit persons to whom the Software is furnished to do so, subject to
- the following conditions:
-
- The above copyright notice and this permission notice shall be
- included in all copies or substantial portions of the Software.
-
- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
- EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
- NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
- LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
- OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
- WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
- from Brian Medendorp
- jquery.pie.js
-
- licensed under the MIT License http://www.opensource.org/licenses/mit-license.php (as follows)
-
-
- Permission is hereby granted, free of charge, to any person obtaining
- a copy of this software and associated documentation files (the
- "Software"), to deal in the Software without restriction, including
- without limitation the rights to use, copy, modify, merge, publish,
- distribute, sublicense, and/or sell copies of the Software, and to
- permit persons to whom the Software is furnished to do so, subject to
- the following conditions:
-
- The above copyright notice and this permission notice shall be
- included in all copies or substantial portions of the Software.
-
- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
- EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
- NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
- LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
- OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
- WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
- from Ole Laursen
- jquery.colorhelpers.js
-
-
-Within the ui/lib/jquery-ui directory
- licensed under the MIT License http://www.opensource.org/licenses/mit-license.php (as follows)
-
-
- Permission is hereby granted, free of charge, to any person obtaining
- a copy of this software and associated documentation files (the
- "Software"), to deal in the Software without restriction, including
- without limitation the rights to use, copy, modify, merge, publish,
- distribute, sublicense, and/or sell copies of the Software, and to
- permit persons to whom the Software is furnished to do so, subject to
- the following conditions:
-
- The above copyright notice and this permission notice shall be
- included in all copies or substantial portions of the Software.
-
- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
- EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
- NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
- LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
- OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
- WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
- from jQuery UI Developers http://jqueryui.com/about
- css/jquery-ui.css
- index.html
- js/jquery-ui.js
-
-
-Within the ui/lib/qunit directory
- licensed under the MIT License http://www.opensource.org/licenses/mit-license.php (as follows)
-
- Copyright (c) 2012 John Resig, Jörn Zaefferer
-
- Permission is hereby granted, free of charge, to any person obtaining
- a copy of this software and associated documentation files (the
- "Software"), to deal in the Software without restriction, including
- without limitation the rights to use, copy, modify, merge, publish,
- distribute, sublicense, and/or sell copies of the Software, and to
- permit persons to whom the Software is furnished to do so, subject to
- the following conditions:
-
- The above copyright notice and this permission notice shall be
- included in all copies or substantial portions of the Software.
-
- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
- EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
- NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
- LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
- OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
- WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
- from Jorn Zaefferer
- qunit.css http://docs.jquery.com/QUnit
- qunit.js http://docs.jquery.com/QUnit
-
-
-Within the utils/src/com/cloud/utils/db directory
- licensed under the Apache License, Version 2 http://www.apache.org/licenses/LICENSE-2.0.txt (as above)
- Copyright (c) 2004 Clinton Begin
- from Clinton Begin http://code.google.com/p/mybatis/
- ScriptRunner.java http://code.google.com/p/mybatis/
-
diff --git a/NOTICE b/NOTICE
index 18679580c47..e310584e78a 100644
--- a/NOTICE
+++ b/NOTICE
@@ -6,9 +6,84 @@
- This distribution contains third party resources requiring the following notices:
+ Source code distribution if this software contains third party resources requiring
+ the following notices:
+ For
+ jquery.md5.js
+
+
+ jQuery MD5 Plugin 1.2.1
+ https://github.com/blueimp/jQuery-MD5
+
+ Copyright 2010, Sebastian Tschan
+ https://blueimp.net
+
+ Licensed under the MIT license:
+ http://creativecommons.org/licenses/MIT/
+
+ Based on
+ A JavaScript implementation of the RSA Data Security, Inc. MD5 Message
+ Digest Algorithm, as defined in RFC 1321.
+ Version 2.2 Copyright (C) Paul Johnston 1999 - 2009
+ Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet
+ Distributed under the BSD License
+ See http://pajhome.org.uk/crypt/md5 for more info.
+
+
+ For
+ jquery.js
+
+
+ jQuery JavaScript Library v1.3.2
+ http://jquery.com/
+
+ Copyright (c) 2009 John Resig
+ Dual licensed under the MIT and GPL licenses.
+ http://docs.jquery.com/License
+
+ Date: 2009-02-19 17:34:21 -0500 (Thu, 19 Feb 2009)
+ Revision: 6246
+
+
+ For
+ jquery.js
+
+
+ jQuery JavaScript Library v1.6.1
+ http://jquery.com/
+
+ Copyright 2011, John Resig
+ Dual licensed under the MIT or GPL Version 2 licenses.
+ http://jquery.org/license
+
+ Includes Sizzle.js
+ http://sizzlejs.com/
+ Copyright 2011, The Dojo Foundation
+ Released under the MIT, BSD, and GPL Licenses.
+
+ Date: Thu May 12 15:04:36 2011 -0400
+
+
+ For
+ jquery.colorhelpers.js
+
+
+ Plugin for jQuery for working with colors.
+
+ Version 1.1.
+
+ Inspiration from jQuery color animation plugin by John Resig.
+
+ Released under the MIT license by Ole Laursen, October 2009.
+
+
+********************************************************************************
+
+ Binary or packaged versions of this software (including versions built from source)
+ contains third party resources requiring the following notices:
+
For
cloud-ejb-api-3.0.jar
cloud-email.jar
@@ -337,28 +412,6 @@
without prior written authorization of the copyright holder.
- For
- jquery.md5.js
-
-
- jQuery MD5 Plugin 1.2.1
- https://github.com/blueimp/jQuery-MD5
-
- Copyright 2010, Sebastian Tschan
- https://blueimp.net
-
- Licensed under the MIT license:
- http://creativecommons.org/licenses/MIT/
-
- Based on
- A JavaScript implementation of the RSA Data Security, Inc. MD5 Message
- Digest Algorithm, as defined in RFC 1321.
- Version 2.2 Copyright (C) Paul Johnston 1999 - 2009
- Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet
- Distributed under the BSD License
- See http://pajhome.org.uk/crypt/md5 for more info.
-
-
For
XmlSchema-1.4.3.jar
@@ -430,21 +483,6 @@
THE SOFTWARE.
- For
- jquery.js
-
-
- jQuery JavaScript Library v1.3.2
- http://jquery.com/
-
- Copyright (c) 2009 John Resig
- Dual licensed under the MIT and GPL licenses.
- http://docs.jquery.com/License
-
- Date: 2009-02-19 17:34:21 -0500 (Thu, 19 Feb 2009)
- Revision: 6246
-
-
For
axis2-1.5.1.jar
axis2-adb-1.5.1.jar
@@ -532,25 +570,6 @@
--------------------------------------------------------------------------------
- For
- jquery.js
-
-
- jQuery JavaScript Library v1.6.1
- http://jquery.com/
-
- Copyright 2011, John Resig
- Dual licensed under the MIT or GPL Version 2 licenses.
- http://jquery.org/license
-
- Includes Sizzle.js
- http://sizzlejs.com/
- Copyright 2011, The Dojo Foundation
- Released under the MIT, BSD, and GPL Licenses.
-
- Date: Thu May 12 15:04:36 2011 -0400
-
-
For
rampart-lib
@@ -588,19 +607,6 @@
software copyright (c) 1999.
- For
- jquery.colorhelpers.js
-
-
- Plugin for jQuery for working with colors.
-
- Version 1.1.
-
- Inspiration from jQuery color animation plugin by John Resig.
-
- Released under the MIT license by Ole Laursen, October 2009.
-
-
For
woden-api-1.0M8.jar
woden-impl-dom-1.0M8.jar
diff --git a/agent/src/com/cloud/agent/AgentShell.java b/agent/src/com/cloud/agent/AgentShell.java
index 774f222dfb9..e3d1063e6b8 100644
--- a/agent/src/com/cloud/agent/AgentShell.java
+++ b/agent/src/com/cloud/agent/AgentShell.java
@@ -231,6 +231,7 @@ public class AgentShell implements IAgentShell {
int response;
response = client.executeMethod(method);
if (response != HttpURLConnection.HTTP_OK) {
+ method.releaseConnection();
s_logger.warn("Retrieving from " + url + " gives response code: "
+ response);
throw new CloudRuntimeException("Unable to download from " + url
@@ -253,6 +254,7 @@ public class AgentShell implements IAgentShell {
s_logger.warn("Exception while closing download stream from "
+ url + ", ", e);
}
+ method.releaseConnection();
}
private void loadProperties() throws ConfigurationException {
diff --git a/api/src/com/cloud/agent/api/BackupSnapshotCommand.java b/api/src/com/cloud/agent/api/BackupSnapshotCommand.java
index f6c02337e8d..52d9d389fe4 100644
--- a/api/src/com/cloud/agent/api/BackupSnapshotCommand.java
+++ b/api/src/com/cloud/agent/api/BackupSnapshotCommand.java
@@ -17,6 +17,7 @@
package com.cloud.agent.api;
import com.cloud.agent.api.LogLevel.Log4jLevel;
+import com.cloud.agent.api.to.S3TO;
import com.cloud.agent.api.to.StorageFilerTO;
import com.cloud.agent.api.to.SwiftTO;
import com.cloud.storage.StoragePool;
@@ -32,6 +33,7 @@ public class BackupSnapshotCommand extends SnapshotCommand {
private Long snapshotId;
@LogLevel(Log4jLevel.Off)
private SwiftTO swift;
+ private S3TO s3;
StorageFilerTO pool;
protected BackupSnapshotCommand() {
@@ -48,8 +50,7 @@ public class BackupSnapshotCommand extends SnapshotCommand {
* @param isFirstSnapshotOfRootVolume true if this is the first snapshot of a root volume. Set the parent of the backup to null.
* @param isVolumeInactive True if the volume belongs to a VM that is not running or is detached.
*/
- public BackupSnapshotCommand(String primaryStoragePoolNameLabel,
- String secondaryStoragePoolURL,
+ public BackupSnapshotCommand(String secondaryStoragePoolURL,
Long dcId,
Long accountId,
Long volumeId,
@@ -64,13 +65,12 @@ public class BackupSnapshotCommand extends SnapshotCommand {
String vmName,
int wait)
{
- super(primaryStoragePoolNameLabel, secondaryStoragePoolURL, snapshotUuid, snapshotName, dcId, accountId, volumeId);
+ super(pool, secondaryStoragePoolURL, snapshotUuid, snapshotName, dcId, accountId, volumeId);
this.snapshotId = snapshotId;
this.prevSnapshotUuid = prevSnapshotUuid;
this.prevBackupUuid = prevBackupUuid;
this.isVolumeInactive = isVolumeInactive;
this.vmName = vmName;
- this.pool = new StorageFilerTO(pool);
setVolumePath(volumePath);
setWait(wait);
}
@@ -88,7 +88,7 @@ public class BackupSnapshotCommand extends SnapshotCommand {
}
public String getVmName() {
- return vmName;
+ return vmName;
}
public SwiftTO getSwift() {
@@ -99,6 +99,14 @@ public class BackupSnapshotCommand extends SnapshotCommand {
this.swift = swift;
}
+ public S3TO getS3() {
+ return s3;
+ }
+
+ public void setS3(S3TO s3) {
+ this.s3 = s3;
+ }
+
public Long getSnapshotId() {
return snapshotId;
}
diff --git a/api/src/com/cloud/agent/api/CreatePrivateTemplateFromSnapshotCommand.java b/api/src/com/cloud/agent/api/CreatePrivateTemplateFromSnapshotCommand.java
index 504198c28cf..9e2680e49e6 100644
--- a/api/src/com/cloud/agent/api/CreatePrivateTemplateFromSnapshotCommand.java
+++ b/api/src/com/cloud/agent/api/CreatePrivateTemplateFromSnapshotCommand.java
@@ -16,6 +16,8 @@
// under the License.
package com.cloud.agent.api;
+import com.cloud.storage.StoragePool;
+
/**
* This currently assumes that both primary and secondary storage are mounted on the XenServer.
*/
@@ -40,7 +42,8 @@ public class CreatePrivateTemplateFromSnapshotCommand extends SnapshotCommand {
* It may not be the UUID of the base copy of the snapshot, if no data was written since last snapshot.
* @param origTemplateInstallPath The install path of the original template VHD on the secondary
*/
- public CreatePrivateTemplateFromSnapshotCommand(String primaryStoragePoolNameLabel,
+
+ public CreatePrivateTemplateFromSnapshotCommand(StoragePool pool,
String secondaryStoragePoolURL,
Long dcId,
Long accountId,
@@ -52,7 +55,7 @@ public class CreatePrivateTemplateFromSnapshotCommand extends SnapshotCommand {
String templateName,
int wait)
{
- super(primaryStoragePoolNameLabel, secondaryStoragePoolURL, backedUpSnapshotUuid, backedUpSnapshotName, dcId, accountId, volumeId);
+ super(pool, secondaryStoragePoolURL, backedUpSnapshotUuid, backedUpSnapshotName, dcId, accountId, volumeId);
this.origTemplateInstallPath = origTemplateInstallPath;
this.newTemplateId = newTemplateId;
this.templateName = templateName;
diff --git a/api/src/com/cloud/agent/api/CreatePrivateTemplateFromVolumeCommand.java b/api/src/com/cloud/agent/api/CreatePrivateTemplateFromVolumeCommand.java
index b589ed53077..4e0bf32f1b1 100644
--- a/api/src/com/cloud/agent/api/CreatePrivateTemplateFromVolumeCommand.java
+++ b/api/src/com/cloud/agent/api/CreatePrivateTemplateFromVolumeCommand.java
@@ -16,6 +16,9 @@
// under the License.
package com.cloud.agent.api;
+import com.cloud.agent.api.to.StorageFilerTO;
+import com.cloud.storage.StoragePool;
+
public class CreatePrivateTemplateFromVolumeCommand extends SnapshotCommand {
private String _vmName;
private String _volumePath;
@@ -23,13 +26,14 @@ public class CreatePrivateTemplateFromVolumeCommand extends SnapshotCommand {
private String _uniqueName;
private long _templateId;
private long _accountId;
+ StorageFilerTO _primaryPool;
// For XenServer
private String _secondaryStorageUrl;
public CreatePrivateTemplateFromVolumeCommand() {
}
- public CreatePrivateTemplateFromVolumeCommand(String StoragePoolUUID, String secondaryStorageUrl, long templateId, long accountId, String userSpecifiedName, String uniqueName, String volumePath, String vmName, int wait) {
+ public CreatePrivateTemplateFromVolumeCommand(StoragePool pool, String secondaryStorageUrl, long templateId, long accountId, String userSpecifiedName, String uniqueName, String volumePath, String vmName, int wait) {
_secondaryStorageUrl = secondaryStorageUrl;
_templateId = templateId;
_accountId = accountId;
@@ -37,7 +41,8 @@ public class CreatePrivateTemplateFromVolumeCommand extends SnapshotCommand {
_uniqueName = uniqueName;
_volumePath = volumePath;
_vmName = vmName;
- primaryStoragePoolNameLabel = StoragePoolUUID;
+ primaryStoragePoolNameLabel = pool.getUuid();
+ _primaryPool = new StorageFilerTO(pool);
setWait(wait);
}
@@ -46,6 +51,10 @@ public class CreatePrivateTemplateFromVolumeCommand extends SnapshotCommand {
return false;
}
+ public StorageFilerTO getPool() {
+ return _primaryPool;
+ }
+
public String getSecondaryStorageUrl() {
return _secondaryStorageUrl;
}
diff --git a/api/src/com/cloud/agent/api/CreateVolumeFromSnapshotCommand.java b/api/src/com/cloud/agent/api/CreateVolumeFromSnapshotCommand.java
index 955c81abc97..a19d34436f7 100644
--- a/api/src/com/cloud/agent/api/CreateVolumeFromSnapshotCommand.java
+++ b/api/src/com/cloud/agent/api/CreateVolumeFromSnapshotCommand.java
@@ -16,6 +16,8 @@
// under the License.
package com.cloud.agent.api;
+import com.cloud.storage.StoragePool;
+
/**
* This currently assumes that both primary and secondary storage are mounted on the XenServer.
*/
@@ -39,7 +41,8 @@ public class CreateVolumeFromSnapshotCommand extends SnapshotCommand {
* It may not be the UUID of the base copy of the snapshot, if no data was written since last snapshot.
* @param templatePath The install path of the template VHD on the secondary, if this a root volume
*/
- public CreateVolumeFromSnapshotCommand(String primaryStoragePoolNameLabel,
+
+ public CreateVolumeFromSnapshotCommand(StoragePool pool,
String secondaryStoragePoolURL,
Long dcId,
Long accountId,
@@ -48,7 +51,7 @@ public class CreateVolumeFromSnapshotCommand extends SnapshotCommand {
String backedUpSnapshotName,
int wait)
{
- super(primaryStoragePoolNameLabel, secondaryStoragePoolURL, backedUpSnapshotUuid, backedUpSnapshotName, dcId, accountId, volumeId);
+ super(pool, secondaryStoragePoolURL, backedUpSnapshotUuid, backedUpSnapshotName, dcId, accountId, volumeId);
setWait(wait);
}
}
diff --git a/api/src/com/cloud/agent/api/DeleteSnapshotBackupCommand.java b/api/src/com/cloud/agent/api/DeleteSnapshotBackupCommand.java
index 6ea19458212..6114148954f 100644
--- a/api/src/com/cloud/agent/api/DeleteSnapshotBackupCommand.java
+++ b/api/src/com/cloud/agent/api/DeleteSnapshotBackupCommand.java
@@ -17,6 +17,7 @@
package com.cloud.agent.api;
import com.cloud.agent.api.LogLevel.Log4jLevel;
+import com.cloud.agent.api.to.S3TO;
import com.cloud.agent.api.to.SwiftTO;
/**
@@ -26,6 +27,7 @@ import com.cloud.agent.api.to.SwiftTO;
public class DeleteSnapshotBackupCommand extends SnapshotCommand {
@LogLevel(Log4jLevel.Off)
private SwiftTO swift;
+ private S3TO s3;
private Boolean all;
public SwiftTO getSwift() {
@@ -44,6 +46,10 @@ public class DeleteSnapshotBackupCommand extends SnapshotCommand {
this.swift = swift;
}
+ public S3TO getS3() {
+ return s3;
+ }
+
protected DeleteSnapshotBackupCommand() {
}
@@ -73,6 +79,7 @@ public class DeleteSnapshotBackupCommand extends SnapshotCommand {
* @param childUUID The child VHD file of the backup whose parent is reset to its grandparent.
*/
public DeleteSnapshotBackupCommand(SwiftTO swift,
+ S3TO s3,
String secondaryStoragePoolURL,
Long dcId,
Long accountId,
@@ -81,6 +88,7 @@ public class DeleteSnapshotBackupCommand extends SnapshotCommand {
{
super(null, secondaryStoragePoolURL, backupUUID, null, dcId, accountId, volumeId);
setSwift(swift);
+ this.s3 = s3;
setAll(all);
}
}
diff --git a/api/src/com/cloud/agent/api/DeleteTemplateFromS3Command.java b/api/src/com/cloud/agent/api/DeleteTemplateFromS3Command.java
new file mode 100644
index 00000000000..278669b2c97
--- /dev/null
+++ b/api/src/com/cloud/agent/api/DeleteTemplateFromS3Command.java
@@ -0,0 +1,106 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package com.cloud.agent.api;
+
+import com.cloud.agent.api.to.S3TO;
+
+public class DeleteTemplateFromS3Command extends Command {
+
+ private S3TO s3;
+ private Long templateId;
+ private Long accountId;
+
+ protected DeleteTemplateFromS3Command() {
+ super();
+ }
+
+ public DeleteTemplateFromS3Command(final S3TO s3, final Long accountId,
+ final Long templateId) {
+
+ super();
+
+ this.s3 = s3;
+ this.accountId = accountId;
+ this.templateId = templateId;
+
+ }
+
+ @Override
+ public int hashCode() {
+ final int prime = 31;
+ int result = 1;
+ result = prime * result
+ + ((accountId == null) ? 0 : accountId.hashCode());
+ result = prime * result + ((s3 == null) ? 0 : s3.hashCode());
+ result = prime * result
+ + ((templateId == null) ? 0 : templateId.hashCode());
+ return result;
+ }
+
+ @Override
+ public boolean equals(Object thatObject) {
+
+ if (this == thatObject) {
+ return true;
+ }
+
+ if (thatObject == null) {
+ return false;
+ }
+
+ if (getClass() != thatObject.getClass()) {
+ return false;
+ }
+
+ final DeleteTemplateFromS3Command thatCommand = (DeleteTemplateFromS3Command) thatObject;
+
+ if (!(accountId == thatCommand.accountId)
+ || (this.accountId != null && this.accountId
+ .equals(thatCommand.accountId))) {
+ return false;
+ }
+
+ if (!(templateId == thatCommand.templateId)
+ || (this.templateId != null && this.templateId
+ .equals(thatCommand.templateId))) {
+ return false;
+ }
+
+ return true;
+
+ }
+
+ public S3TO getS3() {
+ return s3;
+ }
+
+ public Long getTemplateId() {
+ return templateId;
+ }
+
+ public Long getAccountId() {
+ return accountId;
+ }
+
+ @Override
+ public boolean executeInSequence() {
+ return true;
+ }
+
+}
diff --git a/api/src/com/cloud/agent/api/DownloadSnapshotFromS3Command.java b/api/src/com/cloud/agent/api/DownloadSnapshotFromS3Command.java
new file mode 100644
index 00000000000..edf683a58be
--- /dev/null
+++ b/api/src/com/cloud/agent/api/DownloadSnapshotFromS3Command.java
@@ -0,0 +1,61 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package com.cloud.agent.api;
+
+import com.cloud.agent.api.to.S3TO;
+
+public class DownloadSnapshotFromS3Command extends SnapshotCommand {
+
+ private S3TO s3;
+ private String parent;
+
+ protected DownloadSnapshotFromS3Command() {
+ super();
+ }
+
+ public DownloadSnapshotFromS3Command(S3TO s3, String parent,
+ String secondaryStorageUrl, Long dcId, Long accountId,
+ Long volumeId, String backupUuid, int wait) {
+
+ super(null, secondaryStorageUrl, backupUuid, "", dcId, accountId,
+ volumeId);
+
+ this.s3 = s3;
+ this.parent = parent;
+ setWait(wait);
+
+ }
+
+ public S3TO getS3() {
+ return s3;
+ }
+
+ public void setS3(S3TO s3) {
+ this.s3 = s3;
+ }
+
+ public String getParent() {
+ return parent;
+ }
+
+ public void setParent(String parent) {
+ this.parent = parent;
+ }
+
+}
diff --git a/api/src/com/cloud/agent/api/DownloadTemplateFromS3ToSecondaryStorageCommand.java b/api/src/com/cloud/agent/api/DownloadTemplateFromS3ToSecondaryStorageCommand.java
new file mode 100644
index 00000000000..af61228c020
--- /dev/null
+++ b/api/src/com/cloud/agent/api/DownloadTemplateFromS3ToSecondaryStorageCommand.java
@@ -0,0 +1,66 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package com.cloud.agent.api;
+
+import com.cloud.agent.api.to.S3TO;
+
+public final class DownloadTemplateFromS3ToSecondaryStorageCommand extends Command {
+
+ private final S3TO s3;
+ private final Long accountId;
+ private final Long templateId;
+ private final String storagePath;
+
+ public DownloadTemplateFromS3ToSecondaryStorageCommand(final S3TO s3,
+ final Long accountId, final Long templateId,
+ final String storagePath, final int wait) {
+
+ super();
+
+ this.s3 = s3;
+ this.accountId = accountId;
+ this.templateId = templateId;
+ this.storagePath = storagePath;
+
+ setWait(wait);
+
+ }
+
+ public S3TO getS3() {
+ return this.s3;
+ }
+
+ public Long getAccountId() {
+ return this.accountId;
+ }
+
+ public Long getTemplateId() {
+ return this.templateId;
+ }
+
+ public String getStoragePath() {
+ return this.storagePath;
+ }
+
+ @Override
+ public boolean executeInSequence() {
+ return true;
+ }
+
+}
diff --git a/api/src/com/cloud/agent/api/SnapshotCommand.java b/api/src/com/cloud/agent/api/SnapshotCommand.java
index dceb461e3b6..d8abeb62371 100644
--- a/api/src/com/cloud/agent/api/SnapshotCommand.java
+++ b/api/src/com/cloud/agent/api/SnapshotCommand.java
@@ -16,12 +16,16 @@
// under the License.
package com.cloud.agent.api;
+import com.cloud.agent.api.to.StorageFilerTO;
+import com.cloud.storage.StoragePool;
+
/**
* This currently assumes that both primary and secondary storage are mounted on
* the XenServer.
*/
public class SnapshotCommand extends Command {
protected String primaryStoragePoolNameLabel;
+ StorageFilerTO primaryPool;
private String snapshotUuid;
private String snapshotName;
private String secondaryStorageUrl;
@@ -46,10 +50,11 @@ public class SnapshotCommand extends Command {
* is the value of that field If you have better ideas on how to
* get it, you are welcome.
*/
- public SnapshotCommand(String primaryStoragePoolNameLabel,
+ public SnapshotCommand(StoragePool pool,
String secondaryStorageUrl, String snapshotUuid,
String snapshotName, Long dcId, Long accountId, Long volumeId) {
- this.primaryStoragePoolNameLabel = primaryStoragePoolNameLabel;
+ this.primaryStoragePoolNameLabel = pool.getUuid();
+ this.primaryPool = new StorageFilerTO(pool);
this.snapshotUuid = snapshotUuid;
this.secondaryStorageUrl = secondaryStorageUrl;
this.dcId = dcId;
@@ -65,6 +70,13 @@ public class SnapshotCommand extends Command {
return primaryStoragePoolNameLabel;
}
+ /**
+ * @return the primaryPool
+ */
+ public StorageFilerTO getPool() {
+ return primaryPool;
+ }
+
/**
* @return the snapshotUuid
*/
diff --git a/api/src/com/cloud/agent/api/UpgradeSnapshotCommand.java b/api/src/com/cloud/agent/api/UpgradeSnapshotCommand.java
index 1b3ff745985..f00f4902970 100644
--- a/api/src/com/cloud/agent/api/UpgradeSnapshotCommand.java
+++ b/api/src/com/cloud/agent/api/UpgradeSnapshotCommand.java
@@ -15,6 +15,8 @@
// specific language governing permissions and limitations
// under the License.
package com.cloud.agent.api;
+import com.cloud.storage.StoragePool;
+
public class UpgradeSnapshotCommand extends SnapshotCommand {
private String version;
private Long templateId;
@@ -30,7 +32,7 @@ public class UpgradeSnapshotCommand extends SnapshotCommand {
* @param snapshotUuid The UUID of the snapshot which is going to be upgraded
* @param _version version for this snapshot
*/
- public UpgradeSnapshotCommand(String primaryStoragePoolNameLabel,
+ public UpgradeSnapshotCommand(StoragePool pool,
String secondaryStoragePoolURL,
Long dcId,
Long accountId,
@@ -42,7 +44,7 @@ public class UpgradeSnapshotCommand extends SnapshotCommand {
String snapshotName,
String version)
{
- super(primaryStoragePoolNameLabel, secondaryStoragePoolURL, snapshotUuid, snapshotName, dcId, accountId, volumeId);
+ super(pool, secondaryStoragePoolURL, snapshotUuid, snapshotName, dcId, accountId, volumeId);
this.version = version;
this.templateId = templateId;
this.tmpltAccountId = tmpltAccountId;
diff --git a/api/src/com/cloud/agent/api/UploadTemplateToS3FromSecondaryStorageCommand.java b/api/src/com/cloud/agent/api/UploadTemplateToS3FromSecondaryStorageCommand.java
new file mode 100644
index 00000000000..1807cd56315
--- /dev/null
+++ b/api/src/com/cloud/agent/api/UploadTemplateToS3FromSecondaryStorageCommand.java
@@ -0,0 +1,121 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package com.cloud.agent.api;
+
+import com.cloud.agent.api.to.S3TO;
+
+public class UploadTemplateToS3FromSecondaryStorageCommand extends Command {
+
+ private final S3TO s3;
+ private final String storagePath;
+ private final Long dataCenterId;
+ private final Long accountId;
+ private final Long templateId;
+
+ public UploadTemplateToS3FromSecondaryStorageCommand(final S3TO s3,
+ final String storagePath, final Long dataCenterId, final Long accountId,
+ final Long templateId) {
+
+ super();
+
+ this.s3 = s3;
+ this.storagePath = storagePath;
+ this.dataCenterId = dataCenterId;
+ this.accountId = accountId;
+ this.templateId = templateId;
+
+ }
+
+ @Override
+ public boolean executeInSequence() {
+ return false;
+ }
+
+ @Override
+ public boolean equals(final Object thatObject) {
+
+ if (this == thatObject) {
+ return true;
+ }
+
+ if (thatObject == null || getClass() != thatObject.getClass()) {
+ return false;
+ }
+
+ final UploadTemplateToS3FromSecondaryStorageCommand thatCommand =
+ (UploadTemplateToS3FromSecondaryStorageCommand) thatObject;
+
+ if (this.accountId != null ? !this.accountId.equals(thatCommand
+ .accountId) : thatCommand.accountId != null) {
+ return false;
+ }
+
+ if (this.dataCenterId != null ? !this.dataCenterId.equals(thatCommand
+ .dataCenterId) : thatCommand.dataCenterId != null) {
+ return false;
+ }
+
+ if (this.s3 != null ? !this.s3.equals(thatCommand.s3) : thatCommand.s3 != null) {
+ return false;
+ }
+
+ if (this.storagePath != null ? !this.storagePath.equals(thatCommand
+ .storagePath) : thatCommand.storagePath != null) {
+ return false;
+ }
+
+ if (this.templateId != null ? !this.templateId.equals(thatCommand.templateId) :
+ thatCommand.templateId != null) {
+ return false;
+ }
+
+ return true;
+ }
+
+ @Override
+ public int hashCode() {
+ int result = this.s3 != null ? this.s3.hashCode() : 0;
+ result = 31 * result + (this.storagePath != null ? this.storagePath.hashCode() : 0);
+ result = 31 * result + (this.dataCenterId != null ? this.dataCenterId.hashCode() : 0);
+ result = 31 * result + (this.accountId != null ? this.accountId.hashCode() : 0);
+ result = 31 * result + (this.templateId != null ? this.templateId.hashCode() : 0);
+ return result;
+ }
+
+ public S3TO getS3() {
+ return this.s3;
+ }
+
+ public String getStoragePath() {
+ return this.storagePath;
+ }
+
+ public Long getDataCenterId() {
+ return this.dataCenterId;
+ }
+
+ public Long getAccountId() {
+ return this.accountId;
+ }
+
+ public Long getTemplateId() {
+ return this.templateId;
+ }
+
+}
diff --git a/api/src/com/cloud/agent/api/downloadSnapshotFromSwiftCommand.java b/api/src/com/cloud/agent/api/downloadSnapshotFromSwiftCommand.java
index 0937dada16e..a2ae611d316 100644
--- a/api/src/com/cloud/agent/api/downloadSnapshotFromSwiftCommand.java
+++ b/api/src/com/cloud/agent/api/downloadSnapshotFromSwiftCommand.java
@@ -34,7 +34,7 @@ public class downloadSnapshotFromSwiftCommand extends SnapshotCommand {
public downloadSnapshotFromSwiftCommand(SwiftTO swift, String secondaryStorageUrl, Long dcId, Long accountId, Long volumeId, String parent, String BackupUuid, int wait) {
- super("", secondaryStorageUrl, BackupUuid, "", dcId, accountId, volumeId);
+ super(null, secondaryStorageUrl, BackupUuid, "", dcId, accountId, volumeId);
setParent(parent);
setSwift(swift);
setWait(wait);
diff --git a/api/src/com/cloud/agent/api/storage/PrimaryStorageDownloadCommand.java b/api/src/com/cloud/agent/api/storage/PrimaryStorageDownloadCommand.java
index 565b50dd27a..b450041597f 100644
--- a/api/src/com/cloud/agent/api/storage/PrimaryStorageDownloadCommand.java
+++ b/api/src/com/cloud/agent/api/storage/PrimaryStorageDownloadCommand.java
@@ -17,7 +17,8 @@
package com.cloud.agent.api.storage;
import com.cloud.storage.Storage.ImageFormat;
-
+import com.cloud.agent.api.to.StorageFilerTO;
+import com.cloud.storage.StoragePool;
/**
*
@@ -27,16 +28,19 @@ public class PrimaryStorageDownloadCommand extends AbstractDownloadCommand {
String poolUuid;
long poolId;
+ StorageFilerTO primaryPool;
+
String secondaryStorageUrl;
String primaryStorageUrl;
protected PrimaryStorageDownloadCommand() {
}
- public PrimaryStorageDownloadCommand(String name, String url, ImageFormat format, long accountId, long poolId, String poolUuid, int wait) {
+ public PrimaryStorageDownloadCommand(String name, String url, ImageFormat format, long accountId, StoragePool pool, int wait) {
super(name, url, format, accountId);
- this.poolId = poolId;
- this.poolUuid = poolUuid;
+ this.poolId = pool.getId();
+ this.poolUuid = pool.getUuid();
+ this.primaryPool = new StorageFilerTO(pool);
setWait(wait);
}
@@ -48,6 +52,10 @@ public class PrimaryStorageDownloadCommand extends AbstractDownloadCommand {
return poolId;
}
+ public StorageFilerTO getPool() {
+ return primaryPool;
+ }
+
public void setLocalPath(String path) {
this.localPath = path;
}
diff --git a/api/src/com/cloud/agent/api/to/PortForwardingRuleTO.java b/api/src/com/cloud/agent/api/to/PortForwardingRuleTO.java
index 9ef8d0a6fcb..c23dce8ea86 100644
--- a/api/src/com/cloud/agent/api/to/PortForwardingRuleTO.java
+++ b/api/src/com/cloud/agent/api/to/PortForwardingRuleTO.java
@@ -39,8 +39,8 @@ public class PortForwardingRuleTO extends FirewallRuleTO {
this.dstPortRange = new int[] { rule.getDestinationPortStart(), rule.getDestinationPortEnd() };
}
- protected PortForwardingRuleTO(long id, String srcIp, int srcPortStart, int srcPortEnd, String dstIp, int dstPortStart, int dstPortEnd, String protocol, boolean revoked, boolean brandNew) {
- super(id, srcIp,null, protocol, srcPortStart, srcPortEnd, revoked, brandNew, FirewallRule.Purpose.PortForwarding, null,0,0);
+ public PortForwardingRuleTO(long id, String srcIp, int srcPortStart, int srcPortEnd, String dstIp, int dstPortStart, int dstPortEnd, String protocol, boolean revoked, boolean alreadyAdded) {
+ super(id, null, srcIp, protocol, srcPortStart, srcPortEnd, revoked, alreadyAdded, FirewallRule.Purpose.PortForwarding, null,0,0);
this.dstIp = dstIp;
this.dstPortRange = new int[] { dstPortStart, dstPortEnd };
}
diff --git a/api/src/com/cloud/agent/api/to/S3TO.java b/api/src/com/cloud/agent/api/to/S3TO.java
new file mode 100644
index 00000000000..879df229c31
--- /dev/null
+++ b/api/src/com/cloud/agent/api/to/S3TO.java
@@ -0,0 +1,252 @@
+// Licensed to the Apache Software Foundation (ASF) under one
+// or more contributor license agreements. See the NOTICE file
+// distributed with this work for additional information
+// regarding copyright ownership. The ASF licenses this file
+// to you under the Apache License, Version 2.0 (the
+// "License"); you may not use this file except in compliance
+// with the License. You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing,
+// software distributed under the License is distributed on an
+// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+// KIND, either express or implied. See the License for the
+// specific language governing permissions and limitations
+// under the License.
+package com.cloud.agent.api.to;
+
+import com.cloud.utils.S3Utils;
+
+import java.util.Date;
+
+public final class S3TO implements S3Utils.ClientOptions {
+
+ private Long id;
+ private String uuid;
+ private String accessKey;
+ private String secretKey;
+ private String endPoint;
+ private String bucketName;
+ private Boolean httpsFlag;
+ private Integer connectionTimeout;
+ private Integer maxErrorRetry;
+ private Integer socketTimeout;
+ private Date created;
+
+ public S3TO() {
+
+ super();
+
+ }
+
+ public S3TO(final Long id, final String uuid, final String accessKey,
+ final String secretKey, final String endPoint,
+ final String bucketName, final Boolean httpsFlag,
+ final Integer connectionTimeout, final Integer maxErrorRetry,
+ final Integer socketTimeout, final Date created) {
+
+ super();
+
+ this.id = id;
+ this.uuid = uuid;
+ this.accessKey = accessKey;
+ this.secretKey = secretKey;
+ this.endPoint = endPoint;
+ this.bucketName = bucketName;
+ this.httpsFlag = httpsFlag;
+ this.connectionTimeout = connectionTimeout;
+ this.maxErrorRetry = maxErrorRetry;
+ this.socketTimeout = socketTimeout;
+ this.created = created;
+
+ }
+
+ @Override
+ public boolean equals(final Object thatObject) {
+
+ if (this == thatObject)
+ return true;
+ if (thatObject == null || getClass() != thatObject.getClass())
+ return false;
+
+ final S3TO thatS3TO = (S3TO) thatObject;
+
+ if (httpsFlag != null ? !httpsFlag.equals(thatS3TO.httpsFlag)
+ : thatS3TO.httpsFlag != null) {
+ return false;
+ }
+
+ if (accessKey != null ? !accessKey.equals(thatS3TO.accessKey)
+ : thatS3TO.accessKey != null) {
+ return false;
+ }
+
+ if (connectionTimeout != null ? !connectionTimeout
+ .equals(thatS3TO.connectionTimeout)
+ : thatS3TO.connectionTimeout != null) {
+ return false;
+ }
+
+ if (endPoint != null ? !endPoint.equals(thatS3TO.endPoint)
+ : thatS3TO.endPoint != null) {
+ return false;
+ }
+
+ if (id != null ? !id.equals(thatS3TO.id) : thatS3TO.id != null) {
+ return false;
+ }
+
+ if (uuid != null ? !uuid.equals(thatS3TO.uuid) : thatS3TO.uuid != null) {
+ return false;
+ }
+
+ if (maxErrorRetry != null ? !maxErrorRetry
+ .equals(thatS3TO.maxErrorRetry)
+ : thatS3TO.maxErrorRetry != null) {
+ return false;
+ }
+
+ if (secretKey != null ? !secretKey.equals(thatS3TO.secretKey)
+ : thatS3TO.secretKey != null) {
+ return false;
+ }
+
+ if (socketTimeout != null ? !socketTimeout
+ .equals(thatS3TO.socketTimeout)
+ : thatS3TO.socketTimeout != null) {
+ return false;
+ }
+
+ if (bucketName != null ? !bucketName.equals(thatS3TO.bucketName)
+ : thatS3TO.bucketName != null) {
+ return false;
+ }
+
+ if (created != null ? !created.equals(thatS3TO.created)
+ : thatS3TO.created != null) {
+ return false;
+ }
+
+ return true;
+
+ }
+
+ @Override
+ public int hashCode() {
+
+ int result = id != null ? id.hashCode() : 0;
+
+ result = 31 * result + (accessKey != null ? accessKey.hashCode() : 0);
+ result = 31 * result + (secretKey != null ? secretKey.hashCode() : 0);
+ result = 31 * result + (endPoint != null ? endPoint.hashCode() : 0);
+ result = 31 * result + (bucketName != null ? bucketName.hashCode() : 0);
+ result = 31 * result + (httpsFlag ? 1 : 0);
+ result = 31
+ * result
+ + (connectionTimeout != null ? connectionTimeout.hashCode() : 0);
+ result = 31 * result
+ + (maxErrorRetry != null ? maxErrorRetry.hashCode() : 0);
+ result = 31 * result
+ + (socketTimeout != null ? socketTimeout.hashCode() : 0);
+
+ return result;
+
+ }
+
+ public Long getId() {
+ return this.id;
+ }
+
+ public void setId(final Long id) {
+ this.id = id;
+ }
+
+ public String getUuid() {
+ return this.uuid;
+ }
+
+ public void setUuid(final String uuid) {
+ this.uuid = uuid;
+ }
+
+ @Override
+ public String getAccessKey() {
+ return this.accessKey;
+ }
+
+ public void setAccessKey(final String accessKey) {
+ this.accessKey = accessKey;
+ }
+
+ @Override
+ public String getSecretKey() {
+ return this.secretKey;
+ }
+
+ public void setSecretKey(final String secretKey) {
+ this.secretKey = secretKey;
+ }
+
+ @Override
+ public String getEndPoint() {
+ return this.endPoint;
+ }
+
+ public void setEndPoint(final String endPoint) {
+ this.endPoint = endPoint;
+ }
+
+ public String getBucketName() {
+ return this.bucketName;
+ }
+
+ public void setBucketName(final String bucketName) {
+ this.bucketName = bucketName;
+ }
+
+ @Override
+ public Boolean isHttps() {
+ return this.httpsFlag;
+ }
+
+ public void setHttps(final Boolean httpsFlag) {
+ this.httpsFlag = httpsFlag;
+ }
+
+ @Override
+ public Integer getConnectionTimeout() {
+ return connectionTimeout;
+ }
+
+ public void setConnectionTimeout(final Integer connectionTimeout) {
+ this.connectionTimeout = connectionTimeout;
+ }
+
+ @Override
+ public Integer getMaxErrorRetry() {
+ return maxErrorRetry;
+ }
+
+ public void setMaxErrorRetry(final Integer maxErrorRetry) {
+ this.maxErrorRetry = maxErrorRetry;
+ }
+
+ @Override
+ public Integer getSocketTimeout() {
+ return socketTimeout;
+ }
+
+ public void setSocketTimeout(final Integer socketTimeout) {
+ this.socketTimeout = socketTimeout;
+ }
+
+ public Date getCreated() {
+ return this.created;
+ }
+
+ public void setCreated(final Date created) {
+ this.created = created;
+ }
+
+}
diff --git a/api/src/com/cloud/api/commands/AddS3Cmd.java b/api/src/com/cloud/api/commands/AddS3Cmd.java
new file mode 100644
index 00000000000..8ef6c98e51b
--- /dev/null
+++ b/api/src/com/cloud/api/commands/AddS3Cmd.java
@@ -0,0 +1,218 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package com.cloud.api.commands;
+
+import static org.apache.cloudstack.api.ApiConstants.S3_ACCESS_KEY;
+import static org.apache.cloudstack.api.ApiConstants.S3_CONNECTION_TIMEOUT;
+import static org.apache.cloudstack.api.ApiConstants.S3_END_POINT;
+import static org.apache.cloudstack.api.ApiConstants.S3_HTTPS_FLAG;
+import static org.apache.cloudstack.api.ApiConstants.S3_MAX_ERROR_RETRY;
+import static org.apache.cloudstack.api.ApiConstants.S3_SECRET_KEY;
+import static org.apache.cloudstack.api.ApiConstants.S3_SOCKET_TIMEOUT;
+import static org.apache.cloudstack.api.ApiConstants.S3_BUCKET_NAME;
+import static org.apache.cloudstack.api.BaseCmd.CommandType.INTEGER;
+import static org.apache.cloudstack.api.BaseCmd.CommandType.STRING;
+import static org.apache.cloudstack.api.BaseCmd.CommandType.BOOLEAN;
+import static com.cloud.user.Account.ACCOUNT_ID_SYSTEM;
+
+import org.apache.cloudstack.api.BaseCmd;
+import org.apache.cloudstack.api.Implementation;
+import org.apache.cloudstack.api.Parameter;
+import org.apache.cloudstack.api.ServerApiException;
+import com.cloud.api.response.S3Response;
+import com.cloud.exception.ConcurrentOperationException;
+import com.cloud.exception.DiscoveryException;
+import com.cloud.exception.InsufficientCapacityException;
+import com.cloud.exception.NetworkRuleConflictException;
+import com.cloud.exception.ResourceAllocationException;
+import com.cloud.exception.ResourceUnavailableException;
+import com.cloud.storage.S3;
+
+@Implementation(description = "Adds S3", responseObject = S3Response.class, since = "4.0.0")
+public final class AddS3Cmd extends BaseCmd {
+
+ private static String COMMAND_NAME = "adds3response";
+
+ @Parameter(name = S3_ACCESS_KEY, type = STRING, required = true,
+ description = "S3 access key")
+ private String accessKey;
+
+ @Parameter(name = S3_SECRET_KEY, type = STRING, required = true,
+ description = "S3 secret key")
+ private String secretKey;
+
+ @Parameter(name = S3_END_POINT, type = STRING, required = false,
+ description = "S3 host name")
+ private String endPoint = null;
+
+ @Parameter(name = S3_BUCKET_NAME, type = STRING, required = true,
+ description = "name of the template storage bucket")
+ private String bucketName;
+
+ @Parameter(name = S3_HTTPS_FLAG, type = BOOLEAN, required = false,
+ description = "connect to the S3 endpoint via HTTPS?")
+ private Boolean httpsFlag = null;
+
+ @Parameter(name = S3_CONNECTION_TIMEOUT, type = INTEGER, required = false,
+ description = "connection timeout (milliseconds)")
+ private Integer connectionTimeout = null;
+
+ @Parameter(name = S3_MAX_ERROR_RETRY, type = INTEGER, required = false,
+ description = "maximum number of times to retry on error")
+ private Integer maxErrorRetry = null;
+
+ @Parameter(name = S3_SOCKET_TIMEOUT, type = INTEGER, required = false,
+ description = "socket timeout (milliseconds)")
+ private Integer socketTimeout = null;
+
+ @Override
+ public void execute() throws ResourceUnavailableException, InsufficientCapacityException,
+ ServerApiException, ConcurrentOperationException, ResourceAllocationException,
+ NetworkRuleConflictException {
+
+ final S3 result;
+
+ try {
+
+ result = _resourceService.discoverS3(this);
+
+ if (result == null) {
+ throw new ServerApiException(INTERNAL_ERROR, "Failed to add S3.");
+ }
+
+ } catch (DiscoveryException e) {
+
+ throw new ServerApiException(INTERNAL_ERROR, "Failed to add S3 due to " + e.getMessage());
+
+ }
+
+ final S3Response response = _responseGenerator.createS3Response(result);
+ response.setResponseName(this.getCommandName());
+ this.setResponseObject(response);
+
+ }
+
+ @Override
+ public boolean equals(final Object thatObject) {
+
+ if (this == thatObject) {
+ return true;
+ }
+
+ if (thatObject == null || this.getClass() != thatObject.getClass()) {
+ return false;
+ }
+
+ final AddS3Cmd thatAddS3Cmd = (AddS3Cmd) thatObject;
+
+ if (this.httpsFlag != null ? !this.httpsFlag.equals(thatAddS3Cmd.httpsFlag) : thatAddS3Cmd.httpsFlag != null) {
+ return false;
+ }
+
+ if (this.accessKey != null ? !this.accessKey.equals(thatAddS3Cmd.accessKey) : thatAddS3Cmd.accessKey != null) {
+ return false;
+ }
+
+ if (this.connectionTimeout != null ? !this.connectionTimeout.equals(thatAddS3Cmd.connectionTimeout) : thatAddS3Cmd.connectionTimeout != null) {
+ return false;
+ }
+
+ if (this.endPoint != null ? !this.endPoint.equals(thatAddS3Cmd.endPoint) : thatAddS3Cmd.endPoint != null) {
+ return false;
+ }
+
+ if (this.maxErrorRetry != null ? !this.maxErrorRetry.equals(thatAddS3Cmd.maxErrorRetry) : thatAddS3Cmd.maxErrorRetry != null) {
+ return false;
+ }
+
+ if (this.secretKey != null ? !this.secretKey.equals(thatAddS3Cmd.secretKey) : thatAddS3Cmd.secretKey != null) {
+ return false;
+ }
+
+ if (this.socketTimeout != null ? !this.socketTimeout.equals(thatAddS3Cmd.socketTimeout) : thatAddS3Cmd.socketTimeout != null) {
+ return false;
+ }
+
+ if (this.bucketName != null ? !this.bucketName.equals(thatAddS3Cmd.bucketName) : thatAddS3Cmd.bucketName != null) {
+ return false;
+ }
+
+ return true;
+
+ }
+
+ @Override
+ public int hashCode() {
+
+ int result = this.accessKey != null ? this.accessKey.hashCode() : 0;
+ result = 31 * result + (this.secretKey != null ? this.secretKey.hashCode() : 0);
+ result = 31 * result + (this.endPoint != null ? this.endPoint.hashCode() : 0);
+ result = 31 * result + (this.bucketName != null ? this.bucketName.hashCode() : 0);
+ result = 31 * result + (this.httpsFlag != null && this.httpsFlag == true ? 1 : 0);
+ result = 31 * result + (this.connectionTimeout != null ? this.connectionTimeout.hashCode() : 0);
+ result = 31 * result + (this.maxErrorRetry != null ? this.maxErrorRetry.hashCode() : 0);
+ result = 31 * result + (this.socketTimeout != null ? this.socketTimeout.hashCode() : 0);
+
+ return result;
+
+ }
+
+ @Override
+ public String getCommandName() {
+ return COMMAND_NAME;
+ }
+
+ @Override
+ public long getEntityOwnerId() {
+ return ACCOUNT_ID_SYSTEM;
+ }
+
+ public String getAccessKey() {
+ return this.accessKey;
+ }
+
+ public String getSecretKey() {
+ return this.secretKey;
+ }
+
+ public String getEndPoint() {
+ return this.endPoint;
+ }
+
+ public String getBucketName() {
+ return this.bucketName;
+ }
+
+ public Boolean getHttpsFlag() {
+ return this.httpsFlag;
+ }
+
+ public Integer getConnectionTimeout() {
+ return this.connectionTimeout;
+ }
+
+ public Integer getMaxErrorRetry() {
+ return this.maxErrorRetry;
+ }
+
+ public Integer getSocketTimeout() {
+ return this.socketTimeout;
+ }
+
+}
diff --git a/api/src/com/cloud/api/commands/ListS3sCmd.java b/api/src/com/cloud/api/commands/ListS3sCmd.java
new file mode 100644
index 00000000000..86c8c539d9a
--- /dev/null
+++ b/api/src/com/cloud/api/commands/ListS3sCmd.java
@@ -0,0 +1,112 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package com.cloud.api.commands;
+
+import static org.apache.cloudstack.api.ApiConstants.ID;
+import static org.apache.cloudstack.api.BaseCmd.CommandType.LONG;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import org.apache.cloudstack.api.BaseListCmd;
+import org.apache.cloudstack.api.Implementation;
+import org.apache.cloudstack.api.Parameter;
+import org.apache.cloudstack.api.ServerApiException;
+import org.apache.cloudstack.api.response.ListResponse;
+import com.cloud.api.response.S3Response;
+import com.cloud.exception.ConcurrentOperationException;
+import com.cloud.exception.InsufficientCapacityException;
+import com.cloud.exception.NetworkRuleConflictException;
+import com.cloud.exception.ResourceAllocationException;
+import com.cloud.exception.ResourceUnavailableException;
+import com.cloud.storage.S3;
+
+@Implementation(description = "Lists S3s", responseObject = S3Response.class, since = "4.0.0")
+public final class ListS3sCmd extends BaseListCmd {
+
+ private static final String COMMAND_NAME = "lists3sresponse";
+
+ @Parameter(name = ID, type = LONG, required = true, description = "The ID of the S3")
+ private Long id;
+
+ @Override
+ public void execute() throws ResourceUnavailableException, InsufficientCapacityException,
+ ServerApiException, ConcurrentOperationException, ResourceAllocationException,
+ NetworkRuleConflictException {
+
+ final List extends S3> result = _resourceService.listS3s(this);
+ final ListResponse response = new ListResponse();
+ final List s3Responses = new ArrayList();
+
+ if (result != null) {
+
+ for (S3 s3 : result) {
+
+ S3Response s3Response = _responseGenerator.createS3Response(s3);
+ s3Response.setResponseName(this.getCommandName());
+ s3Response.setObjectName("s3");
+ s3Responses.add(s3Response);
+
+ }
+
+ }
+
+ response.setResponses(s3Responses);
+ response.setResponseName(this.getCommandName());
+
+ this.setResponseObject(response);
+
+ }
+
+ @Override
+ public boolean equals(final Object thatObject) {
+
+ if (this == thatObject) {
+ return true;
+ }
+
+ if (thatObject == null || getClass() != thatObject.getClass()) {
+ return false;
+ }
+
+ final ListS3sCmd thatListS3sCmd = (ListS3sCmd) thatObject;
+
+ if (this.id != null ? !this.id.equals(thatListS3sCmd.id) : thatListS3sCmd.id != null) {
+ return false;
+ }
+
+ return true;
+
+ }
+
+ @Override
+ public int hashCode() {
+ return this.id != null ? this.id.hashCode() : 0;
+ }
+
+ @Override
+ public String getCommandName() {
+ return COMMAND_NAME;
+ }
+
+ public Long getId() {
+ return this.id;
+ }
+
+}
diff --git a/api/src/com/cloud/api/response/S3Response.java b/api/src/com/cloud/api/response/S3Response.java
new file mode 100644
index 00000000000..0d2cf7e4ea7
--- /dev/null
+++ b/api/src/com/cloud/api/response/S3Response.java
@@ -0,0 +1,210 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package com.cloud.api.response;
+
+import com.cloud.serializer.Param;
+import com.cloud.utils.IdentityProxy;
+import com.google.gson.annotations.SerializedName;
+import org.apache.cloudstack.api.BaseResponse;
+
+import static org.apache.cloudstack.api.ApiConstants.*;
+
+public class S3Response extends BaseResponse {
+
+ @SerializedName(ID)
+ @Param(description = "The ID of the S3 configuration")
+ private IdentityProxy id = new IdentityProxy("s3");
+
+ @SerializedName(S3_ACCESS_KEY)
+ @Param(description = "The S3 access key")
+ private String accessKey;
+
+ @SerializedName(S3_SECRET_KEY)
+ @Param(description = "The S3 secret key")
+ private String secretKey;
+
+ @SerializedName(S3_END_POINT)
+ @Param(description = "The S3 end point")
+ private String endPoint;
+
+ @SerializedName(S3_BUCKET_NAME)
+ @Param(description = "The name of the template storage bucket")
+ private String bucketName;
+
+ @SerializedName(S3_HTTPS_FLAG)
+ @Param(description = "Connect to S3 using HTTPS?")
+ private Integer httpsFlag;
+
+ @SerializedName(S3_CONNECTION_TIMEOUT)
+ @Param(description = "The connection timeout (milliseconds)")
+ private Integer connectionTimeout;
+
+ @SerializedName(S3_MAX_ERROR_RETRY)
+ @Param(description = "The maximum number of time to retry a connection on error.")
+ private Integer maxErrorRetry;
+
+ @SerializedName(S3_SOCKET_TIMEOUT)
+ @Param(description = "The connection socket (milliseconds)")
+ private Integer socketTimeout;
+
+ @Override
+ public boolean equals(final Object thatObject) {
+
+ if (this == thatObject) {
+ return true;
+ }
+
+ if (thatObject == null || this.getClass() != thatObject.getClass()) {
+ return false;
+ }
+
+ final S3Response thatS3Response = (S3Response) thatObject;
+
+ if (this.httpsFlag != null ? !this.httpsFlag.equals(thatS3Response.httpsFlag) : thatS3Response.httpsFlag != null) {
+ return false;
+ }
+
+ if (this.accessKey != null ? !this.accessKey.equals(thatS3Response.accessKey) : thatS3Response.accessKey != null) {
+ return false;
+ }
+
+ if (this.connectionTimeout != null ? !this.connectionTimeout.equals(thatS3Response.connectionTimeout) : thatS3Response.connectionTimeout != null) {
+ return false;
+ }
+
+ if (this.endPoint != null ? !this.endPoint.equals(thatS3Response.endPoint) : thatS3Response.endPoint != null) {
+ return false;
+ }
+
+ if (this.id != null ? !this.id.equals(thatS3Response.id) : thatS3Response.id != null) {
+ return false;
+ }
+
+ if (this.maxErrorRetry != null ? !this.maxErrorRetry.equals(thatS3Response.maxErrorRetry) : thatS3Response.maxErrorRetry != null) {
+ return false;
+ }
+
+ if (this.secretKey != null ? !this.secretKey.equals(thatS3Response.secretKey) : thatS3Response.secretKey != null) {
+ return false;
+ }
+
+ if (this.socketTimeout != null ? !this.socketTimeout.equals(thatS3Response.socketTimeout) : thatS3Response.socketTimeout != null) {
+ return false;
+ }
+
+ if (this.bucketName != null ? !this.bucketName.equals(thatS3Response.bucketName) : thatS3Response.bucketName != null) {
+ return false;
+ }
+
+ return true;
+
+ }
+
+ @Override
+ public int hashCode() {
+
+ int result = this.id != null ? this.id.hashCode() : 0;
+ result = 31 * result + (this.accessKey != null ? this.accessKey.hashCode() : 0);
+ result = 31 * result + (this.secretKey != null ? this.secretKey.hashCode() : 0);
+ result = 31 * result + (this.endPoint != null ? this.endPoint.hashCode() : 0);
+ result = 31 * result + (this.bucketName != null ? this.bucketName.hashCode() : 0);
+ result = 31 * result + (this.httpsFlag != null ? this.httpsFlag : 0);
+ result = 31 * result + (this.connectionTimeout != null ? this.connectionTimeout.hashCode() : 0);
+ result = 31 * result + (this.maxErrorRetry != null ? this.maxErrorRetry.hashCode() : 0);
+ result = 31 * result + (this.socketTimeout != null ? this.socketTimeout.hashCode() : 0);
+
+ return result;
+
+ }
+
+ @Override
+ public String getObjectId() {
+ return this.id.getValue().toString();
+ }
+
+ public void setObjectId(Long id) {
+ this.id.setValue(id);
+ }
+
+ public String getAccessKey() {
+ return this.accessKey;
+ }
+
+ public void setAccessKey(final String accessKey) {
+ this.accessKey = accessKey;
+ }
+
+ public String getSecretKey() {
+ return this.secretKey;
+ }
+
+ public void setSecretKey(final String secretKey) {
+ this.secretKey = secretKey;
+ }
+
+ public String getEndPoint() {
+ return this.endPoint;
+ }
+
+ public void setEndPoint(final String endPoint) {
+ this.endPoint = endPoint;
+ }
+
+
+ public String getTemplateBucketName() {
+ return this.bucketName;
+ }
+
+ public void setTemplateBucketName(final String templateBucketName) {
+ this.bucketName = templateBucketName;
+ }
+
+ public Integer getHttpsFlag() {
+ return this.httpsFlag;
+ }
+
+ public void setHttpsFlag(final Integer httpsFlag) {
+ this.httpsFlag = httpsFlag;
+ }
+
+ public Integer getConnectionTimeout() {
+ return this.connectionTimeout;
+ }
+
+ public void setConnectionTimeout(final Integer connectionTimeout) {
+ this.connectionTimeout = connectionTimeout;
+ }
+
+ public Integer getMaxErrorRetry() {
+ return this.maxErrorRetry;
+ }
+
+ public void setMaxErrorRetry(final Integer maxErrorRetry) {
+ this.maxErrorRetry = maxErrorRetry;
+ }
+
+ public Integer getSocketTimeout() {
+ return this.socketTimeout;
+ }
+
+ public void setSocketTimeout(final Integer socketTimeout) {
+ this.socketTimeout = socketTimeout;
+ }
+
+}
diff --git a/api/src/com/cloud/network/Network.java b/api/src/com/cloud/network/Network.java
index 2a0c930905f..f91dd6615ef 100644
--- a/api/src/com/cloud/network/Network.java
+++ b/api/src/com/cloud/network/Network.java
@@ -16,11 +16,6 @@
// under the License.
package com.cloud.network;
-import java.net.URI;
-import java.util.ArrayList;
-import java.util.List;
-import java.util.Set;
-
import com.cloud.acl.ControlledEntity;
import com.cloud.network.Networks.BroadcastDomainType;
import com.cloud.network.Networks.Mode;
@@ -28,6 +23,11 @@ import com.cloud.network.Networks.TrafficType;
import com.cloud.utils.fsm.FiniteState;
import com.cloud.utils.fsm.StateMachine;
+import java.net.URI;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Set;
+
/**
* owned by an account.
*/
@@ -168,6 +168,7 @@ public interface Network extends ControlledEntity {
public static final Capability AllowDnsSuffixModification = new Capability("AllowDnsSuffixModification");
public static final Capability RedundantRouter = new Capability("RedundantRouter");
public static final Capability ElasticIp = new Capability("ElasticIp");
+ public static final Capability AssociatePublicIP = new Capability("AssociatePublicIP");
public static final Capability ElasticLb = new Capability("ElasticLb");
public static final Capability AutoScaleCounters = new Capability("AutoScaleCounters");
diff --git a/api/src/com/cloud/network/NetworkService.java b/api/src/com/cloud/network/NetworkService.java
index 140563ec99f..d5841a4692e 100755
--- a/api/src/com/cloud/network/NetworkService.java
+++ b/api/src/com/cloud/network/NetworkService.java
@@ -41,7 +41,7 @@ public interface NetworkService {
List extends Network> getIsolatedNetworksOwnedByAccountInZone(long zoneId, Account owner);
- IpAddress allocateIP(Account ipOwner, boolean isSystem, long zoneId) throws ResourceAllocationException,
+ IpAddress allocateIP(Account ipOwner, long zoneId, Long networkId) throws ResourceAllocationException,
InsufficientAddressCapacityException, ConcurrentOperationException;
boolean releaseIpAddress(long ipAddressId) throws InsufficientAddressCapacityException;
diff --git a/api/src/com/cloud/offering/NetworkOffering.java b/api/src/com/cloud/offering/NetworkOffering.java
index 153e6c07053..8b4e7e210cd 100644
--- a/api/src/com/cloud/offering/NetworkOffering.java
+++ b/api/src/com/cloud/offering/NetworkOffering.java
@@ -107,6 +107,8 @@ public interface NetworkOffering {
boolean getElasticIp();
+ boolean getAssociatePublicIP();
+
boolean getElasticLb();
boolean getSpecifyIpRanges();
diff --git a/api/src/com/cloud/resource/ResourceService.java b/api/src/com/cloud/resource/ResourceService.java
index 4d1c0bad4dd..ade10127773 100755
--- a/api/src/com/cloud/resource/ResourceService.java
+++ b/api/src/com/cloud/resource/ResourceService.java
@@ -24,12 +24,15 @@ import org.apache.cloudstack.api.command.admin.host.*;
import org.apache.cloudstack.api.command.admin.swift.AddSwiftCmd;
import org.apache.cloudstack.api.command.admin.swift.ListSwiftsCmd;
import org.apache.cloudstack.api.command.admin.host.PrepareForMaintenanceCmd;
+import com.cloud.api.commands.AddS3Cmd;
+import com.cloud.api.commands.ListS3sCmd;
import com.cloud.exception.DiscoveryException;
import com.cloud.exception.InvalidParameterValueException;
import com.cloud.exception.ResourceInUseException;
import com.cloud.host.Host;
import com.cloud.hypervisor.Hypervisor.HypervisorType;
import com.cloud.org.Cluster;
+import com.cloud.storage.S3;
import com.cloud.storage.Swift;
import com.cloud.utils.fsm.NoTransitionException;
import org.apache.cloudstack.api.command.admin.host.ReconnectHostCmd;
@@ -90,7 +93,12 @@ public interface ResourceService {
Swift discoverSwift(AddSwiftCmd addSwiftCmd) throws DiscoveryException;
+ S3 discoverS3(AddS3Cmd cmd) throws DiscoveryException;
+
List getSupportedHypervisorTypes(long zoneId, boolean forVirtualRouter, Long podId);
List extends Swift> listSwifts(ListSwiftsCmd cmd);
+
+ List extends S3> listS3s(ListS3sCmd cmd);
+
}
diff --git a/api/src/com/cloud/storage/S3.java b/api/src/com/cloud/storage/S3.java
new file mode 100644
index 00000000000..7a679f2adc5
--- /dev/null
+++ b/api/src/com/cloud/storage/S3.java
@@ -0,0 +1,51 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package com.cloud.storage;
+
+import com.cloud.agent.api.to.S3TO;
+
+import java.util.Date;
+
+public interface S3 {
+
+ long getId();
+
+ String getUuid();
+
+ String getAccessKey();
+
+ String getSecretKey();
+
+ String getEndPoint();
+
+ String getBucketName();
+
+ Integer getHttpsFlag();
+
+ Integer getConnectionTimeout();
+
+ Integer getMaxErrorRetry();
+
+ Integer getSocketTimeout();
+
+ Date getCreated();
+
+ S3TO toS3TO();
+
+}
diff --git a/api/src/org/apache/cloudstack/api/ApiConstants.java b/api/src/org/apache/cloudstack/api/ApiConstants.java
index 8b05f1d9c11..6d8400ae6fd 100644
--- a/api/src/org/apache/cloudstack/api/ApiConstants.java
+++ b/api/src/org/apache/cloudstack/api/ApiConstants.java
@@ -16,6 +16,8 @@
// under the License.
package org.apache.cloudstack.api;
+import org.omg.CORBA.PUBLIC_MEMBER;
+
public class ApiConstants {
public static final String ACCOUNT = "account";
public static final String ACCOUNTS = "accounts";
@@ -383,7 +385,16 @@ public class ApiConstants {
public static final String NICIRA_NVP_TRANSPORT_ZONE_UUID = "transportzoneuuid";
public static final String NICIRA_NVP_DEVICE_NAME = "niciradevicename";
public static final String NICIRA_NVP_GATEWAYSERVICE_UUID = "l3gatewayserviceuuid";
-
+ public static final String S3_ACCESS_KEY = "accesskey";
+ public static final String S3_SECRET_KEY = "secretkey";
+ public static final String S3_END_POINT = "endpoint";
+ public static final String S3_BUCKET_NAME = "bucket";
+ public static final String S3_HTTPS_FLAG = "usehttps";
+ public static final String S3_CONNECTION_TIMEOUT = "connectiontimeout";
+ public static final String S3_MAX_ERROR_RETRY = "maxerrorretry";
+ public static final String S3_SOCKET_TIMEOUT = "sockettimeout";
+ public static final String INCL_ZONES = "includezones";
+ public static final String EXCL_ZONES = "excludezones";
public static final String SOURCE = "source";
public static final String COUNTER_ID = "counterid";
public static final String AGGR_OPERATOR = "aggroperator";
diff --git a/api/src/org/apache/cloudstack/api/ResponseGenerator.java b/api/src/org/apache/cloudstack/api/ResponseGenerator.java
index ee7f15e3cf2..559a7ad0ffb 100644
--- a/api/src/org/apache/cloudstack/api/ResponseGenerator.java
+++ b/api/src/org/apache/cloudstack/api/ResponseGenerator.java
@@ -92,6 +92,7 @@ import org.apache.cloudstack.api.response.VpcResponse;
import org.apache.cloudstack.api.response.VpnUsersResponse;
import org.apache.cloudstack.api.response.ZoneResponse;
+import com.cloud.api.response.S3Response;
import com.cloud.async.AsyncJob;
import com.cloud.capacity.Capacity;
@@ -144,6 +145,7 @@ import com.cloud.projects.ProjectAccount;
import com.cloud.projects.ProjectInvitation;
import com.cloud.server.ResourceTag;
import com.cloud.storage.GuestOS;
+import com.cloud.storage.S3;
import com.cloud.storage.Snapshot;
import com.cloud.storage.StoragePool;
import com.cloud.storage.Swift;
@@ -296,6 +298,8 @@ public interface ResponseGenerator {
SwiftResponse createSwiftResponse(Swift swift);
+ S3Response createS3Response(S3 result);
+
PhysicalNetworkResponse createPhysicalNetworkResponse(PhysicalNetwork result);
ServiceResponse createNetworkServiceResponse(Service service);
@@ -375,5 +379,4 @@ public interface ResponseGenerator {
GuestOSResponse createGuestOSResponse(GuestOS os);
SnapshotScheduleResponse createSnapshotScheduleResponse(SnapshotSchedule sched);
-
}
diff --git a/api/src/org/apache/cloudstack/api/command/user/address/AssociateIPAddrCmd.java b/api/src/org/apache/cloudstack/api/command/user/address/AssociateIPAddrCmd.java
index f4d48531849..c696c6ee4ee 100644
--- a/api/src/org/apache/cloudstack/api/command/user/address/AssociateIPAddrCmd.java
+++ b/api/src/org/apache/cloudstack/api/command/user/address/AssociateIPAddrCmd.java
@@ -216,7 +216,8 @@ public class AssociateIPAddrCmd extends BaseAsyncCreateCmd {
@Override
public void create() throws ResourceAllocationException{
try {
- IpAddress ip = _networkService.allocateIP(_accountService.getAccount(getEntityOwnerId()), false, getZoneId());
+ IpAddress ip = _networkService.allocateIP(_accountService.getAccount(getEntityOwnerId()), getZoneId(), getNetworkId());
+
if (ip != null) {
this.setEntityId(ip.getId());
} else {
diff --git a/api/test/src/com/cloud/agent/api/test/BackupSnapshotAnswerTest.java b/api/test/src/com/cloud/agent/api/test/BackupSnapshotAnswerTest.java
index aa1c0fb7f42..b3f2847cd51 100644
--- a/api/test/src/com/cloud/agent/api/test/BackupSnapshotAnswerTest.java
+++ b/api/test/src/com/cloud/agent/api/test/BackupSnapshotAnswerTest.java
@@ -36,7 +36,7 @@ public class BackupSnapshotAnswerTest {
StoragePool pool = Mockito.mock(StoragePool.class);
- bsc = new BackupSnapshotCommand("primaryStoragePoolNameLabel",
+ bsc = new BackupSnapshotCommand(
"secondaryStoragePoolURL", 101L, 102L, 103L, 104L,
"volumePath", pool, "snapshotUuid", "snapshotName",
"prevSnapshotUuid", "prevBackupUuid", false, "vmName", 5);
diff --git a/api/test/src/com/cloud/agent/api/test/BackupSnapshotCommandTest.java b/api/test/src/com/cloud/agent/api/test/BackupSnapshotCommandTest.java
index baeed5577da..a6241488943 100644
--- a/api/test/src/com/cloud/agent/api/test/BackupSnapshotCommandTest.java
+++ b/api/test/src/com/cloud/agent/api/test/BackupSnapshotCommandTest.java
@@ -116,14 +116,14 @@ public class BackupSnapshotCommandTest {
};
BackupSnapshotCommand bsc = new BackupSnapshotCommand(
- "primaryStoragePoolNameLabel", "http://secondary.Storage.Url",
+ "http://secondary.Storage.Url",
101L, 102L, 103L, 104L, "vPath", pool,
"420fa39c-4ef1-a83c-fd93-46dc1ff515ae", "sName",
"9012793e-0657-11e2-bebc-0050568b0057",
"7167e0b2-f5b0-11e1-8414-0050568b0057", false, "vmName", 5);
BackupSnapshotCommand bsc1 = new BackupSnapshotCommand(
- "primaryStoragePoolNameLabel", "http://secondary.Storage.Url",
+ "http://secondary.Storage.Url",
101L, 102L, 103L, 104L, "vPath", pool,
"420fa39c-4ef1-a83c-fd93-46dc1ff515ae", "sName",
"9012793e-0657-11e2-bebc-0050568b0057",
@@ -132,7 +132,7 @@ public class BackupSnapshotCommandTest {
@Test
public void testGetPrimaryStoragePoolNameLabel() {
String label = bsc.getPrimaryStoragePoolNameLabel();
- assertTrue(label.equals("primaryStoragePoolNameLabel"));
+ assertTrue(label.equals("bed9f83e-cac3-11e1-ac8a-0050568b007e"));
}
@Test
diff --git a/api/test/src/com/cloud/agent/api/test/SnapshotCommandTest.java b/api/test/src/com/cloud/agent/api/test/SnapshotCommandTest.java
index 3e37edaf53b..98cdee2a8bf 100644
--- a/api/test/src/com/cloud/agent/api/test/SnapshotCommandTest.java
+++ b/api/test/src/com/cloud/agent/api/test/SnapshotCommandTest.java
@@ -23,19 +23,109 @@ import static org.junit.Assert.assertTrue;
import org.junit.Before;
import org.junit.Test;
+import java.text.ParseException;
+import java.text.SimpleDateFormat;
+import java.util.Date;
+
import com.cloud.agent.api.SnapshotCommand;
+import com.cloud.storage.Storage.StoragePoolType;
+import com.cloud.storage.StoragePool;
+import com.cloud.storage.StoragePoolStatus;
public class SnapshotCommandTest {
- SnapshotCommand ssc = new SnapshotCommand("primaryStoragePoolNameLabel",
+
+ public StoragePool pool = new StoragePool() {
+ public long getId() {
+ return 1L;
+ };
+
+ public String getName() {
+ return "name";
+ };
+
+ public String getUuid() {
+ return "bed9f83e-cac3-11e1-ac8a-0050568b007e";
+ };
+
+ public StoragePoolType getPoolType() {
+ return StoragePoolType.Filesystem;
+ };
+
+ public Date getCreated() {
+ Date date = null;
+ try {
+ date = new SimpleDateFormat("MM/dd/yyyy HH:mm:ss")
+ .parse("01/01/1970 12:12:12");
+ } catch (ParseException e) {
+ e.printStackTrace();
+ }
+ return date;
+ }
+
+ public Date getUpdateTime() {
+ return new Date();
+ };
+
+ public long getDataCenterId() {
+ return 0L;
+ };
+
+ public long getCapacityBytes() {
+ return 0L;
+ };
+
+ public long getAvailableBytes() {
+ return 0L;
+ };
+
+ public Long getClusterId() {
+ return 0L;
+ };
+
+ public String getHostAddress() {
+ return "hostAddress";
+ };
+
+ public String getPath() {
+ return "path";
+ };
+
+ public String getUserInfo() {
+ return "userInfo";
+ };
+
+ public boolean isShared() {
+ return false;
+ };
+
+ public boolean isLocal() {
+ return false;
+ };
+
+ public StoragePoolStatus getStatus() {
+ return StoragePoolStatus.Up;
+ };
+
+ public int getPort() {
+ return 25;
+ };
+
+ public Long getPodId() {
+ return 0L;
+ };
+ };
+
+ SnapshotCommand ssc = new SnapshotCommand(pool,
"http://secondary.Storage.Url",
"420fa39c-4ef1-a83c-fd93-46dc1ff515ae", "snapshotName", 101L, 102L,
103L);
SnapshotCommand ssc1;
+
@Before
public void setUp() {
- ssc1 = new SnapshotCommand("primaryStoragePoolNameLabel",
+ ssc1 = new SnapshotCommand(pool,
"secondaryStorageUrl", "snapshotUuid", "snapshotName", 101L,
102L, 103L);
}
@@ -43,7 +133,7 @@ public class SnapshotCommandTest {
@Test
public void testGetPrimaryStoragePoolNameLabel() {
String label = ssc.getPrimaryStoragePoolNameLabel();
- assertTrue(label.equals("primaryStoragePoolNameLabel"));
+ assertTrue(label.equals("bed9f83e-cac3-11e1-ac8a-0050568b007e"));
}
@Test
diff --git a/awsapi/src/com/cloud/bridge/io/S3CAStorBucketAdapter.java b/awsapi/src/com/cloud/bridge/io/S3CAStorBucketAdapter.java
index 2101afe1418..d7adc286816 100644
--- a/awsapi/src/com/cloud/bridge/io/S3CAStorBucketAdapter.java
+++ b/awsapi/src/com/cloud/bridge/io/S3CAStorBucketAdapter.java
@@ -58,6 +58,7 @@ import com.caringo.client.ScspResponse;
import org.apache.commons.httpclient.HttpClient;
import org.apache.commons.httpclient.methods.GetMethod;
import org.apache.commons.httpclient.Header;
+import org.apache.commons.httpclient.HttpException;
import org.apache.commons.httpclient.MultiThreadedHttpConnectionManager;
/**
@@ -413,23 +414,26 @@ public class S3CAStorBucketAdapter implements S3BucketAdapter {
}
public class ScspDataSource implements DataSource {
- GetMethod method;
- public ScspDataSource(GetMethod m) {
- method = m;
+ String content_type = null;
+ byte content[] = null;
+ public ScspDataSource(GetMethod method) {
+ Header h = method.getResponseHeader("Content-type");
+ if (h != null) {
+ content_type = h.getValue();
+ }
+ try{
+ content = method.getResponseBody();
+ }catch(IOException e){
+ s_logger.error("CAStor loadObjectRange getInputStream error", e);
+ }
}
@Override
public String getContentType() {
- Header h = method.getResponseHeader("Content-type");
- return h==null ? null : h.getValue();
+ return content_type;
}
@Override
- public InputStream getInputStream() throws IOException {
- try {
- return method.getResponseBodyAsStream();
- } catch (Exception e) {
- s_logger.error("CAStor loadObjectRange getInputStream error", e);
- return null;
- }
+ public InputStream getInputStream() {
+ return new ByteArrayInputStream(content);
}
@Override
public String getName() {
@@ -445,21 +449,27 @@ public class S3CAStorBucketAdapter implements S3BucketAdapter {
@Override
public DataHandler loadObjectRange(String mountedRoot, String bucket, String fileName, long startPos, long endPos) {
+ HttpClient httpClient = new HttpClient(s_httpClientManager);
+ // Create a method instance.
+ GetMethod method = new GetMethod(castorURL(mountedRoot, bucket, fileName));
+ method.addRequestHeader("Range", "bytes=" + startPos + "-" + endPos);
+ int statusCode;
try {
- HttpClient httpClient = new HttpClient(s_httpClientManager);
- // Create a method instance.
- GetMethod method = new GetMethod(castorURL(mountedRoot, bucket, fileName));
- method.addRequestHeader("Range", "bytes=" + startPos + "-" + endPos);
- int statusCode = httpClient.executeMethod(method);
- if (statusCode < HTTP_OK || statusCode >= HTTP_UNSUCCESSFUL) {
- s_logger.error("CAStor loadObjectRange response: "+ statusCode);
- throw new FileNotExistException("CAStor loadObjectRange response: " + statusCode);
- }
- return new DataHandler(new ScspDataSource(method));
- } catch (Exception e) {
+ statusCode = httpClient.executeMethod(method);
+ } catch (HttpException e) {
+ s_logger.error("CAStor loadObjectRange failure", e);
+ throw new FileNotExistException("CAStor loadObjectRange failure: " + e);
+ } catch (IOException e) {
s_logger.error("CAStor loadObjectRange failure", e);
throw new FileNotExistException("CAStor loadObjectRange failure: " + e);
}
+ if (statusCode < HTTP_OK || statusCode >= HTTP_UNSUCCESSFUL) {
+ s_logger.error("CAStor loadObjectRange response: "+ statusCode);
+ throw new FileNotExistException("CAStor loadObjectRange response: " + statusCode);
+ }
+ DataHandler ret = new DataHandler(new ScspDataSource(method));
+ method.releaseConnection();
+ return ret;
}
@Override
diff --git a/client/WEB-INF/classes/resources/messages.properties b/client/WEB-INF/classes/resources/messages.properties
index b606cce3c95..3dc01aa2008 100644
--- a/client/WEB-INF/classes/resources/messages.properties
+++ b/client/WEB-INF/classes/resources/messages.properties
@@ -19,7 +19,7 @@
#new labels (begin) **********************************************************************************************
label.egress.rules=Egress rules
message.acquire.new.ip.vpc=Please confirm that you would like to acquire a new IP for this VPC.
-label.zoneWizard.trafficType.management=Mangement: Traffic between CloudStack\'s internal resources, including any components that communicate with the Management Server, such as hosts and CloudStack system VMs
+label.zoneWizard.trafficType.management=Management: Traffic between CloudStack\'s internal resources, including any components that communicate with the Management Server, such as hosts and CloudStack system VMs
label.zoneWizard.trafficType.public=Public: Traffic between the internet and virtual machines in the cloud.
label.zoneWizard.trafficType.guest=Guest: Traffic between end-user virtual machines
label.zoneWizard.trafficType.storage=Storage: Traffic between primary and secondary storage servers, such as VM templates and snapshots
@@ -32,6 +32,17 @@ label.destroy=Destroy
label.restore=Restore
label.isolation.uri=Isolation URI
label.broadcast.uri=Broadcast URI
+label.enable.s3=Enable S3-backed Secondary Storage
+confirm.enable.s3=Please fill in the following information to enable support for S3-backed Secondary Storage
+message.after.enable.s3=S3-backed Secondary Storage configured. Note: When you leave this page, you will not be able to re-configure S3 again.
+label.s3.access_key=Access Key
+label.s3.secret_key=Secret Key
+label.s3.bucket=Bucket
+label.s3.endpoint=Endpoint
+label.s3.use_https=Use HTTPS
+label.s3.connection_timeout=Connection Timeout
+label.s3.max_error_retry=Max Error Retry
+label.s3.socket_timeout=Socket Timeout
#new labels (end) ************************************************************************************************
@@ -305,8 +316,6 @@ label.installWizard.subtitle=This tour will aid you in setting up your CloudStac
label.continue=Continue
label.installWizard.title=Hello and Welcome to CloudStack™
label.agree=Agree
-label.license.agreement=License Agreement
-label.license.agreement.subtitle=Please accept the CloudStack™ EULA before installing.
label.manage.resources=Manage Resources
label.port.forwarding.policies=Port forwarding policies
label.load.balancing.policies=Load balancing policies
diff --git a/client/WEB-INF/classes/resources/messages_fr_FR.properties b/client/WEB-INF/classes/resources/messages_fr_FR.properties
index 3710d25a916..4ba3c725892 100644
--- a/client/WEB-INF/classes/resources/messages_fr_FR.properties
+++ b/client/WEB-INF/classes/resources/messages_fr_FR.properties
@@ -292,8 +292,6 @@ label.installWizard.subtitle=Ce tutorial vous aidera
label.continue=Continuer
label.installWizard.title=Bonjour et bienvenue dans CloudStack
label.agree=Accepter
-label.license.agreement=Accord de licence
-label.license.agreement.subtitle=Merci d\'accepter l\'EULA CloudStack avant d\'installer.
label.manage.resources=Gérer les ressources
label.port.forwarding.policies=Règles de transfert de port
label.load.balancing.policies=Règles de répartition de charge
diff --git a/client/WEB-INF/classes/resources/messages_ja.properties b/client/WEB-INF/classes/resources/messages_ja.properties
index ec785f6f83e..7555b83dd78 100644
--- a/client/WEB-INF/classes/resources/messages_ja.properties
+++ b/client/WEB-INF/classes/resources/messages_ja.properties
@@ -295,8 +295,6 @@ label.installWizard.subtitle=ã“ã®ã‚¬ã‚¤ãƒ‰ ツアー㯠CloudStack™ ç’°
label.continue=続行
label.installWizard.title=CloudStack™ ã¸ã‚ˆã†ã“ã
label.agree=åŒæ„ã™ã‚‹
-label.license.agreement=ライセンス契約
-label.license.agreement.subtitle=インストールã®å‰ã« CloudStack™ エンド ユーザー ライセンス契約ã«åŒæ„ã—ã¦ãã ã•ã„。
label.manage.resources=リソースã®ç®¡ç†
label.port.forwarding.policies=ãƒãƒ¼ãƒˆè»¢é€ãƒãƒªã‚·ãƒ¼
label.load.balancing.policies=è² è·åˆ†æ•£ãƒãƒªã‚·ãƒ¼
diff --git a/client/WEB-INF/classes/resources/messages_pt_BR.properties b/client/WEB-INF/classes/resources/messages_pt_BR.properties
index 2b6a5d3ce45..3bc435b9717 100644
--- a/client/WEB-INF/classes/resources/messages_pt_BR.properties
+++ b/client/WEB-INF/classes/resources/messages_pt_BR.properties
@@ -292,8 +292,6 @@ label.installWizard.subtitle=Este tour vai auxiliar voc
label.continue=Continuar
label.installWizard.title=Olá, seja bem vindo ao CloudStack&\#8482
label.agree=Concordo
-label.license.agreement=Acordo de Licença
-label.license.agreement.subtitle=Por favor aceite a EULA do CloudStack&\#8482 antes de instalar.
label.manage.resources=Gerenciar Recursos
label.port.forwarding.policies=Políticas de redirecionamento de portas
label.load.balancing.policies=Políticas de balanceamento de carga
diff --git a/client/WEB-INF/classes/resources/messages_ru_RU.properties b/client/WEB-INF/classes/resources/messages_ru_RU.properties
index 0c6b962d1cf..dd7e7460744 100644
--- a/client/WEB-INF/classes/resources/messages_ru_RU.properties
+++ b/client/WEB-INF/classes/resources/messages_ru_RU.properties
@@ -292,8 +292,6 @@ label.installWizard.subtitle=Ðто руководÑтво наÑтроит ва
label.continue=Продолжить
label.installWizard.title=ЗдравÑтвуйте и добро пожаловать в CloudStack\!
label.agree=СоглаÑен
-label.license.agreement=Лицензионное Ñоглашение
-label.license.agreement.subtitle=Ð”Ð»Ñ Ð¿Ñ€Ð¾Ð´Ð¾Ð»Ð¶ÐµÐ½Ð¸Ñ ÑƒÑтановки ÑоглаÑитеÑÑŒ Ñ Ð»Ð¸Ñ†ÐµÐ½Ð·Ð¸Ð¾Ð½Ð½Ñ‹Ð¼ Ñоглашением.
label.manage.resources=Управление реÑурÑами
label.port.forwarding.policies=Политики проброÑа портов
label.load.balancing.policies=Политики баланÑировки нагрузки
diff --git a/client/WEB-INF/classes/resources/messages_zh_CN.properties b/client/WEB-INF/classes/resources/messages_zh_CN.properties
index f86601773cb..62160d98488 100644
--- a/client/WEB-INF/classes/resources/messages_zh_CN.properties
+++ b/client/WEB-INF/classes/resources/messages_zh_CN.properties
@@ -295,8 +295,6 @@ label.installWizard.subtitle=æ¤æ•™ç¨‹å°†å¸®åŠ©æ‚¨è®¾ç½® CloudStack™ 安装
label.continue=ç»§ç»
label.installWizard.title=您好,欢迎使用 CloudStack™
label.agree=åŒæ„
-label.license.agreement=许å¯åè®®
-label.license.agreement.subtitle=å¿…é¡»å…ˆæŽ¥å— CloudStack™ EULA æ‰èƒ½è¿›è¡Œå®‰è£…。
label.manage.resources=管ç†èµ„æº
label.port.forwarding.policies=端å£è½¬å‘ç–ç•¥
label.load.balancing.policies=负载平衡ç–ç•¥
diff --git a/client/tomcatconf/commands.properties.in b/client/tomcatconf/commands.properties.in
index df7768720f1..c334c81924c 100755
--- a/client/tomcatconf/commands.properties.in
+++ b/client/tomcatconf/commands.properties.in
@@ -224,10 +224,14 @@ listAlerts=org.apache.cloudstack.api.command.admin.resource.ListAlertsCmd;3
#### system capacity commands
listCapacity=org.apache.cloudstack.api.command.admin.resource.ListCapacityCmd;3
-#### swift commands^M
+#### swift commands
addSwift=org.apache.cloudstack.api.command.admin.swift.AddSwiftCmd;1
listSwifts=org.apache.cloudstack.api.command.admin.swift.ListSwiftsCmd;1
+#### s3 commands
+addS3=com.cloud.api.commands.AddS3Cmd;1
+listS3s=com.cloud.api.commands.ListS3sCmd;1
+
#### host commands
addHost=org.apache.cloudstack.api.command.admin.host.AddHostCmd;3
addCluster=org.apache.cloudstack.api.command.admin.cluster.AddClusterCmd;1
diff --git a/client/tomcatconf/db-enc.properties.in b/client/tomcatconf/db-enc.properties.in
index 6136f37511f..a9404fa4932 100644
--- a/client/tomcatconf/db-enc.properties.in
+++ b/client/tomcatconf/db-enc.properties.in
@@ -37,9 +37,6 @@ db.cloud.testOnBorrow=true
db.cloud.testWhileIdle=true
db.cloud.timeBetweenEvictionRunsMillis=40000
db.cloud.minEvictableIdleTimeMillis=240000
-db.cloud.removeAbandoned=false
-db.cloud.removeAbandonedTimeout=300
-db.cloud.logAbandoned=true
db.cloud.poolPreparedStatements=false
db.cloud.url.params=prepStmtCacheSize=517&cachePrepStmts=true
diff --git a/client/tomcatconf/db.properties.in b/client/tomcatconf/db.properties.in
index f39d8fe4097..e38366706d4 100644
--- a/client/tomcatconf/db.properties.in
+++ b/client/tomcatconf/db.properties.in
@@ -37,9 +37,6 @@ db.cloud.testOnBorrow=true
db.cloud.testWhileIdle=true
db.cloud.timeBetweenEvictionRunsMillis=40000
db.cloud.minEvictableIdleTimeMillis=240000
-db.cloud.removeAbandoned=false
-db.cloud.removeAbandonedTimeout=300
-db.cloud.logAbandoned=true
db.cloud.poolPreparedStatements=false
db.cloud.url.params=prepStmtCacheSize=517&cachePrepStmts=true
diff --git a/core/pom.xml b/core/pom.xml
index 15f0f7b7302..3d6356e561e 100644
--- a/core/pom.xml
+++ b/core/pom.xml
@@ -43,6 +43,11 @@
+
+ commons-codec
+ commons-codec
+ ${cs.codec.version}
+
install
diff --git a/core/src/com/cloud/agent/api/DirectNetworkUsageCommand.java b/core/src/com/cloud/agent/api/DirectNetworkUsageCommand.java
index 97dcf90177e..86e794a1dc6 100644
--- a/core/src/com/cloud/agent/api/DirectNetworkUsageCommand.java
+++ b/core/src/com/cloud/agent/api/DirectNetworkUsageCommand.java
@@ -24,11 +24,15 @@ public class DirectNetworkUsageCommand extends Command {
private List publicIps;
private Date start;
private Date end;
+ private String includeZones;
+ private String excludeZones;
- public DirectNetworkUsageCommand(List publicIps, Date start, Date end) {
+ public DirectNetworkUsageCommand(List publicIps, Date start, Date end, String includeZones, String excludeZones) {
this.setPublicIps(publicIps);
this.setStart(start);
this.setEnd(end);
+ this.setIncludeZones(includeZones);
+ this.setExcludeZones(excludeZones);
}
@Override
@@ -59,4 +63,21 @@ public class DirectNetworkUsageCommand extends Command {
public Date getEnd() {
return end;
}
+
+ public String getIncludeZones() {
+ return includeZones;
+ }
+
+ public void setIncludeZones(String includeZones) {
+ this.includeZones = includeZones;
+ }
+
+ public String getExcludeZones() {
+ return excludeZones;
+ }
+
+ public void setExcludeZones(String excludeZones) {
+ this.excludeZones = excludeZones;
+ }
+
}
diff --git a/core/src/com/cloud/network/resource/TrafficSentinelResource.java b/core/src/com/cloud/network/resource/TrafficSentinelResource.java
index a9088d0eb67..a13e080b7e4 100644
--- a/core/src/com/cloud/network/resource/TrafficSentinelResource.java
+++ b/core/src/com/cloud/network/resource/TrafficSentinelResource.java
@@ -49,7 +49,6 @@ import com.cloud.agent.api.StartupCommand;
import com.cloud.agent.api.StartupTrafficMonitorCommand;
import com.cloud.host.Host;
import com.cloud.resource.ServerResource;
-import com.cloud.utils.NumbersUtil;
import com.cloud.utils.exception.ExecutionException;
public class TrafficSentinelResource implements ServerResource {
@@ -59,8 +58,8 @@ public class TrafficSentinelResource implements ServerResource {
private String _ip;
private String _guid;
private String _url;
- private static Integer _numRetries;
- private static Integer _timeoutInSeconds;
+ private String _inclZones;
+ private String _exclZones;
private static final Logger s_logger = Logger.getLogger(TrafficSentinelResource.class);
@@ -91,9 +90,8 @@ public class TrafficSentinelResource implements ServerResource {
throw new ConfigurationException("Unable to find url");
}
- _numRetries = NumbersUtil.parseInt((String) params.get("numRetries"), 1);
-
- _timeoutInSeconds = NumbersUtil.parseInt((String) params.get("timeoutInSeconds"), 300);
+ _inclZones = (String)params.get("inclZones");
+ _exclZones = (String)params.get("exclZones");
return true;
} catch (Exception e) {
@@ -197,6 +195,15 @@ public class TrafficSentinelResource implements ServerResource {
try {
//Direct Network Usage
URL trafficSentinel;
+ //Use Global include/exclude zones if there are no per TS zones
+ if(_inclZones == null){
+ _inclZones = cmd.getIncludeZones();
+ }
+
+ if(_exclZones == null){
+ _exclZones = cmd.getExcludeZones();
+ }
+
try {
//Query traffic Sentinel
trafficSentinel = new URL(_url+"/inmsf/Query?script="+URLEncoder.encode(getScript(cmd.getPublicIps(), cmd.getStart(), cmd.getEnd()),"UTF-8")
@@ -247,12 +254,28 @@ public class TrafficSentinelResource implements ServerResource {
IpAddresses += ",";
}
}
+ String destZoneCondition = "";
+ if(_inclZones !=null && !_inclZones.isEmpty()){
+ destZoneCondition = " & destinationzone = "+_inclZones;
+ }
+ if(_exclZones !=null && !_exclZones.isEmpty()){
+ destZoneCondition += " & destinationzone != "+_exclZones;
+ }
+
+ String srcZoneCondition = "";
+ if(_inclZones !=null && !_inclZones.isEmpty()){
+ srcZoneCondition = " & sourcezone = "+_inclZones;
+ }
+ if(_exclZones !=null && !_exclZones.isEmpty()){
+ srcZoneCondition += " & sourcezone != "+_exclZones;
+ }
+
String startDate = getDateString(start);
String endtDate = getDateString(end);
StringBuffer sb = new StringBuffer();
sb.append("var q = Query.topN(\"historytrmx\",");
sb.append(" \"ipsource,bytes\",");
- sb.append(" \"ipsource = "+IpAddresses+" & destinationzone = EXTERNAL\",");
+ sb.append(" \"ipsource = "+IpAddresses+destZoneCondition+"\",");
sb.append(" \""+startDate+", "+endtDate+"\",");
sb.append(" \"bytes\",");
sb.append(" 100000);");
@@ -265,7 +288,7 @@ public class TrafficSentinelResource implements ServerResource {
sb.append(" });");
sb.append("var q = Query.topN(\"historytrmx\",");
sb.append(" \"ipdestination,bytes\",");
- sb.append(" \"ipdestination = "+IpAddresses+" & sourcezone = EXTERNAL\",");
+ sb.append(" \"ipdestination = "+IpAddresses+srcZoneCondition+"\",");
sb.append(" \""+startDate+", "+endtDate+"\",");
sb.append(" \"bytes\",");
sb.append(" 100000);");
diff --git a/core/src/com/cloud/storage/S3VO.java b/core/src/com/cloud/storage/S3VO.java
new file mode 100644
index 00000000000..ab16b2a512b
--- /dev/null
+++ b/core/src/com/cloud/storage/S3VO.java
@@ -0,0 +1,208 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package com.cloud.storage;
+
+import com.cloud.agent.api.to.S3TO;
+import com.cloud.utils.db.GenericDao;
+import org.apache.cloudstack.api.Identity;
+
+import javax.persistence.Column;
+import javax.persistence.Entity;
+import javax.persistence.GeneratedValue;
+import javax.persistence.GenerationType;
+import javax.persistence.Id;
+import javax.persistence.Table;
+import java.util.Date;
+
+@Entity
+@Table(name = "s3")
+public class S3VO implements S3, Identity {
+
+ public static final String ID_COLUMN_NAME = "id";
+
+ @Id
+ @GeneratedValue(strategy = GenerationType.IDENTITY)
+ @Column(name = ID_COLUMN_NAME)
+ private long id;
+
+ @Column(name = "uuid")
+ private String uuid;
+
+ @Column(name = "access_key")
+ private String accessKey;
+
+ @Column(name = "secret_key")
+ private String secretKey;
+
+ @Column(name = "end_point")
+ private String endPoint;
+
+ @Column(name = "bucket")
+ private String bucketName;
+
+ @Column(name = "https")
+ private Integer httpsFlag;
+
+ @Column(name = "connection_timeout")
+ private Integer connectionTimeout;
+
+ @Column(name = "max_error_retry")
+ private Integer maxErrorRetry;
+
+ @Column(name = "socket_timeout")
+ private Integer socketTimeout;
+
+ @Column(name = GenericDao.CREATED_COLUMN)
+ private Date created;
+
+ public S3VO() {
+ super();
+ }
+
+ public S3VO(final String uuid, final String accessKey,
+ final String secretKey, final String endPoint,
+ final String bucketName, final Boolean httpsFlag,
+ final Integer connectionTimeout, final Integer maxErrorRetry,
+ final Integer socketTimeout, final Date created) {
+
+ super();
+
+ this.uuid = uuid;
+ this.accessKey = accessKey;
+ this.secretKey = secretKey;
+ this.endPoint = endPoint;
+ this.bucketName = bucketName;
+
+ Integer value = null;
+ if (httpsFlag != null) {
+ value = httpsFlag == false ? 0 : 1;
+ }
+ this.httpsFlag = value;
+
+ this.connectionTimeout = connectionTimeout;
+ this.maxErrorRetry = maxErrorRetry;
+ this.socketTimeout = socketTimeout;
+ this.created = created;
+
+ }
+
+ @Override
+ public S3TO toS3TO() {
+
+ Boolean httpsFlag = null;
+ if (this.httpsFlag != null) {
+ httpsFlag = this.httpsFlag == 0 ? false : true;
+ }
+
+ return new S3TO(this.id, this.uuid, this.accessKey, this.secretKey,
+ this.endPoint, this.bucketName, httpsFlag,
+ this.connectionTimeout, this.maxErrorRetry, this.socketTimeout,
+ this.created);
+
+ }
+
+ public long getId() {
+ return this.id;
+ }
+
+ public void setId(final long id) {
+ this.id = id;
+ }
+
+ public String getUuid() {
+ return this.uuid;
+ }
+
+ public void setUuid(final String uuid) {
+ this.uuid = uuid;
+ }
+
+ public String getAccessKey() {
+ return this.accessKey;
+ }
+
+ public void setAccessKey(final String accessKey) {
+ this.accessKey = accessKey;
+ }
+
+ public String getSecretKey() {
+ return this.secretKey;
+ }
+
+ public void setSecretKey(final String secretKey) {
+ this.secretKey = secretKey;
+ }
+
+ public String getEndPoint() {
+ return this.endPoint;
+ }
+
+ public void setEndPoint(final String endPoint) {
+ this.endPoint = endPoint;
+ }
+
+ public String getBucketName() {
+ return this.bucketName;
+ }
+
+ public void setBucketName(final String bucketName) {
+ this.bucketName = bucketName;
+ }
+
+ public Integer getHttpsFlag() {
+ return this.httpsFlag;
+ }
+
+ public void setHttpsFlag(final Integer httpsFlag) {
+ this.httpsFlag = httpsFlag;
+ }
+
+ public Integer getConnectionTimeout() {
+ return this.connectionTimeout;
+ }
+
+ public void setConnectionTimeout(final int connectionTimeout) {
+ this.connectionTimeout = connectionTimeout;
+ }
+
+ public Integer getMaxErrorRetry() {
+ return this.maxErrorRetry;
+ }
+
+ public void setMaxErrorRetry(final int maxErrorRetry) {
+ this.maxErrorRetry = maxErrorRetry;
+ }
+
+ public Integer getSocketTimeout() {
+ return this.socketTimeout;
+ }
+
+ public void setSocketTimeout(final int socketTimeout) {
+ this.socketTimeout = socketTimeout;
+ }
+
+ public Date getCreated() {
+ return this.created;
+ }
+
+ public void setCreated(final Date created) {
+ this.created = created;
+ }
+
+}
diff --git a/core/src/com/cloud/storage/SnapshotVO.java b/core/src/com/cloud/storage/SnapshotVO.java
index 928cd2d786f..885a4795ad3 100644
--- a/core/src/com/cloud/storage/SnapshotVO.java
+++ b/core/src/com/cloud/storage/SnapshotVO.java
@@ -91,6 +91,9 @@ public class SnapshotVO implements Snapshot, Identity {
@Column(name="swift_id")
Long swiftId;
+ @Column(name="s3_id")
+ Long s3Id;
+
@Column(name="sechost_id")
Long secHostId;
@@ -289,4 +292,13 @@ public class SnapshotVO implements Snapshot, Identity {
public void setUuid(String uuid) {
this.uuid = uuid;
}
+
+ public Long getS3Id() {
+ return s3Id;
+ }
+
+ public void setS3Id(Long s3Id) {
+ this.s3Id = s3Id;
+ }
+
}
diff --git a/core/src/com/cloud/storage/VMTemplateS3VO.java b/core/src/com/cloud/storage/VMTemplateS3VO.java
new file mode 100644
index 00000000000..a75c37d192d
--- /dev/null
+++ b/core/src/com/cloud/storage/VMTemplateS3VO.java
@@ -0,0 +1,203 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package com.cloud.storage;
+
+import com.cloud.utils.db.GenericDaoBase;
+
+import javax.persistence.Column;
+import javax.persistence.Entity;
+import javax.persistence.GeneratedValue;
+import javax.persistence.GenerationType;
+import javax.persistence.Id;
+import javax.persistence.Table;
+
+import java.text.DateFormat;
+import java.util.Date;
+
+@Entity
+@Table(name = "template_s3_ref")
+public class VMTemplateS3VO {
+
+ public static final String S3_ID_COLUMN_NAME = "s3_id";
+
+ public static final String TEMPLATE_ID_COLUMN_NAME = "template_id";
+
+ @Id
+ @GeneratedValue(strategy = GenerationType.IDENTITY)
+ private long id;
+
+ @Column(name = S3_ID_COLUMN_NAME)
+ private long s3Id;
+
+ @Column(name = TEMPLATE_ID_COLUMN_NAME)
+ private long templateId;
+
+ @Column(name = GenericDaoBase.CREATED_COLUMN)
+ private Date created;
+
+ @Column(name = "size")
+ private Long size;
+
+ @Column(name = "physical_size")
+ private Long physicalSize;
+
+ public VMTemplateS3VO() {
+ super();
+ }
+
+ public VMTemplateS3VO(final long s3Id, final long templateId,
+ final Date created, final Long size, final Long physicalSize) {
+
+ super();
+
+ this.s3Id = s3Id;
+ this.templateId = templateId;
+ this.created = created;
+ this.size = size;
+ this.physicalSize = physicalSize;
+
+ }
+
+ @Override
+ public boolean equals(final Object thatObject) {
+
+ if (this == thatObject) {
+ return true;
+ }
+
+ if (thatObject == null || getClass() != thatObject.getClass()) {
+ return false;
+ }
+
+ final VMTemplateS3VO thatVMTemplateS3VO = (VMTemplateS3VO) thatObject;
+
+ if (this.id != thatVMTemplateS3VO.id) {
+ return false;
+ }
+
+ if (this.s3Id != thatVMTemplateS3VO.s3Id) {
+ return false;
+ }
+
+ if (this.templateId != thatVMTemplateS3VO.templateId) {
+ return false;
+ }
+
+ if (this.created != null ? !created.equals(thatVMTemplateS3VO.created)
+ : thatVMTemplateS3VO.created != null) {
+ return false;
+ }
+
+ if (this.physicalSize != null ? !physicalSize
+ .equals(thatVMTemplateS3VO.physicalSize)
+ : thatVMTemplateS3VO.physicalSize != null) {
+ return false;
+ }
+
+ if (this.size != null ? !size.equals(thatVMTemplateS3VO.size)
+ : thatVMTemplateS3VO.size != null) {
+ return false;
+ }
+
+ return true;
+ }
+
+ @Override
+ public int hashCode() {
+
+ int result = (int) (this.id ^ (this.id >>> 32));
+
+ result = 31 * result + (int) (this.s3Id ^ (this.s3Id >>> 32));
+ result = 31 * result
+ + (int) (this.templateId ^ (this.templateId >>> 32));
+ result = 31 * result
+ + (this.created != null ? this.created.hashCode() : 0);
+ result = 31 * result + (this.size != null ? this.size.hashCode() : 0);
+ result = 31
+ * result
+ + (this.physicalSize != null ? this.physicalSize.hashCode() : 0);
+
+ return result;
+
+ }
+
+ public long getId() {
+ return this.id;
+ }
+
+ public void setId(final long id) {
+ this.id = id;
+ }
+
+ public long getS3Id() {
+ return this.s3Id;
+ }
+
+ public void setS3Id(final long s3Id) {
+ this.s3Id = s3Id;
+ }
+
+ public long getTemplateId() {
+ return this.templateId;
+ }
+
+ public void setTemplateId(final long templateId) {
+ this.templateId = templateId;
+ }
+
+ public Date getCreated() {
+ return this.created;
+ }
+
+ public void setCreated(final Date created) {
+ this.created = created;
+ }
+
+ public Long getSize() {
+ return this.size;
+ }
+
+ public void setSize(final Long size) {
+ this.size = size;
+ }
+
+ public Long getPhysicalSize() {
+ return this.physicalSize;
+ }
+
+ public void setPhysicalSize(final Long physicalSize) {
+ this.physicalSize = physicalSize;
+ }
+
+ @Override
+ public String toString() {
+
+ final StringBuilder stringBuilder = new StringBuilder(
+ "VMTemplateS3VO [ id: ").append(id).append(", created: ")
+ .append(DateFormat.getDateTimeInstance().format(created))
+ .append(", physicalSize: ").append(physicalSize)
+ .append(", size: ").append(size).append(", templateId: ")
+ .append(templateId).append(", s3Id: ").append(s3Id)
+ .append(" ]");
+
+ return stringBuilder.toString();
+
+ }
+
+}
diff --git a/core/src/com/cloud/storage/resource/NfsSecondaryStorageResource.java b/core/src/com/cloud/storage/resource/NfsSecondaryStorageResource.java
index 3b4cc8f4da9..a4bea9df2b4 100755
--- a/core/src/com/cloud/storage/resource/NfsSecondaryStorageResource.java
+++ b/core/src/com/cloud/storage/resource/NfsSecondaryStorageResource.java
@@ -16,10 +16,20 @@
// under the License.
package com.cloud.storage.resource;
+import static com.cloud.utils.S3Utils.deleteDirectory;
+import static com.cloud.utils.S3Utils.getDirectory;
+import static com.cloud.utils.S3Utils.putDirectory;
+import static com.cloud.utils.StringUtils.join;
+import static com.cloud.utils.db.GlobalLock.executeWithNoWaitLock;
+import static java.lang.String.format;
+import static java.util.Arrays.asList;
+import static org.apache.commons.lang.StringUtils.substringAfterLast;
+
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileWriter;
+import java.io.FilenameFilter;
import java.io.IOException;
import java.io.InputStream;
import java.math.BigInteger;
@@ -32,6 +42,7 @@ import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.UUID;
+import java.util.concurrent.Callable;
import javax.naming.ConfigurationException;
@@ -46,6 +57,9 @@ import com.cloud.agent.api.ComputeChecksumCommand;
import com.cloud.agent.api.DeleteObjectFromSwiftCommand;
import com.cloud.agent.api.DeleteSnapshotBackupCommand;
import com.cloud.agent.api.DeleteSnapshotsDirCommand;
+import com.cloud.agent.api.DeleteTemplateFromS3Command;
+import com.cloud.agent.api.DownloadSnapshotFromS3Command;
+import com.cloud.agent.api.DownloadTemplateFromS3ToSecondaryStorageCommand;
import com.cloud.agent.api.GetStorageStatsAnswer;
import com.cloud.agent.api.GetStorageStatsCommand;
import com.cloud.agent.api.PingCommand;
@@ -60,6 +74,8 @@ import com.cloud.agent.api.SecStorageSetupCommand.Certificates;
import com.cloud.agent.api.StartupSecondaryStorageCommand;
import com.cloud.agent.api.SecStorageVMSetupCommand;
import com.cloud.agent.api.StartupCommand;
+import com.cloud.agent.api.StartupSecondaryStorageCommand;
+import com.cloud.agent.api.UploadTemplateToS3FromSecondaryStorageCommand;
import com.cloud.agent.api.downloadSnapshotFromSwiftCommand;
import com.cloud.agent.api.downloadTemplateFromSwiftToSecondaryStorageCommand;
import com.cloud.agent.api.uploadTemplateToSwiftFromSecondaryStorageCommand;
@@ -75,6 +91,7 @@ import com.cloud.agent.api.storage.ListVolumeAnswer;
import com.cloud.agent.api.storage.ListVolumeCommand;
import com.cloud.agent.api.storage.UploadCommand;
import com.cloud.agent.api.storage.ssCommand;
+import com.cloud.agent.api.to.S3TO;
import com.cloud.agent.api.to.SwiftTO;
import com.cloud.exception.InternalErrorException;
import com.cloud.host.Host;
@@ -89,6 +106,9 @@ import com.cloud.storage.template.TemplateLocation;
import com.cloud.storage.template.UploadManager;
import com.cloud.storage.template.UploadManagerImpl;
import com.cloud.utils.NumbersUtil;
+import com.cloud.utils.S3Utils;
+import com.cloud.utils.S3Utils.FileNamingStrategy;
+import com.cloud.utils.S3Utils.ObjectNamingStrategy;
import com.cloud.utils.component.ComponentLocator;
import com.cloud.utils.exception.CloudRuntimeException;
import com.cloud.utils.net.NetUtils;
@@ -96,8 +116,15 @@ import com.cloud.utils.script.OutputInterpreter;
import com.cloud.utils.script.Script;
import com.cloud.vm.SecondaryStorageVm;
-public class NfsSecondaryStorageResource extends ServerResourceBase implements SecondaryStorageResource {
- private static final Logger s_logger = Logger.getLogger(NfsSecondaryStorageResource.class);
+public class NfsSecondaryStorageResource extends ServerResourceBase implements
+ SecondaryStorageResource {
+
+ private static final Logger s_logger = Logger
+ .getLogger(NfsSecondaryStorageResource.class);
+
+ private static final String TEMPLATE_ROOT_DIR = "template/tmpl";
+ private static final String SNAPSHOT_ROOT_DIR = "snapshots";
+
int _timeout;
String _instance;
@@ -167,16 +194,24 @@ public class NfsSecondaryStorageResource extends ServerResourceBase implements S
return execute((ListVolumeCommand)cmd);
}else if (cmd instanceof downloadSnapshotFromSwiftCommand){
return execute((downloadSnapshotFromSwiftCommand)cmd);
+ } else if (cmd instanceof DownloadSnapshotFromS3Command) {
+ return execute((DownloadSnapshotFromS3Command) cmd);
} else if (cmd instanceof DeleteSnapshotBackupCommand){
return execute((DeleteSnapshotBackupCommand)cmd);
} else if (cmd instanceof DeleteSnapshotsDirCommand){
return execute((DeleteSnapshotsDirCommand)cmd);
} else if (cmd instanceof downloadTemplateFromSwiftToSecondaryStorageCommand) {
return execute((downloadTemplateFromSwiftToSecondaryStorageCommand) cmd);
+ } else if (cmd instanceof DownloadTemplateFromS3ToSecondaryStorageCommand) {
+ return execute((DownloadTemplateFromS3ToSecondaryStorageCommand) cmd);
} else if (cmd instanceof uploadTemplateToSwiftFromSecondaryStorageCommand) {
return execute((uploadTemplateToSwiftFromSecondaryStorageCommand) cmd);
+ } else if (cmd instanceof UploadTemplateToS3FromSecondaryStorageCommand) {
+ return execute((UploadTemplateToS3FromSecondaryStorageCommand) cmd);
} else if (cmd instanceof DeleteObjectFromSwiftCommand) {
return execute((DeleteObjectFromSwiftCommand) cmd);
+ } else if (cmd instanceof DeleteTemplateFromS3Command) {
+ return execute((DeleteTemplateFromS3Command) cmd);
} else if (cmd instanceof CleanupSnapshotBackupCommand){
return execute((CleanupSnapshotBackupCommand)cmd);
} else {
@@ -184,6 +219,69 @@ public class NfsSecondaryStorageResource extends ServerResourceBase implements S
}
}
+ @SuppressWarnings("unchecked")
+ private String determineS3TemplateDirectory(final Long accountId,
+ final Long templateId) {
+ return join(asList(TEMPLATE_ROOT_DIR, accountId, templateId),
+ S3Utils.SEPARATOR);
+ }
+
+ @SuppressWarnings("unchecked")
+ private String determineStorageTemplatePath(final String storagePath,
+ final Long accountId, final Long templateId) {
+ return join(
+ asList(getRootDir(storagePath), TEMPLATE_ROOT_DIR, accountId,
+ templateId), File.separator);
+ }
+
+ private Answer execute(
+ final DownloadTemplateFromS3ToSecondaryStorageCommand cmd) {
+
+ final S3TO s3 = cmd.getS3();
+ final String storagePath = cmd.getStoragePath();
+ final Long accountId = cmd.getAccountId();
+ final Long templateId = cmd.getTemplateId();
+
+ try {
+
+ final File downloadDirectory = _storage
+ .getFile(determineStorageTemplatePath(storagePath,
+ accountId, templateId));
+ downloadDirectory.mkdirs();
+
+ if (!downloadDirectory.exists()) {
+ final String errMsg = format(
+ "Unable to create directory "
+ + "download directory %1$s for download of template id "
+ + "%2$s from S3.", downloadDirectory.getName(),
+ templateId);
+ s_logger.error(errMsg);
+ return new Answer(cmd, false, errMsg);
+ }
+
+ getDirectory(s3, s3.getBucketName(),
+ determineS3TemplateDirectory(accountId, templateId),
+ downloadDirectory, new FileNamingStrategy() {
+ @Override
+ public String determineFileName(final String key) {
+ return substringAfterLast(key, S3Utils.SEPARATOR);
+ }
+ });
+
+ return new Answer(cmd, true, format("Successfully downloaded "
+ + "template id %1$s from S3 to directory %2$s", templateId,
+ downloadDirectory.getName()));
+
+ } catch (Exception e) {
+
+ final String errMsg = format("Failed to upload template id %1$s "
+ + "due to $2%s", templateId, e.getMessage());
+ s_logger.error(errMsg, e);
+ return new Answer(cmd, false, errMsg);
+
+ }
+
+ }
private Answer execute(downloadTemplateFromSwiftToSecondaryStorageCommand cmd) {
SwiftTO swift = cmd.getSwift();
@@ -255,6 +353,83 @@ public class NfsSecondaryStorageResource extends ServerResourceBase implements S
}
}
+ private Answer execute(UploadTemplateToS3FromSecondaryStorageCommand cmd) {
+
+ final S3TO s3 = cmd.getS3();
+ final Long accountId = cmd.getAccountId();
+ final Long templateId = cmd.getTemplateId();
+
+ try {
+
+ final String templatePath = determineStorageTemplatePath(
+ cmd.getStoragePath(), accountId, templateId);
+
+ if (s_logger.isDebugEnabled()) {
+ s_logger.debug("Found template id " + templateId
+ + " account id " + accountId + " from directory "
+ + templatePath + " to upload to S3.");
+ }
+
+ if (!_storage.isDirectory(templatePath)) {
+ final String errMsg = format("S3 Sync Failure: Directory %1$s"
+ + "for template id %2$s does not exist.", templatePath,
+ templateId);
+ s_logger.error(errMsg);
+ return new Answer(cmd, false, errMsg);
+ }
+
+ if (!_storage.isFile(templatePath + "/template.properties")) {
+ final String errMsg = format("S3 Sync Failure: Template id "
+ + "%1$s does not exist on the file system.",
+ templatePath);
+ s_logger.error(errMsg);
+ return new Answer(cmd, false, errMsg);
+ }
+
+ if (s_logger.isDebugEnabled()) {
+ s_logger.debug(format(
+ "Pushing template id %1$s from %2$s to S3...",
+ templateId, templatePath));
+ }
+
+ final String bucket = s3.getBucketName();
+ putDirectory(s3, bucket, _storage.getFile(templatePath),
+ new FilenameFilter() {
+ @Override
+ public boolean accept(final File directory,
+ final String fileName) {
+ return !fileName.startsWith(".");
+ }
+ }, new ObjectNamingStrategy() {
+ @Override
+ public String determineKey(final File file) {
+ s_logger.debug(String
+ .format("Determining key using account id %1$s and template id %2$s",
+ accountId, templateId));
+ return join(
+ asList(determineS3TemplateDirectory(
+ accountId, templateId), file
+ .getName()), S3Utils.SEPARATOR);
+ }
+ });
+
+ return new Answer(
+ cmd,
+ true,
+ format("Uploaded the contents of directory %1$s for template id %2$s to S3 bucket %3$s",
+ templatePath, templateId, bucket));
+
+ } catch (Exception e) {
+
+ final String errMsg = format("Failed to upload template id %1$s",
+ templateId);
+ s_logger.error(errMsg, e);
+ return new Answer(cmd, false, errMsg);
+
+ }
+
+ }
+
private Answer execute(DeleteObjectFromSwiftCommand cmd) {
SwiftTO swift = cmd.getSwift();
String container = cmd.getContainer();
@@ -278,6 +453,47 @@ public class NfsSecondaryStorageResource extends ServerResourceBase implements S
}
+ private Answer execute(final DeleteTemplateFromS3Command cmd) {
+
+ final S3TO s3 = cmd.getS3();
+ final Long accountId = cmd.getAccountId();
+ final Long templateId = cmd.getTemplateId();
+
+ if (accountId == null || (accountId != null && accountId <= 0)) {
+ final String errorMessage = "No account id specified for S3 template deletion.";
+ s_logger.error(errorMessage);
+ return new Answer(cmd, false, errorMessage);
+ }
+
+ if (templateId == null || (templateId != null && templateId <= 0)) {
+ final String errorMessage = "No template id specified for S3 template deletion.";
+ s_logger.error(errorMessage);
+ return new Answer(cmd, false, errorMessage);
+ }
+
+ if (s3 == null) {
+ final String errorMessge = "No S3 client options provided";
+ s_logger.error(errorMessge);
+ return new Answer(cmd, false, errorMessge);
+ }
+
+ final String bucket = s3.getBucketName();
+ try {
+ deleteDirectory(s3, bucket,
+ determineS3TemplateDirectory(templateId, accountId));
+ return new Answer(cmd, true, String.format(
+ "Deleted template %1%s from bucket %2$s.", templateId,
+ bucket));
+ } catch (Exception e) {
+ final String errorMessage = String
+ .format("Failed to delete templaet id %1$s from bucket %2$s due to the following error: %3$s",
+ templateId, bucket, e.getMessage());
+ s_logger.error(errorMessage, e);
+ return new Answer(cmd, false, errorMessage);
+ }
+
+ }
+
String swiftDownload(SwiftTO swift, String container, String rfilename, String lFullPath) {
Script command = new Script("/bin/bash", s_logger);
command.add("-c");
@@ -450,6 +666,110 @@ public class NfsSecondaryStorageResource extends ServerResourceBase implements S
}
}
+ public Answer execute(final DownloadSnapshotFromS3Command cmd) {
+
+ final S3TO s3 = cmd.getS3();
+ final String secondaryStorageUrl = cmd.getSecondaryStorageUrl();
+ final Long accountId = cmd.getAccountId();
+ final Long volumeId = cmd.getVolumeId();
+
+ try {
+
+ executeWithNoWaitLock(determineSnapshotLockId(accountId, volumeId),
+ new Callable() {
+
+ @Override
+ public Void call() throws Exception {
+
+ final String directoryName = determineSnapshotLocalDirectory(
+ secondaryStorageUrl, accountId, volumeId);
+
+ String result = createLocalDir(directoryName);
+ if (result != null) {
+ throw new InternalErrorException(
+ format("Failed to create directory %1$s during S3 snapshot download.",
+ directoryName));
+ }
+
+ final String snapshotFileName = determineSnapshotBackupFilename(cmd
+ .getSnapshotUuid());
+ final String key = determineSnapshotS3Key(
+ accountId, volumeId, snapshotFileName);
+ final File targetFile = S3Utils.getFile(s3,
+ s3.getBucketName(), key,
+ _storage.getFile(directoryName),
+ new FileNamingStrategy() {
+
+ @Override
+ public String determineFileName(
+ String key) {
+ return snapshotFileName;
+ }
+
+ });
+
+ if (cmd.getParent() != null) {
+
+ final String parentPath = join(
+ File.pathSeparator, directoryName,
+ determineSnapshotBackupFilename(cmd
+ .getParent()));
+ result = setVhdParent(
+ targetFile.getAbsolutePath(),
+ parentPath);
+ if (result != null) {
+ throw new InternalErrorException(
+ format("Failed to set the parent for backup %1$s to %2$s due to %3$s.",
+ targetFile
+ .getAbsolutePath(),
+ parentPath, result));
+ }
+
+ }
+
+ return null;
+
+ }
+
+ });
+
+ return new Answer(
+ cmd,
+ true,
+ format("Succesfully retrieved volume id %1$s for account id %2$s to %3$s from S3.",
+ volumeId, accountId, secondaryStorageUrl));
+
+ } catch (Exception e) {
+ final String errMsg = format(
+ "Failed to retrieve volume id %1$s for account id %2$s to %3$s from S3 due to exception %4$s",
+ volumeId, accountId, secondaryStorageUrl, e.getMessage());
+ s_logger.error(errMsg);
+ return new Answer(cmd, false, errMsg);
+ }
+
+ }
+
+ private String determineSnapshotS3Directory(final Long accountId,
+ final Long volumeId) {
+ return join(S3Utils.SEPARATOR, SNAPSHOT_ROOT_DIR, accountId, volumeId);
+ }
+
+ private String determineSnapshotS3Key(final Long accountId,
+ final Long volumeId, final String snapshotFileName) {
+
+ final String directoryName = determineSnapshotS3Directory(accountId,
+ volumeId);
+ return join(S3Utils.SEPARATOR, directoryName, snapshotFileName);
+
+ }
+
+ private String determineSnapshotLocalDirectory(
+ final String secondaryStorageUrl, final Long accountId,
+ final Long volumeId) {
+ return join(File.pathSeparator, getRootDir(secondaryStorageUrl),
+ SNAPSHOT_ROOT_DIR, accountId, volumeId);
+ }
+
public Answer execute(downloadSnapshotFromSwiftCommand cmd){
SwiftTO swift = cmd.getSwift();
String secondaryStorageUrl = cmd.getSecondaryStorageUrl();
@@ -621,6 +941,92 @@ public class NfsSecondaryStorageResource extends ServerResourceBase implements S
}
}
+ private String deleteSnapshotBackupFromLocalFileSystem(
+ final String secondaryStorageUrl, final Long accountId,
+ final Long volumeId, final String name, final Boolean deleteAllFlag) {
+
+ final String lPath = determineSnapshotLocalDirectory(
+ secondaryStorageUrl, accountId, volumeId)
+ + File.pathSeparator
+ + (deleteAllFlag ? "*" : "*" + name + "*");
+
+ final String result = deleteLocalFile(lPath);
+
+ if (result != null) {
+ return "failed to delete snapshot " + lPath + " , err=" + result;
+ }
+
+ return null;
+
+ }
+
+ private String deleteSnapshotBackupfromS3(final S3TO s3,
+ final String secondaryStorageUrl, final Long accountId,
+ final Long volumeId, final String name, final Boolean deleteAllFlag) {
+
+ try {
+
+ final String bucket = s3.getBucketName();
+
+ final String result = executeWithNoWaitLock(
+ determineSnapshotLockId(accountId, volumeId),
+ new Callable() {
+
+ @Override
+ public String call() throws Exception {
+
+ final String innerResult = deleteSnapshotBackupFromLocalFileSystem(
+ secondaryStorageUrl, accountId, volumeId,
+ name, deleteAllFlag);
+ if (innerResult != null) {
+ return innerResult;
+ }
+
+ if (deleteAllFlag) {
+ S3Utils.deleteDirectory(
+ s3,
+ bucket,
+ determineSnapshotS3Directory(accountId,
+ volumeId));
+ } else {
+ S3Utils.deleteObject(
+ s3,
+ bucket,
+ determineSnapshotS3Key(
+ accountId,
+ volumeId,
+ determineSnapshotBackupFilename(name)));
+ }
+
+ return null;
+
+ }
+
+ });
+
+ return result;
+
+ } catch (Exception e) {
+
+ s_logger.error(
+ String.format(
+ "Failed to delete snapshot backup for account id %1$s volume id %2$sfrom S3.",
+ accountId, volumeId), e);
+ return e.getMessage();
+
+ }
+
+ }
+
+ private String determineSnapshotBackupFilename(final String snapshotUuid) {
+ return snapshotUuid + ".vhd";
+ }
+
+ private String determineSnapshotLockId(final Long accountId,
+ final Long volumeId) {
+ return join("_", "SNAPSHOT", accountId, volumeId);
+ }
+
protected Answer execute(final DeleteSnapshotBackupCommand cmd) {
String secondaryStorageUrl = cmd.getSecondaryStorageUrl();
Long accountId = cmd.getAccountId();
@@ -628,21 +1034,22 @@ public class NfsSecondaryStorageResource extends ServerResourceBase implements S
String name = cmd.getSnapshotUuid();
try {
SwiftTO swift = cmd.getSwift();
+ S3TO s3 = cmd.getS3();
if (swift == null) {
- String parent = getRootDir(secondaryStorageUrl);
- String filename;
- if (cmd.isAll()) {
- filename = "*";
-
- } else {
- filename = "*" + name + "*";
- }
- String lPath = parent + "/snapshots/" + String.valueOf(accountId) + "/" + String.valueOf(volumeId) + "/" + filename;
- String result = deleteLocalFile(lPath);
+ final String result = deleteSnapshotBackupFromLocalFileSystem(
+ secondaryStorageUrl, accountId, volumeId, name,
+ cmd.isAll());
if (result != null) {
- String errMsg = "failed to delete snapshot " + lPath + " , err=" + result;
- s_logger.warn(errMsg);
- return new Answer(cmd, false, errMsg);
+ s_logger.warn(result);
+ return new Answer(cmd, false, result);
+ }
+ } else if (s3 != null) {
+ final String result = deleteSnapshotBackupfromS3(s3,
+ secondaryStorageUrl, accountId, volumeId, name,
+ cmd.isAll());
+ if (result != null) {
+ s_logger.warn(result);
+ return new Answer(cmd, false, result);
}
} else {
String filename;
diff --git a/deps/XenServerJava/src/com/xensource/xenapi/APIVersion.java b/deps/XenServerJava/src/com/xensource/xenapi/APIVersion.java
index 763b98f2260..174cf5ad581 100644
--- a/deps/XenServerJava/src/com/xensource/xenapi/APIVersion.java
+++ b/deps/XenServerJava/src/com/xensource/xenapi/APIVersion.java
@@ -1,18 +1,18 @@
/* Copyright (c) Citrix Systems, Inc.
* All rights reserved.
- *
+ *
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
- *
+ *
* 1) Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
- *
+ *
* 2) 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.
- *
+ *
* 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
@@ -31,16 +31,28 @@ package com.xensource.xenapi;
public enum APIVersion
{
- API_1_1, API_1_2, API_1_3, API_1_4, API_1_5, API_1_6, API_1_7, UNKNOWN;
+ API_1_1, API_1_2, API_1_3, API_1_4, API_1_5, API_1_6, API_1_7, API_1_8, API_1_9, API_1_10, UNKNOWN;
public static APIVersion latest()
{
- return API_1_7;
+ return API_1_10;
}
public static APIVersion fromMajorMinor(long major, long minor)
{
- if (major == 1 && minor == 7)
+ if (major == 1 && minor == 10)
+ {
+ return API_1_10;
+ }
+ else if (major == 1 && minor == 9)
+ {
+ return API_1_9;
+ }
+ else if (major == 1 && minor == 8)
+ {
+ return API_1_8;
+ }
+ else if (major == 1 && minor == 7)
{
return API_1_7;
}
@@ -93,6 +105,12 @@ public enum APIVersion
return "1.6";
case API_1_7:
return "1.7";
+ case API_1_8:
+ return "1.8";
+ case API_1_9:
+ return "1.9";
+ case API_1_10:
+ return "1.10";
default:
return "Unknown";
}
diff --git a/deps/XenServerJava/src/com/xensource/xenapi/Auth.java b/deps/XenServerJava/src/com/xensource/xenapi/Auth.java
index 1bf615e1ea4..fd84390d2a5 100644
--- a/deps/XenServerJava/src/com/xensource/xenapi/Auth.java
+++ b/deps/XenServerJava/src/com/xensource/xenapi/Auth.java
@@ -1,18 +1,19 @@
-/* Copyright (c) Citrix Systems, Inc.
+/*
+ * Copyright (c) Citrix Systems, Inc.
* All rights reserved.
- *
+ *
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
- *
+ *
* 1) Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
- *
+ *
* 2) 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.
- *
+ *
* 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
@@ -27,6 +28,7 @@
* OF THE POSSIBILITY OF SUCH DAMAGE.
*/
+
package com.xensource.xenapi;
import com.xensource.xenapi.Types.BadServerResponse;
@@ -109,4 +111,4 @@ public class Auth extends XenAPIObject {
return Types.toSetOfString(result);
}
-}
+}
\ No newline at end of file
diff --git a/deps/XenServerJava/src/com/xensource/xenapi/Blob.java b/deps/XenServerJava/src/com/xensource/xenapi/Blob.java
index 7d3ad582264..eeff12e709b 100644
--- a/deps/XenServerJava/src/com/xensource/xenapi/Blob.java
+++ b/deps/XenServerJava/src/com/xensource/xenapi/Blob.java
@@ -1,18 +1,19 @@
-/* Copyright (c) Citrix Systems, Inc.
+/*
+ * Copyright (c) Citrix Systems, Inc.
* All rights reserved.
- *
+ *
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
- *
+ *
* 1) Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
- *
+ *
* 2) 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.
- *
+ *
* 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
@@ -27,6 +28,7 @@
* OF THE POSSIBILITY OF SUCH DAMAGE.
*/
+
package com.xensource.xenapi;
import com.xensource.xenapi.Types.BadServerResponse;
@@ -51,7 +53,7 @@ import org.apache.xmlrpc.XmlRpcException;
public class Blob extends XenAPIObject {
/**
- * The XenAPI reference to this object.
+ * The XenAPI reference (OpaqueRef) to this object.
*/
protected final String ref;
@@ -62,6 +64,9 @@ public class Blob extends XenAPIObject {
this.ref = ref;
}
+ /**
+ * @return The XenAPI reference (OpaqueRef) to this object.
+ */
public String toWireString() {
return this.ref;
}
@@ -99,6 +104,7 @@ public class Blob extends XenAPIObject {
print.printf("%1$20s: %2$s\n", "nameLabel", this.nameLabel);
print.printf("%1$20s: %2$s\n", "nameDescription", this.nameDescription);
print.printf("%1$20s: %2$s\n", "size", this.size);
+ print.printf("%1$20s: %2$s\n", "_public", this._public);
print.printf("%1$20s: %2$s\n", "lastUpdated", this.lastUpdated);
print.printf("%1$20s: %2$s\n", "mimeType", this.mimeType);
return writer.toString();
@@ -113,6 +119,7 @@ public class Blob extends XenAPIObject {
map.put("name_label", this.nameLabel == null ? "" : this.nameLabel);
map.put("name_description", this.nameDescription == null ? "" : this.nameDescription);
map.put("size", this.size == null ? 0 : this.size);
+ map.put("public", this._public == null ? false : this._public);
map.put("last_updated", this.lastUpdated == null ? new Date(0) : this.lastUpdated);
map.put("mime_type", this.mimeType == null ? "" : this.mimeType);
return map;
@@ -127,13 +134,17 @@ public class Blob extends XenAPIObject {
*/
public String nameLabel;
/**
- * a notes field containg human-readable description
+ * a notes field containing human-readable description
*/
public String nameDescription;
/**
* Size of the binary data, in bytes
*/
public Long size;
+ /**
+ * True if the blob is publicly accessible
+ */
+ public Boolean _public;
/**
* Time at which the data in the blob was last updated
*/
@@ -265,6 +276,23 @@ public class Blob extends XenAPIObject {
return Types.toLong(result);
}
+ /**
+ * Get the public field of the given blob.
+ *
+ * @return value of the field
+ */
+ public Boolean getPublic(Connection c) throws
+ BadServerResponse,
+ XenAPIException,
+ XmlRpcException {
+ String method_call = "blob.get_public";
+ String session = c.getSessionReference();
+ Object[] method_params = {Marshalling.toXMLRPC(session), Marshalling.toXMLRPC(this.ref)};
+ Map response = c.dispatch(method_call, method_params);
+ Object result = response.get("Value");
+ return Types.toBoolean(result);
+ }
+
/**
* Get the last_updated field of the given blob.
*
@@ -331,26 +359,43 @@ public class Blob extends XenAPIObject {
return;
}
+ /**
+ * Set the public field of the given blob.
+ *
+ * @param _public New value to set
+ */
+ public void setPublic(Connection c, Boolean _public) throws
+ BadServerResponse,
+ XenAPIException,
+ XmlRpcException {
+ String method_call = "blob.set_public";
+ String session = c.getSessionReference();
+ Object[] method_params = {Marshalling.toXMLRPC(session), Marshalling.toXMLRPC(this.ref), Marshalling.toXMLRPC(_public)};
+ Map response = c.dispatch(method_call, method_params);
+ return;
+ }
+
/**
* Create a placeholder for a binary blob
*
* @param mimeType The mime-type of the blob. Defaults to 'application/octet-stream' if the empty string is supplied
+ * @param _public True if the blob should be publicly available
* @return The reference to the created blob
*/
- public static Blob create(Connection c, String mimeType) throws
+ public static Blob create(Connection c, String mimeType, Boolean _public) throws
BadServerResponse,
XenAPIException,
XmlRpcException {
String method_call = "blob.create";
String session = c.getSessionReference();
- Object[] method_params = {Marshalling.toXMLRPC(session), Marshalling.toXMLRPC(mimeType)};
+ Object[] method_params = {Marshalling.toXMLRPC(session), Marshalling.toXMLRPC(mimeType), Marshalling.toXMLRPC(_public)};
Map response = c.dispatch(method_call, method_params);
Object result = response.get("Value");
return Types.toBlob(result);
}
/**
- *
+ *
*
*/
public void destroy(Connection c) throws
@@ -398,4 +443,4 @@ public class Blob extends XenAPIObject {
return Types.toMapOfBlobBlobRecord(result);
}
-}
+}
\ No newline at end of file
diff --git a/deps/XenServerJava/src/com/xensource/xenapi/Bond.java b/deps/XenServerJava/src/com/xensource/xenapi/Bond.java
index ee67e3c49e0..d9d30459e6e 100644
--- a/deps/XenServerJava/src/com/xensource/xenapi/Bond.java
+++ b/deps/XenServerJava/src/com/xensource/xenapi/Bond.java
@@ -1,18 +1,19 @@
-/* Copyright (c) Citrix Systems, Inc.
+/*
+ * Copyright (c) Citrix Systems, Inc.
* All rights reserved.
- *
+ *
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
- *
+ *
* 1) Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
- *
+ *
* 2) 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.
- *
+ *
* 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
@@ -27,6 +28,7 @@
* OF THE POSSIBILITY OF SUCH DAMAGE.
*/
+
package com.xensource.xenapi;
import com.xensource.xenapi.Types.BadServerResponse;
@@ -44,14 +46,14 @@ import java.util.Set;
import org.apache.xmlrpc.XmlRpcException;
/**
- *
+ *
*
* @author Citrix Systems, Inc.
*/
public class Bond extends XenAPIObject {
/**
- * The XenAPI reference to this object.
+ * The XenAPI reference (OpaqueRef) to this object.
*/
protected final String ref;
@@ -62,6 +64,9 @@ public class Bond extends XenAPIObject {
this.ref = ref;
}
+ /**
+ * @return The XenAPI reference (OpaqueRef) to this object.
+ */
public String toWireString() {
return this.ref;
}
@@ -99,6 +104,10 @@ public class Bond extends XenAPIObject {
print.printf("%1$20s: %2$s\n", "master", this.master);
print.printf("%1$20s: %2$s\n", "slaves", this.slaves);
print.printf("%1$20s: %2$s\n", "otherConfig", this.otherConfig);
+ print.printf("%1$20s: %2$s\n", "primarySlave", this.primarySlave);
+ print.printf("%1$20s: %2$s\n", "mode", this.mode);
+ print.printf("%1$20s: %2$s\n", "properties", this.properties);
+ print.printf("%1$20s: %2$s\n", "linksUp", this.linksUp);
return writer.toString();
}
@@ -111,6 +120,10 @@ public class Bond extends XenAPIObject {
map.put("master", this.master == null ? new PIF("OpaqueRef:NULL") : this.master);
map.put("slaves", this.slaves == null ? new LinkedHashSet() : this.slaves);
map.put("other_config", this.otherConfig == null ? new HashMap() : this.otherConfig);
+ map.put("primary_slave", this.primarySlave == null ? new PIF("OpaqueRef:NULL") : this.primarySlave);
+ map.put("mode", this.mode == null ? Types.BondMode.UNRECOGNIZED : this.mode);
+ map.put("properties", this.properties == null ? new HashMap() : this.properties);
+ map.put("links_up", this.linksUp == null ? 0 : this.linksUp);
return map;
}
@@ -130,6 +143,22 @@ public class Bond extends XenAPIObject {
* additional configuration
*/
public Map otherConfig;
+ /**
+ * The PIF of which the IP configuration and MAC were copied to the bond, and which will receive all configuration/VLANs/VIFs on the bond if the bond is destroyed
+ */
+ public PIF primarySlave;
+ /**
+ * The algorithm used to distribute traffic among the bonded NICs
+ */
+ public Types.BondMode mode;
+ /**
+ * Additional configuration properties specific to the bond mode.
+ */
+ public Map properties;
+ /**
+ * Number of links up in this bond
+ */
+ public Long linksUp;
}
/**
@@ -235,6 +264,74 @@ public class Bond extends XenAPIObject {
return Types.toMapOfStringString(result);
}
+ /**
+ * Get the primary_slave field of the given Bond.
+ *
+ * @return value of the field
+ */
+ public PIF getPrimarySlave(Connection c) throws
+ BadServerResponse,
+ XenAPIException,
+ XmlRpcException {
+ String method_call = "Bond.get_primary_slave";
+ String session = c.getSessionReference();
+ Object[] method_params = {Marshalling.toXMLRPC(session), Marshalling.toXMLRPC(this.ref)};
+ Map response = c.dispatch(method_call, method_params);
+ Object result = response.get("Value");
+ return Types.toPIF(result);
+ }
+
+ /**
+ * Get the mode field of the given Bond.
+ *
+ * @return value of the field
+ */
+ public Types.BondMode getMode(Connection c) throws
+ BadServerResponse,
+ XenAPIException,
+ XmlRpcException {
+ String method_call = "Bond.get_mode";
+ String session = c.getSessionReference();
+ Object[] method_params = {Marshalling.toXMLRPC(session), Marshalling.toXMLRPC(this.ref)};
+ Map response = c.dispatch(method_call, method_params);
+ Object result = response.get("Value");
+ return Types.toBondMode(result);
+ }
+
+ /**
+ * Get the properties field of the given Bond.
+ *
+ * @return value of the field
+ */
+ public Map getProperties(Connection c) throws
+ BadServerResponse,
+ XenAPIException,
+ XmlRpcException {
+ String method_call = "Bond.get_properties";
+ String session = c.getSessionReference();
+ Object[] method_params = {Marshalling.toXMLRPC(session), Marshalling.toXMLRPC(this.ref)};
+ Map response = c.dispatch(method_call, method_params);
+ Object result = response.get("Value");
+ return Types.toMapOfStringString(result);
+ }
+
+ /**
+ * Get the links_up field of the given Bond.
+ *
+ * @return value of the field
+ */
+ public Long getLinksUp(Connection c) throws
+ BadServerResponse,
+ XenAPIException,
+ XmlRpcException {
+ String method_call = "Bond.get_links_up";
+ String session = c.getSessionReference();
+ Object[] method_params = {Marshalling.toXMLRPC(session), Marshalling.toXMLRPC(this.ref)};
+ Map response = c.dispatch(method_call, method_params);
+ Object result = response.get("Value");
+ return Types.toLong(result);
+ }
+
/**
* Set the other_config field of the given Bond.
*
@@ -289,16 +386,18 @@ public class Bond extends XenAPIObject {
*
* @param network Network to add the bonded PIF to
* @param members PIFs to add to this bond
- * @param MAC The MAC address to use on the bond itself. If this parameter is the empty string then the bond will inherit its MAC address from the first of the specified 'members'
+ * @param MAC The MAC address to use on the bond itself. If this parameter is the empty string then the bond will inherit its MAC address from the primary slave.
+ * @param mode Bonding mode to use for the new bond
+ * @param properties Additional configuration parameters specific to the bond mode
* @return Task
*/
- public static Task createAsync(Connection c, Network network, Set members, String MAC) throws
+ public static Task createAsync(Connection c, Network network, Set members, String MAC, Types.BondMode mode, Map properties) throws
BadServerResponse,
XenAPIException,
XmlRpcException {
String method_call = "Async.Bond.create";
String session = c.getSessionReference();
- Object[] method_params = {Marshalling.toXMLRPC(session), Marshalling.toXMLRPC(network), Marshalling.toXMLRPC(members), Marshalling.toXMLRPC(MAC)};
+ Object[] method_params = {Marshalling.toXMLRPC(session), Marshalling.toXMLRPC(network), Marshalling.toXMLRPC(members), Marshalling.toXMLRPC(MAC), Marshalling.toXMLRPC(mode), Marshalling.toXMLRPC(properties)};
Map response = c.dispatch(method_call, method_params);
Object result = response.get("Value");
return Types.toTask(result);
@@ -309,16 +408,18 @@ public class Bond extends XenAPIObject {
*
* @param network Network to add the bonded PIF to
* @param members PIFs to add to this bond
- * @param MAC The MAC address to use on the bond itself. If this parameter is the empty string then the bond will inherit its MAC address from the first of the specified 'members'
+ * @param MAC The MAC address to use on the bond itself. If this parameter is the empty string then the bond will inherit its MAC address from the primary slave.
+ * @param mode Bonding mode to use for the new bond
+ * @param properties Additional configuration parameters specific to the bond mode
* @return The reference of the created Bond object
*/
- public static Bond create(Connection c, Network network, Set members, String MAC) throws
+ public static Bond create(Connection c, Network network, Set members, String MAC, Types.BondMode mode, Map properties) throws
BadServerResponse,
XenAPIException,
XmlRpcException {
String method_call = "Bond.create";
String session = c.getSessionReference();
- Object[] method_params = {Marshalling.toXMLRPC(session), Marshalling.toXMLRPC(network), Marshalling.toXMLRPC(members), Marshalling.toXMLRPC(MAC)};
+ Object[] method_params = {Marshalling.toXMLRPC(session), Marshalling.toXMLRPC(network), Marshalling.toXMLRPC(members), Marshalling.toXMLRPC(MAC), Marshalling.toXMLRPC(mode), Marshalling.toXMLRPC(properties)};
Map response = c.dispatch(method_call, method_params);
Object result = response.get("Value");
return Types.toBond(result);
@@ -356,6 +457,76 @@ public class Bond extends XenAPIObject {
return;
}
+ /**
+ * Change the bond mode
+ *
+ * @param value The new bond mode
+ * @return Task
+ */
+ public Task setModeAsync(Connection c, Types.BondMode value) throws
+ BadServerResponse,
+ XenAPIException,
+ XmlRpcException {
+ String method_call = "Async.Bond.set_mode";
+ String session = c.getSessionReference();
+ Object[] method_params = {Marshalling.toXMLRPC(session), Marshalling.toXMLRPC(this.ref), Marshalling.toXMLRPC(value)};
+ Map response = c.dispatch(method_call, method_params);
+ Object result = response.get("Value");
+ return Types.toTask(result);
+ }
+
+ /**
+ * Change the bond mode
+ *
+ * @param value The new bond mode
+ */
+ public void setMode(Connection c, Types.BondMode value) throws
+ BadServerResponse,
+ XenAPIException,
+ XmlRpcException {
+ String method_call = "Bond.set_mode";
+ String session = c.getSessionReference();
+ Object[] method_params = {Marshalling.toXMLRPC(session), Marshalling.toXMLRPC(this.ref), Marshalling.toXMLRPC(value)};
+ Map response = c.dispatch(method_call, method_params);
+ return;
+ }
+
+ /**
+ * Set the value of a property of the bond
+ *
+ * @param name The property name
+ * @param value The property value
+ * @return Task
+ */
+ public Task setPropertyAsync(Connection c, String name, String value) throws
+ BadServerResponse,
+ XenAPIException,
+ XmlRpcException {
+ String method_call = "Async.Bond.set_property";
+ String session = c.getSessionReference();
+ Object[] method_params = {Marshalling.toXMLRPC(session), Marshalling.toXMLRPC(this.ref), Marshalling.toXMLRPC(name), Marshalling.toXMLRPC(value)};
+ Map response = c.dispatch(method_call, method_params);
+ Object result = response.get("Value");
+ return Types.toTask(result);
+ }
+
+ /**
+ * Set the value of a property of the bond
+ *
+ * @param name The property name
+ * @param value The property value
+ */
+ public void setProperty(Connection c, String name, String value) throws
+ BadServerResponse,
+ XenAPIException,
+ XmlRpcException {
+ String method_call = "Bond.set_property";
+ String session = c.getSessionReference();
+ Object[] method_params = {Marshalling.toXMLRPC(session), Marshalling.toXMLRPC(this.ref), Marshalling.toXMLRPC(name), Marshalling.toXMLRPC(value)};
+ Map response = c.dispatch(method_call, method_params);
+ return;
+ }
+
/**
* Return a list of all the Bonds known to the system.
*
@@ -390,4 +561,4 @@ public class Bond extends XenAPIObject {
return Types.toMapOfBondBondRecord(result);
}
-}
+}
\ No newline at end of file
diff --git a/deps/XenServerJava/src/com/xensource/xenapi/Connection.java b/deps/XenServerJava/src/com/xensource/xenapi/Connection.java
index 6c205a2a605..22f64d34fd3 100644
--- a/deps/XenServerJava/src/com/xensource/xenapi/Connection.java
+++ b/deps/XenServerJava/src/com/xensource/xenapi/Connection.java
@@ -1,18 +1,18 @@
/* Copyright (c) Citrix Systems, Inc.
* All rights reserved.
- *
+ *
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
- *
+ *
* 1) Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
- *
+ *
* 2) 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.
- *
+ *
* 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
@@ -54,11 +54,11 @@ public class Connection
/**
* The version of the bindings that this class belongs to.
*/
- public static final String BINDINGS_VERSION = "5.6.100-1";
-
+ public static final String BINDINGS_VERSION = "6.1.0-1";
+
/**
* true if the connection is to the Rio edition of XenServer. Certain function calls are not allowed.
- *
+ *
* @deprecated Use getAPIVersion() instead.
*/
@Deprecated
@@ -91,12 +91,12 @@ public class Connection
/**
* Creates a connection to a particular server using a given username and password. This object can then be passed
* in to any other API calls.
- *
+ *
* This constructor calls Session.loginWithPassword, passing itself as the first parameter.
- *
+ *
* When this constructor is used, a call to dispose() (also called in the Connection's finalizer) will attempt a
* Session.logout on this connection.
- *
+ *
* @deprecated Use a constructor that takes a URL as the first parameter instead.
*/
@Deprecated
@@ -155,10 +155,10 @@ public class Connection
/**
* Creates a connection to a particular server using a given username and password. This object can then be passed
* in to any other API calls.
- *
+ *
* Note this constructor does NOT call Session.loginWithPassword; the programmer is responsible for calling it,
* passing the Connection as a parameter. No attempt to connect to the server is made until login is called.
- *
+ *
* When this constructor is used, a call to dispose() will do nothing. The programmer is responsible for manually
* logging out the Session.
*/
@@ -172,7 +172,7 @@ public class Connection
/**
* Creates a connection to a particular server using a given username and password. This object can then be passed
* in to any other API calls.
- *
+ *
* The additional sessionReference parameter must be a reference to a logged-in Session. Any method calls on this
* Connection will use it. This constructor does not call Session.loginWithPassword, and dispose() on the resulting
* Connection object does not call Session.logout. The programmer is responsible for ensuring the Session is logged
@@ -285,7 +285,7 @@ public class Connection
}
/*
- * Because the binding calls are constructing their own parameter lists, they need to be able to get to
+ * Because the binding calls are constructing their own parameter lists, they need to be able to get to
* the session reference directly. This is all rather ugly and needs redone
* Changed to public to allow easier integration with HTTP-level streaming interface,
* see CA-15447
@@ -310,17 +310,17 @@ public class Connection
response.get("Status").equals("Success"))
{
// Store the Session reference and ask the server what the
- // API version it's using is.
+ // API version it's using is.
Session session = Types.toSession(response.get("Value"));
- sessionReference = session.ref;
+ sessionReference = session.ref;
setAPIVersion(session);
}
else if (method_call.equals("session.slave_local_login_with_password") &&
response.get("Status").equals("Success"))
{
- // Store the Session reference and assume API version 1.2.
+ // Store the Session reference and assume the latest API version.
sessionReference = Types.toSession(response.get("Value")).ref;
- apiVersion = APIVersion.API_1_2;
+ apiVersion = APIVersion.latest();
}
else if (method_call.equals("session.logout"))
{
diff --git a/deps/XenServerJava/src/com/xensource/xenapi/Console.java b/deps/XenServerJava/src/com/xensource/xenapi/Console.java
index e73e685a468..c734a839629 100644
--- a/deps/XenServerJava/src/com/xensource/xenapi/Console.java
+++ b/deps/XenServerJava/src/com/xensource/xenapi/Console.java
@@ -1,18 +1,19 @@
-/* Copyright (c) Citrix Systems, Inc.
+/*
+ * Copyright (c) Citrix Systems, Inc.
* All rights reserved.
- *
+ *
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
- *
+ *
* 1) Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
- *
+ *
* 2) 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.
- *
+ *
* 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
@@ -27,6 +28,7 @@
* OF THE POSSIBILITY OF SUCH DAMAGE.
*/
+
package com.xensource.xenapi;
import com.xensource.xenapi.Types.BadServerResponse;
@@ -51,7 +53,7 @@ import org.apache.xmlrpc.XmlRpcException;
public class Console extends XenAPIObject {
/**
- * The XenAPI reference to this object.
+ * The XenAPI reference (OpaqueRef) to this object.
*/
protected final String ref;
@@ -62,6 +64,9 @@ public class Console extends XenAPIObject {
this.ref = ref;
}
+ /**
+ * @return The XenAPI reference (OpaqueRef) to this object.
+ */
public String toWireString() {
return this.ref;
}
@@ -411,4 +416,4 @@ public class Console extends XenAPIObject {
return Types.toMapOfConsoleConsoleRecord(result);
}
-}
+}
\ No newline at end of file
diff --git a/deps/XenServerJava/src/com/xensource/xenapi/Crashdump.java b/deps/XenServerJava/src/com/xensource/xenapi/Crashdump.java
index 31cf4180c9f..d1187bb4a7a 100644
--- a/deps/XenServerJava/src/com/xensource/xenapi/Crashdump.java
+++ b/deps/XenServerJava/src/com/xensource/xenapi/Crashdump.java
@@ -1,18 +1,19 @@
-/* Copyright (c) Citrix Systems, Inc.
+/*
+ * Copyright (c) Citrix Systems, Inc.
* All rights reserved.
- *
+ *
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
- *
+ *
* 1) Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
- *
+ *
* 2) 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.
- *
+ *
* 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
@@ -27,6 +28,7 @@
* OF THE POSSIBILITY OF SUCH DAMAGE.
*/
+
package com.xensource.xenapi;
import com.xensource.xenapi.Types.BadServerResponse;
@@ -51,7 +53,7 @@ import org.apache.xmlrpc.XmlRpcException;
public class Crashdump extends XenAPIObject {
/**
- * The XenAPI reference to this object.
+ * The XenAPI reference (OpaqueRef) to this object.
*/
protected final String ref;
@@ -62,6 +64,9 @@ public class Crashdump extends XenAPIObject {
this.ref = ref;
}
+ /**
+ * @return The XenAPI reference (OpaqueRef) to this object.
+ */
public String toWireString() {
return this.ref;
}
@@ -350,4 +355,4 @@ public class Crashdump extends XenAPIObject {
return Types.toMapOfCrashdumpCrashdumpRecord(result);
}
-}
+}
\ No newline at end of file
diff --git a/deps/XenServerJava/src/com/xensource/xenapi/DRTask.java b/deps/XenServerJava/src/com/xensource/xenapi/DRTask.java
new file mode 100644
index 00000000000..9694faa3c3c
--- /dev/null
+++ b/deps/XenServerJava/src/com/xensource/xenapi/DRTask.java
@@ -0,0 +1,303 @@
+/*
+ * Copyright (c) Citrix Systems, Inc.
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * 1) Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ *
+ * 2) 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.
+ *
+ * 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 THE
+ * COPYRIGHT HOLDER 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.
+ */
+
+
+package com.xensource.xenapi;
+
+import com.xensource.xenapi.Types.BadServerResponse;
+import com.xensource.xenapi.Types.VersionException;
+import com.xensource.xenapi.Types.XenAPIException;
+
+import java.io.PrintWriter;
+import java.io.StringWriter;
+import java.util.Date;
+import java.util.HashMap;
+import java.util.LinkedHashSet;
+import java.util.Map;
+import java.util.Set;
+
+import org.apache.xmlrpc.XmlRpcException;
+
+/**
+ * DR task
+ *
+ * @author Citrix Systems, Inc.
+ */
+public class DRTask extends XenAPIObject {
+
+ /**
+ * The XenAPI reference (OpaqueRef) to this object.
+ */
+ protected final String ref;
+
+ /**
+ * For internal use only.
+ */
+ DRTask(String ref) {
+ this.ref = ref;
+ }
+
+ /**
+ * @return The XenAPI reference (OpaqueRef) to this object.
+ */
+ public String toWireString() {
+ return this.ref;
+ }
+
+ /**
+ * If obj is a DRTask, compares XenAPI references for equality.
+ */
+ @Override
+ public boolean equals(Object obj)
+ {
+ if (obj != null && obj instanceof DRTask)
+ {
+ DRTask other = (DRTask) obj;
+ return other.ref.equals(this.ref);
+ } else
+ {
+ return false;
+ }
+ }
+
+ @Override
+ public int hashCode()
+ {
+ return ref.hashCode();
+ }
+
+ /**
+ * Represents all the fields in a DRTask
+ */
+ public static class Record implements Types.Record {
+ public String toString() {
+ StringWriter writer = new StringWriter();
+ PrintWriter print = new PrintWriter(writer);
+ print.printf("%1$20s: %2$s\n", "uuid", this.uuid);
+ print.printf("%1$20s: %2$s\n", "introducedSRs", this.introducedSRs);
+ return writer.toString();
+ }
+
+ /**
+ * Convert a DR_task.Record to a Map
+ */
+ public Map toMap() {
+ Map map = new HashMap();
+ map.put("uuid", this.uuid == null ? "" : this.uuid);
+ map.put("introduced_SRs", this.introducedSRs == null ? new LinkedHashSet() : this.introducedSRs);
+ return map;
+ }
+
+ /**
+ * Unique identifier/object reference
+ */
+ public String uuid;
+ /**
+ * All SRs introduced by this appliance
+ */
+ public Set introducedSRs;
+ }
+
+ /**
+ * Get a record containing the current state of the given DR_task.
+ *
+ * @return all fields from the object
+ */
+ public DRTask.Record getRecord(Connection c) throws
+ BadServerResponse,
+ XenAPIException,
+ XmlRpcException {
+ String method_call = "DR_task.get_record";
+ String session = c.getSessionReference();
+ Object[] method_params = {Marshalling.toXMLRPC(session), Marshalling.toXMLRPC(this.ref)};
+ Map response = c.dispatch(method_call, method_params);
+ Object result = response.get("Value");
+ return Types.toDRTaskRecord(result);
+ }
+
+ /**
+ * Get a reference to the DR_task instance with the specified UUID.
+ *
+ * @param uuid UUID of object to return
+ * @return reference to the object
+ */
+ public static DRTask getByUuid(Connection c, String uuid) throws
+ BadServerResponse,
+ XenAPIException,
+ XmlRpcException {
+ String method_call = "DR_task.get_by_uuid";
+ String session = c.getSessionReference();
+ Object[] method_params = {Marshalling.toXMLRPC(session), Marshalling.toXMLRPC(uuid)};
+ Map response = c.dispatch(method_call, method_params);
+ Object result = response.get("Value");
+ return Types.toDRTask(result);
+ }
+
+ /**
+ * Get the uuid field of the given DR_task.
+ *
+ * @return value of the field
+ */
+ public String getUuid(Connection c) throws
+ BadServerResponse,
+ XenAPIException,
+ XmlRpcException {
+ String method_call = "DR_task.get_uuid";
+ String session = c.getSessionReference();
+ Object[] method_params = {Marshalling.toXMLRPC(session), Marshalling.toXMLRPC(this.ref)};
+ Map response = c.dispatch(method_call, method_params);
+ Object result = response.get("Value");
+ return Types.toString(result);
+ }
+
+ /**
+ * Get the introduced_SRs field of the given DR_task.
+ *
+ * @return value of the field
+ */
+ public Set getIntroducedSRs(Connection c) throws
+ BadServerResponse,
+ XenAPIException,
+ XmlRpcException {
+ String method_call = "DR_task.get_introduced_SRs";
+ String session = c.getSessionReference();
+ Object[] method_params = {Marshalling.toXMLRPC(session), Marshalling.toXMLRPC(this.ref)};
+ Map response = c.dispatch(method_call, method_params);
+ Object result = response.get("Value");
+ return Types.toSetOfSR(result);
+ }
+
+ /**
+ * Create a disaster recovery task which will query the supplied list of devices
+ *
+ * @param type The SR driver type of the SRs to introduce
+ * @param deviceConfig The device configuration of the SRs to introduce
+ * @param whitelist The devices to use for disaster recovery
+ * @return Task
+ */
+ public static Task createAsync(Connection c, String type, Map deviceConfig, Set whitelist) throws
+ BadServerResponse,
+ XenAPIException,
+ XmlRpcException {
+ String method_call = "Async.DR_task.create";
+ String session = c.getSessionReference();
+ Object[] method_params = {Marshalling.toXMLRPC(session), Marshalling.toXMLRPC(type), Marshalling.toXMLRPC(deviceConfig), Marshalling.toXMLRPC(whitelist)};
+ Map response = c.dispatch(method_call, method_params);
+ Object result = response.get("Value");
+ return Types.toTask(result);
+ }
+
+ /**
+ * Create a disaster recovery task which will query the supplied list of devices
+ *
+ * @param type The SR driver type of the SRs to introduce
+ * @param deviceConfig The device configuration of the SRs to introduce
+ * @param whitelist The devices to use for disaster recovery
+ * @return The reference to the created task
+ */
+ public static DRTask create(Connection c, String type, Map deviceConfig, Set whitelist) throws
+ BadServerResponse,
+ XenAPIException,
+ XmlRpcException {
+ String method_call = "DR_task.create";
+ String session = c.getSessionReference();
+ Object[] method_params = {Marshalling.toXMLRPC(session), Marshalling.toXMLRPC(type), Marshalling.toXMLRPC(deviceConfig), Marshalling.toXMLRPC(whitelist)};
+ Map response = c.dispatch(method_call, method_params);
+ Object result = response.get("Value");
+ return Types.toDRTask(result);
+ }
+
+ /**
+ * Destroy the disaster recovery task, detaching and forgetting any SRs introduced which are no longer required
+ *
+ * @return Task
+ */
+ public Task destroyAsync(Connection c) throws
+ BadServerResponse,
+ XenAPIException,
+ XmlRpcException {
+ String method_call = "Async.DR_task.destroy";
+ String session = c.getSessionReference();
+ Object[] method_params = {Marshalling.toXMLRPC(session), Marshalling.toXMLRPC(this.ref)};
+ Map response = c.dispatch(method_call, method_params);
+ Object result = response.get("Value");
+ return Types.toTask(result);
+ }
+
+ /**
+ * Destroy the disaster recovery task, detaching and forgetting any SRs introduced which are no longer required
+ *
+ */
+ public void destroy(Connection c) throws
+ BadServerResponse,
+ XenAPIException,
+ XmlRpcException {
+ String method_call = "DR_task.destroy";
+ String session = c.getSessionReference();
+ Object[] method_params = {Marshalling.toXMLRPC(session), Marshalling.toXMLRPC(this.ref)};
+ Map response = c.dispatch(method_call, method_params);
+ return;
+ }
+
+ /**
+ * Return a list of all the DR_tasks known to the system.
+ *
+ * @return references to all objects
+ */
+ public static Set getAll(Connection c) throws
+ BadServerResponse,
+ XenAPIException,
+ XmlRpcException {
+ String method_call = "DR_task.get_all";
+ String session = c.getSessionReference();
+ Object[] method_params = {Marshalling.toXMLRPC(session)};
+ Map response = c.dispatch(method_call, method_params);
+ Object result = response.get("Value");
+ return Types.toSetOfDRTask(result);
+ }
+
+ /**
+ * Return a map of DR_task references to DR_task records for all DR_tasks known to the system.
+ *
+ * @return records of all objects
+ */
+ public static Map getAllRecords(Connection c) throws
+ BadServerResponse,
+ XenAPIException,
+ XmlRpcException {
+ String method_call = "DR_task.get_all_records";
+ String session = c.getSessionReference();
+ Object[] method_params = {Marshalling.toXMLRPC(session)};
+ Map response = c.dispatch(method_call, method_params);
+ Object result = response.get("Value");
+ return Types.toMapOfDRTaskDRTaskRecord(result);
+ }
+
+}
\ No newline at end of file
diff --git a/deps/XenServerJava/src/com/xensource/xenapi/DataSource.java b/deps/XenServerJava/src/com/xensource/xenapi/DataSource.java
index aebe39b7b1e..a0f46fb4fe8 100644
--- a/deps/XenServerJava/src/com/xensource/xenapi/DataSource.java
+++ b/deps/XenServerJava/src/com/xensource/xenapi/DataSource.java
@@ -1,18 +1,19 @@
-/* Copyright (c) Citrix Systems, Inc.
+/*
+ * Copyright (c) Citrix Systems, Inc.
* All rights reserved.
- *
+ *
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
- *
+ *
* 1) Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
- *
+ *
* 2) 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.
- *
+ *
* 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
@@ -27,6 +28,7 @@
* OF THE POSSIBILITY OF SUCH DAMAGE.
*/
+
package com.xensource.xenapi;
import com.xensource.xenapi.Types.BadServerResponse;
@@ -51,7 +53,7 @@ import org.apache.xmlrpc.XmlRpcException;
public class DataSource extends XenAPIObject {
/**
- * The XenAPI reference to this object.
+ * The XenAPI reference (OpaqueRef) to this object.
*/
protected final String ref;
@@ -62,6 +64,9 @@ public class DataSource extends XenAPIObject {
this.ref = ref;
}
+ /**
+ * @return The XenAPI reference (OpaqueRef) to this object.
+ */
public String toWireString() {
return this.ref;
}
@@ -127,7 +132,7 @@ public class DataSource extends XenAPIObject {
*/
public String nameLabel;
/**
- * a notes field containg human-readable description
+ * a notes field containing human-readable description
*/
public String nameDescription;
/**
@@ -156,4 +161,4 @@ public class DataSource extends XenAPIObject {
public Double value;
}
-}
+}
\ No newline at end of file
diff --git a/deps/XenServerJava/src/com/xensource/xenapi/Event.java b/deps/XenServerJava/src/com/xensource/xenapi/Event.java
index 36ebf457abf..3574cd19b0f 100644
--- a/deps/XenServerJava/src/com/xensource/xenapi/Event.java
+++ b/deps/XenServerJava/src/com/xensource/xenapi/Event.java
@@ -1,18 +1,19 @@
-/* Copyright (c) Citrix Systems, Inc.
+/*
+ * Copyright (c) Citrix Systems, Inc.
* All rights reserved.
- *
+ *
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
- *
+ *
* 1) Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
- *
+ *
* 2) 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.
- *
+ *
* 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
@@ -27,6 +28,7 @@
* OF THE POSSIBILITY OF SUCH DAMAGE.
*/
+
package com.xensource.xenapi;
import com.xensource.xenapi.Types.BadServerResponse;
@@ -51,7 +53,7 @@ import org.apache.xmlrpc.XmlRpcException;
public class Event extends XenAPIObject {
/**
- * The XenAPI reference to this object.
+ * The XenAPI reference (OpaqueRef) to this object.
*/
protected final String ref;
@@ -62,6 +64,9 @@ public class Event extends XenAPIObject {
this.ref = ref;
}
+ /**
+ * @return The XenAPI reference (OpaqueRef) to this object.
+ */
public String toWireString() {
return this.ref;
}
@@ -152,7 +157,7 @@ public class Event extends XenAPIObject {
}
/**
- * Registers this session with the event system. Specifying the empty list will register for all classes.
+ * Registers this session with the event system. Specifying * as the desired class will register for all classes.
*
* @param classes register for events for the indicated classes
* @return Task
@@ -170,7 +175,7 @@ public class Event extends XenAPIObject {
}
/**
- * Registers this session with the event system. Specifying the empty list will register for all classes.
+ * Registers this session with the event system. Specifying * as the desired class will register for all classes.
*
* @param classes register for events for the indicated classes
*/
@@ -238,6 +243,28 @@ public class Event extends XenAPIObject {
return Types.toSetOfEventRecord(result);
}
+ /**
+ * Blocking call which returns a (possibly empty) batch of events
+ *
+ * @param classes register for events for the indicated classes
+ * @param token A token representing the point from which to generate database events. The empty string represents the beginning.
+ * @param timeout Return after this many seconds if no events match
+ * @return the batch of events
+ */
+ public static Set from(Connection c, Set classes, String token, Double timeout) throws
+ BadServerResponse,
+ XenAPIException,
+ XmlRpcException,
+ Types.SessionNotRegistered,
+ Types.EventsLost {
+ String method_call = "event.from";
+ String session = c.getSessionReference();
+ Object[] method_params = {Marshalling.toXMLRPC(session), Marshalling.toXMLRPC(classes), Marshalling.toXMLRPC(token), Marshalling.toXMLRPC(timeout)};
+ Map response = c.dispatch(method_call, method_params);
+ Object result = response.get("Value");
+ return Types.toSetOfEventRecord(result);
+ }
+
/**
* Return the ID of the next event to be generated by the system
*
@@ -255,4 +282,23 @@ public class Event extends XenAPIObject {
return Types.toLong(result);
}
-}
+ /**
+ * Injects an artificial event on the given object and return the corresponding ID
+ *
+ * @param clazz class of the object
+ * @param ref A reference to the object that will be changed.
+ * @return the event ID
+ */
+ public static String inject(Connection c, String clazz, String ref) throws
+ BadServerResponse,
+ XenAPIException,
+ XmlRpcException {
+ String method_call = "event.inject";
+ String session = c.getSessionReference();
+ Object[] method_params = {Marshalling.toXMLRPC(session), Marshalling.toXMLRPC(clazz), Marshalling.toXMLRPC(ref)};
+ Map response = c.dispatch(method_call, method_params);
+ Object result = response.get("Value");
+ return Types.toString(result);
+ }
+
+}
\ No newline at end of file
diff --git a/deps/XenServerJava/src/com/xensource/xenapi/GPUGroup.java b/deps/XenServerJava/src/com/xensource/xenapi/GPUGroup.java
new file mode 100644
index 00000000000..fbd7d7d59dd
--- /dev/null
+++ b/deps/XenServerJava/src/com/xensource/xenapi/GPUGroup.java
@@ -0,0 +1,445 @@
+/*
+ * Copyright (c) Citrix Systems, Inc.
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * 1) Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ *
+ * 2) 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.
+ *
+ * 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 THE
+ * COPYRIGHT HOLDER 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.
+ */
+
+
+package com.xensource.xenapi;
+
+import com.xensource.xenapi.Types.BadServerResponse;
+import com.xensource.xenapi.Types.VersionException;
+import com.xensource.xenapi.Types.XenAPIException;
+
+import java.io.PrintWriter;
+import java.io.StringWriter;
+import java.util.Date;
+import java.util.HashMap;
+import java.util.LinkedHashSet;
+import java.util.Map;
+import java.util.Set;
+
+import org.apache.xmlrpc.XmlRpcException;
+
+/**
+ * A group of compatible GPUs across the resource pool
+ *
+ * @author Citrix Systems, Inc.
+ */
+public class GPUGroup extends XenAPIObject {
+
+ /**
+ * The XenAPI reference (OpaqueRef) to this object.
+ */
+ protected final String ref;
+
+ /**
+ * For internal use only.
+ */
+ GPUGroup(String ref) {
+ this.ref = ref;
+ }
+
+ /**
+ * @return The XenAPI reference (OpaqueRef) to this object.
+ */
+ public String toWireString() {
+ return this.ref;
+ }
+
+ /**
+ * If obj is a GPUGroup, compares XenAPI references for equality.
+ */
+ @Override
+ public boolean equals(Object obj)
+ {
+ if (obj != null && obj instanceof GPUGroup)
+ {
+ GPUGroup other = (GPUGroup) obj;
+ return other.ref.equals(this.ref);
+ } else
+ {
+ return false;
+ }
+ }
+
+ @Override
+ public int hashCode()
+ {
+ return ref.hashCode();
+ }
+
+ /**
+ * Represents all the fields in a GPUGroup
+ */
+ public static class Record implements Types.Record {
+ public String toString() {
+ StringWriter writer = new StringWriter();
+ PrintWriter print = new PrintWriter(writer);
+ print.printf("%1$20s: %2$s\n", "uuid", this.uuid);
+ print.printf("%1$20s: %2$s\n", "nameLabel", this.nameLabel);
+ print.printf("%1$20s: %2$s\n", "nameDescription", this.nameDescription);
+ print.printf("%1$20s: %2$s\n", "PGPUs", this.PGPUs);
+ print.printf("%1$20s: %2$s\n", "VGPUs", this.VGPUs);
+ print.printf("%1$20s: %2$s\n", "GPUTypes", this.GPUTypes);
+ print.printf("%1$20s: %2$s\n", "otherConfig", this.otherConfig);
+ return writer.toString();
+ }
+
+ /**
+ * Convert a GPU_group.Record to a Map
+ */
+ public Map toMap() {
+ Map map = new HashMap();
+ map.put("uuid", this.uuid == null ? "" : this.uuid);
+ map.put("name_label", this.nameLabel == null ? "" : this.nameLabel);
+ map.put("name_description", this.nameDescription == null ? "" : this.nameDescription);
+ map.put("PGPUs", this.PGPUs == null ? new LinkedHashSet() : this.PGPUs);
+ map.put("VGPUs", this.VGPUs == null ? new LinkedHashSet() : this.VGPUs);
+ map.put("GPU_types", this.GPUTypes == null ? new LinkedHashSet() : this.GPUTypes);
+ map.put("other_config", this.otherConfig == null ? new HashMap() : this.otherConfig);
+ return map;
+ }
+
+ /**
+ * Unique identifier/object reference
+ */
+ public String uuid;
+ /**
+ * a human-readable name
+ */
+ public String nameLabel;
+ /**
+ * a notes field containing human-readable description
+ */
+ public String nameDescription;
+ /**
+ * List of pGPUs in the group
+ */
+ public Set PGPUs;
+ /**
+ * List of vGPUs using the group
+ */
+ public Set VGPUs;
+ /**
+ * List of GPU types (vendor+device ID) that can be in this group
+ */
+ public Set GPUTypes;
+ /**
+ * Additional configuration
+ */
+ public Map otherConfig;
+ }
+
+ /**
+ * Get a record containing the current state of the given GPU_group.
+ *
+ * @return all fields from the object
+ */
+ public GPUGroup.Record getRecord(Connection c) throws
+ BadServerResponse,
+ XenAPIException,
+ XmlRpcException {
+ String method_call = "GPU_group.get_record";
+ String session = c.getSessionReference();
+ Object[] method_params = {Marshalling.toXMLRPC(session), Marshalling.toXMLRPC(this.ref)};
+ Map response = c.dispatch(method_call, method_params);
+ Object result = response.get("Value");
+ return Types.toGPUGroupRecord(result);
+ }
+
+ /**
+ * Get a reference to the GPU_group instance with the specified UUID.
+ *
+ * @param uuid UUID of object to return
+ * @return reference to the object
+ */
+ public static GPUGroup getByUuid(Connection c, String uuid) throws
+ BadServerResponse,
+ XenAPIException,
+ XmlRpcException {
+ String method_call = "GPU_group.get_by_uuid";
+ String session = c.getSessionReference();
+ Object[] method_params = {Marshalling.toXMLRPC(session), Marshalling.toXMLRPC(uuid)};
+ Map response = c.dispatch(method_call, method_params);
+ Object result = response.get("Value");
+ return Types.toGPUGroup(result);
+ }
+
+ /**
+ * Get all the GPU_group instances with the given label.
+ *
+ * @param label label of object to return
+ * @return references to objects with matching names
+ */
+ public static Set getByNameLabel(Connection c, String label) throws
+ BadServerResponse,
+ XenAPIException,
+ XmlRpcException {
+ String method_call = "GPU_group.get_by_name_label";
+ String session = c.getSessionReference();
+ Object[] method_params = {Marshalling.toXMLRPC(session), Marshalling.toXMLRPC(label)};
+ Map response = c.dispatch(method_call, method_params);
+ Object result = response.get("Value");
+ return Types.toSetOfGPUGroup(result);
+ }
+
+ /**
+ * Get the uuid field of the given GPU_group.
+ *
+ * @return value of the field
+ */
+ public String getUuid(Connection c) throws
+ BadServerResponse,
+ XenAPIException,
+ XmlRpcException {
+ String method_call = "GPU_group.get_uuid";
+ String session = c.getSessionReference();
+ Object[] method_params = {Marshalling.toXMLRPC(session), Marshalling.toXMLRPC(this.ref)};
+ Map response = c.dispatch(method_call, method_params);
+ Object result = response.get("Value");
+ return Types.toString(result);
+ }
+
+ /**
+ * Get the name/label field of the given GPU_group.
+ *
+ * @return value of the field
+ */
+ public String getNameLabel(Connection c) throws
+ BadServerResponse,
+ XenAPIException,
+ XmlRpcException {
+ String method_call = "GPU_group.get_name_label";
+ String session = c.getSessionReference();
+ Object[] method_params = {Marshalling.toXMLRPC(session), Marshalling.toXMLRPC(this.ref)};
+ Map response = c.dispatch(method_call, method_params);
+ Object result = response.get("Value");
+ return Types.toString(result);
+ }
+
+ /**
+ * Get the name/description field of the given GPU_group.
+ *
+ * @return value of the field
+ */
+ public String getNameDescription(Connection c) throws
+ BadServerResponse,
+ XenAPIException,
+ XmlRpcException {
+ String method_call = "GPU_group.get_name_description";
+ String session = c.getSessionReference();
+ Object[] method_params = {Marshalling.toXMLRPC(session), Marshalling.toXMLRPC(this.ref)};
+ Map response = c.dispatch(method_call, method_params);
+ Object result = response.get("Value");
+ return Types.toString(result);
+ }
+
+ /**
+ * Get the PGPUs field of the given GPU_group.
+ *
+ * @return value of the field
+ */
+ public Set getPGPUs(Connection c) throws
+ BadServerResponse,
+ XenAPIException,
+ XmlRpcException {
+ String method_call = "GPU_group.get_PGPUs";
+ String session = c.getSessionReference();
+ Object[] method_params = {Marshalling.toXMLRPC(session), Marshalling.toXMLRPC(this.ref)};
+ Map response = c.dispatch(method_call, method_params);
+ Object result = response.get("Value");
+ return Types.toSetOfPGPU(result);
+ }
+
+ /**
+ * Get the VGPUs field of the given GPU_group.
+ *
+ * @return value of the field
+ */
+ public Set getVGPUs(Connection c) throws
+ BadServerResponse,
+ XenAPIException,
+ XmlRpcException {
+ String method_call = "GPU_group.get_VGPUs";
+ String session = c.getSessionReference();
+ Object[] method_params = {Marshalling.toXMLRPC(session), Marshalling.toXMLRPC(this.ref)};
+ Map response = c.dispatch(method_call, method_params);
+ Object result = response.get("Value");
+ return Types.toSetOfVGPU(result);
+ }
+
+ /**
+ * Get the GPU_types field of the given GPU_group.
+ *
+ * @return value of the field
+ */
+ public Set getGPUTypes(Connection c) throws
+ BadServerResponse,
+ XenAPIException,
+ XmlRpcException {
+ String method_call = "GPU_group.get_GPU_types";
+ String session = c.getSessionReference();
+ Object[] method_params = {Marshalling.toXMLRPC(session), Marshalling.toXMLRPC(this.ref)};
+ Map response = c.dispatch(method_call, method_params);
+ Object result = response.get("Value");
+ return Types.toSetOfString(result);
+ }
+
+ /**
+ * Get the other_config field of the given GPU_group.
+ *
+ * @return value of the field
+ */
+ public Map getOtherConfig(Connection c) throws
+ BadServerResponse,
+ XenAPIException,
+ XmlRpcException {
+ String method_call = "GPU_group.get_other_config";
+ String session = c.getSessionReference();
+ Object[] method_params = {Marshalling.toXMLRPC(session), Marshalling.toXMLRPC(this.ref)};
+ Map response = c.dispatch(method_call, method_params);
+ Object result = response.get("Value");
+ return Types.toMapOfStringString(result);
+ }
+
+ /**
+ * Set the name/label field of the given GPU_group.
+ *
+ * @param label New value to set
+ */
+ public void setNameLabel(Connection c, String label) throws
+ BadServerResponse,
+ XenAPIException,
+ XmlRpcException {
+ String method_call = "GPU_group.set_name_label";
+ String session = c.getSessionReference();
+ Object[] method_params = {Marshalling.toXMLRPC(session), Marshalling.toXMLRPC(this.ref), Marshalling.toXMLRPC(label)};
+ Map response = c.dispatch(method_call, method_params);
+ return;
+ }
+
+ /**
+ * Set the name/description field of the given GPU_group.
+ *
+ * @param description New value to set
+ */
+ public void setNameDescription(Connection c, String description) throws
+ BadServerResponse,
+ XenAPIException,
+ XmlRpcException {
+ String method_call = "GPU_group.set_name_description";
+ String session = c.getSessionReference();
+ Object[] method_params = {Marshalling.toXMLRPC(session), Marshalling.toXMLRPC(this.ref), Marshalling.toXMLRPC(description)};
+ Map response = c.dispatch(method_call, method_params);
+ return;
+ }
+
+ /**
+ * Set the other_config field of the given GPU_group.
+ *
+ * @param otherConfig New value to set
+ */
+ public void setOtherConfig(Connection c, Map otherConfig) throws
+ BadServerResponse,
+ XenAPIException,
+ XmlRpcException {
+ String method_call = "GPU_group.set_other_config";
+ String session = c.getSessionReference();
+ Object[] method_params = {Marshalling.toXMLRPC(session), Marshalling.toXMLRPC(this.ref), Marshalling.toXMLRPC(otherConfig)};
+ Map response = c.dispatch(method_call, method_params);
+ return;
+ }
+
+ /**
+ * Add the given key-value pair to the other_config field of the given GPU_group.
+ *
+ * @param key Key to add
+ * @param value Value to add
+ */
+ public void addToOtherConfig(Connection c, String key, String value) throws
+ BadServerResponse,
+ XenAPIException,
+ XmlRpcException {
+ String method_call = "GPU_group.add_to_other_config";
+ String session = c.getSessionReference();
+ Object[] method_params = {Marshalling.toXMLRPC(session), Marshalling.toXMLRPC(this.ref), Marshalling.toXMLRPC(key), Marshalling.toXMLRPC(value)};
+ Map response = c.dispatch(method_call, method_params);
+ return;
+ }
+
+ /**
+ * Remove the given key and its corresponding value from the other_config field of the given GPU_group. If the key is not in that Map, then do nothing.
+ *
+ * @param key Key to remove
+ */
+ public void removeFromOtherConfig(Connection c, String key) throws
+ BadServerResponse,
+ XenAPIException,
+ XmlRpcException {
+ String method_call = "GPU_group.remove_from_other_config";
+ String session = c.getSessionReference();
+ Object[] method_params = {Marshalling.toXMLRPC(session), Marshalling.toXMLRPC(this.ref), Marshalling.toXMLRPC(key)};
+ Map response = c.dispatch(method_call, method_params);
+ return;
+ }
+
+ /**
+ * Return a list of all the GPU_groups known to the system.
+ *
+ * @return references to all objects
+ */
+ public static Set getAll(Connection c) throws
+ BadServerResponse,
+ XenAPIException,
+ XmlRpcException {
+ String method_call = "GPU_group.get_all";
+ String session = c.getSessionReference();
+ Object[] method_params = {Marshalling.toXMLRPC(session)};
+ Map response = c.dispatch(method_call, method_params);
+ Object result = response.get("Value");
+ return Types.toSetOfGPUGroup(result);
+ }
+
+ /**
+ * Return a map of GPU_group references to GPU_group records for all GPU_groups known to the system.
+ *
+ * @return records of all objects
+ */
+ public static Map getAllRecords(Connection c) throws
+ BadServerResponse,
+ XenAPIException,
+ XmlRpcException {
+ String method_call = "GPU_group.get_all_records";
+ String session = c.getSessionReference();
+ Object[] method_params = {Marshalling.toXMLRPC(session)};
+ Map response = c.dispatch(method_call, method_params);
+ Object result = response.get("Value");
+ return Types.toMapOfGPUGroupGPUGroupRecord(result);
+ }
+
+}
\ No newline at end of file
diff --git a/deps/XenServerJava/src/com/xensource/xenapi/Host.java b/deps/XenServerJava/src/com/xensource/xenapi/Host.java
index d17609838cb..2368930b55b 100644
--- a/deps/XenServerJava/src/com/xensource/xenapi/Host.java
+++ b/deps/XenServerJava/src/com/xensource/xenapi/Host.java
@@ -1,18 +1,19 @@
-/* Copyright (c) Citrix Systems, Inc.
+/*
+ * Copyright (c) Citrix Systems, Inc.
* All rights reserved.
- *
+ *
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
- *
+ *
* 1) Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
- *
+ *
* 2) 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.
- *
+ *
* 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
@@ -27,6 +28,7 @@
* OF THE POSSIBILITY OF SUCH DAMAGE.
*/
+
package com.xensource.xenapi;
import com.xensource.xenapi.Types.BadServerResponse;
@@ -51,7 +53,7 @@ import org.apache.xmlrpc.XmlRpcException;
public class Host extends XenAPIObject {
/**
- * The XenAPI reference to this object.
+ * The XenAPI reference (OpaqueRef) to this object.
*/
protected final String ref;
@@ -62,6 +64,9 @@ public class Host extends XenAPIObject {
this.ref = ref;
}
+ /**
+ * @return The XenAPI reference (OpaqueRef) to this object.
+ */
public String toWireString() {
return this.ref;
}
@@ -139,6 +144,9 @@ public class Host extends XenAPIObject {
print.printf("%1$20s: %2$s\n", "powerOnMode", this.powerOnMode);
print.printf("%1$20s: %2$s\n", "powerOnConfig", this.powerOnConfig);
print.printf("%1$20s: %2$s\n", "localCacheSr", this.localCacheSr);
+ print.printf("%1$20s: %2$s\n", "chipsetInfo", this.chipsetInfo);
+ print.printf("%1$20s: %2$s\n", "PCIs", this.PCIs);
+ print.printf("%1$20s: %2$s\n", "PGPUs", this.PGPUs);
return writer.toString();
}
@@ -191,6 +199,9 @@ public class Host extends XenAPIObject {
map.put("power_on_mode", this.powerOnMode == null ? "" : this.powerOnMode);
map.put("power_on_config", this.powerOnConfig == null ? new HashMap() : this.powerOnConfig);
map.put("local_cache_sr", this.localCacheSr == null ? new SR("OpaqueRef:NULL") : this.localCacheSr);
+ map.put("chipset_info", this.chipsetInfo == null ? new HashMap() : this.chipsetInfo);
+ map.put("PCIs", this.PCIs == null ? new LinkedHashSet() : this.PCIs);
+ map.put("PGPUs", this.PGPUs == null ? new LinkedHashSet() : this.PGPUs);
return map;
}
@@ -203,7 +214,7 @@ public class Host extends XenAPIObject {
*/
public String nameLabel;
/**
- * a notes field containg human-readable description
+ * a notes field containing human-readable description
*/
public String nameDescription;
/**
@@ -370,6 +381,18 @@ public class Host extends XenAPIObject {
* The SR that is used as a local cache
*/
public SR localCacheSr;
+ /**
+ * Information about chipset features
+ */
+ public Map chipsetInfo;
+ /**
+ * List of PCI devices in the host
+ */
+ public Set PCIs;
+ /**
+ * List of physical GPUs in the host
+ */
+ public Set PGPUs;
}
/**
@@ -1173,6 +1196,57 @@ public class Host extends XenAPIObject {
return Types.toSR(result);
}
+ /**
+ * Get the chipset_info field of the given host.
+ *
+ * @return value of the field
+ */
+ public Map getChipsetInfo(Connection c) throws
+ BadServerResponse,
+ XenAPIException,
+ XmlRpcException {
+ String method_call = "host.get_chipset_info";
+ String session = c.getSessionReference();
+ Object[] method_params = {Marshalling.toXMLRPC(session), Marshalling.toXMLRPC(this.ref)};
+ Map response = c.dispatch(method_call, method_params);
+ Object result = response.get("Value");
+ return Types.toMapOfStringString(result);
+ }
+
+ /**
+ * Get the PCIs field of the given host.
+ *
+ * @return value of the field
+ */
+ public Set getPCIs(Connection c) throws
+ BadServerResponse,
+ XenAPIException,
+ XmlRpcException {
+ String method_call = "host.get_PCIs";
+ String session = c.getSessionReference();
+ Object[] method_params = {Marshalling.toXMLRPC(session), Marshalling.toXMLRPC(this.ref)};
+ Map response = c.dispatch(method_call, method_params);
+ Object result = response.get("Value");
+ return Types.toSetOfPCI(result);
+ }
+
+ /**
+ * Get the PGPUs field of the given host.
+ *
+ * @return value of the field
+ */
+ public Set getPGPUs(Connection c) throws
+ BadServerResponse,
+ XenAPIException,
+ XmlRpcException {
+ String method_call = "host.get_PGPUs";
+ String session = c.getSessionReference();
+ Object[] method_params = {Marshalling.toXMLRPC(session), Marshalling.toXMLRPC(this.ref)};
+ Map response = c.dispatch(method_call, method_params);
+ Object result = response.get("Value");
+ return Types.toSetOfPGPU(result);
+ }
+
/**
* Set the name/label field of the given host.
*
@@ -1897,7 +1971,7 @@ public class Host extends XenAPIObject {
}
/**
- *
+ *
*
* @return A set of data sources
*/
@@ -2031,10 +2105,11 @@ public class Host extends XenAPIObject {
/**
* Return a set of VMs which are not co-operating with the host's memory control system
+ * @deprecated
*
* @return Task
*/
- public Task getUncooperativeResidentVMsAsync(Connection c) throws
+ @Deprecated public Task getUncooperativeResidentVMsAsync(Connection c) throws
BadServerResponse,
XenAPIException,
XmlRpcException {
@@ -2048,10 +2123,11 @@ public class Host extends XenAPIObject {
/**
* Return a set of VMs which are not co-operating with the host's memory control system
+ * @deprecated
*
* @return VMs which are not co-operating
*/
- public Set getUncooperativeResidentVMs(Connection c) throws
+ @Deprecated public Set getUncooperativeResidentVMs(Connection c) throws
BadServerResponse,
XenAPIException,
XmlRpcException {
@@ -2193,7 +2269,41 @@ public class Host extends XenAPIObject {
}
/**
- *
+ * Returns the management interface for the specified host
+ *
+ * @return Task
+ */
+ public Task getManagementIfaceAsync(Connection c) throws
+ BadServerResponse,
+ XenAPIException,
+ XmlRpcException {
+ String method_call = "Async.host.get_management_interface";
+ String session = c.getSessionReference();
+ Object[] method_params = {Marshalling.toXMLRPC(session), Marshalling.toXMLRPC(this.ref)};
+ Map response = c.dispatch(method_call, method_params);
+ Object result = response.get("Value");
+ return Types.toTask(result);
+ }
+
+ /**
+ * Returns the management interface for the specified host
+ *
+ * @return The managment interface for the host
+ */
+ public PIF getManagementIface(Connection c) throws
+ BadServerResponse,
+ XenAPIException,
+ XmlRpcException {
+ String method_call = "host.get_management_interface";
+ String session = c.getSessionReference();
+ Object[] method_params = {Marshalling.toXMLRPC(session), Marshalling.toXMLRPC(this.ref)};
+ Map response = c.dispatch(method_call, method_params);
+ Object result = response.get("Value");
+ return Types.toPIF(result);
+ }
+
+ /**
+ *
*
* @return An XML fragment containing the system status capabilities.
*/
@@ -2377,15 +2487,16 @@ public class Host extends XenAPIObject {
*
* @param name The name associated with the blob
* @param mimeType The mime type for the data. Empty string translates to application/octet-stream
+ * @param _public True if the blob should be publicly available
* @return Task
*/
- public Task createNewBlobAsync(Connection c, String name, String mimeType) throws
+ public Task createNewBlobAsync(Connection c, String name, String mimeType, Boolean _public) throws
BadServerResponse,
XenAPIException,
XmlRpcException {
String method_call = "Async.host.create_new_blob";
String session = c.getSessionReference();
- Object[] method_params = {Marshalling.toXMLRPC(session), Marshalling.toXMLRPC(this.ref), Marshalling.toXMLRPC(name), Marshalling.toXMLRPC(mimeType)};
+ Object[] method_params = {Marshalling.toXMLRPC(session), Marshalling.toXMLRPC(this.ref), Marshalling.toXMLRPC(name), Marshalling.toXMLRPC(mimeType), Marshalling.toXMLRPC(_public)};
Map response = c.dispatch(method_call, method_params);
Object result = response.get("Value");
return Types.toTask(result);
@@ -2396,15 +2507,16 @@ public class Host extends XenAPIObject {
*
* @param name The name associated with the blob
* @param mimeType The mime type for the data. Empty string translates to application/octet-stream
+ * @param _public True if the blob should be publicly available
* @return The reference of the blob, needed for populating its data
*/
- public Blob createNewBlob(Connection c, String name, String mimeType) throws
+ public Blob createNewBlob(Connection c, String name, String mimeType, Boolean _public) throws
BadServerResponse,
XenAPIException,
XmlRpcException {
String method_call = "host.create_new_blob";
String session = c.getSessionReference();
- Object[] method_params = {Marshalling.toXMLRPC(session), Marshalling.toXMLRPC(this.ref), Marshalling.toXMLRPC(name), Marshalling.toXMLRPC(mimeType)};
+ Object[] method_params = {Marshalling.toXMLRPC(session), Marshalling.toXMLRPC(this.ref), Marshalling.toXMLRPC(name), Marshalling.toXMLRPC(mimeType), Marshalling.toXMLRPC(_public)};
Map response = c.dispatch(method_call, method_params);
Object result = response.get("Value");
return Types.toBlob(result);
@@ -2635,7 +2747,7 @@ public class Host extends XenAPIObject {
}
/**
- * Set the power-on-mode, host, user and password
+ * Set the power-on-mode, host, user and password
*
* @param powerOnMode power-on-mode can be empty,iLO,wake-on-lan, DRAC or other
* @param powerOnConfig Power on config
@@ -2654,7 +2766,7 @@ public class Host extends XenAPIObject {
}
/**
- * Set the power-on-mode, host, user and password
+ * Set the power-on-mode, host, user and password
*
* @param powerOnMode power-on-mode can be empty,iLO,wake-on-lan, DRAC or other
* @param powerOnConfig Power on config
@@ -2732,6 +2844,44 @@ public class Host extends XenAPIObject {
return;
}
+ /**
+ * Prepare to receive a VM, returning a token which can be passed to VM.migrate.
+ *
+ * @param network The network through which migration traffic should be received.
+ * @param options Extra configuration operations
+ * @return Task
+ */
+ public Task migrateReceiveAsync(Connection c, Network network, Map options) throws
+ BadServerResponse,
+ XenAPIException,
+ XmlRpcException {
+ String method_call = "Async.host.migrate_receive";
+ String session = c.getSessionReference();
+ Object[] method_params = {Marshalling.toXMLRPC(session), Marshalling.toXMLRPC(this.ref), Marshalling.toXMLRPC(network), Marshalling.toXMLRPC(options)};
+ Map response = c.dispatch(method_call, method_params);
+ Object result = response.get("Value");
+ return Types.toTask(result);
+ }
+
+ /**
+ * Prepare to receive a VM, returning a token which can be passed to VM.migrate.
+ *
+ * @param network The network through which migration traffic should be received.
+ * @param options Extra configuration operations
+ * @return A value which should be passed to VM.migrate
+ */
+ public Map migrateReceive(Connection c, Network network, Map options) throws
+ BadServerResponse,
+ XenAPIException,
+ XmlRpcException {
+ String method_call = "host.migrate_receive";
+ String session = c.getSessionReference();
+ Object[] method_params = {Marshalling.toXMLRPC(session), Marshalling.toXMLRPC(this.ref), Marshalling.toXMLRPC(network), Marshalling.toXMLRPC(options)};
+ Map response = c.dispatch(method_call, method_params);
+ Object result = response.get("Value");
+ return Types.toMapOfStringString(result);
+ }
+
/**
* Return a list of all the hosts known to the system.
*
@@ -2766,4 +2916,4 @@ public class Host extends XenAPIObject {
return Types.toMapOfHostHostRecord(result);
}
-}
+}
\ No newline at end of file
diff --git a/deps/XenServerJava/src/com/xensource/xenapi/HostCpu.java b/deps/XenServerJava/src/com/xensource/xenapi/HostCpu.java
index 7c7809e0897..4f4cdbc7296 100644
--- a/deps/XenServerJava/src/com/xensource/xenapi/HostCpu.java
+++ b/deps/XenServerJava/src/com/xensource/xenapi/HostCpu.java
@@ -1,18 +1,19 @@
-/* Copyright (c) Citrix Systems, Inc.
+/*
+ * Copyright (c) Citrix Systems, Inc.
* All rights reserved.
- *
+ *
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
- *
+ *
* 1) Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
- *
+ *
* 2) 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.
- *
+ *
* 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
@@ -27,6 +28,7 @@
* OF THE POSSIBILITY OF SUCH DAMAGE.
*/
+
package com.xensource.xenapi;
import com.xensource.xenapi.Types.BadServerResponse;
@@ -51,7 +53,7 @@ import org.apache.xmlrpc.XmlRpcException;
public class HostCpu extends XenAPIObject {
/**
- * The XenAPI reference to this object.
+ * The XenAPI reference (OpaqueRef) to this object.
*/
protected final String ref;
@@ -62,6 +64,9 @@ public class HostCpu extends XenAPIObject {
this.ref = ref;
}
+ /**
+ * @return The XenAPI reference (OpaqueRef) to this object.
+ */
public String toWireString() {
return this.ref;
}
@@ -528,4 +533,4 @@ public class HostCpu extends XenAPIObject {
return Types.toMapOfHostCpuHostCpuRecord(result);
}
-}
+}
\ No newline at end of file
diff --git a/deps/XenServerJava/src/com/xensource/xenapi/HostCrashdump.java b/deps/XenServerJava/src/com/xensource/xenapi/HostCrashdump.java
index b166073185d..f63479054a3 100644
--- a/deps/XenServerJava/src/com/xensource/xenapi/HostCrashdump.java
+++ b/deps/XenServerJava/src/com/xensource/xenapi/HostCrashdump.java
@@ -1,18 +1,19 @@
-/* Copyright (c) Citrix Systems, Inc.
+/*
+ * Copyright (c) Citrix Systems, Inc.
* All rights reserved.
- *
+ *
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
- *
+ *
* 1) Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
- *
+ *
* 2) 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.
- *
+ *
* 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
@@ -27,6 +28,7 @@
* OF THE POSSIBILITY OF SUCH DAMAGE.
*/
+
package com.xensource.xenapi;
import com.xensource.xenapi.Types.BadServerResponse;
@@ -51,7 +53,7 @@ import org.apache.xmlrpc.XmlRpcException;
public class HostCrashdump extends XenAPIObject {
/**
- * The XenAPI reference to this object.
+ * The XenAPI reference (OpaqueRef) to this object.
*/
protected final String ref;
@@ -62,6 +64,9 @@ public class HostCrashdump extends XenAPIObject {
this.ref = ref;
}
+ /**
+ * @return The XenAPI reference (OpaqueRef) to this object.
+ */
public String toWireString() {
return this.ref;
}
@@ -409,4 +414,4 @@ public class HostCrashdump extends XenAPIObject {
return Types.toMapOfHostCrashdumpHostCrashdumpRecord(result);
}
-}
+}
\ No newline at end of file
diff --git a/deps/XenServerJava/src/com/xensource/xenapi/HostMetrics.java b/deps/XenServerJava/src/com/xensource/xenapi/HostMetrics.java
index 2a682c806d5..5c7c7805902 100644
--- a/deps/XenServerJava/src/com/xensource/xenapi/HostMetrics.java
+++ b/deps/XenServerJava/src/com/xensource/xenapi/HostMetrics.java
@@ -1,18 +1,19 @@
-/* Copyright (c) Citrix Systems, Inc.
+/*
+ * Copyright (c) Citrix Systems, Inc.
* All rights reserved.
- *
+ *
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
- *
+ *
* 1) Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
- *
+ *
* 2) 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.
- *
+ *
* 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
@@ -27,6 +28,7 @@
* OF THE POSSIBILITY OF SUCH DAMAGE.
*/
+
package com.xensource.xenapi;
import com.xensource.xenapi.Types.BadServerResponse;
@@ -51,7 +53,7 @@ import org.apache.xmlrpc.XmlRpcException;
public class HostMetrics extends XenAPIObject {
/**
- * The XenAPI reference to this object.
+ * The XenAPI reference (OpaqueRef) to this object.
*/
protected final String ref;
@@ -62,6 +64,9 @@ public class HostMetrics extends XenAPIObject {
this.ref = ref;
}
+ /**
+ * @return The XenAPI reference (OpaqueRef) to this object.
+ */
public String toWireString() {
return this.ref;
}
@@ -365,4 +370,4 @@ public class HostMetrics extends XenAPIObject {
return Types.toMapOfHostMetricsHostMetricsRecord(result);
}
-}
+}
\ No newline at end of file
diff --git a/deps/XenServerJava/src/com/xensource/xenapi/HostPatch.java b/deps/XenServerJava/src/com/xensource/xenapi/HostPatch.java
index b871ed90c85..fafe4377f42 100644
--- a/deps/XenServerJava/src/com/xensource/xenapi/HostPatch.java
+++ b/deps/XenServerJava/src/com/xensource/xenapi/HostPatch.java
@@ -1,18 +1,19 @@
-/* Copyright (c) Citrix Systems, Inc.
+/*
+ * Copyright (c) Citrix Systems, Inc.
* All rights reserved.
- *
+ *
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
- *
+ *
* 1) Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
- *
+ *
* 2) 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.
- *
+ *
* 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
@@ -27,6 +28,7 @@
* OF THE POSSIBILITY OF SUCH DAMAGE.
*/
+
package com.xensource.xenapi;
import com.xensource.xenapi.Types.BadServerResponse;
@@ -51,7 +53,7 @@ import org.apache.xmlrpc.XmlRpcException;
public class HostPatch extends XenAPIObject {
/**
- * The XenAPI reference to this object.
+ * The XenAPI reference (OpaqueRef) to this object.
*/
protected final String ref;
@@ -62,6 +64,9 @@ public class HostPatch extends XenAPIObject {
this.ref = ref;
}
+ /**
+ * @return The XenAPI reference (OpaqueRef) to this object.
+ */
public String toWireString() {
return this.ref;
}
@@ -135,7 +140,7 @@ public class HostPatch extends XenAPIObject {
*/
public String nameLabel;
/**
- * a notes field containg human-readable description
+ * a notes field containing human-readable description
*/
public String nameDescription;
/**
@@ -544,4 +549,4 @@ public class HostPatch extends XenAPIObject {
return Types.toMapOfHostPatchHostPatchRecord(result);
}
-}
+}
\ No newline at end of file
diff --git a/deps/XenServerJava/src/com/xensource/xenapi/Marshalling.java b/deps/XenServerJava/src/com/xensource/xenapi/Marshalling.java
index 2603381c643..416aad94b9e 100644
--- a/deps/XenServerJava/src/com/xensource/xenapi/Marshalling.java
+++ b/deps/XenServerJava/src/com/xensource/xenapi/Marshalling.java
@@ -1,18 +1,18 @@
/* Copyright (c) Citrix Systems, Inc.
* All rights reserved.
- *
+ *
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
- *
+ *
* 1) Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
- *
+ *
* 2) 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.
- *
+ *
* 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
diff --git a/deps/XenServerJava/src/com/xensource/xenapi/Message.java b/deps/XenServerJava/src/com/xensource/xenapi/Message.java
index d7b50360699..95bcc8fa107 100644
--- a/deps/XenServerJava/src/com/xensource/xenapi/Message.java
+++ b/deps/XenServerJava/src/com/xensource/xenapi/Message.java
@@ -1,18 +1,19 @@
-/* Copyright (c) Citrix Systems, Inc.
+/*
+ * Copyright (c) Citrix Systems, Inc.
* All rights reserved.
- *
+ *
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
- *
+ *
* 1) Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
- *
+ *
* 2) 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.
- *
+ *
* 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
@@ -27,6 +28,7 @@
* OF THE POSSIBILITY OF SUCH DAMAGE.
*/
+
package com.xensource.xenapi;
import com.xensource.xenapi.Types.BadServerResponse;
@@ -51,7 +53,7 @@ import org.apache.xmlrpc.XmlRpcException;
public class Message extends XenAPIObject {
/**
- * The XenAPI reference to this object.
+ * The XenAPI reference (OpaqueRef) to this object.
*/
protected final String ref;
@@ -62,6 +64,9 @@ public class Message extends XenAPIObject {
this.ref = ref;
}
+ /**
+ * @return The XenAPI reference (OpaqueRef) to this object.
+ */
public String toWireString() {
return this.ref;
}
@@ -151,7 +156,7 @@ public class Message extends XenAPIObject {
}
/**
- *
+ *
*
* @param name The name of the message
* @param priority The priority of the message
@@ -173,7 +178,7 @@ public class Message extends XenAPIObject {
}
/**
- *
+ *
*
*/
public void destroy(Connection c) throws
@@ -188,7 +193,7 @@ public class Message extends XenAPIObject {
}
/**
- *
+ *
*
* @param cls The class of object
* @param objUuid The uuid of the object
@@ -208,7 +213,7 @@ public class Message extends XenAPIObject {
}
/**
- *
+ *
*
* @return The references to the messages
*/
@@ -225,7 +230,7 @@ public class Message extends XenAPIObject {
}
/**
- *
+ *
*
* @param since The cutoff time
* @return The relevant messages
@@ -243,7 +248,7 @@ public class Message extends XenAPIObject {
}
/**
- *
+ *
*
* @return The message record
*/
@@ -260,7 +265,7 @@ public class Message extends XenAPIObject {
}
/**
- *
+ *
*
* @param uuid The uuid of the message
* @return The message reference
@@ -278,7 +283,7 @@ public class Message extends XenAPIObject {
}
/**
- *
+ *
*
* @return The messages
*/
@@ -295,7 +300,7 @@ public class Message extends XenAPIObject {
}
/**
- *
+ *
*
* @param expr The expression to match (not currently used)
* @return The messages
@@ -312,4 +317,4 @@ public class Message extends XenAPIObject {
return Types.toMapOfMessageMessageRecord(result);
}
-}
+}
\ No newline at end of file
diff --git a/deps/XenServerJava/src/com/xensource/xenapi/Network.java b/deps/XenServerJava/src/com/xensource/xenapi/Network.java
index 7b1282d5ffc..1b23afeee4d 100644
--- a/deps/XenServerJava/src/com/xensource/xenapi/Network.java
+++ b/deps/XenServerJava/src/com/xensource/xenapi/Network.java
@@ -1,18 +1,19 @@
-/* Copyright (c) Citrix Systems, Inc.
+/*
+ * Copyright (c) Citrix Systems, Inc.
* All rights reserved.
- *
+ *
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
- *
+ *
* 1) Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
- *
+ *
* 2) 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.
- *
+ *
* 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
@@ -27,6 +28,7 @@
* OF THE POSSIBILITY OF SUCH DAMAGE.
*/
+
package com.xensource.xenapi;
import com.xensource.xenapi.Types.BadServerResponse;
@@ -51,7 +53,7 @@ import org.apache.xmlrpc.XmlRpcException;
public class Network extends XenAPIObject {
/**
- * The XenAPI reference to this object.
+ * The XenAPI reference (OpaqueRef) to this object.
*/
protected final String ref;
@@ -62,6 +64,9 @@ public class Network extends XenAPIObject {
this.ref = ref;
}
+ /**
+ * @return The XenAPI reference (OpaqueRef) to this object.
+ */
public String toWireString() {
return this.ref;
}
@@ -107,6 +112,7 @@ public class Network extends XenAPIObject {
print.printf("%1$20s: %2$s\n", "bridge", this.bridge);
print.printf("%1$20s: %2$s\n", "blobs", this.blobs);
print.printf("%1$20s: %2$s\n", "tags", this.tags);
+ print.printf("%1$20s: %2$s\n", "defaultLockingMode", this.defaultLockingMode);
return writer.toString();
}
@@ -127,6 +133,7 @@ public class Network extends XenAPIObject {
map.put("bridge", this.bridge == null ? "" : this.bridge);
map.put("blobs", this.blobs == null ? new HashMap() : this.blobs);
map.put("tags", this.tags == null ? new LinkedHashSet() : this.tags);
+ map.put("default_locking_mode", this.defaultLockingMode == null ? Types.NetworkDefaultLockingMode.UNRECOGNIZED : this.defaultLockingMode);
return map;
}
@@ -139,7 +146,7 @@ public class Network extends XenAPIObject {
*/
public String nameLabel;
/**
- * a notes field containg human-readable description
+ * a notes field containing human-readable description
*/
public String nameDescription;
/**
@@ -178,6 +185,10 @@ public class Network extends XenAPIObject {
* user-specified tags for categorization purposes
*/
public Set tags;
+ /**
+ * The network will use this value to determine the behaviour of all VIFs where locking_mode = default
+ */
+ public Types.NetworkDefaultLockingMode defaultLockingMode;
}
/**
@@ -507,6 +518,23 @@ public class Network extends XenAPIObject {
return Types.toSetOfString(result);
}
+ /**
+ * Get the default_locking_mode field of the given network.
+ *
+ * @return value of the field
+ */
+ public Types.NetworkDefaultLockingMode getDefaultLockingMode(Connection c) throws
+ BadServerResponse,
+ XenAPIException,
+ XmlRpcException {
+ String method_call = "network.get_default_locking_mode";
+ String session = c.getSessionReference();
+ Object[] method_params = {Marshalling.toXMLRPC(session), Marshalling.toXMLRPC(this.ref)};
+ Map response = c.dispatch(method_call, method_params);
+ Object result = response.get("Value");
+ return Types.toNetworkDefaultLockingMode(result);
+ }
+
/**
* Set the name/label field of the given network.
*
@@ -657,15 +685,16 @@ public class Network extends XenAPIObject {
*
* @param name The name associated with the blob
* @param mimeType The mime type for the data. Empty string translates to application/octet-stream
+ * @param _public True if the blob should be publicly available
* @return Task
*/
- public Task createNewBlobAsync(Connection c, String name, String mimeType) throws
+ public Task createNewBlobAsync(Connection c, String name, String mimeType, Boolean _public) throws
BadServerResponse,
XenAPIException,
XmlRpcException {
String method_call = "Async.network.create_new_blob";
String session = c.getSessionReference();
- Object[] method_params = {Marshalling.toXMLRPC(session), Marshalling.toXMLRPC(this.ref), Marshalling.toXMLRPC(name), Marshalling.toXMLRPC(mimeType)};
+ Object[] method_params = {Marshalling.toXMLRPC(session), Marshalling.toXMLRPC(this.ref), Marshalling.toXMLRPC(name), Marshalling.toXMLRPC(mimeType), Marshalling.toXMLRPC(_public)};
Map response = c.dispatch(method_call, method_params);
Object result = response.get("Value");
return Types.toTask(result);
@@ -676,20 +705,55 @@ public class Network extends XenAPIObject {
*
* @param name The name associated with the blob
* @param mimeType The mime type for the data. Empty string translates to application/octet-stream
+ * @param _public True if the blob should be publicly available
* @return The reference of the blob, needed for populating its data
*/
- public Blob createNewBlob(Connection c, String name, String mimeType) throws
+ public Blob createNewBlob(Connection c, String name, String mimeType, Boolean _public) throws
BadServerResponse,
XenAPIException,
XmlRpcException {
String method_call = "network.create_new_blob";
String session = c.getSessionReference();
- Object[] method_params = {Marshalling.toXMLRPC(session), Marshalling.toXMLRPC(this.ref), Marshalling.toXMLRPC(name), Marshalling.toXMLRPC(mimeType)};
+ Object[] method_params = {Marshalling.toXMLRPC(session), Marshalling.toXMLRPC(this.ref), Marshalling.toXMLRPC(name), Marshalling.toXMLRPC(mimeType), Marshalling.toXMLRPC(_public)};
Map response = c.dispatch(method_call, method_params);
Object result = response.get("Value");
return Types.toBlob(result);
}
+ /**
+ * Set the default locking mode for VIFs attached to this network
+ *
+ * @param value The default locking mode for VIFs attached to this network.
+ * @return Task
+ */
+ public Task setDefaultLockingModeAsync(Connection c, Types.NetworkDefaultLockingMode value) throws
+ BadServerResponse,
+ XenAPIException,
+ XmlRpcException {
+ String method_call = "Async.network.set_default_locking_mode";
+ String session = c.getSessionReference();
+ Object[] method_params = {Marshalling.toXMLRPC(session), Marshalling.toXMLRPC(this.ref), Marshalling.toXMLRPC(value)};
+ Map response = c.dispatch(method_call, method_params);
+ Object result = response.get("Value");
+ return Types.toTask(result);
+ }
+
+ /**
+ * Set the default locking mode for VIFs attached to this network
+ *
+ * @param value The default locking mode for VIFs attached to this network.
+ */
+ public void setDefaultLockingMode(Connection c, Types.NetworkDefaultLockingMode value) throws
+ BadServerResponse,
+ XenAPIException,
+ XmlRpcException {
+ String method_call = "network.set_default_locking_mode";
+ String session = c.getSessionReference();
+ Object[] method_params = {Marshalling.toXMLRPC(session), Marshalling.toXMLRPC(this.ref), Marshalling.toXMLRPC(value)};
+ Map response = c.dispatch(method_call, method_params);
+ return;
+ }
+
/**
* Return a list of all the networks known to the system.
*
@@ -724,4 +788,4 @@ public class Network extends XenAPIObject {
return Types.toMapOfNetworkNetworkRecord(result);
}
-}
+}
\ No newline at end of file
diff --git a/deps/XenServerJava/src/com/xensource/xenapi/PBD.java b/deps/XenServerJava/src/com/xensource/xenapi/PBD.java
index 0a1e60d354a..6fddfa68542 100644
--- a/deps/XenServerJava/src/com/xensource/xenapi/PBD.java
+++ b/deps/XenServerJava/src/com/xensource/xenapi/PBD.java
@@ -1,18 +1,19 @@
-/* Copyright (c) Citrix Systems, Inc.
+/*
+ * Copyright (c) Citrix Systems, Inc.
* All rights reserved.
- *
+ *
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
- *
+ *
* 1) Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
- *
+ *
* 2) 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.
- *
+ *
* 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
@@ -27,6 +28,7 @@
* OF THE POSSIBILITY OF SUCH DAMAGE.
*/
+
package com.xensource.xenapi;
import com.xensource.xenapi.Types.BadServerResponse;
@@ -51,7 +53,7 @@ import org.apache.xmlrpc.XmlRpcException;
public class PBD extends XenAPIObject {
/**
- * The XenAPI reference to this object.
+ * The XenAPI reference (OpaqueRef) to this object.
*/
protected final String ref;
@@ -62,6 +64,9 @@ public class PBD extends XenAPIObject {
this.ref = ref;
}
+ /**
+ * @return The XenAPI reference (OpaqueRef) to this object.
+ */
public String toWireString() {
return this.ref;
}
@@ -534,4 +539,4 @@ public class PBD extends XenAPIObject {
return Types.toMapOfPBDPBDRecord(result);
}
-}
+}
\ No newline at end of file
diff --git a/deps/XenServerJava/src/com/xensource/xenapi/PCI.java b/deps/XenServerJava/src/com/xensource/xenapi/PCI.java
new file mode 100644
index 00000000000..9e2ec77d0be
--- /dev/null
+++ b/deps/XenServerJava/src/com/xensource/xenapi/PCI.java
@@ -0,0 +1,418 @@
+/*
+ * Copyright (c) Citrix Systems, Inc.
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * 1) Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ *
+ * 2) 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.
+ *
+ * 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 THE
+ * COPYRIGHT HOLDER 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.
+ */
+
+
+package com.xensource.xenapi;
+
+import com.xensource.xenapi.Types.BadServerResponse;
+import com.xensource.xenapi.Types.VersionException;
+import com.xensource.xenapi.Types.XenAPIException;
+
+import java.io.PrintWriter;
+import java.io.StringWriter;
+import java.util.Date;
+import java.util.HashMap;
+import java.util.LinkedHashSet;
+import java.util.Map;
+import java.util.Set;
+
+import org.apache.xmlrpc.XmlRpcException;
+
+/**
+ * A PCI device
+ *
+ * @author Citrix Systems, Inc.
+ */
+public class PCI extends XenAPIObject {
+
+ /**
+ * The XenAPI reference (OpaqueRef) to this object.
+ */
+ protected final String ref;
+
+ /**
+ * For internal use only.
+ */
+ PCI(String ref) {
+ this.ref = ref;
+ }
+
+ /**
+ * @return The XenAPI reference (OpaqueRef) to this object.
+ */
+ public String toWireString() {
+ return this.ref;
+ }
+
+ /**
+ * If obj is a PCI, compares XenAPI references for equality.
+ */
+ @Override
+ public boolean equals(Object obj)
+ {
+ if (obj != null && obj instanceof PCI)
+ {
+ PCI other = (PCI) obj;
+ return other.ref.equals(this.ref);
+ } else
+ {
+ return false;
+ }
+ }
+
+ @Override
+ public int hashCode()
+ {
+ return ref.hashCode();
+ }
+
+ /**
+ * Represents all the fields in a PCI
+ */
+ public static class Record implements Types.Record {
+ public String toString() {
+ StringWriter writer = new StringWriter();
+ PrintWriter print = new PrintWriter(writer);
+ print.printf("%1$20s: %2$s\n", "uuid", this.uuid);
+ print.printf("%1$20s: %2$s\n", "clazzName", this.clazzName);
+ print.printf("%1$20s: %2$s\n", "vendorName", this.vendorName);
+ print.printf("%1$20s: %2$s\n", "deviceName", this.deviceName);
+ print.printf("%1$20s: %2$s\n", "host", this.host);
+ print.printf("%1$20s: %2$s\n", "pciId", this.pciId);
+ print.printf("%1$20s: %2$s\n", "dependencies", this.dependencies);
+ print.printf("%1$20s: %2$s\n", "otherConfig", this.otherConfig);
+ return writer.toString();
+ }
+
+ /**
+ * Convert a PCI.Record to a Map
+ */
+ public Map toMap() {
+ Map map = new HashMap();
+ map.put("uuid", this.uuid == null ? "" : this.uuid);
+ map.put("class_name", this.clazzName == null ? "" : this.clazzName);
+ map.put("vendor_name", this.vendorName == null ? "" : this.vendorName);
+ map.put("device_name", this.deviceName == null ? "" : this.deviceName);
+ map.put("host", this.host == null ? new Host("OpaqueRef:NULL") : this.host);
+ map.put("pci_id", this.pciId == null ? "" : this.pciId);
+ map.put("dependencies", this.dependencies == null ? new LinkedHashSet() : this.dependencies);
+ map.put("other_config", this.otherConfig == null ? new HashMap() : this.otherConfig);
+ return map;
+ }
+
+ /**
+ * Unique identifier/object reference
+ */
+ public String uuid;
+ /**
+ * PCI class name
+ */
+ public String clazzName;
+ /**
+ * Vendor name
+ */
+ public String vendorName;
+ /**
+ * Device name
+ */
+ public String deviceName;
+ /**
+ * Physical machine that owns the PCI device
+ */
+ public Host host;
+ /**
+ * PCI ID of the physical device
+ */
+ public String pciId;
+ /**
+ * List of dependent PCI devices
+ */
+ public Set dependencies;
+ /**
+ * Additional configuration
+ */
+ public Map otherConfig;
+ }
+
+ /**
+ * Get a record containing the current state of the given PCI.
+ *
+ * @return all fields from the object
+ */
+ public PCI.Record getRecord(Connection c) throws
+ BadServerResponse,
+ XenAPIException,
+ XmlRpcException {
+ String method_call = "PCI.get_record";
+ String session = c.getSessionReference();
+ Object[] method_params = {Marshalling.toXMLRPC(session), Marshalling.toXMLRPC(this.ref)};
+ Map response = c.dispatch(method_call, method_params);
+ Object result = response.get("Value");
+ return Types.toPCIRecord(result);
+ }
+
+ /**
+ * Get a reference to the PCI instance with the specified UUID.
+ *
+ * @param uuid UUID of object to return
+ * @return reference to the object
+ */
+ public static PCI getByUuid(Connection c, String uuid) throws
+ BadServerResponse,
+ XenAPIException,
+ XmlRpcException {
+ String method_call = "PCI.get_by_uuid";
+ String session = c.getSessionReference();
+ Object[] method_params = {Marshalling.toXMLRPC(session), Marshalling.toXMLRPC(uuid)};
+ Map response = c.dispatch(method_call, method_params);
+ Object result = response.get("Value");
+ return Types.toPCI(result);
+ }
+
+ /**
+ * Get the uuid field of the given PCI.
+ *
+ * @return value of the field
+ */
+ public String getUuid(Connection c) throws
+ BadServerResponse,
+ XenAPIException,
+ XmlRpcException {
+ String method_call = "PCI.get_uuid";
+ String session = c.getSessionReference();
+ Object[] method_params = {Marshalling.toXMLRPC(session), Marshalling.toXMLRPC(this.ref)};
+ Map response = c.dispatch(method_call, method_params);
+ Object result = response.get("Value");
+ return Types.toString(result);
+ }
+
+ /**
+ * Get the class_name field of the given PCI.
+ *
+ * @return value of the field
+ */
+ public String getClazzName(Connection c) throws
+ BadServerResponse,
+ XenAPIException,
+ XmlRpcException {
+ String method_call = "PCI.get_class_name";
+ String session = c.getSessionReference();
+ Object[] method_params = {Marshalling.toXMLRPC(session), Marshalling.toXMLRPC(this.ref)};
+ Map response = c.dispatch(method_call, method_params);
+ Object result = response.get("Value");
+ return Types.toString(result);
+ }
+
+ /**
+ * Get the vendor_name field of the given PCI.
+ *
+ * @return value of the field
+ */
+ public String getVendorName(Connection c) throws
+ BadServerResponse,
+ XenAPIException,
+ XmlRpcException {
+ String method_call = "PCI.get_vendor_name";
+ String session = c.getSessionReference();
+ Object[] method_params = {Marshalling.toXMLRPC(session), Marshalling.toXMLRPC(this.ref)};
+ Map response = c.dispatch(method_call, method_params);
+ Object result = response.get("Value");
+ return Types.toString(result);
+ }
+
+ /**
+ * Get the device_name field of the given PCI.
+ *
+ * @return value of the field
+ */
+ public String getDeviceName(Connection c) throws
+ BadServerResponse,
+ XenAPIException,
+ XmlRpcException {
+ String method_call = "PCI.get_device_name";
+ String session = c.getSessionReference();
+ Object[] method_params = {Marshalling.toXMLRPC(session), Marshalling.toXMLRPC(this.ref)};
+ Map response = c.dispatch(method_call, method_params);
+ Object result = response.get("Value");
+ return Types.toString(result);
+ }
+
+ /**
+ * Get the host field of the given PCI.
+ *
+ * @return value of the field
+ */
+ public Host getHost(Connection c) throws
+ BadServerResponse,
+ XenAPIException,
+ XmlRpcException {
+ String method_call = "PCI.get_host";
+ String session = c.getSessionReference();
+ Object[] method_params = {Marshalling.toXMLRPC(session), Marshalling.toXMLRPC(this.ref)};
+ Map response = c.dispatch(method_call, method_params);
+ Object result = response.get("Value");
+ return Types.toHost(result);
+ }
+
+ /**
+ * Get the pci_id field of the given PCI.
+ *
+ * @return value of the field
+ */
+ public String getPciId(Connection c) throws
+ BadServerResponse,
+ XenAPIException,
+ XmlRpcException {
+ String method_call = "PCI.get_pci_id";
+ String session = c.getSessionReference();
+ Object[] method_params = {Marshalling.toXMLRPC(session), Marshalling.toXMLRPC(this.ref)};
+ Map response = c.dispatch(method_call, method_params);
+ Object result = response.get("Value");
+ return Types.toString(result);
+ }
+
+ /**
+ * Get the dependencies field of the given PCI.
+ *
+ * @return value of the field
+ */
+ public Set getDependencies(Connection c) throws
+ BadServerResponse,
+ XenAPIException,
+ XmlRpcException {
+ String method_call = "PCI.get_dependencies";
+ String session = c.getSessionReference();
+ Object[] method_params = {Marshalling.toXMLRPC(session), Marshalling.toXMLRPC(this.ref)};
+ Map response = c.dispatch(method_call, method_params);
+ Object result = response.get("Value");
+ return Types.toSetOfPCI(result);
+ }
+
+ /**
+ * Get the other_config field of the given PCI.
+ *
+ * @return value of the field
+ */
+ public Map getOtherConfig(Connection c) throws
+ BadServerResponse,
+ XenAPIException,
+ XmlRpcException {
+ String method_call = "PCI.get_other_config";
+ String session = c.getSessionReference();
+ Object[] method_params = {Marshalling.toXMLRPC(session), Marshalling.toXMLRPC(this.ref)};
+ Map response = c.dispatch(method_call, method_params);
+ Object result = response.get("Value");
+ return Types.toMapOfStringString(result);
+ }
+
+ /**
+ * Set the other_config field of the given PCI.
+ *
+ * @param otherConfig New value to set
+ */
+ public void setOtherConfig(Connection c, Map otherConfig) throws
+ BadServerResponse,
+ XenAPIException,
+ XmlRpcException {
+ String method_call = "PCI.set_other_config";
+ String session = c.getSessionReference();
+ Object[] method_params = {Marshalling.toXMLRPC(session), Marshalling.toXMLRPC(this.ref), Marshalling.toXMLRPC(otherConfig)};
+ Map response = c.dispatch(method_call, method_params);
+ return;
+ }
+
+ /**
+ * Add the given key-value pair to the other_config field of the given PCI.
+ *
+ * @param key Key to add
+ * @param value Value to add
+ */
+ public void addToOtherConfig(Connection c, String key, String value) throws
+ BadServerResponse,
+ XenAPIException,
+ XmlRpcException {
+ String method_call = "PCI.add_to_other_config";
+ String session = c.getSessionReference();
+ Object[] method_params = {Marshalling.toXMLRPC(session), Marshalling.toXMLRPC(this.ref), Marshalling.toXMLRPC(key), Marshalling.toXMLRPC(value)};
+ Map response = c.dispatch(method_call, method_params);
+ return;
+ }
+
+ /**
+ * Remove the given key and its corresponding value from the other_config field of the given PCI. If the key is not in that Map, then do nothing.
+ *
+ * @param key Key to remove
+ */
+ public void removeFromOtherConfig(Connection c, String key) throws
+ BadServerResponse,
+ XenAPIException,
+ XmlRpcException {
+ String method_call = "PCI.remove_from_other_config";
+ String session = c.getSessionReference();
+ Object[] method_params = {Marshalling.toXMLRPC(session), Marshalling.toXMLRPC(this.ref), Marshalling.toXMLRPC(key)};
+ Map response = c.dispatch(method_call, method_params);
+ return;
+ }
+
+ /**
+ * Return a list of all the PCIs known to the system.
+ *
+ * @return references to all objects
+ */
+ public static Set getAll(Connection c) throws
+ BadServerResponse,
+ XenAPIException,
+ XmlRpcException {
+ String method_call = "PCI.get_all";
+ String session = c.getSessionReference();
+ Object[] method_params = {Marshalling.toXMLRPC(session)};
+ Map response = c.dispatch(method_call, method_params);
+ Object result = response.get("Value");
+ return Types.toSetOfPCI(result);
+ }
+
+ /**
+ * Return a map of PCI references to PCI records for all PCIs known to the system.
+ *
+ * @return records of all objects
+ */
+ public static Map getAllRecords(Connection c) throws
+ BadServerResponse,
+ XenAPIException,
+ XmlRpcException {
+ String method_call = "PCI.get_all_records";
+ String session = c.getSessionReference();
+ Object[] method_params = {Marshalling.toXMLRPC(session)};
+ Map response = c.dispatch(method_call, method_params);
+ Object result = response.get("Value");
+ return Types.toMapOfPCIPCIRecord(result);
+ }
+
+}
\ No newline at end of file
diff --git a/deps/XenServerJava/src/com/xensource/xenapi/PGPU.java b/deps/XenServerJava/src/com/xensource/xenapi/PGPU.java
new file mode 100644
index 00000000000..a9e1c432dad
--- /dev/null
+++ b/deps/XenServerJava/src/com/xensource/xenapi/PGPU.java
@@ -0,0 +1,349 @@
+/*
+ * Copyright (c) Citrix Systems, Inc.
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * 1) Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ *
+ * 2) 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.
+ *
+ * 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 THE
+ * COPYRIGHT HOLDER 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.
+ */
+
+
+package com.xensource.xenapi;
+
+import com.xensource.xenapi.Types.BadServerResponse;
+import com.xensource.xenapi.Types.VersionException;
+import com.xensource.xenapi.Types.XenAPIException;
+
+import java.io.PrintWriter;
+import java.io.StringWriter;
+import java.util.Date;
+import java.util.HashMap;
+import java.util.LinkedHashSet;
+import java.util.Map;
+import java.util.Set;
+
+import org.apache.xmlrpc.XmlRpcException;
+
+/**
+ * A physical GPU (pGPU)
+ *
+ * @author Citrix Systems, Inc.
+ */
+public class PGPU extends XenAPIObject {
+
+ /**
+ * The XenAPI reference (OpaqueRef) to this object.
+ */
+ protected final String ref;
+
+ /**
+ * For internal use only.
+ */
+ PGPU(String ref) {
+ this.ref = ref;
+ }
+
+ /**
+ * @return The XenAPI reference (OpaqueRef) to this object.
+ */
+ public String toWireString() {
+ return this.ref;
+ }
+
+ /**
+ * If obj is a PGPU, compares XenAPI references for equality.
+ */
+ @Override
+ public boolean equals(Object obj)
+ {
+ if (obj != null && obj instanceof PGPU)
+ {
+ PGPU other = (PGPU) obj;
+ return other.ref.equals(this.ref);
+ } else
+ {
+ return false;
+ }
+ }
+
+ @Override
+ public int hashCode()
+ {
+ return ref.hashCode();
+ }
+
+ /**
+ * Represents all the fields in a PGPU
+ */
+ public static class Record implements Types.Record {
+ public String toString() {
+ StringWriter writer = new StringWriter();
+ PrintWriter print = new PrintWriter(writer);
+ print.printf("%1$20s: %2$s\n", "uuid", this.uuid);
+ print.printf("%1$20s: %2$s\n", "PCI", this.PCI);
+ print.printf("%1$20s: %2$s\n", "GPUGroup", this.GPUGroup);
+ print.printf("%1$20s: %2$s\n", "host", this.host);
+ print.printf("%1$20s: %2$s\n", "otherConfig", this.otherConfig);
+ return writer.toString();
+ }
+
+ /**
+ * Convert a PGPU.Record to a Map
+ */
+ public Map toMap() {
+ Map map = new HashMap();
+ map.put("uuid", this.uuid == null ? "" : this.uuid);
+ map.put("PCI", this.PCI == null ? new PCI("OpaqueRef:NULL") : this.PCI);
+ map.put("GPU_group", this.GPUGroup == null ? new GPUGroup("OpaqueRef:NULL") : this.GPUGroup);
+ map.put("host", this.host == null ? new Host("OpaqueRef:NULL") : this.host);
+ map.put("other_config", this.otherConfig == null ? new HashMap() : this.otherConfig);
+ return map;
+ }
+
+ /**
+ * Unique identifier/object reference
+ */
+ public String uuid;
+ /**
+ * Link to underlying PCI device
+ */
+ public PCI PCI;
+ /**
+ * GPU group the pGPU is contained in
+ */
+ public GPUGroup GPUGroup;
+ /**
+ * Host that own the GPU
+ */
+ public Host host;
+ /**
+ * Additional configuration
+ */
+ public Map otherConfig;
+ }
+
+ /**
+ * Get a record containing the current state of the given PGPU.
+ *
+ * @return all fields from the object
+ */
+ public PGPU.Record getRecord(Connection c) throws
+ BadServerResponse,
+ XenAPIException,
+ XmlRpcException {
+ String method_call = "PGPU.get_record";
+ String session = c.getSessionReference();
+ Object[] method_params = {Marshalling.toXMLRPC(session), Marshalling.toXMLRPC(this.ref)};
+ Map response = c.dispatch(method_call, method_params);
+ Object result = response.get("Value");
+ return Types.toPGPURecord(result);
+ }
+
+ /**
+ * Get a reference to the PGPU instance with the specified UUID.
+ *
+ * @param uuid UUID of object to return
+ * @return reference to the object
+ */
+ public static PGPU getByUuid(Connection c, String uuid) throws
+ BadServerResponse,
+ XenAPIException,
+ XmlRpcException {
+ String method_call = "PGPU.get_by_uuid";
+ String session = c.getSessionReference();
+ Object[] method_params = {Marshalling.toXMLRPC(session), Marshalling.toXMLRPC(uuid)};
+ Map response = c.dispatch(method_call, method_params);
+ Object result = response.get("Value");
+ return Types.toPGPU(result);
+ }
+
+ /**
+ * Get the uuid field of the given PGPU.
+ *
+ * @return value of the field
+ */
+ public String getUuid(Connection c) throws
+ BadServerResponse,
+ XenAPIException,
+ XmlRpcException {
+ String method_call = "PGPU.get_uuid";
+ String session = c.getSessionReference();
+ Object[] method_params = {Marshalling.toXMLRPC(session), Marshalling.toXMLRPC(this.ref)};
+ Map response = c.dispatch(method_call, method_params);
+ Object result = response.get("Value");
+ return Types.toString(result);
+ }
+
+ /**
+ * Get the PCI field of the given PGPU.
+ *
+ * @return value of the field
+ */
+ public PCI getPCI(Connection c) throws
+ BadServerResponse,
+ XenAPIException,
+ XmlRpcException {
+ String method_call = "PGPU.get_PCI";
+ String session = c.getSessionReference();
+ Object[] method_params = {Marshalling.toXMLRPC(session), Marshalling.toXMLRPC(this.ref)};
+ Map response = c.dispatch(method_call, method_params);
+ Object result = response.get("Value");
+ return Types.toPCI(result);
+ }
+
+ /**
+ * Get the GPU_group field of the given PGPU.
+ *
+ * @return value of the field
+ */
+ public GPUGroup getGPUGroup(Connection c) throws
+ BadServerResponse,
+ XenAPIException,
+ XmlRpcException {
+ String method_call = "PGPU.get_GPU_group";
+ String session = c.getSessionReference();
+ Object[] method_params = {Marshalling.toXMLRPC(session), Marshalling.toXMLRPC(this.ref)};
+ Map response = c.dispatch(method_call, method_params);
+ Object result = response.get("Value");
+ return Types.toGPUGroup(result);
+ }
+
+ /**
+ * Get the host field of the given PGPU.
+ *
+ * @return value of the field
+ */
+ public Host getHost(Connection c) throws
+ BadServerResponse,
+ XenAPIException,
+ XmlRpcException {
+ String method_call = "PGPU.get_host";
+ String session = c.getSessionReference();
+ Object[] method_params = {Marshalling.toXMLRPC(session), Marshalling.toXMLRPC(this.ref)};
+ Map response = c.dispatch(method_call, method_params);
+ Object result = response.get("Value");
+ return Types.toHost(result);
+ }
+
+ /**
+ * Get the other_config field of the given PGPU.
+ *
+ * @return value of the field
+ */
+ public Map getOtherConfig(Connection c) throws
+ BadServerResponse,
+ XenAPIException,
+ XmlRpcException {
+ String method_call = "PGPU.get_other_config";
+ String session = c.getSessionReference();
+ Object[] method_params = {Marshalling.toXMLRPC(session), Marshalling.toXMLRPC(this.ref)};
+ Map response = c.dispatch(method_call, method_params);
+ Object result = response.get("Value");
+ return Types.toMapOfStringString(result);
+ }
+
+ /**
+ * Set the other_config field of the given PGPU.
+ *
+ * @param otherConfig New value to set
+ */
+ public void setOtherConfig(Connection c, Map otherConfig) throws
+ BadServerResponse,
+ XenAPIException,
+ XmlRpcException {
+ String method_call = "PGPU.set_other_config";
+ String session = c.getSessionReference();
+ Object[] method_params = {Marshalling.toXMLRPC(session), Marshalling.toXMLRPC(this.ref), Marshalling.toXMLRPC(otherConfig)};
+ Map response = c.dispatch(method_call, method_params);
+ return;
+ }
+
+ /**
+ * Add the given key-value pair to the other_config field of the given PGPU.
+ *
+ * @param key Key to add
+ * @param value Value to add
+ */
+ public void addToOtherConfig(Connection c, String key, String value) throws
+ BadServerResponse,
+ XenAPIException,
+ XmlRpcException {
+ String method_call = "PGPU.add_to_other_config";
+ String session = c.getSessionReference();
+ Object[] method_params = {Marshalling.toXMLRPC(session), Marshalling.toXMLRPC(this.ref), Marshalling.toXMLRPC(key), Marshalling.toXMLRPC(value)};
+ Map response = c.dispatch(method_call, method_params);
+ return;
+ }
+
+ /**
+ * Remove the given key and its corresponding value from the other_config field of the given PGPU. If the key is not in that Map, then do nothing.
+ *
+ * @param key Key to remove
+ */
+ public void removeFromOtherConfig(Connection c, String key) throws
+ BadServerResponse,
+ XenAPIException,
+ XmlRpcException {
+ String method_call = "PGPU.remove_from_other_config";
+ String session = c.getSessionReference();
+ Object[] method_params = {Marshalling.toXMLRPC(session), Marshalling.toXMLRPC(this.ref), Marshalling.toXMLRPC(key)};
+ Map response = c.dispatch(method_call, method_params);
+ return;
+ }
+
+ /**
+ * Return a list of all the PGPUs known to the system.
+ *
+ * @return references to all objects
+ */
+ public static Set getAll(Connection c) throws
+ BadServerResponse,
+ XenAPIException,
+ XmlRpcException {
+ String method_call = "PGPU.get_all";
+ String session = c.getSessionReference();
+ Object[] method_params = {Marshalling.toXMLRPC(session)};
+ Map response = c.dispatch(method_call, method_params);
+ Object result = response.get("Value");
+ return Types.toSetOfPGPU(result);
+ }
+
+ /**
+ * Return a map of PGPU references to PGPU records for all PGPUs known to the system.
+ *
+ * @return records of all objects
+ */
+ public static Map getAllRecords(Connection c) throws
+ BadServerResponse,
+ XenAPIException,
+ XmlRpcException {
+ String method_call = "PGPU.get_all_records";
+ String session = c.getSessionReference();
+ Object[] method_params = {Marshalling.toXMLRPC(session)};
+ Map response = c.dispatch(method_call, method_params);
+ Object result = response.get("Value");
+ return Types.toMapOfPGPUPGPURecord(result);
+ }
+
+}
\ No newline at end of file
diff --git a/deps/XenServerJava/src/com/xensource/xenapi/PIF.java b/deps/XenServerJava/src/com/xensource/xenapi/PIF.java
index bb0629446a6..950afebce14 100644
--- a/deps/XenServerJava/src/com/xensource/xenapi/PIF.java
+++ b/deps/XenServerJava/src/com/xensource/xenapi/PIF.java
@@ -1,18 +1,19 @@
-/* Copyright (c) Citrix Systems, Inc.
+/*
+ * Copyright (c) Citrix Systems, Inc.
* All rights reserved.
- *
+ *
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
- *
+ *
* 1) Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
- *
+ *
* 2) 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.
- *
+ *
* 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
@@ -27,6 +28,7 @@
* OF THE POSSIBILITY OF SUCH DAMAGE.
*/
+
package com.xensource.xenapi;
import com.xensource.xenapi.Types.BadServerResponse;
@@ -51,7 +53,7 @@ import org.apache.xmlrpc.XmlRpcException;
public class PIF extends XenAPIObject {
/**
- * The XenAPI reference to this object.
+ * The XenAPI reference (OpaqueRef) to this object.
*/
protected final String ref;
@@ -62,6 +64,9 @@ public class PIF extends XenAPIObject {
this.ref = ref;
}
+ /**
+ * @return The XenAPI reference (OpaqueRef) to this object.
+ */
public String toWireString() {
return this.ref;
}
@@ -119,6 +124,10 @@ public class PIF extends XenAPIObject {
print.printf("%1$20s: %2$s\n", "disallowUnplug", this.disallowUnplug);
print.printf("%1$20s: %2$s\n", "tunnelAccessPIFOf", this.tunnelAccessPIFOf);
print.printf("%1$20s: %2$s\n", "tunnelTransportPIFOf", this.tunnelTransportPIFOf);
+ print.printf("%1$20s: %2$s\n", "ipv6ConfigurationMode", this.ipv6ConfigurationMode);
+ print.printf("%1$20s: %2$s\n", "IPv6", this.IPv6);
+ print.printf("%1$20s: %2$s\n", "ipv6Gateway", this.ipv6Gateway);
+ print.printf("%1$20s: %2$s\n", "primaryAddressType", this.primaryAddressType);
return writer.toString();
}
@@ -151,6 +160,10 @@ public class PIF extends XenAPIObject {
map.put("disallow_unplug", this.disallowUnplug == null ? false : this.disallowUnplug);
map.put("tunnel_access_PIF_of", this.tunnelAccessPIFOf == null ? new LinkedHashSet() : this.tunnelAccessPIFOf);
map.put("tunnel_transport_PIF_of", this.tunnelTransportPIFOf == null ? new LinkedHashSet() : this.tunnelTransportPIFOf);
+ map.put("ipv6_configuration_mode", this.ipv6ConfigurationMode == null ? Types.Ipv6ConfigurationMode.UNRECOGNIZED : this.ipv6ConfigurationMode);
+ map.put("IPv6", this.IPv6 == null ? new LinkedHashSet() : this.IPv6);
+ map.put("ipv6_gateway", this.ipv6Gateway == null ? "" : this.ipv6Gateway);
+ map.put("primary_address_type", this.primaryAddressType == null ? Types.PrimaryAddressType.UNRECOGNIZED : this.primaryAddressType);
return map;
}
@@ -250,6 +263,22 @@ public class PIF extends XenAPIObject {
* Indicates to which tunnel this PIF provides transport
*/
public Set tunnelTransportPIFOf;
+ /**
+ * Sets if and how this interface gets an IPv6 address
+ */
+ public Types.Ipv6ConfigurationMode ipv6ConfigurationMode;
+ /**
+ * IPv6 address
+ */
+ public Set IPv6;
+ /**
+ * IPv6 gateway
+ */
+ public String ipv6Gateway;
+ /**
+ * Which protocol should define the primary address of this interface
+ */
+ public Types.PrimaryAddressType primaryAddressType;
}
/**
@@ -695,6 +724,74 @@ public class PIF extends XenAPIObject {
return Types.toSetOfTunnel(result);
}
+ /**
+ * Get the ipv6_configuration_mode field of the given PIF.
+ *
+ * @return value of the field
+ */
+ public Types.Ipv6ConfigurationMode getIpv6ConfigurationMode(Connection c) throws
+ BadServerResponse,
+ XenAPIException,
+ XmlRpcException {
+ String method_call = "PIF.get_ipv6_configuration_mode";
+ String session = c.getSessionReference();
+ Object[] method_params = {Marshalling.toXMLRPC(session), Marshalling.toXMLRPC(this.ref)};
+ Map response = c.dispatch(method_call, method_params);
+ Object result = response.get("Value");
+ return Types.toIpv6ConfigurationMode(result);
+ }
+
+ /**
+ * Get the IPv6 field of the given PIF.
+ *
+ * @return value of the field
+ */
+ public Set getIPv6(Connection c) throws
+ BadServerResponse,
+ XenAPIException,
+ XmlRpcException {
+ String method_call = "PIF.get_IPv6";
+ String session = c.getSessionReference();
+ Object[] method_params = {Marshalling.toXMLRPC(session), Marshalling.toXMLRPC(this.ref)};
+ Map response = c.dispatch(method_call, method_params);
+ Object result = response.get("Value");
+ return Types.toSetOfString(result);
+ }
+
+ /**
+ * Get the ipv6_gateway field of the given PIF.
+ *
+ * @return value of the field
+ */
+ public String getIpv6Gateway(Connection c) throws
+ BadServerResponse,
+ XenAPIException,
+ XmlRpcException {
+ String method_call = "PIF.get_ipv6_gateway";
+ String session = c.getSessionReference();
+ Object[] method_params = {Marshalling.toXMLRPC(session), Marshalling.toXMLRPC(this.ref)};
+ Map response = c.dispatch(method_call, method_params);
+ Object result = response.get("Value");
+ return Types.toString(result);
+ }
+
+ /**
+ * Get the primary_address_type field of the given PIF.
+ *
+ * @return value of the field
+ */
+ public Types.PrimaryAddressType getPrimaryAddressType(Connection c) throws
+ BadServerResponse,
+ XenAPIException,
+ XmlRpcException {
+ String method_call = "PIF.get_primary_address_type";
+ String session = c.getSessionReference();
+ Object[] method_params = {Marshalling.toXMLRPC(session), Marshalling.toXMLRPC(this.ref)};
+ Map response = c.dispatch(method_call, method_params);
+ Object result = response.get("Value");
+ return Types.toPrimaryAddressType(result);
+ }
+
/**
* Set the other_config field of the given PIF.
*
@@ -884,6 +981,80 @@ public class PIF extends XenAPIObject {
return;
}
+ /**
+ * Reconfigure the IPv6 address settings for this interface
+ *
+ * @param mode whether to use dynamic/static/no-assignment
+ * @param IPv6 the new IPv6 address (in / format)
+ * @param gateway the new gateway
+ * @param DNS the new DNS settings
+ * @return Task
+ */
+ public Task reconfigureIpv6Async(Connection c, Types.Ipv6ConfigurationMode mode, String IPv6, String gateway, String DNS) throws
+ BadServerResponse,
+ XenAPIException,
+ XmlRpcException {
+ String method_call = "Async.PIF.reconfigure_ipv6";
+ String session = c.getSessionReference();
+ Object[] method_params = {Marshalling.toXMLRPC(session), Marshalling.toXMLRPC(this.ref), Marshalling.toXMLRPC(mode), Marshalling.toXMLRPC(IPv6), Marshalling.toXMLRPC(gateway), Marshalling.toXMLRPC(DNS)};
+ Map response = c.dispatch(method_call, method_params);
+ Object result = response.get("Value");
+ return Types.toTask(result);
+ }
+
+ /**
+ * Reconfigure the IPv6 address settings for this interface
+ *
+ * @param mode whether to use dynamic/static/no-assignment
+ * @param IPv6 the new IPv6 address (in / format)
+ * @param gateway the new gateway
+ * @param DNS the new DNS settings
+ */
+ public void reconfigureIpv6(Connection c, Types.Ipv6ConfigurationMode mode, String IPv6, String gateway, String DNS) throws
+ BadServerResponse,
+ XenAPIException,
+ XmlRpcException {
+ String method_call = "PIF.reconfigure_ipv6";
+ String session = c.getSessionReference();
+ Object[] method_params = {Marshalling.toXMLRPC(session), Marshalling.toXMLRPC(this.ref), Marshalling.toXMLRPC(mode), Marshalling.toXMLRPC(IPv6), Marshalling.toXMLRPC(gateway), Marshalling.toXMLRPC(DNS)};
+ Map response = c.dispatch(method_call, method_params);
+ return;
+ }
+
+ /**
+ * Change the primary address type used by this PIF
+ *
+ * @param primaryAddressType Whether to prefer IPv4 or IPv6 connections
+ * @return Task
+ */
+ public Task setPrimaryAddressTypeAsync(Connection c, Types.PrimaryAddressType primaryAddressType) throws
+ BadServerResponse,
+ XenAPIException,
+ XmlRpcException {
+ String method_call = "Async.PIF.set_primary_address_type";
+ String session = c.getSessionReference();
+ Object[] method_params = {Marshalling.toXMLRPC(session), Marshalling.toXMLRPC(this.ref), Marshalling.toXMLRPC(primaryAddressType)};
+ Map response = c.dispatch(method_call, method_params);
+ Object result = response.get("Value");
+ return Types.toTask(result);
+ }
+
+ /**
+ * Change the primary address type used by this PIF
+ *
+ * @param primaryAddressType Whether to prefer IPv4 or IPv6 connections
+ */
+ public void setPrimaryAddressType(Connection c, Types.PrimaryAddressType primaryAddressType) throws
+ BadServerResponse,
+ XenAPIException,
+ XmlRpcException {
+ String method_call = "PIF.set_primary_address_type";
+ String session = c.getSessionReference();
+ Object[] method_params = {Marshalling.toXMLRPC(session), Marshalling.toXMLRPC(this.ref), Marshalling.toXMLRPC(primaryAddressType)};
+ Map response = c.dispatch(method_call, method_params);
+ return;
+ }
+
/**
* Scan for physical interfaces on a host and create PIF objects to represent them
*
@@ -918,42 +1089,6 @@ public class PIF extends XenAPIObject {
return;
}
- /**
- * Scan for physical interfaces on a host and create PIF objects to represent them. Use BIOS-based device names.
- *
- * @param host The host on which to scan
- * @return Task
- */
- public static Task scanBiosAsync(Connection c, Host host) throws
- BadServerResponse,
- XenAPIException,
- XmlRpcException {
- String method_call = "Async.PIF.scan_bios";
- String session = c.getSessionReference();
- Object[] method_params = {Marshalling.toXMLRPC(session), Marshalling.toXMLRPC(host)};
- Map response = c.dispatch(method_call, method_params);
- Object result = response.get("Value");
- return Types.toTask(result);
- }
-
- /**
- * Scan for physical interfaces on a host and create PIF objects to represent them. Use BIOS-based device names.
- *
- * @param host The host on which to scan
- * @return List of newly created PIFs
- */
- public static Set scanBios(Connection c, Host host) throws
- BadServerResponse,
- XenAPIException,
- XmlRpcException {
- String method_call = "PIF.scan_bios";
- String session = c.getSessionReference();
- Object[] method_params = {Marshalling.toXMLRPC(session), Marshalling.toXMLRPC(host)};
- Map response = c.dispatch(method_call, method_params);
- Object result = response.get("Value");
- return Types.toSetOfPIF(result);
- }
-
/**
* Create a PIF object matching a particular network interface
*
@@ -1097,32 +1232,36 @@ public class PIF extends XenAPIObject {
/**
* Create a new PIF record in the database only
*
- * @param device
- * @param network
- * @param host
- * @param MAC
- * @param MTU
- * @param VLAN
- * @param physical
- * @param ipConfigurationMode
- * @param IP
- * @param netmask
- * @param gateway
- * @param DNS
- * @param bondSlaveOf
- * @param VLANMasterOf
- * @param management
- * @param otherConfig
- * @param disallowUnplug
+ * @param device
+ * @param network
+ * @param host
+ * @param MAC
+ * @param MTU
+ * @param VLAN
+ * @param physical
+ * @param ipConfigurationMode
+ * @param IP
+ * @param netmask
+ * @param gateway
+ * @param DNS
+ * @param bondSlaveOf
+ * @param VLANMasterOf
+ * @param management
+ * @param otherConfig
+ * @param disallowUnplug
+ * @param ipv6ConfigurationMode
+ * @param IPv6
+ * @param ipv6Gateway
+ * @param primaryAddressType
* @return Task
*/
- public static Task dbIntroduceAsync(Connection c, String device, Network network, Host host, String MAC, Long MTU, Long VLAN, Boolean physical, Types.IpConfigurationMode ipConfigurationMode, String IP, String netmask, String gateway, String DNS, Bond bondSlaveOf, VLAN VLANMasterOf, Boolean management, Map otherConfig, Boolean disallowUnplug) throws
+ public static Task dbIntroduceAsync(Connection c, String device, Network network, Host host, String MAC, Long MTU, Long VLAN, Boolean physical, Types.IpConfigurationMode ipConfigurationMode, String IP, String netmask, String gateway, String DNS, Bond bondSlaveOf, VLAN VLANMasterOf, Boolean management, Map otherConfig, Boolean disallowUnplug, Types.Ipv6ConfigurationMode ipv6ConfigurationMode, Set IPv6, String ipv6Gateway, Types.PrimaryAddressType primaryAddressType) throws
BadServerResponse,
XenAPIException,
XmlRpcException {
String method_call = "Async.PIF.db_introduce";
String session = c.getSessionReference();
- Object[] method_params = {Marshalling.toXMLRPC(session), Marshalling.toXMLRPC(device), Marshalling.toXMLRPC(network), Marshalling.toXMLRPC(host), Marshalling.toXMLRPC(MAC), Marshalling.toXMLRPC(MTU), Marshalling.toXMLRPC(VLAN), Marshalling.toXMLRPC(physical), Marshalling.toXMLRPC(ipConfigurationMode), Marshalling.toXMLRPC(IP), Marshalling.toXMLRPC(netmask), Marshalling.toXMLRPC(gateway), Marshalling.toXMLRPC(DNS), Marshalling.toXMLRPC(bondSlaveOf), Marshalling.toXMLRPC(VLANMasterOf), Marshalling.toXMLRPC(management), Marshalling.toXMLRPC(otherConfig), Marshalling.toXMLRPC(disallowUnplug)};
+ Object[] method_params = {Marshalling.toXMLRPC(session), Marshalling.toXMLRPC(device), Marshalling.toXMLRPC(network), Marshalling.toXMLRPC(host), Marshalling.toXMLRPC(MAC), Marshalling.toXMLRPC(MTU), Marshalling.toXMLRPC(VLAN), Marshalling.toXMLRPC(physical), Marshalling.toXMLRPC(ipConfigurationMode), Marshalling.toXMLRPC(IP), Marshalling.toXMLRPC(netmask), Marshalling.toXMLRPC(gateway), Marshalling.toXMLRPC(DNS), Marshalling.toXMLRPC(bondSlaveOf), Marshalling.toXMLRPC(VLANMasterOf), Marshalling.toXMLRPC(management), Marshalling.toXMLRPC(otherConfig), Marshalling.toXMLRPC(disallowUnplug), Marshalling.toXMLRPC(ipv6ConfigurationMode), Marshalling.toXMLRPC(IPv6), Marshalling.toXMLRPC(ipv6Gateway), Marshalling.toXMLRPC(primaryAddressType)};
Map response = c.dispatch(method_call, method_params);
Object result = response.get("Value");
return Types.toTask(result);
@@ -1131,32 +1270,36 @@ public class PIF extends XenAPIObject {
/**
* Create a new PIF record in the database only
*
- * @param device
- * @param network
- * @param host
- * @param MAC
- * @param MTU
- * @param VLAN
- * @param physical
- * @param ipConfigurationMode
- * @param IP
- * @param netmask
- * @param gateway
- * @param DNS
- * @param bondSlaveOf
- * @param VLANMasterOf
- * @param management
- * @param otherConfig
- * @param disallowUnplug
+ * @param device
+ * @param network
+ * @param host
+ * @param MAC
+ * @param MTU
+ * @param VLAN
+ * @param physical
+ * @param ipConfigurationMode
+ * @param IP
+ * @param netmask
+ * @param gateway
+ * @param DNS
+ * @param bondSlaveOf
+ * @param VLANMasterOf
+ * @param management
+ * @param otherConfig
+ * @param disallowUnplug
+ * @param ipv6ConfigurationMode
+ * @param IPv6
+ * @param ipv6Gateway
+ * @param primaryAddressType
* @return The ref of the newly created PIF record.
*/
- public static PIF dbIntroduce(Connection c, String device, Network network, Host host, String MAC, Long MTU, Long VLAN, Boolean physical, Types.IpConfigurationMode ipConfigurationMode, String IP, String netmask, String gateway, String DNS, Bond bondSlaveOf, VLAN VLANMasterOf, Boolean management, Map otherConfig, Boolean disallowUnplug) throws
+ public static PIF dbIntroduce(Connection c, String device, Network network, Host host, String MAC, Long MTU, Long VLAN, Boolean physical, Types.IpConfigurationMode ipConfigurationMode, String IP, String netmask, String gateway, String DNS, Bond bondSlaveOf, VLAN VLANMasterOf, Boolean management, Map otherConfig, Boolean disallowUnplug, Types.Ipv6ConfigurationMode ipv6ConfigurationMode, Set IPv6, String ipv6Gateway, Types.PrimaryAddressType primaryAddressType) throws
BadServerResponse,
XenAPIException,
XmlRpcException {
String method_call = "PIF.db_introduce";
String session = c.getSessionReference();
- Object[] method_params = {Marshalling.toXMLRPC(session), Marshalling.toXMLRPC(device), Marshalling.toXMLRPC(network), Marshalling.toXMLRPC(host), Marshalling.toXMLRPC(MAC), Marshalling.toXMLRPC(MTU), Marshalling.toXMLRPC(VLAN), Marshalling.toXMLRPC(physical), Marshalling.toXMLRPC(ipConfigurationMode), Marshalling.toXMLRPC(IP), Marshalling.toXMLRPC(netmask), Marshalling.toXMLRPC(gateway), Marshalling.toXMLRPC(DNS), Marshalling.toXMLRPC(bondSlaveOf), Marshalling.toXMLRPC(VLANMasterOf), Marshalling.toXMLRPC(management), Marshalling.toXMLRPC(otherConfig), Marshalling.toXMLRPC(disallowUnplug)};
+ Object[] method_params = {Marshalling.toXMLRPC(session), Marshalling.toXMLRPC(device), Marshalling.toXMLRPC(network), Marshalling.toXMLRPC(host), Marshalling.toXMLRPC(MAC), Marshalling.toXMLRPC(MTU), Marshalling.toXMLRPC(VLAN), Marshalling.toXMLRPC(physical), Marshalling.toXMLRPC(ipConfigurationMode), Marshalling.toXMLRPC(IP), Marshalling.toXMLRPC(netmask), Marshalling.toXMLRPC(gateway), Marshalling.toXMLRPC(DNS), Marshalling.toXMLRPC(bondSlaveOf), Marshalling.toXMLRPC(VLANMasterOf), Marshalling.toXMLRPC(management), Marshalling.toXMLRPC(otherConfig), Marshalling.toXMLRPC(disallowUnplug), Marshalling.toXMLRPC(ipv6ConfigurationMode), Marshalling.toXMLRPC(IPv6), Marshalling.toXMLRPC(ipv6Gateway), Marshalling.toXMLRPC(primaryAddressType)};
Map response = c.dispatch(method_call, method_params);
Object result = response.get("Value");
return Types.toPIF(result);
@@ -1228,4 +1371,4 @@ public class PIF extends XenAPIObject {
return Types.toMapOfPIFPIFRecord(result);
}
-}
+}
\ No newline at end of file
diff --git a/deps/XenServerJava/src/com/xensource/xenapi/PIFMetrics.java b/deps/XenServerJava/src/com/xensource/xenapi/PIFMetrics.java
index 34417d3cea3..d0a3911d327 100644
--- a/deps/XenServerJava/src/com/xensource/xenapi/PIFMetrics.java
+++ b/deps/XenServerJava/src/com/xensource/xenapi/PIFMetrics.java
@@ -1,18 +1,19 @@
-/* Copyright (c) Citrix Systems, Inc.
+/*
+ * Copyright (c) Citrix Systems, Inc.
* All rights reserved.
- *
+ *
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
- *
+ *
* 1) Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
- *
+ *
* 2) 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.
- *
+ *
* 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
@@ -27,6 +28,7 @@
* OF THE POSSIBILITY OF SUCH DAMAGE.
*/
+
package com.xensource.xenapi;
import com.xensource.xenapi.Types.BadServerResponse;
@@ -51,7 +53,7 @@ import org.apache.xmlrpc.XmlRpcException;
public class PIFMetrics extends XenAPIObject {
/**
- * The XenAPI reference to this object.
+ * The XenAPI reference (OpaqueRef) to this object.
*/
protected final String ref;
@@ -62,6 +64,9 @@ public class PIFMetrics extends XenAPIObject {
this.ref = ref;
}
+ /**
+ * @return The XenAPI reference (OpaqueRef) to this object.
+ */
public String toWireString() {
return this.ref;
}
@@ -525,4 +530,4 @@ public class PIFMetrics extends XenAPIObject {
return Types.toMapOfPIFMetricsPIFMetricsRecord(result);
}
-}
+}
\ No newline at end of file
diff --git a/deps/XenServerJava/src/com/xensource/xenapi/Pool.java b/deps/XenServerJava/src/com/xensource/xenapi/Pool.java
index 1b06094afe3..2dc0fac9c78 100644
--- a/deps/XenServerJava/src/com/xensource/xenapi/Pool.java
+++ b/deps/XenServerJava/src/com/xensource/xenapi/Pool.java
@@ -1,18 +1,19 @@
-/* Copyright (c) Citrix Systems, Inc.
+/*
+ * Copyright (c) Citrix Systems, Inc.
* All rights reserved.
- *
+ *
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
- *
+ *
* 1) Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
- *
+ *
* 2) 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.
- *
+ *
* 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
@@ -27,6 +28,7 @@
* OF THE POSSIBILITY OF SUCH DAMAGE.
*/
+
package com.xensource.xenapi;
import com.xensource.xenapi.Types.BadServerResponse;
@@ -51,7 +53,7 @@ import org.apache.xmlrpc.XmlRpcException;
public class Pool extends XenAPIObject {
/**
- * The XenAPI reference to this object.
+ * The XenAPI reference (OpaqueRef) to this object.
*/
protected final String ref;
@@ -62,6 +64,9 @@ public class Pool extends XenAPIObject {
this.ref = ref;
}
+ /**
+ * @return The XenAPI reference (OpaqueRef) to this object.
+ */
public String toWireString() {
return this.ref;
}
@@ -121,6 +126,7 @@ public class Pool extends XenAPIObject {
print.printf("%1$20s: %2$s\n", "redoLogVdi", this.redoLogVdi);
print.printf("%1$20s: %2$s\n", "vswitchController", this.vswitchController);
print.printf("%1$20s: %2$s\n", "restrictions", this.restrictions);
+ print.printf("%1$20s: %2$s\n", "metadataVDIs", this.metadataVDIs);
return writer.toString();
}
@@ -155,6 +161,7 @@ public class Pool extends XenAPIObject {
map.put("redo_log_vdi", this.redoLogVdi == null ? new VDI("OpaqueRef:NULL") : this.redoLogVdi);
map.put("vswitch_controller", this.vswitchController == null ? "" : this.vswitchController);
map.put("restrictions", this.restrictions == null ? new HashMap() : this.restrictions);
+ map.put("metadata_VDIs", this.metadataVDIs == null ? new LinkedHashSet() : this.metadataVDIs);
return map;
}
@@ -262,6 +269,10 @@ public class Pool extends XenAPIObject {
* Pool-wide restrictions currently in effect
*/
public Map restrictions;
+ /**
+ * The set of currently known metadata VDIs for this pool
+ */
+ public Set metadataVDIs;
}
/**
@@ -741,6 +752,23 @@ public class Pool extends XenAPIObject {
return Types.toMapOfStringString(result);
}
+ /**
+ * Get the metadata_VDIs field of the given pool.
+ *
+ * @return value of the field
+ */
+ public Set getMetadataVDIs(Connection c) throws
+ BadServerResponse,
+ XenAPIException,
+ XmlRpcException {
+ String method_call = "pool.get_metadata_VDIs";
+ String session = c.getSessionReference();
+ Object[] method_params = {Marshalling.toXMLRPC(session), Marshalling.toXMLRPC(this.ref)};
+ Map response = c.dispatch(method_call, method_params);
+ Object result = response.get("Value");
+ return Types.toSetOfVDI(result);
+ }
+
/**
* Set the name_label field of the given pool.
*
@@ -1537,15 +1565,16 @@ public class Pool extends XenAPIObject {
*
* @param name The name associated with the blob
* @param mimeType The mime type for the data. Empty string translates to application/octet-stream
+ * @param _public True if the blob should be publicly available
* @return Task
*/
- public Task createNewBlobAsync(Connection c, String name, String mimeType) throws
+ public Task createNewBlobAsync(Connection c, String name, String mimeType, Boolean _public) throws
BadServerResponse,
XenAPIException,
XmlRpcException {
String method_call = "Async.pool.create_new_blob";
String session = c.getSessionReference();
- Object[] method_params = {Marshalling.toXMLRPC(session), Marshalling.toXMLRPC(this.ref), Marshalling.toXMLRPC(name), Marshalling.toXMLRPC(mimeType)};
+ Object[] method_params = {Marshalling.toXMLRPC(session), Marshalling.toXMLRPC(this.ref), Marshalling.toXMLRPC(name), Marshalling.toXMLRPC(mimeType), Marshalling.toXMLRPC(_public)};
Map response = c.dispatch(method_call, method_params);
Object result = response.get("Value");
return Types.toTask(result);
@@ -1556,15 +1585,16 @@ public class Pool extends XenAPIObject {
*
* @param name The name associated with the blob
* @param mimeType The mime type for the data. Empty string translates to application/octet-stream
+ * @param _public True if the blob should be publicly available
* @return The reference of the blob, needed for populating its data
*/
- public Blob createNewBlob(Connection c, String name, String mimeType) throws
+ public Blob createNewBlob(Connection c, String name, String mimeType, Boolean _public) throws
BadServerResponse,
XenAPIException,
XmlRpcException {
String method_call = "pool.create_new_blob";
String session = c.getSessionReference();
- Object[] method_params = {Marshalling.toXMLRPC(session), Marshalling.toXMLRPC(this.ref), Marshalling.toXMLRPC(name), Marshalling.toXMLRPC(mimeType)};
+ Object[] method_params = {Marshalling.toXMLRPC(session), Marshalling.toXMLRPC(this.ref), Marshalling.toXMLRPC(name), Marshalling.toXMLRPC(mimeType), Marshalling.toXMLRPC(_public)};
Map response = c.dispatch(method_call, method_params);
Object result = response.get("Value");
return Types.toBlob(result);
@@ -1798,9 +1828,9 @@ public class Pool extends XenAPIObject {
/**
* Send the given body to the given host and port, using HTTPS, and print the response. This is used for debugging the SSL layer.
*
- * @param host
- * @param port
- * @param body
+ * @param host
+ * @param port
+ * @param body
* @return Task
*/
public static Task sendTestPostAsync(Connection c, String host, Long port, String body) throws
@@ -1818,9 +1848,9 @@ public class Pool extends XenAPIObject {
/**
* Send the given body to the given host and port, using HTTPS, and print the response. This is used for debugging the SSL layer.
*
- * @param host
- * @param port
- * @param body
+ * @param host
+ * @param port
+ * @param body
* @return The response
*/
public static String sendTestPost(Connection c, String host, Long port, String body) throws
@@ -2291,4 +2321,4 @@ public class Pool extends XenAPIObject {
return Types.toMapOfPoolPoolRecord(result);
}
-}
+}
\ No newline at end of file
diff --git a/deps/XenServerJava/src/com/xensource/xenapi/PoolPatch.java b/deps/XenServerJava/src/com/xensource/xenapi/PoolPatch.java
index b2740247838..750a9f3225c 100644
--- a/deps/XenServerJava/src/com/xensource/xenapi/PoolPatch.java
+++ b/deps/XenServerJava/src/com/xensource/xenapi/PoolPatch.java
@@ -1,18 +1,19 @@
-/* Copyright (c) Citrix Systems, Inc.
+/*
+ * Copyright (c) Citrix Systems, Inc.
* All rights reserved.
- *
+ *
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
- *
+ *
* 1) Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
- *
+ *
* 2) 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.
- *
+ *
* 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
@@ -27,6 +28,7 @@
* OF THE POSSIBILITY OF SUCH DAMAGE.
*/
+
package com.xensource.xenapi;
import com.xensource.xenapi.Types.BadServerResponse;
@@ -51,7 +53,7 @@ import org.apache.xmlrpc.XmlRpcException;
public class PoolPatch extends XenAPIObject {
/**
- * The XenAPI reference to this object.
+ * The XenAPI reference (OpaqueRef) to this object.
*/
protected final String ref;
@@ -62,6 +64,9 @@ public class PoolPatch extends XenAPIObject {
this.ref = ref;
}
+ /**
+ * @return The XenAPI reference (OpaqueRef) to this object.
+ */
public String toWireString() {
return this.ref;
}
@@ -133,7 +138,7 @@ public class PoolPatch extends XenAPIObject {
*/
public String nameLabel;
/**
- * a notes field containg human-readable description
+ * a notes field containing human-readable description
*/
public String nameDescription;
/**
@@ -522,7 +527,7 @@ public class PoolPatch extends XenAPIObject {
}
/**
- * Removes the patch's files from all hosts in the pool, but does not remove the database entries
+ * Removes the patch's files from the server
*
* @return Task
*/
@@ -539,7 +544,7 @@ public class PoolPatch extends XenAPIObject {
}
/**
- * Removes the patch's files from all hosts in the pool, but does not remove the database entries
+ * Removes the patch's files from the server
*
*/
public void clean(Connection c) throws
@@ -553,6 +558,38 @@ public class PoolPatch extends XenAPIObject {
return;
}
+ /**
+ * Removes the patch's files from all hosts in the pool, but does not remove the database entries
+ *
+ * @return Task
+ */
+ public Task poolCleanAsync(Connection c) throws
+ BadServerResponse,
+ XenAPIException,
+ XmlRpcException {
+ String method_call = "Async.pool_patch.pool_clean";
+ String session = c.getSessionReference();
+ Object[] method_params = {Marshalling.toXMLRPC(session), Marshalling.toXMLRPC(this.ref)};
+ Map response = c.dispatch(method_call, method_params);
+ Object result = response.get("Value");
+ return Types.toTask(result);
+ }
+
+ /**
+ * Removes the patch's files from all hosts in the pool, but does not remove the database entries
+ *
+ */
+ public void poolClean(Connection c) throws
+ BadServerResponse,
+ XenAPIException,
+ XmlRpcException {
+ String method_call = "pool_patch.pool_clean";
+ String session = c.getSessionReference();
+ Object[] method_params = {Marshalling.toXMLRPC(session), Marshalling.toXMLRPC(this.ref)};
+ Map response = c.dispatch(method_call, method_params);
+ return;
+ }
+
/**
* Removes the patch's files from all hosts in the pool, and removes the database entries. Only works on unapplied patches.
*
@@ -585,6 +622,40 @@ public class PoolPatch extends XenAPIObject {
return;
}
+ /**
+ * Removes the patch's files from the specified host
+ *
+ * @param host The host on which to clean the patch
+ * @return Task
+ */
+ public Task cleanOnHostAsync(Connection c, Host host) throws
+ BadServerResponse,
+ XenAPIException,
+ XmlRpcException {
+ String method_call = "Async.pool_patch.clean_on_host";
+ String session = c.getSessionReference();
+ Object[] method_params = {Marshalling.toXMLRPC(session), Marshalling.toXMLRPC(this.ref), Marshalling.toXMLRPC(host)};
+ Map response = c.dispatch(method_call, method_params);
+ Object result = response.get("Value");
+ return Types.toTask(result);
+ }
+
+ /**
+ * Removes the patch's files from the specified host
+ *
+ * @param host The host on which to clean the patch
+ */
+ public void cleanOnHost(Connection c, Host host) throws
+ BadServerResponse,
+ XenAPIException,
+ XmlRpcException {
+ String method_call = "pool_patch.clean_on_host";
+ String session = c.getSessionReference();
+ Object[] method_params = {Marshalling.toXMLRPC(session), Marshalling.toXMLRPC(this.ref), Marshalling.toXMLRPC(host)};
+ Map response = c.dispatch(method_call, method_params);
+ return;
+ }
+
/**
* Return a list of all the pool_patchs known to the system.
*
@@ -619,4 +690,4 @@ public class PoolPatch extends XenAPIObject {
return Types.toMapOfPoolPatchPoolPatchRecord(result);
}
-}
+}
\ No newline at end of file
diff --git a/deps/XenServerJava/src/com/xensource/xenapi/Role.java b/deps/XenServerJava/src/com/xensource/xenapi/Role.java
index c64d18fae3f..f8dea77010b 100644
--- a/deps/XenServerJava/src/com/xensource/xenapi/Role.java
+++ b/deps/XenServerJava/src/com/xensource/xenapi/Role.java
@@ -1,18 +1,19 @@
-/* Copyright (c) Citrix Systems, Inc.
+/*
+ * Copyright (c) Citrix Systems, Inc.
* All rights reserved.
- *
+ *
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
- *
+ *
* 1) Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
- *
+ *
* 2) 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.
- *
+ *
* 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
@@ -27,6 +28,7 @@
* OF THE POSSIBILITY OF SUCH DAMAGE.
*/
+
package com.xensource.xenapi;
import com.xensource.xenapi.Types.BadServerResponse;
@@ -51,7 +53,7 @@ import org.apache.xmlrpc.XmlRpcException;
public class Role extends XenAPIObject {
/**
- * The XenAPI reference to this object.
+ * The XenAPI reference (OpaqueRef) to this object.
*/
protected final String ref;
@@ -62,6 +64,9 @@ public class Role extends XenAPIObject {
this.ref = ref;
}
+ /**
+ * @return The XenAPI reference (OpaqueRef) to this object.
+ */
public String toWireString() {
return this.ref;
}
@@ -356,4 +361,4 @@ public class Role extends XenAPIObject {
return Types.toMapOfRoleRoleRecord(result);
}
-}
+}
\ No newline at end of file
diff --git a/deps/XenServerJava/src/com/xensource/xenapi/SM.java b/deps/XenServerJava/src/com/xensource/xenapi/SM.java
index 12b6a821abb..9c7341ceb10 100644
--- a/deps/XenServerJava/src/com/xensource/xenapi/SM.java
+++ b/deps/XenServerJava/src/com/xensource/xenapi/SM.java
@@ -1,18 +1,19 @@
-/* Copyright (c) Citrix Systems, Inc.
+/*
+ * Copyright (c) Citrix Systems, Inc.
* All rights reserved.
- *
+ *
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
- *
+ *
* 1) Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
- *
+ *
* 2) 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.
- *
+ *
* 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
@@ -27,6 +28,7 @@
* OF THE POSSIBILITY OF SUCH DAMAGE.
*/
+
package com.xensource.xenapi;
import com.xensource.xenapi.Types.BadServerResponse;
@@ -51,7 +53,7 @@ import org.apache.xmlrpc.XmlRpcException;
public class SM extends XenAPIObject {
/**
- * The XenAPI reference to this object.
+ * The XenAPI reference (OpaqueRef) to this object.
*/
protected final String ref;
@@ -62,6 +64,9 @@ public class SM extends XenAPIObject {
this.ref = ref;
}
+ /**
+ * @return The XenAPI reference (OpaqueRef) to this object.
+ */
public String toWireString() {
return this.ref;
}
@@ -139,7 +144,7 @@ public class SM extends XenAPIObject {
*/
public String nameLabel;
/**
- * a notes field containg human-readable description
+ * a notes field containing human-readable description
*/
public String nameDescription;
/**
@@ -520,4 +525,4 @@ public class SM extends XenAPIObject {
return Types.toMapOfSMSMRecord(result);
}
-}
+}
\ No newline at end of file
diff --git a/deps/XenServerJava/src/com/xensource/xenapi/SR.java b/deps/XenServerJava/src/com/xensource/xenapi/SR.java
index 0f64aa58ca2..72314032506 100644
--- a/deps/XenServerJava/src/com/xensource/xenapi/SR.java
+++ b/deps/XenServerJava/src/com/xensource/xenapi/SR.java
@@ -1,18 +1,19 @@
-/* Copyright (c) Citrix Systems, Inc.
+/*
+ * Copyright (c) Citrix Systems, Inc.
* All rights reserved.
- *
+ *
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
- *
+ *
* 1) Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
- *
+ *
* 2) 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.
- *
+ *
* 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
@@ -27,6 +28,7 @@
* OF THE POSSIBILITY OF SUCH DAMAGE.
*/
+
package com.xensource.xenapi;
import com.xensource.xenapi.Types.BadServerResponse;
@@ -51,7 +53,7 @@ import org.apache.xmlrpc.XmlRpcException;
public class SR extends XenAPIObject {
/**
- * The XenAPI reference to this object.
+ * The XenAPI reference (OpaqueRef) to this object.
*/
protected final String ref;
@@ -62,6 +64,9 @@ public class SR extends XenAPIObject {
this.ref = ref;
}
+ /**
+ * @return The XenAPI reference (OpaqueRef) to this object.
+ */
public String toWireString() {
return this.ref;
}
@@ -113,6 +118,7 @@ public class SR extends XenAPIObject {
print.printf("%1$20s: %2$s\n", "smConfig", this.smConfig);
print.printf("%1$20s: %2$s\n", "blobs", this.blobs);
print.printf("%1$20s: %2$s\n", "localCacheEnabled", this.localCacheEnabled);
+ print.printf("%1$20s: %2$s\n", "introducedBy", this.introducedBy);
return writer.toString();
}
@@ -139,6 +145,7 @@ public class SR extends XenAPIObject {
map.put("sm_config", this.smConfig == null ? new HashMap() : this.smConfig);
map.put("blobs", this.blobs == null ? new HashMap() : this.blobs);
map.put("local_cache_enabled", this.localCacheEnabled == null ? false : this.localCacheEnabled);
+ map.put("introduced_by", this.introducedBy == null ? new DRTask("OpaqueRef:NULL") : this.introducedBy);
return map;
}
@@ -151,7 +158,7 @@ public class SR extends XenAPIObject {
*/
public String nameLabel;
/**
- * a notes field containg human-readable description
+ * a notes field containing human-readable description
*/
public String nameDescription;
/**
@@ -214,6 +221,10 @@ public class SR extends XenAPIObject {
* True if this SR is assigned to be the local cache for its host
*/
public Boolean localCacheEnabled;
+ /**
+ * The disaster recovery task which introduced this SR
+ */
+ public DRTask introducedBy;
}
/**
@@ -576,35 +587,20 @@ public class SR extends XenAPIObject {
}
/**
- * Set the name/label field of the given SR.
+ * Get the introduced_by field of the given SR.
*
- * @param label New value to set
+ * @return value of the field
*/
- public void setNameLabel(Connection c, String label) throws
+ public DRTask getIntroducedBy(Connection c) throws
BadServerResponse,
XenAPIException,
XmlRpcException {
- String method_call = "SR.set_name_label";
+ String method_call = "SR.get_introduced_by";
String session = c.getSessionReference();
- Object[] method_params = {Marshalling.toXMLRPC(session), Marshalling.toXMLRPC(this.ref), Marshalling.toXMLRPC(label)};
+ Object[] method_params = {Marshalling.toXMLRPC(session), Marshalling.toXMLRPC(this.ref)};
Map response = c.dispatch(method_call, method_params);
- return;
- }
-
- /**
- * Set the name/description field of the given SR.
- *
- * @param description New value to set
- */
- public void setNameDescription(Connection c, String description) throws
- BadServerResponse,
- XenAPIException,
- XmlRpcException {
- String method_call = "SR.set_name_description";
- String session = c.getSessionReference();
- Object[] method_params = {Marshalling.toXMLRPC(session), Marshalling.toXMLRPC(this.ref), Marshalling.toXMLRPC(description)};
- Map response = c.dispatch(method_call, method_params);
- return;
+ Object result = response.get("Value");
+ return Types.toDRTask(result);
}
/**
@@ -1322,20 +1318,89 @@ public class SR extends XenAPIObject {
return;
}
+ /**
+ * Set the name label of the SR
+ *
+ * @param value The name label for the SR
+ * @return Task
+ */
+ public Task setNameLabelAsync(Connection c, String value) throws
+ BadServerResponse,
+ XenAPIException,
+ XmlRpcException {
+ String method_call = "Async.SR.set_name_label";
+ String session = c.getSessionReference();
+ Object[] method_params = {Marshalling.toXMLRPC(session), Marshalling.toXMLRPC(this.ref), Marshalling.toXMLRPC(value)};
+ Map response = c.dispatch(method_call, method_params);
+ Object result = response.get("Value");
+ return Types.toTask(result);
+ }
+
+ /**
+ * Set the name label of the SR
+ *
+ * @param value The name label for the SR
+ */
+ public void setNameLabel(Connection c, String value) throws
+ BadServerResponse,
+ XenAPIException,
+ XmlRpcException {
+ String method_call = "SR.set_name_label";
+ String session = c.getSessionReference();
+ Object[] method_params = {Marshalling.toXMLRPC(session), Marshalling.toXMLRPC(this.ref), Marshalling.toXMLRPC(value)};
+ Map response = c.dispatch(method_call, method_params);
+ return;
+ }
+
+ /**
+ * Set the name description of the SR
+ *
+ * @param value The name description for the SR
+ * @return Task
+ */
+ public Task setNameDescriptionAsync(Connection c, String value) throws
+ BadServerResponse,
+ XenAPIException,
+ XmlRpcException {
+ String method_call = "Async.SR.set_name_description";
+ String session = c.getSessionReference();
+ Object[] method_params = {Marshalling.toXMLRPC(session), Marshalling.toXMLRPC(this.ref), Marshalling.toXMLRPC(value)};
+ Map response = c.dispatch(method_call, method_params);
+ Object result = response.get("Value");
+ return Types.toTask(result);
+ }
+
+ /**
+ * Set the name description of the SR
+ *
+ * @param value The name description for the SR
+ */
+ public void setNameDescription(Connection c, String value) throws
+ BadServerResponse,
+ XenAPIException,
+ XmlRpcException {
+ String method_call = "SR.set_name_description";
+ String session = c.getSessionReference();
+ Object[] method_params = {Marshalling.toXMLRPC(session), Marshalling.toXMLRPC(this.ref), Marshalling.toXMLRPC(value)};
+ Map response = c.dispatch(method_call, method_params);
+ return;
+ }
+
/**
* Create a placeholder for a named binary blob of data that is associated with this SR
*
* @param name The name associated with the blob
* @param mimeType The mime type for the data. Empty string translates to application/octet-stream
+ * @param _public True if the blob should be publicly available
* @return Task
*/
- public Task createNewBlobAsync(Connection c, String name, String mimeType) throws
+ public Task createNewBlobAsync(Connection c, String name, String mimeType, Boolean _public) throws
BadServerResponse,
XenAPIException,
XmlRpcException {
String method_call = "Async.SR.create_new_blob";
String session = c.getSessionReference();
- Object[] method_params = {Marshalling.toXMLRPC(session), Marshalling.toXMLRPC(this.ref), Marshalling.toXMLRPC(name), Marshalling.toXMLRPC(mimeType)};
+ Object[] method_params = {Marshalling.toXMLRPC(session), Marshalling.toXMLRPC(this.ref), Marshalling.toXMLRPC(name), Marshalling.toXMLRPC(mimeType), Marshalling.toXMLRPC(_public)};
Map response = c.dispatch(method_call, method_params);
Object result = response.get("Value");
return Types.toTask(result);
@@ -1346,15 +1411,16 @@ public class SR extends XenAPIObject {
*
* @param name The name associated with the blob
* @param mimeType The mime type for the data. Empty string translates to application/octet-stream
+ * @param _public True if the blob should be publicly available
* @return The reference of the blob, needed for populating its data
*/
- public Blob createNewBlob(Connection c, String name, String mimeType) throws
+ public Blob createNewBlob(Connection c, String name, String mimeType, Boolean _public) throws
BadServerResponse,
XenAPIException,
XmlRpcException {
String method_call = "SR.create_new_blob";
String session = c.getSessionReference();
- Object[] method_params = {Marshalling.toXMLRPC(session), Marshalling.toXMLRPC(this.ref), Marshalling.toXMLRPC(name), Marshalling.toXMLRPC(mimeType)};
+ Object[] method_params = {Marshalling.toXMLRPC(session), Marshalling.toXMLRPC(this.ref), Marshalling.toXMLRPC(name), Marshalling.toXMLRPC(mimeType), Marshalling.toXMLRPC(_public)};
Map response = c.dispatch(method_call, method_params);
Object result = response.get("Value");
return Types.toBlob(result);
@@ -1440,6 +1506,102 @@ public class SR extends XenAPIObject {
return;
}
+ /**
+ * Returns successfully if the given SR supports database replication. Otherwise returns an error to explain why not.
+ *
+ * @return Task
+ */
+ public Task assertSupportsDatabaseReplicationAsync(Connection c) throws
+ BadServerResponse,
+ XenAPIException,
+ XmlRpcException {
+ String method_call = "Async.SR.assert_supports_database_replication";
+ String session = c.getSessionReference();
+ Object[] method_params = {Marshalling.toXMLRPC(session), Marshalling.toXMLRPC(this.ref)};
+ Map response = c.dispatch(method_call, method_params);
+ Object result = response.get("Value");
+ return Types.toTask(result);
+ }
+
+ /**
+ * Returns successfully if the given SR supports database replication. Otherwise returns an error to explain why not.
+ *
+ */
+ public void assertSupportsDatabaseReplication(Connection c) throws
+ BadServerResponse,
+ XenAPIException,
+ XmlRpcException {
+ String method_call = "SR.assert_supports_database_replication";
+ String session = c.getSessionReference();
+ Object[] method_params = {Marshalling.toXMLRPC(session), Marshalling.toXMLRPC(this.ref)};
+ Map response = c.dispatch(method_call, method_params);
+ return;
+ }
+
+ /**
+ *
+ *
+ * @return Task
+ */
+ public Task enableDatabaseReplicationAsync(Connection c) throws
+ BadServerResponse,
+ XenAPIException,
+ XmlRpcException {
+ String method_call = "Async.SR.enable_database_replication";
+ String session = c.getSessionReference();
+ Object[] method_params = {Marshalling.toXMLRPC(session), Marshalling.toXMLRPC(this.ref)};
+ Map response = c.dispatch(method_call, method_params);
+ Object result = response.get("Value");
+ return Types.toTask(result);
+ }
+
+ /**
+ *
+ *
+ */
+ public void enableDatabaseReplication(Connection c) throws
+ BadServerResponse,
+ XenAPIException,
+ XmlRpcException {
+ String method_call = "SR.enable_database_replication";
+ String session = c.getSessionReference();
+ Object[] method_params = {Marshalling.toXMLRPC(session), Marshalling.toXMLRPC(this.ref)};
+ Map response = c.dispatch(method_call, method_params);
+ return;
+ }
+
+ /**
+ *
+ *
+ * @return Task
+ */
+ public Task disableDatabaseReplicationAsync(Connection c) throws
+ BadServerResponse,
+ XenAPIException,
+ XmlRpcException {
+ String method_call = "Async.SR.disable_database_replication";
+ String session = c.getSessionReference();
+ Object[] method_params = {Marshalling.toXMLRPC(session), Marshalling.toXMLRPC(this.ref)};
+ Map response = c.dispatch(method_call, method_params);
+ Object result = response.get("Value");
+ return Types.toTask(result);
+ }
+
+ /**
+ *
+ *
+ */
+ public void disableDatabaseReplication(Connection c) throws
+ BadServerResponse,
+ XenAPIException,
+ XmlRpcException {
+ String method_call = "SR.disable_database_replication";
+ String session = c.getSessionReference();
+ Object[] method_params = {Marshalling.toXMLRPC(session), Marshalling.toXMLRPC(this.ref)};
+ Map response = c.dispatch(method_call, method_params);
+ return;
+ }
+
/**
* Return a list of all the SRs known to the system.
*
@@ -1474,4 +1636,4 @@ public class SR extends XenAPIObject {
return Types.toMapOfSRSRRecord(result);
}
-}
+}
\ No newline at end of file
diff --git a/deps/XenServerJava/src/com/xensource/xenapi/Secret.java b/deps/XenServerJava/src/com/xensource/xenapi/Secret.java
index 3a211a050a7..a9f8eddc847 100644
--- a/deps/XenServerJava/src/com/xensource/xenapi/Secret.java
+++ b/deps/XenServerJava/src/com/xensource/xenapi/Secret.java
@@ -1,18 +1,19 @@
-/* Copyright (c) Citrix Systems, Inc.
+/*
+ * Copyright (c) Citrix Systems, Inc.
* All rights reserved.
- *
+ *
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
- *
+ *
* 1) Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
- *
+ *
* 2) 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.
- *
+ *
* 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
@@ -27,6 +28,7 @@
* OF THE POSSIBILITY OF SUCH DAMAGE.
*/
+
package com.xensource.xenapi;
import com.xensource.xenapi.Types.BadServerResponse;
@@ -51,7 +53,7 @@ import org.apache.xmlrpc.XmlRpcException;
public class Secret extends XenAPIObject {
/**
- * The XenAPI reference to this object.
+ * The XenAPI reference (OpaqueRef) to this object.
*/
protected final String ref;
@@ -62,6 +64,9 @@ public class Secret extends XenAPIObject {
this.ref = ref;
}
+ /**
+ * @return The XenAPI reference (OpaqueRef) to this object.
+ */
public String toWireString() {
return this.ref;
}
@@ -97,6 +102,7 @@ public class Secret extends XenAPIObject {
PrintWriter print = new PrintWriter(writer);
print.printf("%1$20s: %2$s\n", "uuid", this.uuid);
print.printf("%1$20s: %2$s\n", "value", this.value);
+ print.printf("%1$20s: %2$s\n", "otherConfig", this.otherConfig);
return writer.toString();
}
@@ -107,6 +113,7 @@ public class Secret extends XenAPIObject {
Map map = new HashMap();
map.put("uuid", this.uuid == null ? "" : this.uuid);
map.put("value", this.value == null ? "" : this.value);
+ map.put("other_config", this.otherConfig == null ? new HashMap() : this.otherConfig);
return map;
}
@@ -118,6 +125,10 @@ public class Secret extends XenAPIObject {
* the secret
*/
public String value;
+ /**
+ * other_config
+ */
+ public Map otherConfig;
}
/**
@@ -259,6 +270,23 @@ public class Secret extends XenAPIObject {
return Types.toString(result);
}
+ /**
+ * Get the other_config field of the given secret.
+ *
+ * @return value of the field
+ */
+ public Map getOtherConfig(Connection c) throws
+ BadServerResponse,
+ XenAPIException,
+ XmlRpcException {
+ String method_call = "secret.get_other_config";
+ String session = c.getSessionReference();
+ Object[] method_params = {Marshalling.toXMLRPC(session), Marshalling.toXMLRPC(this.ref)};
+ Map response = c.dispatch(method_call, method_params);
+ Object result = response.get("Value");
+ return Types.toMapOfStringString(result);
+ }
+
/**
* Set the value field of the given secret.
*
@@ -275,6 +303,55 @@ public class Secret extends XenAPIObject {
return;
}
+ /**
+ * Set the other_config field of the given secret.
+ *
+ * @param otherConfig New value to set
+ */
+ public void setOtherConfig(Connection c, Map otherConfig) throws
+ BadServerResponse,
+ XenAPIException,
+ XmlRpcException {
+ String method_call = "secret.set_other_config";
+ String session = c.getSessionReference();
+ Object[] method_params = {Marshalling.toXMLRPC(session), Marshalling.toXMLRPC(this.ref), Marshalling.toXMLRPC(otherConfig)};
+ Map response = c.dispatch(method_call, method_params);
+ return;
+ }
+
+ /**
+ * Add the given key-value pair to the other_config field of the given secret.
+ *
+ * @param key Key to add
+ * @param value Value to add
+ */
+ public void addToOtherConfig(Connection c, String key, String value) throws
+ BadServerResponse,
+ XenAPIException,
+ XmlRpcException {
+ String method_call = "secret.add_to_other_config";
+ String session = c.getSessionReference();
+ Object[] method_params = {Marshalling.toXMLRPC(session), Marshalling.toXMLRPC(this.ref), Marshalling.toXMLRPC(key), Marshalling.toXMLRPC(value)};
+ Map response = c.dispatch(method_call, method_params);
+ return;
+ }
+
+ /**
+ * Remove the given key and its corresponding value from the other_config field of the given secret. If the key is not in that Map, then do nothing.
+ *
+ * @param key Key to remove
+ */
+ public void removeFromOtherConfig(Connection c, String key) throws
+ BadServerResponse,
+ XenAPIException,
+ XmlRpcException {
+ String method_call = "secret.remove_from_other_config";
+ String session = c.getSessionReference();
+ Object[] method_params = {Marshalling.toXMLRPC(session), Marshalling.toXMLRPC(this.ref), Marshalling.toXMLRPC(key)};
+ Map response = c.dispatch(method_call, method_params);
+ return;
+ }
+
/**
* Return a list of all the secrets known to the system.
*
@@ -309,4 +386,4 @@ public class Secret extends XenAPIObject {
return Types.toMapOfSecretSecretRecord(result);
}
-}
+}
\ No newline at end of file
diff --git a/deps/XenServerJava/src/com/xensource/xenapi/Session.java b/deps/XenServerJava/src/com/xensource/xenapi/Session.java
index 9be3388304b..f34476b162a 100644
--- a/deps/XenServerJava/src/com/xensource/xenapi/Session.java
+++ b/deps/XenServerJava/src/com/xensource/xenapi/Session.java
@@ -1,18 +1,19 @@
-/* Copyright (c) Citrix Systems, Inc.
+/*
+ * Copyright (c) Citrix Systems, Inc.
* All rights reserved.
- *
+ *
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
- *
+ *
* 1) Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
- *
+ *
* 2) 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.
- *
+ *
* 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
@@ -27,6 +28,7 @@
* OF THE POSSIBILITY OF SUCH DAMAGE.
*/
+
package com.xensource.xenapi;
import com.xensource.xenapi.Types.BadServerResponse;
@@ -51,7 +53,7 @@ import org.apache.xmlrpc.XmlRpcException;
public class Session extends XenAPIObject {
/**
- * The XenAPI reference to this object.
+ * The XenAPI reference (OpaqueRef) to this object.
*/
protected final String ref;
@@ -62,6 +64,9 @@ public class Session extends XenAPIObject {
this.ref = ref;
}
+ /**
+ * @return The XenAPI reference (OpaqueRef) to this object.
+ */
public String toWireString() {
return this.ref;
}
@@ -667,4 +672,4 @@ public class Session extends XenAPIObject {
return;
}
-}
+}
\ No newline at end of file
diff --git a/deps/XenServerJava/src/com/xensource/xenapi/Subject.java b/deps/XenServerJava/src/com/xensource/xenapi/Subject.java
index e760a5f751e..a181b58fda5 100644
--- a/deps/XenServerJava/src/com/xensource/xenapi/Subject.java
+++ b/deps/XenServerJava/src/com/xensource/xenapi/Subject.java
@@ -1,18 +1,19 @@
-/* Copyright (c) Citrix Systems, Inc.
+/*
+ * Copyright (c) Citrix Systems, Inc.
* All rights reserved.
- *
+ *
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
- *
+ *
* 1) Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
- *
+ *
* 2) 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.
- *
+ *
* 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
@@ -27,6 +28,7 @@
* OF THE POSSIBILITY OF SUCH DAMAGE.
*/
+
package com.xensource.xenapi;
import com.xensource.xenapi.Types.BadServerResponse;
@@ -51,7 +53,7 @@ import org.apache.xmlrpc.XmlRpcException;
public class Subject extends XenAPIObject {
/**
- * The XenAPI reference to this object.
+ * The XenAPI reference (OpaqueRef) to this object.
*/
protected final String ref;
@@ -62,6 +64,9 @@ public class Subject extends XenAPIObject {
this.ref = ref;
}
+ /**
+ * @return The XenAPI reference (OpaqueRef) to this object.
+ */
public String toWireString() {
return this.ref;
}
@@ -388,4 +393,4 @@ public class Subject extends XenAPIObject {
return Types.toMapOfSubjectSubjectRecord(result);
}
-}
+}
\ No newline at end of file
diff --git a/deps/XenServerJava/src/com/xensource/xenapi/Task.java b/deps/XenServerJava/src/com/xensource/xenapi/Task.java
index 884b283a91f..beb9686332e 100644
--- a/deps/XenServerJava/src/com/xensource/xenapi/Task.java
+++ b/deps/XenServerJava/src/com/xensource/xenapi/Task.java
@@ -1,18 +1,19 @@
-/* Copyright (c) Citrix Systems, Inc.
+/*
+ * Copyright (c) Citrix Systems, Inc.
* All rights reserved.
- *
+ *
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
- *
+ *
* 1) Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
- *
+ *
* 2) 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.
- *
+ *
* 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
@@ -27,6 +28,7 @@
* OF THE POSSIBILITY OF SUCH DAMAGE.
*/
+
package com.xensource.xenapi;
import com.xensource.xenapi.Types.BadServerResponse;
@@ -51,7 +53,7 @@ import org.apache.xmlrpc.XmlRpcException;
public class Task extends XenAPIObject {
/**
- * The XenAPI reference to this object.
+ * The XenAPI reference (OpaqueRef) to this object.
*/
protected final String ref;
@@ -62,6 +64,9 @@ public class Task extends XenAPIObject {
this.ref = ref;
}
+ /**
+ * @return The XenAPI reference (OpaqueRef) to this object.
+ */
public String toWireString() {
return this.ref;
}
@@ -147,7 +152,7 @@ public class Task extends XenAPIObject {
*/
public String nameLabel;
/**
- * a notes field containg human-readable description
+ * a notes field containing human-readable description
*/
public String nameDescription;
/**
@@ -175,7 +180,7 @@ public class Task extends XenAPIObject {
*/
public Host residentOn;
/**
- * if the task is still pending, this field contains the estimated fraction complete (0.-1.). If task has completed (successfully or unsuccessfully) this should be 1.
+ * This field contains the estimated fraction of the task which is complete. This field should not be used to determine whether the task is complete - for this the status field of the task should be used.
*/
public Double progress;
/**
@@ -680,4 +685,4 @@ public class Task extends XenAPIObject {
return Types.toMapOfTaskTaskRecord(result);
}
-}
+}
\ No newline at end of file
diff --git a/deps/XenServerJava/src/com/xensource/xenapi/Tunnel.java b/deps/XenServerJava/src/com/xensource/xenapi/Tunnel.java
index 17475238ed4..8289e8f35d2 100644
--- a/deps/XenServerJava/src/com/xensource/xenapi/Tunnel.java
+++ b/deps/XenServerJava/src/com/xensource/xenapi/Tunnel.java
@@ -1,18 +1,19 @@
-/* Copyright (c) Citrix Systems, Inc.
+/*
+ * Copyright (c) Citrix Systems, Inc.
* All rights reserved.
- *
+ *
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
- *
+ *
* 1) Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
- *
+ *
* 2) 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.
- *
+ *
* 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
@@ -27,6 +28,7 @@
* OF THE POSSIBILITY OF SUCH DAMAGE.
*/
+
package com.xensource.xenapi;
import com.xensource.xenapi.Types.BadServerResponse;
@@ -51,7 +53,7 @@ import org.apache.xmlrpc.XmlRpcException;
public class Tunnel extends XenAPIObject {
/**
- * The XenAPI reference to this object.
+ * The XenAPI reference (OpaqueRef) to this object.
*/
protected final String ref;
@@ -62,6 +64,9 @@ public class Tunnel extends XenAPIObject {
this.ref = ref;
}
+ /**
+ * @return The XenAPI reference (OpaqueRef) to this object.
+ */
public String toWireString() {
return this.ref;
}
@@ -466,4 +471,4 @@ public class Tunnel extends XenAPIObject {
return Types.toMapOfTunnelTunnelRecord(result);
}
-}
+}
\ No newline at end of file
diff --git a/deps/XenServerJava/src/com/xensource/xenapi/Types.java b/deps/XenServerJava/src/com/xensource/xenapi/Types.java
index 31ac11a09eb..bde887a4ec3 100644
--- a/deps/XenServerJava/src/com/xensource/xenapi/Types.java
+++ b/deps/XenServerJava/src/com/xensource/xenapi/Types.java
@@ -1,18 +1,19 @@
-/* Copyright (c) Citrix Systems, Inc.
+/*
+ * Copyright (c) Citrix Systems, Inc.
* All rights reserved.
- *
+ *
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
- *
+ *
* 1) Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
- *
+ *
* 2) 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.
- *
+ *
* 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
@@ -27,6 +28,7 @@
* OF THE POSSIBILITY OF SUCH DAMAGE.
*/
+
package com.xensource.xenapi;
import java.util.Date;
@@ -43,7 +45,7 @@ import org.apache.xmlrpc.XmlRpcException;
/**
* This class holds vital marshalling functions, enum types and exceptions.
- *
+ *
* @author Citrix Systems, Inc.
*/
public class Types
@@ -143,7 +145,7 @@ public class Types
* A call has been made which should not be made against this version of host.
* Probably the host is out of date and cannot handle this call, or is
* unable to comply with the details of the call. For instance SR.create
- * on Miami (4.1) hosts takes an smConfig parameter, which must be an empty map
+ * on Miami (4.1) hosts takes an smConfig parameter, which must be an empty map
* when making this call on Rio (4.0) hosts.
*/
public static class VersionException extends XenAPIException
@@ -225,6 +227,11 @@ public class Types
String p1 = ErrorDescription.length > 1 ? ErrorDescription[1] : "";
throw new Types.VmHvmRequired(p1);
}
+ if (ErrorDescription[0].equals("GPU_GROUP_CONTAINS_PGPU"))
+ {
+ String p1 = ErrorDescription.length > 1 ? ErrorDescription[1] : "";
+ throw new Types.GpuGroupContainsPgpu(p1);
+ }
if (ErrorDescription[0].equals("PIF_TUNNEL_STILL_EXISTS"))
{
String p1 = ErrorDescription.length > 1 ? ErrorDescription[1] : "";
@@ -239,6 +246,11 @@ public class Types
String p1 = ErrorDescription.length > 1 ? ErrorDescription[1] : "";
throw new Types.PifAlreadyBonded(p1);
}
+ if (ErrorDescription[0].equals("CANNOT_DESTROY_DISASTER_RECOVERY_TASK"))
+ {
+ String p1 = ErrorDescription.length > 1 ? ErrorDescription[1] : "";
+ throw new Types.CannotDestroyDisasterRecoveryTask(p1);
+ }
if (ErrorDescription[0].equals("VLAN_TAG_INVALID"))
{
String p1 = ErrorDescription.length > 1 ? ErrorDescription[1] : "";
@@ -288,6 +300,11 @@ public class Types
String p1 = ErrorDescription.length > 1 ? ErrorDescription[1] : "";
throw new Types.PatchPrecheckFailedVmRunning(p1);
}
+ if (ErrorDescription[0].equals("VM_REQUIRES_IOMMU"))
+ {
+ String p1 = ErrorDescription.length > 1 ? ErrorDescription[1] : "";
+ throw new Types.VmRequiresIommu(p1);
+ }
if (ErrorDescription[0].equals("HA_HOST_CANNOT_SEE_PEERS"))
{
String p1 = ErrorDescription.length > 1 ? ErrorDescription[1] : "";
@@ -342,6 +359,11 @@ public class Types
String p1 = ErrorDescription.length > 1 ? ErrorDescription[1] : "";
throw new Types.VmNoSuspendSr(p1);
}
+ if (ErrorDescription[0].equals("VM_HAS_TOO_MANY_SNAPSHOTS"))
+ {
+ String p1 = ErrorDescription.length > 1 ? ErrorDescription[1] : "";
+ throw new Types.VmHasTooManySnapshots(p1);
+ }
if (ErrorDescription[0].equals("PATCH_APPLY_FAILED"))
{
String p1 = ErrorDescription.length > 1 ? ErrorDescription[1] : "";
@@ -358,6 +380,12 @@ public class Types
String p2 = ErrorDescription.length > 2 ? ErrorDescription[2] : "";
throw new Types.SrFull(p1, p2);
}
+ if (ErrorDescription[0].equals("VM_REQUIRES_GPU"))
+ {
+ String p1 = ErrorDescription.length > 1 ? ErrorDescription[1] : "";
+ String p2 = ErrorDescription.length > 2 ? ErrorDescription[2] : "";
+ throw new Types.VmRequiresGpu(p1, p2);
+ }
if (ErrorDescription[0].equals("VDI_NOT_AVAILABLE"))
{
String p1 = ErrorDescription.length > 1 ? ErrorDescription[1] : "";
@@ -403,6 +431,11 @@ public class Types
String p2 = ErrorDescription.length > 2 ? ErrorDescription[2] : "";
throw new Types.XenVssReqErrorProvNotLoaded(p1, p2);
}
+ if (ErrorDescription[0].equals("FEATURE_REQUIRES_HVM"))
+ {
+ String p1 = ErrorDescription.length > 1 ? ErrorDescription[1] : "";
+ throw new Types.FeatureRequiresHvm(p1);
+ }
if (ErrorDescription[0].equals("SR_VDI_LOCKING_FAILED"))
{
throw new Types.SrVdiLockingFailed();
@@ -440,6 +473,11 @@ public class Types
{
throw new Types.WlbXenserverMalformedResponse();
}
+ if (ErrorDescription[0].equals("GPU_GROUP_CONTAINS_VGPU"))
+ {
+ String p1 = ErrorDescription.length > 1 ? ErrorDescription[1] : "";
+ throw new Types.GpuGroupContainsVgpu(p1);
+ }
if (ErrorDescription[0].equals("POOL_AUTH_ENABLE_FAILED_DUPLICATE_HOSTNAME"))
{
String p1 = ErrorDescription.length > 1 ? ErrorDescription[1] : "";
@@ -471,6 +509,11 @@ public class Types
String p1 = ErrorDescription.length > 1 ? ErrorDescription[1] : "";
throw new Types.SrHasNoPbds(p1);
}
+ if (ErrorDescription[0].equals("CANNOT_ADD_TUNNEL_TO_BOND_SLAVE"))
+ {
+ String p1 = ErrorDescription.length > 1 ? ErrorDescription[1] : "";
+ throw new Types.CannotAddTunnelToBondSlave(p1);
+ }
if (ErrorDescription[0].equals("INVALID_PATCH"))
{
throw new Types.InvalidPatch();
@@ -496,6 +539,16 @@ public class Types
{
throw new Types.PoolJoiningHostMustHavePhysicalManagementNic();
}
+ if (ErrorDescription[0].equals("PIF_HAS_NO_V6_NETWORK_CONFIGURATION"))
+ {
+ throw new Types.PifHasNoV6NetworkConfiguration();
+ }
+ if (ErrorDescription[0].equals("VM_IS_PART_OF_AN_APPLIANCE"))
+ {
+ String p1 = ErrorDescription.length > 1 ? ErrorDescription[1] : "";
+ String p2 = ErrorDescription.length > 2 ? ErrorDescription[2] : "";
+ throw new Types.VmIsPartOfAnAppliance(p1, p2);
+ }
if (ErrorDescription[0].equals("WLB_XENSERVER_AUTHENTICATION_FAILED"))
{
throw new Types.WlbXenserverAuthenticationFailed();
@@ -606,6 +659,17 @@ public class Types
{
throw new Types.HostCannotReadMetrics();
}
+ if (ErrorDescription[0].equals("VM_INCOMPATIBLE_WITH_THIS_HOST"))
+ {
+ String p1 = ErrorDescription.length > 1 ? ErrorDescription[1] : "";
+ String p2 = ErrorDescription.length > 2 ? ErrorDescription[2] : "";
+ String p3 = ErrorDescription.length > 3 ? ErrorDescription[3] : "";
+ throw new Types.VmIncompatibleWithThisHost(p1, p2, p3);
+ }
+ if (ErrorDescription[0].equals("NO_MORE_REDO_LOGS_ALLOWED"))
+ {
+ throw new Types.NoMoreRedoLogsAllowed();
+ }
if (ErrorDescription[0].equals("POOL_AUTH_ENABLE_FAILED"))
{
String p1 = ErrorDescription.length > 1 ? ErrorDescription[1] : "";
@@ -668,10 +732,21 @@ public class Types
{
throw new Types.WlbDisabled();
}
+ if (ErrorDescription[0].equals("VM_HOST_INCOMPATIBLE_VERSION"))
+ {
+ String p1 = ErrorDescription.length > 1 ? ErrorDescription[1] : "";
+ String p2 = ErrorDescription.length > 2 ? ErrorDescription[2] : "";
+ throw new Types.VmHostIncompatibleVersion(p1, p2);
+ }
if (ErrorDescription[0].equals("POOL_JOINING_EXTERNAL_AUTH_MISMATCH"))
{
throw new Types.PoolJoiningExternalAuthMismatch();
}
+ if (ErrorDescription[0].equals("DISK_VBD_MUST_BE_READWRITE_FOR_HVM"))
+ {
+ String p1 = ErrorDescription.length > 1 ? ErrorDescription[1] : "";
+ throw new Types.DiskVbdMustBeReadwriteForHvm(p1);
+ }
if (ErrorDescription[0].equals("VM_BIOS_STRINGS_ALREADY_SET"))
{
throw new Types.VmBiosStringsAlreadySet();
@@ -718,6 +793,28 @@ public class Types
String p2 = ErrorDescription.length > 2 ? ErrorDescription[2] : "";
throw new Types.SrNotSharable(p1, p2);
}
+ if (ErrorDescription[0].equals("VM_HAS_CHECKPOINT"))
+ {
+ String p1 = ErrorDescription.length > 1 ? ErrorDescription[1] : "";
+ throw new Types.VmHasCheckpoint(p1);
+ }
+ if (ErrorDescription[0].equals("SM_PLUGIN_COMMUNICATION_FAILURE"))
+ {
+ String p1 = ErrorDescription.length > 1 ? ErrorDescription[1] : "";
+ throw new Types.SmPluginCommunicationFailure(p1);
+ }
+ if (ErrorDescription[0].equals("VM_ASSIGNED_TO_PROTECTION_POLICY"))
+ {
+ String p1 = ErrorDescription.length > 1 ? ErrorDescription[1] : "";
+ String p2 = ErrorDescription.length > 2 ? ErrorDescription[2] : "";
+ throw new Types.VmAssignedToProtectionPolicy(p1, p2);
+ }
+ if (ErrorDescription[0].equals("RBAC_PERMISSION_DENIED"))
+ {
+ String p1 = ErrorDescription.length > 1 ? ErrorDescription[1] : "";
+ String p2 = ErrorDescription.length > 2 ? ErrorDescription[2] : "";
+ throw new Types.RbacPermissionDenied(p1, p2);
+ }
if (ErrorDescription[0].equals("AUTH_DISABLE_FAILED_PERMISSION_DENIED"))
{
String p1 = ErrorDescription.length > 1 ? ErrorDescription[1] : "";
@@ -727,12 +824,6 @@ public class Types
{
throw new Types.LicenseCannotDowngradeWhileInPool();
}
- if (ErrorDescription[0].equals("RBAC_PERMISSION_DENIED"))
- {
- String p1 = ErrorDescription.length > 1 ? ErrorDescription[1] : "";
- String p2 = ErrorDescription.length > 2 ? ErrorDescription[2] : "";
- throw new Types.RbacPermissionDenied(p1, p2);
- }
if (ErrorDescription[0].equals("TOO_MANY_PENDING_TASKS"))
{
throw new Types.TooManyPendingTasks();
@@ -742,6 +833,10 @@ public class Types
String p1 = ErrorDescription.length > 1 ? ErrorDescription[1] : "";
throw new Types.VmSnapshotWithQuiesceTimeout(p1);
}
+ if (ErrorDescription[0].equals("HA_CANNOT_CHANGE_BOND_STATUS_OF_MGMT_IFACE"))
+ {
+ throw new Types.HaCannotChangeBondStatusOfMgmtIface();
+ }
if (ErrorDescription[0].equals("PATCH_ALREADY_APPLIED"))
{
String p1 = ErrorDescription.length > 1 ? ErrorDescription[1] : "";
@@ -757,6 +852,13 @@ public class Types
String p1 = ErrorDescription.length > 1 ? ErrorDescription[1] : "";
throw new Types.AuthEnableFailedDomainLookupFailed(p1);
}
+ if (ErrorDescription[0].equals("PATCH_PRECHECK_FAILED_WRONG_SERVER_BUILD"))
+ {
+ String p1 = ErrorDescription.length > 1 ? ErrorDescription[1] : "";
+ String p2 = ErrorDescription.length > 2 ? ErrorDescription[2] : "";
+ String p3 = ErrorDescription.length > 3 ? ErrorDescription[3] : "";
+ throw new Types.PatchPrecheckFailedWrongServerBuild(p1, p2, p3);
+ }
if (ErrorDescription[0].equals("INVALID_FEATURE_STRING"))
{
String p1 = ErrorDescription.length > 1 ? ErrorDescription[1] : "";
@@ -782,14 +884,20 @@ public class Types
String p2 = ErrorDescription.length > 2 ? ErrorDescription[2] : "";
throw new Types.VmShutdownTimeout(p1, p2);
}
+ if (ErrorDescription[0].equals("ROLE_ALREADY_EXISTS"))
+ {
+ throw new Types.RoleAlreadyExists();
+ }
if (ErrorDescription[0].equals("NETWORK_CONTAINS_PIF"))
{
String p1 = ErrorDescription.length > 1 ? ErrorDescription[1] : "";
throw new Types.NetworkContainsPif(p1);
}
- if (ErrorDescription[0].equals("ROLE_ALREADY_EXISTS"))
+ if (ErrorDescription[0].equals("COULD_NOT_FIND_NETWORK_INTERFACE_WITH_SPECIFIED_DEVICE_NAME_AND_MAC_ADDRESS"))
{
- throw new Types.RoleAlreadyExists();
+ String p1 = ErrorDescription.length > 1 ? ErrorDescription[1] : "";
+ String p2 = ErrorDescription.length > 2 ? ErrorDescription[2] : "";
+ throw new Types.CouldNotFindNetworkInterfaceWithSpecifiedDeviceNameAndMacAddress(p1, p2);
}
if (ErrorDescription[0].equals("JOINING_HOST_SERVICE_FAILED"))
{
@@ -842,6 +950,12 @@ public class Types
{
throw new Types.LicenseProcessingError();
}
+ if (ErrorDescription[0].equals("ILLEGAL_VBD_DEVICE"))
+ {
+ String p1 = ErrorDescription.length > 1 ? ErrorDescription[1] : "";
+ String p2 = ErrorDescription.length > 2 ? ErrorDescription[2] : "";
+ throw new Types.IllegalVbdDevice(p1, p2);
+ }
if (ErrorDescription[0].equals("CRL_DOES_NOT_EXIST"))
{
String p1 = ErrorDescription.length > 1 ? ErrorDescription[1] : "";
@@ -906,6 +1020,11 @@ public class Types
{
throw new Types.PifCannotBondCrossHost();
}
+ if (ErrorDescription[0].equals("EVENT_FROM_TOKEN_PARSE_FAILURE"))
+ {
+ String p1 = ErrorDescription.length > 1 ? ErrorDescription[1] : "";
+ throw new Types.EventFromTokenParseFailure(p1);
+ }
if (ErrorDescription[0].equals("SR_REQUIRES_UPGRADE"))
{
String p1 = ErrorDescription.length > 1 ? ErrorDescription[1] : "";
@@ -1018,6 +1137,11 @@ public class Types
String p1 = ErrorDescription.length > 1 ? ErrorDescription[1] : "";
throw new Types.HaHostIsArmed(p1);
}
+ if (ErrorDescription[0].equals("EVENT_SUBSCRIPTION_PARSE_FAILURE"))
+ {
+ String p1 = ErrorDescription.length > 1 ? ErrorDescription[1] : "";
+ throw new Types.EventSubscriptionParseFailure(p1);
+ }
if (ErrorDescription[0].equals("LICENSE_EXPIRED"))
{
throw new Types.LicenseExpired();
@@ -1035,6 +1159,10 @@ public class Types
{
throw new Types.VmppArchiveMoreFrequentThanBackup();
}
+ if (ErrorDescription[0].equals("V6D_FAILURE"))
+ {
+ throw new Types.V6dFailure();
+ }
if (ErrorDescription[0].equals("JOINING_HOST_CANNOT_BE_MASTER_OF_OTHER_HOSTS"))
{
throw new Types.JoiningHostCannotBeMasterOfOtherHosts();
@@ -1081,15 +1209,15 @@ public class Types
{
throw new Types.CannotFindStatePartition();
}
+ if (ErrorDescription[0].equals("WLB_AUTHENTICATION_FAILED"))
+ {
+ throw new Types.WlbAuthenticationFailed();
+ }
if (ErrorDescription[0].equals("AUTH_UNKNOWN_TYPE"))
{
String p1 = ErrorDescription.length > 1 ? ErrorDescription[1] : "";
throw new Types.AuthUnknownType(p1);
}
- if (ErrorDescription[0].equals("WLB_AUTHENTICATION_FAILED"))
- {
- throw new Types.WlbAuthenticationFailed();
- }
if (ErrorDescription[0].equals("NOT_IN_EMERGENCY_MODE"))
{
throw new Types.NotInEmergencyMode();
@@ -1139,6 +1267,12 @@ public class Types
{
throw new Types.FeatureRestricted();
}
+ if (ErrorDescription[0].equals("VDI_CONTAINS_METADATA_OF_THIS_POOL"))
+ {
+ String p1 = ErrorDescription.length > 1 ? ErrorDescription[1] : "";
+ String p2 = ErrorDescription.length > 2 ? ErrorDescription[2] : "";
+ throw new Types.VdiContainsMetadataOfThisPool(p1, p2);
+ }
if (ErrorDescription[0].equals("CRL_NAME_INVALID"))
{
String p1 = ErrorDescription.length > 1 ? ErrorDescription[1] : "";
@@ -1194,18 +1328,33 @@ public class Types
String p1 = ErrorDescription.length > 1 ? ErrorDescription[1] : "";
throw new Types.SrHasPbd(p1);
}
- if (ErrorDescription[0].equals("HOST_STILL_BOOTING"))
+ if (ErrorDescription[0].equals("OPERATION_PARTIALLY_FAILED"))
{
- throw new Types.HostStillBooting();
+ String p1 = ErrorDescription.length > 1 ? ErrorDescription[1] : "";
+ throw new Types.OperationPartiallyFailed(p1);
}
if (ErrorDescription[0].equals("WLB_MALFORMED_REQUEST"))
{
throw new Types.WlbMalformedRequest();
}
+ if (ErrorDescription[0].equals("HOST_STILL_BOOTING"))
+ {
+ throw new Types.HostStillBooting();
+ }
+ if (ErrorDescription[0].equals("CANNOT_DESTROY_SYSTEM_NETWORK"))
+ {
+ String p1 = ErrorDescription.length > 1 ? ErrorDescription[1] : "";
+ throw new Types.CannotDestroySystemNetwork(p1);
+ }
if (ErrorDescription[0].equals("OBJECT_NOLONGER_EXISTS"))
{
throw new Types.ObjectNolongerExists();
}
+ if (ErrorDescription[0].equals("VDI_NOT_IN_MAP"))
+ {
+ String p1 = ErrorDescription.length > 1 ? ErrorDescription[1] : "";
+ throw new Types.VdiNotInMap(p1);
+ }
if (ErrorDescription[0].equals("HOSTS_NOT_HOMOGENEOUS"))
{
String p1 = ErrorDescription.length > 1 ? ErrorDescription[1] : "";
@@ -1253,6 +1402,11 @@ public class Types
{
throw new Types.ImportErrorPrematureEof();
}
+ if (ErrorDescription[0].equals("NOT_SYSTEM_DOMAIN"))
+ {
+ String p1 = ErrorDescription.length > 1 ? ErrorDescription[1] : "";
+ throw new Types.NotSystemDomain(p1);
+ }
if (ErrorDescription[0].equals("VM_MEMORY_SIZE_TOO_LOW"))
{
String p1 = ErrorDescription.length > 1 ? ErrorDescription[1] : "";
@@ -1348,21 +1502,31 @@ public class Types
String p2 = ErrorDescription.length > 2 ? ErrorDescription[2] : "";
throw new Types.PatchPrecheckFailedPrerequisiteMissing(p1, p2);
}
+ if (ErrorDescription[0].equals("VM_HAS_PCI_ATTACHED"))
+ {
+ String p1 = ErrorDescription.length > 1 ? ErrorDescription[1] : "";
+ throw new Types.VmHasPciAttached(p1);
+ }
+ if (ErrorDescription[0].equals("MIRROR_FAILED"))
+ {
+ String p1 = ErrorDescription.length > 1 ? ErrorDescription[1] : "";
+ throw new Types.MirrorFailed(p1);
+ }
if (ErrorDescription[0].equals("WLB_XENSERVER_TIMEOUT"))
{
throw new Types.WlbXenserverTimeout();
}
- if (ErrorDescription[0].equals("VM_SNAPSHOT_WITH_QUIESCE_FAILED"))
- {
- String p1 = ErrorDescription.length > 1 ? ErrorDescription[1] : "";
- throw new Types.VmSnapshotWithQuiesceFailed(p1);
- }
if (ErrorDescription[0].equals("POOL_AUTH_DISABLE_FAILED_WRONG_CREDENTIALS"))
{
String p1 = ErrorDescription.length > 1 ? ErrorDescription[1] : "";
String p2 = ErrorDescription.length > 2 ? ErrorDescription[2] : "";
throw new Types.PoolAuthDisableFailedWrongCredentials(p1, p2);
}
+ if (ErrorDescription[0].equals("VM_SNAPSHOT_WITH_QUIESCE_FAILED"))
+ {
+ String p1 = ErrorDescription.length > 1 ? ErrorDescription[1] : "";
+ throw new Types.VmSnapshotWithQuiesceFailed(p1);
+ }
if (ErrorDescription[0].equals("CERTIFICATE_CORRUPT"))
{
String p1 = ErrorDescription.length > 1 ? ErrorDescription[1] : "";
@@ -1392,6 +1556,11 @@ public class Types
{
throw new Types.HostItsOwnSlave();
}
+ if (ErrorDescription[0].equals("CANNOT_ADD_VLAN_TO_BOND_SLAVE"))
+ {
+ String p1 = ErrorDescription.length > 1 ? ErrorDescription[1] : "";
+ throw new Types.CannotAddVlanToBondSlave(p1);
+ }
if (ErrorDescription[0].equals("REDO_LOG_IS_ENABLED"))
{
throw new Types.RedoLogIsEnabled();
@@ -1431,6 +1600,11 @@ public class Types
{
throw new Types.VmsFailedToCooperate();
}
+ if (ErrorDescription[0].equals("TOO_MANY_STORAGE_MIGRATES"))
+ {
+ String p1 = ErrorDescription.length > 1 ? ErrorDescription[1] : "";
+ throw new Types.TooManyStorageMigrates(p1);
+ }
if (ErrorDescription[0].equals("NETWORK_CONTAINS_VIF"))
{
String p1 = ErrorDescription.length > 1 ? ErrorDescription[1] : "";
@@ -1460,20 +1634,30 @@ public class Types
{
throw new Types.JoiningHostConnectionFailed();
}
+ if (ErrorDescription[0].equals("SUBJECT_CANNOT_BE_RESOLVED"))
+ {
+ throw new Types.SubjectCannotBeResolved();
+ }
if (ErrorDescription[0].equals("XEN_VSS_REQ_ERROR_ADDING_VOLUME_TO_SNAPSET_FAILED"))
{
String p1 = ErrorDescription.length > 1 ? ErrorDescription[1] : "";
String p2 = ErrorDescription.length > 2 ? ErrorDescription[2] : "";
throw new Types.XenVssReqErrorAddingVolumeToSnapsetFailed(p1, p2);
}
- if (ErrorDescription[0].equals("SUBJECT_CANNOT_BE_RESOLVED"))
- {
- throw new Types.SubjectCannotBeResolved();
- }
if (ErrorDescription[0].equals("PROVISION_FAILED_OUT_OF_SPACE"))
{
throw new Types.ProvisionFailedOutOfSpace();
}
+ if (ErrorDescription[0].equals("VDI_NEEDS_VM_FOR_MIGRATE"))
+ {
+ String p1 = ErrorDescription.length > 1 ? ErrorDescription[1] : "";
+ throw new Types.VdiNeedsVmForMigrate(p1);
+ }
+ if (ErrorDescription[0].equals("COULD_NOT_IMPORT_DATABASE"))
+ {
+ String p1 = ErrorDescription.length > 1 ? ErrorDescription[1] : "";
+ throw new Types.CouldNotImportDatabase(p1);
+ }
if (ErrorDescription[0].equals("VDI_IS_NOT_ISO"))
{
String p1 = ErrorDescription.length > 1 ? ErrorDescription[1] : "";
@@ -1513,6 +1697,10 @@ public class Types
{
throw new Types.LicenseDoesNotSupportXha();
}
+ if (ErrorDescription[0].equals("PIF_INCOMPATIBLE_PRIMARY_ADDRESS_TYPE"))
+ {
+ throw new Types.PifIncompatiblePrimaryAddressType();
+ }
if (ErrorDescription[0].equals("DEVICE_ALREADY_DETACHED"))
{
String p1 = ErrorDescription.length > 1 ? ErrorDescription[1] : "";
@@ -1599,6 +1787,18 @@ public class Types
String p3 = ErrorDescription.length > 3 ? ErrorDescription[3] : "";
throw new Types.VmDuplicateVbdDevice(p1, p2, p3);
}
+ if (ErrorDescription[0].equals("CANNOT_PLUG_BOND_SLAVE"))
+ {
+ String p1 = ErrorDescription.length > 1 ? ErrorDescription[1] : "";
+ throw new Types.CannotPlugBondSlave(p1);
+ }
+ if (ErrorDescription[0].equals("VM_TO_IMPORT_IS_NOT_NEWER_VERSION"))
+ {
+ String p1 = ErrorDescription.length > 1 ? ErrorDescription[1] : "";
+ String p2 = ErrorDescription.length > 2 ? ErrorDescription[2] : "";
+ String p3 = ErrorDescription.length > 3 ? ErrorDescription[3] : "";
+ throw new Types.VmToImportIsNotNewerVersion(p1, p2, p3);
+ }
if (ErrorDescription[0].equals("CRL_CORRUPT"))
{
String p1 = ErrorDescription.length > 1 ? ErrorDescription[1] : "";
@@ -1722,6 +1922,10 @@ public class Types
String p1 = ErrorDescription.length > 1 ? ErrorDescription[1] : "";
throw new Types.InterfaceHasNoIp(p1);
}
+ if (ErrorDescription[0].equals("HOSTS_NOT_COMPATIBLE"))
+ {
+ throw new Types.HostsNotCompatible();
+ }
if (ErrorDescription[0].equals("AUTH_ENABLE_FAILED_WRONG_CREDENTIALS"))
{
String p1 = ErrorDescription.length > 1 ? ErrorDescription[1] : "";
@@ -1787,7 +1991,25 @@ public class Types
/**
* Operations on this VDI are temporarily blocked
*/
- BLOCKED
+ BLOCKED;
+ public String toString() {
+ if (this == UNRECOGNIZED) return "UNRECOGNIZED";
+ if (this == SCAN) return "scan";
+ if (this == CLONE) return "clone";
+ if (this == COPY) return "copy";
+ if (this == RESIZE) return "resize";
+ if (this == RESIZE_ONLINE) return "resize_online";
+ if (this == SNAPSHOT) return "snapshot";
+ if (this == DESTROY) return "destroy";
+ if (this == FORGET) return "forget";
+ if (this == UPDATE) return "update";
+ if (this == FORCE_UNLOCK) return "force_unlock";
+ if (this == GENERATE_CONFIG) return "generate_config";
+ if (this == BLOCKED) return "blocked";
+ /* This can never be reached */
+ return "illegal enum";
+ }
+
};
public enum Cls {
@@ -1814,7 +2036,18 @@ public class Types
/**
* VMPP
*/
- VMPP
+ VMPP;
+ public String toString() {
+ if (this == UNRECOGNIZED) return "UNRECOGNIZED";
+ if (this == VM) return "VM";
+ if (this == HOST) return "Host";
+ if (this == SR) return "SR";
+ if (this == POOL) return "Pool";
+ if (this == VMPP) return "VMPP";
+ /* This can never be reached */
+ return "illegal enum";
+ }
+
};
public enum VdiType {
@@ -1853,7 +2086,21 @@ public class Types
/**
* a disk used for a general metadata redo-log
*/
- REDO_LOG
+ REDO_LOG;
+ public String toString() {
+ if (this == UNRECOGNIZED) return "UNRECOGNIZED";
+ if (this == SYSTEM) return "system";
+ if (this == USER) return "user";
+ if (this == EPHEMERAL) return "ephemeral";
+ if (this == SUSPEND) return "suspend";
+ if (this == CRASHDUMP) return "crashdump";
+ if (this == HA_STATEFILE) return "ha_statefile";
+ if (this == METADATA) return "metadata";
+ if (this == REDO_LOG) return "redo_log";
+ /* This can never be reached */
+ return "illegal enum";
+ }
+
};
public enum AfterApplyGuidance {
@@ -1876,7 +2123,17 @@ public class Types
/**
* This patch requires XAPI to be restarted once applied.
*/
- RESTARTXAPI
+ RESTARTXAPI;
+ public String toString() {
+ if (this == UNRECOGNIZED) return "UNRECOGNIZED";
+ if (this == RESTARTHVM) return "restartHVM";
+ if (this == RESTARTPV) return "restartPV";
+ if (this == RESTARTHOST) return "restartHost";
+ if (this == RESTARTXAPI) return "restartXAPI";
+ /* This can never be reached */
+ return "illegal enum";
+ }
+
};
public enum EventOperation {
@@ -1895,7 +2152,39 @@ public class Types
/**
* An object has been modified
*/
- MOD
+ MOD;
+ public String toString() {
+ if (this == UNRECOGNIZED) return "UNRECOGNIZED";
+ if (this == ADD) return "add";
+ if (this == DEL) return "del";
+ if (this == MOD) return "mod";
+ /* This can never be reached */
+ return "illegal enum";
+ }
+
+ };
+
+ public enum PrimaryAddressType {
+ /**
+ * The value does not belong to this enumeration
+ */
+ UNRECOGNIZED,
+ /**
+ * Primary address is the IPv4 address
+ */
+ IPV4,
+ /**
+ * Primary address is the IPv6 address
+ */
+ IPV6;
+ public String toString() {
+ if (this == UNRECOGNIZED) return "UNRECOGNIZED";
+ if (this == IPV4) return "IPv4";
+ if (this == IPV6) return "IPv6";
+ /* This can never be reached */
+ return "illegal enum";
+ }
+
};
public enum TaskAllowedOperations {
@@ -1906,7 +2195,14 @@ public class Types
/**
* refers to the operation "cancel"
*/
- CANCEL
+ CANCEL;
+ public String toString() {
+ if (this == UNRECOGNIZED) return "UNRECOGNIZED";
+ if (this == CANCEL) return "cancel";
+ /* This can never be reached */
+ return "illegal enum";
+ }
+
};
public enum TaskStatusType {
@@ -1933,7 +2229,18 @@ public class Types
/**
* task has been cancelled
*/
- CANCELLED
+ CANCELLED;
+ public String toString() {
+ if (this == UNRECOGNIZED) return "UNRECOGNIZED";
+ if (this == PENDING) return "pending";
+ if (this == SUCCESS) return "success";
+ if (this == FAILURE) return "failure";
+ if (this == CANCELLING) return "cancelling";
+ if (this == CANCELLED) return "cancelled";
+ /* This can never be reached */
+ return "illegal enum";
+ }
+
};
public enum NetworkOperations {
@@ -1944,7 +2251,14 @@ public class Types
/**
* Indicates this network is attaching to a VIF or PIF
*/
- ATTACHING
+ ATTACHING;
+ public String toString() {
+ if (this == UNRECOGNIZED) return "UNRECOGNIZED";
+ if (this == ATTACHING) return "attaching";
+ /* This can never be reached */
+ return "illegal enum";
+ }
+
};
public enum ConsoleProtocol {
@@ -1963,7 +2277,16 @@ public class Types
/**
* Remote Desktop Protocol
*/
- RDP
+ RDP;
+ public String toString() {
+ if (this == UNRECOGNIZED) return "UNRECOGNIZED";
+ if (this == VT100) return "vt100";
+ if (this == RFB) return "rfb";
+ if (this == RDP) return "rdp";
+ /* This can never be reached */
+ return "illegal enum";
+ }
+
};
public enum OnCrashBehaviour {
@@ -1994,7 +2317,19 @@ public class Types
/**
* rename the crashed VM and start a new copy
*/
- RENAME_RESTART
+ RENAME_RESTART;
+ public String toString() {
+ if (this == UNRECOGNIZED) return "UNRECOGNIZED";
+ if (this == DESTROY) return "destroy";
+ if (this == COREDUMP_AND_DESTROY) return "coredump_and_destroy";
+ if (this == RESTART) return "restart";
+ if (this == COREDUMP_AND_RESTART) return "coredump_and_restart";
+ if (this == PRESERVE) return "preserve";
+ if (this == RENAME_RESTART) return "rename_restart";
+ /* This can never be reached */
+ return "illegal enum";
+ }
+
};
public enum VmppBackupType {
@@ -2009,7 +2344,15 @@ public class Types
/**
* The backup is a checkpoint
*/
- CHECKPOINT
+ CHECKPOINT;
+ public String toString() {
+ if (this == UNRECOGNIZED) return "UNRECOGNIZED";
+ if (this == SNAPSHOT) return "snapshot";
+ if (this == CHECKPOINT) return "checkpoint";
+ /* This can never be reached */
+ return "illegal enum";
+ }
+
};
public enum OnNormalExit {
@@ -2024,7 +2367,15 @@ public class Types
/**
* restart the VM
*/
- RESTART
+ RESTART;
+ public String toString() {
+ if (this == UNRECOGNIZED) return "UNRECOGNIZED";
+ if (this == DESTROY) return "destroy";
+ if (this == RESTART) return "restart";
+ /* This can never be reached */
+ return "illegal enum";
+ }
+
};
public enum VifOperations {
@@ -2043,7 +2394,16 @@ public class Types
/**
* Attempting to hot unplug this VIF
*/
- UNPLUG
+ UNPLUG;
+ public String toString() {
+ if (this == UNRECOGNIZED) return "UNRECOGNIZED";
+ if (this == ATTACH) return "attach";
+ if (this == PLUG) return "plug";
+ if (this == UNPLUG) return "unplug";
+ /* This can never be reached */
+ return "illegal enum";
+ }
+
};
public enum XenAPIObjects {
@@ -2099,6 +2459,14 @@ public class Types
* VM Protection Policy
*/
VMPP,
+ /**
+ * VM appliance
+ */
+ VM_APPLIANCE,
+ /**
+ * DR task
+ */
+ DR_TASK,
/**
* A physical host
*/
@@ -2140,7 +2508,7 @@ public class Types
*/
PIF_METRICS,
/**
- *
+ *
*/
BOND,
/**
@@ -2206,7 +2574,74 @@ public class Types
/**
* A tunnel for network traffic
*/
- TUNNEL
+ TUNNEL,
+ /**
+ * A PCI device
+ */
+ PCI,
+ /**
+ * A physical GPU (pGPU)
+ */
+ PGPU,
+ /**
+ * A group of compatible GPUs across the resource pool
+ */
+ GPU_GROUP,
+ /**
+ * A virtual GPU (vGPU)
+ */
+ VGPU;
+ public String toString() {
+ if (this == UNRECOGNIZED) return "UNRECOGNIZED";
+ if (this == SESSION) return "session";
+ if (this == AUTH) return "auth";
+ if (this == SUBJECT) return "subject";
+ if (this == ROLE) return "role";
+ if (this == TASK) return "task";
+ if (this == EVENT) return "event";
+ if (this == POOL) return "pool";
+ if (this == POOL_PATCH) return "pool_patch";
+ if (this == VM) return "VM";
+ if (this == VM_METRICS) return "VM_metrics";
+ if (this == VM_GUEST_METRICS) return "VM_guest_metrics";
+ if (this == VMPP) return "VMPP";
+ if (this == VM_APPLIANCE) return "VM_appliance";
+ if (this == DR_TASK) return "DR_task";
+ if (this == HOST) return "host";
+ if (this == HOST_CRASHDUMP) return "host_crashdump";
+ if (this == HOST_PATCH) return "host_patch";
+ if (this == HOST_METRICS) return "host_metrics";
+ if (this == HOST_CPU) return "host_cpu";
+ if (this == NETWORK) return "network";
+ if (this == VIF) return "VIF";
+ if (this == VIF_METRICS) return "VIF_metrics";
+ if (this == PIF) return "PIF";
+ if (this == PIF_METRICS) return "PIF_metrics";
+ if (this == BOND) return "Bond";
+ if (this == VLAN) return "VLAN";
+ if (this == SM) return "SM";
+ if (this == SR) return "SR";
+ if (this == VDI) return "VDI";
+ if (this == VBD) return "VBD";
+ if (this == VBD_METRICS) return "VBD_metrics";
+ if (this == PBD) return "PBD";
+ if (this == CRASHDUMP) return "crashdump";
+ if (this == VTPM) return "VTPM";
+ if (this == CONSOLE) return "console";
+ if (this == USER) return "user";
+ if (this == DATA_SOURCE) return "data_source";
+ if (this == BLOB) return "blob";
+ if (this == MESSAGE) return "message";
+ if (this == SECRET) return "secret";
+ if (this == TUNNEL) return "tunnel";
+ if (this == PCI) return "PCI";
+ if (this == PGPU) return "PGPU";
+ if (this == GPU_GROUP) return "GPU_group";
+ if (this == VGPU) return "VGPU";
+ /* This can never be reached */
+ return "illegal enum";
+ }
+
};
public enum HostAllowedOperations {
@@ -2245,7 +2680,21 @@ public class Types
/**
* This host is the migration target of a VM
*/
- VM_MIGRATE
+ VM_MIGRATE;
+ public String toString() {
+ if (this == UNRECOGNIZED) return "UNRECOGNIZED";
+ if (this == PROVISION) return "provision";
+ if (this == EVACUATE) return "evacuate";
+ if (this == SHUTDOWN) return "shutdown";
+ if (this == REBOOT) return "reboot";
+ if (this == POWER_ON) return "power_on";
+ if (this == VM_START) return "vm_start";
+ if (this == VM_RESUME) return "vm_resume";
+ if (this == VM_MIGRATE) return "vm_migrate";
+ /* This can never be reached */
+ return "illegal enum";
+ }
+
};
public enum VmppArchiveFrequency {
@@ -2268,7 +2717,17 @@ public class Types
/**
* Weekly backups
*/
- WEEKLY
+ WEEKLY;
+ public String toString() {
+ if (this == UNRECOGNIZED) return "UNRECOGNIZED";
+ if (this == NEVER) return "never";
+ if (this == ALWAYS_AFTER_BACKUP) return "always_after_backup";
+ if (this == DAILY) return "daily";
+ if (this == WEEKLY) return "weekly";
+ /* This can never be reached */
+ return "illegal enum";
+ }
+
};
public enum VmppArchiveTargetType {
@@ -2287,7 +2746,16 @@ public class Types
/**
* NFS target config
*/
- NFS
+ NFS;
+ public String toString() {
+ if (this == UNRECOGNIZED) return "UNRECOGNIZED";
+ if (this == NONE) return "none";
+ if (this == CIFS) return "cifs";
+ if (this == NFS) return "nfs";
+ /* This can never be reached */
+ return "illegal enum";
+ }
+
};
public enum VbdMode {
@@ -2302,7 +2770,48 @@ public class Types
/**
* read-write access will be allowed
*/
- RW
+ RW;
+ public String toString() {
+ if (this == UNRECOGNIZED) return "UNRECOGNIZED";
+ if (this == RO) return "RO";
+ if (this == RW) return "RW";
+ /* This can never be reached */
+ return "illegal enum";
+ }
+
+ };
+
+ public enum Ipv6ConfigurationMode {
+ /**
+ * The value does not belong to this enumeration
+ */
+ UNRECOGNIZED,
+ /**
+ * Do not acquire an IPv6 address
+ */
+ NONE,
+ /**
+ * Acquire an IPv6 address by DHCP
+ */
+ DHCP,
+ /**
+ * Static IPv6 address configuration
+ */
+ STATIC,
+ /**
+ * Router assigned prefix delegation IPv6 allocation
+ */
+ AUTOCONF;
+ public String toString() {
+ if (this == UNRECOGNIZED) return "UNRECOGNIZED";
+ if (this == NONE) return "None";
+ if (this == DHCP) return "DHCP";
+ if (this == STATIC) return "Static";
+ if (this == AUTOCONF) return "Autoconf";
+ /* This can never be reached */
+ return "illegal enum";
+ }
+
};
public enum VbdType {
@@ -2317,7 +2826,15 @@ public class Types
/**
* VBD will appear to guest as disk
*/
- DISK
+ DISK;
+ public String toString() {
+ if (this == UNRECOGNIZED) return "UNRECOGNIZED";
+ if (this == CD) return "CD";
+ if (this == DISK) return "Disk";
+ /* This can never be reached */
+ return "illegal enum";
+ }
+
};
public enum OnBoot {
@@ -2332,7 +2849,48 @@ public class Types
/**
* Standard behaviour.
*/
- PERSIST
+ PERSIST;
+ public String toString() {
+ if (this == UNRECOGNIZED) return "UNRECOGNIZED";
+ if (this == RESET) return "reset";
+ if (this == PERSIST) return "persist";
+ /* This can never be reached */
+ return "illegal enum";
+ }
+
+ };
+
+ public enum VmApplianceOperation {
+ /**
+ * The value does not belong to this enumeration
+ */
+ UNRECOGNIZED,
+ /**
+ * Start
+ */
+ START,
+ /**
+ * Clean shutdown
+ */
+ CLEAN_SHUTDOWN,
+ /**
+ * Hard shutdown
+ */
+ HARD_SHUTDOWN,
+ /**
+ * Shutdown
+ */
+ SHUTDOWN;
+ public String toString() {
+ if (this == UNRECOGNIZED) return "UNRECOGNIZED";
+ if (this == START) return "start";
+ if (this == CLEAN_SHUTDOWN) return "clean_shutdown";
+ if (this == HARD_SHUTDOWN) return "hard_shutdown";
+ if (this == SHUTDOWN) return "shutdown";
+ /* This can never be reached */
+ return "illegal enum";
+ }
+
};
public enum VbdOperations {
@@ -2371,7 +2929,21 @@ public class Types
/**
* Attempting to unpause a block device backend
*/
- UNPAUSE
+ UNPAUSE;
+ public String toString() {
+ if (this == UNRECOGNIZED) return "UNRECOGNIZED";
+ if (this == ATTACH) return "attach";
+ if (this == EJECT) return "eject";
+ if (this == INSERT) return "insert";
+ if (this == PLUG) return "plug";
+ if (this == UNPLUG) return "unplug";
+ if (this == UNPLUG_FORCE) return "unplug_force";
+ if (this == PAUSE) return "pause";
+ if (this == UNPAUSE) return "unpause";
+ /* This can never be reached */
+ return "illegal enum";
+ }
+
};
public enum VmppBackupFrequency {
@@ -2390,7 +2962,39 @@ public class Types
/**
* Weekly backups
*/
- WEEKLY
+ WEEKLY;
+ public String toString() {
+ if (this == UNRECOGNIZED) return "UNRECOGNIZED";
+ if (this == HOURLY) return "hourly";
+ if (this == DAILY) return "daily";
+ if (this == WEEKLY) return "weekly";
+ /* This can never be reached */
+ return "illegal enum";
+ }
+
+ };
+
+ public enum NetworkDefaultLockingMode {
+ /**
+ * The value does not belong to this enumeration
+ */
+ UNRECOGNIZED,
+ /**
+ * Treat all VIFs on this network with locking_mode = 'default' as if they have locking_mode = 'unlocked'
+ */
+ UNLOCKED,
+ /**
+ * Treat all VIFs on this network with locking_mode = 'default' as if they have locking_mode = 'disabled'
+ */
+ DISABLED;
+ public String toString() {
+ if (this == UNRECOGNIZED) return "UNRECOGNIZED";
+ if (this == UNLOCKED) return "unlocked";
+ if (this == DISABLED) return "disabled";
+ /* This can never be reached */
+ return "illegal enum";
+ }
+
};
public enum VmPowerState {
@@ -2413,7 +3017,17 @@ public class Types
/**
* VM state has been saved to disk and it is nolonger running. Note that disks remain in-use while the VM is suspended.
*/
- SUSPENDED
+ SUSPENDED;
+ public String toString() {
+ if (this == UNRECOGNIZED) return "UNRECOGNIZED";
+ if (this == HALTED) return "Halted";
+ if (this == PAUSED) return "Paused";
+ if (this == RUNNING) return "Running";
+ if (this == SUSPENDED) return "Suspended";
+ /* This can never be reached */
+ return "illegal enum";
+ }
+
};
public enum VmOperations {
@@ -2510,9 +3124,9 @@ public class Types
*/
POOL_MIGRATE,
/**
- * refers to the operation "migrate"
+ * refers to the operation "migrate_send"
*/
- MIGRATE,
+ MIGRATE_SEND,
/**
* refers to the operation "get_boot_record"
*/
@@ -2525,6 +3139,10 @@ public class Types
* refers to the operation "send_trigger"
*/
SEND_TRIGGER,
+ /**
+ * refers to the operation "query_services"
+ */
+ QUERY_SERVICES,
/**
* Changing the memory settings
*/
@@ -2545,10 +3163,6 @@ public class Types
* Changing the memory limits
*/
CHANGING_MEMORY_LIMITS,
- /**
- * Querying the co-operativeness of the VM
- */
- GET_COOPERATIVE,
/**
* Changing the shadow memory for a halted VM.
*/
@@ -2566,7 +3180,7 @@ public class Types
*/
CHANGING_VCPUS_LIVE,
/**
- *
+ *
*/
ASSERT_OPERATION_VALID,
/**
@@ -2574,7 +3188,7 @@ public class Types
*/
DATA_SOURCE_OP,
/**
- *
+ *
*/
UPDATE_ALLOWED_OPERATIONS,
/**
@@ -2600,7 +3214,86 @@ public class Types
/**
* refers to the act of uninstalling the VM
*/
- DESTROY
+ DESTROY;
+ public String toString() {
+ if (this == UNRECOGNIZED) return "UNRECOGNIZED";
+ if (this == SNAPSHOT) return "snapshot";
+ if (this == CLONE) return "clone";
+ if (this == COPY) return "copy";
+ if (this == CREATE_TEMPLATE) return "create_template";
+ if (this == REVERT) return "revert";
+ if (this == CHECKPOINT) return "checkpoint";
+ if (this == SNAPSHOT_WITH_QUIESCE) return "snapshot_with_quiesce";
+ if (this == PROVISION) return "provision";
+ if (this == START) return "start";
+ if (this == START_ON) return "start_on";
+ if (this == PAUSE) return "pause";
+ if (this == UNPAUSE) return "unpause";
+ if (this == CLEAN_SHUTDOWN) return "clean_shutdown";
+ if (this == CLEAN_REBOOT) return "clean_reboot";
+ if (this == HARD_SHUTDOWN) return "hard_shutdown";
+ if (this == POWER_STATE_RESET) return "power_state_reset";
+ if (this == HARD_REBOOT) return "hard_reboot";
+ if (this == SUSPEND) return "suspend";
+ if (this == CSVM) return "csvm";
+ if (this == RESUME) return "resume";
+ if (this == RESUME_ON) return "resume_on";
+ if (this == POOL_MIGRATE) return "pool_migrate";
+ if (this == MIGRATE_SEND) return "migrate_send";
+ if (this == GET_BOOT_RECORD) return "get_boot_record";
+ if (this == SEND_SYSRQ) return "send_sysrq";
+ if (this == SEND_TRIGGER) return "send_trigger";
+ if (this == QUERY_SERVICES) return "query_services";
+ if (this == CHANGING_MEMORY_LIVE) return "changing_memory_live";
+ if (this == AWAITING_MEMORY_LIVE) return "awaiting_memory_live";
+ if (this == CHANGING_DYNAMIC_RANGE) return "changing_dynamic_range";
+ if (this == CHANGING_STATIC_RANGE) return "changing_static_range";
+ if (this == CHANGING_MEMORY_LIMITS) return "changing_memory_limits";
+ if (this == CHANGING_SHADOW_MEMORY) return "changing_shadow_memory";
+ if (this == CHANGING_SHADOW_MEMORY_LIVE) return "changing_shadow_memory_live";
+ if (this == CHANGING_VCPUS) return "changing_VCPUs";
+ if (this == CHANGING_VCPUS_LIVE) return "changing_VCPUs_live";
+ if (this == ASSERT_OPERATION_VALID) return "assert_operation_valid";
+ if (this == DATA_SOURCE_OP) return "data_source_op";
+ if (this == UPDATE_ALLOWED_OPERATIONS) return "update_allowed_operations";
+ if (this == MAKE_INTO_TEMPLATE) return "make_into_template";
+ if (this == IMPORT) return "import";
+ if (this == EXPORT) return "export";
+ if (this == METADATA_EXPORT) return "metadata_export";
+ if (this == REVERTING) return "reverting";
+ if (this == DESTROY) return "destroy";
+ /* This can never be reached */
+ return "illegal enum";
+ }
+
+ };
+
+ public enum BondMode {
+ /**
+ * The value does not belong to this enumeration
+ */
+ UNRECOGNIZED,
+ /**
+ * Source-level balancing
+ */
+ BALANCE_SLB,
+ /**
+ * Active/passive bonding: only one NIC is carrying traffic
+ */
+ ACTIVE_BACKUP,
+ /**
+ * Link aggregation control protocol
+ */
+ LACP;
+ public String toString() {
+ if (this == UNRECOGNIZED) return "UNRECOGNIZED";
+ if (this == BALANCE_SLB) return "balance-slb";
+ if (this == ACTIVE_BACKUP) return "active-backup";
+ if (this == LACP) return "lacp";
+ /* This can never be reached */
+ return "illegal enum";
+ }
+
};
public enum IpConfigurationMode {
@@ -2619,7 +3312,16 @@ public class Types
/**
* Static IP address configuration
*/
- STATIC
+ STATIC;
+ public String toString() {
+ if (this == UNRECOGNIZED) return "UNRECOGNIZED";
+ if (this == NONE) return "None";
+ if (this == DHCP) return "DHCP";
+ if (this == STATIC) return "Static";
+ /* This can never be reached */
+ return "illegal enum";
+ }
+
};
public enum StorageOperations {
@@ -2674,7 +3376,68 @@ public class Types
/**
* Snapshotting a VDI
*/
- VDI_SNAPSHOT
+ VDI_SNAPSHOT,
+ /**
+ * Creating a PBD for this SR
+ */
+ PBD_CREATE,
+ /**
+ * Destroying one of this SR's PBDs
+ */
+ PBD_DESTROY;
+ public String toString() {
+ if (this == UNRECOGNIZED) return "UNRECOGNIZED";
+ if (this == SCAN) return "scan";
+ if (this == DESTROY) return "destroy";
+ if (this == FORGET) return "forget";
+ if (this == PLUG) return "plug";
+ if (this == UNPLUG) return "unplug";
+ if (this == UPDATE) return "update";
+ if (this == VDI_CREATE) return "vdi_create";
+ if (this == VDI_INTRODUCE) return "vdi_introduce";
+ if (this == VDI_DESTROY) return "vdi_destroy";
+ if (this == VDI_RESIZE) return "vdi_resize";
+ if (this == VDI_CLONE) return "vdi_clone";
+ if (this == VDI_SNAPSHOT) return "vdi_snapshot";
+ if (this == PBD_CREATE) return "pbd_create";
+ if (this == PBD_DESTROY) return "pbd_destroy";
+ /* This can never be reached */
+ return "illegal enum";
+ }
+
+ };
+
+ public enum VifLockingMode {
+ /**
+ * The value does not belong to this enumeration
+ */
+ UNRECOGNIZED,
+ /**
+ * No specific configuration set - default network policy applies
+ */
+ NETWORK_DEFAULT,
+ /**
+ * Only traffic to a specific MAC and a list of IPv4 or IPv6 addresses is permitted
+ */
+ LOCKED,
+ /**
+ * All traffic is permitted
+ */
+ UNLOCKED,
+ /**
+ * No traffic is permitted
+ */
+ DISABLED;
+ public String toString() {
+ if (this == UNRECOGNIZED) return "UNRECOGNIZED";
+ if (this == NETWORK_DEFAULT) return "network_default";
+ if (this == LOCKED) return "locked";
+ if (this == UNLOCKED) return "unlocked";
+ if (this == DISABLED) return "disabled";
+ /* This can never be reached */
+ return "illegal enum";
+ }
+
};
@@ -2821,6 +3584,24 @@ public class Types
}
+ /**
+ * The GPU group contains active PGPUs and cannot be deleted.
+ */
+ public static class GpuGroupContainsPgpu extends XenAPIException {
+ public final String pgpus;
+
+ /**
+ * Create a new GpuGroupContainsPgpu
+ *
+ * @param pgpus
+ */
+ public GpuGroupContainsPgpu(String pgpus) {
+ super("The GPU group contains active PGPUs and cannot be deleted.");
+ this.pgpus = pgpus;
+ }
+
+ }
+
/**
* Operation cannot proceed while a tunnel exists on this interface.
*/
@@ -2871,6 +3652,24 @@ public class Types
}
+ /**
+ * The disaster recovery task could not be cleanly destroyed.
+ */
+ public static class CannotDestroyDisasterRecoveryTask extends XenAPIException {
+ public final String reason;
+
+ /**
+ * Create a new CannotDestroyDisasterRecoveryTask
+ *
+ * @param reason
+ */
+ public CannotDestroyDisasterRecoveryTask(String reason) {
+ super("The disaster recovery task could not be cleanly destroyed.");
+ this.reason = reason;
+ }
+
+ }
+
/**
* You tried to create a VLAN, but the tag you gave was invalid -- it must be between 0 and 4094. The parameter echoes the VLAN tag you gave.
*/
@@ -3044,6 +3843,24 @@ public class Types
}
+ /**
+ * You attempted to run a VM on a host which doesn't have I/O virtualisation (IOMMU/VT-d) enabled, which is needed by the VM.
+ */
+ public static class VmRequiresIommu extends XenAPIException {
+ public final String host;
+
+ /**
+ * Create a new VmRequiresIommu
+ *
+ * @param host
+ */
+ public VmRequiresIommu(String host) {
+ super("You attempted to run a VM on a host which doesn't have I/O virtualisation (IOMMU/VT-d) enabled, which is needed by the VM.");
+ this.host = host;
+ }
+
+ }
+
/**
* The operation failed because the HA software on the specified host could not see a subset of other hosts. Check your network connectivity.
*/
@@ -3235,6 +4052,24 @@ public class Types
}
+ /**
+ * You attempted to migrate a VM with more than one snapshot.
+ */
+ public static class VmHasTooManySnapshots extends XenAPIException {
+ public final String vm;
+
+ /**
+ * Create a new VmHasTooManySnapshots
+ *
+ * @param vm
+ */
+ public VmHasTooManySnapshots(String vm) {
+ super("You attempted to migrate a VM with more than one snapshot.");
+ this.vm = vm;
+ }
+
+ }
+
/**
* The patch apply failed. Please see attached output.
*/
@@ -3292,6 +4127,27 @@ public class Types
}
+ /**
+ * You attempted to run a VM on a host which doesn't have a pGPU available in the GPU group needed by the VM. The VM has a vGPU attached to this GPU group.
+ */
+ public static class VmRequiresGpu extends XenAPIException {
+ public final String vm;
+ public final String GPUGroup;
+
+ /**
+ * Create a new VmRequiresGpu
+ *
+ * @param vm
+ * @param GPUGroup
+ */
+ public VmRequiresGpu(String vm, String GPUGroup) {
+ super("You attempted to run a VM on a host which doesn't have a pGPU available in the GPU group needed by the VM. The VM has a vGPU attached to this GPU group.");
+ this.vm = vm;
+ this.GPUGroup = GPUGroup;
+ }
+
+ }
+
/**
* This operation cannot be performed because this VDI could not be properly attached to the VM.
*/
@@ -3450,6 +4306,24 @@ public class Types
}
+ /**
+ * The VM is set up to use a feature that requires it to boot as HVM.
+ */
+ public static class FeatureRequiresHvm extends XenAPIException {
+ public final String details;
+
+ /**
+ * Create a new FeatureRequiresHvm
+ *
+ * @param details
+ */
+ public FeatureRequiresHvm(String details) {
+ super("The VM is set up to use a feature that requires it to boot as HVM.");
+ this.details = details;
+ }
+
+ }
+
/**
* The operation could not proceed because necessary VDIs were already locked at the storage level.
*/
@@ -3579,6 +4453,24 @@ public class Types
}
+ /**
+ * The GPU group contains active VGPUs and cannot be deleted.
+ */
+ public static class GpuGroupContainsVgpu extends XenAPIException {
+ public final String vgpus;
+
+ /**
+ * Create a new GpuGroupContainsVgpu
+ *
+ * @param vgpus
+ */
+ public GpuGroupContainsVgpu(String vgpus) {
+ super("The GPU group contains active VGPUs and cannot be deleted.");
+ this.vgpus = vgpus;
+ }
+
+ }
+
/**
* The pool failed to enable external authentication.
*/
@@ -3689,6 +4581,24 @@ public class Types
}
+ /**
+ * This PIF is a bond slave and cannot have a tunnel on it.
+ */
+ public static class CannotAddTunnelToBondSlave extends XenAPIException {
+ public final String PIF;
+
+ /**
+ * Create a new CannotAddTunnelToBondSlave
+ *
+ * @param PIF
+ */
+ public CannotAddTunnelToBondSlave(String PIF) {
+ super("This PIF is a bond slave and cannot have a tunnel on it.");
+ this.PIF = PIF;
+ }
+
+ }
+
/**
* The uploaded patch file is invalid
*/
@@ -3777,6 +4687,41 @@ public class Types
}
+ /**
+ * PIF has no IPv6 configuration (mode curently set to 'none')
+ */
+ public static class PifHasNoV6NetworkConfiguration extends XenAPIException {
+
+ /**
+ * Create a new PifHasNoV6NetworkConfiguration
+ */
+ public PifHasNoV6NetworkConfiguration() {
+ super("PIF has no IPv6 configuration (mode curently set to 'none')");
+ }
+
+ }
+
+ /**
+ * This operation is not allowed as the VM is part of an appliance.
+ */
+ public static class VmIsPartOfAnAppliance extends XenAPIException {
+ public final String vm;
+ public final String appliance;
+
+ /**
+ * Create a new VmIsPartOfAnAppliance
+ *
+ * @param vm
+ * @param appliance
+ */
+ public VmIsPartOfAnAppliance(String vm, String appliance) {
+ super("This operation is not allowed as the VM is part of an appliance.");
+ this.vm = vm;
+ this.appliance = appliance;
+ }
+
+ }
+
/**
* The WLB server reported that XenServer rejected its configured authentication details.
*/
@@ -4167,6 +5112,44 @@ public class Types
}
+ /**
+ * The VM is incompatible with the CPU features of this host.
+ */
+ public static class VmIncompatibleWithThisHost extends XenAPIException {
+ public final String vm;
+ public final String host;
+ public final String reason;
+
+ /**
+ * Create a new VmIncompatibleWithThisHost
+ *
+ * @param vm
+ * @param host
+ * @param reason
+ */
+ public VmIncompatibleWithThisHost(String vm, String host, String reason) {
+ super("The VM is incompatible with the CPU features of this host.");
+ this.vm = vm;
+ this.host = host;
+ this.reason = reason;
+ }
+
+ }
+
+ /**
+ * The upper limit of active redo log instances was reached.
+ */
+ public static class NoMoreRedoLogsAllowed extends XenAPIException {
+
+ /**
+ * Create a new NoMoreRedoLogsAllowed
+ */
+ public NoMoreRedoLogsAllowed() {
+ super("The upper limit of active redo log instances was reached.");
+ }
+
+ }
+
/**
* The pool failed to enable external authentication.
*/
@@ -4386,6 +5369,27 @@ public class Types
}
+ /**
+ * This VM operation cannot be performed on an older-versioned host during an upgrade.
+ */
+ public static class VmHostIncompatibleVersion extends XenAPIException {
+ public final String host;
+ public final String vm;
+
+ /**
+ * Create a new VmHostIncompatibleVersion
+ *
+ * @param host
+ * @param vm
+ */
+ public VmHostIncompatibleVersion(String host, String vm) {
+ super("This VM operation cannot be performed on an older-versioned host during an upgrade.");
+ this.host = host;
+ this.vm = vm;
+ }
+
+ }
+
/**
* Cannot join pool whose external authentication configuration is different.
*/
@@ -4400,6 +5404,24 @@ public class Types
}
+ /**
+ * All VBDs of type 'disk' must be read/write for HVM guests
+ */
+ public static class DiskVbdMustBeReadwriteForHvm extends XenAPIException {
+ public final String vbd;
+
+ /**
+ * Create a new DiskVbdMustBeReadwriteForHvm
+ *
+ * @param vbd
+ */
+ public DiskVbdMustBeReadwriteForHvm(String vbd) {
+ super("All VBDs of type 'disk' must be read/write for HVM guests");
+ this.vbd = vbd;
+ }
+
+ }
+
/**
* The BIOS strings for this VM have already been set and cannot be changed anymore.
*/
@@ -4563,6 +5585,84 @@ public class Types
}
+ /**
+ * You attempted to migrate a VM which has a checkpoint.
+ */
+ public static class VmHasCheckpoint extends XenAPIException {
+ public final String vm;
+
+ /**
+ * Create a new VmHasCheckpoint
+ *
+ * @param vm
+ */
+ public VmHasCheckpoint(String vm) {
+ super("You attempted to migrate a VM which has a checkpoint.");
+ this.vm = vm;
+ }
+
+ }
+
+ /**
+ * The SM plugin did not respond to a query.
+ */
+ public static class SmPluginCommunicationFailure extends XenAPIException {
+ public final String sm;
+
+ /**
+ * Create a new SmPluginCommunicationFailure
+ *
+ * @param sm
+ */
+ public SmPluginCommunicationFailure(String sm) {
+ super("The SM plugin did not respond to a query.");
+ this.sm = sm;
+ }
+
+ }
+
+ /**
+ * This VM is assigned to a protection policy.
+ */
+ public static class VmAssignedToProtectionPolicy extends XenAPIException {
+ public final String vm;
+ public final String vmpp;
+
+ /**
+ * Create a new VmAssignedToProtectionPolicy
+ *
+ * @param vm
+ * @param vmpp
+ */
+ public VmAssignedToProtectionPolicy(String vm, String vmpp) {
+ super("This VM is assigned to a protection policy.");
+ this.vm = vm;
+ this.vmpp = vmpp;
+ }
+
+ }
+
+ /**
+ * RBAC permission denied.
+ */
+ public static class RbacPermissionDenied extends XenAPIException {
+ public final String permission;
+ public final String message;
+
+ /**
+ * Create a new RbacPermissionDenied
+ *
+ * @param permission
+ * @param message
+ */
+ public RbacPermissionDenied(String permission, String message) {
+ super("RBAC permission denied.");
+ this.permission = permission;
+ this.message = message;
+ }
+
+ }
+
/**
* The host failed to disable external authentication.
*/
@@ -4595,27 +5695,6 @@ public class Types
}
- /**
- * RBAC permission denied.
- */
- public static class RbacPermissionDenied extends XenAPIException {
- public final String permission;
- public final String message;
-
- /**
- * Create a new RbacPermissionDenied
- *
- * @param permission
- * @param message
- */
- public RbacPermissionDenied(String permission, String message) {
- super("RBAC permission denied.");
- this.permission = permission;
- this.message = message;
- }
-
- }
-
/**
* The request was rejected because there are too many pending tasks on the server.
*/
@@ -4648,6 +5727,20 @@ public class Types
}
+ /**
+ * This operation cannot be performed because creating or deleting a bond involving the management interface is not allowed while HA is on. In order to do that, disable HA, create or delete the bond then re-enable HA.
+ */
+ public static class HaCannotChangeBondStatusOfMgmtIface extends XenAPIException {
+
+ /**
+ * Create a new HaCannotChangeBondStatusOfMgmtIface
+ */
+ public HaCannotChangeBondStatusOfMgmtIface() {
+ super("This operation cannot be performed because creating or deleting a bond involving the management interface is not allowed while HA is on. In order to do that, disable HA, create or delete the bond then re-enable HA.");
+ }
+
+ }
+
/**
* This patch has already been applied
*/
@@ -4702,6 +5795,30 @@ public class Types
}
+ /**
+ * The patch precheck stage failed: the server is of an incorrect build.
+ */
+ public static class PatchPrecheckFailedWrongServerBuild extends XenAPIException {
+ public final String patch;
+ public final String foundBuild;
+ public final String requiredBuild;
+
+ /**
+ * Create a new PatchPrecheckFailedWrongServerBuild
+ *
+ * @param patch
+ * @param foundBuild
+ * @param requiredBuild
+ */
+ public PatchPrecheckFailedWrongServerBuild(String patch, String foundBuild, String requiredBuild) {
+ super("The patch precheck stage failed: the server is of an incorrect build.");
+ this.patch = patch;
+ this.foundBuild = foundBuild;
+ this.requiredBuild = requiredBuild;
+ }
+
+ }
+
/**
* The given feature string is not valid.
*/
@@ -4790,6 +5907,20 @@ public class Types
}
+ /**
+ * Role already exists.
+ */
+ public static class RoleAlreadyExists extends XenAPIException {
+
+ /**
+ * Create a new RoleAlreadyExists
+ */
+ public RoleAlreadyExists() {
+ super("Role already exists.");
+ }
+
+ }
+
/**
* The network contains active PIFs and cannot be deleted.
*/
@@ -4809,15 +5940,22 @@ public class Types
}
/**
- * Role already exists.
+ * Could not find a network interface with the specified device name and MAC address.
*/
- public static class RoleAlreadyExists extends XenAPIException {
+ public static class CouldNotFindNetworkInterfaceWithSpecifiedDeviceNameAndMacAddress extends XenAPIException {
+ public final String device;
+ public final String mac;
/**
- * Create a new RoleAlreadyExists
+ * Create a new CouldNotFindNetworkInterfaceWithSpecifiedDeviceNameAndMacAddress
+ *
+ * @param device
+ * @param mac
*/
- public RoleAlreadyExists() {
- super("Role already exists.");
+ public CouldNotFindNetworkInterfaceWithSpecifiedDeviceNameAndMacAddress(String device, String mac) {
+ super("Could not find a network interface with the specified device name and MAC address.");
+ this.device = device;
+ this.mac = mac;
}
}
@@ -5002,6 +6140,27 @@ public class Types
}
+ /**
+ * The specified VBD device is not recognised: please use a non-negative integer
+ */
+ public static class IllegalVbdDevice extends XenAPIException {
+ public final String vbd;
+ public final String device;
+
+ /**
+ * Create a new IllegalVbdDevice
+ *
+ * @param vbd
+ * @param device
+ */
+ public IllegalVbdDevice(String vbd, String device) {
+ super("The specified VBD device is not recognised: please use a non-negative integer");
+ this.vbd = vbd;
+ this.device = device;
+ }
+
+ }
+
/**
* The specified CRL does not exist.
*/
@@ -5229,6 +6388,24 @@ public class Types
}
+ /**
+ * The event.from token could not be parsed. Valid values include: '', and a value returned from a previous event.from call.
+ */
+ public static class EventFromTokenParseFailure extends XenAPIException {
+ public final String token;
+
+ /**
+ * Create a new EventFromTokenParseFailure
+ *
+ * @param token
+ */
+ public EventFromTokenParseFailure(String token) {
+ super("The event.from token could not be parsed. Valid values include: '', and a value returned from a previous event.from call.");
+ this.token = token;
+ }
+
+ }
+
/**
* The operation cannot be performed until the SR has been upgraded
*/
@@ -5625,6 +6802,24 @@ public class Types
}
+ /**
+ * The server failed to parse your event subscription. Valid values include: *, class-name, class-name/object-reference.
+ */
+ public static class EventSubscriptionParseFailure extends XenAPIException {
+ public final String subscription;
+
+ /**
+ * Create a new EventSubscriptionParseFailure
+ *
+ * @param subscription
+ */
+ public EventSubscriptionParseFailure(String subscription) {
+ super("The server failed to parse your event subscription. Valid values include: *, class-name, class-name/object-reference.");
+ this.subscription = subscription;
+ }
+
+ }
+
/**
* Your license has expired. Please contact your support representative.
*/
@@ -5685,6 +6880,20 @@ public class Types
}
+ /**
+ * There was a problem with the license daemon (v6d). Is it running?
+ */
+ public static class V6dFailure extends XenAPIException {
+
+ /**
+ * Create a new V6dFailure
+ */
+ public V6dFailure() {
+ super("There was a problem with the license daemon (v6d). Is it running?");
+ }
+
+ }
+
/**
* The host joining the pool cannot already be a master of another pool.
*/
@@ -5848,6 +7057,20 @@ public class Types
}
+ /**
+ * The WLB server rejected our configured authentication details.
+ */
+ public static class WlbAuthenticationFailed extends XenAPIException {
+
+ /**
+ * Create a new WlbAuthenticationFailed
+ */
+ public WlbAuthenticationFailed() {
+ super("The WLB server rejected our configured authentication details.");
+ }
+
+ }
+
/**
* Unknown type of external authentication.
*/
@@ -5866,20 +7089,6 @@ public class Types
}
- /**
- * The WLB server rejected our configured authentication details.
- */
- public static class WlbAuthenticationFailed extends XenAPIException {
-
- /**
- * Create a new WlbAuthenticationFailed
- */
- public WlbAuthenticationFailed() {
- super("The WLB server rejected our configured authentication details.");
- }
-
- }
-
/**
* This pool is not in emergency mode.
*/
@@ -6054,6 +7263,27 @@ public class Types
}
+ /**
+ * The VDI could not be opened for metadata recovery as it contains the current pool's metadata.
+ */
+ public static class VdiContainsMetadataOfThisPool extends XenAPIException {
+ public final String vdi;
+ public final String pool;
+
+ /**
+ * Create a new VdiContainsMetadataOfThisPool
+ *
+ * @param vdi
+ * @param pool
+ */
+ public VdiContainsMetadataOfThisPool(String vdi, String pool) {
+ super("The VDI could not be opened for metadata recovery as it contains the current pool's metadata.");
+ this.vdi = vdi;
+ this.pool = pool;
+ }
+
+ }
+
/**
* The specified CRL name is invalid.
*/
@@ -6230,7 +7460,7 @@ public class Types
}
/**
- * The SR is still connected to a host via a PBD. It cannot be destroyed.
+ * The SR is still connected to a host via a PBD. It cannot be destroyed or forgotten.
*/
public static class SrHasPbd extends XenAPIException {
public final String sr;
@@ -6241,22 +7471,26 @@ public class Types
* @param sr
*/
public SrHasPbd(String sr) {
- super("The SR is still connected to a host via a PBD. It cannot be destroyed.");
+ super("The SR is still connected to a host via a PBD. It cannot be destroyed or forgotten.");
this.sr = sr;
}
}
/**
- * The host is still booting.
+ * Some VMs belonging to the appliance threw an exception while carrying out the specified operation
*/
- public static class HostStillBooting extends XenAPIException {
+ public static class OperationPartiallyFailed extends XenAPIException {
+ public final String operation;
/**
- * Create a new HostStillBooting
+ * Create a new OperationPartiallyFailed
+ *
+ * @param operation
*/
- public HostStillBooting() {
- super("The host is still booting.");
+ public OperationPartiallyFailed(String operation) {
+ super("Some VMs belonging to the appliance threw an exception while carrying out the specified operation");
+ this.operation = operation;
}
}
@@ -6275,6 +7509,38 @@ public class Types
}
+ /**
+ * The host toolstack is still initialising. Please wait.
+ */
+ public static class HostStillBooting extends XenAPIException {
+
+ /**
+ * Create a new HostStillBooting
+ */
+ public HostStillBooting() {
+ super("The host toolstack is still initialising. Please wait.");
+ }
+
+ }
+
+ /**
+ * You tried to destroy a system network: these cannot be destroyed.
+ */
+ public static class CannotDestroySystemNetwork extends XenAPIException {
+ public final String network;
+
+ /**
+ * Create a new CannotDestroySystemNetwork
+ *
+ * @param network
+ */
+ public CannotDestroySystemNetwork(String network) {
+ super("You tried to destroy a system network: these cannot be destroyed.");
+ this.network = network;
+ }
+
+ }
+
/**
* The specified object no longer exists.
*/
@@ -6289,6 +7555,24 @@ public class Types
}
+ /**
+ * This VDI was not mapped to a destination SR in VM.migrate_send operation
+ */
+ public static class VdiNotInMap extends XenAPIException {
+ public final String vdi;
+
+ /**
+ * Create a new VdiNotInMap
+ *
+ * @param vdi
+ */
+ public VdiNotInMap(String vdi) {
+ super("This VDI was not mapped to a destination SR in VM.migrate_send operation");
+ this.vdi = vdi;
+ }
+
+ }
+
/**
* The hosts in this pool are not homogeneous.
*/
@@ -6390,7 +7674,7 @@ public class Types
}
/**
- * The edition name you supplied is invalid.
+ * The edition you supplied is invalid.
*/
public static class InvalidEdition extends XenAPIException {
public final String edition;
@@ -6401,7 +7685,7 @@ public class Types
* @param edition
*/
public InvalidEdition(String edition) {
- super("The edition name you supplied is invalid.");
+ super("The edition you supplied is invalid.");
this.edition = edition;
}
@@ -6457,6 +7741,24 @@ public class Types
}
+ /**
+ * The given VM is not registered as a system domain. This operation can only be performed on a registered system domain.
+ */
+ public static class NotSystemDomain extends XenAPIException {
+ public final String vm;
+
+ /**
+ * Create a new NotSystemDomain
+ *
+ * @param vm
+ */
+ public NotSystemDomain(String vm) {
+ super("The given VM is not registered as a system domain. This operation can only be performed on a registered system domain.");
+ this.vm = vm;
+ }
+
+ }
+
/**
* The specified VM has too little memory to be started.
*/
@@ -6476,7 +7778,7 @@ public class Types
}
/**
- * There is at least on VM assigned to this protection policy.
+ * There is at least one VM assigned to this protection policy.
*/
public static class VmppHasVm extends XenAPIException {
@@ -6484,7 +7786,7 @@ public class Types
* Create a new VmppHasVm
*/
public VmppHasVm() {
- super("There is at least on VM assigned to this protection policy.");
+ super("There is at least one VM assigned to this protection policy.");
}
}
@@ -6791,6 +8093,42 @@ public class Types
}
+ /**
+ * This operation could not be performed, because the VM has one or more PCI devices passed through.
+ */
+ public static class VmHasPciAttached extends XenAPIException {
+ public final String vm;
+
+ /**
+ * Create a new VmHasPciAttached
+ *
+ * @param vm
+ */
+ public VmHasPciAttached(String vm) {
+ super("This operation could not be performed, because the VM has one or more PCI devices passed through.");
+ this.vm = vm;
+ }
+
+ }
+
+ /**
+ * The VDI mirroring cannot be performed
+ */
+ public static class MirrorFailed extends XenAPIException {
+ public final String vdi;
+
+ /**
+ * Create a new MirrorFailed
+ *
+ * @param vdi
+ */
+ public MirrorFailed(String vdi) {
+ super("The VDI mirroring cannot be performed");
+ this.vdi = vdi;
+ }
+
+ }
+
/**
* The WLB server reported that communication with XenServer timed out.
*/
@@ -6805,24 +8143,6 @@ public class Types
}
- /**
- * The quiesced-snapshot operation failed for an unexpected reason
- */
- public static class VmSnapshotWithQuiesceFailed extends XenAPIException {
- public final String vm;
-
- /**
- * Create a new VmSnapshotWithQuiesceFailed
- *
- * @param vm
- */
- public VmSnapshotWithQuiesceFailed(String vm) {
- super("The quiesced-snapshot operation failed for an unexpected reason");
- this.vm = vm;
- }
-
- }
-
/**
* The pool failed to disable the external authentication of at least one host.
*/
@@ -6844,6 +8164,24 @@ public class Types
}
+ /**
+ * The quiesced-snapshot operation failed for an unexpected reason
+ */
+ public static class VmSnapshotWithQuiesceFailed extends XenAPIException {
+ public final String vm;
+
+ /**
+ * Create a new VmSnapshotWithQuiesceFailed
+ *
+ * @param vm
+ */
+ public VmSnapshotWithQuiesceFailed(String vm) {
+ super("The quiesced-snapshot operation failed for an unexpected reason");
+ this.vm = vm;
+ }
+
+ }
+
/**
* The specified certificate is corrupt or unreadable.
*/
@@ -6947,6 +8285,24 @@ public class Types
}
+ /**
+ * This PIF is a bond slave and cannot have a VLAN on it.
+ */
+ public static class CannotAddVlanToBondSlave extends XenAPIException {
+ public final String PIF;
+
+ /**
+ * Create a new CannotAddVlanToBondSlave
+ *
+ * @param PIF
+ */
+ public CannotAddVlanToBondSlave(String PIF) {
+ super("This PIF is a bond slave and cannot have a VLAN on it.");
+ this.PIF = PIF;
+ }
+
+ }
+
/**
* The operation could not be performed because a redo log is enabled on the Pool.
*/
@@ -7086,6 +8442,24 @@ public class Types
}
+ /**
+ * You reached the maximal number of concurrently migrating VMs.
+ */
+ public static class TooManyStorageMigrates extends XenAPIException {
+ public final String number;
+
+ /**
+ * Create a new TooManyStorageMigrates
+ *
+ * @param number
+ */
+ public TooManyStorageMigrates(String number) {
+ super("You reached the maximal number of concurrently migrating VMs.");
+ this.number = number;
+ }
+
+ }
+
/**
* The network contains active VIFs and cannot be deleted.
*/
@@ -7189,6 +8563,20 @@ public class Types
}
+ /**
+ * Subject cannot be resolved by the external directory service.
+ */
+ public static class SubjectCannotBeResolved extends XenAPIException {
+
+ /**
+ * Create a new SubjectCannotBeResolved
+ */
+ public SubjectCannotBeResolved() {
+ super("Subject cannot be resolved by the external directory service.");
+ }
+
+ }
+
/**
* Some volumes to be snapshot could not be added to the VSS snapshot set
*/
@@ -7210,20 +8598,6 @@ public class Types
}
- /**
- * Subject cannot be resolved by the external directory service.
- */
- public static class SubjectCannotBeResolved extends XenAPIException {
-
- /**
- * Create a new SubjectCannotBeResolved
- */
- public SubjectCannotBeResolved() {
- super("Subject cannot be resolved by the external directory service.");
- }
-
- }
-
/**
* The provision call failed because it ran out of space.
*/
@@ -7238,6 +8612,42 @@ public class Types
}
+ /**
+ * You attempted to migrate a VDI which is not attached to a runnning VM.
+ */
+ public static class VdiNeedsVmForMigrate extends XenAPIException {
+ public final String vdi;
+
+ /**
+ * Create a new VdiNeedsVmForMigrate
+ *
+ * @param vdi
+ */
+ public VdiNeedsVmForMigrate(String vdi) {
+ super("You attempted to migrate a VDI which is not attached to a runnning VM.");
+ this.vdi = vdi;
+ }
+
+ }
+
+ /**
+ * An error occurred while attempting to import a database from a metadata VDI
+ */
+ public static class CouldNotImportDatabase extends XenAPIException {
+ public final String reason;
+
+ /**
+ * Create a new CouldNotImportDatabase
+ *
+ * @param reason
+ */
+ public CouldNotImportDatabase(String reason) {
+ super("An error occurred while attempting to import a database from a metadata VDI");
+ this.reason = reason;
+ }
+
+ }
+
/**
* This operation can only be performed on CD VDIs (iso files or CDROM drives)
*/
@@ -7377,6 +8787,20 @@ public class Types
}
+ /**
+ * The primary address types are not compatible
+ */
+ public static class PifIncompatiblePrimaryAddressType extends XenAPIException {
+
+ /**
+ * Create a new PifIncompatiblePrimaryAddressType
+ */
+ public PifIncompatiblePrimaryAddressType() {
+ super("The primary address types are not compatible");
+ }
+
+ }
+
/**
* The device is not currently attached
*/
@@ -7681,6 +9105,48 @@ public class Types
}
+ /**
+ * This PIF is a bond slave and cannot be plugged.
+ */
+ public static class CannotPlugBondSlave extends XenAPIException {
+ public final String PIF;
+
+ /**
+ * Create a new CannotPlugBondSlave
+ *
+ * @param PIF
+ */
+ public CannotPlugBondSlave(String PIF) {
+ super("This PIF is a bond slave and cannot be plugged.");
+ this.PIF = PIF;
+ }
+
+ }
+
+ /**
+ * The VM cannot be imported unforced because it is either the same version or an older version of an existing VM.
+ */
+ public static class VmToImportIsNotNewerVersion extends XenAPIException {
+ public final String vm;
+ public final String existingVersion;
+ public final String versionToImport;
+
+ /**
+ * Create a new VmToImportIsNotNewerVersion
+ *
+ * @param vm
+ * @param existingVersion
+ * @param versionToImport
+ */
+ public VmToImportIsNotNewerVersion(String vm, String existingVersion, String versionToImport) {
+ super("The VM cannot be imported unforced because it is either the same version or an older version of an existing VM.");
+ this.vm = vm;
+ this.existingVersion = existingVersion;
+ this.versionToImport = versionToImport;
+ }
+
+ }
+
/**
* The specified CRL is corrupt or unreadable.
*/
@@ -8064,7 +9530,7 @@ public class Types
}
/**
- * This operation is not supported during an upgrade
+ * This operation is not supported during an upgrade.
*/
public static class NotSupportedDuringUpgrade extends XenAPIException {
@@ -8072,7 +9538,7 @@ public class Types
* Create a new NotSupportedDuringUpgrade
*/
public NotSupportedDuringUpgrade() {
- super("This operation is not supported during an upgrade");
+ super("This operation is not supported during an upgrade.");
}
}
@@ -8116,6 +9582,20 @@ public class Types
}
+ /**
+ * The hosts in this pool are not compatible.
+ */
+ public static class HostsNotCompatible extends XenAPIException {
+
+ /**
+ * Create a new HostsNotCompatible
+ */
+ public HostsNotCompatible() {
+ super("The hosts in this pool are not compatible.");
+ }
+
+ }
+
/**
* The host failed to enable external authentication.
*/
@@ -8170,8 +9650,8 @@ public class Types
try {
return (Date) object;
} catch (ClassCastException e){
- //Occasionally the date comes back as an ocaml float rather than
- //in the xmlrpc format! Catch this and convert.
+ //Occasionally the date comes back as an ocaml float rather than
+ //in the xmlrpc format! Catch this and convert.
return (new Date((long) (1000*Double.parseDouble((String) object))));
}
}
@@ -8181,7 +9661,7 @@ public class Types
return null;
}
try {
- return XenAPIObjects.valueOf(((String) object).toUpperCase());
+ return XenAPIObjects.valueOf(((String) object).toUpperCase().replace('-','_'));
} catch (IllegalArgumentException ex) {
return XenAPIObjects.UNRECOGNIZED;
}
@@ -8192,18 +9672,29 @@ public class Types
return null;
}
try {
- return AfterApplyGuidance.valueOf(((String) object).toUpperCase());
+ return AfterApplyGuidance.valueOf(((String) object).toUpperCase().replace('-','_'));
} catch (IllegalArgumentException ex) {
return AfterApplyGuidance.UNRECOGNIZED;
}
}
+ public static Types.BondMode toBondMode(Object object) {
+ if (object == null) {
+ return null;
+ }
+ try {
+ return BondMode.valueOf(((String) object).toUpperCase().replace('-','_'));
+ } catch (IllegalArgumentException ex) {
+ return BondMode.UNRECOGNIZED;
+ }
+ }
+
public static Types.Cls toCls(Object object) {
if (object == null) {
return null;
}
try {
- return Cls.valueOf(((String) object).toUpperCase());
+ return Cls.valueOf(((String) object).toUpperCase().replace('-','_'));
} catch (IllegalArgumentException ex) {
return Cls.UNRECOGNIZED;
}
@@ -8214,7 +9705,7 @@ public class Types
return null;
}
try {
- return ConsoleProtocol.valueOf(((String) object).toUpperCase());
+ return ConsoleProtocol.valueOf(((String) object).toUpperCase().replace('-','_'));
} catch (IllegalArgumentException ex) {
return ConsoleProtocol.UNRECOGNIZED;
}
@@ -8225,7 +9716,7 @@ public class Types
return null;
}
try {
- return EventOperation.valueOf(((String) object).toUpperCase());
+ return EventOperation.valueOf(((String) object).toUpperCase().replace('-','_'));
} catch (IllegalArgumentException ex) {
return EventOperation.UNRECOGNIZED;
}
@@ -8236,7 +9727,7 @@ public class Types
return null;
}
try {
- return HostAllowedOperations.valueOf(((String) object).toUpperCase());
+ return HostAllowedOperations.valueOf(((String) object).toUpperCase().replace('-','_'));
} catch (IllegalArgumentException ex) {
return HostAllowedOperations.UNRECOGNIZED;
}
@@ -8247,18 +9738,40 @@ public class Types
return null;
}
try {
- return IpConfigurationMode.valueOf(((String) object).toUpperCase());
+ return IpConfigurationMode.valueOf(((String) object).toUpperCase().replace('-','_'));
} catch (IllegalArgumentException ex) {
return IpConfigurationMode.UNRECOGNIZED;
}
}
+ public static Types.Ipv6ConfigurationMode toIpv6ConfigurationMode(Object object) {
+ if (object == null) {
+ return null;
+ }
+ try {
+ return Ipv6ConfigurationMode.valueOf(((String) object).toUpperCase().replace('-','_'));
+ } catch (IllegalArgumentException ex) {
+ return Ipv6ConfigurationMode.UNRECOGNIZED;
+ }
+ }
+
+ public static Types.NetworkDefaultLockingMode toNetworkDefaultLockingMode(Object object) {
+ if (object == null) {
+ return null;
+ }
+ try {
+ return NetworkDefaultLockingMode.valueOf(((String) object).toUpperCase().replace('-','_'));
+ } catch (IllegalArgumentException ex) {
+ return NetworkDefaultLockingMode.UNRECOGNIZED;
+ }
+ }
+
public static Types.NetworkOperations toNetworkOperations(Object object) {
if (object == null) {
return null;
}
try {
- return NetworkOperations.valueOf(((String) object).toUpperCase());
+ return NetworkOperations.valueOf(((String) object).toUpperCase().replace('-','_'));
} catch (IllegalArgumentException ex) {
return NetworkOperations.UNRECOGNIZED;
}
@@ -8269,7 +9782,7 @@ public class Types
return null;
}
try {
- return OnBoot.valueOf(((String) object).toUpperCase());
+ return OnBoot.valueOf(((String) object).toUpperCase().replace('-','_'));
} catch (IllegalArgumentException ex) {
return OnBoot.UNRECOGNIZED;
}
@@ -8280,7 +9793,7 @@ public class Types
return null;
}
try {
- return OnCrashBehaviour.valueOf(((String) object).toUpperCase());
+ return OnCrashBehaviour.valueOf(((String) object).toUpperCase().replace('-','_'));
} catch (IllegalArgumentException ex) {
return OnCrashBehaviour.UNRECOGNIZED;
}
@@ -8291,18 +9804,29 @@ public class Types
return null;
}
try {
- return OnNormalExit.valueOf(((String) object).toUpperCase());
+ return OnNormalExit.valueOf(((String) object).toUpperCase().replace('-','_'));
} catch (IllegalArgumentException ex) {
return OnNormalExit.UNRECOGNIZED;
}
}
+ public static Types.PrimaryAddressType toPrimaryAddressType(Object object) {
+ if (object == null) {
+ return null;
+ }
+ try {
+ return PrimaryAddressType.valueOf(((String) object).toUpperCase().replace('-','_'));
+ } catch (IllegalArgumentException ex) {
+ return PrimaryAddressType.UNRECOGNIZED;
+ }
+ }
+
public static Types.StorageOperations toStorageOperations(Object object) {
if (object == null) {
return null;
}
try {
- return StorageOperations.valueOf(((String) object).toUpperCase());
+ return StorageOperations.valueOf(((String) object).toUpperCase().replace('-','_'));
} catch (IllegalArgumentException ex) {
return StorageOperations.UNRECOGNIZED;
}
@@ -8313,7 +9837,7 @@ public class Types
return null;
}
try {
- return TaskAllowedOperations.valueOf(((String) object).toUpperCase());
+ return TaskAllowedOperations.valueOf(((String) object).toUpperCase().replace('-','_'));
} catch (IllegalArgumentException ex) {
return TaskAllowedOperations.UNRECOGNIZED;
}
@@ -8324,7 +9848,7 @@ public class Types
return null;
}
try {
- return TaskStatusType.valueOf(((String) object).toUpperCase());
+ return TaskStatusType.valueOf(((String) object).toUpperCase().replace('-','_'));
} catch (IllegalArgumentException ex) {
return TaskStatusType.UNRECOGNIZED;
}
@@ -8335,7 +9859,7 @@ public class Types
return null;
}
try {
- return VbdMode.valueOf(((String) object).toUpperCase());
+ return VbdMode.valueOf(((String) object).toUpperCase().replace('-','_'));
} catch (IllegalArgumentException ex) {
return VbdMode.UNRECOGNIZED;
}
@@ -8346,7 +9870,7 @@ public class Types
return null;
}
try {
- return VbdOperations.valueOf(((String) object).toUpperCase());
+ return VbdOperations.valueOf(((String) object).toUpperCase().replace('-','_'));
} catch (IllegalArgumentException ex) {
return VbdOperations.UNRECOGNIZED;
}
@@ -8357,7 +9881,7 @@ public class Types
return null;
}
try {
- return VbdType.valueOf(((String) object).toUpperCase());
+ return VbdType.valueOf(((String) object).toUpperCase().replace('-','_'));
} catch (IllegalArgumentException ex) {
return VbdType.UNRECOGNIZED;
}
@@ -8368,7 +9892,7 @@ public class Types
return null;
}
try {
- return VdiOperations.valueOf(((String) object).toUpperCase());
+ return VdiOperations.valueOf(((String) object).toUpperCase().replace('-','_'));
} catch (IllegalArgumentException ex) {
return VdiOperations.UNRECOGNIZED;
}
@@ -8379,29 +9903,51 @@ public class Types
return null;
}
try {
- return VdiType.valueOf(((String) object).toUpperCase());
+ return VdiType.valueOf(((String) object).toUpperCase().replace('-','_'));
} catch (IllegalArgumentException ex) {
return VdiType.UNRECOGNIZED;
}
}
+ public static Types.VifLockingMode toVifLockingMode(Object object) {
+ if (object == null) {
+ return null;
+ }
+ try {
+ return VifLockingMode.valueOf(((String) object).toUpperCase().replace('-','_'));
+ } catch (IllegalArgumentException ex) {
+ return VifLockingMode.UNRECOGNIZED;
+ }
+ }
+
public static Types.VifOperations toVifOperations(Object object) {
if (object == null) {
return null;
}
try {
- return VifOperations.valueOf(((String) object).toUpperCase());
+ return VifOperations.valueOf(((String) object).toUpperCase().replace('-','_'));
} catch (IllegalArgumentException ex) {
return VifOperations.UNRECOGNIZED;
}
}
+ public static Types.VmApplianceOperation toVmApplianceOperation(Object object) {
+ if (object == null) {
+ return null;
+ }
+ try {
+ return VmApplianceOperation.valueOf(((String) object).toUpperCase().replace('-','_'));
+ } catch (IllegalArgumentException ex) {
+ return VmApplianceOperation.UNRECOGNIZED;
+ }
+ }
+
public static Types.VmOperations toVmOperations(Object object) {
if (object == null) {
return null;
}
try {
- return VmOperations.valueOf(((String) object).toUpperCase());
+ return VmOperations.valueOf(((String) object).toUpperCase().replace('-','_'));
} catch (IllegalArgumentException ex) {
return VmOperations.UNRECOGNIZED;
}
@@ -8412,7 +9958,7 @@ public class Types
return null;
}
try {
- return VmPowerState.valueOf(((String) object).toUpperCase());
+ return VmPowerState.valueOf(((String) object).toUpperCase().replace('-','_'));
} catch (IllegalArgumentException ex) {
return VmPowerState.UNRECOGNIZED;
}
@@ -8423,7 +9969,7 @@ public class Types
return null;
}
try {
- return VmppArchiveFrequency.valueOf(((String) object).toUpperCase());
+ return VmppArchiveFrequency.valueOf(((String) object).toUpperCase().replace('-','_'));
} catch (IllegalArgumentException ex) {
return VmppArchiveFrequency.UNRECOGNIZED;
}
@@ -8434,7 +9980,7 @@ public class Types
return null;
}
try {
- return VmppArchiveTargetType.valueOf(((String) object).toUpperCase());
+ return VmppArchiveTargetType.valueOf(((String) object).toUpperCase().replace('-','_'));
} catch (IllegalArgumentException ex) {
return VmppArchiveTargetType.UNRECOGNIZED;
}
@@ -8445,7 +9991,7 @@ public class Types
return null;
}
try {
- return VmppBackupFrequency.valueOf(((String) object).toUpperCase());
+ return VmppBackupFrequency.valueOf(((String) object).toUpperCase().replace('-','_'));
} catch (IllegalArgumentException ex) {
return VmppBackupFrequency.UNRECOGNIZED;
}
@@ -8456,7 +10002,7 @@ public class Types
return null;
}
try {
- return VmppBackupType.valueOf(((String) object).toUpperCase());
+ return VmppBackupType.valueOf(((String) object).toUpperCase().replace('-','_'));
} catch (IllegalArgumentException ex) {
return VmppBackupType.UNRECOGNIZED;
}
@@ -8579,6 +10125,19 @@ public class Types
return result;
}
+ public static Set toSetOfVmApplianceOperation(Object object) {
+ if (object == null) {
+ return null;
+ }
+ Object[] items = (Object[]) object;
+ Set result = new LinkedHashSet();
+ for(Object item: items) {
+ Types.VmApplianceOperation typed = toVmApplianceOperation(item);
+ result.add(typed);
+ }
+ return result;
+ }
+
public static Set toSetOfVmOperations(Object object) {
if (object == null) {
return null;
@@ -8605,6 +10164,32 @@ public class Types
return result;
}
+ public static Set toSetOfDRTask(Object object) {
+ if (object == null) {
+ return null;
+ }
+ Object[] items = (Object[]) object;
+ Set result = new LinkedHashSet();
+ for(Object item: items) {
+ DRTask typed = toDRTask(item);
+ result.add(typed);
+ }
+ return result;
+ }
+
+ public static Set toSetOfGPUGroup(Object object) {
+ if (object == null) {
+ return null;
+ }
+ Object[] items = (Object[]) object;
+ Set result = new LinkedHashSet();
+ for(Object item: items) {
+ GPUGroup typed = toGPUGroup(item);
+ result.add(typed);
+ }
+ return result;
+ }
+
public static Set toSetOfPBD(Object object) {
if (object == null) {
return null;
@@ -8618,6 +10203,32 @@ public class Types
return result;
}
+ public static Set toSetOfPCI(Object object) {
+ if (object == null) {
+ return null;
+ }
+ Object[] items = (Object[]) object;
+ Set result = new LinkedHashSet();
+ for(Object item: items) {
+ PCI typed = toPCI(item);
+ result.add(typed);
+ }
+ return result;
+ }
+
+ public static Set toSetOfPGPU(Object object) {
+ if (object == null) {
+ return null;
+ }
+ Object[] items = (Object[]) object;
+ Set result = new LinkedHashSet();
+ for(Object item: items) {
+ PGPU typed = toPGPU(item);
+ result.add(typed);
+ }
+ return result;
+ }
+
public static Set toSetOfPIF(Object object) {
if (object == null) {
return null;
@@ -8709,6 +10320,19 @@ public class Types
return result;
}
+ public static Set toSetOfVGPU(Object object) {
+ if (object == null) {
+ return null;
+ }
+ Object[] items = (Object[]) object;
+ Set result = new LinkedHashSet();
+ for(Object item: items) {
+ VGPU typed = toVGPU(item);
+ result.add(typed);
+ }
+ return result;
+ }
+
public static Set toSetOfVIF(Object object) {
if (object == null) {
return null;
@@ -8774,6 +10398,19 @@ public class Types
return result;
}
+ public static Set toSetOfVMAppliance(Object object) {
+ if (object == null) {
+ return null;
+ }
+ Object[] items = (Object[]) object;
+ Set result = new LinkedHashSet();
+ for(Object item: items) {
+ VMAppliance typed = toVMAppliance(item);
+ result.add(typed);
+ }
+ return result;
+ }
+
public static Set toSetOfVMGuestMetrics(Object object) {
if (object == null) {
return null;
@@ -9180,6 +10817,21 @@ public class Types
return result;
}
+ public static Map toMapOfStringVmApplianceOperation(Object object) {
+ if (object == null) {
+ return null;
+ }
+ Map map = (Map) object;
+ Map result = new HashMap();
+ Set entries = map.entrySet();
+ for(Map.Entry entry: entries) {
+ String key = toString(entry.getKey());
+ Types.VmApplianceOperation value = toVmApplianceOperation(entry.getValue());
+ result.put(key, value);
+ }
+ return result;
+ }
+
public static Map toMapOfStringVmOperations(Object object) {
if (object == null) {
return null;
@@ -9285,6 +10937,36 @@ public class Types
return result;
}
+ public static Map toMapOfDRTaskDRTaskRecord(Object object) {
+ if (object == null) {
+ return null;
+ }
+ Map map = (Map) object;
+ Map result = new HashMap();
+ Set entries = map.entrySet();
+ for(Map.Entry entry: entries) {
+ DRTask key = toDRTask(entry.getKey());
+ DRTask.Record value = toDRTaskRecord(entry.getValue());
+ result.put(key, value);
+ }
+ return result;
+ }
+
+ public static Map toMapOfGPUGroupGPUGroupRecord(Object object) {
+ if (object == null) {
+ return null;
+ }
+ Map map = (Map) object;
+ Map result = new HashMap();
+ Set entries = map.entrySet();
+ for(Map.Entry entry: entries) {
+ GPUGroup key = toGPUGroup(entry.getKey());
+ GPUGroup.Record value = toGPUGroupRecord(entry.getValue());
+ result.put(key, value);
+ }
+ return result;
+ }
+
public static Map toMapOfPBDPBDRecord(Object object) {
if (object == null) {
return null;
@@ -9300,6 +10982,36 @@ public class Types
return result;
}
+ public static Map toMapOfPCIPCIRecord(Object object) {
+ if (object == null) {
+ return null;
+ }
+ Map map = (Map) object;
+ Map result = new HashMap();
+ Set entries = map.entrySet();
+ for(Map.Entry entry: entries) {
+ PCI key = toPCI(entry.getKey());
+ PCI.Record value = toPCIRecord(entry.getValue());
+ result.put(key, value);
+ }
+ return result;
+ }
+
+ public static Map toMapOfPGPUPGPURecord(Object object) {
+ if (object == null) {
+ return null;
+ }
+ Map map = (Map) object;
+ Map result = new HashMap();
+ Set entries = map.entrySet();
+ for(Map.Entry entry: entries) {
+ PGPU key = toPGPU(entry.getKey());
+ PGPU.Record value = toPGPURecord(entry.getValue());
+ result.put(key, value);
+ }
+ return result;
+ }
+
public static Map toMapOfPIFPIFRecord(Object object) {
if (object == null) {
return null;
@@ -9390,6 +11102,21 @@ public class Types
return result;
}
+ public static Map toMapOfVDISR(Object object) {
+ if (object == null) {
+ return null;
+ }
+ Map map = (Map) object;
+ Map result = new HashMap();
+ Set entries = map.entrySet();
+ for(Map.Entry entry: entries) {
+ VDI key = toVDI(entry.getKey());
+ SR value = toSR(entry.getValue());
+ result.put(key, value);
+ }
+ return result;
+ }
+
public static Map toMapOfVDIVDIRecord(Object object) {
if (object == null) {
return null;
@@ -9405,6 +11132,36 @@ public class Types
return result;
}
+ public static Map toMapOfVGPUVGPURecord(Object object) {
+ if (object == null) {
+ return null;
+ }
+ Map map = (Map) object;
+ Map result = new HashMap();
+ Set entries = map.entrySet();
+ for(Map.Entry entry: entries) {
+ VGPU key = toVGPU(entry.getKey());
+ VGPU.Record value = toVGPURecord(entry.getValue());
+ result.put(key, value);
+ }
+ return result;
+ }
+
+ public static Map toMapOfVIFNetwork(Object object) {
+ if (object == null) {
+ return null;
+ }
+ Map map = (Map) object;
+ Map result = new HashMap();
+ Set entries = map.entrySet();
+ for(Map.Entry entry: entries) {
+ VIF key = toVIF(entry.getKey());
+ Network value = toNetwork(entry.getValue());
+ result.put(key, value);
+ }
+ return result;
+ }
+
public static Map toMapOfVIFVIFRecord(Object object) {
if (object == null) {
return null;
@@ -9525,6 +11282,21 @@ public class Types
return result;
}
+ public static Map toMapOfVMApplianceVMApplianceRecord(Object object) {
+ if (object == null) {
+ return null;
+ }
+ Map map = (Map) object;
+ Map result = new HashMap();
+ Set entries = map.entrySet();
+ for(Map.Entry entry: entries) {
+ VMAppliance key = toVMAppliance(entry.getKey());
+ VMAppliance.Record value = toVMApplianceRecord(entry.getValue());
+ result.put(key, value);
+ }
+ return result;
+ }
+
public static Map toMapOfVMGuestMetricsVMGuestMetricsRecord(Object object) {
if (object == null) {
return null;
@@ -9832,6 +11604,20 @@ public class Types
return new Bond((String) object);
}
+ public static DRTask toDRTask(Object object) {
+ if (object == null) {
+ return null;
+ }
+ return new DRTask((String) object);
+ }
+
+ public static GPUGroup toGPUGroup(Object object) {
+ if (object == null) {
+ return null;
+ }
+ return new GPUGroup((String) object);
+ }
+
public static PBD toPBD(Object object) {
if (object == null) {
return null;
@@ -9839,6 +11625,20 @@ public class Types
return new PBD((String) object);
}
+ public static PCI toPCI(Object object) {
+ if (object == null) {
+ return null;
+ }
+ return new PCI((String) object);
+ }
+
+ public static PGPU toPGPU(Object object) {
+ if (object == null) {
+ return null;
+ }
+ return new PGPU((String) object);
+ }
+
public static PIF toPIF(Object object) {
if (object == null) {
return null;
@@ -9888,6 +11688,13 @@ public class Types
return new VDI((String) object);
}
+ public static VGPU toVGPU(Object object) {
+ if (object == null) {
+ return null;
+ }
+ return new VGPU((String) object);
+ }
+
public static VIF toVIF(Object object) {
if (object == null) {
return null;
@@ -9923,6 +11730,13 @@ public class Types
return new VMPP((String) object);
}
+ public static VMAppliance toVMAppliance(Object object) {
+ if (object == null) {
+ return null;
+ }
+ return new VMAppliance((String) object);
+ }
+
public static VMGuestMetrics toVMGuestMetrics(Object object) {
if (object == null) {
return null;
@@ -10087,6 +11901,37 @@ public class Types
record.master = toPIF(map.get("master"));
record.slaves = toSetOfPIF(map.get("slaves"));
record.otherConfig = toMapOfStringString(map.get("other_config"));
+ record.primarySlave = toPIF(map.get("primary_slave"));
+ record.mode = toBondMode(map.get("mode"));
+ record.properties = toMapOfStringString(map.get("properties"));
+ record.linksUp = toLong(map.get("links_up"));
+ return record;
+ }
+
+ public static DRTask.Record toDRTaskRecord(Object object) {
+ if (object == null) {
+ return null;
+ }
+ Map map = (Map) object;
+ DRTask.Record record = new DRTask.Record();
+ record.uuid = toString(map.get("uuid"));
+ record.introducedSRs = toSetOfSR(map.get("introduced_SRs"));
+ return record;
+ }
+
+ public static GPUGroup.Record toGPUGroupRecord(Object object) {
+ if (object == null) {
+ return null;
+ }
+ Map map = (Map) object;
+ GPUGroup.Record record = new GPUGroup.Record();
+ record.uuid = toString(map.get("uuid"));
+ record.nameLabel = toString(map.get("name_label"));
+ record.nameDescription = toString(map.get("name_description"));
+ record.PGPUs = toSetOfPGPU(map.get("PGPUs"));
+ record.VGPUs = toSetOfVGPU(map.get("VGPUs"));
+ record.GPUTypes = toSetOfString(map.get("GPU_types"));
+ record.otherConfig = toMapOfStringString(map.get("other_config"));
return record;
}
@@ -10105,6 +11950,37 @@ public class Types
return record;
}
+ public static PCI.Record toPCIRecord(Object object) {
+ if (object == null) {
+ return null;
+ }
+ Map map = (Map) object;
+ PCI.Record record = new PCI.Record();
+ record.uuid = toString(map.get("uuid"));
+ record.clazzName = toString(map.get("class_name"));
+ record.vendorName = toString(map.get("vendor_name"));
+ record.deviceName = toString(map.get("device_name"));
+ record.host = toHost(map.get("host"));
+ record.pciId = toString(map.get("pci_id"));
+ record.dependencies = toSetOfPCI(map.get("dependencies"));
+ record.otherConfig = toMapOfStringString(map.get("other_config"));
+ return record;
+ }
+
+ public static PGPU.Record toPGPURecord(Object object) {
+ if (object == null) {
+ return null;
+ }
+ Map map = (Map) object;
+ PGPU.Record record = new PGPU.Record();
+ record.uuid = toString(map.get("uuid"));
+ record.PCI = toPCI(map.get("PCI"));
+ record.GPUGroup = toGPUGroup(map.get("GPU_group"));
+ record.host = toHost(map.get("host"));
+ record.otherConfig = toMapOfStringString(map.get("other_config"));
+ return record;
+ }
+
public static PIF.Record toPIFRecord(Object object) {
if (object == null) {
return null;
@@ -10135,6 +12011,10 @@ public class Types
record.disallowUnplug = toBoolean(map.get("disallow_unplug"));
record.tunnelAccessPIFOf = toSetOfTunnel(map.get("tunnel_access_PIF_of"));
record.tunnelTransportPIFOf = toSetOfTunnel(map.get("tunnel_transport_PIF_of"));
+ record.ipv6ConfigurationMode = toIpv6ConfigurationMode(map.get("ipv6_configuration_mode"));
+ record.IPv6 = toSetOfString(map.get("IPv6"));
+ record.ipv6Gateway = toString(map.get("ipv6_gateway"));
+ record.primaryAddressType = toPrimaryAddressType(map.get("primary_address_type"));
return record;
}
@@ -10205,6 +12085,7 @@ public class Types
record.smConfig = toMapOfStringString(map.get("sm_config"));
record.blobs = toMapOfStringBlob(map.get("blobs"));
record.localCacheEnabled = toBoolean(map.get("local_cache_enabled"));
+ record.introducedBy = toDRTask(map.get("introduced_by"));
return record;
}
@@ -10287,6 +12168,23 @@ public class Types
record.tags = toSetOfString(map.get("tags"));
record.allowCaching = toBoolean(map.get("allow_caching"));
record.onBoot = toOnBoot(map.get("on_boot"));
+ record.metadataOfPool = toPool(map.get("metadata_of_pool"));
+ record.metadataLatest = toBoolean(map.get("metadata_latest"));
+ return record;
+ }
+
+ public static VGPU.Record toVGPURecord(Object object) {
+ if (object == null) {
+ return null;
+ }
+ Map map = (Map) object;
+ VGPU.Record record = new VGPU.Record();
+ record.uuid = toString(map.get("uuid"));
+ record.VM = toVM(map.get("VM"));
+ record.GPUGroup = toGPUGroup(map.get("GPU_group"));
+ record.device = toString(map.get("device"));
+ record.currentlyAttached = toBoolean(map.get("currently_attached"));
+ record.otherConfig = toMapOfStringString(map.get("other_config"));
return record;
}
@@ -10314,6 +12212,9 @@ public class Types
record.qosSupportedAlgorithms = toSetOfString(map.get("qos_supported_algorithms"));
record.metrics = toVIFMetrics(map.get("metrics"));
record.MACAutogenerated = toBoolean(map.get("MAC_autogenerated"));
+ record.lockingMode = toVifLockingMode(map.get("locking_mode"));
+ record.ipv4Allowed = toSetOfString(map.get("ipv4_allowed"));
+ record.ipv6Allowed = toSetOfString(map.get("ipv6_allowed"));
return record;
}
@@ -10417,6 +12318,14 @@ public class Types
record.biosStrings = toMapOfStringString(map.get("bios_strings"));
record.protectionPolicy = toVMPP(map.get("protection_policy"));
record.isSnapshotFromVmpp = toBoolean(map.get("is_snapshot_from_vmpp"));
+ record.appliance = toVMAppliance(map.get("appliance"));
+ record.startDelay = toLong(map.get("start_delay"));
+ record.shutdownDelay = toLong(map.get("shutdown_delay"));
+ record.order = toLong(map.get("order"));
+ record.VGPUs = toSetOfVGPU(map.get("VGPUs"));
+ record.attachedPCIs = toSetOfPCI(map.get("attached_PCIs"));
+ record.suspendSR = toSR(map.get("suspend_SR"));
+ record.version = toLong(map.get("version"));
return record;
}
@@ -10449,6 +12358,21 @@ public class Types
return record;
}
+ public static VMAppliance.Record toVMApplianceRecord(Object object) {
+ if (object == null) {
+ return null;
+ }
+ Map map = (Map) object;
+ VMAppliance.Record record = new VMAppliance.Record();
+ record.uuid = toString(map.get("uuid"));
+ record.nameLabel = toString(map.get("name_label"));
+ record.nameDescription = toString(map.get("name_description"));
+ record.allowedOperations = toSetOfVmApplianceOperation(map.get("allowed_operations"));
+ record.currentOperations = toMapOfStringVmApplianceOperation(map.get("current_operations"));
+ record.VMs = toSetOfVM(map.get("VMs"));
+ return record;
+ }
+
public static VMGuestMetrics.Record toVMGuestMetricsRecord(Object object) {
if (object == null) {
return null;
@@ -10512,6 +12436,7 @@ public class Types
record.nameLabel = toString(map.get("name_label"));
record.nameDescription = toString(map.get("name_description"));
record.size = toLong(map.get("size"));
+ record._public = toBoolean(map.get("public"));
record.lastUpdated = toDate(map.get("last_updated"));
record.mimeType = toString(map.get("mime_type"));
return record;
@@ -10590,6 +12515,8 @@ public class Types
case VM_METRICS: b = toVMMetricsRecord(a); break;
case VM_GUEST_METRICS: b = toVMGuestMetricsRecord(a); break;
case VMPP: b = toVMPPRecord(a); break;
+ case VM_APPLIANCE: b = toVMApplianceRecord(a); break;
+ case DR_TASK: b = toDRTaskRecord(a); break;
case HOST: b = toHostRecord(a); break;
case HOST_CRASHDUMP: b = toHostCrashdumpRecord(a); break;
case HOST_PATCH: b = toHostPatchRecord(a); break;
@@ -10617,6 +12544,10 @@ public class Types
case MESSAGE: b = toMessageRecord(a); break;
case SECRET: b = toSecretRecord(a); break;
case TUNNEL: b = toTunnelRecord(a); break;
+ case PCI: b = toPCIRecord(a); break;
+ case PGPU: b = toPGPURecord(a); break;
+ case GPU_GROUP: b = toGPUGroupRecord(a); break;
+ case VGPU: b = toVGPURecord(a); break;
default: throw new RuntimeException("Internal error in auto-generated code whilst unmarshalling event snapshot");
}
record.snapshot = b;
@@ -10673,6 +12604,9 @@ public class Types
record.powerOnMode = toString(map.get("power_on_mode"));
record.powerOnConfig = toMapOfStringString(map.get("power_on_config"));
record.localCacheSr = toSR(map.get("local_cache_sr"));
+ record.chipsetInfo = toMapOfStringString(map.get("chipset_info"));
+ record.PCIs = toSetOfPCI(map.get("PCIs"));
+ record.PGPUs = toSetOfPGPU(map.get("PGPUs"));
return record;
}
@@ -10780,6 +12714,7 @@ public class Types
record.bridge = toString(map.get("bridge"));
record.blobs = toMapOfStringBlob(map.get("blobs"));
record.tags = toSetOfString(map.get("tags"));
+ record.defaultLockingMode = toNetworkDefaultLockingMode(map.get("default_locking_mode"));
return record;
}
@@ -10815,6 +12750,7 @@ public class Types
record.redoLogVdi = toVDI(map.get("redo_log_vdi"));
record.vswitchController = toString(map.get("vswitch_controller"));
record.restrictions = toMapOfStringString(map.get("restrictions"));
+ record.metadataVDIs = toSetOfVDI(map.get("metadata_VDIs"));
return record;
}
@@ -10857,6 +12793,7 @@ public class Types
Secret.Record record = new Secret.Record();
record.uuid = toString(map.get("uuid"));
record.value = toString(map.get("value"));
+ record.otherConfig = toMapOfStringString(map.get("other_config"));
return record;
}
@@ -10953,10 +12890,26 @@ public class Types
return Types.toBond(parseResult(task.getResult(connection)));
}
+ public static DRTask toDRTask(Task task, Connection connection) throws XenAPIException, BadServerResponse, XmlRpcException, BadAsyncResult{
+ return Types.toDRTask(parseResult(task.getResult(connection)));
+ }
+
+ public static GPUGroup toGPUGroup(Task task, Connection connection) throws XenAPIException, BadServerResponse, XmlRpcException, BadAsyncResult{
+ return Types.toGPUGroup(parseResult(task.getResult(connection)));
+ }
+
public static PBD toPBD(Task task, Connection connection) throws XenAPIException, BadServerResponse, XmlRpcException, BadAsyncResult{
return Types.toPBD(parseResult(task.getResult(connection)));
}
+ public static PCI toPCI(Task task, Connection connection) throws XenAPIException, BadServerResponse, XmlRpcException, BadAsyncResult{
+ return Types.toPCI(parseResult(task.getResult(connection)));
+ }
+
+ public static PGPU toPGPU(Task task, Connection connection) throws XenAPIException, BadServerResponse, XmlRpcException, BadAsyncResult{
+ return Types.toPGPU(parseResult(task.getResult(connection)));
+ }
+
public static PIF toPIF(Task task, Connection connection) throws XenAPIException, BadServerResponse, XmlRpcException, BadAsyncResult{
return Types.toPIF(parseResult(task.getResult(connection)));
}
@@ -10985,6 +12938,10 @@ public class Types
return Types.toVDI(parseResult(task.getResult(connection)));
}
+ public static VGPU toVGPU(Task task, Connection connection) throws XenAPIException, BadServerResponse, XmlRpcException, BadAsyncResult{
+ return Types.toVGPU(parseResult(task.getResult(connection)));
+ }
+
public static VIF toVIF(Task task, Connection connection) throws XenAPIException, BadServerResponse, XmlRpcException, BadAsyncResult{
return Types.toVIF(parseResult(task.getResult(connection)));
}
@@ -11005,6 +12962,10 @@ public class Types
return Types.toVMPP(parseResult(task.getResult(connection)));
}
+ public static VMAppliance toVMAppliance(Task task, Connection connection) throws XenAPIException, BadServerResponse, XmlRpcException, BadAsyncResult{
+ return Types.toVMAppliance(parseResult(task.getResult(connection)));
+ }
+
public static VMGuestMetrics toVMGuestMetrics(Task task, Connection connection) throws XenAPIException, BadServerResponse, XmlRpcException, BadAsyncResult{
return Types.toVMGuestMetrics(parseResult(task.getResult(connection)));
}
diff --git a/deps/XenServerJava/src/com/xensource/xenapi/User.java b/deps/XenServerJava/src/com/xensource/xenapi/User.java
index 9cf239d60ee..0d2e4fd81d8 100644
--- a/deps/XenServerJava/src/com/xensource/xenapi/User.java
+++ b/deps/XenServerJava/src/com/xensource/xenapi/User.java
@@ -1,18 +1,19 @@
-/* Copyright (c) Citrix Systems, Inc.
+/*
+ * Copyright (c) Citrix Systems, Inc.
* All rights reserved.
- *
+ *
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
- *
+ *
* 1) Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
- *
+ *
* 2) 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.
- *
+ *
* 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
@@ -27,6 +28,7 @@
* OF THE POSSIBILITY OF SUCH DAMAGE.
*/
+
package com.xensource.xenapi;
import com.xensource.xenapi.Types.BadServerResponse;
@@ -51,7 +53,7 @@ import org.apache.xmlrpc.XmlRpcException;
public class User extends XenAPIObject {
/**
- * The XenAPI reference to this object.
+ * The XenAPI reference (OpaqueRef) to this object.
*/
protected final String ref;
@@ -62,6 +64,9 @@ public class User extends XenAPIObject {
this.ref = ref;
}
+ /**
+ * @return The XenAPI reference (OpaqueRef) to this object.
+ */
public String toWireString() {
return this.ref;
}
@@ -376,4 +381,4 @@ public class User extends XenAPIObject {
return;
}
-}
+}
\ No newline at end of file
diff --git a/deps/XenServerJava/src/com/xensource/xenapi/VBD.java b/deps/XenServerJava/src/com/xensource/xenapi/VBD.java
index cb793398ee3..18cbb7b488d 100644
--- a/deps/XenServerJava/src/com/xensource/xenapi/VBD.java
+++ b/deps/XenServerJava/src/com/xensource/xenapi/VBD.java
@@ -1,18 +1,19 @@
-/* Copyright (c) Citrix Systems, Inc.
+/*
+ * Copyright (c) Citrix Systems, Inc.
* All rights reserved.
- *
+ *
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
- *
+ *
* 1) Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
- *
+ *
* 2) 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.
- *
+ *
* 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
@@ -27,6 +28,7 @@
* OF THE POSSIBILITY OF SUCH DAMAGE.
*/
+
package com.xensource.xenapi;
import com.xensource.xenapi.Types.BadServerResponse;
@@ -51,7 +53,7 @@ import org.apache.xmlrpc.XmlRpcException;
public class VBD extends XenAPIObject {
/**
- * The XenAPI reference to this object.
+ * The XenAPI reference (OpaqueRef) to this object.
*/
protected final String ref;
@@ -62,6 +64,9 @@ public class VBD extends XenAPIObject {
this.ref = ref;
}
+ /**
+ * @return The XenAPI reference (OpaqueRef) to this object.
+ */
public String toWireString() {
return this.ref;
}
@@ -1153,4 +1158,4 @@ public class VBD extends XenAPIObject {
return Types.toMapOfVBDVBDRecord(result);
}
-}
+}
\ No newline at end of file
diff --git a/deps/XenServerJava/src/com/xensource/xenapi/VBDMetrics.java b/deps/XenServerJava/src/com/xensource/xenapi/VBDMetrics.java
index 59928e9bd59..adb6bb513de 100644
--- a/deps/XenServerJava/src/com/xensource/xenapi/VBDMetrics.java
+++ b/deps/XenServerJava/src/com/xensource/xenapi/VBDMetrics.java
@@ -1,18 +1,19 @@
-/* Copyright (c) Citrix Systems, Inc.
+/*
+ * Copyright (c) Citrix Systems, Inc.
* All rights reserved.
- *
+ *
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
- *
+ *
* 1) Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
- *
+ *
* 2) 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.
- *
+ *
* 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
@@ -27,6 +28,7 @@
* OF THE POSSIBILITY OF SUCH DAMAGE.
*/
+
package com.xensource.xenapi;
import com.xensource.xenapi.Types.BadServerResponse;
@@ -51,7 +53,7 @@ import org.apache.xmlrpc.XmlRpcException;
public class VBDMetrics extends XenAPIObject {
/**
- * The XenAPI reference to this object.
+ * The XenAPI reference (OpaqueRef) to this object.
*/
protected final String ref;
@@ -62,6 +64,9 @@ public class VBDMetrics extends XenAPIObject {
this.ref = ref;
}
+ /**
+ * @return The XenAPI reference (OpaqueRef) to this object.
+ */
public String toWireString() {
return this.ref;
}
@@ -341,4 +346,4 @@ public class VBDMetrics extends XenAPIObject {
return Types.toMapOfVBDMetricsVBDMetricsRecord(result);
}
-}
+}
\ No newline at end of file
diff --git a/deps/XenServerJava/src/com/xensource/xenapi/VDI.java b/deps/XenServerJava/src/com/xensource/xenapi/VDI.java
index e4d20ebf8ba..4ea9daff1fa 100644
--- a/deps/XenServerJava/src/com/xensource/xenapi/VDI.java
+++ b/deps/XenServerJava/src/com/xensource/xenapi/VDI.java
@@ -1,18 +1,19 @@
-/* Copyright (c) Citrix Systems, Inc.
+/*
+ * Copyright (c) Citrix Systems, Inc.
* All rights reserved.
- *
+ *
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
- *
+ *
* 1) Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
- *
+ *
* 2) 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.
- *
+ *
* 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
@@ -27,6 +28,7 @@
* OF THE POSSIBILITY OF SUCH DAMAGE.
*/
+
package com.xensource.xenapi;
import com.xensource.xenapi.Types.BadServerResponse;
@@ -51,7 +53,7 @@ import org.apache.xmlrpc.XmlRpcException;
public class VDI extends XenAPIObject {
/**
- * The XenAPI reference to this object.
+ * The XenAPI reference (OpaqueRef) to this object.
*/
protected final String ref;
@@ -62,6 +64,9 @@ public class VDI extends XenAPIObject {
this.ref = ref;
}
+ /**
+ * @return The XenAPI reference (OpaqueRef) to this object.
+ */
public String toWireString() {
return this.ref;
}
@@ -123,6 +128,8 @@ public class VDI extends XenAPIObject {
print.printf("%1$20s: %2$s\n", "tags", this.tags);
print.printf("%1$20s: %2$s\n", "allowCaching", this.allowCaching);
print.printf("%1$20s: %2$s\n", "onBoot", this.onBoot);
+ print.printf("%1$20s: %2$s\n", "metadataOfPool", this.metadataOfPool);
+ print.printf("%1$20s: %2$s\n", "metadataLatest", this.metadataLatest);
return writer.toString();
}
@@ -159,6 +166,8 @@ public class VDI extends XenAPIObject {
map.put("tags", this.tags == null ? new LinkedHashSet() : this.tags);
map.put("allow_caching", this.allowCaching == null ? false : this.allowCaching);
map.put("on_boot", this.onBoot == null ? Types.OnBoot.UNRECOGNIZED : this.onBoot);
+ map.put("metadata_of_pool", this.metadataOfPool == null ? new Pool("OpaqueRef:NULL") : this.metadataOfPool);
+ map.put("metadata_latest", this.metadataLatest == null ? false : this.metadataLatest);
return map;
}
@@ -171,7 +180,7 @@ public class VDI extends XenAPIObject {
*/
public String nameLabel;
/**
- * a notes field containg human-readable description
+ * a notes field containing human-readable description
*/
public String nameDescription;
/**
@@ -227,7 +236,7 @@ public class VDI extends XenAPIObject {
*/
public String location;
/**
- *
+ *
*/
public Boolean managed;
/**
@@ -274,6 +283,14 @@ public class VDI extends XenAPIObject {
* The behaviour of this VDI on a VM boot
*/
public Types.OnBoot onBoot;
+ /**
+ * The pool whose metadata is contained in this VDI
+ */
+ public Pool metadataOfPool;
+ /**
+ * Whether this VDI contains the latest known accessible metadata for the pool
+ */
+ public Boolean metadataLatest;
}
/**
@@ -876,35 +893,37 @@ public class VDI extends XenAPIObject {
}
/**
- * Set the name/label field of the given VDI.
+ * Get the metadata_of_pool field of the given VDI.
*
- * @param label New value to set
+ * @return value of the field
*/
- public void setNameLabel(Connection c, String label) throws
+ public Pool getMetadataOfPool(Connection c) throws
BadServerResponse,
XenAPIException,
XmlRpcException {
- String method_call = "VDI.set_name_label";
+ String method_call = "VDI.get_metadata_of_pool";
String session = c.getSessionReference();
- Object[] method_params = {Marshalling.toXMLRPC(session), Marshalling.toXMLRPC(this.ref), Marshalling.toXMLRPC(label)};
+ Object[] method_params = {Marshalling.toXMLRPC(session), Marshalling.toXMLRPC(this.ref)};
Map response = c.dispatch(method_call, method_params);
- return;
+ Object result = response.get("Value");
+ return Types.toPool(result);
}
/**
- * Set the name/description field of the given VDI.
+ * Get the metadata_latest field of the given VDI.
*
- * @param description New value to set
+ * @return value of the field
*/
- public void setNameDescription(Connection c, String description) throws
+ public Boolean getMetadataLatest(Connection c) throws
BadServerResponse,
XenAPIException,
XmlRpcException {
- String method_call = "VDI.set_name_description";
+ String method_call = "VDI.get_metadata_latest";
String session = c.getSessionReference();
- Object[] method_params = {Marshalling.toXMLRPC(session), Marshalling.toXMLRPC(this.ref), Marshalling.toXMLRPC(description)};
+ Object[] method_params = {Marshalling.toXMLRPC(session), Marshalling.toXMLRPC(this.ref)};
Map response = c.dispatch(method_call, method_params);
- return;
+ Object result = response.get("Value");
+ return Types.toBoolean(result);
}
/**
@@ -1380,16 +1399,23 @@ public class VDI extends XenAPIObject {
* @param location location information
* @param xenstoreData Data to insert into xenstore
* @param smConfig Storage-specific config
+ * @param managed Storage-specific config
+ * @param virtualSize Storage-specific config
+ * @param physicalUtilisation Storage-specific config
+ * @param metadataOfPool Storage-specific config
+ * @param isASnapshot Storage-specific config
+ * @param snapshotTime Storage-specific config
+ * @param snapshotOf Storage-specific config
* @return Task
*/
- public static Task introduceAsync(Connection c, String uuid, String nameLabel, String nameDescription, SR SR, Types.VdiType type, Boolean sharable, Boolean readOnly, Map otherConfig, String location, Map xenstoreData, Map smConfig) throws
+ public static Task introduceAsync(Connection c, String uuid, String nameLabel, String nameDescription, SR SR, Types.VdiType type, Boolean sharable, Boolean readOnly, Map otherConfig, String location, Map xenstoreData, Map smConfig, Boolean managed, Long virtualSize, Long physicalUtilisation, Pool metadataOfPool, Boolean isASnapshot, Date snapshotTime, VDI snapshotOf) throws
BadServerResponse,
XenAPIException,
XmlRpcException,
Types.SrOperationNotSupported {
String method_call = "Async.VDI.introduce";
String session = c.getSessionReference();
- Object[] method_params = {Marshalling.toXMLRPC(session), Marshalling.toXMLRPC(uuid), Marshalling.toXMLRPC(nameLabel), Marshalling.toXMLRPC(nameDescription), Marshalling.toXMLRPC(SR), Marshalling.toXMLRPC(type), Marshalling.toXMLRPC(sharable), Marshalling.toXMLRPC(readOnly), Marshalling.toXMLRPC(otherConfig), Marshalling.toXMLRPC(location), Marshalling.toXMLRPC(xenstoreData), Marshalling.toXMLRPC(smConfig)};
+ Object[] method_params = {Marshalling.toXMLRPC(session), Marshalling.toXMLRPC(uuid), Marshalling.toXMLRPC(nameLabel), Marshalling.toXMLRPC(nameDescription), Marshalling.toXMLRPC(SR), Marshalling.toXMLRPC(type), Marshalling.toXMLRPC(sharable), Marshalling.toXMLRPC(readOnly), Marshalling.toXMLRPC(otherConfig), Marshalling.toXMLRPC(location), Marshalling.toXMLRPC(xenstoreData), Marshalling.toXMLRPC(smConfig), Marshalling.toXMLRPC(managed), Marshalling.toXMLRPC(virtualSize), Marshalling.toXMLRPC(physicalUtilisation), Marshalling.toXMLRPC(metadataOfPool), Marshalling.toXMLRPC(isASnapshot), Marshalling.toXMLRPC(snapshotTime), Marshalling.toXMLRPC(snapshotOf)};
Map response = c.dispatch(method_call, method_params);
Object result = response.get("Value");
return Types.toTask(result);
@@ -1409,16 +1435,23 @@ public class VDI extends XenAPIObject {
* @param location location information
* @param xenstoreData Data to insert into xenstore
* @param smConfig Storage-specific config
+ * @param managed Storage-specific config
+ * @param virtualSize Storage-specific config
+ * @param physicalUtilisation Storage-specific config
+ * @param metadataOfPool Storage-specific config
+ * @param isASnapshot Storage-specific config
+ * @param snapshotTime Storage-specific config
+ * @param snapshotOf Storage-specific config
* @return The ref of the newly created VDI record.
*/
- public static VDI introduce(Connection c, String uuid, String nameLabel, String nameDescription, SR SR, Types.VdiType type, Boolean sharable, Boolean readOnly, Map otherConfig, String location, Map xenstoreData, Map smConfig) throws
+ public static VDI introduce(Connection c, String uuid, String nameLabel, String nameDescription, SR SR, Types.VdiType type, Boolean sharable, Boolean readOnly, Map otherConfig, String location, Map xenstoreData, Map smConfig, Boolean managed, Long virtualSize, Long physicalUtilisation, Pool metadataOfPool, Boolean isASnapshot, Date snapshotTime, VDI snapshotOf) throws
BadServerResponse,
XenAPIException,
XmlRpcException,
Types.SrOperationNotSupported {
String method_call = "VDI.introduce";
String session = c.getSessionReference();
- Object[] method_params = {Marshalling.toXMLRPC(session), Marshalling.toXMLRPC(uuid), Marshalling.toXMLRPC(nameLabel), Marshalling.toXMLRPC(nameDescription), Marshalling.toXMLRPC(SR), Marshalling.toXMLRPC(type), Marshalling.toXMLRPC(sharable), Marshalling.toXMLRPC(readOnly), Marshalling.toXMLRPC(otherConfig), Marshalling.toXMLRPC(location), Marshalling.toXMLRPC(xenstoreData), Marshalling.toXMLRPC(smConfig)};
+ Object[] method_params = {Marshalling.toXMLRPC(session), Marshalling.toXMLRPC(uuid), Marshalling.toXMLRPC(nameLabel), Marshalling.toXMLRPC(nameDescription), Marshalling.toXMLRPC(SR), Marshalling.toXMLRPC(type), Marshalling.toXMLRPC(sharable), Marshalling.toXMLRPC(readOnly), Marshalling.toXMLRPC(otherConfig), Marshalling.toXMLRPC(location), Marshalling.toXMLRPC(xenstoreData), Marshalling.toXMLRPC(smConfig), Marshalling.toXMLRPC(managed), Marshalling.toXMLRPC(virtualSize), Marshalling.toXMLRPC(physicalUtilisation), Marshalling.toXMLRPC(metadataOfPool), Marshalling.toXMLRPC(isASnapshot), Marshalling.toXMLRPC(snapshotTime), Marshalling.toXMLRPC(snapshotOf)};
Map response = c.dispatch(method_call, method_params);
Object result = response.get("Value");
return Types.toVDI(result);
@@ -1438,15 +1471,22 @@ public class VDI extends XenAPIObject {
* @param location location information
* @param xenstoreData Data to insert into xenstore
* @param smConfig Storage-specific config
+ * @param managed Storage-specific config
+ * @param virtualSize Storage-specific config
+ * @param physicalUtilisation Storage-specific config
+ * @param metadataOfPool Storage-specific config
+ * @param isASnapshot Storage-specific config
+ * @param snapshotTime Storage-specific config
+ * @param snapshotOf Storage-specific config
* @return Task
*/
- public static Task dbIntroduceAsync(Connection c, String uuid, String nameLabel, String nameDescription, SR SR, Types.VdiType type, Boolean sharable, Boolean readOnly, Map otherConfig, String location, Map xenstoreData, Map smConfig) throws
+ public static Task dbIntroduceAsync(Connection c, String uuid, String nameLabel, String nameDescription, SR SR, Types.VdiType type, Boolean sharable, Boolean readOnly, Map otherConfig, String location, Map xenstoreData, Map smConfig, Boolean managed, Long virtualSize, Long physicalUtilisation, Pool metadataOfPool, Boolean isASnapshot, Date snapshotTime, VDI snapshotOf) throws
BadServerResponse,
XenAPIException,
XmlRpcException {
String method_call = "Async.VDI.db_introduce";
String session = c.getSessionReference();
- Object[] method_params = {Marshalling.toXMLRPC(session), Marshalling.toXMLRPC(uuid), Marshalling.toXMLRPC(nameLabel), Marshalling.toXMLRPC(nameDescription), Marshalling.toXMLRPC(SR), Marshalling.toXMLRPC(type), Marshalling.toXMLRPC(sharable), Marshalling.toXMLRPC(readOnly), Marshalling.toXMLRPC(otherConfig), Marshalling.toXMLRPC(location), Marshalling.toXMLRPC(xenstoreData), Marshalling.toXMLRPC(smConfig)};
+ Object[] method_params = {Marshalling.toXMLRPC(session), Marshalling.toXMLRPC(uuid), Marshalling.toXMLRPC(nameLabel), Marshalling.toXMLRPC(nameDescription), Marshalling.toXMLRPC(SR), Marshalling.toXMLRPC(type), Marshalling.toXMLRPC(sharable), Marshalling.toXMLRPC(readOnly), Marshalling.toXMLRPC(otherConfig), Marshalling.toXMLRPC(location), Marshalling.toXMLRPC(xenstoreData), Marshalling.toXMLRPC(smConfig), Marshalling.toXMLRPC(managed), Marshalling.toXMLRPC(virtualSize), Marshalling.toXMLRPC(physicalUtilisation), Marshalling.toXMLRPC(metadataOfPool), Marshalling.toXMLRPC(isASnapshot), Marshalling.toXMLRPC(snapshotTime), Marshalling.toXMLRPC(snapshotOf)};
Map response = c.dispatch(method_call, method_params);
Object result = response.get("Value");
return Types.toTask(result);
@@ -1466,15 +1506,22 @@ public class VDI extends XenAPIObject {
* @param location location information
* @param xenstoreData Data to insert into xenstore
* @param smConfig Storage-specific config
+ * @param managed Storage-specific config
+ * @param virtualSize Storage-specific config
+ * @param physicalUtilisation Storage-specific config
+ * @param metadataOfPool Storage-specific config
+ * @param isASnapshot Storage-specific config
+ * @param snapshotTime Storage-specific config
+ * @param snapshotOf Storage-specific config
* @return The ref of the newly created VDI record.
*/
- public static VDI dbIntroduce(Connection c, String uuid, String nameLabel, String nameDescription, SR SR, Types.VdiType type, Boolean sharable, Boolean readOnly, Map otherConfig, String location, Map xenstoreData, Map smConfig) throws
+ public static VDI dbIntroduce(Connection c, String uuid, String nameLabel, String nameDescription, SR SR, Types.VdiType type, Boolean sharable, Boolean readOnly, Map otherConfig, String location, Map xenstoreData, Map smConfig, Boolean managed, Long virtualSize, Long physicalUtilisation, Pool metadataOfPool, Boolean isASnapshot, Date snapshotTime, VDI snapshotOf) throws
BadServerResponse,
XenAPIException,
XmlRpcException {
String method_call = "VDI.db_introduce";
String session = c.getSessionReference();
- Object[] method_params = {Marshalling.toXMLRPC(session), Marshalling.toXMLRPC(uuid), Marshalling.toXMLRPC(nameLabel), Marshalling.toXMLRPC(nameDescription), Marshalling.toXMLRPC(SR), Marshalling.toXMLRPC(type), Marshalling.toXMLRPC(sharable), Marshalling.toXMLRPC(readOnly), Marshalling.toXMLRPC(otherConfig), Marshalling.toXMLRPC(location), Marshalling.toXMLRPC(xenstoreData), Marshalling.toXMLRPC(smConfig)};
+ Object[] method_params = {Marshalling.toXMLRPC(session), Marshalling.toXMLRPC(uuid), Marshalling.toXMLRPC(nameLabel), Marshalling.toXMLRPC(nameDescription), Marshalling.toXMLRPC(SR), Marshalling.toXMLRPC(type), Marshalling.toXMLRPC(sharable), Marshalling.toXMLRPC(readOnly), Marshalling.toXMLRPC(otherConfig), Marshalling.toXMLRPC(location), Marshalling.toXMLRPC(xenstoreData), Marshalling.toXMLRPC(smConfig), Marshalling.toXMLRPC(managed), Marshalling.toXMLRPC(virtualSize), Marshalling.toXMLRPC(physicalUtilisation), Marshalling.toXMLRPC(metadataOfPool), Marshalling.toXMLRPC(isASnapshot), Marshalling.toXMLRPC(snapshotTime), Marshalling.toXMLRPC(snapshotOf)};
Map response = c.dispatch(method_call, method_params);
Object result = response.get("Value");
return Types.toVDI(result);
@@ -1710,6 +1757,138 @@ public class VDI extends XenAPIObject {
return;
}
+ /**
+ * Sets whether this VDI is a snapshot
+ *
+ * @param value The new value indicating whether this VDI is a snapshot
+ */
+ public void setIsASnapshot(Connection c, Boolean value) throws
+ BadServerResponse,
+ XenAPIException,
+ XmlRpcException {
+ String method_call = "VDI.set_is_a_snapshot";
+ String session = c.getSessionReference();
+ Object[] method_params = {Marshalling.toXMLRPC(session), Marshalling.toXMLRPC(this.ref), Marshalling.toXMLRPC(value)};
+ Map response = c.dispatch(method_call, method_params);
+ return;
+ }
+
+ /**
+ * Sets the VDI of which this VDI is a snapshot
+ *
+ * @param value The VDI of which this VDI is a snapshot
+ */
+ public void setSnapshotOf(Connection c, VDI value) throws
+ BadServerResponse,
+ XenAPIException,
+ XmlRpcException {
+ String method_call = "VDI.set_snapshot_of";
+ String session = c.getSessionReference();
+ Object[] method_params = {Marshalling.toXMLRPC(session), Marshalling.toXMLRPC(this.ref), Marshalling.toXMLRPC(value)};
+ Map response = c.dispatch(method_call, method_params);
+ return;
+ }
+
+ /**
+ * Sets the snapshot time of this VDI.
+ *
+ * @param value The snapshot time of this VDI.
+ */
+ public void setSnapshotTime(Connection c, Date value) throws
+ BadServerResponse,
+ XenAPIException,
+ XmlRpcException {
+ String method_call = "VDI.set_snapshot_time";
+ String session = c.getSessionReference();
+ Object[] method_params = {Marshalling.toXMLRPC(session), Marshalling.toXMLRPC(this.ref), Marshalling.toXMLRPC(value)};
+ Map response = c.dispatch(method_call, method_params);
+ return;
+ }
+
+ /**
+ * Records the pool whose metadata is contained by this VDI.
+ *
+ * @param value The pool whose metadata is contained by this VDI
+ */
+ public void setMetadataOfPool(Connection c, Pool value) throws
+ BadServerResponse,
+ XenAPIException,
+ XmlRpcException {
+ String method_call = "VDI.set_metadata_of_pool";
+ String session = c.getSessionReference();
+ Object[] method_params = {Marshalling.toXMLRPC(session), Marshalling.toXMLRPC(this.ref), Marshalling.toXMLRPC(value)};
+ Map response = c.dispatch(method_call, method_params);
+ return;
+ }
+
+ /**
+ * Set the name label of the VDI. This can only happen when then its SR is currently attached.
+ *
+ * @param value The name lable for the VDI
+ * @return Task
+ */
+ public Task setNameLabelAsync(Connection c, String value) throws
+ BadServerResponse,
+ XenAPIException,
+ XmlRpcException {
+ String method_call = "Async.VDI.set_name_label";
+ String session = c.getSessionReference();
+ Object[] method_params = {Marshalling.toXMLRPC(session), Marshalling.toXMLRPC(this.ref), Marshalling.toXMLRPC(value)};
+ Map response = c.dispatch(method_call, method_params);
+ Object result = response.get("Value");
+ return Types.toTask(result);
+ }
+
+ /**
+ * Set the name label of the VDI. This can only happen when then its SR is currently attached.
+ *
+ * @param value The name lable for the VDI
+ */
+ public void setNameLabel(Connection c, String value) throws
+ BadServerResponse,
+ XenAPIException,
+ XmlRpcException {
+ String method_call = "VDI.set_name_label";
+ String session = c.getSessionReference();
+ Object[] method_params = {Marshalling.toXMLRPC(session), Marshalling.toXMLRPC(this.ref), Marshalling.toXMLRPC(value)};
+ Map response = c.dispatch(method_call, method_params);
+ return;
+ }
+
+ /**
+ * Set the name description of the VDI. This can only happen when its SR is currently attached.
+ *
+ * @param value The name description for the VDI
+ * @return Task
+ */
+ public Task setNameDescriptionAsync(Connection c, String value) throws
+ BadServerResponse,
+ XenAPIException,
+ XmlRpcException {
+ String method_call = "Async.VDI.set_name_description";
+ String session = c.getSessionReference();
+ Object[] method_params = {Marshalling.toXMLRPC(session), Marshalling.toXMLRPC(this.ref), Marshalling.toXMLRPC(value)};
+ Map response = c.dispatch(method_call, method_params);
+ Object result = response.get("Value");
+ return Types.toTask(result);
+ }
+
+ /**
+ * Set the name description of the VDI. This can only happen when its SR is currently attached.
+ *
+ * @param value The name description for the VDI
+ */
+ public void setNameDescription(Connection c, String value) throws
+ BadServerResponse,
+ XenAPIException,
+ XmlRpcException {
+ String method_call = "VDI.set_name_description";
+ String session = c.getSessionReference();
+ Object[] method_params = {Marshalling.toXMLRPC(session), Marshalling.toXMLRPC(this.ref), Marshalling.toXMLRPC(value)};
+ Map response = c.dispatch(method_call, method_params);
+ return;
+ }
+
/**
* Set the value of the on_boot parameter. This value can only be changed when the VDI is not attached to a running VM.
*
@@ -1778,6 +1957,112 @@ public class VDI extends XenAPIObject {
return;
}
+ /**
+ * Load the metadata found on the supplied VDI and return a session reference which can be used in XenAPI calls to query its contents.
+ *
+ * @return Task
+ */
+ public Task openDatabaseAsync(Connection c) throws
+ BadServerResponse,
+ XenAPIException,
+ XmlRpcException {
+ String method_call = "Async.VDI.open_database";
+ String session = c.getSessionReference();
+ Object[] method_params = {Marshalling.toXMLRPC(session), Marshalling.toXMLRPC(this.ref)};
+ Map response = c.dispatch(method_call, method_params);
+ Object result = response.get("Value");
+ return Types.toTask(result);
+ }
+
+ /**
+ * Load the metadata found on the supplied VDI and return a session reference which can be used in XenAPI calls to query its contents.
+ *
+ * @return A session which can be used to query the database
+ */
+ public Session openDatabase(Connection c) throws
+ BadServerResponse,
+ XenAPIException,
+ XmlRpcException {
+ String method_call = "VDI.open_database";
+ String session = c.getSessionReference();
+ Object[] method_params = {Marshalling.toXMLRPC(session), Marshalling.toXMLRPC(this.ref)};
+ Map response = c.dispatch(method_call, method_params);
+ Object result = response.get("Value");
+ return Types.toSession(result);
+ }
+
+ /**
+ * Check the VDI cache for the pool UUID of the database on this VDI.
+ *
+ * @return Task
+ */
+ public Task readDatabasePoolUuidAsync(Connection c) throws
+ BadServerResponse,
+ XenAPIException,
+ XmlRpcException {
+ String method_call = "Async.VDI.read_database_pool_uuid";
+ String session = c.getSessionReference();
+ Object[] method_params = {Marshalling.toXMLRPC(session), Marshalling.toXMLRPC(this.ref)};
+ Map response = c.dispatch(method_call, method_params);
+ Object result = response.get("Value");
+ return Types.toTask(result);
+ }
+
+ /**
+ * Check the VDI cache for the pool UUID of the database on this VDI.
+ *
+ * @return The cached pool UUID of the database on the VDI.
+ */
+ public String readDatabasePoolUuid(Connection c) throws
+ BadServerResponse,
+ XenAPIException,
+ XmlRpcException {
+ String method_call = "VDI.read_database_pool_uuid";
+ String session = c.getSessionReference();
+ Object[] method_params = {Marshalling.toXMLRPC(session), Marshalling.toXMLRPC(this.ref)};
+ Map response = c.dispatch(method_call, method_params);
+ Object result = response.get("Value");
+ return Types.toString(result);
+ }
+
+ /**
+ * Migrate a VDI, which may be attached to a running guest, to a different SR. The destination SR must be visible to the guest.
+ *
+ * @param sr The destination SR
+ * @param options Other parameters
+ * @return Task
+ */
+ public Task poolMigrateAsync(Connection c, SR sr, Map options) throws
+ BadServerResponse,
+ XenAPIException,
+ XmlRpcException {
+ String method_call = "Async.VDI.pool_migrate";
+ String session = c.getSessionReference();
+ Object[] method_params = {Marshalling.toXMLRPC(session), Marshalling.toXMLRPC(this.ref), Marshalling.toXMLRPC(sr), Marshalling.toXMLRPC(options)};
+ Map response = c.dispatch(method_call, method_params);
+ Object result = response.get("Value");
+ return Types.toTask(result);
+ }
+
+ /**
+ * Migrate a VDI, which may be attached to a running guest, to a different SR. The destination SR must be visible to the guest.
+ *
+ * @param sr The destination SR
+ * @param options Other parameters
+ * @return The new reference of the migrated VDI.
+ */
+ public VDI poolMigrate(Connection c, SR sr, Map options) throws
+ BadServerResponse,
+ XenAPIException,
+ XmlRpcException {
+ String method_call = "VDI.pool_migrate";
+ String session = c.getSessionReference();
+ Object[] method_params = {Marshalling.toXMLRPC(session), Marshalling.toXMLRPC(this.ref), Marshalling.toXMLRPC(sr), Marshalling.toXMLRPC(options)};
+ Map response = c.dispatch(method_call, method_params);
+ Object result = response.get("Value");
+ return Types.toVDI(result);
+ }
+
/**
* Return a list of all the VDIs known to the system.
*
@@ -1812,4 +2097,4 @@ public class VDI extends XenAPIObject {
return Types.toMapOfVDIVDIRecord(result);
}
-}
+}
\ No newline at end of file
diff --git a/deps/XenServerJava/src/com/xensource/xenapi/VGPU.java b/deps/XenServerJava/src/com/xensource/xenapi/VGPU.java
new file mode 100644
index 00000000000..075ab54757c
--- /dev/null
+++ b/deps/XenServerJava/src/com/xensource/xenapi/VGPU.java
@@ -0,0 +1,446 @@
+/*
+ * Copyright (c) Citrix Systems, Inc.
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * 1) Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ *
+ * 2) 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.
+ *
+ * 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 THE
+ * COPYRIGHT HOLDER 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.
+ */
+
+
+package com.xensource.xenapi;
+
+import com.xensource.xenapi.Types.BadServerResponse;
+import com.xensource.xenapi.Types.VersionException;
+import com.xensource.xenapi.Types.XenAPIException;
+
+import java.io.PrintWriter;
+import java.io.StringWriter;
+import java.util.Date;
+import java.util.HashMap;
+import java.util.LinkedHashSet;
+import java.util.Map;
+import java.util.Set;
+
+import org.apache.xmlrpc.XmlRpcException;
+
+/**
+ * A virtual GPU (vGPU)
+ *
+ * @author Citrix Systems, Inc.
+ */
+public class VGPU extends XenAPIObject {
+
+ /**
+ * The XenAPI reference (OpaqueRef) to this object.
+ */
+ protected final String ref;
+
+ /**
+ * For internal use only.
+ */
+ VGPU(String ref) {
+ this.ref = ref;
+ }
+
+ /**
+ * @return The XenAPI reference (OpaqueRef) to this object.
+ */
+ public String toWireString() {
+ return this.ref;
+ }
+
+ /**
+ * If obj is a VGPU, compares XenAPI references for equality.
+ */
+ @Override
+ public boolean equals(Object obj)
+ {
+ if (obj != null && obj instanceof VGPU)
+ {
+ VGPU other = (VGPU) obj;
+ return other.ref.equals(this.ref);
+ } else
+ {
+ return false;
+ }
+ }
+
+ @Override
+ public int hashCode()
+ {
+ return ref.hashCode();
+ }
+
+ /**
+ * Represents all the fields in a VGPU
+ */
+ public static class Record implements Types.Record {
+ public String toString() {
+ StringWriter writer = new StringWriter();
+ PrintWriter print = new PrintWriter(writer);
+ print.printf("%1$20s: %2$s\n", "uuid", this.uuid);
+ print.printf("%1$20s: %2$s\n", "VM", this.VM);
+ print.printf("%1$20s: %2$s\n", "GPUGroup", this.GPUGroup);
+ print.printf("%1$20s: %2$s\n", "device", this.device);
+ print.printf("%1$20s: %2$s\n", "currentlyAttached", this.currentlyAttached);
+ print.printf("%1$20s: %2$s\n", "otherConfig", this.otherConfig);
+ return writer.toString();
+ }
+
+ /**
+ * Convert a VGPU.Record to a Map
+ */
+ public Map toMap() {
+ Map map = new HashMap();
+ map.put("uuid", this.uuid == null ? "" : this.uuid);
+ map.put("VM", this.VM == null ? new VM("OpaqueRef:NULL") : this.VM);
+ map.put("GPU_group", this.GPUGroup == null ? new GPUGroup("OpaqueRef:NULL") : this.GPUGroup);
+ map.put("device", this.device == null ? "" : this.device);
+ map.put("currently_attached", this.currentlyAttached == null ? false : this.currentlyAttached);
+ map.put("other_config", this.otherConfig == null ? new HashMap() : this.otherConfig);
+ return map;
+ }
+
+ /**
+ * Unique identifier/object reference
+ */
+ public String uuid;
+ /**
+ * VM that owns the vGPU
+ */
+ public VM VM;
+ /**
+ * GPU group used by the vGPU
+ */
+ public GPUGroup GPUGroup;
+ /**
+ * Order in which the devices are plugged into the VM
+ */
+ public String device;
+ /**
+ * Reflects whether the virtual device is currently connected to a physical device
+ */
+ public Boolean currentlyAttached;
+ /**
+ * Additional configuration
+ */
+ public Map otherConfig;
+ }
+
+ /**
+ * Get a record containing the current state of the given VGPU.
+ *
+ * @return all fields from the object
+ */
+ public VGPU.Record getRecord(Connection c) throws
+ BadServerResponse,
+ XenAPIException,
+ XmlRpcException {
+ String method_call = "VGPU.get_record";
+ String session = c.getSessionReference();
+ Object[] method_params = {Marshalling.toXMLRPC(session), Marshalling.toXMLRPC(this.ref)};
+ Map response = c.dispatch(method_call, method_params);
+ Object result = response.get("Value");
+ return Types.toVGPURecord(result);
+ }
+
+ /**
+ * Get a reference to the VGPU instance with the specified UUID.
+ *
+ * @param uuid UUID of object to return
+ * @return reference to the object
+ */
+ public static VGPU getByUuid(Connection c, String uuid) throws
+ BadServerResponse,
+ XenAPIException,
+ XmlRpcException {
+ String method_call = "VGPU.get_by_uuid";
+ String session = c.getSessionReference();
+ Object[] method_params = {Marshalling.toXMLRPC(session), Marshalling.toXMLRPC(uuid)};
+ Map response = c.dispatch(method_call, method_params);
+ Object result = response.get("Value");
+ return Types.toVGPU(result);
+ }
+
+ /**
+ * Get the uuid field of the given VGPU.
+ *
+ * @return value of the field
+ */
+ public String getUuid(Connection c) throws
+ BadServerResponse,
+ XenAPIException,
+ XmlRpcException {
+ String method_call = "VGPU.get_uuid";
+ String session = c.getSessionReference();
+ Object[] method_params = {Marshalling.toXMLRPC(session), Marshalling.toXMLRPC(this.ref)};
+ Map response = c.dispatch(method_call, method_params);
+ Object result = response.get("Value");
+ return Types.toString(result);
+ }
+
+ /**
+ * Get the VM field of the given VGPU.
+ *
+ * @return value of the field
+ */
+ public VM getVM(Connection c) throws
+ BadServerResponse,
+ XenAPIException,
+ XmlRpcException {
+ String method_call = "VGPU.get_VM";
+ String session = c.getSessionReference();
+ Object[] method_params = {Marshalling.toXMLRPC(session), Marshalling.toXMLRPC(this.ref)};
+ Map response = c.dispatch(method_call, method_params);
+ Object result = response.get("Value");
+ return Types.toVM(result);
+ }
+
+ /**
+ * Get the GPU_group field of the given VGPU.
+ *
+ * @return value of the field
+ */
+ public GPUGroup getGPUGroup(Connection c) throws
+ BadServerResponse,
+ XenAPIException,
+ XmlRpcException {
+ String method_call = "VGPU.get_GPU_group";
+ String session = c.getSessionReference();
+ Object[] method_params = {Marshalling.toXMLRPC(session), Marshalling.toXMLRPC(this.ref)};
+ Map response = c.dispatch(method_call, method_params);
+ Object result = response.get("Value");
+ return Types.toGPUGroup(result);
+ }
+
+ /**
+ * Get the device field of the given VGPU.
+ *
+ * @return value of the field
+ */
+ public String getDevice(Connection c) throws
+ BadServerResponse,
+ XenAPIException,
+ XmlRpcException {
+ String method_call = "VGPU.get_device";
+ String session = c.getSessionReference();
+ Object[] method_params = {Marshalling.toXMLRPC(session), Marshalling.toXMLRPC(this.ref)};
+ Map response = c.dispatch(method_call, method_params);
+ Object result = response.get("Value");
+ return Types.toString(result);
+ }
+
+ /**
+ * Get the currently_attached field of the given VGPU.
+ *
+ * @return value of the field
+ */
+ public Boolean getCurrentlyAttached(Connection c) throws
+ BadServerResponse,
+ XenAPIException,
+ XmlRpcException {
+ String method_call = "VGPU.get_currently_attached";
+ String session = c.getSessionReference();
+ Object[] method_params = {Marshalling.toXMLRPC(session), Marshalling.toXMLRPC(this.ref)};
+ Map response = c.dispatch(method_call, method_params);
+ Object result = response.get("Value");
+ return Types.toBoolean(result);
+ }
+
+ /**
+ * Get the other_config field of the given VGPU.
+ *
+ * @return value of the field
+ */
+ public Map getOtherConfig(Connection c) throws
+ BadServerResponse,
+ XenAPIException,
+ XmlRpcException {
+ String method_call = "VGPU.get_other_config";
+ String session = c.getSessionReference();
+ Object[] method_params = {Marshalling.toXMLRPC(session), Marshalling.toXMLRPC(this.ref)};
+ Map response = c.dispatch(method_call, method_params);
+ Object result = response.get("Value");
+ return Types.toMapOfStringString(result);
+ }
+
+ /**
+ * Set the other_config field of the given VGPU.
+ *
+ * @param otherConfig New value to set
+ */
+ public void setOtherConfig(Connection c, Map otherConfig) throws
+ BadServerResponse,
+ XenAPIException,
+ XmlRpcException {
+ String method_call = "VGPU.set_other_config";
+ String session = c.getSessionReference();
+ Object[] method_params = {Marshalling.toXMLRPC(session), Marshalling.toXMLRPC(this.ref), Marshalling.toXMLRPC(otherConfig)};
+ Map response = c.dispatch(method_call, method_params);
+ return;
+ }
+
+ /**
+ * Add the given key-value pair to the other_config field of the given VGPU.
+ *
+ * @param key Key to add
+ * @param value Value to add
+ */
+ public void addToOtherConfig(Connection c, String key, String value) throws
+ BadServerResponse,
+ XenAPIException,
+ XmlRpcException {
+ String method_call = "VGPU.add_to_other_config";
+ String session = c.getSessionReference();
+ Object[] method_params = {Marshalling.toXMLRPC(session), Marshalling.toXMLRPC(this.ref), Marshalling.toXMLRPC(key), Marshalling.toXMLRPC(value)};
+ Map response = c.dispatch(method_call, method_params);
+ return;
+ }
+
+ /**
+ * Remove the given key and its corresponding value from the other_config field of the given VGPU. If the key is not in that Map, then do nothing.
+ *
+ * @param key Key to remove
+ */
+ public void removeFromOtherConfig(Connection c, String key) throws
+ BadServerResponse,
+ XenAPIException,
+ XmlRpcException {
+ String method_call = "VGPU.remove_from_other_config";
+ String session = c.getSessionReference();
+ Object[] method_params = {Marshalling.toXMLRPC(session), Marshalling.toXMLRPC(this.ref), Marshalling.toXMLRPC(key)};
+ Map response = c.dispatch(method_call, method_params);
+ return;
+ }
+
+ /**
+ *
+ *
+ * @param VM
+ * @param GPUGroup
+ * @param device
+ * @param otherConfig
+ * @return Task
+ */
+ public static Task createAsync(Connection c, VM VM, GPUGroup GPUGroup, String device, Map otherConfig) throws
+ BadServerResponse,
+ XenAPIException,
+ XmlRpcException {
+ String method_call = "Async.VGPU.create";
+ String session = c.getSessionReference();
+ Object[] method_params = {Marshalling.toXMLRPC(session), Marshalling.toXMLRPC(VM), Marshalling.toXMLRPC(GPUGroup), Marshalling.toXMLRPC(device), Marshalling.toXMLRPC(otherConfig)};
+ Map response = c.dispatch(method_call, method_params);
+ Object result = response.get("Value");
+ return Types.toTask(result);
+ }
+
+ /**
+ *
+ *
+ * @param VM
+ * @param GPUGroup
+ * @param device
+ * @param otherConfig
+ * @return reference to the newly created object
+ */
+ public static VGPU create(Connection c, VM VM, GPUGroup GPUGroup, String device, Map otherConfig) throws
+ BadServerResponse,
+ XenAPIException,
+ XmlRpcException {
+ String method_call = "VGPU.create";
+ String session = c.getSessionReference();
+ Object[] method_params = {Marshalling.toXMLRPC(session), Marshalling.toXMLRPC(VM), Marshalling.toXMLRPC(GPUGroup), Marshalling.toXMLRPC(device), Marshalling.toXMLRPC(otherConfig)};
+ Map response = c.dispatch(method_call, method_params);
+ Object result = response.get("Value");
+ return Types.toVGPU(result);
+ }
+
+ /**
+ *
+ *
+ * @return Task
+ */
+ public Task destroyAsync(Connection c) throws
+ BadServerResponse,
+ XenAPIException,
+ XmlRpcException {
+ String method_call = "Async.VGPU.destroy";
+ String session = c.getSessionReference();
+ Object[] method_params = {Marshalling.toXMLRPC(session), Marshalling.toXMLRPC(this.ref)};
+ Map response = c.dispatch(method_call, method_params);
+ Object result = response.get("Value");
+ return Types.toTask(result);
+ }
+
+ /**
+ *
+ *
+ */
+ public void destroy(Connection c) throws
+ BadServerResponse,
+ XenAPIException,
+ XmlRpcException {
+ String method_call = "VGPU.destroy";
+ String session = c.getSessionReference();
+ Object[] method_params = {Marshalling.toXMLRPC(session), Marshalling.toXMLRPC(this.ref)};
+ Map response = c.dispatch(method_call, method_params);
+ return;
+ }
+
+ /**
+ * Return a list of all the VGPUs known to the system.
+ *
+ * @return references to all objects
+ */
+ public static Set getAll(Connection c) throws
+ BadServerResponse,
+ XenAPIException,
+ XmlRpcException {
+ String method_call = "VGPU.get_all";
+ String session = c.getSessionReference();
+ Object[] method_params = {Marshalling.toXMLRPC(session)};
+ Map response = c.dispatch(method_call, method_params);
+ Object result = response.get("Value");
+ return Types.toSetOfVGPU(result);
+ }
+
+ /**
+ * Return a map of VGPU references to VGPU records for all VGPUs known to the system.
+ *
+ * @return records of all objects
+ */
+ public static Map getAllRecords(Connection c) throws
+ BadServerResponse,
+ XenAPIException,
+ XmlRpcException {
+ String method_call = "VGPU.get_all_records";
+ String session = c.getSessionReference();
+ Object[] method_params = {Marshalling.toXMLRPC(session)};
+ Map response = c.dispatch(method_call, method_params);
+ Object result = response.get("Value");
+ return Types.toMapOfVGPUVGPURecord(result);
+ }
+
+}
\ No newline at end of file
diff --git a/deps/XenServerJava/src/com/xensource/xenapi/VIF.java b/deps/XenServerJava/src/com/xensource/xenapi/VIF.java
index 4ba78076b15..c1d25b445ac 100644
--- a/deps/XenServerJava/src/com/xensource/xenapi/VIF.java
+++ b/deps/XenServerJava/src/com/xensource/xenapi/VIF.java
@@ -1,18 +1,19 @@
-/* Copyright (c) Citrix Systems, Inc.
+/*
+ * Copyright (c) Citrix Systems, Inc.
* All rights reserved.
- *
+ *
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
- *
+ *
* 1) Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
- *
+ *
* 2) 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.
- *
+ *
* 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
@@ -27,6 +28,7 @@
* OF THE POSSIBILITY OF SUCH DAMAGE.
*/
+
package com.xensource.xenapi;
import com.xensource.xenapi.Types.BadServerResponse;
@@ -51,7 +53,7 @@ import org.apache.xmlrpc.XmlRpcException;
public class VIF extends XenAPIObject {
/**
- * The XenAPI reference to this object.
+ * The XenAPI reference (OpaqueRef) to this object.
*/
protected final String ref;
@@ -62,6 +64,9 @@ public class VIF extends XenAPIObject {
this.ref = ref;
}
+ /**
+ * @return The XenAPI reference (OpaqueRef) to this object.
+ */
public String toWireString() {
return this.ref;
}
@@ -113,6 +118,9 @@ public class VIF extends XenAPIObject {
print.printf("%1$20s: %2$s\n", "qosSupportedAlgorithms", this.qosSupportedAlgorithms);
print.printf("%1$20s: %2$s\n", "metrics", this.metrics);
print.printf("%1$20s: %2$s\n", "MACAutogenerated", this.MACAutogenerated);
+ print.printf("%1$20s: %2$s\n", "lockingMode", this.lockingMode);
+ print.printf("%1$20s: %2$s\n", "ipv4Allowed", this.ipv4Allowed);
+ print.printf("%1$20s: %2$s\n", "ipv6Allowed", this.ipv6Allowed);
return writer.toString();
}
@@ -139,6 +147,9 @@ public class VIF extends XenAPIObject {
map.put("qos_supported_algorithms", this.qosSupportedAlgorithms == null ? new LinkedHashSet() : this.qosSupportedAlgorithms);
map.put("metrics", this.metrics == null ? new VIFMetrics("OpaqueRef:NULL") : this.metrics);
map.put("MAC_autogenerated", this.MACAutogenerated == null ? false : this.MACAutogenerated);
+ map.put("locking_mode", this.lockingMode == null ? Types.VifLockingMode.UNRECOGNIZED : this.lockingMode);
+ map.put("ipv4_allowed", this.ipv4Allowed == null ? new LinkedHashSet() : this.ipv4Allowed);
+ map.put("ipv6_allowed", this.ipv6Allowed == null ? new LinkedHashSet() : this.ipv6Allowed);
return map;
}
@@ -214,6 +225,18 @@ public class VIF extends XenAPIObject {
* true if the MAC was autogenerated; false indicates it was set manually
*/
public Boolean MACAutogenerated;
+ /**
+ * current locking mode of the VIF
+ */
+ public Types.VifLockingMode lockingMode;
+ /**
+ * A list of IPv4 addresses which can be used to filter traffic passing through this VIF
+ */
+ public Set ipv4Allowed;
+ /**
+ * A list of IPv6 addresses which can be used to filter traffic passing through this VIF
+ */
+ public Set ipv6Allowed;
}
/**
@@ -627,6 +650,57 @@ public class VIF extends XenAPIObject {
return Types.toBoolean(result);
}
+ /**
+ * Get the locking_mode field of the given VIF.
+ *
+ * @return value of the field
+ */
+ public Types.VifLockingMode getLockingMode(Connection c) throws
+ BadServerResponse,
+ XenAPIException,
+ XmlRpcException {
+ String method_call = "VIF.get_locking_mode";
+ String session = c.getSessionReference();
+ Object[] method_params = {Marshalling.toXMLRPC(session), Marshalling.toXMLRPC(this.ref)};
+ Map response = c.dispatch(method_call, method_params);
+ Object result = response.get("Value");
+ return Types.toVifLockingMode(result);
+ }
+
+ /**
+ * Get the ipv4_allowed field of the given VIF.
+ *
+ * @return value of the field
+ */
+ public Set getIpv4Allowed(Connection c) throws
+ BadServerResponse,
+ XenAPIException,
+ XmlRpcException {
+ String method_call = "VIF.get_ipv4_allowed";
+ String session = c.getSessionReference();
+ Object[] method_params = {Marshalling.toXMLRPC(session), Marshalling.toXMLRPC(this.ref)};
+ Map response = c.dispatch(method_call, method_params);
+ Object result = response.get("Value");
+ return Types.toSetOfString(result);
+ }
+
+ /**
+ * Get the ipv6_allowed field of the given VIF.
+ *
+ * @return value of the field
+ */
+ public Set getIpv6Allowed(Connection c) throws
+ BadServerResponse,
+ XenAPIException,
+ XmlRpcException {
+ String method_call = "VIF.get_ipv6_allowed";
+ String session = c.getSessionReference();
+ Object[] method_params = {Marshalling.toXMLRPC(session), Marshalling.toXMLRPC(this.ref)};
+ Map response = c.dispatch(method_call, method_params);
+ Object result = response.get("Value");
+ return Types.toSetOfString(result);
+ }
+
/**
* Set the other_config field of the given VIF.
*
@@ -805,6 +879,276 @@ public class VIF extends XenAPIObject {
return;
}
+ /**
+ * Forcibly unplug the specified VIF
+ *
+ * @return Task
+ */
+ public Task unplugForceAsync(Connection c) throws
+ BadServerResponse,
+ XenAPIException,
+ XmlRpcException {
+ String method_call = "Async.VIF.unplug_force";
+ String session = c.getSessionReference();
+ Object[] method_params = {Marshalling.toXMLRPC(session), Marshalling.toXMLRPC(this.ref)};
+ Map response = c.dispatch(method_call, method_params);
+ Object result = response.get("Value");
+ return Types.toTask(result);
+ }
+
+ /**
+ * Forcibly unplug the specified VIF
+ *
+ */
+ public void unplugForce(Connection c) throws
+ BadServerResponse,
+ XenAPIException,
+ XmlRpcException {
+ String method_call = "VIF.unplug_force";
+ String session = c.getSessionReference();
+ Object[] method_params = {Marshalling.toXMLRPC(session), Marshalling.toXMLRPC(this.ref)};
+ Map response = c.dispatch(method_call, method_params);
+ return;
+ }
+
+ /**
+ * Set the locking mode for this VIF
+ *
+ * @param value The new locking mode for the VIF
+ * @return Task
+ */
+ public Task setLockingModeAsync(Connection c, Types.VifLockingMode value) throws
+ BadServerResponse,
+ XenAPIException,
+ XmlRpcException {
+ String method_call = "Async.VIF.set_locking_mode";
+ String session = c.getSessionReference();
+ Object[] method_params = {Marshalling.toXMLRPC(session), Marshalling.toXMLRPC(this.ref), Marshalling.toXMLRPC(value)};
+ Map response = c.dispatch(method_call, method_params);
+ Object result = response.get("Value");
+ return Types.toTask(result);
+ }
+
+ /**
+ * Set the locking mode for this VIF
+ *
+ * @param value The new locking mode for the VIF
+ */
+ public void setLockingMode(Connection c, Types.VifLockingMode value) throws
+ BadServerResponse,
+ XenAPIException,
+ XmlRpcException {
+ String method_call = "VIF.set_locking_mode";
+ String session = c.getSessionReference();
+ Object[] method_params = {Marshalling.toXMLRPC(session), Marshalling.toXMLRPC(this.ref), Marshalling.toXMLRPC(value)};
+ Map response = c.dispatch(method_call, method_params);
+ return;
+ }
+
+ /**
+ * Set the IPv4 addresses to which traffic on this VIF can be restricted
+ *
+ * @param value The IP addresses which will be associated with the VIF
+ * @return Task
+ */
+ public Task setIpv4AllowedAsync(Connection c, Set value) throws
+ BadServerResponse,
+ XenAPIException,
+ XmlRpcException {
+ String method_call = "Async.VIF.set_ipv4_allowed";
+ String session = c.getSessionReference();
+ Object[] method_params = {Marshalling.toXMLRPC(session), Marshalling.toXMLRPC(this.ref), Marshalling.toXMLRPC(value)};
+ Map response = c.dispatch(method_call, method_params);
+ Object result = response.get("Value");
+ return Types.toTask(result);
+ }
+
+ /**
+ * Set the IPv4 addresses to which traffic on this VIF can be restricted
+ *
+ * @param value The IP addresses which will be associated with the VIF
+ */
+ public void setIpv4Allowed(Connection c, Set