merge from master

This commit is contained in:
Kelven Yang 2012-10-11 17:42:25 -07:00
commit 5fee891162
353 changed files with 14450 additions and 7304 deletions

9
.gitignore vendored
View File

@ -45,10 +45,13 @@ deps/awsapi-lib/
git-remote-https.exe.stackdump
*.swp
tools/devcloud/devcloudbox/.vagrant
deps/*.jar
deps/*.war
deps/*.mar
*.jar
*.war
*.mar
*.zip
*.iso
*.tar.gz
*.tgz
awsapi/modules/*
!.gitignore
.classpath

143
INSTALL.md Normal file
View File

@ -0,0 +1,143 @@
This document describes how to set up and configure a single server CloudStack
development environment. If you aren't looking for a development environment,
the easiest way to deploy CloudStack is by using RPM or DEB packages from:
- http://cloudstack.org/download.html
- http://jenkins.cloudstack.org (CI/Build server)
- http://cloudstack.apt-get.eu (Debian repository)
CloudStack developers use various platforms for development, this guide will
focus on CentOS and was tested against a CentOS 6.2 x86_64 setup.
Refer to the [wiki](http://cwiki.apache.org/confluence/display/CLOUDSTACK/Index)
for the latest information, especially:
- [Setting up development environment](https://cwiki.apache.org/confluence/display/CLOUDSTACK/Setting+up+CloudStack+Development+Environment) for CloudStack.
- [Building](https://cwiki.apache.org/confluence/display/CLOUDSTACK/Building+with+Maven) CloudStack.
## Setting up Development Environment
### Installing Tools and Dependencies
Install tools and dependencies used for development:
$ yum install git ant ant-devel java-1.6.0-openjdk java-1.6.0-openjdk-devel
mysql mysql-server tomcat6 mkisofs gcc python MySQL-python openssh-clients wget
Set up Maven (3.0.4):
$ wget http://www.us.apache.org/dist/maven/maven-3/3.0.4/binaries/apache-maven-3.0.4-bin.tar.gz
$ cd /usr/local/ # or any path
$ tar -zxvf apache-maven-3.0.4-bin.tar.gz
$ echo export M2_HOME=/usr/local/apache-maven-3.0.4 >> ~/.bashrc # or .zshrc or .profile
$ echo export PATH=${M2_HOME}/bin:${PATH} >> ~/.bashrc # or .zshrc or .profile
Note: Tomcat 6.0.35 has some known issue with CloudStack, please use Tomcat
6.0.33 from http://archive.apache.org/dist/tomcat/tomcat-6/v6.0.33/bin
### Configure Environment
Set CATALINA_HOME to path where you extract/install tomcat, put them in your
.bashrc or .zshrc or .profile:
$ echo export CATALINA_HOME=/usr/share/tomcat6/ >> ~/.bashrc
Fix permissions on CATALINA_HOME:
$ chown -R <you>:<your-group> $CATALINA_HOME
Generate you ssh keys, useful for ssh-ing to your hosts and vm etc.:
$ ssh-keygen -t rsa -q
CloudStack uses some ports, make sure at least those used by the management
server are available and not blocked by any local firewall. Following ports are
used by CloudStack and its entities:
8787: CloudStack (Tomcat) debug socket
9090, 8250: CloudStack Management Server, User/Client API
8096: User/Client to CloudStack Management Server (unauthenticated)
3306: MySQL Server
3922, 8250, 80/443, 111/2049, 53: Secondary Storage VM
3922, 8250, 53: Console Proxy VM
3922, 8250, 53: Virtual Router
22, 80, 443: XenServer, XAPI
22: KVM
443: vCenter
DNS: 53
NFS: 111/2049
### Configuring MySQL Server
Start the MySQL service:
$ service mysqld start
### Getting the Source Code
You may get the source code from the repository hosted on Apache:
$ git clone https://git-wip-us.apache.org/repos/asf/incubator-cloudstack.git
Or, you may fork a repository from the official Apache CloudStack mirror by
Apache on [Github](https://github.com/apache/incubator-cloudstack)
To keep yourself updated on a branch, do:
$ git pull <origin> <branch>
For example, for master:
$ git pull origin master
## Building
Populate the dependencies using Maven:
$ mvn -P deps
Clean previous build, if needed:
$ mvn clean
$ ant clean-all
$ ant clean-tomcat
Build all sub-modules:
$ ant build-all
Deploy the built project on tomcat:
$ ant deploy-server
Clear old database (if any) and deploy the database schema:
$ ant deploydb
Start the management server in debug mode:
$ ant debug
If this works, you've successfully setup a single server CloudStack installation.
Open the following URL on your browser to access the Management Server UI:
http://localhost:8080/client/
Or,
http://management-server-ip-address:8080/client
The default credentials are; user: admin, password: password and the domain
field should be left blank which is defaulted to the ROOT domain.
## Packaging
To create rpms:
$ mvn -P deps && ./waf rpm
To create debs:
$ mvn -P deps && dpkg-buildpackage

View File

@ -1,70 +0,0 @@
This document describes how to set up and configure a single server CloudStack development environment. If you aren't looking for a development environment The easiest way is to deploy CloudStack from RPM package, building CloudStack from source is for developers. This guide is all about building CloudStack from the source and installing directly from there . This guide is suitable for you if you want to develop the CloudStack.
I have tested this procedure on Fedora Core 14
Step 1: Install the tools and dependencies:
For fedora the package names are ant ant-devel, openjdk, openjdk-devel
Tools:
yum install ant ant-devel openjdk openjdk-devel mysql mysql-server tomcat
Dependencies:
yum install jakarta-commons-collections jakarta-commons-dbcp.noarch apache-commons-logging.noarch jakarta-commons-pool jakarta-commons-httpclient.noarch ws-commons-util.noarch glibc-devel gcc python MySQL-python openssh-clients
Tomcat:
Download tomcat6.0.33 from http://archive.apache.org/dist/tomcat/tomcat-6/v6.0.33/bin/ instead of using distribution's default tomcat. Set CATALINA_HOME and CATALINA_BASE to path where you extract tomcat in environment variable, it would be better off setting them in .bashrc as it will take effect every time you log in.
Note: Tomcat6.0.35 has some known issue with CloudStack, please avoid it
SSHKEY:
Run:
sh-keygen -t rsa -q
to create sshkey for your account if you don't have one
Step 2: Configuration
Start the MySQL service :
# service mysqld start
Step 3: Get the source
$ git clone https://github.com/CloudStack/CloudStack.git
For subsequent pulls, do:
$ git pull
Step 4: Building, testing, and deploying CloudStack using Ant :
Ant is a Java-based build tool designed to be cross-platform, easy to use, extensible, and scalable. Ant is controlled by providing a text file that tells how to perform all the stages of building, testing, and deploying a project. These files are build files, and every project that uses Ant must have at least one named as build.xml. You can see build.xml in your CloudStack source.
Type to build CloudStack :
$ ant clean-all build-all
Type to deploy mgt server :
$ ant deploy-server
Type to deploy database :
$ ant deploydb
Type to run mgt server:
$ ant debug
If all of the above process is successful. You are done the single server CloudStack installation.Now your CloudStack Management Server is running.
Open your browser and type the bellow url in address bar:
http://localhost:8080/client/
OR
http://management-server-ip-address:8080/client
You can see CloudStack Management Console page via a web browser. It will show you management consle login page. You can use the default username and password and leave domain as blank.
The default credentials are “admin” for user and “password” for password. The domain field should be left blank. A blank
domain field is defaulted to the ROOT domain.
NOTE : This document is very basic CloudStack development installation. If you are very new to CloudStack and want to feel the power of CloudStack very quickly in RPM based distro, this document will guide very clear step to get it done. Since I am new to CloudStack, I doing this documentation by learning from community. I will keet update new information in this guide to make it more valuable resource.

163
LICENSE
View File

@ -184,7 +184,7 @@ This distribution contains third party resources.
Within the . directory
licensed under the BSD (3-clause) http://www.opensource.org/licenses/BSD-3-Clause (as follows)
Copyright © 2005-2010 Thomas Nagy
Copyright (c) 2005-2010 Thomas Nagy
Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions
@ -217,7 +217,7 @@ Within the . directory
Within the awsapi directory
licensed under the BSD (3-clause) http://www.opensource.org/licenses/BSD-3-Clause (as follows)
Copyright © 2005-2010 Thomas Nagy
Copyright (c) 2005-2010 Thomas Nagy
Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions
@ -250,7 +250,7 @@ Within the awsapi directory
Within the console-proxy/js directory
licensed under the MIT License http://www.opensource.org/licenses/mit-license.php (as follows)
Copyright © 2009, John Resig
Copyright (c) 2009, John Resig
Permission is hereby granted, free of charge, to any person obtaining
a copy of this software and associated documentation files (the
@ -312,7 +312,7 @@ Within the deps directory
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,17 +328,17 @@ 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
licensed under the Apache License, Version 2 http://www.apache.org/licenses/LICENSE-2.0.txt (as above)
Copyright © 2004-2008 The Apache Software Foundation
Copyright (c) 2004-2008 The Apache Software Foundation
from The Apache Software Foundation http://www.apache.org/
XmlSchema-1.4.3.jar
licensed under the Apache License, Version 2 http://www.apache.org/licenses/LICENSE-2.0.txt (as above)
Copyright © 2004-2012 The Apache Software Foundation
Copyright (c) 2004-2012 The Apache Software Foundation
from The Apache Software Foundation http://www.apache.org/
apache-log4j-extras-1.0.jar http://logging.apache.org/log4j/companions/extras/
axiom-api-1.2.8.jar http://ws.apache.org/axiom/source-repository.html
@ -370,7 +370,7 @@ Within the deps/awsapi-lib directory
xml-apis.jar http://repo1.maven.org/maven2/xml-apis/xml-apis/1.3.04/xml-apis-1.3.04-sources.jar
licensed under the Apache License, Version 2 http://www.apache.org/licenses/LICENSE-2.0.txt (as above)
Copyright © 2009 Google Inc.
Copyright (c) 2009 Google Inc.
from Google Inc. http://google.com
cloud-gson.jar http://code.google.com/p/google-gson/
@ -381,7 +381,7 @@ Within the deps/awsapi-lib directory
licensed under the BSD (3-clause) http://www.opensource.org/licenses/BSD-3-Clause (as follows)
Copyright © 2002-2011 Atsuhiko Yamanaka, JCraft,Inc.
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
@ -412,7 +412,7 @@ Within the deps/awsapi-lib directory
licensed under the COMMON DEVELOPMENT AND DISTRIBUTION LICENSE (CDDL) Version 1.0 http://www.opensource.org/licenses/CDDL-1.0 (as follows)
Copyright © 1997-2010 Oracle and/or its affiliates. All rights reserved.
Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
COMMON DEVELOPMENT AND DISTRIBUTION LICENSE (CDDL) Version 1.0
@ -802,7 +802,7 @@ Within the deps/awsapi-lib directory
licensed under the COMMON DEVELOPMENT AND DISTRIBUTION LICENSE (CDDL) Version 1.0 http://www.opensource.org/licenses/CDDL-1.0 (as follows)
Copyright © 2006 Sun Microsystems, Inc. All rights reserved.
Copyright (c) 2006 Sun Microsystems, Inc. All rights reserved.
COMMON DEVELOPMENT AND DISTRIBUTION LICENSE (CDDL) Version 1.0
@ -1190,7 +1190,7 @@ Within the deps/awsapi-lib directory
licensed under the COMMON DEVELOPMENT AND DISTRIBUTION LICENSE (CDDL) Version 1.0 http://www.opensource.org/licenses/CDDL-1.0 (as follows)
Copyright © 1997-2010 Oracle and/or its affiliates. All rights reserved.
Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
COMMON DEVELOPMENT AND DISTRIBUTION LICENSE (CDDL) Version 1.0
@ -1839,13 +1839,13 @@ 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
licensed under the MIT License http://www.opensource.org/licenses/mit-license.php (as follows)
Copyright © 2004-2011 QOS.ch
Copyright (c) 2004-2011 QOS.ch
Permission is hereby granted, free of charge, to any person obtaining
a copy of this software and associated documentation files (the
@ -2343,21 +2343,79 @@ 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 © 2010-2011 OpenStack, LLC.
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 © 2010-2011 OpenStack, LLC.
Copyright (c) 2010-2011 OpenStack, LLC.
from OpenStack, LLC http://www.openstack.org
swift
@ -2369,7 +2427,7 @@ Within the target/jar directory
licensed under the Apache License, Version 1.1 http://www.apache.org/licenses/LICENSE-1.1 (as follows)
Copyright © 2012 The Apache Software Foundation
Copyright (c) 2012 The Apache Software Foundation
/* ====================================================================
* The Apache Software License, Version 1.1
@ -2429,7 +2487,7 @@ Within the target/jar directory
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 © 2012 The Apache Software Foundation
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/
@ -2453,12 +2511,12 @@ Within the target/jar directory
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 © 2003-2007 Luck Consulting Pty Ltd
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 © 2009 Google Inc.
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/
@ -2470,7 +2528,7 @@ Within the target/jar directory
licensed under the BSD (3-clause) http://www.opensource.org/licenses/BSD-3-Clause (as follows)
Copyright © 2009, Caringo, Inc.
Copyright (c) 2009, Caringo, Inc.
Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions
@ -2501,7 +2559,7 @@ Within the target/jar directory
licensed under the BSD (3-clause) http://www.opensource.org/licenses/BSD-3-Clause (as follows)
Copyright © 2002-2011 Atsuhiko Yamanaka, JCraft,Inc.
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
@ -2532,7 +2590,7 @@ Within the target/jar directory
licensed under the BSD (3-clause) http://www.opensource.org/licenses/BSD-3-Clause (as follows)
Copyright © 2007-2008 Trilead AG (http://www.trilead.com)
Copyright (c) 2007-2008 Trilead AG (http://www.trilead.com)
All rights reserved.
Redistribution and use in source and binary forms, with or without
@ -2593,7 +2651,7 @@ Within the target/jar directory
licensed under the COMMON DEVELOPMENT AND DISTRIBUTION LICENSE (CDDL) Version 1.0 http://www.opensource.org/licenses/CDDL-1.0 (as follows)
Copyright © 2006 Sun Microsystems, Inc. All rights reserved.
Copyright (c) 2006 Sun Microsystems, Inc. All rights reserved.
COMMON DEVELOPMENT AND DISTRIBUTION LICENSE (CDDL) Version 1.0
@ -2982,7 +3040,7 @@ Within the target/jar directory
licensed under the COMMON DEVELOPMENT AND DISTRIBUTION LICENSE (CDDL) Version 1.0 http://www.opensource.org/licenses/CDDL-1.0 (as follows)
Copyright © 1997-2010 Oracle and/or its affiliates. All rights reserved.
Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
COMMON DEVELOPMENT AND DISTRIBUTION LICENSE (CDDL) Version 1.0
@ -3370,7 +3428,7 @@ Within the target/jar directory
licensed under the Common Public License - v 1.0 http://opensource.org/licenses/cpl1.0 (as follows)
Copyright © IBM Corp 2006
Copyright (c) IBM Corp 2006
Common Public License Version 1.0 (CPL)
@ -3812,7 +3870,7 @@ Within the target/jar directory
licensed under the Eclipse Distribution License Version 1.0 http://www.eclipse.org/org/documents/edl-v10.php (as follows)
Copyright © 2012 The Eclipse Foundation.
Copyright (c) 2012 The Eclipse Foundation.
Eclipse Distribution License Version 1.0
@ -3845,6 +3903,34 @@ Within the target/jar directory
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 <stoty@tvnet.hu>
2008-2012 Daniel Veillard <veillard@redhat.com>
2009-2011 Bryan Kearney <bkearney@redhat.com>
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)
@ -3881,13 +3967,6 @@ Within the target/jar directory
cloud-xstream-1.3.1.jar http://xstream.codehaus.org/repository.html
Within the tools/gcc directory
licensed under the Apache License, Version 2 http://www.apache.org/licenses/LICENSE-2.0.txt (as above)
Copyright © 2009 Google Inc.
from Google Inc. http://google.com
compiler.jar
Within the ui/lib directory
placed in the public domain
by Eric Meyer http://meyerweb.com/eric/
@ -3895,7 +3974,7 @@ Within the ui/lib directory
licensed under the BSD (2-clause) http://www.opensource.org/licenses/BSD-2-Clause (as follows)
Copyright © 2008 George McGinley Smith
Copyright (c) 2008 George McGinley Smith
All rights reserved.
Redistribution and use in source and binary forms, with or without modification,
@ -3927,7 +4006,7 @@ Within the ui/lib directory
licensed under the MIT License http://www.opensource.org/licenses/mit-license.php (as follows)
Copyright © 2011, John Resig
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
@ -3953,7 +4032,7 @@ Within the ui/lib directory
licensed under the MIT License http://www.opensource.org/licenses/mit-license.php (as follows)
Copyright © 2006 - 2011 Jörn Zaefferer
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
@ -3979,7 +4058,7 @@ Within the ui/lib directory
licensed under the MIT License http://www.opensource.org/licenses/mit-license.php (as follows)
Copyright © 2010, Sebastian Tschan
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
@ -4005,7 +4084,7 @@ Within the ui/lib directory
licensed under the MIT License http://www.opensource.org/licenses/mit-license.php (as follows)
Copyright © 2006 Klaus Hartl (stilbuero.de)
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
@ -4151,7 +4230,7 @@ Within the ui/lib/jquery-ui directory
Within the ui/lib/qunit directory
licensed under the MIT License http://www.opensource.org/licenses/mit-license.php (as follows)
Copyright © 2012 John Resig, Jörn Zaefferer
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
@ -4179,7 +4258,7 @@ Within the ui/lib/qunit directory
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 © 2004 Clinton Begin
Copyright (c) 2004 Clinton Begin
from Clinton Begin http://code.google.com/p/mybatis/
ScriptRunner.java http://code.google.com/p/mybatis/

View File

@ -53,7 +53,7 @@ Software License Version 2.
To build the default build target, use maven3 and execute:
maven install
mvn install
## Including optional third party libraries in your build

View File

@ -19,21 +19,7 @@ package com.cloud.agent.manager;
import java.util.HashMap;
import java.util.Map;
import com.cloud.agent.api.Answer;
import com.cloud.agent.api.CheckVirtualMachineCommand;
import com.cloud.agent.api.CleanupNetworkRulesCmd;
import com.cloud.agent.api.GetDomRVersionAnswer;
import com.cloud.agent.api.GetDomRVersionCmd;
import com.cloud.agent.api.GetVmStatsCommand;
import com.cloud.agent.api.GetVncPortCommand;
import com.cloud.agent.api.MigrateAnswer;
import com.cloud.agent.api.MigrateCommand;
import com.cloud.agent.api.NetworkUsageCommand;
import com.cloud.agent.api.RebootCommand;
import com.cloud.agent.api.SecurityGroupRuleAnswer;
import com.cloud.agent.api.SecurityGroupRulesCmd;
import com.cloud.agent.api.StartCommand;
import com.cloud.agent.api.StopCommand;
import com.cloud.agent.api.*;
import com.cloud.agent.api.check.CheckSshAnswer;
import com.cloud.agent.api.check.CheckSshCommand;
import com.cloud.agent.api.proxy.CheckConsoleProxyLoadCommand;
@ -90,5 +76,8 @@ public interface MockVmManager extends Manager {
MigrateAnswer Migrate(MigrateCommand cmd, SimulatorInfo info);
GetDomRVersionAnswer getDomRVersion(GetDomRVersionCmd cmd);
Map<String, MockVMVO> getVms(String hostGuid);
CheckRouterAnswer checkRouter(CheckRouterCommand cmd);
Answer bumpPriority(BumpUpPriorityCommand cmd);
}

View File

@ -25,43 +25,15 @@ import java.util.concurrent.ConcurrentHashMap;
import javax.ejb.Local;
import javax.naming.ConfigurationException;
import com.cloud.agent.api.*;
import com.cloud.agent.api.routing.*;
import com.cloud.network.router.VirtualRouter;
import org.apache.log4j.Logger;
import com.cloud.agent.api.Answer;
import com.cloud.agent.api.CheckVirtualMachineAnswer;
import com.cloud.agent.api.CheckVirtualMachineCommand;
import com.cloud.agent.api.CleanupNetworkRulesCmd;
import com.cloud.agent.api.GetDomRVersionAnswer;
import com.cloud.agent.api.GetDomRVersionCmd;
import com.cloud.agent.api.GetVmStatsAnswer;
import com.cloud.agent.api.GetVmStatsCommand;
import com.cloud.agent.api.GetVncPortAnswer;
import com.cloud.agent.api.GetVncPortCommand;
import com.cloud.agent.api.MigrateAnswer;
import com.cloud.agent.api.MigrateCommand;
import com.cloud.agent.api.NetworkUsageAnswer;
import com.cloud.agent.api.NetworkUsageCommand;
import com.cloud.agent.api.RebootAnswer;
import com.cloud.agent.api.RebootCommand;
import com.cloud.agent.api.SecurityGroupRuleAnswer;
import com.cloud.agent.api.SecurityGroupRulesCmd;
import com.cloud.agent.api.StartAnswer;
import com.cloud.agent.api.StartCommand;
import com.cloud.agent.api.StopAnswer;
import com.cloud.agent.api.StopCommand;
import com.cloud.agent.api.VmStatsEntry;
import com.cloud.agent.api.check.CheckSshAnswer;
import com.cloud.agent.api.check.CheckSshCommand;
import com.cloud.agent.api.proxy.CheckConsoleProxyLoadCommand;
import com.cloud.agent.api.proxy.WatchConsoleProxyLoadCommand;
import com.cloud.agent.api.routing.DhcpEntryCommand;
import com.cloud.agent.api.routing.IpAssocCommand;
import com.cloud.agent.api.routing.LoadBalancerConfigCommand;
import com.cloud.agent.api.routing.SavePasswordCommand;
import com.cloud.agent.api.routing.SetFirewallRulesCommand;
import com.cloud.agent.api.routing.SetPortForwardingRulesCommand;
import com.cloud.agent.api.routing.SetStaticNatRulesCommand;
import com.cloud.agent.api.routing.VmDataCommand;
import com.cloud.agent.api.to.NicTO;
import com.cloud.agent.api.to.VirtualMachineTO;
import com.cloud.network.Networks.TrafficType;
@ -262,8 +234,37 @@ public class MockVmManagerImpl implements MockVmManager {
txn.close();
}
}
@Override
@Override
public CheckRouterAnswer checkRouter(CheckRouterCommand cmd) {
String router_name = cmd.getAccessDetail(NetworkElementCommand.ROUTER_NAME);
int router_id = Integer.parseInt(router_name.split("-")[1]);
if (router_id % 2 == 0) {
s_logger.debug("Found even routerId, making it MASTER in RvR");
CheckRouterAnswer ans = new CheckRouterAnswer(cmd, "Status: MASTER & Bumped: NO", true);
ans.setState(VirtualRouter.RedundantState.MASTER);
return ans;
} else {
s_logger.debug("Found odd routerId, making it BACKUP in RvR");
CheckRouterAnswer ans = new CheckRouterAnswer(cmd, "Status: MASTER & Bumped: NO", true);
ans.setState(VirtualRouter.RedundantState.BACKUP);
return ans;
}
}
@Override
public Answer bumpPriority(BumpUpPriorityCommand cmd) {
String router_name = cmd.getAccessDetail(NetworkElementCommand.ROUTER_NAME);
int router_id = Integer.parseInt(router_name.split("-")[1]);
if (router_id % 2 == 0) {
return new Answer(cmd, true, "Status: MASTER & Bumped: YES");
} else {
return new Answer(cmd, true, "Status: BACKUP & Bumped: YES");
}
}
@Override
public Map<String, State> getVmStates(String hostGuid) {
Transaction txn = Transaction.open(Transaction.SIMULATOR_DB);
try {

View File

@ -24,45 +24,9 @@ import java.util.Map;
import javax.ejb.Local;
import javax.naming.ConfigurationException;
import com.cloud.agent.api.*;
import org.apache.log4j.Logger;
import com.cloud.agent.api.Answer;
import com.cloud.agent.api.AttachIsoCommand;
import com.cloud.agent.api.AttachVolumeCommand;
import com.cloud.agent.api.BackupSnapshotCommand;
import com.cloud.agent.api.CheckHealthCommand;
import com.cloud.agent.api.CheckNetworkCommand;
import com.cloud.agent.api.CheckVirtualMachineCommand;
import com.cloud.agent.api.CleanupNetworkRulesCmd;
import com.cloud.agent.api.ClusterSyncAnswer;
import com.cloud.agent.api.ClusterSyncCommand;
import com.cloud.agent.api.Command;
import com.cloud.agent.api.ComputeChecksumCommand;
import com.cloud.agent.api.CreatePrivateTemplateFromSnapshotCommand;
import com.cloud.agent.api.CreatePrivateTemplateFromVolumeCommand;
import com.cloud.agent.api.CreateStoragePoolCommand;
import com.cloud.agent.api.CreateVolumeFromSnapshotCommand;
import com.cloud.agent.api.DeleteSnapshotBackupCommand;
import com.cloud.agent.api.DeleteStoragePoolCommand;
import com.cloud.agent.api.GetDomRVersionCmd;
import com.cloud.agent.api.GetHostStatsCommand;
import com.cloud.agent.api.GetStorageStatsCommand;
import com.cloud.agent.api.GetVmStatsCommand;
import com.cloud.agent.api.GetVncPortCommand;
import com.cloud.agent.api.MaintainCommand;
import com.cloud.agent.api.ManageSnapshotCommand;
import com.cloud.agent.api.MigrateCommand;
import com.cloud.agent.api.ModifyStoragePoolCommand;
import com.cloud.agent.api.NetworkUsageCommand;
import com.cloud.agent.api.PingTestCommand;
import com.cloud.agent.api.PrepareForMigrationCommand;
import com.cloud.agent.api.RebootCommand;
import com.cloud.agent.api.SecStorageSetupCommand;
import com.cloud.agent.api.SecStorageVMSetupCommand;
import com.cloud.agent.api.SecurityGroupRulesCmd;
import com.cloud.agent.api.StartCommand;
import com.cloud.agent.api.StopCommand;
import com.cloud.agent.api.StoragePoolInfo;
import com.cloud.agent.api.check.CheckSshCommand;
import com.cloud.agent.api.proxy.CheckConsoleProxyLoadCommand;
import com.cloud.agent.api.proxy.WatchConsoleProxyLoadCommand;
@ -292,13 +256,17 @@ public class SimulatorManagerImpl implements SimulatorManager {
return _mockAgentMgr.maintain((MaintainCommand)cmd);
} else if (cmd instanceof GetVmStatsCommand) {
return _mockVmMgr.getVmStats((GetVmStatsCommand)cmd);
} else if (cmd instanceof CheckRouterCommand) {
return _mockVmMgr.checkRouter((CheckRouterCommand) cmd);
} else if (cmd instanceof BumpUpPriorityCommand) {
return _mockVmMgr.bumpPriority((BumpUpPriorityCommand) cmd);
} else if (cmd instanceof GetDomRVersionCmd) {
return _mockVmMgr.getDomRVersion((GetDomRVersionCmd)cmd);
return _mockVmMgr.getDomRVersion((GetDomRVersionCmd) cmd);
} else if (cmd instanceof ClusterSyncCommand) {
return new Answer(cmd);
//return new ClusterSyncAnswer(((ClusterSyncCommand) cmd).getClusterId(), this.getVmStates(hostGuid));
} else if (cmd instanceof CopyVolumeCommand) {
return _mockStorageMgr.CopyVolume((CopyVolumeCommand)cmd);
return _mockStorageMgr.CopyVolume((CopyVolumeCommand) cmd);
} else {
return Answer.createUnsupportedCommandAnswer(cmd);
}

View File

@ -1,3 +1,20 @@
// 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.simulator;
import com.cloud.utils.SerialVersionUID;
@ -21,4 +38,4 @@ public class SimulatorRuntimeException extends RuntimeCloudException {
protected SimulatorRuntimeException() {
super();
}
}
}

View File

@ -16,15 +16,14 @@
specific language governing permissions and limitations
under the License.
-->
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<artifactId>cloud-agent</artifactId>
<name>Apache CloudStack Agents</name>
<parent>
<groupId>org.apache.cloudstack</groupId>
<artifactId>cloudstack</artifactId>
<version>4.0.0-SNAPSHOT</version>
<version>4.1.0-SNAPSHOT</version>
</parent>
<dependencies>
<dependency>

View File

@ -16,15 +16,14 @@
specific language governing permissions and limitations
under the License.
-->
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<artifactId>cloud-api</artifactId>
<name>Apache CloudStack API</name>
<parent>
<groupId>org.apache.cloudstack</groupId>
<artifactId>cloudstack</artifactId>
<version>4.0.0-SNAPSHOT</version>
<version>4.1.0-SNAPSHOT</version>
</parent>
<dependencies>
<dependency>

View File

@ -45,6 +45,10 @@ public class SetupGuestNetworkCommand extends NetworkElementCommand{
return networkDomain;
}
public boolean isAdd() {
return add;
}
@Override
public boolean executeInSequence() {
return true;

View File

@ -120,7 +120,7 @@ public class AddVpnUserCmd extends BaseAsyncCreateCmd {
public void execute(){
VpnUser vpnUser = _entityMgr.findById(VpnUser.class, getEntityId());
Account account = _entityMgr.findById(Account.class, vpnUser.getAccountId());
if (!_ravService.applyVpnUsers(vpnUser.getAccountId())) {
if (!_ravService.applyVpnUsers(vpnUser.getAccountId(), userName)) {
throw new ServerApiException(BaseCmd.INTERNAL_ERROR, "Failed to add vpn user");
}

View File

@ -63,9 +63,15 @@ public class CreatePortForwardingRuleCmd extends BaseAsyncCreateCmd implements P
description = "the protocol for the port fowarding rule. Valid values are TCP or UDP.")
private String protocol;
@Parameter(name = ApiConstants.PRIVATE_END_PORT, type = CommandType.INTEGER, required = false, description = "the ending port of port forwarding rule's private port range")
private Integer privateEndPort;
@Parameter(name = ApiConstants.PUBLIC_START_PORT, type = CommandType.INTEGER, required = true,
description = "the starting port of port forwarding rule's public port range")
private Integer publicStartPort;
@Parameter(name = ApiConstants.PUBLIC_END_PORT, type = CommandType.INTEGER, required = false, description = "the ending port of port forwarding rule's private port range")
private Integer publicEndPort;
@IdentityMapper(entityTableName = "vm_instance")
@Parameter(name = ApiConstants.VIRTUAL_MACHINE_ID, type = CommandType.LONG, required = true,
@ -93,7 +99,7 @@ public class CreatePortForwardingRuleCmd extends BaseAsyncCreateCmd implements P
// ///////////////////////////////////////////////////
public String getEntityTable() {
return "firewall_rules";
return "firewall_rules";
}
public Long getIpAddressId() {
@ -117,7 +123,7 @@ public class CreatePortForwardingRuleCmd extends BaseAsyncCreateCmd implements P
}
return null;
}
public Boolean getOpenFirewall() {
boolean isVpc = getVpcId() == null ? false : true;
if (openFirewall != null) {
@ -154,6 +160,7 @@ public class CreatePortForwardingRuleCmd extends BaseAsyncCreateCmd implements P
return s_name;
}
@Override
public void execute() throws ResourceUnavailableException {
UserContext callerContext = UserContext.current();
@ -161,16 +168,16 @@ public class CreatePortForwardingRuleCmd extends BaseAsyncCreateCmd implements P
PortForwardingRule rule = null;
try {
UserContext.current().setEventDetails("Rule Id: " + getEntityId());
if (getOpenFirewall()) {
success = success && _firewallService.applyFirewallRules(ipAddressId, callerContext.getCaller());
}
success = success && _rulesService.applyPortForwardingRules(ipAddressId, callerContext.getCaller());
// State is different after the rule is applied, so get new object here
rule = _entityMgr.findById(PortForwardingRule.class, getEntityId());
FirewallRuleResponse fwResponse = new FirewallRuleResponse();
FirewallRuleResponse fwResponse = new FirewallRuleResponse();
if (rule != null) {
fwResponse = _responseGenerator.createPortForwardingRuleResponse(rule);
setResponseObject(fwResponse);
@ -178,13 +185,13 @@ public class CreatePortForwardingRuleCmd extends BaseAsyncCreateCmd implements P
fwResponse.setResponseName(getCommandName());
} finally {
if (!success || rule == null) {
if (getOpenFirewall()) {
_firewallService.revokeRelatedFirewallRule(getEntityId(), true);
}
_rulesService.revokePortForwardingRule(getEntityId(), true);
throw new ServerApiException(BaseCmd.INTERNAL_ERROR, "Failed to apply port forwarding rule");
}
}
@ -213,7 +220,7 @@ public class CreatePortForwardingRuleCmd extends BaseAsyncCreateCmd implements P
@Override
public Integer getSourcePortEnd() {
return publicStartPort.intValue();
return (publicEndPort == null)? publicStartPort.intValue() : publicEndPort.intValue();
}
@Override
@ -265,10 +272,10 @@ public class CreatePortForwardingRuleCmd extends BaseAsyncCreateCmd implements P
public Ip getDestinationIpAddress() {
return null;
}
@Override
public void setDestinationIpAddress(Ip destinationIpAddress) {
return;
return;
}
@Override
@ -278,7 +285,7 @@ public class CreatePortForwardingRuleCmd extends BaseAsyncCreateCmd implements P
@Override
public int getDestinationPortEnd() {
return privateStartPort.intValue();
return (privateEndPort == null)? privateStartPort.intValue() : privateEndPort.intValue();
}
@Override
@ -287,12 +294,12 @@ public class CreatePortForwardingRuleCmd extends BaseAsyncCreateCmd implements P
if (cidrlist != null) {
throw new InvalidParameterValueException("Parameter cidrList is deprecated; if you need to open firewall rule for the specific cidr, please refer to createFirewallRule command");
}
try {
PortForwardingRule result = _rulesService.createPortForwardingRule(this, virtualMachineId, getOpenFirewall());
setEntityId(result.getId());
} catch (NetworkRuleConflictException ex) {
s_logger.info("Network rule conflict: ", ex);
s_logger.info("Network rule conflict: " , ex);
s_logger.trace("Network Rule Conflict: ", ex);
throw new ServerApiException(BaseCmd.NETWORK_RULE_CONFLICT_ERROR, ex.getMessage());
}
@ -332,27 +339,27 @@ public class CreatePortForwardingRuleCmd extends BaseAsyncCreateCmd implements P
}
return ip;
}
@Override
public Integer getIcmpCode() {
return null;
}
@Override
public Integer getIcmpType() {
return null;
}
@Override
public Long getRelated() {
return null;
}
@Override
public FirewallRuleType getType() {
return FirewallRuleType.User;
}
@Override
public FirewallRuleType getType() {
return FirewallRuleType.User;
}
@Override
public AsyncJob.Type getInstanceType() {
return AsyncJob.Type.FirewallRule;

View File

@ -113,7 +113,7 @@ public class RemoveVpnUserCmd extends BaseAsyncCmd {
throw new ServerApiException(BaseCmd.INTERNAL_ERROR, "Failed to remove vpn user");
}
if (!_ravService.applyVpnUsers(owner.getId())) {
if (!_ravService.applyVpnUsers(owner.getId(), userName)) {
throw new ServerApiException(BaseCmd.INTERNAL_ERROR, "Failed to apply vpn user removal");
}
SuccessResponse response = new SuccessResponse(getCommandName());

View File

@ -22,11 +22,9 @@ import org.apache.log4j.Logger;
import com.cloud.api.ApiConstants;
import com.cloud.api.BaseAsyncCmd;
import com.cloud.api.BaseCmd;
import com.cloud.api.IdentityMapper;
import com.cloud.api.Implementation;
import com.cloud.api.Parameter;
import com.cloud.api.ServerApiException;
import com.cloud.api.response.PhysicalNetworkResponse;
import com.cloud.async.AsyncJob;
import com.cloud.event.EventTypes;
@ -99,13 +97,9 @@ public class UpdatePhysicalNetworkCmd extends BaseAsyncCmd {
@Override
public void execute(){
PhysicalNetwork result = _networkService.updatePhysicalNetwork(getId(),getNetworkSpeed(), getTags(), getVlan(), getState());
if (result != null) {
PhysicalNetworkResponse response = _responseGenerator.createPhysicalNetworkResponse(result);
response.setResponseName(getCommandName());
this.setResponseObject(response);
}else {
throw new ServerApiException(BaseCmd.INTERNAL_ERROR, "Failed to update physical network");
}
PhysicalNetworkResponse response = _responseGenerator.createPhysicalNetworkResponse(result);
response.setResponseName(getCommandName());
this.setResponseObject(response);
}
@Override

View File

@ -35,7 +35,7 @@ public interface RemoteAccessVpnService {
VpnUser addVpnUser(long vpnOwnerId, String userName, String password);
boolean removeVpnUser(long vpnOwnerId, String userName);
List<? extends VpnUser> listVpnUsers(long vpnOwnerId, String userName);
boolean applyVpnUsers(long vpnOwnerId);
boolean applyVpnUsers(long vpnOwnerId, String userName);
List<? extends RemoteAccessVpn> searchForRemoteAccessVpns(ListRemoteAccessVpnsCmd cmd);
List<? extends VpnUser> searchForVpnUsers(ListVpnUsersCmd cmd);

View File

@ -93,4 +93,6 @@ public interface ProjectService {
Project enableProject(long projectId);
boolean deleteProjectInvitation(long invitationId);
Project findByProjectAccountIdIncludingRemoved(long projectAccountId);
}

View File

@ -113,6 +113,7 @@ public enum ResourceState {
s_fsm.addTransition(ResourceState.ErrorInMaintenance, Event.Disable, ResourceState.Disabled);
s_fsm.addTransition(ResourceState.ErrorInMaintenance, Event.DeleteHost, ResourceState.Disabled);
s_fsm.addTransition(ResourceState.ErrorInMaintenance, Event.InternalEnterMaintenance, ResourceState.Maintenance);
s_fsm.addTransition(ResourceState.ErrorInMaintenance, Event.AdminCancelMaintenance, ResourceState.Enabled);
s_fsm.addTransition(ResourceState.Error, Event.InternalCreated, ResourceState.Error);
}
}

View File

@ -56,4 +56,6 @@ public interface UserAccount {
String getRegistrationToken();
boolean isRegistered();
int getLoginAttempts();
}

View File

@ -1,203 +0,0 @@
Apache License
Version 2.0, January 2004
http://www.apache.org/licenses/
TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
1. Definitions.
"License" shall mean the terms and conditions for use, reproduction,
and distribution as defined by Sections 1 through 9 of this document.
"Licensor" shall mean the copyright owner or entity authorized by
the copyright owner that is granting the License.
"Legal Entity" shall mean the union of the acting entity and all
other entities that control, are controlled by, or are under common
control with that entity. For the purposes of this definition,
"control" means (i) the power, direct or indirect, to cause the
direction or management of such entity, whether by contract or
otherwise, or (ii) ownership of fifty percent (50%) or more of the
outstanding shares, or (iii) beneficial ownership of such entity.
"You" (or "Your") shall mean an individual or Legal Entity
exercising permissions granted by this License.
"Source" form shall mean the preferred form for making modifications,
including but not limited to software source code, documentation
source, and configuration files.
"Object" form shall mean any form resulting from mechanical
transformation or translation of a Source form, including but
not limited to compiled object code, generated documentation,
and conversions to other media types.
"Work" shall mean the work of authorship, whether in Source or
Object form, made available under the License, as indicated by a
copyright notice that is included in or attached to the work
(an example is provided in the Appendix below).
"Derivative Works" shall mean any work, whether in Source or Object
form, that is based on (or derived from) the Work and for which the
editorial revisions, annotations, elaborations, or other modifications
represent, as a whole, an original work of authorship. For the purposes
of this License, Derivative Works shall not include works that remain
separable from, or merely link (or bind by name) to the interfaces of,
the Work and Derivative Works thereof.
"Contribution" shall mean any work of authorship, including
the original version of the Work and any modifications or additions
to that Work or Derivative Works thereof, that is intentionally
submitted to Licensor for inclusion in the Work by the copyright owner
or by an individual or Legal Entity authorized to submit on behalf of
the copyright owner. For the purposes of this definition, "submitted"
means any form of electronic, verbal, or written communication sent
to the Licensor or its representatives, including but not limited to
communication on electronic mailing lists, source code control systems,
and issue tracking systems that are managed by, or on behalf of, the
Licensor for the purpose of discussing and improving the Work, but
excluding communication that is conspicuously marked or otherwise
designated in writing by the copyright owner as "Not a Contribution."
"Contributor" shall mean Licensor and any individual or Legal Entity
on behalf of whom a Contribution has been received by Licensor and
subsequently incorporated within the Work.
2. Grant of Copyright License. Subject to the terms and conditions of
this License, each Contributor hereby grants to You a perpetual,
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
copyright license to reproduce, prepare Derivative Works of,
publicly display, publicly perform, sublicense, and distribute the
Work and such Derivative Works in Source or Object form.
3. Grant of Patent License. Subject to the terms and conditions of
this License, each Contributor hereby grants to You a perpetual,
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
(except as stated in this section) patent license to make, have made,
use, offer to sell, sell, import, and otherwise transfer the Work,
where such license applies only to those patent claims licensable
by such Contributor that are necessarily infringed by their
Contribution(s) alone or by combination of their Contribution(s)
with the Work to which such Contribution(s) was submitted. If You
institute patent litigation against any entity (including a
cross-claim or counterclaim in a lawsuit) alleging that the Work
or a Contribution incorporated within the Work constitutes direct
or contributory patent infringement, then any patent licenses
granted to You under this License for that Work shall terminate
as of the date such litigation is filed.
4. Redistribution. You may reproduce and distribute copies of the
Work or Derivative Works thereof in any medium, with or without
modifications, and in Source or Object form, provided that You
meet the following conditions:
(a) You must give any other recipients of the Work or
Derivative Works a copy of this License; and
(b) You must cause any modified files to carry prominent notices
stating that You changed the files; and
(c) You must retain, in the Source form of any Derivative Works
that You distribute, all copyright, patent, trademark, and
attribution notices from the Source form of the Work,
excluding those notices that do not pertain to any part of
the Derivative Works; and
(d) If the Work includes a "NOTICE" text file as part of its
distribution, then any Derivative Works that You distribute must
include a readable copy of the attribution notices contained
within such NOTICE file, excluding those notices that do not
pertain to any part of the Derivative Works, in at least one
of the following places: within a NOTICE text file distributed
as part of the Derivative Works; within the Source form or
documentation, if provided along with the Derivative Works; or,
within a display generated by the Derivative Works, if and
wherever such third-party notices normally appear. The contents
of the NOTICE file are for informational purposes only and
do not modify the License. You may add Your own attribution
notices within Derivative Works that You distribute, alongside
or as an addendum to the NOTICE text from the Work, provided
that such additional attribution notices cannot be construed
as modifying the License.
You may add Your own copyright statement to Your modifications and
may provide additional or different license terms and conditions
for use, reproduction, or distribution of Your modifications, or
for any such Derivative Works as a whole, provided Your use,
reproduction, and distribution of the Work otherwise complies with
the conditions stated in this License.
5. Submission of Contributions. Unless You explicitly state otherwise,
any Contribution intentionally submitted for inclusion in the Work
by You to the Licensor shall be under the terms and conditions of
this License, without any additional terms or conditions.
Notwithstanding the above, nothing herein shall supersede or modify
the terms of any separate license agreement you may have executed
with Licensor regarding such Contributions.
6. Trademarks. This License does not grant permission to use the trade
names, trademarks, service marks, or product names of the Licensor,
except as required for reasonable and customary use in describing the
origin of the Work and reproducing the content of the NOTICE file.
7. Disclaimer of Warranty. Unless required by applicable law or
agreed to in writing, Licensor provides the Work (and each
Contributor provides its Contributions) 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. You are solely responsible for determining the
appropriateness of using or redistributing the Work and assume any
risks associated with Your exercise of permissions under this License.
8. Limitation of Liability. In no event and under no legal theory,
whether in tort (including negligence), contract, or otherwise,
unless required by applicable law (such as deliberate and grossly
negligent acts) or agreed to in writing, shall any Contributor be
liable to You for damages, including any direct, indirect, special,
incidental, or consequential damages of any character arising as a
result of this License or out of the use or inability to use the
Work (including but not limited to damages for loss of goodwill,
work stoppage, computer failure or malfunction, or any and all
other commercial damages or losses), even if such Contributor
has been advised of the possibility of such damages.
9. Accepting Warranty or Additional Liability. While redistributing
the Work or Derivative Works thereof, You may choose to offer,
and charge a fee for, acceptance of support, warranty, indemnity,
or other liability obligations and/or rights consistent with this
License. However, in accepting such obligations, You may act only
on Your own behalf and on Your sole responsibility, not on behalf
of any other Contributor, and only if You agree to indemnify,
defend, and hold each Contributor harmless for any liability
incurred by, or claims asserted against, such Contributor by reason
of your accepting any such warranty or additional liability.
END OF TERMS AND CONDITIONS
APPENDIX: How to apply the Apache License to your work.
To apply the Apache License to your work, attach the following
boilerplate notice, with the fields enclosed by brackets "[]"
replaced with your own identifying information. (Don't include
the brackets!) The text should be enclosed in the appropriate
comment syntax for the file format. We also recommend that a
file or class name and description of purpose be included on the
same "printed page" as the copyright notice for easier
identification within third-party archives.
Copyright [yyyy] [name of copyright owner]
Licensed 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.

View File

@ -1,26 +0,0 @@
=========================================================================
== NOTICE file corresponding to the section 4 d of ==
== the Apache License, Version 2.0, ==
== in this case for the Apache Axis2 distribution. ==
=========================================================================
This product includes software developed by
The Apache Software Foundation (http://www.apache.org/).
Portions Copyright 2006 International Business Machines Corp.
Portions Copyright 2005-2007 WSO2, Inc.
This product also includes schemas and specification developed by:
- the W3C consortium (http://www.w3c.org)
This product also includes WS-* schemas developed by International
Business Machines Corporation, Microsoft Corporation, BEA Systems,
TIBCO Software, SAP AG, Sonic Software, and VeriSign
This product also includes a WSDL developed by salesforce.com
- Copyright 1999-2006 salesforce.com, inc.
Portions of the included xmlbeans library were originally based on the following:
- software copyright (c) 2000-2003, BEA Systems, <http://www.bea.com/>.
Please read the different LICENSE files present in the lib directory of
this distribution.

View File

@ -1,25 +1,25 @@
# 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.
host=http://localhost:7080/awsapi
storage.root=/Users/john1/S3-Mount
storage.multipartDir=__multipart__uploads__
bucket.dns=false
serviceEndpoint=localhost:7080
# 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.
host=http://localhost:7080/awsapi
storage.root=/Users/john1/S3-Mount
storage.multipartDir=__multipart__uploads__
bucket.dns=false
serviceEndpoint=localhost:7080

View File

@ -1,68 +0,0 @@
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.
-----------------------------------------------------------
1. Get the EC2 API tool
http://s3.amazonaws.com/ec2-downloads/ec2-api-tools-1.3-62308.zip. Install it by unzipping it
2. Prepare a API request certificate, if you have Amazon account, Amazon has the service to let you generate and download a X509 certificate and its associated private key
3. Prepare EC2 command running environment
Set following environment variables and make them point to the right location.
EC2_ACCESS_KEY=<CloudStack API key>
EC2_SECRET_KEY=<CloudStack Secret key>
EC2_HOME: <full path to your EC2 API tool installation directory>
EC2_CERT: <full path to your certficate file>
EC2_PRIVATE_KEY: <full path to your private key file for the certficate>
EC2_URL: http://<CloudBridge server address>/bridge/AmazonEC2
4. Generate CloudStack API key
Login to CloudStack management console, you can generate an API key and its secret key pair there.
5. Inform CloudBridge about the API/security key pair to use
http://<CloudBridge server address>/bridge/rest/AmazonEC2?Action=SetUserKeys&accesskey=<key>&secretkey=<key>
6. Upload certificate and associate it with the API key
There is not a convenient tool to do that, this has to be done in manual step. following HTML form can be used to submit the certificate, be sure to replace the content
matching with your setup though.
to ec2-service.properties
<HTML>
<BODY>
Save the cert into Cloud's EC2 Service:
<P>
<FORM name="setcert" action="http://<CloudBridge server address>/bridge/rest/AmazonEC2" method="get">
<input type="hidden" name="Action" value="SetCertificate"/>
<input type="hidden" name="AWSAccessKeyId" value="<your API key>" />
<input type="hidden" name="SignatureMethod" value="HmacSHA1" />
<input type="hidden" name="SignatureVersion" value="2" />
<input type="hidden" name="Expires" value="2010-11-15T10:10:10Z" />
<input type="hidden" name="Timestamp" value="2011-11-15T10:10:10Z" />
<input type="hidden" name="Version" value="2010-08-31" />
<input type="hidden" name="Signature" value="7KUYxW5YOpUZyZGCP49BudZraGU=" />
<TEXTAREA name="cert" cols=100 rows=20></TEXTAREA>
<P>
<input type="submit" value="Submit" />
</FORM>
</BODY>
</HTML>

View File

@ -1,164 +0,0 @@
<HTML>
<!--
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.
-->
<HEAD>
<TITLE>Cloud.com's EC2 API Implementation Guide</TITLE>
</HEAD>
<BODY>
<H1>Cloud.com's EC2 API Implementation Guide</H1>
3/24/2011
<H2>Table of Contents</H2>
<UL>
<LI><A href="#conf">1. Configuration Parameters</A></LI>
<LI><A href="#party">2. Required 3rd Party Software</A></LI>
<LI><A href="#maintenace">3. Maintenance</A></LI>
<LI><A href="#install">4. Installation Instructions</A></LI>
<LI><A href="#refs">5. References</A></LI>
</UL>
<P>
<H2 id="conf">1. Configuration Parameters</H2>
Several configuration parameters are required to make Cloud.com's EC2 service work properly.
The following parameters are defined in the file:</BR> &lt;install directory>"/apache-tomcat-6.0.18/conf/ec2-service.properties":
<pre>
managementServer=192.168.154.36
cloudAPIPort=8080
WSDLVersion=2010-08-31
keystore=xes.keystore
keystorePass=apache
dbName=cloudsbridge
dbUser=root
dbPassword=
pollInterval1=100
pollInterval2=100
pollInterval3=100
pollInterval4=1000
pollInterval5=100
pollInterval6=100
</pre>
<I>managementServer</I> - FQDN or IP address of a Cloud.com management server. This is the address that
the EC2 service makes Cloud.com REST API calls against.</BR>
<I>cloudAPIPort</I> - The TCP port that the CloudStack, User API is running on. If this property is not defined,
then no port is used by the EC2 service when it queries the CloudStack.</BR>
<I>WSDLVersion</I> - The string that defines the WSDL used by the SOAP API which the REST API also implements.
This string is compared to the "Version=" parameter on each and every authorized REST request.</BR>
<I>keystore</I> - The file name of the keystore used by EC2 which must be placed at the directory:
"../apache-tomcat-6.0.18/webapps/bridge/WEB-INF/classes"</BR>
<I>keystorePass</I> - The password to the EC2 keystore specified by the "keystore" parameter.</BR>
<I>dbName</I> - The MySql database name holding the EC2 service's required tables.</BR>
<I>dbUser=</I> - The user name used to access the "dbName" MySql database.</BR>
<I>dbPassword</I> - The password (if any) the "dbUser" needs to access the EC2 MySql database.</BR>
<I>pollInterval1</I> - Time in milliseconds between asynchronous job completion polling for the following Cloud.com
API call: createTemplate. Default value is 100.</BR>
<I>pollInterval2</I> - Time in milliseconds between asynchronous job completion polling for the following Cloud.com
API call: deployVirtualMachine. Default value is 100.</BR>
<I>pollInterval3</I> - Time in milliseconds between asynchronous job completion polling for the following Cloud.com
API call: createVolume. Default value is 100.</BR>
<I>pollInterval4</I> - Time in milliseconds between asynchronous job completion polling for the following Cloud.com
API call: createSnapshot. Default value is 1000.</BR>
<I>pollInterval5</I> - Time in milliseconds between asynchronous job completion polling for the following Cloud.com
API calls: deleteSnapshot, deleteTemplate, deleteVolume, attachVolume, detachVolume, disassociateIpAddress, enableStaticNat, disableStaticNat. Default value is 100.</BR>
<I>pollInterval6</I> - Time in milliseconds between asynchronous job completion polling for the following Cloud.com
API calls: startVirtualMachine, destroyVirtualMachine, stopVirtualMachine. Default value is 100.</BR>
<P>
<BR>
The following REST calls are used to configure a mapping between Amazon's instance types and CloudStack service offerings:
<P>
http://&lt;fqdn-or-ip&gt;:&lt;port&gt;/bridge/rest/AmazonEC2?Action=SetOfferMapping&amazonoffer=m1.large&cloudoffer=1<BR>
<P>
The 'amazonoffer' parameter defines the standard Amazon instance types while the 'cloudoffer' parameter defines its associated
CloudStack service offering identifer. The result of this REST call is to save the defined relationship. A second call with the
same value for amazonoffer but with a different cloudoffer value will overwrite a previously saved setting.
<BR>
SetOfferMapping is an authenticated REST call using the same authentication scheme as all other EC2 REST calls. This means that the following standard EC2 REST paramters must also be part of the request: Signature, SignatureMethod, Version, SignatureVersion, and Expires.
A HTTP 200 result code is returned on success and a 404 on failure.
<P>
http://&lt;fqdn-or-ip&gt;:&lt;port&gt;/bridge/rest/AmazonEC2?Action=DeleteOfferMapping&amazonoffer=m1.large<BR>
<P>
The result of this REST call is to delete any relationship previously defined by a call to the SetOfferMapping call for the
value passed in the 'amazonoffer' parameter.<BR>
DeleteOfferMapping is an authenticated REST call using the same authentication scheme as all other EC2 REST calls. This means that the following standard EC2 REST paramters must also be part of the request: Signature, SignatureMethod, Version, SignatureVersion, and Expires.
A HTTP 200 result code is returned on success and a 404 on failure.
<P>
Examples of other Amazon instance types are:
{ "m1.small", "m1.large", "m1.xlarge", "c1.medium", "c1.xlarge", "m2.xlarge", "m2.2xlarge", "m2.4xlarge" }.</BR>
Service offering IDs can be obtained from the following Cloud.com API calls: listServiceOfferings.
Cloud.com's service offerings are configurable and thus can be different per installation, and they
can also be viewed from the Cloud.com's Admin UI.
<P>
<H2 id="party">2. Required 3rd Party Software</H2>
Cloud.com's EC2 service has been built and tested on the following set of 3rd party software:
<pre>
MySql
apache-tomcat 6.0.18
axis2 1.5.1
rampart 1.5 (installed into axis2 for WS-Security)
used for testing: ec2-api-tools-1.3-53907
</pre>
<P>
<H2 id="maintenace">3. Maintenance</H2>
As a result of the SetCertificate REST call <A href="#ref1">[1]</A>, X509 Certificates used for SOAP authentication are
stored in the following keystore:
<pre>
&lt;install directory>/apache-tomcat-6.0.18/webapps/bridge/WEB-INF/classes/xes.keystore
</pre>
The keytool <A href="#ref2">[2]</A> command line tool can be used to delete certificates no longer in use.
<P>
As a result of the SetUserKeys REST call <A href="#ref1">[1]</A>, entries are inserted into
the "usercredentials" table of the "cloudbridge" MySql database.
The MySql command line client can be used to delete usercredentials entries no longer in use.
<P>
<H2 id="install">4. Installation Instructions</H2>
<P>
On the very first install an EC2/S3 MySql database is created by running the following
scripts in the given order: cloudsbridge_db.sql, cloudsbridge_schema.sql, cloudbridge_index.sql
<P>
After a successful installation the following directory and file structure should exist:
<pre>
&lt;install directory>
apache-tomcat-6.0.18
conf
ec2-service.properties (EC2 service's configuration parameters)
server.xml
lib
&lt;many axis2 jar files>
webapps
bridge
WEB-INF
classes
crypto.properties
xes.keystore (holds X509 certificates for SOAP authentication)
modules
cloud-auth-ec2.mar
rampart-1.5.mar
rahas-1.5.mar
addressing-1.5.1.mar
services
cloud-ec2.aar (the Axis2 EC2 service)
</pre>
The "../modules/cloud-auth-ec2.mar" module performs a mapping from an X509 certificate appearing in a SOAP
request (since its signed via WS-Security) to a matching user's Cloud.com API access and secret keys. This association
is first created via the SetUserKeys and SetCertificate REST calls [1].
<P>
<H2 id="refs">5. References</H2>
<OL>
<LI id="ref1">Cloud.com's EC2 API User's Guide, 7/15/2010</LI>
<LI id="ref2"><A href="http://download.oracle.com/docs/cd/E17476_01/javase/1.4.2/docs/tooldocs/windows/keytool.html">keytool - Key and Certificate Management Tool</A></LI>
</OL>
</BODY>
</HTML>

View File

@ -1,92 +0,0 @@
<HTML>
<!--
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.
-->
<HEAD>
<TITLE>Cloud.com's EC2 local deployment Guide</TITLE>
</HEAD>
<BODY>
<H1>Cloud.com's EC2 local deployment Guide</H1>
8/30/2010
8/25/2011 (updated)
<H2>Table of Contents</H2>
<UL>
<LI><A href="#prereq">1. Required 3rd Party Software</A></LI>
<LI><A href="#git">2. Clone repository</A></LI>
<LI><A href="#build">3. Build, deploy and run cloud-bridge with ant</A></LI>
</UL>
<P>
<H2 id="prereq">1. Required 3rd Party Software</H2>
1) Following software has to be installed in order to deploy and run cloud-bridge tool:
<pre>
apache-tomcat-6.0.32
axis2 1.5.1 (http://apache.imghat.com//ws/axis2/1_5/axis2-1.5-bin.zip)
ant
java
mysql
</pre>
2) Set following environment variables:
<pre>
ANT_HOME
CATALINA_HOME
export ANT_HOME
export JAVA_HOME
</pre>
3) Go to CATALINA_HOME directory and excute “mkdir temp” (this directory is used for storing temporary axis files)
<P>
<H2 id="git">2. Clone repository</H2>
Clone cloud-bridge repository:
<pre>
git clone git@github.com:alena11081/cloud-bridge.git
</pre>
<P>
<H2 id="build">3. Build, deploy and run cloud-bridge with ant</H2>
Deployment procedure using ant (build.xml and build-cloud-bridge.xml are config files), execute from cloned cloud-bridge directory:.
<pre>
* ant clean - removes dist directory
* ant clean-tomcat - cleans up $CATALINA_HOME/webapps/bridge directory
* ant build-cloud-bridge compiles and places the resulting jars into cloud-bridge/dist:
ls dist/
cloud-auth-ec2.mar cloud-auth-s3.mar cloud-bridge.jar cloud-ec2.aar cloud-s3.aar
* deploy-axis - copies and unwars cloud-bridge/lib/axis2-webapp-1.5.1.war to $CATALINA_HOME/webapps/bridge directory
<b>ant deploy-cloud-bridge</b> copies files to $CATALINA_HOME/webapps/bridge tomcat directory:
- copy cloud-bridge/dist/cloud-ec2.aar and cloud-s3.aar to $CATALINA_HOME/webapps/bridge/WEB-INF/services
- copy cloud-bridge/dist/cloud-auth-ec2.mar and cloud-auth-s3.mar to $CATALINA_HOME/webapps/bridge/WEB-INF/modules
- copy all .mar files from cloud-bridge/modules to $CATALINA_HOME/webapps/bridge/WEB-INF/modules
- copy cloud-bridge/dist/cloud-bridge.jar to $CATALINA_HOME/webapps/bridge/WEB-INF/lib
- copy all .jar files from cloud-bridge/lib directory to $CATALINA_HOME/webapps/bridge/WEB-INF/lib
- copy all .jar files from cloud-bridge/rampartlib directory to $CATALINA_HOME/webapps/bridge/WEB-INF/lib
<del>- copy all files from cloud-bridge/conf directory to $CATALINA_HOME/webapps/bridge/WEB-INF/conf</del>
- copy cloud-bridge/resource/Axis2/axis2.xml to $CATALINA_HOME/webapps/bridge/WEB-INF/conf
- copy cloud-bridge/web/web.xml to $CATALINA_HOME/webapps/bridge/WEB-INF
- copy cloud-bridge/resource/AmazonEC2/crypto.properties and xes.keystore to $CATALINA_HOME/webapps/bridge/WEB-INF/classes/
- remove $CATALINA_HOME/webapps/bridge/WEB-INF/lib/dom4j-1.6.1.jar
ant deploydb - execute cloud-bridge/db/mysql/deploy-db-bridge.sh (for Unix). If it's a windows deployment, execute db/mysql/init_db.bat script
5) Configure ec2-service.properties (see parameters descriptions in resource/AmazonEC2/docs/EC2-implementation-guide.html).
6) To run application execute "./catalina.sh run" from $CATALINA_HOME/bin directory.
</BODY>
</HTML>

View File

@ -1,275 +0,0 @@
<HTML>
<!--
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.
-->
<HEAD>
<TITLE>Cloud.com's EC2 API User's Guide</TITLE>
</HEAD>
<BODY>
<H1>Cloud.com's EC2 API User's Guide</H1>
4/17/2010
<H2>Table of Contents</H2>
<UL>
<LI><A href="#part1">Part 1. Cloud.com's Specific Implementation Details</A></LI>
<UL>
<LI><A href="#registration">1. User Registration</A></LI>
<UL>
<LI><A href="#cloudkeys">1.1 Setting Cloud.com API Keys</A></LI>
<LI><A href="#certifiates">1.2 Setting a User's X509 Certificate</A></LI>
</UL>
<LI><A href="#endpoints">2. Endpoints</LI>
<LI><A href="#differences">3. Differences between Amazon's and Cloud.com's EC2 Implementations</A></LI>
<LI><A href="#misc">4. Miscellaneous</A><P></LI>
</UL>
<LI><A href="#part2">Part 2. Generic EC2 Details</A></LI>
<UL>
<LI><A href="#functions">List of EC2 Functions Implemented</A></LI>
<LI><A href="#wsdl">Supported WSDL Version</A><P></LI>
</UL>
<LI><A href="#refs">References</A></LI>
</UL>
<P></BR>
<H2 id="part1">Part 1. Cloud.com's Specific Implementation Details</H2>
<H3 id="registration">1. User Registration</H3>
To access Cloud.com's EC2 service via REST follow the instructions in Section 1.1.
To access Cloud.com's EC2 service via SOAP follow instructions in both Section 1.1 and 1.2 below.
<P>
<H3 id="cloudkeys">1.1 Setting Cloud.com API Keys</H3>
The EC2 service needs to be given the user's Cloud.com API access and secret keys <A href="#ref2">[2]</A> so that it
can make Cloud.com API calls on the user's behalf. This is done by the following REST command.
<pre>
http://&lt;fqdn-or-ip>:&lt;port>/bridge/rest/AmazonEC2?Action=SetUserKeys&accesskey=&lt;key>&secretkey=&lt;key>
</pre>
SetUserKeys is an <I>unauthorized</I> REST call.</br>
A HTTP 200 result code is returned on success and a 401 on failure.
<P>
<H3 id="certifiates">1.2 Setting a User's X509 Certificate</H3>
EC2 uses WS-Security <A href="#ref4">[4]</A> for authentication on SOAP access. WS-Security signs the entire SOAP request
using a public/private key pair. The user of Cloud.com's EC2 service must
generate a public/private key pair with the public key defined in an X509
certificate. The private key is used by a SOAP client in generating
the WS-Security signature of a SOAP request. The matching public key is stored on
a server and is used to verify the signature on each request.
<P>
The following REST command must be used by a Cloud.com's EC2 service user to
load their certificate into the service. No access via the SOAP API is
possible until this step is performed. Also for this REST command to be
successful the instructions in Section 1.1 must be performed first.
<pre>
http://&lt;fqdn-or-ip>:&lt;port>/bridge/rest/AmazonEC2?Action=SetCertificate&AWSAccessKeyId=&lt;Cloud.com API AccessKey>&cert=&lt;pem encoded cert>
</pre>
SetCertificate is an <I>authenticated</I> REST call using the same authentication scheme as all other EC2 REST calls.
This means that the following standard EC2 REST paramters must also be part of the request: Signature, SignatureMethod, Version,
SignatureVersion, and Expires <A href="#ref3">[3]</A>.</br>
A HTTP 200 result code is returned on success and a 404 on failure.
<P>
An example of a PEM encoded X509 Certificate is <A href="#ref5">[5]</A>:
<pre>
-----BEGIN CERTIFICATE-----
MIICdzCCAeCgAwIBAgIGAPCRHu3UMA0GCSqGSIb3DQEBBQUAMFMxCzAJBgNVBAYT
AlVTMRMwEQYDVQQKEwpBbWF6b24uY29tMQwwCgYDVQQLEwNBV1MxITAfBgNVBAMT
GEFXUyBMaW1pdGVkLUFzc3VyYW5jZSBDQTAeFw0xMDA2MjMxODE4MTZaFw0xMTA2
MjMxODE4MTZaMFIxCzAJBgNVBAYTAlVTMRMwEQYDVQQKEwpBbWF6b24uY29tMRcw
FQYDVQQLEw5BV1MtRGV2ZWxvcGVyczEVMBMGA1UEAxMMZWZieDQ0eXF1d3E2MIGf
MA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCw+RO1QV7t5EbluyAAD11SoZ4ats5t
DBSta/QB3G9T0y3p2gURrYMDYVJ1BZmyel/DuMANx6UG6Vw+0o0SXOS3mH8Yu/lO
OOH9WxWiXulGMIrpPCiUpnWMrWhIlHu8mqLLhBx+5k4I92plMfH97BySunbv9zaf
ZRKXX3cXIYbUMwIDAQABo1cwVTAOBgNVHQ8BAf8EBAMCBaAwFgYDVR0lAQH/BAww
CgYIKwYBBQUHAwIwDAYDVR0TAQH/BAIwADAdBgNVHQ4EFgQUCzKwCQvocPYFki/9
NORZFTsjcZ8wDQYJKoZIhvcNAQEFBQADgYEAXmIe6+XsNHYIiLGQO6dh8nvHHzDw
3sltNa7z6BSdNr7WDxpJg9oFUcddQVca1LZsjsqx6dIc1WxQUjPE9oOfSYqQZuMD
/GOpWyXMb/oJ2MLI1Vp1ABKhHoHUJmPOrIou4UbCifMeD7MFZkezkKDqqH3jQMjA
4YDNkSWLnJ9xba8=
-----END CERTIFICATE-----
</pre>
<P>
To remove a previously loaded certificate the user can simply execute
the following REST command.
<pre>
http://&lt;fqdn-or-ip>:&lt;port>/bridge/rest/AmazonEC2?Action=DeleteCertificate&AWSAccessKeyId=&lt;Cloud.com API AccessKey>
where the same value for the 'AWSAccessKeyId' parameter as was used in a previous call to SetCertificate.
</pre>
DeleteCertificate is an <I>authenticated</I> REST call using the same authentication scheme (and having all the same
required parameters) as all other EC2 REST calls.</br>
A HTTP 200 result code is returned on success and a 404 on failure.
<P>
<H3 id="endpoints">2. Endpoints</H3>
For SOAP access the endpoint is:
<pre>http://&lt;fqdn-or-ip>:&lt;port>/bridge/services/AmazonEC2</pre>
For REST access the endpoint is:
<pre>http://&lt;fqdn-or-ip>:&lt;port>/bridge/rest/AmazonEC2</pre>
<P>
<H3 id="differences">3. Differences between Amazon's and Cloud.com's EC2 Implementations</H3>
<font size=+1><I>EC2's RegisterImage Function</I></font>
<P>
This function maps to the Cloud.com's API "registerTemplate" function <A href="#ref2">[2]</A>. However the registerTemplate function
requires the following additional parameters that are not present in the RegisterImage function:
<pre>
format - the format for the template. Possible values include QCOW2, RAW, and VHD.</br>
osTypeId - the ID of the OS Type that best represents the OS of this template.</br>
zoneId - the ID of the zone the template is to be hosted on.</br>
</pre>
These parameters must be provided for a successful registerTemplate call and thus a RegsiterImage call.
To accomidate these values we have redefined the "architecture" parameter defined for RegisterImage.
The Amazon defined valid values are: "i386 | x86_64" and it is of type xsd:string. Neither of these
defined values has any meaning in the context of the Cloud.com API.
The new definition of the architecture field is a three part value of the form:
"&lt;format>:&lt;zoneName>:&lt;osTypeName>", where ":" is the field delimitor. A valid example
would be: "VHD:ZONE1:Centos 4.5". Cloud.com's EC2 code translates the "zoneName" value into a valid zoneId,
and the "osTypeName" value into a matching osTypeId. In addition, whereas the architecture field
is optional in Amazon's definition of RegisterImage, it is required in Cloud.com's modified version.
<P>
Another difference for the RegisterImage function concerns the use of the "imageLocation" parameter.
As defined by Amazon <A href="#ref3">[3]</A>:
<pre>
imageLocation - a full path to your AMI manifest in Amazon S3 storage.
</pre>
As defined for Cloud.com's EC2 implementation:
<pre>
imageLocation - is a URL of where the template is hosted. Possible URL include http:// and https://
</pre>
<P>
<font size=+1><I>EC2's DescribeInstances Function</I></font>
<P>
Only the following list of filters are currently supported:
<pre>
availability-zone
hypervisor
image-id
instance-id
instance-type
instance-state-code
instance-state-name
ip-address
owner-id
root-device-name
</pre>
<P>
<font size=+1><I>EC2's DescribeVolumes Function</I></font>
<P>
Only the following list of filters are currently supported:
<pre>
attachment.attach-time
attachment.device
attachment.instance-id
availability-zone
create-time
size
snapshot-id
status
volume-id
</pre>
<P>
<font size=+1><I>EC2's DescribeSnapshots Function</I></font>
<P>
Only the following list of filters are currently supported:
<pre>
owner-alias
owner-id (here its the CloudStack API key)
snapshot-id
start-time
status
volume-id
volume-size
</pre>
<P>
<P>
<font size=+1><I>EC2's DescribeSecurityGroups Function</I></font>
<P>
Only the following list of filters are currently supported:
<pre>
description
group-id
group-name
ip-permission.cidr
ip-permission.from-port
ip-permission.to-port
ip-permission.protocol
owner-id
</pre>
<P>
<H3 id="misc">4. Miscellaneous</H3>
The EC2 service provides a Cloud.com extension to obtain the release version of the EC2 software.
<pre>
http://&lt;fqdn-or-ip>:&lt;port>/bridge/rest/AmazonEC2?Action=CloudEC2Version
</pre>
CloudEC2Version is an <I>unauthorized</I> REST call.</br>
An example of a valid response from this function is:
<pre>
&lt;CloudEC2Version>1.01&lt;/CloudEC2Version>
</pre>
<P></BR>
<H2 id="part2">Part 2. Generic EC2 Details</H2>
<H3 id="functions">List of EC2 Functions Implemented</H3>
Refer to the Amazon EC2 documentation <A href="#ref3">[3]</A> for a description of each function.
Also see Part1, section 3 above, for differences between Amazon's and Cloud.com's EC2 implementations.
<pre>
AllocateAddress
AssociateAddress
AttachVolume
AuthorizeSecurityGroupIngress
CreateImage
CreateSecurityGroup
CreateSnapshot
CreateVolume
DeleteSecurityGroup
DeleteSnapshot
DeleteVolume
DeregisterImage
DescribeAvailabilityZones
DescribeImageAttribute
DescribeImages
DescribeInstanceAttribute
DescribeInstances
DescribeSecurityGroups
DescribeSnapshots
DescribeVolumes
DetachVolume
DisassociateAddress
ModifyImageAttribute
RebootInstances
ReleaseAddress
RegisterImage
RevokeSecurityGroupIngress
ResetImageAttribute
RunInstances
StartInstances
StopInstances
TerminateInstances
</pre>
<P>
<H3 id="wsdl">Supported WSDL Version</H3>
<A href="http://ec2.amazonaws.com/doc/2010-08-31/">http://ec2.amazonaws.com/doc/2010-08-31/</A></BR>
Amazon EC2 Command Line Tool used for testing was version 1.3-57419.
<P>
</BR>
<H2 id="refs">References</H2>
<OL>
<LI id="ref1"><A href="http://en.wikipedia.org/wiki/Public_Key_Cryptography">Public-key cryptograph</A></LI>
<LI id="ref2"><A href="http://cloud.com/community/kb">Cloud.com's Developer API</A></LI>
<LI id="ref3"><A href="http://aws.amazon.com/documentation/ec2/">Amazon's EC2 API</A></LI>
<LI id="ref4"><A href="http://en.wikipedia.org/wiki/WS-Security">WS-Security</A></LI>
<LI id="ref5"><A href="http://en.wikipedia.org/wiki/X.509">X.509 Certificates</A></LI>
</OL>
</BODY>
</HTML>

View File

@ -1,21 +0,0 @@
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.
-----------------------------------------------------------
To generate the Java AXIS2 classes from the Amazon EC2 wsdl use the following command line:
C:\axis2-1.5.1\bin>wsdl2java.bat -ss -sd -ssi -g -p com.amazon.ec2 -ns2p "http://ec2.amazonaws.com/doc/2010-08-31/"=com.amazon.ec2 -uri ec2.wsdl

View File

@ -1,120 +0,0 @@
<HTML>
<!--
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.
-->
<HEAD>
<TITLE>Cloud.com's S3 API User's Guide</TITLE>
</HEAD>
<BODY>
<H1>Cloud.com's S3 API User's Guide</H1>
3/4/2011
<H2>Table of Contents</H2>
<UL>
<LI><A href="#part1">Part 1. Cloud.com's Specific Implementation Details</A></LI>
<UL>
<LI><A href="#registration">User Registration</A></LI>
<LI><A href="#endpoints">Endpoints</LI>
</UL>
<LI><A href="#part2">Part 2. Generic S3 Details</A></LI>
<UL>
<LI><A href="#functions">List of S3 Functions Implemented</A></LI>
<LI><A href="#wsdl">Supported WSDL Version</A><P></LI>
</UL>
<LI><A href="#refs">References</A></LI>
</UL>
<P></BR>
<H2 id="part1">Part 1. Cloud.com's Specific Implementation Details</H2>
<H3 id="registration">User Registration</H3>
The S3 service uses the user's Cloud.com API access and secret keys <A href="#ref1">[1]</A> to implement both
the REST and SOAP authentication algorithms. This is done by re-using an EC2 provided REST command. Once
this URL is invoked the user has registered for both the S3 service and the EC2 REST service.
<pre>
http://&lt;fqdn-or-ip>:&lt;port>/bridge/rest/AmazonS3?Action=SetUserKeys&accesskey=&lt;key>&secretkey=&lt;key>
</pre>
SetUserKeys is an <I>unauthorized</I> REST call.</br>
A HTTP 200 result code is returned on success and a 401 on failure.
<P>
<P>
<H3 id="endpoints">Endpoints</H3>
For SOAP access the endpoint is:
<pre>http://&lt;fqdn-or-ip>:&lt;port>/bridge/services/AmazonS3</pre>
For the SOAP PutObject function with a DIME attachment <A href="#ref3">[3]</A>:
<pre>http://&lt;fqdn-or-ip>:&lt;port>/bridge/dime/AmazonS3</pre>
For REST access the endpoint is:
<pre>http://&lt;fqdn-or-ip>:&lt;port>/bridge/rest/AmazonS3</pre>
<P>
<H2 id="part2">Part 2. Generic S3 Details</H2>
<H3 id="functions">List of S3 Functions Implemented</H3>
Refer to the Amazon S3 documentation <A href="#ref2">[2]</A> for a description of each function.
Also see Part1, section 3 above, for a list of unsupported S3 features.
<pre>
REST calls:
GET Service
DELETE Bucket
GET Bucket
GET Bucket acl
GET Bucket versioning
PUT Bucket
PUT Bucket acl
PUT Bucket versioning
List Multipart Uploads
DELETE Object
GET Object
GET Object acl
HEAD Object
POST Object
PUT Object
PUT Object (Copy)
Initiate Multipart Upload
Upload Part
Complete Multipart Upload
Abort Multipart Upload
List Parts
SOAP calls:
ListAllMyBuckets
CreateBucket
DeleteBucket
ListBucket
GetBucketAccessControlPolicy
SetBucketAccessControlPolicy
PutObjectInline
PutObject
CopyObject
GetObject
GetObjectExtended
DeleteObject
GetObjectAccessControlPolicy
SetObjectAccessControlPolicy
</pre>
<P>
<H3 id="wsdl">Supported WSDL Version</H3>
<A href="http://s3.amazonaws.com/doc/2006-03-01/">http://s3.amazonaws.com/doc/2006-03-01/</A></BR>
<P>
</BR>
<H2 id="refs">References</H2>
<OL>
<LI id="ref1"><A href="http://cloud.com/community/kb">Cloud.com's Developer API</A></LI>
<LI id="ref2"><A href="http://aws.amazon.com/documentation/s3/">Amazon's S3 API</A></LI>
<LI id="ref3"><A href="http://msdn.microsoft.com/en-us/magazine/cc188797.aspx">DIME</A></LI>
</OL>
</BODY>
</HTML>

View File

@ -1,29 +0,0 @@
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.
-----------------------------------------------------------
Example of headers for a rest call of copyObject
Authorization: AWS Mark:djdjdjdjdjdjdjdj\n
Host: Henry2.s3.amazonaws.com\n
x-amz-copy-source: /Henry1/test1\n
x-amz-metadata-directive: REPLACE\n
x-amz-meta-hight: 55 feet\n
x-amz-meta-width: 13 yards\n
x-amz-meta-weight: 4 tons\n
x-amz-acl: public-read\n

View File

@ -1,66 +0,0 @@
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.
-----------------------------------------------------------
To generate the Java AXIS2 classes from the Amazon EC2 wsdl use the following command line, assuming source definitions in the local directory:
$ wsdl2java.sh -ss -sd -ssi -g -p com.amazon.s3 -ns2p "http://s3.amazonaws.com/doc/2006-03-01/"=com.amazon.s3 -uri cloud-AmazonS3.wsdl
This runs the wsdl2java code generation tool to produce stubs with asynchronous invocation methods, such as those useful for REST using the com.amazon.s3 package.
This creates the following java source files in the src/com/amazon/s3 subdirectory …
AccessControlList.java ListAllMyBucketsResponse.java
AccessControlPolicy.java ListAllMyBucketsResult.java
AmazonCustomerByEmail.java ListBucket.java
AmazonS3CallbackHandler.java ListBucketResponse.java
AmazonS3MessageReceiverInOut.java ListBucketResult.java
AmazonS3Skeleton.java ListEntry.java
AmazonS3SkeletonInterface.java ListVersionsResponse.java
AmazonS3Stub.java ListVersionsResult.java
BucketLoggingStatus.java ListVersionsResultChoice_type0.java
CanonicalUser.java LocationConstraint.java
CopyObject.java LoggingSettings.java
CopyObjectResponse.java MetadataDirective.java
CopyObjectResult.java MetadataEntry.java
CreateBucket.java MfaDeleteStatus.java
CreateBucketConfiguration.java NotificationConfiguration.java
CreateBucketResponse.java Payer.java
CreateBucketResult.java Permission.java
DeleteBucket.java PostResponse.java
DeleteBucketResponse.java PrefixEntry.java
DeleteMarkerEntry.java PutObject.java
DeleteObject.java PutObjectInline.java
DeleteObjectResponse.java PutObjectInlineResponse.java
ExtensionMapper.java PutObjectResponse.java
GetBucketAccessControlPolicy.java PutObjectResult.java
GetBucketAccessControlPolicyResponse.java RequestPaymentConfiguration.java
GetBucketLoggingStatus.java Result.java
GetBucketLoggingStatusResponse.java SetBucketAccessControlPolicy.java
GetObject.java SetBucketAccessControlPolicyResponse.java
GetObjectAccessControlPolicy.java SetBucketLoggingStatus.java
GetObjectAccessControlPolicyResponse.java SetBucketLoggingStatusResponse.java
GetObjectExtended.java SetObjectAccessControlPolicy.java
GetObjectExtendedResponse.java SetObjectAccessControlPolicyResponse.java
GetObjectResponse.java Status.java
GetObjectResult.java StorageClass.java
Grant.java TopicConfiguration.java
Grantee.java User.java
Group.java VersionEntry.java
ListAllMyBuckets.java VersioningConfiguration.java
ListAllMyBucketsEntry.java VersioningStatus.java
ListAllMyBucketsList.java

View File

@ -16,16 +16,15 @@
specific language governing permissions and limitations
under the License.
-->
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<artifactId>cloud-awsapi</artifactId>
<version>4.0.0-SNAPSHOT</version>
<name>Apache CloudStack AWS API Bridge</name>
<packaging>war</packaging>
<parent>
<groupId>org.apache.cloudstack</groupId>
<artifactId>cloudstack</artifactId>
<version>4.0.0-SNAPSHOT</version>
<version>4.1.0-SNAPSHOT</version>
</parent>
<dependencies>
<dependency>
@ -38,6 +37,11 @@
<artifactId>axis2</artifactId>
<version>${cs.axis2.version}</version>
</dependency>
<dependency>
<groupId>org.apache.axis2</groupId>
<artifactId>axis2-adb</artifactId>
<version>${cs.axis2.version}</version>
</dependency>
<dependency>
<groupId>org.apache.axis2</groupId>
<artifactId>axis2-webapp</artifactId>
@ -46,7 +50,7 @@
</dependency>
<dependency>
<groupId>org.apache.ws.commons.axiom</groupId>
<artifactId>axiom-api</artifactId>
<artifactId>axiom-impl</artifactId>
<version>${cs.axiom.version}</version>
</dependency>
<dependency>
@ -58,6 +62,16 @@
<groupId>org.apache.neethi</groupId>
<artifactId>neethi</artifactId>
<version>${cs.neethi.version}</version>
<exclusions>
<exclusion>
<groupId>org.apache.ws.commons.axiom</groupId>
<artifactId>axiom-api</artifactId>
</exclusion>
<exclusion>
<groupId>org.apache.ws.commons.axiom</groupId>
<artifactId>axiom-impl</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>com.google.code.gson</groupId>
@ -100,6 +114,10 @@
<groupId>bouncycastle</groupId>
<artifactId>bcprov-jdk14</artifactId>
</exclusion>
<exclusion>
<groupId>org.apache.xalan</groupId>
<artifactId>xalan</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
@ -112,6 +130,10 @@
<groupId>bouncycastle</groupId>
<artifactId>bcprov-jdk14</artifactId>
</exclusion>
<exclusion>
<groupId>org.apache.xalan</groupId>
<artifactId>xalan</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
@ -119,35 +141,53 @@
<artifactId>rampart-core</artifactId>
<version>${cs.rampart.version}</version>
<scope>runtime</scope>
<exclusions>
<exclusion>
<groupId>org.apache.xalan</groupId>
<artifactId>xalan</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>org.apache.rampart</groupId>
<artifactId>rampart-policy</artifactId>
<version>${cs.rampart.version}</version>
<scope>runtime</scope>
<exclusions>
<exclusion>
<groupId>org.apache.xalan</groupId>
<artifactId>xalan</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>org.apache.rampart</groupId>
<artifactId>rampart-trust</artifactId>
<version>${cs.rampart.version}</version>
<scope>runtime</scope>
<exclusions>
<exclusion>
<groupId>org.apache.xalan</groupId>
<artifactId>xalan</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-jdk14</artifactId>
<version>1.5.11</version>
<version>1.6.1</version>
<scope>runtime</scope>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
<version>1.5.11</version>
<version>1.6.1</version>
<scope>runtime</scope>
</dependency>
<dependency>
<groupId>org.apache.ws.security</groupId>
<artifactId>wss4j</artifactId>
<version>1.5.8</version>
<version>1.6.1</version>
<scope>runtime</scope>
</dependency>
<dependency>
@ -192,6 +232,12 @@
<version>1.45</version>
<scope>runtime</scope>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.21</version>
<scope>runtime</scope>
</dependency>
</dependencies>
<build>
<defaultGoal>install</defaultGoal>
@ -203,6 +249,9 @@
<exclude>**/*.java</exclude>
</excludes>
</resource>
<resource>
<directory>../utils/conf/</directory>
</resource>
</resources>
<plugins>
<plugin>
@ -254,6 +303,22 @@
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.mortbay.jetty</groupId>
<artifactId>maven-jetty-plugin</artifactId>
<version>6.1.26</version>
<configuration>
<connectors>
<connector implementation="org.mortbay.jetty.nio.SelectChannelConnector">
<port>7080</port>
<maxIdleTime>60000</maxIdleTime>
</connector>
</connectors>
<contextPath>/awsapi</contextPath>
<webXml>${basedir}/web/web.xml</webXml>
<webAppSourceDirectory>${basedir}/target/cloud-awsapi-${project.version}</webAppSourceDirectory>
</configuration>
</plugin>
</plugins>
<!--
<testSourceDirectory>test</testSourceDirectory>
@ -273,39 +338,49 @@
</plugins>
-->
<pluginManagement>
<plugins>
<!--This plugin's configuration is used to store Eclipse m2e settings only. It has no influence on the Maven build itself.-->
<plugin>
<groupId>org.eclipse.m2e</groupId>
<artifactId>lifecycle-mapping</artifactId>
<version>1.0.0</version>
<configuration>
<lifecycleMappingMetadata>
<pluginExecutions>
<pluginExecution>
<pluginExecutionFilter>
<groupId>
org.apache.maven.plugins
</groupId>
<artifactId>
maven-dependency-plugin
</artifactId>
<versionRange>
[2.5.1,)
</versionRange>
<goals>
<goal>copy-dependencies</goal>
</goals>
</pluginExecutionFilter>
<action>
<ignore></ignore>
</action>
</pluginExecution>
</pluginExecutions>
</lifecycleMappingMetadata>
</configuration>
</plugin>
</plugins>
<plugins>
<plugin>
<groupId>org.eclipse.m2e</groupId>
<artifactId>lifecycle-mapping</artifactId>
<version>1.0.0</version>
<configuration>
<lifecycleMappingMetadata>
<pluginExecutions>
<pluginExecution>
<pluginExecutionFilter>
<groupId>
org.apache.maven.plugins
</groupId>
<artifactId>
maven-antrun-plugin
</artifactId>
<versionRange>[1.7,)</versionRange>
<goals>
<goal>run</goal>
</goals>
</pluginExecutionFilter>
<action>
<ignore />
</action>
</pluginExecution>
<pluginExecution>
<pluginExecutionFilter>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-dependency-plugin</artifactId>
<versionRange>[2.0,)</versionRange>
<goals>
<goal>copy-dependencies</goal>
</goals>
</pluginExecutionFilter>
<action>
<execute />
</action>
</pluginExecution>
</pluginExecutions>
</lifecycleMappingMetadata>
</configuration>
</plugin>
</plugins>
</pluginManagement>
</build>
</project>

View File

@ -1,24 +1,24 @@
# 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.
org.apache.ws.security.crypto.provider=org.apache.ws.security.components.crypto.Merlin
org.apache.ws.security.crypto.merlin.keystore.type=jks
org.apache.ws.security.crypto.merlin.keystore.password=apache
org.apache.ws.security.crypto.merlin.keystore.alias=xeskey
org.apache.ws.security.crypto.merlin.alias.password=apache
org.apache.ws.security.crypto.merlin.file=xes.keystore
# 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.
org.apache.ws.security.crypto.provider=org.apache.ws.security.components.crypto.Merlin
org.apache.ws.security.crypto.merlin.keystore.type=jks
org.apache.ws.security.crypto.merlin.keystore.password=apache
org.apache.ws.security.crypto.merlin.keystore.alias=xeskey
org.apache.ws.security.crypto.merlin.alias.password=apache
org.apache.ws.security.crypto.merlin.file=xes.keystore

File diff suppressed because it is too large Load Diff

View File

@ -1,18 +1,18 @@
rem Licensed to the Apache Software Foundation (ASF) under one
rem or more contributor license agreements. See the NOTICE file
rem distributed with this work for additional information
rem regarding copyright ownership. The ASF licenses this file
rem to you under the Apache License, Version 2.0 (the
rem "License"); you may not use this file except in compliance
rem with the License. You may obtain a copy of the License at
rem
rem http://www.apache.org/licenses/LICENSE-2.0
rem
rem Unless required by applicable law or agreed to in writing,
rem software distributed under the License is distributed on an
rem "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
rem KIND, either express or implied. See the License for the
rem specific language governing permissions and limitations
rem under the License.
java -cp cloud-tool.jar;./lib/XmlSchema-1.4.3.jar;./lib/antlr-2.7.6.jar;./lib/apache-log4j-extras-1.0.jar;./lib/axiom-api-1.2.8.jar;./lib/axiom-impl-1.2.8.jar;./lib/axis2-adb-1.5.1.jar;./lib/axis2-ant-plugin-1.5.1.jar;./lib/axis2-jaxbri-1.5.1.jar;./lib/axis2-jaxws-1.5.1.jar;./lib/axis2-jibx-1.5.1.jar;./lib/axis2-json-1.5.1.jar;./lib/axis2-kernel-1.5.1.jar;./lib/axis2-transport-http-1.5.1.jar;./lib/axis2-transport-local-1.5.1.jar;./lib/commons-codec-1.3.jar;./lib/commons-collections-3.1.jar;./lib/commons-fileupload-1.2.jar;./lib/commons-httpclient-3.1.jar;./lib/commons-io-1.4.jar;./lib/commons-logging-1.1.1.jar;./lib/dom4j-1.6.1.jar;./lib/hibernate3.jar;./lib/httpcore-4.0.jar;./lib/javassist-3.9.0.GA.jar;./lib/jta-1.1.jar;./lib/junit-4.8.1.jar;./lib/log4j-1.2.15.jar;./lib/mail-1.4.jar;./lib/mysql-connector-java-5.1.7-bin.jar;./lib/neethi-2.0.4.jar;./lib/servlet-api.jar;./lib/slf4j-api-1.5.11.jar;./lib/slf4j-simple-1.5.11.jar;./lib/wsdl4j-1.6.2.jar com.cloud.gate.tool.CloudS3CmdTool %*
rem Licensed to the Apache Software Foundation (ASF) under one
rem or more contributor license agreements. See the NOTICE file
rem distributed with this work for additional information
rem regarding copyright ownership. The ASF licenses this file
rem to you under the Apache License, Version 2.0 (the
rem "License"); you may not use this file except in compliance
rem with the License. You may obtain a copy of the License at
rem
rem http://www.apache.org/licenses/LICENSE-2.0
rem
rem Unless required by applicable law or agreed to in writing,
rem software distributed under the License is distributed on an
rem "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
rem KIND, either express or implied. See the License for the
rem specific language governing permissions and limitations
rem under the License.
java -cp cloud-tool.jar;./lib/XmlSchema-1.4.3.jar;./lib/antlr-2.7.6.jar;./lib/apache-log4j-extras-1.0.jar;./lib/axiom-api-1.2.8.jar;./lib/axiom-impl-1.2.8.jar;./lib/axis2-adb-1.5.1.jar;./lib/axis2-ant-plugin-1.5.1.jar;./lib/axis2-jaxbri-1.5.1.jar;./lib/axis2-jaxws-1.5.1.jar;./lib/axis2-jibx-1.5.1.jar;./lib/axis2-json-1.5.1.jar;./lib/axis2-kernel-1.5.1.jar;./lib/axis2-transport-http-1.5.1.jar;./lib/axis2-transport-local-1.5.1.jar;./lib/commons-codec-1.3.jar;./lib/commons-collections-3.1.jar;./lib/commons-fileupload-1.2.jar;./lib/commons-httpclient-3.1.jar;./lib/commons-io-1.4.jar;./lib/commons-logging-1.1.1.jar;./lib/dom4j-1.6.1.jar;./lib/hibernate3.jar;./lib/httpcore-4.0.jar;./lib/javassist-3.9.0.GA.jar;./lib/jta-1.1.jar;./lib/junit-4.8.1.jar;./lib/log4j-1.2.15.jar;./lib/mail-1.4.jar;./lib/mysql-connector-java-5.1.7-bin.jar;./lib/neethi-2.0.4.jar;./lib/servlet-api.jar;./lib/slf4j-api-1.5.11.jar;./lib/slf4j-simple-1.5.11.jar;./lib/wsdl4j-1.6.2.jar com.cloud.gate.tool.CloudS3CmdTool %*

View File

@ -52,7 +52,12 @@ public class CloudStackConfigurationDaoImpl extends GenericDaoBase<CloudStackCon
txn.start();
SearchCriteria<CloudStackConfigurationVO> sc = NameSearch.create();
sc.setParameters("name", name);
return findOneBy(sc).getValue();
CloudStackConfigurationVO configItem = findOneBy(sc);
if (configItem == null) {
s_logger.warn("No configuration item found with name " + name);
return null;
}
return configItem.getValue();
}finally {
}

View File

@ -65,7 +65,7 @@ public class EC2MainServlet extends HttpServlet{
}
logger.info("Value of EC2 API Flag ::" + value);
}catch(Exception e){
throw new ServletException("Error initializing awsapi: " + e.getMessage());
throw new ServletException("Error initializing awsapi: " + e.getMessage(), e);
}
}

View File

@ -1,37 +1,37 @@
<HTML>
<!--
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.
-->
<BODY>
Save the cert into Cloud's EC2 Service:
<P>
<FORM name="setcert" action="http://172.16.1.227:8080/bridge/rest/AmazonEC2" method="get">
<input type="hidden" name="Action" value="SetCertificate"/>
<input type="hidden" name="AWSAccessKeyId" value="NYDSzzt1Vk02-NAnjNiJES2l_ijibmRZC8t2E27TZ2pkLz62V3lRHxP1-hJQKWLiFF0ooCIEXeJZqjFvCg9VwQ" />
<input type="hidden" name="SignatureMethod" value="HmacSHA1" />
<input type="hidden" name="SignatureVersion" value="2" />
<input type="hidden" name="Expires" value="2010-11-15T10:10:10Z" />
<input type="hidden" name="Timestamp" value="2011-11-15T10:10:10Z" />
<input type="hidden" name="Version" value="2010-08-31" />
<input type="hidden" name="Signature" value="7KUYxW5YOpUZyZGCP49BudZraGU=" />
<TEXTAREA name="cert" cols=100 rows=20></TEXTAREA>
<P>
<input type="submit" value="Submit" />
</FORM>
</BODY>
</HTML>
<HTML>
<!--
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.
-->
<BODY>
Save the cert into Cloud's EC2 Service:
<P>
<FORM name="setcert" action="http://172.16.1.227:8080/bridge/rest/AmazonEC2" method="get">
<input type="hidden" name="Action" value="SetCertificate"/>
<input type="hidden" name="AWSAccessKeyId" value="NYDSzzt1Vk02-NAnjNiJES2l_ijibmRZC8t2E27TZ2pkLz62V3lRHxP1-hJQKWLiFF0ooCIEXeJZqjFvCg9VwQ" />
<input type="hidden" name="SignatureMethod" value="HmacSHA1" />
<input type="hidden" name="SignatureVersion" value="2" />
<input type="hidden" name="Expires" value="2010-11-15T10:10:10Z" />
<input type="hidden" name="Timestamp" value="2011-11-15T10:10:10Z" />
<input type="hidden" name="Version" value="2010-08-31" />
<input type="hidden" name="Signature" value="7KUYxW5YOpUZyZGCP49BudZraGU=" />
<TEXTAREA name="cert" cols=100 rows=20></TEXTAREA>
<P>
<input type="submit" value="Submit" />
</FORM>
</BODY>
</HTML>

View File

@ -1,44 +1,44 @@
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.
-----------------------------------------------------------
http://localhost:8080/gate/rest/AmazonEC2?Action=DescribeInstances&SignatureVersion=2&SignatureMethod=HmacSHA256&Version=2009-11-30&Timestamp=2010-01-07T15%3A23%3A03Z&Expires=2010-11-07T15%3A23%3A03Z&AWSAccessKeyId=O4O0Niu98EvraLKH2o8SFNMQlXZvuE5ueMDR9CHU5WA2-qv4PEQkgMcrtrNs6eHYwpLySev4Hi03_YXiHz4gGg&Signature=lyHOvu2LNxjLHIAlQo3F0JNSDtuCtqHtAX786cCZDFI=
10:44:35,804 INFO EC2RestServlet:? - Request parameter Expires:2010-11-07T15:23
:03Z
10:44:36,197 ERROR RestAuth:? - Signature mismatch, [+fhKzW5k+O33zWoJ6dUmmo9ycZi
td62M0Lwicz2jT2s=] [lyHOvu2LNxjLHIAlQo3F0JNSDtuCtqHtAX786cCZDFI=] over [GET
localhost:8080
/gate/rest/AmazonEC2
AWSAccessKeyId=O4O0Niu98EvraLKH2o8SFNMQlXZvuE5ueMDR9CHU5WA2-qv4PEQkgMcrtrNs6eHYw
pLySev4Hi03_YXiHz4gGg&Action=DescribeInstances&Expires=2010-11-07T15%3A23%3A03Z&
SignatureMethod=HmacSHA256&SignatureVersion=2&Timestamp=2010-01-07T15%3A23%3A03Z
&Version=2009-11-30]
From usercredentials table:
-----------------------+
| 4 | O4O0Niu98EvraLKH2o8SFNMQlXZvuE5ueMDR9CHU5WA2-qv4PEQkgMcrtrNs6eHYwpLySev4H
i03_YXiHz4gGg | EmskZDLp5EmwPQDzHtA2CK3heW12keN-YTTrO39Iz2Qfk8fmtkFih95B7xexhAat
rlQ5ioNns4iT9qav3WzmrQ | CN=AWS Limited-Assurance CA, OU=AWS, O=Amazon.com, C=US
, serial=1033226874324 |
+----+--------------------------------------------------------------------------
EmskZDLp5EmwPQDzHtA2CK3heW12keN-YTTrO39Iz2Qfk8fmtkFih95B7xexhAatrlQ5ioNns4iT9qav3WzmrQ
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.
-----------------------------------------------------------
http://localhost:8080/gate/rest/AmazonEC2?Action=DescribeInstances&SignatureVersion=2&SignatureMethod=HmacSHA256&Version=2009-11-30&Timestamp=2010-01-07T15%3A23%3A03Z&Expires=2010-11-07T15%3A23%3A03Z&AWSAccessKeyId=O4O0Niu98EvraLKH2o8SFNMQlXZvuE5ueMDR9CHU5WA2-qv4PEQkgMcrtrNs6eHYwpLySev4Hi03_YXiHz4gGg&Signature=lyHOvu2LNxjLHIAlQo3F0JNSDtuCtqHtAX786cCZDFI=
10:44:35,804 INFO EC2RestServlet:? - Request parameter Expires:2010-11-07T15:23
:03Z
10:44:36,197 ERROR RestAuth:? - Signature mismatch, [+fhKzW5k+O33zWoJ6dUmmo9ycZi
td62M0Lwicz2jT2s=] [lyHOvu2LNxjLHIAlQo3F0JNSDtuCtqHtAX786cCZDFI=] over [GET
localhost:8080
/gate/rest/AmazonEC2
AWSAccessKeyId=O4O0Niu98EvraLKH2o8SFNMQlXZvuE5ueMDR9CHU5WA2-qv4PEQkgMcrtrNs6eHYw
pLySev4Hi03_YXiHz4gGg&Action=DescribeInstances&Expires=2010-11-07T15%3A23%3A03Z&
SignatureMethod=HmacSHA256&SignatureVersion=2&Timestamp=2010-01-07T15%3A23%3A03Z
&Version=2009-11-30]
From usercredentials table:
-----------------------+
| 4 | O4O0Niu98EvraLKH2o8SFNMQlXZvuE5ueMDR9CHU5WA2-qv4PEQkgMcrtrNs6eHYwpLySev4H
i03_YXiHz4gGg | EmskZDLp5EmwPQDzHtA2CK3heW12keN-YTTrO39Iz2Qfk8fmtkFih95B7xexhAat
rlQ5ioNns4iT9qav3WzmrQ | CN=AWS Limited-Assurance CA, OU=AWS, O=Amazon.com, C=US
, serial=1033226874324 |
+----+--------------------------------------------------------------------------
EmskZDLp5EmwPQDzHtA2CK3heW12keN-YTTrO39Iz2Qfk8fmtkFih95B7xexhAatrlQ5ioNns4iT9qav3WzmrQ

View File

@ -1,145 +1,145 @@
<?xml version="1.0" encoding="ISO-8859-1"?>
<!--
~ 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.
-->
<!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN" "http://java.sun.com/dtd/web-app_2_3.dtd">
<web-app>
<display-name>CloudBridge</display-name>
<servlet>
<servlet-name>EC2MainServlet</servlet-name>
<display-name>EC2 Main Servlet</display-name>
<servlet-class>com.cloud.bridge.service.EC2MainServlet</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet>
<servlet-name>AxisServlet</servlet-name>
<display-name>Apache-Axis Servlet</display-name>
<servlet-class>org.apache.axis2.transport.http.AxisServlet</servlet-class>
<!--<init-param>-->
<!--<param-name>axis2.xml.path</param-name>-->
<!--<param-value>/WEB-INF/conf/axis2.xml</param-value>-->
<!--<param-name>axis2.xml.url</param-name>-->
<!--<param-value>http://localhost/myrepo/axis2.xml</param-value>-->
<!--<param-name>axis2.repository.path</param-name>-->
<!--<param-value>/WEB-INF</param-value>-->
<!--<param-name>axis2.repository.url</param-name>-->
<!--<param-value>http://localhost/myrepo</param-value>-->
<!--</init-param>-->
<load-on-startup>2</load-on-startup>
</servlet>
<servlet>
<servlet-name>AxisAdminServlet</servlet-name>
<display-name>Apache-Axis AxisAdmin Servlet (Web Admin)</display-name>
<servlet-class>
org.apache.axis2.webapp.AxisAdminServlet</servlet-class>
</servlet>
<servlet>
<servlet-name>CloudBridgeS3Servlet</servlet-name>
<display-name>Cloud.com Bridge S3 Service REST Servlet</display-name>
<servlet-class>com.cloud.bridge.service.S3RestServlet</servlet-class>
<init-param>
<param-name>readonly</param-name>
<param-value>false</param-value>
</init-param>
</servlet>
<servlet>
<servlet-name>CloudBridgeEC2Servlet</servlet-name>
<display-name>Cloud.com Bridge EC2 Service REST Servlet</display-name>
<servlet-class>com.cloud.bridge.service.EC2RestServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>CloudBridgeS3Servlet</servlet-name>
<url-pattern>/rest/AmazonS3</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>CloudBridgeS3Servlet</servlet-name>
<url-pattern>/rest/AmazonS3/*</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>CloudBridgeS3Servlet</servlet-name>
<url-pattern>/dime/AmazonS3</url-pattern>
</servlet-mapping>
<!-- EC2 examples are using that last '/' -->
<servlet-mapping>
<servlet-name>CloudBridgeEC2Servlet</servlet-name>
<url-pattern>/rest/AmazonEC2/*</url-pattern>
</servlet-mapping>
<!-- handle the common error of leaving off the last '/' -->
<servlet-mapping>
<servlet-name>CloudBridgeEC2Servlet</servlet-name>
<url-pattern>/rest/AmazonEC2</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>AxisServlet</servlet-name>
<url-pattern>/servlet/AxisServlet</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>AxisServlet</servlet-name>
<url-pattern>*.jws</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>AxisServlet</servlet-name>
<url-pattern>/services/*</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>AxisAdminServlet</servlet-name>
<url-pattern>/axis2-admin/*</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>EC2MainServlet</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>EC2MainServlet</servlet-name>
<url-pattern>/*</url-pattern>
</servlet-mapping>
<mime-mapping>
<extension>inc</extension>
<mime-type>text/plain</mime-type>
</mime-mapping>
<welcome-file-list>
<welcome-file>index.jsp</welcome-file>
<welcome-file>index.html</welcome-file>
<welcome-file>/axis2-web/index.jsp</welcome-file>
</welcome-file-list>
<error-page>
<error-code>404</error-code>
<location>/axis2-web/Error/error404.jsp</location>
</error-page>
<error-page>
<error-code>500</error-code>
<location>/axis2-web/Error/error500.jsp</location>
</error-page>
</web-app>
<?xml version="1.0" encoding="ISO-8859-1"?>
<!--
~ 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.
-->
<!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN" "http://java.sun.com/dtd/web-app_2_3.dtd">
<web-app>
<display-name>CloudBridge</display-name>
<servlet>
<servlet-name>EC2MainServlet</servlet-name>
<display-name>EC2 Main Servlet</display-name>
<servlet-class>com.cloud.bridge.service.EC2MainServlet</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet>
<servlet-name>AxisServlet</servlet-name>
<display-name>Apache-Axis Servlet</display-name>
<servlet-class>org.apache.axis2.transport.http.AxisServlet</servlet-class>
<!--<init-param>-->
<!--<param-name>axis2.xml.path</param-name>-->
<!--<param-value>/WEB-INF/conf/axis2.xml</param-value>-->
<!--<param-name>axis2.xml.url</param-name>-->
<!--<param-value>http://localhost/myrepo/axis2.xml</param-value>-->
<!--<param-name>axis2.repository.path</param-name>-->
<!--<param-value>/WEB-INF</param-value>-->
<!--<param-name>axis2.repository.url</param-name>-->
<!--<param-value>http://localhost/myrepo</param-value>-->
<!--</init-param>-->
<load-on-startup>2</load-on-startup>
</servlet>
<servlet>
<servlet-name>AxisAdminServlet</servlet-name>
<display-name>Apache-Axis AxisAdmin Servlet (Web Admin)</display-name>
<servlet-class>
org.apache.axis2.webapp.AxisAdminServlet</servlet-class>
</servlet>
<servlet>
<servlet-name>CloudBridgeS3Servlet</servlet-name>
<display-name>Cloud.com Bridge S3 Service REST Servlet</display-name>
<servlet-class>com.cloud.bridge.service.S3RestServlet</servlet-class>
<init-param>
<param-name>readonly</param-name>
<param-value>false</param-value>
</init-param>
</servlet>
<servlet>
<servlet-name>CloudBridgeEC2Servlet</servlet-name>
<display-name>Cloud.com Bridge EC2 Service REST Servlet</display-name>
<servlet-class>com.cloud.bridge.service.EC2RestServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>CloudBridgeS3Servlet</servlet-name>
<url-pattern>/rest/AmazonS3</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>CloudBridgeS3Servlet</servlet-name>
<url-pattern>/rest/AmazonS3/*</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>CloudBridgeS3Servlet</servlet-name>
<url-pattern>/dime/AmazonS3</url-pattern>
</servlet-mapping>
<!-- EC2 examples are using that last '/' -->
<servlet-mapping>
<servlet-name>CloudBridgeEC2Servlet</servlet-name>
<url-pattern>/rest/AmazonEC2/*</url-pattern>
</servlet-mapping>
<!-- handle the common error of leaving off the last '/' -->
<servlet-mapping>
<servlet-name>CloudBridgeEC2Servlet</servlet-name>
<url-pattern>/rest/AmazonEC2</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>AxisServlet</servlet-name>
<url-pattern>/servlet/AxisServlet</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>AxisServlet</servlet-name>
<url-pattern>*.jws</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>AxisServlet</servlet-name>
<url-pattern>/services/*</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>AxisAdminServlet</servlet-name>
<url-pattern>/axis2-admin/*</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>EC2MainServlet</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>EC2MainServlet</servlet-name>
<url-pattern>/*</url-pattern>
</servlet-mapping>
<mime-mapping>
<extension>inc</extension>
<mime-type>text/plain</mime-type>
</mime-mapping>
<welcome-file-list>
<welcome-file>index.jsp</welcome-file>
<welcome-file>index.html</welcome-file>
<welcome-file>/axis2-web/index.jsp</welcome-file>
</welcome-file-list>
<error-page>
<error-code>404</error-code>
<location>/axis2-web/Error/error404.jsp</location>
</error-page>
<error-page>
<error-code>500</error-code>
<location>/axis2-web/Error/error500.jsp</location>
</error-page>
</web-app>

View File

@ -225,7 +225,7 @@
<copy todir="${server.deploy.to.dir}/webapps7080/awsapi/WEB-INF/lib">
<fileset dir="${jar.dir}">
<include name="cloud-awsapi.jar" />
<include name="cloud-jasypt-1.8.jar" />
<include name="jasypt-1.9.0.jar" />
<include name="cloud-utils.jar" />
</fileset>
</copy>
@ -299,7 +299,7 @@
</fileset>
<fileset dir="${jar.dir}">
<include name="cloud-awsapi.jar" />
<include name="cloud-jasypt-1.8.jar" />
<include name="jasypt-1.9.0.jar" />
</fileset>
</copy>
<copy todir="${debian.tomcat.dir}/lib">
@ -374,7 +374,7 @@
</fileset> -->
<fileset dir="${jar.dir}">
<include name="cloud-awsapi.jar" />
<include name="cloud-jasypt-1.8.jar" />
<include name="jasypt-1.9.0.jar" />
</fileset>
</copy>
<copy todir="${rpm.tomcat.dir}/lib">

View File

@ -17,8 +17,8 @@
#new labels (begin) **********************************************************************************************
label.isolation.uri=Isolation URI
label.broadcast.uri=Broadcast URI
#new labels (end) ************************************************************************************************

View File

@ -16,8 +16,7 @@
specific language governing permissions and limitations
under the License.
-->
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<artifactId>cloud-client-ui</artifactId>
<name>Apache CloudStack Client UI</name>
@ -25,7 +24,7 @@
<parent>
<groupId>org.apache.cloudstack</groupId>
<artifactId>cloudstack</artifactId>
<version>4.0.0-SNAPSHOT</version>
<version>4.1.0-SNAPSHOT</version>
</parent>
<dependencies>
<dependency>
@ -152,15 +151,15 @@
</goals>
<configuration>
<target>
<copy todir="${basedir}/target/generated-webapp/WEB-INF/classes" >
<fileset dir="${basedir}/WEB-INF/classes" >
<copy todir="${basedir}/target/generated-webapp/WEB-INF/classes">
<fileset dir="${basedir}/WEB-INF/classes">
<include name="resources/**/*" />
</fileset>
</copy>
<copy todir="${basedir}/target/generated-webapp/WEB-INF/classes/scripts" >
<copy todir="${basedir}/target/generated-webapp/WEB-INF/classes/scripts">
<fileset dir="${basedir}/../scripts" />
</copy>
<copy todir="${basedir}/target/generated-webapp" >
<copy todir="${basedir}/target/generated-webapp">
<fileset dir="${basedir}/../ui" />
</copy>
<copy overwrite="true" todir="${basedir}/target/generated-webapp/WEB-INF/classes">
@ -204,7 +203,7 @@
</goals>
</pluginExecutionFilter>
<action>
<ignore></ignore>
<ignore />
</action>
</pluginExecution>
</pluginExecutions>
@ -214,4 +213,86 @@
</plugins>
</pluginManagement>
</build>
<profiles>
<profile>
<id>netapp</id>
<activation>
<property>
<name>nonoss</name>
</property>
</activation>
<dependencies>
<dependency>
<groupId>org.apache.cloudstack</groupId>
<artifactId>cloud-plugin-netapp</artifactId>
<version>${project.version}</version>
</dependency>
</dependencies>
</profile>
<profile>
<id>f5</id>
<activation>
<property>
<name>nonoss</name>
</property>
</activation>
<dependencies>
<dependency>
<groupId>org.apache.cloudstack</groupId>
<artifactId>cloud-plugin-network-f5</artifactId>
<version>${project.version}</version>
</dependency>
</dependencies>
</profile>
<profile>
<id>netscaler</id>
<activation>
<property>
<name>nonoss</name>
</property>
</activation>
<dependencies>
<dependency>
<groupId>org.apache.cloudstack</groupId>
<artifactId>cloud-plugin-network-netscaler</artifactId>
<version>${project.version}</version>
</dependency>
</dependencies>
</profile>
<profile>
<id>srx</id>
<activation>
<property>
<name>nonoss</name>
</property>
</activation>
<dependencies>
<dependency>
<groupId>org.apache.cloudstack</groupId>
<artifactId>cloud-plugin-network-srx</artifactId>
<version>${project.version}</version>
</dependency>
</dependencies>
</profile>
<profile>
<id>vmware</id>
<activation>
<property>
<name>nonoss</name>
</property>
</activation>
<dependencies>
<dependency>
<groupId>org.apache.cloudstack</groupId>
<artifactId>cloud-plugin-hypervisor-vmware</artifactId>
<version>${project.version}</version>
</dependency>
<dependency>
<groupId>org.apache.cloudstack</groupId>
<artifactId>cloud-vmware-base</artifactId>
<version>${project.version}</version>
</dependency>
</dependencies>
</profile>
</profiles>
</project>

View File

@ -71,10 +71,10 @@ class CloudAPI:
requests = zip(requests.keys(), requests.values())
requests.sort(key=lambda x: str.lower(x[0]))
requestUrl = "&".join(["=".join([request[0], urllib.quote_plus(str(request[1]))]) for request in requests])
hashStr = "&".join(["=".join([str.lower(request[0]), urllib.quote_plus(str.lower(str(request[1])))]) for request in requests])
requestUrl = "&".join(["=".join([request[0], urllib.quote(str(request[1],""))]) for request in requests])
hashStr = "&".join(["=".join([str.lower(request[0]), urllib.quote(str.lower(str(request[1])),"")]) for request in requests])
sig = urllib.quote_plus(base64.encodestring(hmac.new(self.securityKey, hashStr, hashlib.sha1).digest()).strip())
sig = urllib.quote_plus(base64.encodestring(hmac.new(self.securityKey, str.lower(hashStr), hashlib.sha1).digest()).strip())
requestUrl += "&signature=%s"%sig

View File

@ -76,7 +76,7 @@ CloudStack management server.
Summary: CloudStack server library
Requires: java >= 1.6.0
Obsoletes: vmops-server < %{version}-%{release}
Requires: %{name}-utils = %{version}, %{name}-core = %{version}, %{name}-deps = %{version}, tomcat6-servlet-2.5-api
Requires: %{name}-utils = %{version}, %{name}-core = %{version}, %{name}-deps = %{version}, %{name}-scripts = %{version}, tomcat6-servlet-2.5-api
Group: System Environment/Libraries
%description server
The CloudStack server libraries provide a set of Java classes for CloudStack.
@ -95,6 +95,7 @@ Requires: nfs-utils
Requires: wget
# there is a fsimage.so in the source code, which adds xen-libs as a dependence, needs to supress it, as rhel doesn't have this pacakge
AutoReqProv: no
Provides: cloud-agent-scripts = %{version}-%{release}
Obsoletes: cloud-agent-scripts < %{version}-%{release}
Group: System Environment/Libraries
%description scripts
@ -274,7 +275,7 @@ Requires: %{name}-utils = %{version}, %{name}-core = %{version}, %{name}-deps =
Requires: %{name}-setup = %{version}
Requires: %{name}-client = %{version}
Requires: jsvc
License: GPLv3+
License: Apache License 2.0
Group: System Environment/Libraries
%description usage
The CloudStack usage monitor provides usage accounting across the entire cloud for
@ -387,18 +388,20 @@ else
/sbin/service %{name}-agent condrestart >/dev/null 2>&1 || true
fi
%post client
if [ "$1" == "1" ] ; then
/sbin/chkconfig --add %{name}-management > /dev/null 2>&1 || true
/sbin/chkconfig --level 345 %{name}-management on > /dev/null 2>&1 || true
if [ -x /etc/sysconfig/modules/kvm.modules ] ; then
/bin/sh /etc/sysconfig/modules/kvm.modules
fi
if [ "$1" == "1" ] ; then
%post client
/sbin/chkconfig --add %{name}-management > /dev/null 2>&1 || true
/sbin/chkconfig --level 345 %{name}-management on > /dev/null 2>&1 || true
root=/usr/share/cloud/bridge
target=/usr/share/cloud/management/
if [ ! -e $target/webapps/awsapi ]; then
ln -s $root/webapps/awsapi $target/webapps/awsapi
mkdir -p $target/webapps7080
if [ ! -e $target/webapps7080/awsapi ]; then
ln -s $root/webapps/awsapi $target/webapps7080/awsapi
fi
jars=`ls $root/lib`
@ -412,7 +415,6 @@ if [ "$1" == "1" ] ; then
do
cp -f $root/conf/$c $target/conf
done
fi
%files utils
%defattr(0644,root,root,0755)
@ -423,12 +425,14 @@ fi
%doc %{_docdir}/%{name}-%{version}/version-info
%doc %{_docdir}/%{name}-%{version}/sccs-info
%doc %{_docdir}/%{name}-%{version}/configure-info
%doc README.html
%doc debian/copyright
%doc LICENSE
%doc NOTICE
%files client-ui
%defattr(0644,root,root,0755)
%{_datadir}/%{name}/management/webapps/client/*
%doc LICENSE
%doc NOTICE
%files server
%defattr(0644,root,root,0755)
@ -446,6 +450,8 @@ fi
%{_javadir}/%{name}-plugin-elb.jar
%{_javadir}/%{name}-plugin-nicira-nvp.jar
%config(noreplace) %{_sysconfdir}/%{name}/server/*
%doc LICENSE
%doc NOTICE
%files scripts
%defattr(-,root,root,-)
@ -453,7 +459,8 @@ fi
# maintain the following list in sync with files scripts
%{_libdir}/%{name}/common/vms/systemvm.zip
%{_libdir}/%{name}/common/vms/systemvm.iso
%doc LICENSE
%doc NOTICE
%files deps
%defattr(0644,root,root,0755)
@ -484,9 +491,14 @@ fi
%{_javadir}/jstl-1.2.jar
%{_javadir}/javax.persistence-2.0.0.jar
%{_javadir}/bcprov-jdk16-1.45.jar
%doc LICENSE
%doc NOTICE
%files core
%defattr(0644,root,root,0755)
%{_javadir}/%{name}-core.jar
%doc LICENSE
%doc NOTICE
%files python
%defattr(0644,root,root,0755)
@ -494,6 +506,8 @@ fi
%attr(0755,root,root) %{_bindir}/cloud-external-ipallocator.py
%attr(0755,root,root) %{_initrddir}/cloud-ipallocator
%dir %attr(0770,root,root) %{_localstatedir}/log/%{name}/ipallocator
%doc LICENSE
%doc NOTICE
%files setup
%attr(0755,root,root) %{_bindir}/%{name}-setup-databases
@ -507,6 +521,8 @@ fi
%{_datadir}/%{name}/setup/db/*.sql
%{_datadir}/%{name}/setup/*.sh
%{_datadir}/%{name}/setup/server-setup.xml
%doc LICENSE
%doc NOTICE
%files client
%defattr(0644,root,root,0775)
@ -530,12 +546,16 @@ fi
%dir %attr(0770,root,%{name}) %{_localstatedir}/cache/%{name}/management/temp
%dir %attr(0770,root,%{name}) %{_localstatedir}/log/%{name}/management
%dir %attr(0770,root,%{name}) %{_localstatedir}/log/%{name}/agent
%doc LICENSE
%doc NOTICE
%files agent-libs
%defattr(0644,root,root,0755)
%{_javadir}/%{name}-agent.jar
%{_javadir}/%{name}-plugin-hypervisor-kvm.jar
%{_javadir}/libvirt-0.4.9.jar
%doc LICENSE
%doc NOTICE
%files agent
%defattr(0644,root,root,0755)
@ -546,6 +566,8 @@ fi
%attr(0755,root,root) %{_initrddir}/%{name}-agent
%attr(0755,root,root) %{_bindir}/%{name}-setup-agent
%dir %attr(0770,root,root) %{_localstatedir}/log/%{name}/agent
%doc LICENSE
%doc NOTICE
%files cli
%{_bindir}/%{name}-tool
@ -555,9 +577,13 @@ fi
%dir %{_prefix}/lib*/python*/site-packages/%{name}tool
%{_prefix}/lib*/python*/site-packages/%{name}tool/*
%{_prefix}/lib*/python*/site-packages/%{name}apis.py
%doc LICENSE
%doc NOTICE
%files baremetal-agent
%attr(0755,root,root) %{_bindir}/cloud-setup-baremetal
%doc LICENSE
%doc NOTICE
%files usage
%defattr(0644,root,root,0775)
@ -567,6 +593,8 @@ fi
%config(noreplace) %{_sysconfdir}/%{name}/usage/usage-components.xml
%config(noreplace) %{_sysconfdir}/%{name}/usage/log4j-%{name}_usage.xml
%config(noreplace) %attr(0640,root,%{name}) %{_sysconfdir}/%{name}/usage/db.properties
%doc LICENSE
%doc NOTICE
%files aws-api
%defattr(0644,cloud,cloud,0755)
@ -575,6 +603,8 @@ fi
%attr(0644,root,root) %{_datadir}/cloud/setup/bridge/db/*
%attr(0755,root,root) %{_bindir}/cloudstack-aws-api-register
%attr(0755,root,root) %{_bindir}/cloud-setup-bridge
%doc LICENSE
%doc NOTICE
%changelog
* Fri Sep 14 2012 Marcus Sorensen <shadowsor@gmail.com> 4.0.1

View File

@ -1,15 +1,15 @@
-----BEGIN NEW CERTIFICATE REQUEST-----
MIICsDCCAZgCAQAwazELMAkGA1UEBhMCVVMxCzAJBgNVBAgTAkNBMRIwEAYDVQQHEwlDdXBlcnRp
bm8xDjAMBgNVBAoTBVZNT3BzMRAwDgYDVQQLEwdVbmtub3duMRkwFwYDVQQDDBAqLnJlYWxob3N0
aXAuY29tMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAg0/QLRH7PrPyPEF6eq6wsNIj
SdPhoLMmzR4XlPiaS9/SzE2cpAq2YWZ8g78HcQqDnxN/Emt9m2hyjXbPstkh5zDbDpMPDnDbnBxA
V9RSKTgRqYfQ+sQvrpsfaHesTFhE1L+4+odrvlgtzoQTPHxwgaiIgKJd9fyJHKg8cbB5UPEv6An0
5VyVGOmJ+tvDgNV4oynUZ2nVdIWfNvXL/z2SpY48EFE8q3dCh0HpLAR/mAGEqNiVJfHpDS7DovP3
D7X6I55bc0SNRl4tGTjbPFZw8ydGtoKmWPrsZc/ghmy5xp5TeI/XAaRPjH1BPt+Q6tdtbE6bEoBf
OTM/qVYZ9kut9wIDAQABoAAwDQYJKoZIhvcNAQEFBQADggEBAF5lhhni9dW9MqSL2ixNbViPWpFS
ecOggshYChJfZKrhsuZaDpumJ/+ebICS4zv/oxDwNLSmeAmydiaUQC9LFQEEwvPBYDTtTzwCrtwH
yyFJQSm6pyeIBP/Bih/5hLW8JPm0bDbp5ldrHCDEgKQeeyQhyYOKFODkTuMLw+FLD+V86IVHxElL
/urCRWyZEPwyMsgfsU6ywNX9XNShyk1uDHjFDE67sPhfw52ooxXrYQnBdTk+g0UXPbULzrCK/1kU
fjRq347V9Fwi5NFyGADOaA+q6mtnlb1i3uH1n1YVUzevvpnIr3/RxPSYHB47Kj9iYKeDlYdTRHJy
NpuvTfmQO2Y=
-----END NEW CERTIFICATE REQUEST-----
-----BEGIN NEW CERTIFICATE REQUEST-----
MIICsDCCAZgCAQAwazELMAkGA1UEBhMCVVMxCzAJBgNVBAgTAkNBMRIwEAYDVQQHEwlDdXBlcnRp
bm8xDjAMBgNVBAoTBVZNT3BzMRAwDgYDVQQLEwdVbmtub3duMRkwFwYDVQQDDBAqLnJlYWxob3N0
aXAuY29tMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAg0/QLRH7PrPyPEF6eq6wsNIj
SdPhoLMmzR4XlPiaS9/SzE2cpAq2YWZ8g78HcQqDnxN/Emt9m2hyjXbPstkh5zDbDpMPDnDbnBxA
V9RSKTgRqYfQ+sQvrpsfaHesTFhE1L+4+odrvlgtzoQTPHxwgaiIgKJd9fyJHKg8cbB5UPEv6An0
5VyVGOmJ+tvDgNV4oynUZ2nVdIWfNvXL/z2SpY48EFE8q3dCh0HpLAR/mAGEqNiVJfHpDS7DovP3
D7X6I55bc0SNRl4tGTjbPFZw8ydGtoKmWPrsZc/ghmy5xp5TeI/XAaRPjH1BPt+Q6tdtbE6bEoBf
OTM/qVYZ9kut9wIDAQABoAAwDQYJKoZIhvcNAQEFBQADggEBAF5lhhni9dW9MqSL2ixNbViPWpFS
ecOggshYChJfZKrhsuZaDpumJ/+ebICS4zv/oxDwNLSmeAmydiaUQC9LFQEEwvPBYDTtTzwCrtwH
yyFJQSm6pyeIBP/Bih/5hLW8JPm0bDbp5ldrHCDEgKQeeyQhyYOKFODkTuMLw+FLD+V86IVHxElL
/urCRWyZEPwyMsgfsU6ywNX9XNShyk1uDHjFDE67sPhfw52ooxXrYQnBdTk+g0UXPbULzrCK/1kU
fjRq347V9Fwi5NFyGADOaA+q6mtnlb1i3uH1n1YVUzevvpnIr3/RxPSYHB47Kj9iYKeDlYdTRHJy
NpuvTfmQO2Y=
-----END NEW CERTIFICATE REQUEST-----

View File

@ -63,11 +63,296 @@ function getCurrentLanguage() {
//
function KeyboardMapper() {
this.mappedInput = [];
this.jsX11KeysymMap = [];
this.jsKeyPressX11KeysymMap = [];
}
//
// RAW keyboard
// Primarily translates KeyDown/KeyUp event, either as is (if there is no mapping entry)
// or through mapped result.
//
// For KeyPress event, it translates it only if there exist a mapping entry
// in jsX11KeysymMap map and the entry meets the condition
//
// COOKED keyboard
// Primarily translates KeyPress event, either as is or through mapped result
// It translates KeyDown/KeyUp only there exists a mapping entry, or if there
// is no mapping entry, translate when certain modifier key is pressed (i.e.,
// CTRL or ALT key
//
// Mapping entry types
// direct : will be directly mapped into the entry value with the same event type
// boolean : only valid for jsX11KeysymMap, existence of this type, no matter true or false
// in value, corresponding KeyDown/KeyUp event will be masked
// array : contains a set of conditional mapping entry
//
// Conditional mapping entry
//
// {
// type: <event type>, code: <mapped key code>, modifiers: <modifiers>,
// shift : <shift state match condition>, -- match on shift state
// guestos : <guest os match condition>, -- match on guestos type
// browser: <browser type match condition>, -- match on browser
// browserVersion: <brower version match condition> -- match on browser version
// }
//
KeyboardMapper.KEYBOARD_TYPE_RAW = 0;
KeyboardMapper.KEYBOARD_TYPE_COOKED = 1;
KeyboardMapper.prototype = {
inputFeed : function(eventType, code, modifiers) {
this.mappedInput.push({type: eventType, code: code, modifiers: modifiers});
setKeyboardType : function(keyboardType) {
this.keyboardType = keyboardType;
if(keyboardType == KeyboardMapper.KEYBOARD_TYPE_RAW) {
// intialize keyboard mapping for RAW keyboard
this.jsX11KeysymMap[AjaxViewer.JS_KEY_CAPSLOCK] = AjaxViewer.X11_KEY_CAPSLOCK;
this.jsX11KeysymMap[AjaxViewer.JS_KEY_BACKSPACE] = AjaxViewer.X11_KEY_BACKSPACE;
this.jsX11KeysymMap[AjaxViewer.JS_KEY_TAB] = AjaxViewer.X11_KEY_TAB;
this.jsX11KeysymMap[AjaxViewer.JS_KEY_ENTER] = AjaxViewer.X11_KEY_ENTER;
this.jsX11KeysymMap[AjaxViewer.JS_KEY_ESCAPE] = AjaxViewer.X11_KEY_ESCAPE;
this.jsX11KeysymMap[AjaxViewer.JS_KEY_INSERT] = AjaxViewer.X11_KEY_INSERT;
this.jsX11KeysymMap[AjaxViewer.JS_KEY_DELETE] = AjaxViewer.X11_KEY_DELETE;
this.jsX11KeysymMap[AjaxViewer.JS_KEY_HOME] = AjaxViewer.X11_KEY_HOME;
this.jsX11KeysymMap[AjaxViewer.JS_KEY_END] = AjaxViewer.X11_KEY_END;
this.jsX11KeysymMap[AjaxViewer.JS_KEY_PAGEUP] = AjaxViewer.X11_KEY_PAGEUP;
this.jsX11KeysymMap[AjaxViewer.JS_KEY_PAGEDOWN] = AjaxViewer.X11_KEY_PAGEDOWN;
this.jsX11KeysymMap[AjaxViewer.JS_KEY_LEFT] = AjaxViewer.X11_KEY_LEFT;
this.jsX11KeysymMap[AjaxViewer.JS_KEY_UP] = AjaxViewer.X11_KEY_UP;
this.jsX11KeysymMap[AjaxViewer.JS_KEY_RIGHT] = AjaxViewer.X11_KEY_RIGHT;
this.jsX11KeysymMap[AjaxViewer.JS_KEY_DOWN] = AjaxViewer.X11_KEY_DOWN;
this.jsX11KeysymMap[AjaxViewer.JS_KEY_F1] = AjaxViewer.X11_KEY_F1;
this.jsX11KeysymMap[AjaxViewer.JS_KEY_F2] = AjaxViewer.X11_KEY_F2;
this.jsX11KeysymMap[AjaxViewer.JS_KEY_F3] = AjaxViewer.X11_KEY_F3;
this.jsX11KeysymMap[AjaxViewer.JS_KEY_F4] = AjaxViewer.X11_KEY_F4;
this.jsX11KeysymMap[AjaxViewer.JS_KEY_F5] = AjaxViewer.X11_KEY_F5;
this.jsX11KeysymMap[AjaxViewer.JS_KEY_F6] = AjaxViewer.X11_KEY_F6;
this.jsX11KeysymMap[AjaxViewer.JS_KEY_F7] = AjaxViewer.X11_KEY_F7;
this.jsX11KeysymMap[AjaxViewer.JS_KEY_F8] = AjaxViewer.X11_KEY_F8;
this.jsX11KeysymMap[AjaxViewer.JS_KEY_F9] = AjaxViewer.X11_KEY_F9;
this.jsX11KeysymMap[AjaxViewer.JS_KEY_F10] = AjaxViewer.X11_KEY_F10;
this.jsX11KeysymMap[AjaxViewer.JS_KEY_F11] = AjaxViewer.X11_KEY_F11;
this.jsX11KeysymMap[AjaxViewer.JS_KEY_F12] = AjaxViewer.X11_KEY_F12;
this.jsX11KeysymMap[AjaxViewer.JS_KEY_SHIFT] = AjaxViewer.X11_KEY_SHIFT;
this.jsX11KeysymMap[AjaxViewer.JS_KEY_CTRL] = AjaxViewer.X11_KEY_CTRL;
this.jsX11KeysymMap[AjaxViewer.JS_KEY_ALT] = AjaxViewer.X11_KEY_ALT;
this.jsX11KeysymMap[AjaxViewer.JS_KEY_GRAVE_ACCENT] = AjaxViewer.X11_KEY_GRAVE_ACCENT;
this.jsX11KeysymMap[AjaxViewer.JS_KEY_SUBSTRACT] = AjaxViewer.X11_KEY_SUBSTRACT;
this.jsX11KeysymMap[AjaxViewer.JS_KEY_ADD] = AjaxViewer.X11_KEY_ADD;
this.jsX11KeysymMap[AjaxViewer.JS_KEY_OPEN_BRACKET] = AjaxViewer.X11_KEY_OPEN_BRACKET;
this.jsX11KeysymMap[AjaxViewer.JS_KEY_CLOSE_BRACKET] = AjaxViewer.X11_KEY_CLOSE_BRACKET;
this.jsX11KeysymMap[AjaxViewer.JS_KEY_BACK_SLASH] = AjaxViewer.X11_KEY_BACK_SLASH;
this.jsX11KeysymMap[AjaxViewer.JS_KEY_SINGLE_QUOTE] = AjaxViewer.X11_KEY_SINGLE_QUOTE;
this.jsX11KeysymMap[AjaxViewer.JS_KEY_COMMA] = AjaxViewer.X11_KEY_COMMA;
this.jsX11KeysymMap[AjaxViewer.JS_KEY_PERIOD] = AjaxViewer.X11_KEY_PERIOD;
this.jsX11KeysymMap[AjaxViewer.JS_KEY_FORWARD_SLASH] = AjaxViewer.X11_KEY_FORWARD_SLASH;
this.jsX11KeysymMap[AjaxViewer.JS_KEY_DASH] = AjaxViewer.X11_KEY_DASH;
this.jsX11KeysymMap[AjaxViewer.JS_KEY_SEMI_COLON] = AjaxViewer.X11_KEY_SEMI_COLON;
this.jsX11KeysymMap[AjaxViewer.JS_KEY_NUMPAD0] = AjaxViewer.X11_KEY_NUMPAD0;
this.jsX11KeysymMap[AjaxViewer.JS_KEY_NUMPAD1] = AjaxViewer.X11_KEY_NUMPAD1;
this.jsX11KeysymMap[AjaxViewer.JS_KEY_NUMPAD2] = AjaxViewer.X11_KEY_NUMPAD2;
this.jsX11KeysymMap[AjaxViewer.JS_KEY_NUMPAD3] = AjaxViewer.X11_KEY_NUMPAD3;
this.jsX11KeysymMap[AjaxViewer.JS_KEY_NUMPAD4] = AjaxViewer.X11_KEY_NUMPAD4;
this.jsX11KeysymMap[AjaxViewer.JS_KEY_NUMPAD5] = AjaxViewer.X11_KEY_NUMPAD5;
this.jsX11KeysymMap[AjaxViewer.JS_KEY_NUMPAD6] = AjaxViewer.X11_KEY_NUMPAD6;
this.jsX11KeysymMap[AjaxViewer.JS_KEY_NUMPAD7] = AjaxViewer.X11_KEY_NUMPAD7;
this.jsX11KeysymMap[AjaxViewer.JS_KEY_NUMPAD8] = AjaxViewer.X11_KEY_NUMPAD8;
this.jsX11KeysymMap[AjaxViewer.JS_KEY_NUMPAD9] = AjaxViewer.X11_KEY_NUMPAD9;
this.jsX11KeysymMap[AjaxViewer.JS_KEY_DECIMAL_POINT] = AjaxViewer.X11_KEY_DECIMAL_POINT;
this.jsX11KeysymMap[AjaxViewer.JS_KEY_DIVIDE] = AjaxViewer.X11_KEY_DIVIDE;
this.jsX11KeysymMap[AjaxViewer.JS_KEY_MULTIPLY] = [
{type: AjaxViewer.KEY_DOWN, code: AjaxViewer.X11_KEY_SHIFT, modifiers: 0 },
{type: AjaxViewer.KEY_DOWN, code: AjaxViewer.X11_KEY_ASTERISK, modifiers: 0 },
{type: AjaxViewer.KEY_UP, code: AjaxViewer.X11_KEY_ASTERISK, modifiers: 0 },
{type: AjaxViewer.KEY_UP, code: AjaxViewer.X11_KEY_SHIFT, modifiers: 0 }
];
this.jsX11KeysymMap[AjaxViewer.JS_KEY_ADD] = false;
this.jsKeyPressX11KeysymMap = [];
this.jsKeyPressX11KeysymMap[61] = [
{type: AjaxViewer.KEY_DOWN, code: AjaxViewer.X11_KEY_ADD, modifiers: 0, shift: false },
{type: AjaxViewer.KEY_UP, code: AjaxViewer.X11_KEY_ADD, modifiers: 0, shift: false }
];
this.jsKeyPressX11KeysymMap[43] = [
{type: AjaxViewer.KEY_DOWN, code: AjaxViewer.X11_KEY_SHIFT, modifiers: 0, shift: false },
{type: AjaxViewer.KEY_DOWN, code: AjaxViewer.X11_KEY_ADD, modifiers: 0, shift: false },
{type: AjaxViewer.KEY_UP, code: AjaxViewer.X11_KEY_ADD, modifiers: 0, shift: false },
{type: AjaxViewer.KEY_UP, code: AjaxViewer.X11_KEY_SHIFT, modifiers: 0, shift: false },
{type: AjaxViewer.KEY_DOWN, code: AjaxViewer.X11_KEY_ADD, modifiers: 0, shift: true },
{type: AjaxViewer.KEY_UP, code: AjaxViewer.X11_KEY_ADD, modifiers: 0, shift: true }
];
} else {
// initialize mapping for COOKED keyboard
this.jsX11KeysymMap[AjaxViewer.JS_KEY_CAPSLOCK] = AjaxViewer.X11_KEY_CAPSLOCK;
this.jsX11KeysymMap[AjaxViewer.JS_KEY_BACKSPACE] = AjaxViewer.X11_KEY_BACKSPACE;
this.jsX11KeysymMap[AjaxViewer.JS_KEY_TAB] = AjaxViewer.X11_KEY_TAB;
this.jsX11KeysymMap[AjaxViewer.JS_KEY_ENTER] = AjaxViewer.X11_KEY_ENTER;
this.jsX11KeysymMap[AjaxViewer.JS_KEY_ESCAPE] = AjaxViewer.X11_KEY_ESCAPE;
this.jsX11KeysymMap[AjaxViewer.JS_KEY_INSERT] = AjaxViewer.X11_KEY_INSERT;
this.jsX11KeysymMap[AjaxViewer.JS_KEY_DELETE] = AjaxViewer.X11_KEY_DELETE;
this.jsX11KeysymMap[AjaxViewer.JS_KEY_HOME] = AjaxViewer.X11_KEY_HOME;
this.jsX11KeysymMap[AjaxViewer.JS_KEY_END] = AjaxViewer.X11_KEY_END;
this.jsX11KeysymMap[AjaxViewer.JS_KEY_PAGEUP] = AjaxViewer.X11_KEY_PAGEUP;
this.jsX11KeysymMap[AjaxViewer.JS_KEY_PAGEDOWN] = AjaxViewer.X11_KEY_PAGEDOWN;
this.jsX11KeysymMap[AjaxViewer.JS_KEY_LEFT] = AjaxViewer.X11_KEY_LEFT;
this.jsX11KeysymMap[AjaxViewer.JS_KEY_UP] = AjaxViewer.X11_KEY_UP;
this.jsX11KeysymMap[AjaxViewer.JS_KEY_RIGHT] = AjaxViewer.X11_KEY_RIGHT;
this.jsX11KeysymMap[AjaxViewer.JS_KEY_DOWN] = AjaxViewer.X11_KEY_DOWN;
this.jsX11KeysymMap[AjaxViewer.JS_KEY_F1] = AjaxViewer.X11_KEY_F1;
this.jsX11KeysymMap[AjaxViewer.JS_KEY_F2] = AjaxViewer.X11_KEY_F2;
this.jsX11KeysymMap[AjaxViewer.JS_KEY_F3] = AjaxViewer.X11_KEY_F3;
this.jsX11KeysymMap[AjaxViewer.JS_KEY_F4] = AjaxViewer.X11_KEY_F4;
this.jsX11KeysymMap[AjaxViewer.JS_KEY_F5] = AjaxViewer.X11_KEY_F5;
this.jsX11KeysymMap[AjaxViewer.JS_KEY_F6] = AjaxViewer.X11_KEY_F6;
this.jsX11KeysymMap[AjaxViewer.JS_KEY_F7] = AjaxViewer.X11_KEY_F7;
this.jsX11KeysymMap[AjaxViewer.JS_KEY_F8] = AjaxViewer.X11_KEY_F8;
this.jsX11KeysymMap[AjaxViewer.JS_KEY_F9] = AjaxViewer.X11_KEY_F9;
this.jsX11KeysymMap[AjaxViewer.JS_KEY_F10] = AjaxViewer.X11_KEY_F10;
this.jsX11KeysymMap[AjaxViewer.JS_KEY_F11] = AjaxViewer.X11_KEY_F11;
this.jsX11KeysymMap[AjaxViewer.JS_KEY_F12] = AjaxViewer.X11_KEY_F12;
this.jsX11KeysymMap[AjaxViewer.JS_KEY_SHIFT] = AjaxViewer.X11_KEY_SHIFT;
this.jsX11KeysymMap[AjaxViewer.JS_KEY_CTRL] = AjaxViewer.X11_KEY_CTRL;
this.jsX11KeysymMap[AjaxViewer.JS_KEY_ALT] = AjaxViewer.X11_KEY_ALT;
}
},
RawkeyboardInputHandler : function(eventType, code, modifiers, guestos, browser, browserVersion) {
if(eventType == AjaxViewer.KEY_DOWN || eventType == AjaxViewer.KEY_UP) {
// special handling for Alt + Ctrl + Ins, convert it into Alt-Ctrl-Del
if(code == AjaxViewer.JS_KEY_INSERT) {
if((modifiers & AjaxViewer.ALT_KEY_MASK) != 0 && (modifiers & AjaxViewer.CTRL_KEY_MASK) != 0) {
this.mappedInput.push({type : eventType, code: 0xffff, modifiers: modifiers});
return;
}
}
var X11Keysym = code;
if(this.jsX11KeysymMap[code] != undefined) {
X11Keysym = this.jsX11KeysymMap[code];
if(typeof this.jsX11KeysymMap[code] == "boolean") {
return;
} else if($.isArray(X11Keysym)) {
for(var i = 0; i < X11Keysym.length; i++) {
if(this.isConditionalEntryMatched(eventType, code, modifiers, X11Keysym[i], guestos, browser, browserVersion)) {
this.mappedInput.push(X11Keysym[i]);
}
}
} else {
this.mappedInput.push({type : eventType, code: X11Keysym, modifiers: modifiers});
}
} else {
this.mappedInput.push({type : eventType, code: X11Keysym, modifiers: modifiers});
}
// special handling for ALT/CTRL key
if(eventType == AjaxViewer.KEY_UP && (code == AjaxViewer.JS_KEY_ALT || code == code == AjaxViewer.JS_KEY_CTRL))
this.mappedInput.push({type : eventType, code: this.jsX11KeysymMap[code], modifiers: modifiers});
} else if(eventType == AjaxViewer.KEY_PRESS) {
var X11Keysym = code;
X11Keysym = this.jsKeyPressX11KeysymMap[code];
if(X11Keysym) {
if($.isArray(X11Keysym)) {
for(var i = 0; i < X11Keysym.length; i++) {
if(this.isConditionalEntryMatched(eventType, code, modifiers, X11Keysym[i], guestos, browser))
this.mappedInput.push(X11Keysym[i]);
}
} else {
this.mappedInput.push({type : AjaxViewer.KEY_DOWN, code: X11Keysym, modifiers: modifiers});
this.mappedInput.push({type : AjaxViewer.KEY_UP, code: X11Keysym, modifiers: modifiers});
}
}
}
},
CookedKeyboardInputHandler : function(eventType, code, modifiers, guestos, browser, browserVersion) {
if(eventType == AjaxViewer.KEY_DOWN || eventType == AjaxViewer.KEY_UP) {
// special handling for Alt + Ctrl + Ins, convert it into Alt-Ctrl-Del
if(code == AjaxViewer.JS_KEY_INSERT) {
if((modifiers & AjaxViewer.ALT_KEY_MASK) != 0 && (modifiers & AjaxViewer.CTRL_KEY_MASK) != 0) {
this.mappedInput.push({type : eventType, code: 0xffff, modifiers: modifiers});
return;
}
}
var X11Keysym = code;
if(this.jsX11KeysymMap[code] != undefined) {
X11Keysym = this.jsX11KeysymMap[code];
if(typeof this.jsX11KeysymMap[code] == "boolean") {
return;
} else if($.isArray(X11Keysym)) {
for(var i = 0; i < X11Keysym.length; i++) {
if(this.isConditionalEntryMatched(eventType, code, modifiers, X11Keysym[i], guestos, browser, browserVersion)) {
this.mappedInput.push(X11Keysym[i]);
}
}
} else {
this.mappedInput.push({type : eventType, code: X11Keysym, modifiers: modifiers});
}
} else {
if((modifiers & (AjaxViewer.CTRL_KEY_MASK | AjaxViewer.ALT_KEY_MASK)) != 0) {
this.mappedInput.push({type : eventType, code: X11Keysym, modifiers: modifiers});
}
}
// special handling for ALT/CTRL key
if(eventType == AjaxViewer.KEY_UP && (code == AjaxViewer.JS_KEY_ALT || code == code == AjaxViewer.JS_KEY_CTRL))
this.mappedInput.push({type : eventType, code: this.jsX11KeysymMap[code], modifiers: modifiers});
} else if(eventType == AjaxViewer.KEY_PRESS) {
// special handling for * and + key on number pad
if(code == AjaxViewer.JS_NUMPAD_MULTIPLY) {
this.mappedInput.push({type : AjaxViewer.KEY_DOWN, code: AjaxViewer.X11_KEY_SHIFT, modifiers: modifiers});
this.mappedInput.push({type : AjaxViewer.KEY_DOWN, code: 42, modifiers: modifiers});
this.mappedInput.push({type : AjaxViewer.KEY_UP, code: 42, modifiers: modifiers});
this.mappedInput.push({type : AjaxViewer.KEY_UP, code: AjaxViewer.X11_KEY_SHIFT, modifiers: modifiers});
return;
}
if(code == AjaxViewer.JS_NUMPAD_PLUS) {
this.mappedInput.push({type : AjaxViewer.KEY_DOWN, code: AjaxViewer.X11_KEY_SHIFT, modifiers: modifiers});
this.mappedInput.push({type : AjaxViewer.KEY_DOWN, code: 43, modifiers: modifiers});
this.mappedInput.push({type : AjaxViewer.KEY_UP, code: 43, modifiers: modifiers});
this.mappedInput.push({type : AjaxViewer.KEY_UP, code: AjaxViewer.X11_KEY_SHIFT, modifiers: modifiers});
return;
}
// ENTER/BACKSPACE key should already have been sent through KEY DOWN/KEY UP event
if(code == AjaxViewer.JS_KEY_ENTER || code == AjaxViewer.JS_KEY_BACKSPACE)
return;
if(code > 0) {
var X11Keysym = code;
X11Keysym = this.jsKeyPressX11KeysymMap[code];
if(X11Keysym) {
if($.isArray(X11Keysym)) {
for(var i = 0; i < X11Keysym.length; i++) {
if(this.isConditionalEntryMatched(eventType, code, modifiers, X11Keysym[i], guestos, browser))
this.mappedInput.push(X11Keysym[i]);
}
} else {
this.mappedInput.push({type : AjaxViewer.KEY_DOWN, code: X11Keysym, modifiers: modifiers});
this.mappedInput.push({type : AjaxViewer.KEY_UP, code: X11Keysym, modifiers: modifiers});
}
} else {
// if there is no mappting entry, use the JS keypress code directly
this.mappedInput.push({type : AjaxViewer.KEY_DOWN, code: code, modifiers: modifiers});
this.mappedInput.push({type : AjaxViewer.KEY_UP, code: code, modifiers: modifiers});
}
}
}
},
inputFeed : function(eventType, code, modifiers, guestos, browser, browserVersion) {
if(this.keyboardType == KeyboardMapper.KEYBOARD_TYPE_RAW)
this.RawkeyboardInputHandler(eventType, code, modifiers, guestos, browser, browserVersion);
else
this.CookedKeyboardInputHandler(eventType, code, modifiers, guestos, browser, browserVersion);
},
getMappedInput : function() {
@ -76,253 +361,44 @@ KeyboardMapper.prototype = {
return mappedInput;
},
isConditionalEntryMatched : function(eventType, code, modifiers, entry, guestos, browser, browserVersion) {
if(eventType == AjaxViewer.KEY_DOWN || eventType == AjaxViewer.KEY_UP) {
// for KeyDown/KeyUp events, we require that the type in entry should match with
// the real input
if(entry.type != eventType)
return false;
}
// check conditional match
if(entry.shift != undefined) {
var shift = ((modifiers & AjaxViewer.SHIFT_KEY_MASK) != 0 ? true : false);
if(entry.shift ^ shift)
return false;
}
if(entry.guestos != undefined) {
if(entry.guestos != guestos)
return false;
}
if(entry.browser != undefined) {
if(entry.browser != browser)
return false;
}
if(entry.browserVersion != undefined) {
if(entry.browserVersion != browserVersion)
return false;
}
return true;
},
isModifierInput : function(code) {
return $.inArray(code, [AjaxViewer.ALT_KEY_MASK, AjaxViewer.SHIFT_KEY_MASK, AjaxViewer.CTRL_KEY_MASK, AjaxViewer.META_KEY_MASK]) >= 0;
}
};
/////////////////////////////////////////////////////////////////////////////
// JsX11KeyboardMapper
//
function JsX11KeyboardMapper() {
KeyboardMapper.apply(this, arguments);
this.jsX11KeysymMap = [];
this.jsX11KeysymMap[AjaxViewer.JS_KEY_CAPSLOCK] = AjaxViewer.X11_KEY_CAPSLOCK;
this.jsX11KeysymMap[AjaxViewer.JS_KEY_BACKSPACE] = AjaxViewer.X11_KEY_BACKSPACE;
this.jsX11KeysymMap[AjaxViewer.JS_KEY_TAB] = AjaxViewer.X11_KEY_TAB;
this.jsX11KeysymMap[AjaxViewer.JS_KEY_ENTER] = AjaxViewer.X11_KEY_ENTER;
this.jsX11KeysymMap[AjaxViewer.JS_KEY_ESCAPE] = AjaxViewer.X11_KEY_ESCAPE;
this.jsX11KeysymMap[AjaxViewer.JS_KEY_INSERT] = AjaxViewer.X11_KEY_INSERT;
this.jsX11KeysymMap[AjaxViewer.JS_KEY_DELETE] = AjaxViewer.X11_KEY_DELETE;
this.jsX11KeysymMap[AjaxViewer.JS_KEY_HOME] = AjaxViewer.X11_KEY_HOME;
this.jsX11KeysymMap[AjaxViewer.JS_KEY_END] = AjaxViewer.X11_KEY_END;
this.jsX11KeysymMap[AjaxViewer.JS_KEY_PAGEUP] = AjaxViewer.X11_KEY_PAGEUP;
this.jsX11KeysymMap[AjaxViewer.JS_KEY_PAGEDOWN] = AjaxViewer.X11_KEY_PAGEDOWN;
this.jsX11KeysymMap[AjaxViewer.JS_KEY_LEFT] = AjaxViewer.X11_KEY_LEFT;
this.jsX11KeysymMap[AjaxViewer.JS_KEY_UP] = AjaxViewer.X11_KEY_UP;
this.jsX11KeysymMap[AjaxViewer.JS_KEY_RIGHT] = AjaxViewer.X11_KEY_RIGHT;
this.jsX11KeysymMap[AjaxViewer.JS_KEY_DOWN] = AjaxViewer.X11_KEY_DOWN;
this.jsX11KeysymMap[AjaxViewer.JS_KEY_F1] = AjaxViewer.X11_KEY_F1;
this.jsX11KeysymMap[AjaxViewer.JS_KEY_F2] = AjaxViewer.X11_KEY_F2;
this.jsX11KeysymMap[AjaxViewer.JS_KEY_F3] = AjaxViewer.X11_KEY_F3;
this.jsX11KeysymMap[AjaxViewer.JS_KEY_F4] = AjaxViewer.X11_KEY_F4;
this.jsX11KeysymMap[AjaxViewer.JS_KEY_F5] = AjaxViewer.X11_KEY_F5;
this.jsX11KeysymMap[AjaxViewer.JS_KEY_F6] = AjaxViewer.X11_KEY_F6;
this.jsX11KeysymMap[AjaxViewer.JS_KEY_F7] = AjaxViewer.X11_KEY_F7;
this.jsX11KeysymMap[AjaxViewer.JS_KEY_F8] = AjaxViewer.X11_KEY_F8;
this.jsX11KeysymMap[AjaxViewer.JS_KEY_F9] = AjaxViewer.X11_KEY_F9;
this.jsX11KeysymMap[AjaxViewer.JS_KEY_F10] = AjaxViewer.X11_KEY_F10;
this.jsX11KeysymMap[AjaxViewer.JS_KEY_F11] = AjaxViewer.X11_KEY_F11;
this.jsX11KeysymMap[AjaxViewer.JS_KEY_F12] = AjaxViewer.X11_KEY_F12;
this.jsX11KeysymMap[AjaxViewer.JS_KEY_SHIFT] = AjaxViewer.X11_KEY_SHIFT;
this.jsX11KeysymMap[AjaxViewer.JS_KEY_CTRL] = AjaxViewer.X11_KEY_CTRL;
this.jsX11KeysymMap[AjaxViewer.JS_KEY_ALT] = AjaxViewer.X11_KEY_ALT;
this.jsX11KeysymMap[AjaxViewer.JS_KEY_GRAVE_ACCENT] = AjaxViewer.X11_KEY_GRAVE_ACCENT;
this.jsX11KeysymMap[AjaxViewer.JS_KEY_SUBSTRACT] = AjaxViewer.X11_KEY_SUBSTRACT;
this.jsX11KeysymMap[AjaxViewer.JS_KEY_ADD] = AjaxViewer.X11_KEY_ADD;
this.jsX11KeysymMap[AjaxViewer.JS_KEY_OPEN_BRACKET] = AjaxViewer.X11_KEY_OPEN_BRACKET;
this.jsX11KeysymMap[AjaxViewer.JS_KEY_CLOSE_BRACKET] = AjaxViewer.X11_KEY_CLOSE_BRACKET;
this.jsX11KeysymMap[AjaxViewer.JS_KEY_BACK_SLASH] = AjaxViewer.X11_KEY_BACK_SLASH;
this.jsX11KeysymMap[AjaxViewer.JS_KEY_SINGLE_QUOTE] = AjaxViewer.X11_KEY_SINGLE_QUOTE;
this.jsX11KeysymMap[AjaxViewer.JS_KEY_COMMA] = AjaxViewer.X11_KEY_COMMA;
this.jsX11KeysymMap[AjaxViewer.JS_KEY_PERIOD] = AjaxViewer.X11_KEY_PERIOD;
this.jsX11KeysymMap[AjaxViewer.JS_KEY_FORWARD_SLASH] = AjaxViewer.X11_KEY_FORWARD_SLASH;
this.jsX11KeysymMap[AjaxViewer.JS_KEY_DASH] = AjaxViewer.X11_KEY_DASH;
this.jsX11KeysymMap[AjaxViewer.JS_KEY_SEMI_COLON] = AjaxViewer.X11_KEY_SEMI_COLON;
this.jsX11KeysymMap[AjaxViewer.JS_KEY_NUMPAD0] = AjaxViewer.X11_KEY_NUMPAD0;
this.jsX11KeysymMap[AjaxViewer.JS_KEY_NUMPAD1] = AjaxViewer.X11_KEY_NUMPAD1;
this.jsX11KeysymMap[AjaxViewer.JS_KEY_NUMPAD2] = AjaxViewer.X11_KEY_NUMPAD2;
this.jsX11KeysymMap[AjaxViewer.JS_KEY_NUMPAD3] = AjaxViewer.X11_KEY_NUMPAD3;
this.jsX11KeysymMap[AjaxViewer.JS_KEY_NUMPAD4] = AjaxViewer.X11_KEY_NUMPAD4;
this.jsX11KeysymMap[AjaxViewer.JS_KEY_NUMPAD5] = AjaxViewer.X11_KEY_NUMPAD5;
this.jsX11KeysymMap[AjaxViewer.JS_KEY_NUMPAD6] = AjaxViewer.X11_KEY_NUMPAD6;
this.jsX11KeysymMap[AjaxViewer.JS_KEY_NUMPAD7] = AjaxViewer.X11_KEY_NUMPAD7;
this.jsX11KeysymMap[AjaxViewer.JS_KEY_NUMPAD8] = AjaxViewer.X11_KEY_NUMPAD8;
this.jsX11KeysymMap[AjaxViewer.JS_KEY_NUMPAD9] = AjaxViewer.X11_KEY_NUMPAD9;
this.jsX11KeysymMap[AjaxViewer.JS_KEY_DECIMAL_POINT] = AjaxViewer.X11_KEY_DECIMAL_POINT;
this.jsX11KeysymMap[AjaxViewer.JS_KEY_DIVIDE] = AjaxViewer.X11_KEY_DIVIDE;
this.jsX11KeysymMap[AjaxViewer.JS_KEY_MULTIPLY] = [
{type: AjaxViewer.KEY_DOWN, code: AjaxViewer.X11_KEY_SHIFT, modifiers: 0 },
{type: AjaxViewer.KEY_DOWN, code: AjaxViewer.X11_KEY_ASTERISK, modifiers: 0 },
{type: AjaxViewer.KEY_UP, code: AjaxViewer.X11_KEY_ASTERISK, modifiers: 0 },
{type: AjaxViewer.KEY_UP, code: AjaxViewer.X11_KEY_SHIFT, modifiers: 0 }
];
this.jsX11KeysymMap[AjaxViewer.JS_KEY_ADD] = false;
this.jsKeyPressX11KeysymMap = [];
this.jsKeyPressX11KeysymMap[61] = [
{type: AjaxViewer.KEY_DOWN, code: AjaxViewer.X11_KEY_ADD, modifiers: 0, shift: false },
{type: AjaxViewer.KEY_UP, code: AjaxViewer.X11_KEY_ADD, modifiers: 0, shift: false }
];
this.jsKeyPressX11KeysymMap[43] = [
{type: AjaxViewer.KEY_DOWN, code: AjaxViewer.X11_KEY_SHIFT, modifiers: 0, shift: false },
{type: AjaxViewer.KEY_DOWN, code: AjaxViewer.X11_KEY_ADD, modifiers: 0, shift: false },
{type: AjaxViewer.KEY_UP, code: AjaxViewer.X11_KEY_ADD, modifiers: 0, shift: false },
{type: AjaxViewer.KEY_UP, code: AjaxViewer.X11_KEY_SHIFT, modifiers: 0, shift: false },
{type: AjaxViewer.KEY_DOWN, code: AjaxViewer.X11_KEY_ADD, modifiers: 0, shift: true },
{type: AjaxViewer.KEY_UP, code: AjaxViewer.X11_KEY_ADD, modifiers: 0, shift: true }
];
}
JsX11KeyboardMapper.prototype = new KeyboardMapper();
JsX11KeyboardMapper.prototype.inputFeed = function(eventType, code, modifiers) {
if(eventType == AjaxViewer.KEY_DOWN || eventType == AjaxViewer.KEY_UP) {
// special handling for Alt + Ctrl + Ins, convert it into Alt-Ctrl-Del
if(code == AjaxViewer.JS_KEY_INSERT) {
if((modifiers & AjaxViewer.ALT_KEY_MASK) != 0 && (modifiers & AjaxViewer.CTRL_KEY_MASK) != 0) {
this.mappedInput.push({type : eventType, code: 0xffff, modifiers: modifiers});
return;
}
}
var X11Keysym = code;
if(this.jsX11KeysymMap[code] != undefined) {
X11Keysym = this.jsX11KeysymMap[code];
if(typeof this.jsX11KeysymMap[code] == "boolean") {
return;
} else if($.isArray(X11Keysym)) {
for(var i = 0; i < X11Keysym.length; i++) {
if(X11Keysym[i].type == eventType) {
this.mappedInput.push(X11Keysym[i]);
}
}
} else {
this.mappedInput.push({type : eventType, code: X11Keysym, modifiers: modifiers});
}
} else {
this.mappedInput.push({type : eventType, code: X11Keysym, modifiers: modifiers});
}
// special handling for ALT/CTRL key
if(eventType == AjaxViewer.KEY_UP && (code == AjaxViewer.JS_KEY_ALT || code == code == AjaxViewer.JS_KEY_CTRL))
this.mappedInput.push({type : eventType, code: this.jsX11KeysymMap[code], modifiers: modifiers});
} else if(eventType == AjaxViewer.KEY_PRESS) {
var X11Keysym = code;
X11Keysym = this.jsKeyPressX11KeysymMap[code];
if(X11Keysym) {
if($.isArray(X11Keysym)) {
for(var i = 0; i < X11Keysym.length; i++) {
var shift = ((modifiers & AjaxViewer.SHIFT_KEY_MASK) != 0 ? true : false);
if(!(X11Keysym[i].shift ^ shift))
this.mappedInput.push(X11Keysym[i]);
}
} else {
this.mappedInput.push({type : eventType, code: X11Keysym, modifiers: modifiers});
}
}
}
}
/////////////////////////////////////////////////////////////////////////////
//JsCookedKeyboardMapper
// For Xen/KVM hypervisors, it accepts "cooked" keyborad events
//
function JsCookedKeyboardMapper() {
KeyboardMapper.apply(this, arguments);
this.jsX11KeysymMap = [];
this.jsX11KeysymMap[AjaxViewer.JS_KEY_CAPSLOCK] = AjaxViewer.X11_KEY_CAPSLOCK;
this.jsX11KeysymMap[AjaxViewer.JS_KEY_BACKSPACE] = AjaxViewer.X11_KEY_BACKSPACE;
this.jsX11KeysymMap[AjaxViewer.JS_KEY_TAB] = AjaxViewer.X11_KEY_TAB;
this.jsX11KeysymMap[AjaxViewer.JS_KEY_ENTER] = AjaxViewer.X11_KEY_ENTER;
this.jsX11KeysymMap[AjaxViewer.JS_KEY_ESCAPE] = AjaxViewer.X11_KEY_ESCAPE;
this.jsX11KeysymMap[AjaxViewer.JS_KEY_INSERT] = AjaxViewer.X11_KEY_INSERT;
this.jsX11KeysymMap[AjaxViewer.JS_KEY_DELETE] = AjaxViewer.X11_KEY_DELETE;
this.jsX11KeysymMap[AjaxViewer.JS_KEY_HOME] = AjaxViewer.X11_KEY_HOME;
this.jsX11KeysymMap[AjaxViewer.JS_KEY_END] = AjaxViewer.X11_KEY_END;
this.jsX11KeysymMap[AjaxViewer.JS_KEY_PAGEUP] = AjaxViewer.X11_KEY_PAGEUP;
this.jsX11KeysymMap[AjaxViewer.JS_KEY_PAGEDOWN] = AjaxViewer.X11_KEY_PAGEDOWN;
this.jsX11KeysymMap[AjaxViewer.JS_KEY_LEFT] = AjaxViewer.X11_KEY_LEFT;
this.jsX11KeysymMap[AjaxViewer.JS_KEY_UP] = AjaxViewer.X11_KEY_UP;
this.jsX11KeysymMap[AjaxViewer.JS_KEY_RIGHT] = AjaxViewer.X11_KEY_RIGHT;
this.jsX11KeysymMap[AjaxViewer.JS_KEY_DOWN] = AjaxViewer.X11_KEY_DOWN;
this.jsX11KeysymMap[AjaxViewer.JS_KEY_F1] = AjaxViewer.X11_KEY_F1;
this.jsX11KeysymMap[AjaxViewer.JS_KEY_F2] = AjaxViewer.X11_KEY_F2;
this.jsX11KeysymMap[AjaxViewer.JS_KEY_F3] = AjaxViewer.X11_KEY_F3;
this.jsX11KeysymMap[AjaxViewer.JS_KEY_F4] = AjaxViewer.X11_KEY_F4;
this.jsX11KeysymMap[AjaxViewer.JS_KEY_F5] = AjaxViewer.X11_KEY_F5;
this.jsX11KeysymMap[AjaxViewer.JS_KEY_F6] = AjaxViewer.X11_KEY_F6;
this.jsX11KeysymMap[AjaxViewer.JS_KEY_F7] = AjaxViewer.X11_KEY_F7;
this.jsX11KeysymMap[AjaxViewer.JS_KEY_F8] = AjaxViewer.X11_KEY_F8;
this.jsX11KeysymMap[AjaxViewer.JS_KEY_F9] = AjaxViewer.X11_KEY_F9;
this.jsX11KeysymMap[AjaxViewer.JS_KEY_F10] = AjaxViewer.X11_KEY_F10;
this.jsX11KeysymMap[AjaxViewer.JS_KEY_F11] = AjaxViewer.X11_KEY_F11;
this.jsX11KeysymMap[AjaxViewer.JS_KEY_F12] = AjaxViewer.X11_KEY_F12;
this.jsX11KeysymMap[AjaxViewer.JS_KEY_SHIFT] = AjaxViewer.X11_KEY_SHIFT;
this.jsX11KeysymMap[AjaxViewer.JS_KEY_CTRL] = AjaxViewer.X11_KEY_CTRL;
this.jsX11KeysymMap[AjaxViewer.JS_KEY_ALT] = AjaxViewer.X11_KEY_ALT;
}
JsCookedKeyboardMapper.prototype = new KeyboardMapper();
JsCookedKeyboardMapper.prototype.inputFeed = function(eventType, code, modifiers) {
if(eventType == AjaxViewer.KEY_DOWN || eventType == AjaxViewer.KEY_UP) {
// special handling for Alt + Ctrl + Ins, convert it into Alt-Ctrl-Del
if(code == AjaxViewer.JS_KEY_INSERT) {
if((modifiers & AjaxViewer.ALT_KEY_MASK) != 0 && (modifiers & AjaxViewer.CTRL_KEY_MASK) != 0) {
this.mappedInput.push({type : eventType, code: 0xffff, modifiers: modifiers});
return;
}
}
var X11Keysym = code;
if(this.jsX11KeysymMap[code] != undefined) {
X11Keysym = this.jsX11KeysymMap[code];
if(typeof this.jsX11KeysymMap[code] == "boolean") {
return;
} else if($.isArray(X11Keysym)) {
for(var i = 0; i < X11Keysym.length; i++) {
if(X11Keysym[i].type == eventType) {
this.mappedInput.push(X11Keysym[i]);
}
}
} else {
this.mappedInput.push({type : eventType, code: X11Keysym, modifiers: modifiers});
}
} else {
if((modifiers & AjaxViewer.CTRL_KEY_MASK) != 0) {
this.mappedInput.push({type : eventType, code: X11Keysym, modifiers: modifiers});
}
}
// special handling for ALT/CTRL key
if(eventType == AjaxViewer.KEY_UP && (code == AjaxViewer.JS_KEY_ALT || code == code == AjaxViewer.JS_KEY_CTRL))
this.mappedInput.push({type : eventType, code: this.jsX11KeysymMap[code], modifiers: modifiers});
} else if(eventType == AjaxViewer.KEY_PRESS) {
var X11Keysym = code;
// special handling for * and + key on number pad
if(code == AjaxViewer.JS_NUMPAD_MULTIPLY) {
this.mappedInput.push({type : AjaxViewer.KEY_DOWN, code: AjaxViewer.X11_KEY_SHIFT, modifiers: modifiers});
this.mappedInput.push({type : AjaxViewer.KEY_DOWN, code: 42, modifiers: modifiers});
this.mappedInput.push({type : AjaxViewer.KEY_UP, code: 42, modifiers: modifiers});
this.mappedInput.push({type : AjaxViewer.KEY_UP, code: AjaxViewer.X11_KEY_SHIFT, modifiers: modifiers});
return;
}
if(code == AjaxViewer.JS_NUMPAD_PLUS) {
this.mappedInput.push({type : AjaxViewer.KEY_DOWN, code: AjaxViewer.X11_KEY_SHIFT, modifiers: modifiers});
this.mappedInput.push({type : AjaxViewer.KEY_DOWN, code: 43, modifiers: modifiers});
this.mappedInput.push({type : AjaxViewer.KEY_UP, code: 43, modifiers: modifiers});
this.mappedInput.push({type : AjaxViewer.KEY_UP, code: AjaxViewer.X11_KEY_SHIFT, modifiers: modifiers});
return;
}
// ENTER/BACKSPACE key should already have been sent through KEY DOWN/KEY UP event
if(code == AjaxViewer.JS_KEY_ENTER || code == AjaxViewer.JS_KEY_BACKSPACE)
return;
this.mappedInput.push({type : AjaxViewer.KEY_DOWN, code: X11Keysym, modifiers: modifiers});
this.mappedInput.push({type : AjaxViewer.KEY_UP, code: X11Keysym, modifiers: modifiers});
}
}
/////////////////////////////////////////////////////////////////////////////
// class AjaxViewer
//
@ -653,12 +729,14 @@ AjaxViewer.prototype = {
setupKeyboardTranslationTable : function() {
this.keyboardMappers = [];
// this.keyboardMappers[AjaxViewer.KEYBOARD_TYPE_ENGLISH] = new JsX11KeyboardMapper();
this.keyboardMappers[AjaxViewer.KEYBOARD_TYPE_ENGLISH] = new JsCookedKeyboardMapper();
// setup Japanese keyboard translation table
var mapper = new JsX11KeyboardMapper();
var mapper = new KeyboardMapper();
this.keyboardMappers[AjaxViewer.KEYBOARD_TYPE_ENGLISH] = mapper;
mapper.setKeyboardType(KeyboardMapper.KEYBOARD_TYPE_COOKED);
mapper = new KeyboardMapper();
this.keyboardMappers[AjaxViewer.KEYBOARD_TYPE_JAPANESE] = mapper;
mapper.setKeyboardType(KeyboardMapper.KEYBOARD_TYPE_RAW);
// JP keyboard plugged in a English host OS
/*
@ -1288,7 +1366,7 @@ AjaxViewer.prototype = {
dispatchKeyboardInput : function(event, code, modifiers) {
var keyboardMapper = ajaxViewer.getCurrentKeyboardMapper();
keyboardMapper.inputFeed(event, code, modifiers);
keyboardMapper.inputFeed(event, code, modifiers, this.guestos, $.browser, $.browser.version);
this.dispatchMappedKeyboardInput(keyboardMapper.getMappedInput());
},

View File

@ -16,15 +16,14 @@
specific language governing permissions and limitations
under the License.
-->
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<artifactId>cloud-console-proxy</artifactId>
<name>Apache CloudStack Console Proxy</name>
<parent>
<groupId>org.apache.cloudstack</groupId>
<artifactId>cloudstack</artifactId>
<version>4.0.0-SNAPSHOT</version>
<version>4.1.0-SNAPSHOT</version>
</parent>
<dependencies>
<dependency>
@ -139,7 +138,39 @@
</execution>
</executions>
</plugin>
<!--plugin>
</plugins>
</build>
<profiles>
<profile>
<id>vmware</id>
<activation>
<property>
<name>nonoss</name>
</property>
</activation>
<dependencies>
<dependency>
<groupId>org.apache.cloudstack</groupId>
<artifactId>cloud-plugin-hypervisor-vmware</artifactId>
<version>${project.version}</version>
</dependency>
<dependency>
<groupId>org.apache.cloudstack</groupId>
<artifactId>cloud-vmware-base</artifactId>
<version>${project.version}</version>
</dependency>
</dependencies>
</profile>
<profile>
<id>systemvm</id>
<activation>
<property>
<name>systemvm</name>
</property>
</activation>
<build>
<plugins>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>exec-maven-plugin</artifactId>
<version>1.2.1</version>
@ -164,7 +195,10 @@
<argument>authorized_keys</argument>
</arguments>
</configuration>
</plugin-->
</plugins>
</build>
</plugin>
</plugins>
</build>
</profile>
</profiles>
</project>

View File

@ -87,6 +87,7 @@ public class ConsoleProxyGCThread extends Thread {
synchronized (connMap) {
connMap.remove(key);
bReportLoad = true;
}
// close the server connection

View File

@ -1,29 +1,29 @@
<!--
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.
-->
<html>
<head>
</head>
<body>
<div id="main_panel" tabindex="1">
<p>Unable to start console session as access is denied because of bad sid</p>
</div>
</body>
</html>
<!--
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.
-->
<html>
<head>
</head>
<body>
<div id="main_panel" tabindex="1">
<p>Unable to start console session as access is denied because of bad sid</p>
</div>
</body>
</html>

View File

@ -1,29 +1,29 @@
<!--
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.
-->
<html>
<head>
</head>
<body>
<div id="main_panel" tabindex="1">
<p>Unable to start console session as connection is refused by the machine you are accessing</p>
</div>
</body>
</html>
<!--
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.
-->
<html>
<head>
</head>
<body>
<div id="main_panel" tabindex="1">
<p>Unable to start console session as connection is refused by the machine you are accessing</p>
</div>
</body>
</html>

View File

@ -1,59 +1,59 @@
<!--
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.
-->
<html>
<head>
<script type="text/javascript" language="javascript" src="/resource/js/jquery.js"></script>
<script type="text/javascript" language="javascript" src="/resource/js/ajaxviewer.js"></script>
<script type="text/javascript" language="javascript" src="/resource/js/handler.js"></script>
<link rel="stylesheet" type="text/css" href="/resource/css/ajaxviewer.css"></link>
<title>${title}</title>
</head>
<body>
<div id="toolbar">
<ul>
<li>
<a href="#" onclick="javascript:sendCtrlAltDel();">
<span><img align="left" src="/resource/images/cad.gif" alt="Ctrl-Alt-Del" />Ctrl-Alt-Del</span>
</a>
</li>
<li>
<a href="#" onclick="javascript:sendCtrlEsc();">
<span><img align="left" src="/resource/images/winlog.png" alt="Ctrl-Esc" style="width:16px;height:16px"/>Ctrl-Esc</span>
</a>
</li>
</ul>
<span id="light" class="dark"></span>
</div>
<div id="main_panel" tabindex="1"></div>
<script language="javascript">
var tileMap = [ ${tileSequence} ];
var ajaxViewer = new AjaxViewer('main_panel', '${imgUrl}', '${updateUrl}', tileMap,
${width}, ${height}, ${tileWidth}, ${tileHeight}, ${rawKeyboard});
$(function() {
ajaxViewer.start();
});
</script>
</body>
</html>
<!--
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.
-->
<html>
<head>
<script type="text/javascript" language="javascript" src="/resource/js/jquery.js"></script>
<script type="text/javascript" language="javascript" src="/resource/js/ajaxviewer.js"></script>
<script type="text/javascript" language="javascript" src="/resource/js/handler.js"></script>
<link rel="stylesheet" type="text/css" href="/resource/css/ajaxviewer.css"></link>
<title>${title}</title>
</head>
<body>
<div id="toolbar">
<ul>
<li>
<a href="#" onclick="javascript:sendCtrlAltDel();">
<span><img align="left" src="/resource/images/cad.gif" alt="Ctrl-Alt-Del" />Ctrl-Alt-Del</span>
</a>
</li>
<li>
<a href="#" onclick="javascript:sendCtrlEsc();">
<span><img align="left" src="/resource/images/winlog.png" alt="Ctrl-Esc" style="width:16px;height:16px"/>Ctrl-Esc</span>
</a>
</li>
</ul>
<span id="light" class="dark"></span>
</div>
<div id="main_panel" tabindex="1"></div>
<script language="javascript">
var tileMap = [ ${tileSequence} ];
var ajaxViewer = new AjaxViewer('main_panel', '${imgUrl}', '${updateUrl}', tileMap,
${width}, ${height}, ${tileWidth}, ${tileHeight}, ${rawKeyboard});
$(function() {
ajaxViewer.start();
});
</script>
</body>
</html>

View File

@ -16,15 +16,14 @@
specific language governing permissions and limitations
under the License.
-->
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<artifactId>cloud-core</artifactId>
<name>Apache CloudStack Core</name>
<parent>
<groupId>org.apache.cloudstack</groupId>
<artifactId>cloudstack</artifactId>
<version>4.0.0-SNAPSHOT</version>
<version>4.1.0-SNAPSHOT</version>
</parent>
<dependencies>
<dependency>
@ -32,17 +31,7 @@
<artifactId>cloud-api</artifactId>
<version>${project.version}</version>
</dependency>
<dependency>
<groupId>org.apache.cloudstack</groupId>
<artifactId>xapi</artifactId>
<version>${cs.xapi.version}</version>
<exclusions>
<exclusion>
<artifactId>junit</artifactId>
<groupId>junit</groupId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>commons-httpclient</groupId>
<artifactId>commons-httpclient</artifactId>
@ -58,6 +47,6 @@
<build>
<defaultGoal>install</defaultGoal>
<sourceDirectory>src</sourceDirectory>
<!-- <testSourceDirectory>test</testSourceDirectory> -->
<testSourceDirectory>test</testSourceDirectory>
</build>
</project>

24
debian/changelog vendored
View File

@ -1,3 +1,27 @@
cloud (1:4.0.0-1) unstable; urgency=low
* Bumping the version to 4.0.0
-- Chip Childers <chipchilders@apache.org> Fri, 5 Oct 2012 16:00:00 -0500
cloud (1:4.0.0-beta6) unstable; urgency=low
* Bumping the version to 4.0 Beta 6
-- Wido den Hollander <wido@widodh.nl> Fri, 5 Oct 2012 11:41:17 +0200
cloud (1:4.0.0-beta1) unstable; urgency=low
* Bumping the version to 4.0 Beta 1
-- Wido den Hollander <wido@widodh.nl> Wed, 26 Sep 2012 21:14:48 +0200
cloud (4.0.0-rc2) unstable; urgency=low
* Bumping the version to 4.0 RC2
-- Wido den Hollander <wido@widodh.nl> Mon, 24 Sep 2012 11:30:29 +0200
cloud (4.0.0-rc1) unstable; urgency=low
* Bumping the version to 4.0 RC1

12
debian/control vendored
View File

@ -2,13 +2,13 @@ Source: cloud
Section: libs
Priority: extra
Maintainer: Wido den Hollander <wido@widodh.nl>
Build-Depends: debhelper (>= 7), openjdk-6-jdk, tomcat6, libws-commons-util-java, libcommons-dbcp-java, libcommons-collections-java, libcommons-httpclient-java, libservlet2.5-java, genisoimage, python-mysqldb, maven3 | maven (>= 3), liblog4j1.2-java (>= 1.2.16)
Build-Depends: debhelper (>= 7), openjdk-6-jdk, tomcat6, libws-commons-util-java, libcommons-codec-java (>= 1.5), libcommons-httpclient-java (>= 3.1), libservlet2.5-java, genisoimage, python-mysqldb, maven3 | maven (>= 3), liblog4j1.2-java (>= 1.2.16)
Standards-Version: 3.8.1
Homepage: http://www.cloudstack.org/
Package: cloud-deps
Architecture: any
Depends: openjdk-6-jre, libcommons-discovery-java (>= 0.5), libcommons-dbcp-java (>= 1.4), libcommons-pool-java (>= 1.5.6), libcommons-codec-java (>= 1.5)
Depends: openjdk-6-jre, libcommons-codec-java (>= 1.5), libcommons-httpclient-java (>= 3.1)
Description: CloudStack library dependencies
This package contains a number of third-party dependencies
not shipped by distributions, required to run the CloudStack
@ -24,7 +24,7 @@ Description: CloudStack agent library dependencies
Package: cloud-utils
Architecture: any
Depends: openjdk-6-jre, python, libcglib-java (>= 2.2.2), libjsch-java (>= 0.1.42), libbackport-util-concurrent-java (>= 3.1)
Depends: openjdk-6-jre, python, libcglib-java (>= 2.2.2), libjsch-java (>= 0.1.42), libbackport-util-concurrent-java (>= 3.1), libcommons-dbcp-java (>= 1.4), libcommons-pool-java (>= 1.5.6)
Description: CloudStack utility library
The CloudStack utility libraries provide a set of Java classes used
in the CloudStack environment.
@ -40,7 +40,7 @@ Description: CloudStack management server UI
Package: cloud-server
Architecture: any
Depends: openjdk-6-jre, cloud-utils (= ${source:Version}), cloud-core (= ${source:Version}), cloud-deps (= ${source:Version}), libservlet2.5-java
Depends: openjdk-6-jre, cloud-utils (= ${source:Version}), cloud-core (= ${source:Version}), cloud-deps (= ${source:Version}), cloud-scripts (= ${source:Version}), libservlet2.5-java
Description: CloudStack server library
The CloudStack server libraries provide a set of Java classes used
in the CloudStack management server.
@ -84,13 +84,13 @@ Description: CloudStack Python library
Package: cloud-agent-libs
Architecture: any
Depends: openjdk-6-jre, cloud-utils (= ${source:Version}), cloud-core (= ${source:Version}), cloud-agent-deps (= ${source:Version}), libcommons-httpclient-java, libcommons-collections-java, libcommons-dbcp-java, libcommons-pool-java, libcommons-logging-java
Depends: openjdk-6-jre, cloud-utils (= ${source:Version}), cloud-core (= ${source:Version}), cloud-agent-deps (= ${source:Version})
Description: CloudStack agent libraries
The CloudStack agent libraries are used by the Cloud Agent.
Package: cloud-agent
Architecture: any
Depends: openjdk-6-jre, cloud-utils (= ${source:Version}), cloud-core (= ${source:Version}), cloud-agent-deps (= ${source:Version}), python, cloud-python (= ${source:Version}), cloud-agent-libs (= ${source:Version}), cloud-scripts (= ${source:Version}), libvirt0, sysvinit-utils, chkconfig, qemu-kvm, libvirt-bin, uuid-runtime, rsync, grep, iproute, ebtables, vlan, libcommons-httpclient-java, libservlet2.5-java, liblog4j1.2-java (>= 1.2.16), libjna-java, wget, jsvc, lsb-base (>= 3.2)
Depends: openjdk-6-jre, cloud-utils (= ${source:Version}), cloud-core (= ${source:Version}), cloud-agent-deps (= ${source:Version}), cloud-python (= ${source:Version}), cloud-agent-libs (= ${source:Version}), cloud-scripts (= ${source:Version}), libvirt0, sysvinit-utils, chkconfig, qemu-kvm, libvirt-bin, uuid-runtime, rsync, grep, iproute, ebtables, vlan, liblog4j1.2-java (>= 1.2.16), libjna-java, wget, jsvc, lsb-base (>= 3.2)
Description: CloudStack agent
The CloudStack agent is in charge of managing shared computing resources in
a CloudStack powered cloud. Install this package if this computer

10
debian/rules vendored
View File

@ -90,8 +90,11 @@ install-arch:
binary-common:
dh_testdir
dh_testroot
dh_installchangelogs
dh_installdocs -A README.html
dh_installchangelogs
dh_installdocs LICENSE
dh_installdocs DISCLAIMER
dh_installdocs NOTICE
dh_installdocs INSTALL.md
# dh_installexamples
# dh_installmenu
# dh_installdebconf
@ -114,7 +117,8 @@ binary-common:
# dh_shlibdeps
dh_gencontrol
dh_md5sums
dh_builddeb
mkdir -p ./artifacts/debs
dh_builddeb --destdir=$(CURDIR)/artifacts/debs
# Build architecture independant packages using the common target.
# binary-indep: build-indep install-indep
# $(MAKE) -f debian/rules DH_OPTIONS=-i binary-common

View File

@ -16,13 +16,12 @@
specific language governing permissions and limitations
under the License.
-->
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>org.apache.cloudstack</groupId>
<artifactId>cloudstack</artifactId>
<version>4.0.0-SNAPSHOT</version>
<version>4.1.0-SNAPSHOT</version>
<relativePath>../../pom.xml</relativePath>
</parent>
<artifactId>xapi</artifactId>

20
deps/pom.xml vendored
View File

@ -16,8 +16,7 @@
specific language governing permissions and limitations
under the License.
-->
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<artifactId>cloud-deps</artifactId>
<name>Apache CloudStack Dependencies</name>
@ -25,7 +24,7 @@
<parent>
<groupId>org.apache.cloudstack</groupId>
<artifactId>cloudstack</artifactId>
<version>4.0.0-SNAPSHOT</version>
<version>4.1.0-SNAPSHOT</version>
</parent>
<dependencies>
<dependency>
@ -176,7 +175,20 @@
</goals>
</pluginExecutionFilter>
<action>
<ignore></ignore>
<ignore />
</action>
</pluginExecution>
<pluginExecution>
<pluginExecutionFilter>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-dependency-plugin</artifactId>
<versionRange>[2.0,)</versionRange>
<goals>
<goal>copy-dependencies</goal>
</goals>
</pluginExecutionFilter>
<action>
<execute />
</action>
</pluginExecution>
</pluginExecutions>

238
developer/pom.xml Normal file
View File

@ -0,0 +1,238 @@
<!-- 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. -->
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<artifactId>cloud-developer</artifactId>
<name>Apache CloudStack Developer Tools</name>
<packaging>pom</packaging>
<parent>
<groupId>org.apache.cloudstack</groupId>
<artifactId>cloudstack</artifactId>
<version>4.1.0-SNAPSHOT</version>
</parent>
<dependencies>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.21</version>
<scope>runtime</scope>
</dependency>
</dependencies>
<build>
<defaultGoal>install</defaultGoal>
</build>
<profiles>
<profile>
<id>deploydb</id>
<activation>
<property>
<name>deploydb</name>
</property>
</activation>
<build>
<plugins>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>properties-maven-plugin</artifactId>
<version>1.0-alpha-2</version>
<executions>
<execution>
<phase>initialize</phase>
<goals>
<goal>read-project-properties</goal>
</goals>
<configuration>
<files>
<file>${project.parent.basedir}/utils/conf/db.properties</file>
</files>
</configuration>
</execution>
</executions>
</plugin>
<plugin>
<artifactId>maven-antrun-plugin</artifactId>
<version>1.7</version>
<executions>
<execution>
<phase>generate-resources</phase>
<goals>
<goal>run</goal>
</goals>
<configuration>
<target>
<filter token="VERSION" value="${project.version}" />
<copy todir="${basedir}/target/db" filtering="true">
<fileset dir="${project.basedir}/../setup/db/">
</fileset>
</copy>
<copy todir="${basedir}/target/db" filtering="true">
<fileset dir="${project.basedir}/../awsapi-setup/db/mysql/">
<include name="**/*.sql" />
</fileset>
</copy>
</target>
</configuration>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>sql-maven-plugin</artifactId>
<version>1.5</version>
<dependencies>
<!-- specify the dependent jdbc driver here -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>${cs.mysql.version}</version>
</dependency>
</dependencies>
<configuration>
<driver>org.gjt.mm.mysql.Driver</driver>
<url>jdbc:mysql://${db.cloud.host}:${db.cloud.port}/cloud</url>
<username>${db.cloud.username}</username>
<password>${db.cloud.password}</password>
<!--all executions are ignored if -Dmaven.test.skip=true -->
<skip>${maven.test.skip}</skip>
<forceMojoExecution>true</forceMojoExecution>
</configuration>
<executions>
<execution>
<id>drop-database</id>
<phase>process-test-resources</phase>
<goals>
<goal>execute</goal>
</goals>
<configuration>
<username>root</username>
<password>${db.cloud.password}</password>
<url>jdbc:mysql://${db.cloud.host}:${db.cloud.port}</url>
<sqlCommand>drop database if exists `cloud`</sqlCommand>
</configuration>
</execution>
<execution>
<id>create-database</id>
<phase>process-test-resources</phase>
<goals>
<goal>execute</goal>
</goals>
<configuration>
<username>root</username>
<password>${db.cloud.password}</password>
<url>jdbc:mysql://${db.cloud.host}:${db.cloud.port}</url>
<sqlCommand>create database `cloud`</sqlCommand>
</configuration>
</execution>
<execution>
<id>drop-database-usage</id>
<phase>process-test-resources</phase>
<goals>
<goal>execute</goal>
</goals>
<configuration>
<username>root</username>
<password>${db.cloud.password}</password>
<url>jdbc:mysql://${db.cloud.host}:${db.cloud.port}</url>
<sqlCommand>drop database if exists `cloud_usage`</sqlCommand>
</configuration>
</execution>
<execution>
<id>create-database-usage</id>
<phase>process-test-resources</phase>
<goals>
<goal>execute</goal>
</goals>
<configuration>
<username>root</username>
<password>${db.cloud.password}</password>
<url>jdbc:mysql://${db.cloud.host}:${db.cloud.port}</url>
<sqlCommand>create database `cloud_usage`</sqlCommand>
</configuration>
</execution>
<execution>
<id>drop-database-cloudbridge</id>
<phase>process-test-resources</phase>
<goals>
<goal>execute</goal>
</goals>
<configuration>
<username>root</username>
<password>${db.cloud.password}</password>
<url>jdbc:mysql://${db.cloud.host}:${db.cloud.port}</url>
<sqlCommand>drop database if exists `cloudbridge`</sqlCommand>
</configuration>
</execution>
<execution>
<id>create-database-cloudbridge</id>
<phase>process-test-resources</phase>
<goals>
<goal>execute</goal>
</goals>
<configuration>
<username>root</username>
<password>${db.cloud.password}</password>
<url>jdbc:mysql://${db.cloud.host}:${db.cloud.port}</url>
<sqlCommand>create database `cloudbridge`</sqlCommand>
</configuration>
</execution>
<execution>
<id>create-schema</id>
<phase>process-test-resources</phase>
<goals>
<goal>execute</goal>
</goals>
<configuration>
<srcFiles>
<srcFile>${basedir}/target/db/create-schema.sql</srcFile>
<srcFile>${basedir}/target/db/create-schema-premium.sql</srcFile>
<srcFile>${basedir}/target/db/templates.sql</srcFile>
<srcFile>${basedir}/target/db/create-index-fk.sql</srcFile>
<srcFile>${basedir}/target/db/cloudbridge_schema.sql</srcFile>
<srcFile>${basedir}/target/db/cloudbridge_multipart.sql</srcFile>
<srcFile>${basedir}/target/db/cloudbridge_index.sql</srcFile>
<srcFile>${basedir}/target/db/cloudbridge_multipart_alter.sql</srcFile>
<srcFile>${basedir}/target/db/cloudbridge_bucketpolicy.sql</srcFile>
<srcFile>${basedir}/target/db/cloudbridge_policy_alter.sql</srcFile>
<srcFile>${basedir}/target/db/cloudbridge_offering.sql</srcFile>
<srcFile>${basedir}/target/db/cloudbridge_offering_alter.sql</srcFile>
</srcFiles>
</configuration>
</execution>
<execution>
<id>prefill-schema</id>
<phase>process-test-resources</phase>
<goals>
<goal>execute</goal>
</goals>
<configuration>
<sqlCommand>INSERT INTO `cloud`.`domain` (id, name, parent, path, owner) VALUES (1, 'ROOT', NULL, '/', 2)</sqlCommand>
</configuration>
</execution>
<execution>
<id>prefill-configuration</id>
<phase>process-test-resources</phase>
<goals>
<goal>execute</goal>
</goals>
<configuration>
<sqlCommand>INSERT INTO `cloud`.`configuration` (category, instance, component, name, value) VALUES ('Hidden', 'DEFAULT', 'management-server', 'init', 'false')</sqlCommand>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
</profile>
</profiles>
</project>

2139
docs/.tx/config Normal file

File diff suppressed because it is too large Load Diff

View File

@ -57,10 +57,21 @@ Some of the XML files contain only a series of include tags to pull in content f
The master book file contains <book> ... </book> tags. This file is referred to in the Publican configuration file, and is used as the controlling file when building the book.
As a naming convention, start the name of a book file with cloudstack_ ; for example, cloudstack_installation.
Document names are derived from the docname setting in the appropriate .cfg file.
This should not have CloudStack in the name (which is redundant because of
the CloudStack brand that the documentation is built with. The docname variable
sets the name in the doc site table of contents. This name also needs to exist
as .xml and .ent in the en-US directory. Examples of appropriate docnames:
Admin_Guide
API_Developers_Guide
Installation_Guide
A Publican book file must also have certain other tags that are expected by Publican when it builds the project. Copy an existing master book file to get these tags.
A Publican book file must also have certain other tags that are expected by
Publican when it builds the project. Copy an existing master book file to
get these tags.
----------------------------------
@ -71,10 +82,15 @@ CONFIG FILES
For each book file, there must be a corresponding publican.cfg (or
<other_name>.cfg) file in order to build the book with Publican. The
docname: attribute in the config file matches the name of the master book file; for example, docname: cloudstack corresponds to the master book file cloudstack.xml.
docname: attribute in the config file matches the name of the master book file;
for example, docname: cloudstack corresponds to the master book file
cloudstack.xml.
The .cfg files reside in the main directory, docs. To build a different book, just use the Publican command line flag --config=<filename>.cfg. (We also need per-book entities, Book_Info, Author_Info, and other Publican files. The technique for pulling these in is TBD.)
The .cfg files reside in the main directory, docs. To build a different book,
just use the Publican command line flag --config=<filename>.cfg. (We also
need per-book entities, Book_Info, Author_Info, and other Publican files.
The technique for pulling these in is TBD.)
----------------------------------
@ -83,13 +99,18 @@ TO BUILD A BOOK
----------------------------------
We will set up an automatic Publican job that generates new output whenever we check in changes to this repository. You can also build a book locally as follows.
We will set up an automatic Publican job that generates new output whenever we
check in changes to this repository. You can also build a book locally as
follows.
First, install Publican, and get a local copy of the book source files.
Put the desired publican.cfg in the docs directory. Go to the command line, cd to that directory, and run the publican build command. Specify what output format(s) and what language(s) you want to build. Always start with a test run. For example:
Put the desired publican.cfg in the docs directory. Go to the command line, cd
to that directory, and run the publican build command. Specify what output
format(s) and what language(s) you want to build. Always start with a test
run. For example:
publican build --formats test --langs en-US
@ -111,9 +132,29 @@ LOCALIZATION
----------------------------------
Localized versions of the documentation files can be stored in appropriately named subdirectories parallel to en-US. The language code names to use for these directories are listed in Publican documentation, http://jfearn.fedorapeople.org/en-US/Publican/2.7/html/Users_Guide/appe-Users_Guide-Language_codes.html.
Localized versions of the documentation files can be stored in appropriately
named subdirectories parallel to en-US. The language code names to use for
these directories are listed in Publican documentation,
http://jfearn.fedorapeople.org/en-US/Publican/2.7/html/Users_Guide/appe-Users_Guide-Language_codes.html.
For example, Japanese XML files would be stored in the docs/ja-JP directory.
Localization currently happens using Transifex and you can find the strings
to be translated at this location:
https://www.transifex.com/projects/p/ACS_DOCS/
In preparation for l10n, authors and docs folks must take not of a number of
things.
All .xml files must contain a translatable string. <xi:include> tags are not enough.
All new .xml files must have a corresponding entry in docs/.tx/config
Filenames should be less than 50 characters long.
To generate new POT files and upload source do the following:
publican update_pot --config=./publican-all.cfg
tx push -s
To receive translated files from publican, run the following command:
tx pull
----------------------------------
@ -121,7 +162,11 @@ CONTRIBUTING
----------------------------------
Contributors can create new section, chapter, book, publican.cfg, or localized .xml files at any time. Submit them following the same patch approval procedure that is used for contributing to CloudStack code. More information for contributors is available at https://cwiki.apache.org/confluence/display/CLOUDSTACK/Documentation+Team.
Contributors can create new section, chapter, book, publican.cfg, or localized
.xml files at any time. Submit them following the same patch approval procedure
that is used for contributing to CloudStack code. More information for
contributors is available at
https://cwiki.apache.org/confluence/display/CLOUDSTACK/Documentation+Team.
----------------------------------

View File

@ -0,0 +1,21 @@
<!-- 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.
-->
<!ENTITY PRODUCT "CloudPlatform">
<!ENTITY BOOKID "Technical Documentation">
<!ENTITY YEAR "2012">
<!ENTITY HOLDER "Citrix">

View File

@ -23,7 +23,27 @@
-->
<book>
<xi:include href="Book_Info.xml" xmlns:xi="http://www.w3.org/2001/XInclude" />
<bookinfo id="book-release-notes-3.0.4">
<title>&PRODUCT; API Developers Guide</title>
<productname>Apache CloudStack</productname>
<productnumber>4.0</productnumber>
<edition></edition>
<pubsnumber></pubsnumber>
<abstract>
<para>
Complete technical documentation of &PRODUCT;.
</para>
</abstract>
<corpauthor>
<inlinemediaobject>
<imageobject>
<imagedata fileref="Common_Content/images/title_logo.svg" format="SVG" />
</imageobject>
</inlinemediaobject>
</corpauthor>
<xi:include href="Common_Content/Legal_Notice.xml" xmlns:xi="http://www.w3.org/2001/XInclude" />
<xi:include href="Author_Group.xml" xmlns:xi="http://www.w3.org/2001/XInclude" />
</bookinfo>
<xi:include href="concepts.xml" xmlns:xi="http://www.w3.org/2001/XInclude" />
<xi:include href="developer-guide.xml" xmlns:xi="http://www.w3.org/2001/XInclude" />
<xi:include href="Revision_History.xml" xmlns:xi="http://www.w3.org/2001/XInclude" />

View File

@ -23,8 +23,29 @@
-->
<book>
<xi:include href="Book_Info.xml" xmlns:xi="http://www.w3.org/2001/XInclude" />
<bookinfo id="cloudstack_admin">
<title>&PRODUCT; Admin Guide</title>
<productname>Apache CloudStack</productname>
<productnumber>4.0</productnumber>
<edition>1</edition>
<pubsnumber></pubsnumber>
<abstract>
<para>
Administration Guide for &PRODUCT;.
</para>
</abstract>
<corpauthor>
<inlinemediaobject>
<imageobject>
<imagedata fileref="Common_Content/images/title_logo.svg" format="SVG" />
</imageobject>
</inlinemediaobject>
</corpauthor>
<xi:include href="Common_Content/Legal_Notice.xml" xmlns:xi="http://www.w3.org/2001/XInclude" />
<xi:include href="Author_Group.xml" xmlns:xi="http://www.w3.org/2001/XInclude" />
</bookinfo>
<xi:include href="concepts.xml" xmlns:xi="http://www.w3.org/2001/XInclude" />
<xi:include href="admin-guide.xml" xmlns:xi="http://www.w3.org/2001/XInclude" />
<xi:include href="Revision_History.xml" xmlns:xi="http://www.w3.org/2001/XInclude" />
</book>

View File

@ -0,0 +1,46 @@
<?xml version='1.0' encoding='utf-8' ?>
<!DOCTYPE section PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN" "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
<!ENTITY % BOOK_ENTITIES SYSTEM "cloudstack.ent">
%BOOK_ENTITIES;
]>
<!-- 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.
-->
<bookinfo id="book-cloudstack-admin">
<title> Apache CloudStack 4.0
Administrator's Guide</title>
<subtitle>Revised September 11, 2012 01:32 am Pacific</subtitle>
<productname></productname>
<productnumber></productnumber>
<pubsnumber></pubsnumber>
<abstract>
<para>If you have already installed &PRODUCT; or you want to learn more about the ongoing
operation and maintenance of a &PRODUCT;-powered cloud, read this documentation. It
will help you start using, configuring, and managing the ongoing operation of your cloud.</para>
</abstract>
<corpauthor>
<inlinemediaobject>
<imageobject>
<imagedata fileref="Common_Content/images/title_logo.png" format="PNG" />
</imageobject>
</inlinemediaobject>
</corpauthor>
<xi:include href="Common_Content/Legal_Notice.xml" xmlns:xi="http://www.w3.org/2001/XInclude" />
<xi:include href="Author_Group.xml" xmlns:xi="http://www.w3.org/2001/XInclude" />
</bookinfo>

View File

@ -0,0 +1,44 @@
<?xml version='1.0' encoding='utf-8' ?>
<!DOCTYPE chapter PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN" "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
<!ENTITY % BOOK_ENTITIES SYSTEM "cloudstack.ent">
%BOOK_ENTITIES;
]>
<!-- 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.
-->
<bookinfo id="book-cloudstack">
<title>CloudStack Guide</title>
<subtitle>Revised September 18, 2012 10:48 am Pacific</subtitle>
<productname>Apache CloudStack (incubating)</productname>
<productnumber>3.0</productnumber>
<edition>1</edition>
<pubsnumber></pubsnumber>
<abstract>
<para>Complete technical documentation for Apache CloudStack.</para>
</abstract>
<corpauthor>
<inlinemediaobject>
<imageobject>
<imagedata fileref="Common_Content/images/title_logo.svg" format="SVG" />
</imageobject>
</inlinemediaobject>
</corpauthor>
<xi:include href="Common_Content/Legal_Notice.xml" xmlns:xi="http://www.w3.org/2001/XInclude" />
<xi:include href="Author_Group.xml" xmlns:xi="http://www.w3.org/2001/XInclude" />
</bookinfo>

View File

@ -1,9 +1,3 @@
<?xml version='1.0' encoding='utf-8' ?>
<!DOCTYPE section PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN" "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
<!ENTITY % BOOK_ENTITIES SYSTEM "cloudstack.ent">
%BOOK_ENTITIES;
]>
<!-- 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
@ -22,7 +16,7 @@
under the License.
-->
<section id="trial-installation">
<title>Trial Installation</title>
<para>Coming soon.</para>
</section>
<!ENTITY PRODUCT "CloudStack">
<!ENTITY BOOKID "Technical Documentation">
<!ENTITY YEAR "2012">
<!ENTITY HOLDER "Apache Software Foundation">

View File

@ -0,0 +1,54 @@
<?xml version='1.0' encoding='utf-8' ?>
<!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN" "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
<!ENTITY % BOOK_ENTITIES SYSTEM "cloudstack.ent">
%BOOK_ENTITIES;
<!ENTITY % xinclude SYSTEM "http://www.docbook.org/xml/4.4/xinclude.mod">
%xinclude;
]>
<!-- 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.
-->
<book>
<bookinfo id="cloudstack_plugin_niciranvp">
<title>&PRODUCT; Plugin Guide for the Nicira NVP Plugin</title>
<productname>Apache CloudStack</productname>
<productnumber>4.0</productnumber>
<edition>1</edition>
<pubsnumber></pubsnumber>
<abstract>
<para>
Plugin Guide for the Nicira NVP Plugin.
</para>
</abstract>
<corpauthor>
<inlinemediaobject>
<imageobject>
<imagedata fileref="Common_Content/images/title_logo.svg" format="SVG" />
</imageobject>
</inlinemediaobject>
</corpauthor>
<xi:include href="Common_Content/Legal_Notice.xml" xmlns:xi="http://www.w3.org/2001/XInclude" />
<xi:include href="Author_Group.xml" xmlns:xi="http://www.w3.org/2001/XInclude" />
</bookinfo>
<xi:include href="plugin-niciranvp-about.xml" xmlns:xi="http://www.w3.org/2001/XInclude" />
<xi:include href="plugin-niciranvp-usage.xml" xmlns:xi="http://www.w3.org/2001/XInclude" />
<xi:include href="plugin-niciranvp-troubleshooting.xml" xmlns:xi="http://www.w3.org/2001/XInclude" />
<xi:include href="plugin-niciranvp-revisions.xml" xmlns:xi="http://www.w3.org/2001/XInclude" />
</book>

View File

@ -0,0 +1,22 @@
<!-- 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.
-->
<!ENTITY PRODUCT "CloudStack">
<!ENTITY BOOKID "Technical Documentation">
<!ENTITY YEAR "2012">
<!ENTITY HOLDER "Apache Software Foundation">

View File

@ -0,0 +1,55 @@
<?xml version='1.0' encoding='utf-8' ?>
<!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN" "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
<!ENTITY % BOOK_ENTITIES SYSTEM "cloudstack.ent">
%BOOK_ENTITIES;
]>
<!-- 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.
-->
<book>
<bookinfo id="book-installation">
<title>&PRODUCT; Installation Guide</title>
<productname>Apache CloudStack</productname>
<productnumber>4.0</productnumber>
<edition>1</edition>
<pubsnumber></pubsnumber>
<abstract>
<para>
Installation Guide for &PRODUCT;.
</para>
</abstract>
<corpauthor>
<inlinemediaobject>
<imageobject>
<imagedata fileref="Common_Content/images/title_logo.svg" format="SVG" />
</imageobject>
</inlinemediaobject>
</corpauthor>
<xi:include href="Common_Content/Legal_Notice.xml" xmlns:xi="http://www.w3.org/2001/XInclude" />
<xi:include href="Author_Group.xml" xmlns:xi="http://www.w3.org/2001/XInclude" />
</bookinfo>
<xi:include href="concepts.xml" xmlns:xi="http://www.w3.org/2001/XInclude" />
<xi:include href="cloud-infrastructure-concepts.xml" xmlns:xi="http://www.w3.org/2001/XInclude"/>
<xi:include href="installation.xml" xmlns:xi="http://www.w3.org/2001/XInclude" />
<xi:include href="ui.xml" xmlns:xi="http://www.w3.org/2001/XInclude" />
<xi:include href="provisioning-steps.xml" xmlns:xi="http://www.w3.org/2001/XInclude"/>
<xi:include href="hypervisor-installation.xml" xmlns:xi="http://www.w3.org/2001/XInclude" />
<xi:include href="choosing-a-deployment-architecture.xml" xmlns:xi="http://www.w3.org/2001/XInclude" />
<xi:include href="Revision_History_Install_Guide.xml" xmlns:xi="http://www.w3.org/2001/XInclude" />
</book>

View File

@ -0,0 +1,55 @@
<?xml version='1.0' encoding='utf-8' ?>
<!DOCTYPE appendix PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN" "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
<!ENTITY % BOOK_ENTITIES SYSTEM "cloudstack.ent">
%BOOK_ENTITIES;
]>
<!-- 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.
-->
<appendix id="appe-cloudstack-Revision_History">
<title>Revision History</title>
<simpara>
<revhistory>
<revision>
<revnumber>1-0</revnumber>
<date>October 5 2012</date>
<author>
<firstname>Jessica</firstname>
<surname>Tomechak</surname>
<email/>
</author>
<author>
<firstname>Radhika</firstname>
<surname>PC</surname>
<email/>
</author>
<author>
<firstname>Wido</firstname>
<surname>den Hollander</surname>
<email/>
</author>
<revdescription>
<simplelist>
<member>Initial publication</member>
</simplelist>
</revdescription>
</revision>
</revhistory>
</simpara>
</appendix>

View File

@ -22,8 +22,17 @@
under the License.
-->
<<<<<<< HEAD
<chapter id="accounts">
<title>Accounts</title>
<xi:include href="accounts-users-domains.xml" xmlns:xi="http://www.w3.org/2001/XInclude" />
<xi:include href="LDAPserver-for-user-authentication.xml" xmlns:xi="http://www.w3.org/2001/XInclude" />
</chapter>
=======
<section id="accounts">
<title>Accounts</title>
<xi:include href="accounts-users-domains.xml" xmlns:xi="http://www.w3.org/2001/XInclude" />
<xi:include href="LDAPserver-for-user-authentication.xml" xmlns:xi="http://www.w3.org/2001/XInclude" />
</section>
>>>>>>> master

View File

@ -0,0 +1,73 @@
<?xml version='1.0' encoding='utf-8' ?>
<!DOCTYPE section PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN" "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
<!ENTITY % BOOK_ENTITIES SYSTEM "cloudstack.ent">
%BOOK_ENTITIES;
]>
<!-- 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.
-->
<section id="acquire-new-ip-for-vpc">
<title>Acquiring a New IP Address for a VPC</title>
<para>When you acquire an IP address, all IP addresses are allocated to VPC, not to the guest
networks within the VPC. The IPs are associated to the guest network only when the first
port-forwarding, load balancing, or Static NAT rule is created for the IP or the network. IP
can't be associated to more than one network at a time.</para>
<orderedlist>
<listitem>
<para>Log in to the &PRODUCT; UI as an administrator or end user.</para>
</listitem>
<listitem>
<para>In the left navigation, choose Network.</para>
</listitem>
<listitem>
<para>In the Select view, select VPC.</para>
<para>All the VPCs that you have created for the account is listed in the page.</para>
</listitem>
<listitem>
<para>Click the Configure button of the VPC to which you want to deploy the VMs.</para>
<para>The VPC page is displayed where all the tiers you created are listed in a
diagram.</para>
</listitem>
<listitem>
<para>Click the Settings icon.</para>
<para>The following options are displayed.</para>
<itemizedlist>
<listitem>
<para>IP Addresses</para>
</listitem>
<listitem>
<para>Gateways</para>
</listitem>
<listitem>
<para>Site-to-Site VPN</para>
</listitem>
<listitem>
<para>Network ACLs</para>
</listitem>
</itemizedlist>
</listitem>
<listitem>
<para>Select IP Addresses.</para>
<para>The IP Addresses page is displayed.</para>
</listitem>
<listitem>
<para>Click Acquire New IP, and click Yes in the confirmation dialog.</para>
<para>You are prompted for confirmation because, typically, IP addresses are a limited
resource. Within a few moments, the new IP address should appear with the state Allocated.
You can now use the IP address in port forwarding, load balancing, and static NAT
rules.</para>
</listitem>
</orderedlist>
</section>

View File

@ -3,7 +3,6 @@
<!ENTITY % BOOK_ENTITIES SYSTEM "cloudstack.ent">
%BOOK_ENTITIES;
]>
<!-- 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
@ -11,9 +10,7 @@
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
@ -22,26 +19,47 @@
under the License.
-->
<section id="add-additional-guest-network">
<title>Adding an Additional Guest Network</title>
<orderedlist>
<listitem><para>Log in to the &PRODUCT; UI as an administrator or end user. </para></listitem>
<listitem><para>In the left navigation, choose Network.</para></listitem>
<listitem><para>Click Add guest network. Provide the following information: </para>
<itemizedlist>
<listitem><para><emphasis role="bold">Name</emphasis>: The name of the network. This will be user-visible. </para></listitem>
<listitem><para><emphasis role="bold">Display Text</emphasis>: The description of the network. This will be
user-visible.</para></listitem>
<listitem><para><emphasis role="bold">Zone</emphasis>. The name of the zone this network applies to. Each zone is a broadcast domain, and therefore each zone has a different
IP range for the guest network. The administrator must configure the IP
range for each zone.</para></listitem>
<listitem><para><emphasis role="bold">Network offering</emphasis>: If the administrator has configured
multiple network offerings, select the one you want to use for this
network.</para></listitem>
<listitem><para><emphasis role="bold">Guest Gateway</emphasis>: The gateway that the guests should use.</para></listitem>
<listitem><para><emphasis role="bold">Guest Netmask</emphasis>: The netmask in use on the subnet the guests will
use.</para></listitem>
</itemizedlist></listitem>
<listitem><para>Click Create.</para></listitem>
</orderedlist>
</section>
<title>Adding an Additional Guest Network</title>
<orderedlist>
<listitem>
<para>Log in to the &PRODUCT; UI as an administrator or end user. </para>
</listitem>
<listitem>
<para>In the left navigation, choose Network.</para>
</listitem>
<listitem>
<para>Click Add guest network. Provide the following information: </para>
<itemizedlist>
<listitem>
<para><emphasis role="bold">Name</emphasis>: The name of the network. This will be
user-visible. </para>
</listitem>
<listitem>
<para><emphasis role="bold">Display Text</emphasis>: The description of the network. This
will be user-visible.</para>
</listitem>
<listitem>
<para><emphasis role="bold">Zone</emphasis>. The name of the zone this network applies to.
Each zone is a broadcast domain, and therefore each zone has a different IP range for
the guest network. The administrator must configure the IP range for each zone.</para>
</listitem>
<listitem>
<para><emphasis role="bold">Network offering</emphasis>: If the administrator has
configured multiple network offerings, select the one you want to use for this
network.</para>
</listitem>
<listitem>
<para><emphasis role="bold">Guest Gateway</emphasis>: The gateway that the guests should
use.</para>
</listitem>
<listitem>
<para><emphasis role="bold">Guest Netmask</emphasis>: The netmask in use on the subnet the
guests will use.</para>
</listitem>
</itemizedlist>
</listitem>
<listitem>
<para>Click Create.</para>
</listitem>
</orderedlist>
</section>

View File

@ -0,0 +1,53 @@
<?xml version='1.0' encoding='utf-8' ?>
<!DOCTYPE section PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN" "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
<!ENTITY % BOOK_ENTITIES SYSTEM "cloudstack.ent">
%BOOK_ENTITIES;
]>
<!-- 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.
-->
<section id="add-clusters-kvm-xenserver">
<title>Add Cluster: KVM or XenServer</title>
<para>These steps assume you have already installed the hypervisor on the hosts and logged in to
the &PRODUCT; UI.</para>
<orderedlist>
<listitem>
<para>In the left navigation, choose Infrastructure. In Zones, click View More, then click the
zone in which you want to add the cluster.</para>
</listitem>
<listitem>
<para>Click the Compute tab.</para>
</listitem>
<listitem>
<para>In the Clusters node of the diagram, click View All.</para>
</listitem>
<listitem>
<para>Click Add Cluster.</para>
</listitem>
<listitem>
<para>Choose the hypervisor type for this cluster.</para>
</listitem>
<listitem>
<para>Choose the pod in which you want to create the cluster.</para>
</listitem>
<listitem>
<para>Enter a name for the cluster. This can be text of your choosing and is not used by
&PRODUCT;.</para>
</listitem>
<listitem>
<para>Click OK.</para>
</listitem>
</orderedlist>
</section>

View File

@ -0,0 +1,43 @@
<?xml version='1.0' encoding='utf-8' ?>
<!DOCTYPE chapter PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN" "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
<!ENTITY % BOOK_ENTITIES SYSTEM "cloudstack.ent">
%BOOK_ENTITIES;
]>
<!-- 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.
-->
<section id="add-clusters-ovm">
<title>Add Cluster: OVM</title>
<para>To add a Cluster of hosts that run Oracle VM (OVM):</para>
<orderedlist>
<listitem><para>Add a companion non-OVM cluster to the Pod. This cluster provides an environment where the CloudPlatform System VMs can run. You should have already installed a non-OVM hypervisor on at least one Host to prepare for this step. Depending on which hypervisor you used:</para>
<itemizedlist>
<listitem><para>For VMWare, follow the steps in Add Cluster: vSphere. When finished, return here and continue with the next step.</para></listitem>
<listitem><para>For KVM or XenServer, follow the steps in <xref linkend="add-clusters-kvm-xenserver"/>. When finished, return here and continue with the next step</para></listitem>
</itemizedlist>
</listitem>
<listitem><para>In the left navigation, choose Infrastructure. In Zones, click View More, then click the zone in which you want to add the cluster.</para></listitem>
<listitem><para>Click the Compute tab. In the Pods node, click View All. Select the same pod you used in step 1.</para></listitem>
<listitem><para>Click View Clusters, then click Add Cluster.</para>
<para>The Add Cluster dialog is displayed.</para></listitem>
<listitem><para>In Hypervisor, choose OVM.</para></listitem>
<listitem><para>In Cluster, enter a name for the cluster.</para></listitem>
<listitem><para>Click Add.</para></listitem>
</orderedlist>
</section>

View File

@ -0,0 +1,121 @@
<?xml version='1.0' encoding='utf-8' ?>
<!DOCTYPE section PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN" "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
<!ENTITY % BOOK_ENTITIES SYSTEM "cloudstack.ent">
%BOOK_ENTITIES;
]>
<!-- 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.
-->
<section id="add-clusters-vsphere">
<title>Add Cluster: vSphere</title>
<para>Host management for vSphere is done through a combination of vCenter and the &PRODUCT; admin
UI. &PRODUCT; requires that all hosts be in a &PRODUCT; cluster, but the cluster may consist of
a single host. As an administrator you must decide if you would like to use clusters of one host
or of multiple hosts. Clusters of multiple hosts allow for features like live migration.
Clusters also require shared storage such as NFS or iSCSI.</para>
<para>For vSphere servers, we recommend creating the cluster of hosts in vCenter and then adding
the entire cluster to &PRODUCT;. Follow these requirements:</para>
<itemizedlist>
<listitem>
<para>Do not put more than 8 hosts in a vSphere cluster</para>
</listitem>
<listitem>
<para>Make sure the hypervisor hosts do not have any VMs already running before you add them
to &PRODUCT;.</para>
</listitem>
</itemizedlist>
<para>To add a vSphere cluster to &PRODUCT;:</para>
<orderedlist>
<listitem>
<para>Create the cluster of hosts in vCenter. Follow the vCenter instructions to do this. You
will create a cluster that looks something like this in vCenter.</para>
<mediaobject>
<imageobject>
<imagedata fileref="./images/vsphere-client.png"/>
</imageobject>
<textobject>
<phrase>vsphereclient.png: vSphere client</phrase>
</textobject>
</mediaobject>
</listitem>
<listitem>
<para>Log in to the UI.</para>
</listitem>
<listitem>
<para>In the left navigation, choose Infrastructure. In Zones, click View More, then click the
zone in which you want to add the cluster.</para>
</listitem>
<listitem>
<para>Click the Compute tab, and click View All on Pods. Choose the pod to which you want to
add the cluster.</para>
</listitem>
<listitem>
<para>Click View Clusters.</para>
</listitem>
<listitem>
<para>Click Add Cluster.</para>
</listitem>
<listitem>
<para>In Hypervisor, choose VMware.</para>
</listitem>
<listitem>
<para>Provide the following information in the dialog. The fields below make reference to
values from vCenter.</para>
<itemizedlist>
<listitem>
<para>Cluster Name. Enter the name of the cluster you created in vCenter. For example,
"cloud.cluster.2.2.1"</para>
</listitem>
<listitem>
<para>vCenter Host. Enter the hostname or IP address of the vCenter server. </para>
</listitem>
<listitem>
<para>vCenter Username. Enter the username that &PRODUCT; should use to connect to
vCenter. This user must have all administrative privileges.</para>
</listitem>
<listitem>
<para>vCenter Password. Enter the password for the user named above</para>
</listitem>
<listitem>
<para>vCenter Datacenter. Enter the vCenter datacenter that the cluster is in. For
example, "cloud.dc.VM".</para>
<para>If you have enabled Nexus dvSwitch in the environment, the following parameters for
dvSwitch configuration are displayed:</para>
</listitem>
<listitem>
<para>Nexus dvSwitch IP Address: The IP address of the Nexus VSM appliance.</para>
</listitem>
<listitem>
<para>Nexus dvSwitch Username: The username required to access the Nexus VSM
applicance.</para>
</listitem>
<listitem>
<para>Nexus dvSwitch Password: The password associated with the username specified
above.</para>
<mediaobject>
<imageobject>
<imagedata fileref="./images/add-cluster.png"/>
</imageobject>
<textobject>
<phrase>addcluster.png: add cluster</phrase>
</textobject>
</mediaobject>
<para>There might be a slight delay while the cluster is provisioned. It will
automatically display in the UI</para>
</listitem>
</itemizedlist>
</listitem>
</orderedlist>
</section>

View File

@ -0,0 +1,104 @@
<?xml version='1.0' encoding='utf-8' ?>
<!DOCTYPE section PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN" "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
<!ENTITY % BOOK_ENTITIES SYSTEM "cloudstack.ent">
%BOOK_ENTITIES;
]>
<!-- 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.
-->
<section id="add-gateway-vpc">
<title>Adding a Private Gateway to a VPC</title>
<para>A private gateway can be added by the root admin only. The VPC private network has 1:1
relationship with the NIC of the physical network. No gateways with duplicated VLAN and IP are
allowed in the same data center.</para>
<orderedlist>
<listitem>
<para>Log in to the &PRODUCT; UI as an administrator or end user.</para>
</listitem>
<listitem>
<para>In the left navigation, choose Network.</para>
</listitem>
<listitem>
<para>In the Select view, select VPC.</para>
<para>All the VPCs that you have created for the account is listed in the page.</para>
</listitem>
<listitem>
<para>Click the Configure button of the VPC to which you want to configure load balancing
rules.</para>
<para>The VPC page is displayed where all the tiers you created are listed in a
diagram.</para>
</listitem>
<listitem>
<para>Click the Settings icon.</para>
<para>The following options are displayed.</para>
<itemizedlist>
<listitem>
<para>IP Addresses</para>
</listitem>
<listitem>
<para>Private Gateways</para>
</listitem>
<listitem>
<para>Site-to-Site VPN</para>
</listitem>
<listitem>
<para>Network ACLs</para>
</listitem>
</itemizedlist>
</listitem>
<listitem>
<para>Select Private Gateways.</para>
<para>The Gateways page is displayed.</para>
</listitem>
<listitem>
<para>Click Add new gateway:</para>
<mediaobject>
<imageobject>
<imagedata fileref="./images/add-new-gateway-vpc.png"/>
</imageobject>
<textobject>
<phrase>add-new-gateway-vpc.png: adding a private gateway for the VPC.</phrase>
</textobject>
</mediaobject>
</listitem>
<listitem>
<para>Specify the following:</para>
<itemizedlist>
<listitem>
<para><emphasis role="bold">Physical Network</emphasis>: The physical network you have
created in the zone.</para>
</listitem>
<listitem>
<para><emphasis role="bold">IP Address</emphasis>: The IP address associated with the VPC
gateway.</para>
</listitem>
<listitem>
<para><emphasis role="bold">Gateway</emphasis>: The gateway through which the traffic is
routed to and from the VPC.</para>
</listitem>
<listitem>
<para><emphasis role="bold">Netmask</emphasis>: The netmask associated with the VPC
gateway.</para>
</listitem>
<listitem>
<para><emphasis role="bold">VLAN</emphasis>: The VLAN associated with the VPC
gateway.</para>
</listitem>
</itemizedlist>
<para>The new gateway appears in the list. You can repeat these steps to add more gateway for
this VPC.</para>
</listitem>
</orderedlist>
</section>

View File

@ -3,17 +3,14 @@
<!ENTITY % BOOK_ENTITIES SYSTEM "cloudstack.ent">
%BOOK_ENTITIES;
]>
<!-- 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
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
@ -21,72 +18,114 @@
specific language governing permissions and limitations
under the License.
-->
<section id="add-ingress-egress-rules">
<title>Adding Ingress and Egress Rules to a Security Group</title>
<orderedlist>
<listitem><para>Log in to the &PRODUCT; UI as an administrator or end user. </para></listitem>
<listitem><para>In the left navigation, choose Network</para></listitem>
<listitem><para>In Select view, choose Security Groups, then click the security group you want .</para></listitem>
<listitem><para>To add an ingress rule, click the Ingress Rules tab and fill out the following fields to specify what network traffic is allowed into VM instances in this security group. If no ingress rules are specified, then no traffic will be allowed in, except for responses to any traffic that has been allowed out through an egress rule.</para>
<itemizedlist>
<listitem><para><emphasis role="bold">Add by CIDR/Account</emphasis>. Indicate whether the source of the
traffic will be defined by IP address (CIDR) or an existing security group
in a &PRODUCT; account (Account). Choose Account if you want to allow
incoming traffic from all VMs in another security group</para></listitem>
<listitem><para><emphasis role="bold">Protocol</emphasis>. The networking protocol that sources will use to
send traffic to the security group. TCP and UDP are typically used for data
exchange and end-user communications. ICMP is typically used to send error
messages or network monitoring data.</para></listitem>
<listitem><para><emphasis role="bold">Start Port, End Port</emphasis>. (TCP, UDP only) A range of listening
ports that are the destination for the incoming traffic. If you are opening
a single port, use the same number in both fields.</para></listitem>
<listitem><para><emphasis role="bold">ICMP Type, ICMP Code</emphasis>. (ICMP only) The type of message and
error code that will be accepted.</para></listitem>
<listitem><para><emphasis role="bold">CIDR</emphasis>. (Add by CIDR only) To accept only traffic from IP
addresses within a particular address block, enter a CIDR or a
comma-separated list of CIDRs. The CIDR is the base IP address of the
incoming traffic. For example, 192.168.0.0/22. To allow all CIDRs, set to
0.0.0.0/0.</para></listitem>
<listitem><para><emphasis role="bold">Account, Security Group</emphasis>. (Add by Account only) To accept only
traffic from another security group, enter the &PRODUCT; account and
name of a security group that has already been defined in that account. To
allow traffic between VMs within the security group you are editing now,
enter the same name you used in step 7.</para></listitem>
</itemizedlist>
<para>The following example allows inbound HTTP access from anywhere:</para>
<mediaobject>
<imageobject>
<imagedata fileref="./images/http-access.png" />
</imageobject>
<textobject><phrase>httpaccess.png: allows inbound HTTP access from anywhere</phrase></textobject>
</mediaobject>
</listitem>
<listitem><para>To add an egress rule, click the Egress Rules tab and fill out the following fields to specify what type of traffic is allowed to be sent out of VM instances in this security group. If no egress rules are specified, then all traffic will be allowed out. Once egress rules are specified, the following types of traffic are allowed out: traffic specified in egress rules; queries to DNS and DHCP servers; and responses to any traffic that has been allowed in through an ingress rule</para>
<itemizedlist>
<listitem><para><emphasis role="bold">Add by CIDR/Account</emphasis>. Indicate whether the destination of the
traffic will be defined by IP address (CIDR) or an existing security group
in a &PRODUCT; account (Account). Choose Account if you want to allow
outgoing traffic to all VMs in another security group.</para></listitem>
<listitem><para><emphasis role="bold">Protocol</emphasis>. The networking protocol that VMs will use to send
outgoing traffic. TCP and UDP are typically used for data exchange and
end-user communications. ICMP is typically used to send error messages or
network monitoring data.</para></listitem>
<listitem><para><emphasis role="bold">Start Port, End Port</emphasis>. (TCP, UDP only) A range of listening
ports that are the destination for the outgoing traffic. If you are opening
a single port, use the same number in both fields.</para></listitem>
<listitem><para><emphasis role="bold">ICMP Type, ICMP Code</emphasis>. (ICMP only) The type of message and
error code that will be sent</para></listitem>
<listitem><para><emphasis role="bold">CIDR</emphasis>. (Add by CIDR only) To send traffic only to IP addresses
within a particular address block, enter a CIDR or a comma-separated list of
CIDRs. The CIDR is the base IP address of the destination. For example,
192.168.0.0/22. To allow all CIDRs, set to 0.0.0.0/0.</para></listitem>
<listitem><para><emphasis role="bold">Account, Security Group</emphasis>. (Add by Account only) To allow
traffic to be sent to another security group, enter the &PRODUCT;
account and name of a security group that has already been defined in that
account. To allow traffic between VMs within the security group you are
editing now, enter its name.</para></listitem>
</itemizedlist></listitem>
<listitem><para>Click Add.</para></listitem>
</orderedlist>
<title>Adding Ingress and Egress Rules to a Security Group</title>
<orderedlist>
<listitem>
<para>Log in to the &PRODUCT; UI as an administrator or end user. </para>
</listitem>
<listitem>
<para>In the left navigation, choose Network</para>
</listitem>
<listitem>
<para>In Select view, choose Security Groups, then click the security group you want .</para>
</listitem>
<listitem>
<para>To add an ingress rule, click the Ingress Rules tab and fill out the following fields to
specify what network traffic is allowed into VM instances in this security group. If no
ingress rules are specified, then no traffic will be allowed in, except for responses to any
traffic that has been allowed out through an egress rule.</para>
<itemizedlist>
<listitem>
<para><emphasis role="bold">Add by CIDR/Account</emphasis>. Indicate whether the source of
the traffic will be defined by IP address (CIDR) or an existing security group in a
&PRODUCT; account (Account). Choose Account if you want to allow incoming traffic from
all VMs in another security group</para>
</listitem>
<listitem>
<para><emphasis role="bold">Protocol</emphasis>. The networking protocol that sources will
use to send traffic to the security group. TCP and UDP are typically used for data
exchange and end-user communications. ICMP is typically used to send error messages or
network monitoring data.</para>
</listitem>
<listitem>
<para><emphasis role="bold">Start Port, End Port</emphasis>. (TCP, UDP only) A range of
listening ports that are the destination for the incoming traffic. If you are opening a
single port, use the same number in both fields.</para>
</listitem>
<listitem>
<para><emphasis role="bold">ICMP Type, ICMP Code</emphasis>. (ICMP only) The type of
message and error code that will be accepted.</para>
</listitem>
<listitem>
<para><emphasis role="bold">CIDR</emphasis>. (Add by CIDR only) To accept only traffic
from IP addresses within a particular address block, enter a CIDR or a comma-separated
list of CIDRs. The CIDR is the base IP address of the incoming traffic. For example,
192.168.0.0/22. To allow all CIDRs, set to 0.0.0.0/0.</para>
</listitem>
<listitem>
<para><emphasis role="bold">Account, Security Group</emphasis>. (Add by Account only) To
accept only traffic from another security group, enter the &PRODUCT; account and name of
a security group that has already been defined in that account. To allow traffic between
VMs within the security group you are editing now, enter the same name you used in step
7.</para>
</listitem>
</itemizedlist>
<para>The following example allows inbound HTTP access from anywhere:</para>
<mediaobject>
<imageobject>
<imagedata fileref="./images/http-access.png"/>
</imageobject>
<textobject>
<phrase>httpaccess.png: allows inbound HTTP access from anywhere</phrase>
</textobject>
</mediaobject>
</listitem>
<listitem>
<para>To add an egress rule, click the Egress Rules tab and fill out the following fields to
specify what type of traffic is allowed to be sent out of VM instances in this security
group. If no egress rules are specified, then all traffic will be allowed out. Once egress
rules are specified, the following types of traffic are allowed out: traffic specified in
egress rules; queries to DNS and DHCP servers; and responses to any traffic that has been
allowed in through an ingress rule</para>
<itemizedlist>
<listitem>
<para><emphasis role="bold">Add by CIDR/Account</emphasis>. Indicate whether the
destination of the traffic will be defined by IP address (CIDR) or an existing security
group in a &PRODUCT; account (Account). Choose Account if you want to allow outgoing
traffic to all VMs in another security group.</para>
</listitem>
<listitem>
<para><emphasis role="bold">Protocol</emphasis>. The networking protocol that VMs will use
to send outgoing traffic. TCP and UDP are typically used for data exchange and end-user
communications. ICMP is typically used to send error messages or network monitoring
data.</para>
</listitem>
<listitem>
<para><emphasis role="bold">Start Port, End Port</emphasis>. (TCP, UDP only) A range of
listening ports that are the destination for the outgoing traffic. If you are opening a
single port, use the same number in both fields.</para>
</listitem>
<listitem>
<para><emphasis role="bold">ICMP Type, ICMP Code</emphasis>. (ICMP only) The type of
message and error code that will be sent</para>
</listitem>
<listitem>
<para><emphasis role="bold">CIDR</emphasis>. (Add by CIDR only) To send traffic only to IP
addresses within a particular address block, enter a CIDR or a comma-separated list of
CIDRs. The CIDR is the base IP address of the destination. For example, 192.168.0.0/22.
To allow all CIDRs, set to 0.0.0.0/0.</para>
</listitem>
<listitem>
<para><emphasis role="bold">Account, Security Group</emphasis>. (Add by Account only) To
allow traffic to be sent to another security group, enter the &PRODUCT; account and name
of a security group that has already been defined in that account. To allow traffic
between VMs within the security group you are editing now, enter its name.</para>
</listitem>
</itemizedlist>
</listitem>
<listitem>
<para>Click Add.</para>
</listitem>
</orderedlist>
</section>

View File

@ -3,7 +3,6 @@
<!ENTITY % BOOK_ENTITIES SYSTEM "cloudstack.ent">
%BOOK_ENTITIES;
]>
<!-- 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
@ -11,9 +10,7 @@
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
@ -22,86 +19,133 @@
under the License.
-->
<section id="add-iso">
<title>Adding an ISO</title>
<para>To make additional operating system or other software available for use with guest VMs, you can add an ISO. The ISO is typically thought of as an operating system image, but you can also add ISOs for other types of software, such as desktop applications that you want to be installed as part of a template.</para>
<orderedlist>
<listitem><para>Log in to the &PRODUCT; UI as an administrator or end user.</para></listitem>
<listitem><para>In the left navigation bar, click Templates.</para></listitem>
<listitem><para>In Select View, choose ISOs.</para></listitem>
<listitem><para>Click Add ISO.</para></listitem>
<listitem><para>In the Add ISO screen, provide the following:</para>
<itemizedlist>
<listitem><para><emphasis role="bold">Name</emphasis>: Short name for the ISO image. For example, CentOS 6.2
64-bit.</para></listitem>
<listitem><para><emphasis role="bold">Description</emphasis>: Display test for the ISO image. For example,
CentOS 6.2 64-bit.</para></listitem>
<listitem><para><emphasis role="bold">URL</emphasis>: The URL that hosts the ISO image. The Management Server
must be able to access this location via HTTP. If needed you can place the
ISO image directly on the Management Server</para></listitem>
<listitem><para><emphasis role="bold">Zone</emphasis>: Choose the zone where you want the ISO to be available,
or All Zones to make it available throughout &PRODUCT;.</para></listitem>
<listitem><para><emphasis role="bold">Bootable</emphasis>: Whether or not a guest could boot off this ISO
image. For example, a CentOS ISO is bootable, a Microsoft Office ISO is not
bootable.</para></listitem>
<listitem><para><emphasis role="bold">OS Type</emphasis>: This helps &PRODUCT; and the hypervisor perform
certain operations and make assumptions that improve the performance of the
guest. Select one of the following.</para>
<itemizedlist>
<listitem><para>If the operating system of your desired ISO image is listed, choose it.</para></listitem>
<listitem><para>If the OS Type of the ISO is not listed or if the ISO is not bootable, choose Other.</para></listitem>
<listitem><para>(XenServer only) If you want to boot from this ISO in PV mode, choose Other PV (32-bit) or Other PV (64-bit)</para></listitem>
<listitem><para>(KVM only) If you choose an OS that is PV-enabled, the VMs created from this ISO will have a SCSI (virtio) root disk. If the OS is not PV-enabled, the VMs will have an IDE root disk. The PV-enabled types are:</para>
<informaltable>
<tgroup cols="3" align="left" colsep="1" rowsep="1">
<tbody>
<row>
<entry><para>Fedora 13</para></entry>
<entry><para>Fedora 12</para></entry>
<entry><para>Fedora 11</para></entry>
</row>
<row>
<entry><para>Fedora 10</para></entry>
<entry><para>Fedora 9</para></entry>
<entry><para>Other PV</para></entry>
</row>
<row>
<entry><para>Debian GNU/Linux</para></entry>
<entry><para>CentOS 5.3</para></entry>
<entry><para>CentOS 5.4</para></entry>
</row>
<row>
<entry><para>CentOS 5.5</para></entry>
<entry><para>Red Hat Enterprise Linux 5.3</para></entry>
<entry><para>Red Hat Enterprise Linux 5.4</para></entry>
</row>
<row>
<entry><para>Red Hat Enterprise Linux 5.5</para></entry>
<entry><para>Red Hat Enterprise Linux 6</para></entry>
<entry></entry>
</row>
</tbody>
</tgroup>
</informaltable></listitem>
</itemizedlist>
<note><para>It is not recommended to choose an older version of the OS than the version in the image. For
example, choosing CentOS 5.4 to support a CentOS 6.2 image will usually
not work. In these cases, choose Other.</para></note>
</listitem>
<listitem><para><emphasis role="bold">Extractable</emphasis>: Choose Yes if the ISO should be available for
extraction.</para></listitem>
<listitem><para><emphasis role="bold">Public</emphasis>: Choose Yes if this ISO should be available to other
users.</para></listitem>
<listitem><para><emphasis role="bold">Featured</emphasis>: Choose Yes if you would like this ISO to be more
prominent for users to select. The ISO will appear in the Featured ISOs
list. Only an administrator can make an ISO Featured.</para></listitem>
</itemizedlist></listitem>
<listitem><para>Click OK.</para>
<para>The Management Server will download the ISO. Depending on the size of the ISO, this may take a long time. The ISO status column will display Ready once it has been successfully downloaded into secondary storage. Clicking Refresh updates the download percentage.</para>
</listitem>
<listitem><para><emphasis role="bold">Important</emphasis>: Wait for the ISO to finish downloading. If you
move on to the next task and try to use the ISO right away, it will appear to fail.
The entire ISO must be available before &PRODUCT; can work with it.</para></listitem>
</orderedlist>
<title>Adding an ISO</title>
<para>To make additional operating system or other software available for use with guest VMs, you
can add an ISO. The ISO is typically thought of as an operating system image, but you can also
add ISOs for other types of software, such as desktop applications that you want to be installed
as part of a template.</para>
<orderedlist>
<listitem>
<para>Log in to the &PRODUCT; UI as an administrator or end user.</para>
</listitem>
<listitem>
<para>In the left navigation bar, click Templates.</para>
</listitem>
<listitem>
<para>In Select View, choose ISOs.</para>
</listitem>
<listitem>
<para>Click Add ISO.</para>
</listitem>
<listitem>
<para>In the Add ISO screen, provide the following:</para>
<itemizedlist>
<listitem>
<para><emphasis role="bold">Name</emphasis>: Short name for the ISO image. For example,
CentOS 6.2 64-bit.</para>
</listitem>
<listitem>
<para><emphasis role="bold">Description</emphasis>: Display test for the ISO image. For
example, CentOS 6.2 64-bit.</para>
</listitem>
<listitem>
<para><emphasis role="bold">URL</emphasis>: The URL that hosts the ISO image. The
Management Server must be able to access this location via HTTP. If needed you can place
the ISO image directly on the Management Server</para>
</listitem>
<listitem>
<para><emphasis role="bold">Zone</emphasis>: Choose the zone where you want the ISO to be
available, or All Zones to make it available throughout &PRODUCT;.</para>
</listitem>
<listitem>
<para><emphasis role="bold">Bootable</emphasis>: Whether or not a guest could boot off
this ISO image. For example, a CentOS ISO is bootable, a Microsoft Office ISO is not
bootable.</para>
</listitem>
<listitem>
<para><emphasis role="bold">OS Type</emphasis>: This helps &PRODUCT; and the hypervisor
perform certain operations and make assumptions that improve the performance of the
guest. Select one of the following.</para>
<itemizedlist>
<listitem>
<para>If the operating system of your desired ISO image is listed, choose it.</para>
</listitem>
<listitem>
<para>If the OS Type of the ISO is not listed or if the ISO is not bootable, choose
Other.</para>
</listitem>
<listitem>
<para>(XenServer only) If you want to boot from this ISO in PV mode, choose Other PV
(32-bit) or Other PV (64-bit)</para>
</listitem>
<listitem>
<para>(KVM only) If you choose an OS that is PV-enabled, the VMs created from this ISO
will have a SCSI (virtio) root disk. If the OS is not PV-enabled, the VMs will have
an IDE root disk. The PV-enabled types are:</para>
<informaltable>
<tgroup cols="3" align="left" colsep="1" rowsep="1">
<tbody>
<row>
<entry><para>Fedora 13</para></entry>
<entry><para>Fedora 12</para></entry>
<entry><para>Fedora 11</para></entry>
</row>
<row>
<entry><para>Fedora 10</para></entry>
<entry><para>Fedora 9</para></entry>
<entry><para>Other PV</para></entry>
</row>
<row>
<entry><para>Debian GNU/Linux</para></entry>
<entry><para>CentOS 5.3</para></entry>
<entry><para>CentOS 5.4</para></entry>
</row>
<row>
<entry><para>CentOS 5.5</para></entry>
<entry><para>Red Hat Enterprise Linux 5.3</para></entry>
<entry><para>Red Hat Enterprise Linux 5.4</para></entry>
</row>
<row>
<entry><para>Red Hat Enterprise Linux 5.5</para></entry>
<entry><para>Red Hat Enterprise Linux 6</para></entry>
<entry/>
</row>
</tbody>
</tgroup>
</informaltable>
</listitem>
</itemizedlist>
<note>
<para>It is not recommended to choose an older version of the OS than the version in the
image. For example, choosing CentOS 5.4 to support a CentOS 6.2 image will usually not
work. In these cases, choose Other.</para>
</note>
</listitem>
<listitem>
<para><emphasis role="bold">Extractable</emphasis>: Choose Yes if the ISO should be
available for extraction.</para>
</listitem>
<listitem>
<para><emphasis role="bold">Public</emphasis>: Choose Yes if this ISO should be available
to other users.</para>
</listitem>
<listitem>
<para><emphasis role="bold">Featured</emphasis>: Choose Yes if you would like this ISO to
be more prominent for users to select. The ISO will appear in the Featured ISOs list.
Only an administrator can make an ISO Featured.</para>
</listitem>
</itemizedlist>
</listitem>
<listitem>
<para>Click OK.</para>
<para>The Management Server will download the ISO. Depending on the size of the ISO, this may
take a long time. The ISO status column will display Ready once it has been successfully
downloaded into secondary storage. Clicking Refresh updates the download percentage.</para>
</listitem>
<listitem>
<para><emphasis role="bold">Important</emphasis>: Wait for the ISO to finish downloading. If
you move on to the next task and try to use the ISO right away, it will appear to fail. The
entire ISO must be available before &PRODUCT; can work with it.</para>
</listitem>
</orderedlist>
</section>

View File

@ -3,7 +3,6 @@
<!ENTITY % BOOK_ENTITIES SYSTEM "cloudstack.ent">
%BOOK_ENTITIES;
]>
<!-- 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
@ -11,9 +10,7 @@
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
@ -21,40 +18,65 @@
specific language governing permissions and limitations
under the License.
-->
<section id="add-load-balancer-rule">
<title>Adding a Load Balancer Rule</title>
<orderedlist>
<listitem><para>Log in to the &PRODUCT; UI as an administrator or end user. </para></listitem>
<listitem><para>In the left navigation, choose Network.</para></listitem>
<listitem><para>Click the name of the network where you want to load balance the traffic.</para></listitem>
<listitem><para>Click View IP Addresses.</para></listitem>
<listitem><para>Click the IP address for which you want to create the rule, then click the Configuration tab.</para></listitem>
<listitem><para>In the Load Balancing node of the diagram, click View All.</para>
<para>In a Basic zone, you can also create a load balancing rule without acquiring or selecting an
IP address. &PRODUCT; internally assign an IP when you create the load balancing
rule, which is listed in the IP Addresses page when the rule is created. </para>
<para>To do that, select the name of the network, then click Add Load Balancer tab. Continue with
<xref linkend="config-lb"/>.</para></listitem>
<listitem id="config-lb"><para>Fill in the following:</para>
<itemizedlist>
<listitem><para><emphasis role="bold">Name</emphasis>: A name for the load balancer rule.</para></listitem>
<listitem><para><emphasis role="bold">Public Port</emphasis>: The port receiving incoming traffic to be
balanced.</para></listitem>
<listitem><para><emphasis role="bold">Private Port</emphasis>: The port that the VMs will use to receive the
traffic.</para></listitem>
<listitem><para><emphasis role="bold">Algorithm</emphasis>: Choose the load balancing algorithm you want
&PRODUCT; to use. &PRODUCT; supports a variety of well-known
algorithms. If you are not familiar with these choices, you will find plenty
of information about them on the Internet.</para></listitem>
<listitem><para><emphasis role="bold">Stickiness</emphasis>: (Optional) Click Configure and choose the
algorithm for the stickiness policy. See Sticky Session Policies for Load
Balancer Rules.</para></listitem>
<listitem><para><emphasis role="bold">AutoScale</emphasis>: Click Configure and complete the AutoScale
configuration as explained in <xref linkend="autoscale"/>.</para></listitem>
</itemizedlist></listitem>
<listitem><para>Click Add VMs, then select two or more VMs that will divide the load of incoming traffic, and click Apply.</para>
<para>The new load balancer rule appears in the list. You can repeat these steps to add more load balancer rules for this IP address.</para>
</listitem>
</orderedlist>
<title>Adding a Load Balancer Rule</title>
<orderedlist>
<listitem>
<para>Log in to the &PRODUCT; UI as an administrator or end user. </para>
</listitem>
<listitem>
<para>In the left navigation, choose Network.</para>
</listitem>
<listitem>
<para>Click the name of the network where you want to load balance the traffic.</para>
</listitem>
<listitem>
<para>Click View IP Addresses.</para>
</listitem>
<listitem>
<para>Click the IP address for which you want to create the rule, then click the Configuration
tab.</para>
</listitem>
<listitem>
<para>In the Load Balancing node of the diagram, click View All.</para>
<para>In a Basic zone, you can also create a load balancing rule without acquiring or
selecting an IP address. &PRODUCT; internally assign an IP when you create the load
balancing rule, which is listed in the IP Addresses page when the rule is created. </para>
<para>To do that, select the name of the network, then click Add Load Balancer tab. Continue
with <xref linkend="config-lb"/>.</para>
</listitem>
<listitem id="config-lb">
<para>Fill in the following:</para>
<itemizedlist>
<listitem>
<para><emphasis role="bold">Name</emphasis>: A name for the load balancer rule.</para>
</listitem>
<listitem>
<para><emphasis role="bold">Public Port</emphasis>: The port receiving incoming traffic to
be balanced.</para>
</listitem>
<listitem>
<para><emphasis role="bold">Private Port</emphasis>: The port that the VMs will use to
receive the traffic.</para>
</listitem>
<listitem>
<para><emphasis role="bold">Algorithm</emphasis>: Choose the load balancing algorithm you
want &PRODUCT; to use. &PRODUCT; supports a variety of well-known algorithms. If you are
not familiar with these choices, you will find plenty of information about them on the
Internet.</para>
</listitem>
<listitem>
<para><emphasis role="bold">Stickiness</emphasis>: (Optional) Click Configure and choose
the algorithm for the stickiness policy. See Sticky Session Policies for Load Balancer
Rules.</para>
</listitem>
</itemizedlist>
</listitem>
<listitem>
<para>Click Add VMs, then select two or more VMs that will divide the load of incoming
traffic, and click Apply.</para>
<para>The new load balancer rule appears in the list. You can repeat these steps to add more
load balancer rules for this IP address.</para>
</listitem>
</orderedlist>
</section>

View File

@ -0,0 +1,123 @@
<?xml version='1.0' encoding='utf-8' ?>
<!DOCTYPE section PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN" "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
<!ENTITY % BOOK_ENTITIES SYSTEM "cloudstack.ent">
%BOOK_ENTITIES;
]>
<!-- 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.
-->
<section id="add-loadbalancer-rule-vpc">
<title>Adding Load Balancing Rules on a VPC</title>
<para>A &PRODUCT; user or administrator may create load balancing rules that balance traffic
received at a public IP to one or more VMs that belong to a network tier that provides load
balancing service in a VPC. A user creates a rule, specifies an algorithm, and assigns the rule
to a set of VMs within a VPC.</para>
<orderedlist>
<listitem>
<para>Log in to the &PRODUCT; UI as an administrator or end user.</para>
</listitem>
<listitem>
<para>In the left navigation, choose Network.</para>
</listitem>
<listitem>
<para>In the Select view, select VPC.</para>
<para>All the VPCs that you have created for the account is listed in the page.</para>
</listitem>
<listitem>
<para>Click the Configure button of the VPC to which you want to configure load balancing
rules.</para>
<para>The VPC page is displayed where all the tiers you created are listed in a
diagram.</para>
</listitem>
<listitem>
<para>Click the Settings icon.</para>
<para>The following options are displayed.</para>
<itemizedlist>
<listitem>
<para>IP Addresses</para>
</listitem>
<listitem>
<para>Gateways</para>
</listitem>
<listitem>
<para>Site-to-Site VPN</para>
</listitem>
<listitem>
<para>Network ACLs</para>
</listitem>
</itemizedlist>
</listitem>
<listitem>
<para>Select IP Addresses.</para>
<para>The IP Addresses page is displayed.</para>
</listitem>
<listitem>
<para>Click the IP address for which you want to create the rule, then click the Configuration
tab.</para>
</listitem>
<listitem>
<para>In the Load Balancing node of the diagram, click View All.</para>
</listitem>
<listitem>
<para>Select the tier to which you want to apply the rule.</para>
<note>
<para>In a VPC, the load balancing service is supported only on a single tier.</para>
</note>
</listitem>
<listitem>
<para>Specify the following:</para>
<itemizedlist>
<listitem>
<para><emphasis role="bold">Name</emphasis>: A name for the load balancer rule.</para>
</listitem>
<listitem>
<para><emphasis role="bold">Public Port</emphasis>: The port that receives the incoming
traffic to be balanced.</para>
</listitem>
<listitem>
<para><emphasis role="bold">Private Port</emphasis>: The port that the VMs will use to
receive the traffic.</para>
</listitem>
<listitem>
<para><emphasis role="bold">Algorithm</emphasis>. Choose the load balancing algorithm you
want &PRODUCT; to use. &PRODUCT; supports the following well-known algorithms:</para>
<itemizedlist>
<listitem>
<para>Round-robin</para>
</listitem>
<listitem>
<para>Least connections</para>
</listitem>
<listitem>
<para>Source</para>
</listitem>
</itemizedlist>
</listitem>
<listitem>
<para><emphasis role="bold">Stickiness</emphasis>. (Optional) Click Configure and choose
the algorithm for the stickiness policy. See Sticky Session Policies for Load Balancer
Rules.</para>
</listitem>
<listitem>
<para><emphasis role="bold">Add VMs</emphasis>: Click Add VMs, then select two or more VMs
that will divide the load of incoming traffic, and click Apply.</para>
</listitem>
</itemizedlist>
</listitem>
</orderedlist>
<para>The new load balancing rule appears in the list. You can repeat these steps to add more load
balancing rules for this IP address.</para>
</section>

View File

@ -29,5 +29,7 @@
<listitem><para>If invitations have been enabled, you can send invitations to new members.</para></listitem>
<listitem><para>If invitations are not enabled, you can add members directly through the UI.</para></listitem>
</itemizedlist>
<xi:include href="send-projects-membership-invitation.xml" xmlns:xi="http://www.w3.org/2001/XInclude" />
<xi:include href="add-projects-members-from-ui.xml" xmlns:xi="http://www.w3.org/2001/XInclude" />
</section>

View File

@ -0,0 +1,29 @@
<?xml version='1.0' encoding='utf-8' ?>
<!DOCTYPE section PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN" "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
<!ENTITY % BOOK_ENTITIES SYSTEM "cloudstack.ent">
%BOOK_ENTITIES;
]>
<!-- 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.
-->
<section id="add-more-clusters">
<title>Add More Clusters (Optional)</title>
<para>You need to tell &PRODUCT; about the hosts that it will manage. Hosts exist inside clusters,
so before you begin adding hosts to the cloud, you must add at least one cluster.</para>
<xi:include href="about-clusters.xml" xmlns:xi="http://www.w3.org/2001/XInclude"/>
<xi:include href="add-clusters-kvm-xenserver.xml" xmlns:xi="http://www.w3.org/2001/XInclude"/>
<xi:include href="add-clusters-ovm.xml" xmlns:xi="http://www.w3.org/2001/XInclude"/>
<xi:include href="add-clusters-vsphere.xml" xmlns:xi="http://www.w3.org/2001/XInclude"/>
</section>

View File

@ -0,0 +1,103 @@
<?xml version='1.0' encoding='utf-8' ?>
<!DOCTYPE section PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN" "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
<!ENTITY % BOOK_ENTITIES SYSTEM "cloudstack.ent">
%BOOK_ENTITIES;
]>
<!-- 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.
-->
<section id="add-portforward-vpc">
<title>Adding a Port Forwarding Rule on a VPC</title>
<orderedlist>
<listitem>
<para>Log in to the &PRODUCT; UI as an administrator or end user.</para>
</listitem>
<listitem>
<para>In the left navigation, choose Network.</para>
</listitem>
<listitem>
<para>In the Select view, select VPC.</para>
<para>All the VPCs that you have created for the account is listed in the page.</para>
</listitem>
<listitem>
<para>Click the Configure button of the VPC to which you want to deploy the VMs.</para>
<para>The VPC page is displayed where all the tiers you created are listed in a
diagram.</para>
</listitem>
<listitem>
<para>Click the Settings icon.</para>
<para>The following options are displayed.</para>
<itemizedlist>
<listitem>
<para>IP Addresses</para>
</listitem>
<listitem>
<para>Gateways</para>
</listitem>
<listitem>
<para>Site-to-Site VPN</para>
</listitem>
<listitem>
<para>Network ACLs</para>
</listitem>
</itemizedlist>
</listitem>
<listitem>
<para>Choose an existing IP address or acquire a new IP address. Click the name of the IP
address in the list.</para>
<para>The IP Addresses page is displayed.</para>
</listitem>
<listitem>
<para>Click the IP address for which you want to create the rule, then click the Configuration
tab.</para>
</listitem>
<listitem>
<para>In the Port Forwarding node of the diagram, click View All.</para>
</listitem>
<listitem>
<para>Select the tier to which you want to apply the rule.</para>
</listitem>
<listitem>
<para>Specify the following:</para>
<itemizedlist>
<listitem>
<para><emphasis role="bold">Public Port</emphasis>: The port to which public traffic will
be addressed on the IP address you acquired in the previous step.</para>
</listitem>
<listitem>
<para><emphasis role="bold">Private Port</emphasis>: The port on which the instance is
listening for forwarded public traffic.</para>
</listitem>
<listitem>
<para><emphasis role="bold">Protocol</emphasis>: The communication protocol in use between
the two ports.</para>
<itemizedlist>
<listitem>
<para>TCP</para>
</listitem>
<listitem>
<para>UDP</para>
</listitem>
</itemizedlist>
</listitem>
<listitem>
<para><emphasis role="bold">Add VM</emphasis>: Click Add VM. Select the name of the
instance to which this rule applies, and click Apply.</para>
<para>You can test the rule by opening an ssh session to the instance.</para>
</listitem>
</itemizedlist>
</listitem>
</orderedlist>
</section>

View File

@ -0,0 +1,108 @@
<?xml version='1.0' encoding='utf-8' ?>
<!DOCTYPE section PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN" "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
<!ENTITY % BOOK_ENTITIES SYSTEM "cloudstack.ent">
%BOOK_ENTITIES;
]>
<!-- 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.
-->
<section id="add-primary-storage">
<title>Adding Primary Storage</title>
<note>
<para>Ensure that nothing stored on the server. Adding the server to CloudStack will destroy any
existing data.</para>
</note>
<para>When you create a new zone, the first primary storage is added as part of that procedure.
You can add primary storage servers at any time, such as when adding a new cluster or adding
more servers to an existing cluster.</para>
<orderedlist>
<listitem>
<para>Log in to the &PRODUCT; UI.</para>
</listitem>
<listitem>
<para>In the left navigation, choose Infrastructure. In Zones, click View More, then click the
zone in which you want to add the primary storage.</para>
</listitem>
<listitem>
<para>Click the Compute tab.</para>
</listitem>
<listitem>
<para>In the Primary Storage node of the diagram, click View All.</para>
</listitem>
<listitem>
<para>Click Add Primary Storage.</para>
</listitem>
<listitem>
<para>Provide the following information in the dialog. The information required varies
depending on your choice in Protocol.</para>
<itemizedlist>
<listitem>
<para>Pod. The pod for the storage device.</para>
</listitem>
<listitem>
<para>Cluster. The cluster for the storage device.</para>
</listitem>
<listitem>
<para>Name. The name of the storage device</para>
</listitem>
<listitem>
<para>Protocol. For XenServer, choose either NFS, iSCSI, or PreSetup. For KVM, choose NFS
or SharedMountPoint. For vSphere choose either VMFS (iSCSI or FiberChannel) or
NFS</para>
</listitem>
<listitem>
<para>Server (for NFS, iSCSI, or PreSetup). The IP address or DNS name of the storage
device</para>
</listitem>
<listitem>
<para>Server (for VMFS). The IP address or DNS name of the vCenter server.</para>
</listitem>
<listitem>
<para>Path (for NFS). In NFS this is the exported path from the server.</para>
</listitem>
<listitem>
<para>Path (for VMFS). In vSphere this is a combination of the datacenter name and the
datastore name. The format is "/" datacenter name "/" datastore name. For example,
"/cloud.dc.VM/cluster1datastore".</para>
</listitem>
<listitem>
<para>Path (for SharedMountPoint). With KVM this is the path on each host that is where
this primary storage is mounted. For example, "/mnt/primary".</para>
</listitem>
<listitem>
<para>SR Name-Label (for PreSetup). Enter the name-label of the SR that has been set up
outside &PRODUCT;.</para>
</listitem>
<listitem>
<para>Target IQN (for iSCSI). In iSCSI this is the IQN of the target. For example,
iqn.1986-03.com.sun:02:01ec9bb549-1271378984</para>
</listitem>
<listitem>
<para>Lun # (for iSCSI). In iSCSI this is the LUN number. For example, 3.</para>
</listitem>
<listitem>
<para>Tags (optional). The comma-separated list of tags for this storage device. It should
be an equivalent set or superset of the tags on your disk offerings</para>
</listitem>
</itemizedlist>
<para>The tag sets on primary storage across clusters in a Zone must be identical. For
example, if cluster A provides primary storage that has tags T1 and T2, all other clusters
in the Zone must also provide primary storage that has tags T1 and T2.</para>
</listitem>
<listitem>
<para>Click OK.</para>
</listitem>
</orderedlist>
</section>

View File

@ -0,0 +1,48 @@
<?xml version='1.0' encoding='utf-8' ?>
<!DOCTYPE section PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN" "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
<!ENTITY % BOOK_ENTITIES SYSTEM "cloudstack.ent">
%BOOK_ENTITIES;
]>
<!-- 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.
-->
<section id="add-secondary-storage">
<title>Adding Secondary Storage</title>
<note>
<para>Be sure there is nothing stored on the server. Adding the server to CloudStack will
destroy any existing data.</para>
</note>
<para>When you create a new zone, the first secondary storage is added as part of that procedure.
You can add secondary storage servers at any time to add more servers to an existing
zone.</para>
<orderedlist>
<listitem>
<para>If you are going to use Swift for cloud-wide secondary storage, you must add the Swift
storage to &PRODUCT; before you add the local zone secondary storage servers.</para>
</listitem>
<listitem>
<para>To prepare for local zone secondary storage, you should have created and mounted an NFS
share during Management Server installation.</para>
</listitem>
<listitem>
<para>Make sure you prepared the system VM template during Management Server
installation.</para>
</listitem>
<listitem>
<para>4. Now that the secondary storage server for per-zone storage is prepared, add it to
&PRODUCT;. Secondary storage is added as part of the procedure for adding a new zone.</para>
</listitem>
</orderedlist>
</section>

View File

@ -3,7 +3,6 @@
<!ENTITY % BOOK_ENTITIES SYSTEM "cloudstack.ent">
%BOOK_ENTITIES;
]>
<!-- 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
@ -11,9 +10,7 @@
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
@ -21,19 +18,32 @@
specific language governing permissions and limitations
under the License.
-->
<section id="add-security-group">
<title>Adding a Security Group</title>
<para>A user or administrator can define a new security group.</para>
<orderedlist>
<listitem><para>Log in to the &PRODUCT; UI as an administrator or end user. </para></listitem>
<listitem><para>In the left navigation, choose Network</para></listitem>
<listitem><para>In Select view, choose Security Groups.</para></listitem>
<listitem><para>Click Add Security Group.</para></listitem>
<listitem><para>Provide a name and description.</para></listitem>
<listitem><para>Click OK.</para>
<para>The new security group appears in the Security Groups Details tab.</para></listitem>
<listitem><para>To make the security group useful, continue to Adding Ingress and Egress Rules to a Security Group.</para></listitem>
</orderedlist>
<title>Adding a Security Group</title>
<para>A user or administrator can define a new security group.</para>
<orderedlist>
<listitem>
<para>Log in to the &PRODUCT; UI as an administrator or end user. </para>
</listitem>
<listitem>
<para>In the left navigation, choose Network</para>
</listitem>
<listitem>
<para>In Select view, choose Security Groups.</para>
</listitem>
<listitem>
<para>Click Add Security Group.</para>
</listitem>
<listitem>
<para>Provide a name and description.</para>
</listitem>
<listitem>
<para>Click OK.</para>
<para>The new security group appears in the Security Groups Details tab.</para>
</listitem>
<listitem>
<para>To make the security group useful, continue to Adding Ingress and Egress Rules to a
Security Group.</para>
</listitem>
</orderedlist>
</section>

89
docs/en-US/add-tier.xml Normal file
View File

@ -0,0 +1,89 @@
<?xml version='1.0' encoding='utf-8' ?>
<!DOCTYPE section PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN" "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
<!ENTITY % BOOK_ENTITIES SYSTEM "cloudstack.ent">
%BOOK_ENTITIES;
]>
<!-- 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.
-->
<section id="add-tier">
<title>Adding Tiers</title>
<para>Tiers are distinct locations within a VPC that act as isolated networks, which do not have
access to other tiers by default. Tiers are set up on different VLANs that can communicate with
each other by using a virtual router. Tiers provide inexpensive, low latency network
connectivity to other tiers within the VPC.</para>
<orderedlist>
<listitem>
<para>Log in to the &PRODUCT; UI as an administrator or end user.</para>
</listitem>
<listitem>
<para>In the left navigation, choose Network.</para>
</listitem>
<listitem>
<para>In the Select view, select VPC.</para>
<para>All the VPC that you have created for the account is listed in the page.</para>
<note>
<para>The end users can see their own VPCs, while root and domain admin can see any VPC they
are authorized to see.</para>
</note>
</listitem>
<listitem>
<para>Click the Configure button of the VPC for which you want to set up tiers.</para>
<para>The Add new tier dialog is displayed, as follows:</para>
<mediaobject>
<imageobject>
<imagedata fileref="./images/add-tier.png"/>
</imageobject>
<textobject>
<phrase>add-tier.png: adding a tier to a vpc.</phrase>
</textobject>
</mediaobject>
<para>If you have already created tiers, the VPC diagram is displayed. Click Create Tier to
add a new tier.</para>
</listitem>
<listitem>
<para>Specify the following:</para>
<para>All the fields are mandatory.</para>
<itemizedlist>
<listitem>
<para><emphasis role="bold">Name</emphasis>: A unique name for the tier you create.</para>
</listitem>
<listitem>
<para><emphasis role="bold">Network Offering</emphasis>: The following default network
offerings are listed: DefaultIsolatedNetworkOfferingForVpcNetworksNoLB,
DefaultIsolatedNetworkOfferingForVpcNetworks</para>
<para>In a VPC, only one tier can be created by using LB-enabled network offering.</para>
</listitem>
<listitem>
<para><emphasis role="bold">Gateway</emphasis>: The gateway for the tier you create.
Ensure that the gateway is within the Super CIDR range that you specified while creating
the VPC, and is not overlapped with the CIDR of any existing tier within the VPC.</para>
</listitem>
<listitem>
<para><emphasis role="bold">Netmask</emphasis>: The netmask for the tier you create. </para>
<para>For example, if the VPC CIDR is 10.0.0.0/16 and the network tier CIDR is
10.0.1.0/24, the gateway of the tier is 10.0.1.1, and the netmask of the tier is
255.255.255.0.</para>
</listitem>
</itemizedlist>
</listitem>
<listitem>
<para>Click OK.</para>
</listitem>
<listitem>
<para>Continue with configuring access control list for the tier.</para>
</listitem>
</orderedlist>
</section>

View File

@ -0,0 +1,45 @@
<?xml version='1.0' encoding='utf-8' ?>
<!DOCTYPE section PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN" "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
<!ENTITY % BOOK_ENTITIES SYSTEM "cloudstack.ent">
%BOOK_ENTITIES;
]>
<!-- 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.
-->
<section id="add-vm-to-tier">
<title>Deploying VMs to the Tier</title>
<orderedlist>
<listitem>
<para>Log in to the &PRODUCT; UI as an administrator or end user.</para>
</listitem>
<listitem>
<para>In the left navigation, choose Network.</para>
</listitem>
<listitem>
<para>In the Select view, select VPC.</para>
<para>All the VPCs that you have created for the account is listed in the page.</para>
</listitem>
<listitem>
<para>Click the Configure button of the VPC to which you want to deploy the VMs.</para>
<para>The VPC page is displayed where all the tiers you created are listed.</para>
</listitem>
<listitem>
<para>Click the Add VM button of the tier for which you want to add a VM.</para>
<para>The Add Instance page is displayed.</para>
<para>Follow the on-screen instruction to add an instance. For information on adding an
instance, see Adding Instances section in the Installation Guide.</para>
</listitem>
</orderedlist>
</section>

75
docs/en-US/add-vpc.xml Normal file
View File

@ -0,0 +1,75 @@
<?xml version='1.0' encoding='utf-8' ?>
<!DOCTYPE section PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN" "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
<!ENTITY % BOOK_ENTITIES SYSTEM "cloudstack.ent">
%BOOK_ENTITIES;
]>
<!-- 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.
-->
<section id="add-vpc">
<title>Adding a Virtual Private Cloud</title>
<para>When creating the VPC, you simply provide the zone and a set of IP addresses for the VPC
network address space. You specify this set of addresses in the form of a Classless Inter-Domain
Routing (CIDR) block.</para>
<orderedlist>
<listitem>
<para>Log in to the &PRODUCT; UI as an administrator or end user. </para>
</listitem>
<listitem>
<para>In the left navigation, choose Network.</para>
</listitem>
<listitem>
<para>In the Select view, select VPC.</para>
</listitem>
<listitem>
<para>Click Add VPC. The Add VPC page is displayed as follows:</para>
<mediaobject>
<imageobject>
<imagedata fileref="./images/add-vpc.png"/>
</imageobject>
<textobject>
<phrase>add-vpc.png: adding a vpc.</phrase>
</textobject>
</mediaobject>
<para>Provide the following information:</para>
<itemizedlist>
<listitem>
<para><emphasis role="bold">Name</emphasis>: A short name for the VPC that you are
creating.</para>
</listitem>
<listitem>
<para><emphasis role="bold">Description</emphasis>: A brief description of the VPC.</para>
</listitem>
<listitem>
<para><emphasis role="bold">Zone</emphasis>: Choose the zone where you want the VPC to be
available.</para>
</listitem>
<listitem>
<para><emphasis role="bold">Super CIDR for Guest Networks</emphasis>: Defines the CIDR
range for all the tiers (guest networks) within a VPC. When you create a tier, ensure
that its CIDR is within the Super CIDR value you enter. The CIDR must be RFC1918
compliant.</para>
</listitem>
<listitem>
<para><emphasis role="bold">DNS domain for Guest Networks</emphasis>: If you want to
assign a special domain name, specify the DNS suffix. This parameter is applied to all
the tiers within the VPC. That implies, all the tiers you create in the VPC belong to
the same DNS domain. If the parameter is not specified, a DNS domain name is generated
automatically. </para>
</listitem>
</itemizedlist>
</listitem>
</orderedlist>
</section>

View File

@ -3,165 +3,332 @@
<!ENTITY % BOOK_ENTITIES SYSTEM "cloudstack.ent">
%BOOK_ENTITIES;
]>
<!-- 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.
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.
-->
<section id="added-API-commands">
<title>Added API commands</title>
<para>Added in 3.0.3:</para>
<itemizedlist>
<listitem><para>enableCiscoNexusVSM (Enables Nexus 1000v dvSwitch in &PRODUCT;.)</para></listitem>
<listitem><para>disableCiscoNexusVSM (Disables Nexus 1000v dvSwitch in &PRODUCT;.)</para></listitem>
<listitem><para>deleteCiscoNexusVSM (Deletes Nexus 1000v dvSwitch in &PRODUCT;.)</para></listitem>
<listitem><para>listCiscoNexusVSMs (Lists the control VLAN ID, packet VLAN ID, and data VLAN ID, as well as the IP address of the Nexus 1000v dvSwitch.)</para></listitem>
</itemizedlist>
<para>Added in 3.0.2:</para>
<itemizedlist>
<listitem><para>changeServiceForSystemVm</para>
<para>Changes the service offering for a system VM (console proxy or secondary storage). The system VM must be in a "Stopped" state for this command to take effect.</para>
</listitem>
</itemizedlist>
<para>Added in 3.0.1:</para>
<itemizedlist>
<listitem><para>changeServiceForSystemVm</para>
<para>Changes the service offering for a system VM (console proxy or secondary storage). The system VM must be in a "Stopped" state for this command to take effect.</para>
</listitem>
</itemizedlist>
<para>Added in 3.0.0:</para>
<informaltable frame="all">
<tgroup cols="3" align="left" colsep="1" rowsep="1">
<colspec colname="c1" />
<colspec colname="c2" />
<colspec colname="c3" />
<tbody>
<row>
<entry><para>assignVirtualMachine (Move a user VM to another user under same domain.)</para></entry>
<entry><para>restoreVirtualMachine (Restore a VM to original template or specific snapshot)</para></entry>
<entry><para>createLBStickinessPolicy (Creates a Load Balancer stickiness policy )</para></entry>
</row>
<row>
<entry><para>deleteLBStickinessPolicy (Deletes a LB stickiness policy.)</para></entry>
<entry><para>listLBStickinessPolicies (Lists LBStickiness policies.)</para></entry>
<entry><para>ldapConfig (Configure the LDAP context for this site.)</para></entry>
</row>
<row>
<entry><para>addSwift (Adds Swift.)</para></entry>
<entry><para>listSwifts (List Swift.)</para></entry>
<entry><para>migrateVolume (Migrate volume)</para></entry>
</row>
<row>
<entry><para>updateStoragePool (Updates a storage pool.)</para></entry>
<entry><para>authorizeSecurityGroupEgress (Authorizes a particular egress rule for this security group)</para></entry>
<entry><para>revokeSecurityGroupEgress (Deletes a particular egress rule from this security group)</para></entry>
</row>
<row>
<entry><para>createNetworkOffering (Creates a network offering.)</para></entry>
<entry><para>deleteNetworkOffering (Deletes a network offering.)</para></entry>
<entry><para>createProject (Creates a project)</para></entry>
</row>
<row>
<entry><para>deleteProject (Deletes a project)</para></entry>
<entry><para>updateProject (Updates a project)</para></entry>
<entry><para>activateProject (Activates a project)</para></entry>
</row>
<row>
<entry><para>suspendProject (Suspends a project)</para></entry>
<entry><para>listProjects (Lists projects and provides detailed information for listed projects)</para></entry>
<entry><para>addAccountToProject (Adds acoount to a project)</para></entry>
</row>
<row>
<entry><para>deleteAccountFromProject (Deletes account from the project)</para></entry>
<entry><para>listProjectAccounts (Lists project's accounts)</para></entry>
<entry><para>listProjectInvitations (Lists an account's invitations to join projects)</para></entry>
</row>
<row>
<entry><para>updateProjectInvitation (Accepts or declines project invitation)</para></entry>
<entry><para>deleteProjectInvitation (Deletes a project invitation)</para></entry>
<entry><para>updateHypervisorCapabilities (Updates a hypervisor capabilities.)</para></entry>
</row>
<row>
<entry><para>listHypervisorCapabilities (Lists all hypervisor capabilities.)</para></entry>
<entry><para>createPhysicalNetwork (Creates a physical network)</para></entry>
<entry><para>deletePhysicalNetwork (Deletes a Physical Network.)</para></entry>
</row>
<row>
<entry><para>listPhysicalNetworks (Lists physical networks)</para></entry>
<entry><para>updatePhysicalNetwork (Updates a physical network)</para></entry>
<entry><para>listSupportedNetworkServices (Lists all network services provided by &PRODUCT; or for the given Provider.)</para></entry>
</row>
<row>
<entry><para>addNetworkServiceProvider (Adds a network serviceProvider to a physical network)</para></entry>
<entry><para>deleteNetworkServiceProvider (Deletes a Network Service Provider.)</para></entry>
<entry><para>listNetworkServiceProviders (Lists network serviceproviders for a given physical network.)</para></entry>
</row>
<row>
<entry><para>updateNetworkServiceProvider (Updates a network serviceProvider of a physical network)</para></entry>
<entry><para>addTrafficType (Adds traffic type to a physical network)</para></entry>
<entry><para>deleteTrafficType (Deletes traffic type of a physical network)</para></entry>
</row>
<row>
<entry><para>listTrafficTypes (Lists traffic types of a given physical network.)</para></entry>
<entry><para>updateTrafficType (Updates traffic type of a physical network)</para></entry>
<entry><para>listTrafficTypeImplementors (Lists implementors of implementor of a network traffic type or implementors of all network traffic types)</para></entry>
</row>
<row>
<entry><para>createStorageNetworkIpRange (Creates a Storage network IP range.)</para></entry>
<entry><para>deleteStorageNetworkIpRange (Deletes a storage network IP Range.)</para></entry>
<entry><para>listStorageNetworkIpRange (List a storage network IP range.)</para></entry>
</row>
<row>
<entry><para>updateStorageNetworkIpRange (Update a Storage network IP range, only allowed when no IPs in this range have been allocated.)</para></entry>
<entry><para>listUsageTypes (List Usage Types)</para></entry>
<entry><para>addF5LoadBalancer (Adds a F5 BigIP load balancer device)</para></entry>
</row>
<row>
<entry><para>configureF5LoadBalancer (configures a F5 load balancer device)</para></entry>
<entry><para>deleteF5LoadBalancer ( delete a F5 load balancer device)</para></entry>
<entry><para>listF5LoadBalancers (lists F5 load balancer devices)</para></entry>
</row>
<row>
<entry><para>listF5LoadBalancerNetworks (lists network that are using a F5 load balancer device)</para></entry>
<entry><para>addSrxFirewall (Adds a SRX firewall device)</para></entry>
<entry><para>deleteSrxFirewall ( delete a SRX firewall device)</para></entry>
</row>
<row>
<entry><para>listSrxFirewalls (lists SRX firewall devices in a physical network)</para></entry>
<entry><para>listSrxFirewallNetworks (lists network that are using SRX firewall device)</para></entry>
<entry><para>addNetscalerLoadBalancer (Adds a netscaler load balancer device)</para></entry>
</row>
<row>
<entry><para>deleteNetscalerLoadBalancer ( delete a netscaler load balancer device)</para></entry>
<entry><para>configureNetscalerLoadBalancer (configures a netscaler load balancer device)</para></entry>
<entry><para>listNetscalerLoadBalancers (lists netscaler load balancer devices)</para></entry>
</row>
<row>
<entry><para>listNetscalerLoadBalancerNetworks (lists network that are using a netscaler load balancer device)</para></entry>
<entry><para>createVirtualRouterElement (Create a virtual router element.)</para></entry>
<entry><para>configureVirtualRouterElement (Configures a virtual router element.)</para></entry>
</row>
<row>
<entry><para>listVirtualRouterElements (Lists all available virtual router elements.)</para></entry>
<entry><para></para></entry>
<entry><para></para></entry>
</row>
</tbody>
</tgroup>
</informaltable>
</section>
<section id="added-API-commands">
<title>Added API commands</title>
<para>Added in 4.0</para>
<itemizedlist>
<listitem>
<para>createCounter (Adds metric counter)</para>
</listitem>
<listitem>
<para>deleteCounter (Deletes a counter)</para>
</listitem>
<listitem>
<para>listCounters (List the counters)</para>
</listitem>
<listitem>
<para>createCondition (Creates a condition)</para>
</listitem>
<listitem>
<para>deleteCondition (Removes a condition)</para>
</listitem>
<listitem>
<para>listConditions (List Conditions for the specific user)</para>
</listitem>
<listitem>
<para>createTags. Add tags to one or more resources. Example:
<programlisting>command=createTags
&amp;resourceIds=1,10,12
&amp;resourceType=userVm
&amp;tags[0].key=region
&amp;tags[0].value=canada
&amp;tags[1].key=city
&amp;tags[1].value=Toronto </programlisting></para>
</listitem>
<listitem>
<para>deleteTags. Remove tags from one or more resources. Example:
<programlisting>command=deleteTags
&amp;resourceIds=1,12
&amp;resourceType=Snapshot
&amp;tags[0].key=city </programlisting></para>
</listitem>
<listitem>
<para>listTags (Show currently defined resource tags)</para>
</listitem>
<listitem>
<para>createVPC (Creates a VPC)</para>
</listitem>
<listitem>
<para>listVPCs (Lists VPCs)</para>
</listitem>
<listitem>
<para>deleteVPC (Deletes a VPC)</para>
</listitem>
<listitem>
<para>updateVPC (Updates a VPC)</para>
</listitem>
<listitem>
<para>restartVPC (Restarts a VPC)</para>
</listitem>
<listitem>
<para>createVPCOffering (Creates VPC offering)</para>
</listitem>
<listitem>
<para>updateVPCOffering (Updates VPC offering)</para>
</listitem>
<listitem>
<para>deleteVPCOffering (Deletes VPC offering)</para>
</listitem>
<listitem>
<para>listVPCOfferings (Lists VPC offerings)</para>
</listitem>
<listitem>
<para>createPrivateGateway (Creates a private gateway)</para>
</listitem>
<listitem>
<para>listPrivateGateways (List private gateways)</para>
</listitem>
<listitem>
<para>deletePrivateGateway (Deletes a Private gateway)</para>
</listitem>
<listitem>
<para>createNetworkACL (Creates a ACL rule the given network (the network has to belong to
VPC))</para>
</listitem>
<listitem>
<para>deleteNetworkACL (Deletes a Network ACL)</para>
</listitem>
<listitem>
<para>listNetworkACLs (Lists all network ACLs)</para>
</listitem>
<listitem>
<para>createStaticRoute (Creates a static route)</para>
</listitem>
<listitem>
<para>deleteStaticRoute (Deletes a static route)</para>
</listitem>
<listitem>
<para>listStaticRoutes (Lists all static routes)</para>
</listitem>
<listitem>
<para>createVpnCustomerGateway (Creates site to site vpn customer gateway)</para>
</listitem>
<listitem>
<para>createVpnGateway (Creates site to site vpn local gateway)</para>
</listitem>
<listitem>
<para>createVpnConnection (Create site to site vpn connection)</para>
</listitem>
<listitem>
<para>deleteVpnCustomerGateway (Delete site to site vpn customer gateway)</para>
</listitem>
<listitem>
<para>deleteVpnGateway (Delete site to site vpn gateway)</para>
</listitem>
<listitem>
<para>deleteVpnConnection (Delete site to site vpn connection)</para>
</listitem>
<listitem>
<para>updateVpnCustomerGateway (Update site to site vpn customer gateway)</para>
</listitem>
<listitem>
<para>resetVpnConnection (Reset site to site vpn connection)</para>
</listitem>
<listitem>
<para>listVpnCustomerGateways (Lists site to site vpn customer gateways)</para>
</listitem>
<listitem>
<para>listVpnGateways (Lists site 2 site vpn gateways)</para>
</listitem>
<listitem>
<para>listVpnConnections (Lists site to site vpn connection gateways)</para>
</listitem>
</itemizedlist>
<para>Added in 3.0.3:</para>
<itemizedlist>
<listitem>
<para>enableCiscoNexusVSM (Enables Nexus 1000v dvSwitch in &PRODUCT;.)</para>
</listitem>
<listitem>
<para>disableCiscoNexusVSM (Disables Nexus 1000v dvSwitch in &PRODUCT;.)</para>
</listitem>
<listitem>
<para>deleteCiscoNexusVSM (Deletes Nexus 1000v dvSwitch in &PRODUCT;.)</para>
</listitem>
<listitem>
<para>listCiscoNexusVSMs (Lists the control VLAN ID, packet VLAN ID, and data VLAN ID, as well
as the IP address of the Nexus 1000v dvSwitch.)</para>
</listitem>
</itemizedlist>
<para>Added in 3.0.2:</para>
<itemizedlist>
<listitem>
<para>changeServiceForSystemVm</para>
<para>Changes the service offering for a system VM (console proxy or secondary storage). The
system VM must be in a "Stopped" state for this command to take effect.</para>
</listitem>
</itemizedlist>
<para>Added in 3.0.1:</para>
<itemizedlist>
<listitem>
<para>changeServiceForSystemVm</para>
<para>Changes the service offering for a system VM (console proxy or secondary storage). The
system VM must be in a "Stopped" state for this command to take effect.</para>
</listitem>
</itemizedlist>
<para>Added in 3.0.0:</para>
<informaltable frame="all">
<tgroup cols="3" align="left" colsep="1" rowsep="1">
<colspec colname="c1"/>
<colspec colname="c2"/>
<colspec colname="c3"/>
<tbody>
<row>
<entry><para>assignVirtualMachine (Move a user VM to another user under same
domain.)</para></entry>
<entry><para>restoreVirtualMachine (Restore a VM to original template or specific
snapshot)</para></entry>
<entry><para>createLBStickinessPolicy (Creates a Load Balancer stickiness policy
)</para></entry>
</row>
<row>
<entry><para>deleteLBStickinessPolicy (Deletes a LB stickiness policy.)</para></entry>
<entry><para>listLBStickinessPolicies (Lists LBStickiness policies.)</para></entry>
<entry><para>ldapConfig (Configure the LDAP context for this site.)</para></entry>
</row>
<row>
<entry><para>addSwift (Adds Swift.)</para></entry>
<entry><para>listSwifts (List Swift.)</para></entry>
<entry><para>migrateVolume (Migrate volume)</para></entry>
</row>
<row>
<entry><para>updateStoragePool (Updates a storage pool.)</para></entry>
<entry><para>authorizeSecurityGroupEgress (Authorizes a particular egress rule for this
security group)</para></entry>
<entry><para>revokeSecurityGroupEgress (Deletes a particular egress rule from this
security group)</para></entry>
</row>
<row>
<entry><para>createNetworkOffering (Creates a network offering.)</para></entry>
<entry><para>deleteNetworkOffering (Deletes a network offering.)</para></entry>
<entry><para>createProject (Creates a project)</para></entry>
</row>
<row>
<entry><para>deleteProject (Deletes a project)</para></entry>
<entry><para>updateProject (Updates a project)</para></entry>
<entry><para>activateProject (Activates a project)</para></entry>
</row>
<row>
<entry><para>suspendProject (Suspends a project)</para></entry>
<entry><para>listProjects (Lists projects and provides detailed information for listed
projects)</para></entry>
<entry><para>addAccountToProject (Adds acoount to a project)</para></entry>
</row>
<row>
<entry><para>deleteAccountFromProject (Deletes account from the project)</para></entry>
<entry><para>listProjectAccounts (Lists project's accounts)</para></entry>
<entry><para>listProjectInvitations (Lists an account's invitations to join
projects)</para></entry>
</row>
<row>
<entry><para>updateProjectInvitation (Accepts or declines project
invitation)</para></entry>
<entry><para>deleteProjectInvitation (Deletes a project invitation)</para></entry>
<entry><para>updateHypervisorCapabilities (Updates a hypervisor
capabilities.)</para></entry>
</row>
<row>
<entry><para>listHypervisorCapabilities (Lists all hypervisor
capabilities.)</para></entry>
<entry><para>createPhysicalNetwork (Creates a physical network)</para></entry>
<entry><para>deletePhysicalNetwork (Deletes a Physical Network.)</para></entry>
</row>
<row>
<entry><para>listPhysicalNetworks (Lists physical networks)</para></entry>
<entry><para>updatePhysicalNetwork (Updates a physical network)</para></entry>
<entry><para>listSupportedNetworkServices (Lists all network services provided by
&PRODUCT; or for the given Provider.)</para></entry>
</row>
<row>
<entry><para>addNetworkServiceProvider (Adds a network serviceProvider to a physical
network)</para></entry>
<entry><para>deleteNetworkServiceProvider (Deletes a Network Service
Provider.)</para></entry>
<entry><para>listNetworkServiceProviders (Lists network serviceproviders for a given
physical network.)</para></entry>
</row>
<row>
<entry><para>updateNetworkServiceProvider (Updates a network serviceProvider of a physical
network)</para></entry>
<entry><para>addTrafficType (Adds traffic type to a physical network)</para></entry>
<entry><para>deleteTrafficType (Deletes traffic type of a physical network)</para></entry>
</row>
<row>
<entry><para>listTrafficTypes (Lists traffic types of a given physical
network.)</para></entry>
<entry><para>updateTrafficType (Updates traffic type of a physical network)</para></entry>
<entry><para>listTrafficTypeImplementors (Lists implementors of implementor of a network
traffic type or implementors of all network traffic types)</para></entry>
</row>
<row>
<entry><para>createStorageNetworkIpRange (Creates a Storage network IP
range.)</para></entry>
<entry><para>deleteStorageNetworkIpRange (Deletes a storage network IP
Range.)</para></entry>
<entry><para>listStorageNetworkIpRange (List a storage network IP range.)</para></entry>
</row>
<row>
<entry><para>updateStorageNetworkIpRange (Update a Storage network IP range, only allowed
when no IPs in this range have been allocated.)</para></entry>
<entry><para>listUsageTypes (List Usage Types)</para></entry>
<entry><para>addF5LoadBalancer (Adds a F5 BigIP load balancer device)</para></entry>
</row>
<row>
<entry><para>configureF5LoadBalancer (configures a F5 load balancer device)</para></entry>
<entry><para>deleteF5LoadBalancer ( delete a F5 load balancer device)</para></entry>
<entry><para>listF5LoadBalancers (lists F5 load balancer devices)</para></entry>
</row>
<row>
<entry><para>listF5LoadBalancerNetworks (lists network that are using a F5 load balancer
device)</para></entry>
<entry><para>addSrxFirewall (Adds a SRX firewall device)</para></entry>
<entry><para>deleteSrxFirewall ( delete a SRX firewall device)</para></entry>
</row>
<row>
<entry><para>listSrxFirewalls (lists SRX firewall devices in a physical
network)</para></entry>
<entry><para>listSrxFirewallNetworks (lists network that are using SRX firewall
device)</para></entry>
<entry><para>addNetscalerLoadBalancer (Adds a netscaler load balancer
device)</para></entry>
</row>
<row>
<entry><para>deleteNetscalerLoadBalancer ( delete a netscaler load balancer
device)</para></entry>
<entry><para>configureNetscalerLoadBalancer (configures a netscaler load balancer
device)</para></entry>
<entry><para>listNetscalerLoadBalancers (lists netscaler load balancer
devices)</para></entry>
</row>
<row>
<entry><para>listNetscalerLoadBalancerNetworks (lists network that are using a netscaler
load balancer device)</para></entry>
<entry><para>createVirtualRouterElement (Create a virtual router element.)</para></entry>
<entry><para>configureVirtualRouterElement (Configures a virtual router
element.)</para></entry>
</row>
<row>
<entry><para>listVirtualRouterElements (Lists all available virtual router
elements.)</para></entry>
<entry><para/></entry>
<entry><para/></entry>
</row>
</tbody>
</tgroup>
</informaltable>
</section>

View File

@ -3,7 +3,6 @@
<!ENTITY % BOOK_ENTITIES SYSTEM "cloudstack.ent">
%BOOK_ENTITIES;
]>
<!-- 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
@ -11,9 +10,7 @@
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
@ -22,256 +19,362 @@
under the License.
-->
<section id="advanced-zone-configuration">
<title>Advanced Zone Configuration</title>
<orderedlist>
<listitem><para>After you select Advanced in the Add Zone wizard and click Next, you will be asked to enter the following details. Then click Next.</para>
<itemizedlist>
<listitem><para><emphasis role="bold">Name.</emphasis> A name for the zone.</para></listitem>
<listitem><para><emphasis role="bold">DNS 1 and 2.</emphasis> These are DNS servers for use by guest VMs in the zone. These DNS servers will be accessed via the public network you will add later. The public IP addresses for the zone must have a route to the DNS server named here.</para></listitem>
<listitem><para><emphasis role="bold">Internal DNS 1 and Internal DNS 2.</emphasis> These are DNS servers for use by system VMs in the zone(these are VMs used by &PRODUCT; itself, such as virtual routers, console proxies,and Secondary Storage VMs.) These DNS servers will be accessed via the management traffic network interface of the System VMs. The private IP address you provide for the pods must have a route to the internal DNS server named here.</para></listitem>
<listitem><para><emphasis role="bold">Network Domain.</emphasis> (Optional) If you want to assign a special domain name to the guest VM network, specify the DNS suffix.</para></listitem>
<listitem><para><emphasis role="bold">Guest CIDR.</emphasis> This is the CIDR that describes the IP addresses in use in the guest virtual networks in this zone. For example, 10.1.1.0/24. As a matter of good practice you should set different CIDRs for different zones. This will make it easier to set up VPNs between networks in different zones.</para></listitem>
<listitem><para><emphasis role="bold">Hypervisor.</emphasis> (Introduced in version 3.0.1) Choose the hypervisor for the first cluster in the zone. You can add clusters with different hypervisors later, after you finish adding the zone.</para></listitem>
<listitem><para><emphasis role="bold">Public.</emphasis> A public zone is available to all users. A zone that is not public will be assigned to a particular domain. Only users in that domain will be allowed to create guest VMs in this zone.</para></listitem>
</itemizedlist>
<title>Advanced Zone Configuration</title>
<orderedlist>
<listitem>
<para>After you select Advanced in the Add Zone wizard and click Next, you will be asked to
enter the following details. Then click Next.</para>
<itemizedlist>
<listitem>
<para><emphasis role="bold">Name.</emphasis> A name for the zone.</para>
</listitem>
<listitem><para>Choose which traffic types will be carried by the physical network.</para>
<para>The traffic types are management, public, guest, and storage traffic. For more information about the types, roll over the icons to display their tool tips, or see <xref linkend="advanced-zone-network-traffic-types" />. This screen starts out with one network already configured. If you have multiple physical networks, you need to add more. Drag and drop traffic types onto a greyed-out network and it will become active. You can move the traffic icons from one network to another; for example, if the default traffic types shown for Network 1 do not match your actual setup, you can move them down. You can also change the network names if desired.</para>
<listitem>
<para><emphasis role="bold">DNS 1 and 2.</emphasis> These are DNS servers for use by guest
VMs in the zone. These DNS servers will be accessed via the public network you will add
later. The public IP addresses for the zone must have a route to the DNS server named
here.</para>
</listitem>
<listitem><para>(Introduced in version 3.0.1) Assign a network traffic label to each traffic type on each physical network. These labels must match the labels you have already defined on the hypervisor host. To assign each label, click the Edit button under the traffic type icon within each physical network. A popup dialog appears where you can type the label, then click OK.</para>
<para>These traffic labels will be defined only for the hypervisor selected for the first cluster. For all other hypervisors, the labels can be configured after the zone is created.</para>
<para>(VMware only) If you have enabled Nexus dvSwitch in the environment, you must specify the corresponding Ethernet port profile names as network traffic label for each traffic type on the physical network. For more information on Nexus dvSwitch, see Configuring a vSphere Cluster with Nexus 1000v Virtual Switch.</para>
<listitem>
<para><emphasis role="bold">Internal DNS 1 and Internal DNS 2.</emphasis> These are DNS
servers for use by system VMs in the zone(these are VMs used by &PRODUCT; itself, such
as virtual routers, console proxies,and Secondary Storage VMs.) These DNS servers will
be accessed via the management traffic network interface of the System VMs. The private
IP address you provide for the pods must have a route to the internal DNS server named
here.</para>
</listitem>
<listitem><para>Click Next.</para>
<listitem>
<para><emphasis role="bold">Network Domain.</emphasis> (Optional) If you want to assign a
special domain name to the guest VM network, specify the DNS suffix.</para>
</listitem>
<listitem><para>Configure the IP range for public Internet traffic. Enter the following details, then click Add. If desired, you can repeat this step to add more public Internet IP ranges. When done, click Next.</para>
<itemizedlist>
<listitem><para><emphasis role="bold">Gateway.</emphasis> The gateway in use for these IP addresses.</para></listitem>
<listitem><para><emphasis role="bold">Netmask.</emphasis> The netmask associated with this IP range.</para></listitem>
<listitem><para><emphasis role="bold">VLAN.</emphasis> The VLAN that will be used for public traffic.</para></listitem>
<listitem><para><emphasis role="bold">Start IP/End IP.</emphasis> A range of IP addresses that are assumed to be accessible from the Internet and will be allocated for access to guest networks.</para></listitem>
</itemizedlist>
<listitem>
<para><emphasis role="bold">Guest CIDR.</emphasis> This is the CIDR that describes the IP
addresses in use in the guest virtual networks in this zone. For example, 10.1.1.0/24.
As a matter of good practice you should set different CIDRs for different zones. This
will make it easier to set up VPNs between networks in different zones.</para>
</listitem>
<listitem><para>In a new zone, &PRODUCT; adds the first pod for you. You can always add more pods later. For an overview of what a pod is, see <xref linkend="about-pods" />.</para>
<para>To configure the first pod, enter the following, then click Next:</para>
<itemizedlist>
<listitem><para><emphasis role="bold">Pod Name.</emphasis> A name for the pod.</para></listitem>
<listitem><para><emphasis role="bold">Reserved system gateway.</emphasis> The gateway for the hosts in that pod.</para></listitem>
<listitem><para><emphasis role="bold">Reserved system netmask.</emphasis> The network prefix that defines the pod's subnet. Use CIDR notation.</para></listitem>
<listitem><para><emphasis role="bold">Start/End Reserved System IP.</emphasis> The IP range in the management network that &PRODUCT; uses to manage various system VMs, such as Secondary Storage VMs, Console Proxy VMs, and DHCP. For more information, see <xref linkend="system-reserved-ip-addresses" />.</para></listitem>
</itemizedlist>
<listitem>
<para><emphasis role="bold">Hypervisor.</emphasis> (Introduced in version 3.0.1) Choose
the hypervisor for the first cluster in the zone. You can add clusters with different
hypervisors later, after you finish adding the zone.</para>
</listitem>
<listitem><para>Specify a range of VLAN IDs to carry guest traffic for each physical network (see VLAN Allocation Example ), then click Next.</para>
<listitem>
<para><emphasis role="bold">Public.</emphasis> A public zone is available to all users. A
zone that is not public will be assigned to a particular domain. Only users in that
domain will be allowed to create guest VMs in this zone.</para>
</listitem>
<listitem><para>In a new pod, &PRODUCT; adds the first cluster for you. You can always add more clusters later. For an overview of what a cluster is, see <xref linkend="about-clusters" />.</para>
<para>To configure the first cluster, enter the following, then click Next:</para>
<itemizedlist>
<listitem><para><emphasis role="bold">Hypervisor.</emphasis> (Version 3.0.0 only; in 3.0.1, this field is read only) Choose the type of hypervisor software that all hosts in this cluster will run. If you choose VMware, additional fields appear so you can give information about a vSphere cluster. For vSphere servers, we recommend creating the cluster of hosts in vCenter and then adding the entire cluster to &PRODUCT;. See Add Cluster: vSphere .</para></listitem>
<listitem><para><emphasis role="bold">Cluster name.</emphasis> Enter a name for the cluster. This can be text of your choosing and is not used by &PRODUCT;.</para></listitem>
</itemizedlist>
</itemizedlist>
</listitem>
<listitem>
<para>Choose which traffic types will be carried by the physical network.</para>
<para>The traffic types are management, public, guest, and storage traffic. For more
information about the types, roll over the icons to display their tool tips, or see <xref
linkend="advanced-zone-network-traffic-types"/>. This screen starts out with one network
already configured. If you have multiple physical networks, you need to add more. Drag and
drop traffic types onto a greyed-out network and it will become active. You can move the
traffic icons from one network to another; for example, if the default traffic types shown
for Network 1 do not match your actual setup, you can move them down. You can also change
the network names if desired.</para>
</listitem>
<listitem>
<para>(Introduced in version 3.0.1) Assign a network traffic label to each traffic type on
each physical network. These labels must match the labels you have already defined on the
hypervisor host. To assign each label, click the Edit button under the traffic type icon
within each physical network. A popup dialog appears where you can type the label, then
click OK.</para>
<para>These traffic labels will be defined only for the hypervisor selected for the first
cluster. For all other hypervisors, the labels can be configured after the zone is
created.</para>
<para>(VMware only) If you have enabled Nexus dvSwitch in the environment, you must specify
the corresponding Ethernet port profile names as network traffic label for each traffic type
on the physical network. For more information on Nexus dvSwitch, see Configuring a vSphere
Cluster with Nexus 1000v Virtual Switch.</para>
</listitem>
<listitem>
<para>Click Next.</para>
</listitem>
<listitem>
<para>Configure the IP range for public Internet traffic. Enter the following details, then
click Add. If desired, you can repeat this step to add more public Internet IP ranges. When
done, click Next.</para>
<itemizedlist>
<listitem>
<para><emphasis role="bold">Gateway.</emphasis> The gateway in use for these IP
addresses.</para>
</listitem>
<listitem><para>In a new cluster, &PRODUCT; adds the first host for you. You can always add more hosts later. For an overview of what a host is, see <xref linkend="about-hosts" />.</para>
<note><para>When you deploy &PRODUCT;, the hypervisor host must not have any VMs already running.</para></note>
<para>Before you can configure the host, you need to install the hypervisor software on the host. You will need to know which version of the hypervisor software version is supported by &PRODUCT; and what additional configuration is required to ensure the host will work with &PRODUCT;. To find these installation details, see:</para>
<itemizedlist>
<listitem><para>Citrix XenServer Installation for &PRODUCT;</para></listitem>
<listitem><para>VMware vSphere Installation and Configuration</para></listitem>
<listitem><para>KVM Installation and Configuration</para></listitem>
<listitem><para>Oracle VM (OVM) Installation and Configuration</para></listitem>
</itemizedlist>
<para>To configure the first host, enter the following, then click Next:</para>
<itemizedlist>
<listitem><para><emphasis role="bold">Host Name.</emphasis> The DNS name or IP address of the host.</para></listitem>
<listitem><para><emphasis role="bold">Username.</emphasis> Usually root.</para></listitem>
<listitem><para><emphasis role="bold">Password.</emphasis> This is the password for the user named above (from your XenServer or KVM install).</para></listitem>
<listitem><para><emphasis role="bold">Host Tags.</emphasis> (Optional) Any labels that you use to categorize hosts for ease of maintenance. For example, you can set to the cloud's HA tag (set in the ha.tag global configuration parameter) if you want this host to be used only for VMs with the "high availability" feature enabled. For more information, see HA-Enabled Virtual Machines as well as HA for Hosts, both in the Administration Guide.</para></listitem>
</itemizedlist>
<listitem>
<para><emphasis role="bold">Netmask.</emphasis> The netmask associated with this IP
range.</para>
</listitem>
<listitem><para>In a new cluster, &PRODUCT; adds the first primary storage server for you. You can always add more servers later. For an overview of what primary storage is, see <xref linkend="about-primary-storage" />.</para>
<para>To configure the first primary storage server, enter the following, then click Next:</para>
<listitem>
<para><emphasis role="bold">VLAN.</emphasis> The VLAN that will be used for public
traffic.</para>
</listitem>
<listitem>
<para><emphasis role="bold">Start IP/End IP.</emphasis> A range of IP addresses that are
assumed to be accessible from the Internet and will be allocated for access to guest
networks.</para>
</listitem>
</itemizedlist>
</listitem>
<listitem>
<para>In a new zone, &PRODUCT; adds the first pod for you. You can always add more pods later.
For an overview of what a pod is, see <xref linkend="about-pods"/>.</para>
<para>To configure the first pod, enter the following, then click Next:</para>
<itemizedlist>
<listitem>
<para><emphasis role="bold">Pod Name.</emphasis> A name for the pod.</para>
</listitem>
<listitem>
<para><emphasis role="bold">Reserved system gateway.</emphasis> The gateway for the hosts
in that pod.</para>
</listitem>
<listitem>
<para><emphasis role="bold">Reserved system netmask.</emphasis> The network prefix that
defines the pod's subnet. Use CIDR notation.</para>
</listitem>
<listitem>
<para><emphasis role="bold">Start/End Reserved System IP.</emphasis> The IP range in the
management network that &PRODUCT; uses to manage various system VMs, such as Secondary
Storage VMs, Console Proxy VMs, and DHCP. For more information, see <xref
linkend="system-reserved-ip-addresses"/>.</para>
</listitem>
</itemizedlist>
</listitem>
<listitem>
<para>Specify a range of VLAN IDs to carry guest traffic for each physical network (see VLAN
Allocation Example ), then click Next.</para>
</listitem>
<listitem>
<para>In a new pod, &PRODUCT; adds the first cluster for you. You can always add more clusters
later. For an overview of what a cluster is, see <xref linkend="about-clusters"/>.</para>
<para>To configure the first cluster, enter the following, then click Next:</para>
<itemizedlist>
<listitem>
<para><emphasis role="bold">Hypervisor.</emphasis> (Version 3.0.0 only; in 3.0.1, this
field is read only) Choose the type of hypervisor software that all hosts in this
cluster will run. If you choose VMware, additional fields appear so you can give
information about a vSphere cluster. For vSphere servers, we recommend creating the
cluster of hosts in vCenter and then adding the entire cluster to &PRODUCT;. See Add
Cluster: vSphere .</para>
</listitem>
<listitem>
<para><emphasis role="bold">Cluster name.</emphasis> Enter a name for the cluster. This
can be text of your choosing and is not used by &PRODUCT;.</para>
</listitem>
</itemizedlist>
</listitem>
<listitem>
<para>In a new cluster, &PRODUCT; adds the first host for you. You can always add more hosts
later. For an overview of what a host is, see <xref linkend="about-hosts"/>.</para>
<note>
<para>When you deploy &PRODUCT;, the hypervisor host must not have any VMs already
running.</para>
</note>
<para>Before you can configure the host, you need to install the hypervisor software on the
host. You will need to know which version of the hypervisor software version is supported by
&PRODUCT; and what additional configuration is required to ensure the host will work with
&PRODUCT;. To find these installation details, see:</para>
<itemizedlist>
<listitem>
<para>Citrix XenServer Installation for &PRODUCT;</para>
</listitem>
<listitem>
<para>VMware vSphere Installation and Configuration</para>
</listitem>
<listitem>
<para>KVM Installation and Configuration</para>
</listitem>
<listitem>
<para>Oracle VM (OVM) Installation and Configuration</para>
</listitem>
</itemizedlist>
<para>To configure the first host, enter the following, then click Next:</para>
<itemizedlist>
<listitem>
<para><emphasis role="bold">Host Name.</emphasis> The DNS name or IP address of the
host.</para>
</listitem>
<listitem>
<para><emphasis role="bold">Username.</emphasis> Usually root.</para>
</listitem>
<listitem>
<para><emphasis role="bold">Password.</emphasis> This is the password for the user named
above (from your XenServer or KVM install).</para>
</listitem>
<listitem>
<para><emphasis role="bold">Host Tags.</emphasis> (Optional) Any labels that you use to
categorize hosts for ease of maintenance. For example, you can set to the cloud's HA tag
(set in the ha.tag global configuration parameter) if you want this host to be used only
for VMs with the "high availability" feature enabled. For more information, see
HA-Enabled Virtual Machines as well as HA for Hosts, both in the Administration
Guide.</para>
</listitem>
</itemizedlist>
</listitem>
<listitem>
<para>In a new cluster, &PRODUCT; adds the first primary storage server for you. You can
always add more servers later. For an overview of what primary storage is, see <xref
linkend="about-primary-storage"/>.</para>
<para>To configure the first primary storage server, enter the following, then click
Next:</para>
<itemizedlist>
<listitem>
<para><emphasis role="bold">Name.</emphasis> The name of the storage device.</para>
</listitem>
<listitem>
<para><emphasis role="bold">Protocol.</emphasis> For XenServer, choose either NFS, iSCSI,
or PreSetup. For KVM, choose NFS or SharedMountPoint. For vSphere choose either VMFS
(iSCSI or FiberChannel) or NFS. The remaining fields in the screen vary depending on
what you choose here.</para>
<informaltable frame="all">
<tgroup cols="2" align="left" colsep="1" rowsep="1">
<colspec colname="c1"/>
<colspec colname="c2"/>
<tbody>
<row>
<entry><para>NFS</para></entry>
<entry>
<itemizedlist>
<listitem><para><emphasis role="bold">Name.</emphasis> The name of the storage device.</para></listitem>
<listitem><para><emphasis role="bold">Protocol.</emphasis> For XenServer, choose either NFS, iSCSI, or PreSetup. For KVM, choose NFS or SharedMountPoint. For vSphere choose either VMFS (iSCSI or FiberChannel) or NFS. The remaining fields in the screen vary depending on what you choose here.</para>
<informaltable frame="all">
<tgroup cols="2" align="left" colsep="1" rowsep="1">
<colspec colname="c1" />
<colspec colname="c2" />
<tbody>
<row>
<entry><para>NFS</para></entry>
<entry>
<itemizedlist>
<listitem><para><emphasis role="bold">Server.</emphasis> The IP address or DNS name of the storage device.</para></listitem>
<listitem><para><emphasis role="bold">Path.</emphasis> The exported path from the server.</para></listitem>
<listitem><para><emphasis role="bold">Tags (optional).</emphasis> The comma-separated list of tags for this storage device. It should be an equivalent set or superset of the tags on your disk offerings.</para></listitem>
</itemizedlist>
<para>The tag sets on primary storage across clusters in a Zone must be identical. For example, if cluster A provides primary storage that has tags T1 and T2, all other clusters in the Zone must also provide primary storage that has tags T1 and T2.</para>
</entry>
</row>
<row>
<entry><para>iSCSI</para></entry>
<entry>
<itemizedlist>
<listitem><para><emphasis role="bold">Server.</emphasis> The IP address or DNS name of the storage device.</para></listitem>
<listitem><para><emphasis role="bold">Target IQN.</emphasis> The IQN of the target. For example, iqn.1986-03.com.sun:02:01ec9bb549-1271378984.</para></listitem>
<listitem><para><emphasis role="bold">Lun.</emphasis> The LUN number. For example, 3.</para></listitem>
<listitem><para><emphasis role="bold">Tags (optional).</emphasis> The comma-separated list of tags for this storage device. It should be an equivalent set or superset of the tags on your disk offerings.</para></listitem>
</itemizedlist>
<para>The tag sets on primary storage across clusters in a Zone must be identical. For example, if cluster A provides primary storage that has tags T1 and T2, all other clusters in the Zone must also provide primary storage that has tags T1 and T2.</para>
</entry>
</row>
<row>
<entry><para>preSetup</para></entry>
<entry>
<itemizedlist>
<listitem><para><emphasis role="bold">Server.</emphasis> The IP address or DNS name of the storage device.</para></listitem>
<listitem><para><emphasis role="bold">SR Name-Label.</emphasis> Enter the name-label of the SR that has been set up outside &PRODUCT;.</para></listitem>
<listitem><para><emphasis role="bold">Tags (optional).</emphasis> The comma-separated list of tags for this storage device. It should be an equivalent set or superset of the tags on your disk offerings.</para></listitem>
</itemizedlist>
<para>The tag sets on primary storage across clusters in a Zone must be identical. For example, if cluster A provides primary storage that has tags T1 and T2, all other clusters in the Zone must also provide primary storage that has tags T1 and T2.</para>
</entry>
</row>
<row>
<entry><para>SharedMountPoint</para></entry>
<entry>
<itemizedlist>
<listitem><para><emphasis role="bold">Path.</emphasis> The path on each host that is where this primary storage is mounted. For example, "/mnt/primary".</para></listitem>
<listitem><para><emphasis role="bold">Tags (optional).</emphasis> The comma-separated list of tags for this storage device. It should be an equivalent set or superset of the tags on your disk offerings.</para></listitem>
</itemizedlist>
<para>The tag sets on primary storage across clusters in a Zone must be identical. For example, if cluster A provides primary storage that has tags T1 and T2, all other clusters in the Zone must also provide primary storage that has tags T1 and T2.</para>
</entry>
</row>
<row>
<entry><para>VMFS</para></entry>
<entry>
<itemizedlist>
<listitem><para><emphasis role="bold">Server.</emphasis> The IP address or DNS name of the vCenter server.</para></listitem>
<listitem><para><emphasis role="bold">Path.</emphasis> A combination of the datacenter name and the datastore name. The format is "/" datacenter name "/" datastore name. For example, "/cloud.dc.VM/cluster1datastore".</para></listitem>
<listitem><para><emphasis role="bold">Tags (optional).</emphasis> The comma-separated list of tags for this storage device. It should be an equivalent set or superset of the tags on your disk offerings.</para></listitem>
</itemizedlist>
<para>The tag sets on primary storage across clusters in a Zone must be identical. For example, if cluster A provides primary storage that has tags T1 and T2, all other clusters in the Zone must also provide primary storage that has tags T1 and T2.</para>
</entry>
</row>
</tbody>
</tgroup>
</informaltable>
</listitem>
</itemizedlist>
<listitem>
<para><emphasis role="bold">Server.</emphasis> The IP address or DNS name of
the storage device.</para>
</listitem>
<listitem>
<para><emphasis role="bold">Path.</emphasis> The exported path from the
server.</para>
</listitem>
<listitem>
<para><emphasis role="bold">Tags (optional).</emphasis> The comma-separated
list of tags for this storage device. It should be an equivalent set or
superset of the tags on your disk offerings.</para>
</listitem>
</itemizedlist>
<para>The tag sets on primary storage across clusters in a Zone must be
identical. For example, if cluster A provides primary storage that has tags T1
and T2, all other clusters in the Zone must also provide primary storage that
has tags T1 and T2.</para>
</entry>
</row>
<row>
<entry><para>iSCSI</para></entry>
<entry>
<itemizedlist>
<listitem>
<para><emphasis role="bold">Server.</emphasis> The IP address or DNS name of
the storage device.</para>
</listitem>
<listitem>
<para><emphasis role="bold">Target IQN.</emphasis> The IQN of the target.
For example, iqn.1986-03.com.sun:02:01ec9bb549-1271378984.</para>
</listitem>
<listitem>
<para><emphasis role="bold">Lun.</emphasis> The LUN number. For example,
3.</para>
</listitem>
<listitem>
<para><emphasis role="bold">Tags (optional).</emphasis> The comma-separated
list of tags for this storage device. It should be an equivalent set or
superset of the tags on your disk offerings.</para>
</listitem>
</itemizedlist>
<para>The tag sets on primary storage across clusters in a Zone must be
identical. For example, if cluster A provides primary storage that has tags T1
and T2, all other clusters in the Zone must also provide primary storage that
has tags T1 and T2.</para>
</entry>
</row>
<row>
<entry><para>preSetup</para></entry>
<entry>
<itemizedlist>
<listitem>
<para><emphasis role="bold">Server.</emphasis> The IP address or DNS name of
the storage device.</para>
</listitem>
<listitem>
<para><emphasis role="bold">SR Name-Label.</emphasis> Enter the name-label
of the SR that has been set up outside &PRODUCT;.</para>
</listitem>
<listitem>
<para><emphasis role="bold">Tags (optional).</emphasis> The comma-separated
list of tags for this storage device. It should be an equivalent set or
superset of the tags on your disk offerings.</para>
</listitem>
</itemizedlist>
<para>The tag sets on primary storage across clusters in a Zone must be
identical. For example, if cluster A provides primary storage that has tags T1
and T2, all other clusters in the Zone must also provide primary storage that
has tags T1 and T2.</para>
</entry>
</row>
<row>
<entry><para>SharedMountPoint</para></entry>
<entry>
<itemizedlist>
<listitem>
<para><emphasis role="bold">Path.</emphasis> The path on each host that is
where this primary storage is mounted. For example, "/mnt/primary".</para>
</listitem>
<listitem>
<para><emphasis role="bold">Tags (optional).</emphasis> The comma-separated
list of tags for this storage device. It should be an equivalent set or
superset of the tags on your disk offerings.</para>
</listitem>
</itemizedlist>
<para>The tag sets on primary storage across clusters in a Zone must be
identical. For example, if cluster A provides primary storage that has tags T1
and T2, all other clusters in the Zone must also provide primary storage that
has tags T1 and T2.</para>
</entry>
</row>
<row>
<entry><para>VMFS</para></entry>
<entry>
<itemizedlist>
<listitem>
<para><emphasis role="bold">Server.</emphasis> The IP address or DNS name of
the vCenter server.</para>
</listitem>
<listitem>
<para><emphasis role="bold">Path.</emphasis> A combination of the datacenter
name and the datastore name. The format is "/" datacenter name "/"
datastore name. For example, "/cloud.dc.VM/cluster1datastore".</para>
</listitem>
<listitem>
<para><emphasis role="bold">Tags (optional).</emphasis> The comma-separated
list of tags for this storage device. It should be an equivalent set or
superset of the tags on your disk offerings.</para>
</listitem>
</itemizedlist>
<para>The tag sets on primary storage across clusters in a Zone must be
identical. For example, if cluster A provides primary storage that has tags T1
and T2, all other clusters in the Zone must also provide primary storage that
has tags T1 and T2.</para>
</entry>
</row>
</tbody>
</tgroup>
</informaltable>
</listitem>
<listitem><para>In a new zone, &PRODUCT; adds the first secondary storage server for you. For an overview of what secondary storage is, see <xref linkend="about-secondary-storage" />.</para>
<para>Before you can fill out this screen, you need to prepare the secondary storage by setting up NFS shares and installing the latest &PRODUCT; System VM template. See Adding Secondary Storage :</para>
<itemizedlist>
<listitem><para><emphasis role="bold">NFS Server.</emphasis> The IP address of the server.</para></listitem>
<listitem><para><emphasis role="bold">Path.</emphasis> The exported path from the server.</para></listitem>
</itemizedlist>
</itemizedlist>
</listitem>
<listitem>
<para>In a new zone, &PRODUCT; adds the first secondary storage server for you. For an
overview of what secondary storage is, see <xref linkend="about-secondary-storage"/>.</para>
<para>Before you can fill out this screen, you need to prepare the secondary storage by
setting up NFS shares and installing the latest &PRODUCT; System VM template. See Adding
Secondary Storage :</para>
<itemizedlist>
<listitem>
<para><emphasis role="bold">NFS Server.</emphasis> The IP address of the server.</para>
</listitem>
<listitem><para>Click Launch.</para>
<listitem>
<para><emphasis role="bold">Path.</emphasis> The exported path from the server.</para>
</listitem>
</orderedlist>
</itemizedlist>
</listitem>
<listitem>
<para>Click Launch.</para>
</listitem>
</orderedlist>
</section>

View File

@ -3,7 +3,6 @@
<!ENTITY % BOOK_ENTITIES SYSTEM "cloudstack.ent">
%BOOK_ENTITIES;
]>
<!-- 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
@ -11,9 +10,13 @@
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
<<<<<<< HEAD
http://www.apache.org/licenses/LICENSE-2.0
=======
http://www.apache.org/licenses/LICENSE-2.0
>>>>>>> master
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
@ -22,8 +25,19 @@
under the License.
-->
<section id="advanced-zone-physical-network-configuration">
<<<<<<< HEAD
<title>Advanced Zone Physical Network Configuration</title>
<para>Within a zone that uses advanced networking, you need to tell the Management Server how the physical network is set up to carry different kinds of traffic in isolation.</para>
<xi:include href="configure-guest-traffic-in-advanced-zone.xml" xmlns:xi="http://www.w3.org/2001/XInclude" />
<xi:include href="configure-public-traffic-in-an-advanced-zone.xml" xmlns:xi="http://www.w3.org/2001/XInclude" />
</section>
=======
<title>Advanced Zone Physical Network Configuration</title>
<para>Within a zone that uses advanced networking, you need to tell the Management Server how the
physical network is set up to carry different kinds of traffic in isolation.</para>
<xi:include href="configure-guest-traffic-in-advanced-zone.xml"
xmlns:xi="http://www.w3.org/2001/XInclude"/>
<xi:include href="configure-public-traffic-in-an-advanced-zone.xml"
xmlns:xi="http://www.w3.org/2001/XInclude"/>
</section>
>>>>>>> master

View File

@ -0,0 +1,38 @@
<?xml version='1.0' encoding='utf-8' ?>
<!DOCTYPE chapter PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN" "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
<!ENTITY % BOOK_ENTITIES SYSTEM "cloudstack.ent">
%BOOK_ENTITIES;
]>
<!-- 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.
-->
<chapter id="api-overview">
<title>&PRODUCT; API</title>
<para>The &PRODUCT; API is a low level API that has been used to implement the &PRODUCT; web UIs.
It is also a good basis for implementing other popular APIs such as EC2/S3 and emerging DMTF
standards.</para>
<para>Many &PRODUCT; API calls are asynchronous. These will return a Job ID immediately when
called. This Job ID can be used to query the status of the job later. Also, status calls on
impacted resources will provide some indication of their state.</para>
<para>The API has a REST-like query basis and returns results in XML or JSON.</para>
<para>See <ulink
url="http://docs.cloudstack.org/CloudStack_Documentation/Developer's_Guide%3A_CloudStack">the
Developers Guide</ulink> and <ulink
url="http://docs.cloudstack.org/CloudStack_Documentation/API_Reference%3A_CloudStack">the API
Reference</ulink>.</para>
<xi:include href="provisioning-auth-api.xml" xmlns:xi="http://www.w3.org/2001/XInclude"/>
<xi:include href="allocators.xml" xmlns:xi="http://www.w3.org/2001/XInclude"/>
<xi:include href="user-data-and-meta-data.xml" xmlns:xi="http://www.w3.org/2001/XInclude"/>
</chapter>

View File

@ -3,7 +3,6 @@
<!ENTITY % BOOK_ENTITIES SYSTEM "cloudstack.ent">
%BOOK_ENTITIES;
]>
<!-- 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
@ -11,9 +10,7 @@
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
@ -21,17 +18,19 @@
specific language governing permissions and limitations
under the License.
-->
<section id="automatic-snapshot-creation-retention">
<title>Automatic Snapshot Creation and Retention</title>
<para>(Supported for the following hypervisors: <emphasis role="bold">XenServer</emphasis>,
<emphasis role="bold">VMware vSphere</emphasis>, and <emphasis role="bold"
>KVM</emphasis>)</para>
<para>Users can set up a recurring snapshot policy to automatically create multiple snapshots of a disk at regular intervals. Snapshots can be created on an hourly, daily, weekly, or monthly interval. One snapshot policy can be set up per disk volume. For example, a user can set up a daily snapshot at 02:30.</para>
<para>With each snapshot schedule, users can also specify the number of scheduled snapshots to be
retained. Older snapshots that exceed the retention limit are automatically deleted. This
user-defined limit must be equal to or lower than the global limit set by the &PRODUCT;
administrator. See <xref linkend="globally-configured-limits"/>. The limit applies only to
those snapshots that are taken as part of an automatic recurring snapshot policy. Additional
manual snapshots can be created and retained.</para>
</section>
<title>Automatic Snapshot Creation and Retention</title>
<para>(Supported for the following hypervisors: <emphasis role="bold">XenServer</emphasis>,
<emphasis role="bold">VMware vSphere</emphasis>, and <emphasis role="bold"
>KVM</emphasis>)</para>
<para>Users can set up a recurring snapshot policy to automatically create multiple snapshots of a
disk at regular intervals. Snapshots can be created on an hourly, daily, weekly, or monthly
interval. One snapshot policy can be set up per disk volume. For example, a user can set up a
daily snapshot at 02:30.</para>
<para>With each snapshot schedule, users can also specify the number of scheduled snapshots to be
retained. Older snapshots that exceed the retention limit are automatically deleted. This
user-defined limit must be equal to or lower than the global limit set by the &PRODUCT;
administrator. See <xref linkend="globally-configured-limits"/>. The limit applies only to those
snapshots that are taken as part of an automatic recurring snapshot policy. Additional manual
snapshots can be created and retained.</para>
</section>

View File

@ -0,0 +1,64 @@
<?xml version='1.0' encoding='utf-8' ?>
<!DOCTYPE section PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN" "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
<!ENTITY % BOOK_ENTITIES SYSTEM "cloudstack.ent">
%BOOK_ENTITIES;
]>
<!-- 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.
-->
<section id="aws-ec2-configuration">
<title>Enabling the AWS API compatible Interface</title>
<para>
To enable the EC2 compatible service you need to set the configuration variable <emphasis>enable.ec2.api</emphasis>to true. This can be done via the &PRODUCT; GUI by going in <emphasis>Global Settings</emphasis> or via the API.
</para>
<para>
<mediaobject>
<imageobject>
<imagedata fileref="./images/ec2-s3-configuration.png"/>
</imageobject>
<textobject>
<phrase>Use the GUI to set the configuration variable to <emphasis>true</emphasis></phrase>
</textobject>
</mediaobject>
</para>
<para>
The easiest is to use the so-called integration port on which you can make unauthenticated calls. In Global Settings set the port to 8096 and subsequently call the <emphasis>updateConfiguration</emphasis> method. The following url shows you how:
</para>
<para>
<programlisting>
http://localhost:8096/client/api?command=updateConfiguration&amp;name=enable.ec2.api&amp;value=true
</programlisting>
</para>
<para>
Once you have updated <emphasis>enable.ec2.api</emphasis>to true, restart the server.
</para>
<para>
You will also need to define compute service offerings with names compatible with the <ulink url="http://aws.amazon.com/ec2/instance-types/">Amazon EC2 instance types</ulink> API names (e.g m1.small,m1.large). This is easiest done via the &PRODUCT; GUI. Go under <emphasis>Service Offerings</emphasis> select <emphasis>Compute offering</emphasis> and either create a new compute offering or modify an existing one, ensuring that the name matches an EC2 instance type API name. The snapshot below shows you how:
</para>
<para>
<mediaobject>
<imageobject>
<imagedata fileref="./images/compute-service-offerings.png"/>
</imageobject>
<textobject>
<phrase>Use the GUI to set the name of a compute service offering to an EC2 instance type API name.</phrase>
</textobject>
</mediaobject>
</para>
</section>

View File

@ -0,0 +1,47 @@
<?xml version='1.0' encoding='utf-8' ?>
<!DOCTYPE section PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN" "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
<!ENTITY % BOOK_ENTITIES SYSTEM "cloudstack.ent">
%BOOK_ENTITIES;
]>
<!-- 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.
-->
<section id="aws-ec2-introduction">
<title>Amazon Web Services EC2 Compatible Interface</title>
<para>&PRODUCT; can translate Amazon Web Services (AWS) API calls to native &PRODUCT; API calls so that users can continue using existing AWS-compatible tools. This translation service runs as a separate web application in the same tomcat server as the management server of &PRODUCT;, listening on the same port. This Amazon EC2-compatible API is accessible through a SOAP web service as well as the REST query interface.</para>
<warning>
<para>Expect the SOAP service to be deprecated in new releases in favor of the REST interface.</para>
</warning>
<note>
<para>This service was previously enabled by a separate software called CloudBridge, it is now fully integrated with the &PRODUCT; management server.
</para>
</note>
<para>Limitations</para>
<itemizedlist>
<listitem>
<para>Supported only in zones that use basic networking.</para>
</listitem>
<listitem>
<para>Available in fresh installations of &PRODUCT;. Not available through upgrade of previous versions.</para>
</listitem>
<listitem>
<para>If you need to support features such as elastic IP, set up a Citrix NetScaler to provide this service. The commands such as ec2-associate-address will not work without EIP setup. Users running VMs in this zone will be using the NetScaler-enabled network offering (DefaultSharedNetscalerEIP and ELBNetworkOffering).</para>
</listitem>
</itemizedlist>
</section>

View File

@ -0,0 +1,30 @@
<?xml version='1.0' encoding='utf-8' ?>
<!DOCTYPE section PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN" "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
<!ENTITY % BOOK_ENTITIES SYSTEM "cloudstack.ent">
%BOOK_ENTITIES;
]>
<!-- 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.
-->
<section id="aws-ec2-requirements">
<title>System Requirements</title>
<para>This interface complies with Amazon's WDSL version dated November 15, 2010, available at http://ec2.amazonaws.com/doc/2010-11-15/. The EC2 command line utilities compatible with it are <emphasis>EC2 tools v. 1.3.6230</emphasis>that can be downloaded at <ulink url="http://s3.amazonaws.com/ec2-downloads/ec2-api-tools-1.3-62308.zip">http://s3.amazonaws.com/ec2-downloads/ec2-api-tools-1.3-62308.zip</ulink>
</para>
<note>Effort is underway to provide support for a newer API</note>
</section>

Some files were not shown because too many files have changed in this diff Show More