1
0
mirror of https://github.com/OpenNebula/one.git synced 2025-03-21 14:50:08 +03:00

Merge branch 'master' of git.opennebula.org:one

This commit is contained in:
Daniel Molina 2011-10-05 13:14:56 +02:00
commit 8d7a76edd7
42 changed files with 1138 additions and 93 deletions

View File

@ -9,7 +9,7 @@ distributed data center infrastructures.
Complete documentation can be found at
http://opennebula.org/documentation:rel2.4
http://opennebula.org/documentation:rel3.0
## INSTALLATION
@ -35,6 +35,14 @@ Additionally, to build OpenNebula from source you need:
* **bison** >= 2.3 (optional, only needed to rebuild the parsers)
* **libxml2-dev**
### RUBY LIBRARIES REQUIREMENTS
A set of gem requirements are needed to make several components work. We
include a handy script to install them and the requirements. It is located at
`share/install_gems/install_gems` and you should use it to install the
required gems. You have more information at:
http://opennebula.org/documentation:rel3.0:compile
### OPTIONAL PACKAGES
@ -104,6 +112,8 @@ where **install_options** can be one or more of:
-d target installation directory. If defined, it will specified
the path for the self-contained install. If not defined, the
installation will be performed system wide
-c only install client utilities: OpenNebula cli, occi and ec2
client files
-r remove Opennebula, only useful if -d was not specified,
otherwise rm -rf $ONE_LOCATION would do the job
-h prints installer help
@ -111,7 +121,8 @@ where **install_options** can be one or more of:
## CONFIGURATION
Information on how to configure OpenNebula is located at http://opennebula.org/documentation:rel2.4
Information on how to configure OpenNebula is located at
http://opennebula.org/documentation:rel3.0:cg
## CONTACT

View File

@ -652,8 +652,11 @@ IMAGE_DRIVER_FS_SCRIPTS="src/image_mad/remotes/fs/cp \
#-------------------------------------------------------------------------------
ONEDB_MIGRATOR_FILES="src/onedb/2.0_to_2.9.80.rb \
src/onedb/2.9.80_to_2.9.85.rb \
src/onedb/2.9.85_to_2.9.90.rb \
src/onedb/2.9.90_to_3.0.rb \
src/onedb/onedb.rb \
src/onedb/onedb_backend.rb"
src/onedb/onedb_backend.rb \
src/onedb/Configuration.rb"
#-------------------------------------------------------------------------------
# Configuration files for OpenNebula, to be installed under $ETC_LOCATION

View File

@ -9,12 +9,16 @@ DEFAULT=%w{optional sunstone quota cloud ozones_server acct}
if defined?(RUBY_VERSION) && RUBY_VERSION>="1.8.7"
SQLITE='sqlite3'
# xmlparser gem is not compatible with ruby 1.9
OPTIONAL=%w{nokogiri}
else
SQLITE='sqlite3-ruby --version 1.2.0'
OPTIONAL=%w{nokogir xmlparser}
end
GROUPS={
:optional => %w{nokogiri xmlparser},
:optional => OPTIONAL,
:quota => [SQLITE, 'sequel'],
:sunstone => ['json', 'rack', 'sinatra', 'thin', 'sequel', SQLITE],
:cloud => %w{amazon-ec2 rack sinatra thin uuid curb},

View File

@ -0,0 +1,39 @@
.\" DO NOT MODIFY THIS FILE! It was generated by help2man 1.37.1.
.TH OPENNEBULA "1" "September 2011" "OpenNebula 3.0.0" "User Commands"
.SH NAME
OpenNebula \- OpenNebula econe-describe-images
.SH SYNOPSIS
.B econe-describe-images
[\fIOPTIONS\fR]
.SH DESCRIPTION
econe\-describe\-images
.PP
List and describe previously uploaded images of a user to be
used with an OpenNebula Cloud.
.SH OPTIONS
.HP
\fB\-\-help\fR, \fB\-h\fR
.IP
Show help
.HP
\fB\-\-access\-key\fR <id>, \fB\-K\fR <id>
.IP
The username of the user
.HP
\fB\-\-secret\-key\fR <key>, \fB\-S\fR <key>
.IP
The password of the user
.HP
\fB\-\-url\fR <url>, \fB\-U\fR <url>
.IP
Set url as the web service url to use
.HP
\fB\-\-headers\fR, \fB\-H\fR
.IP
Display column headers
.SH COPYRIGHT
Copyright 2002\-2011, OpenNebula Project Leads (OpenNebula.org)
.PP
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

View File

@ -0,0 +1,39 @@
.\" DO NOT MODIFY THIS FILE! It was generated by help2man 1.37.1.
.TH OPENNEBULA "1" "September 2011" "OpenNebula 3.0.0" "User Commands"
.SH NAME
OpenNebula \- OpenNebula econe-describe-instances
.SH SYNOPSIS
.B econe-describe-instances
[\fIOPTIONS\fR]
.SH DESCRIPTION
econe\-describe\-instances
.PP
List and describe running instances
.SH OPTIONS
.HP
\fB\-\-help\fR, \fB\-h\fR
.IP
Show help
.HP
\fB\-\-access\-key\fR <id>, \fB\-K\fR <id>
.IP
The username of the user
.HP
\fB\-\-secret\-key\fR <key>, \fB\-S\fR <key>
.IP
The password of the user
.HP
\fB\-\-url\fR <url>, \fB\-U\fR <url>
.IP
Set url as the web service url to use
.HP
\fB\-\-headers\fR, \fB\-H\fR
.IP
Display column headers
.SH COPYRIGHT
Copyright 2002\-2011, OpenNebula Project Leads (OpenNebula.org)
.PP
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

View File

@ -0,0 +1,43 @@
.\" DO NOT MODIFY THIS FILE! It was generated by help2man 1.37.1.
.TH OPENNEBULA "1" "September 2011" "OpenNebula 3.0.0" "User Commands"
.SH NAME
OpenNebula \- OpenNebula econe-register
.SH SYNOPSIS
.B econe-register
[\fIOPTIONS\fR] \fIIMAGE-ID\fR
.SH DESCRIPTION
econe\-register
.PP
Register a previously uploaded image for use with an
OpenNebula Cloud.
.SH OPTIONS
.HP
\fB\-\-help\fR, \fB\-h\fR
.IP
Show help
.HP
\fB\-\-access\-key\fR <id>, \fB\-K\fR <id>
.IP
The username of the user
.HP
\fB\-\-secret\-key\fR <key>, \fB\-S\fR <key>
.IP
The password of the user
.HP
\fB\-\-url\fR <url>, \fB\-U\fR <url>
.IP
Set url as the web service url to use
.HP
\fB\-\-headers\fR, \fB\-H\fR
.IP
Display column headers
.PP
IMAGE\-ID: The image identification as returned by
the econe\-upload command
.SH COPYRIGHT
Copyright 2002\-2011, OpenNebula Project Leads (OpenNebula.org)
.PP
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

View File

@ -0,0 +1,51 @@
.\" DO NOT MODIFY THIS FILE! It was generated by help2man 1.37.1.
.TH OPENNEBULA "1" "September 2011" "OpenNebula 3.0.0" "User Commands"
.SH NAME
OpenNebula \- OpenNebula econe-run-instances
.SH SYNOPSIS
.B econe-run-instances
[\fIOPTIONS\fR] \fIIMAGE-ID\fR
.SH DESCRIPTION
econe\-run\-instances
.PP
Runs an instance of a particular image
.SH OPTIONS
.HP
\fB\-\-help\fR, \fB\-h\fR
.IP
Show help
.HP
\fB\-\-access\-key\fR <id>, \fB\-K\fR <id>
.IP
The username of the user
.HP
\fB\-\-secret\-key\fR <key>, \fB\-S\fR <key>
.IP
The password of the user
.HP
\fB\-\-url\fR <url>, \fB\-U\fR <url>
.IP
Set url as the web service url to use
.HP
\fB\-\-type\fR <type>, \fB\-t\fR <type>
.IP
OpenNebula template in which is based this instance
.HP
\fB\-\-user\-data\fR, \fB\-d\fR
.IP
Specifies Base64\-encoded MIME user data to be made
available to the instance
.HP
\fB\-\-headers\fR, \fB\-H\fR
.IP
Display column headers
.PP
IMAGE\-ID: The image identification as returned by
the econe\-upload command
.SH COPYRIGHT
Copyright 2002\-2011, OpenNebula Project Leads (OpenNebula.org)
.PP
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

View File

@ -0,0 +1,38 @@
.\" DO NOT MODIFY THIS FILE! It was generated by help2man 1.37.1.
.TH OPENNEBULA "1" "September 2011" "OpenNebula 3.0.0" "User Commands"
.SH NAME
OpenNebula \- OpenNebula econe-terminate-instances
.SH SYNOPSIS
.B econe-register
[\fIOPTIONS\fR] \fIINSTANCE-ID\fR
.SH DESCRIPTION
econe\-terminate\-instances
.PP
Terminate the selected running instance
.SH OPTIONS
.HP
\fB\-\-help\fR, \fB\-h\fR
.IP
Show help
.HP
\fB\-\-access\-key\fR <id>, \fB\-K\fR <id>
.IP
The username of the user
.HP
\fB\-\-secret\-key\fR <key>, \fB\-S\fR <key>
.IP
The password of the user
.HP
\fB\-\-url\fR <url>, \fB\-U\fR <url>
.IP
Set url as the web service url to use
.PP
INSTANCE\-ID: The instance identification as returned by
the econe\-run\-instances command
.SH COPYRIGHT
Copyright 2002\-2011, OpenNebula Project Leads (OpenNebula.org)
.PP
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

View File

@ -0,0 +1,42 @@
.\" DO NOT MODIFY THIS FILE! It was generated by help2man 1.37.1.
.TH OPENNEBULA "1" "September 2011" "OpenNebula 3.0.0" "User Commands"
.SH NAME
OpenNebula \- OpenNebula econe-upload
.SH SYNOPSIS
.B econe-upload
[\fIOPTIONS\fR] \fIIMAGE-PATH\fR
.SH DESCRIPTION
econe\-upload
.PP
Uploads an image for use with an OpenNebula Cloud. This image should
be later register with econe\-register using the returned ImageId
.SH OPTIONS
.HP
\fB\-\-help\fR, \fB\-h\fR
.IP
Show help
.HP
\fB\-\-access\-key\fR <id>, \fB\-K\fR <id>
.IP
The username of the user
.HP
\fB\-\-secret\-key\fR <key>, \fB\-S\fR <key>
.IP
The password of the user
.HP
\fB\-\-url\fR <url>, \fB\-U\fR <url>
.IP
Set url as the web service url to use
.HP
\fB\-\-multipart\fR, \fB\-M\fR
.IP
Use 'multipart\-post' library instead of Curb/Curl
.PP
IMAGE\-PATH: Path to the image to upload
.SH COPYRIGHT
Copyright 2002\-2011, OpenNebula Project Leads (OpenNebula.org)
.PP
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

View File

@ -0,0 +1,64 @@
.\" DO NOT MODIFY THIS FILE! It was generated by help2man 1.37.1.
.TH OPENNEBULA "1" "September 2011" "OpenNebula 3.0.0" "User Commands"
.SH NAME
OpenNebula \- OpenNebula occi-compute
.SH SYNOPSIS
.B occi-compute
\fI<COMMAND> \fR[\fIOPTIONS\fR] [\fIARGUMENTS\fR]
.SH DESCRIPTION
occi\-compute \- Manages compute resources
.SH OPTIONS
\fB\-\-help\fR, \fB\-h\fR
.IP
Show help
.PP
\fB\-\-username\fR <id>, \fB\-U\fR <id>
.IP
The username of the user
.PP
\fB\-\-password\fR <key>, \fB\-P\fR <key>
.IP
The password of the user
.PP
\fB\-\-url\fR <url>, \fB\-R\fR <url>
.IP
Set url as the web service url to use
.PP
\fB\-\-timeout\fR <seconds>, \fB\-T\fR <seconds>
.IP
Sets a timeout for the http connection
.PP
\fB\-\-debug\fR, \fB\-D\fR
.IP
Enables verbosity
.SH COMMANDS
.TP
\fBcreate\fR <occi xml file>
.IP
creates a new compute resource described by the provided
<occi xml file>
.TP
\fBlist\fR
.IP
lists available compute resources
.TP
\fBshow\fR <compute id>
.IP
retrieves the OCCI XML representation of the compute resource
identified by <compute id>
.TP
\fBupdate\fR <occi xml file>
.IP
updates the representation of the compute resource represented by the
provided <occi xml file>
.TP
\fBdelete\fR <compute id>
.IP
deletes the compute resource idenfitied by <compute id>
.SH COPYRIGHT
Copyright 2002\-2011, OpenNebula Project Leads (OpenNebula.org)
.PP
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

View File

@ -0,0 +1,68 @@
.\" DO NOT MODIFY THIS FILE! It was generated by help2man 1.37.1.
.TH OPENNEBULA "1" "September 2011" "OpenNebula 3.0.0" "User Commands"
.SH NAME
OpenNebula \- OpenNebula occi-network
.SH SYNOPSIS
.B occi-network
\fI<COMMAND> \fR[\fIOPTIONS\fR] [\fIARGUMENTS\fR]
.SH DESCRIPTION
occi\-network \- Manages virtual networks
.SH OPTIONS
\fB\-\-help\fR, \fB\-h\fR
.IP
Show help
.PP
\fB\-\-username\fR <id>, \fB\-U\fR <id>
.IP
The username of the user
.PP
\fB\-\-password\fR <key>, \fB\-P\fR <key>
.IP
The password of the user
.PP
\fB\-\-url\fR <url>, \fB\-R\fR <url>
.IP
Set url as the web service url to use
.PP
\fB\-\-timeout\fR <seconds>, \fB\-T\fR <seconds>
.IP
Sets a timeout for the http connection
.PP
\fB\-\-debug\fR, \fB\-D\fR
.IP
Enables verbosity
.PP
\fB\-\-multipart\fR, \fB\-M\fR
.IP
Use 'multipart\-post' library instead of Curb/Curl
.SH COMMANDS
.TP
\fBcreate\fR <occi xml file>
.IP
creates a new virtual network described by the provided
<occi xml file>
.TP
\fBlist\fR
.IP
lists available virtual networks
.TP
\fBshow\fR <network id>
.IP
retrieves the OCCI XML representation of the virtual network
identified by <network id>
.TP
\fBupdate\fR <occi xml file>
.IP
updates the representation of the network resource represented by the
provided <occi xml file>
.TP
\fBdelete\fR <network id>
.IP
deletes the virtual network idenfitied by <network id>
.SH COPYRIGHT
Copyright 2002\-2011, OpenNebula Project Leads (OpenNebula.org)
.PP
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

View File

@ -0,0 +1,68 @@
.\" DO NOT MODIFY THIS FILE! It was generated by help2man 1.37.1.
.TH OPENNEBULA "1" "September 2011" "OpenNebula 3.0.0" "User Commands"
.SH NAME
OpenNebula \- OpenNebula occi-storage
.SH SYNOPSIS
.B occi-storage
\fI<COMMAND> \fR[\fIOPTIONS\fR] [\fIPARAMETERS\fR]
.SH DESCRIPTION
occi\-storage \- Manages OCCI storage resource
.SH OPTIONS
\fB\-\-help\fR, \fB\-h\fR
.IP
Show help
.PP
\fB\-\-username\fR <id>, \fB\-U\fR <id>
.IP
The username of the user
.PP
\fB\-\-password\fR <key>, \fB\-P\fR <key>
.IP
The password of the user
.PP
\fB\-\-url\fR <url>, \fB\-R\fR <url>
.IP
Set url as the web service url to use
.PP
\fB\-\-timeout\fR <seconds>, \fB\-T\fR <seconds>
.IP
Sets a timeout for the http connection
.PP
\fB\-\-debug\fR, \fB\-D\fR
.IP
Enables verbosity
.PP
\fB\-\-multipart\fR, \fB\-M\fR
.IP
Use 'multipart\-post' library instead of Curb/Curl
.SH COMMANDS
.TP
\fBcreate\fR <occi xml file>
.IP
creates a new storage resource described by the provided
<occi xml file>
.TP
\fBlist\fR
.IP
lists available storage resources
.TP
\fBshow\fR <storage id>
.IP
retrieves the OCCI XML representation of the storage resource
identified by <storage id>
.TP
\fBupdate\fR <occi xml file>
.IP
updates the representation of the storage resource represented by the
provided <occi xml file>
.TP
\fBdelete\fR <storage id>
.IP
deletes the storage resource idenfitied by <storage id>
.SH COPYRIGHT
Copyright 2002\-2011, OpenNebula Project Leads (OpenNebula.org)
.PP
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

View File

@ -128,7 +128,7 @@ Comma\-separated list of OpenNebula ACL names or ids
.IP "" 0
.
.SH "LICENSE"
OpenNebula 2\.9\.85 Copyright 2002\-2011, OpenNebula Project Leads (OpenNebula\.org)
OpenNebula 3\.0\.0 Copyright 2002\-2011, OpenNebula Project Leads (OpenNebula\.org)
.
.P
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

View File

@ -160,7 +160,7 @@ Comma\-separated list of OpenNebula GROUP names or ids
.IP "" 0
.
.SH "LICENSE"
OpenNebula 2\.9\.85 Copyright 2002\-2011, OpenNebula Project Leads (OpenNebula\.org)
OpenNebula 3\.0\.0 Copyright 2002\-2011, OpenNebula Project Leads (OpenNebula\.org)
.
.P
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

View File

@ -234,7 +234,7 @@ Comma\-separated list of OpenNebula HOST names or ids
.IP "" 0
.
.SH "LICENSE"
OpenNebula 2\.9\.85 Copyright 2002\-2011, OpenNebula Project Leads (OpenNebula\.org)
OpenNebula 3\.0\.0 Copyright 2002\-2011, OpenNebula Project Leads (OpenNebula\.org)
.
.P
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

View File

@ -353,7 +353,7 @@ user IMAGE of the user identified by the username
.IP "" 0
.
.SH "LICENSE"
OpenNebula 2\.9\.85 Copyright 2002\-2011, OpenNebula Project Leads (OpenNebula\.org)
OpenNebula 3\.0\.0 Copyright 2002\-2011, OpenNebula Project Leads (OpenNebula\.org)
.
.P
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

View File

@ -312,7 +312,7 @@ user VMTEMPLATE of the user identified by the username
.IP "" 0
.
.SH "LICENSE"
OpenNebula 2\.9\.85 Copyright 2002\-2011, OpenNebula Project Leads (OpenNebula\.org)
OpenNebula 3\.0\.0 Copyright 2002\-2011, OpenNebula Project Leads (OpenNebula\.org)
.
.P
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

View File

@ -268,7 +268,7 @@ User password
.IP "" 0
.
.SH "LICENSE"
OpenNebula 2\.9\.85 Copyright 2002\-2011, OpenNebula Project Leads (OpenNebula\.org)
OpenNebula 3\.0\.0 Copyright 2002\-2011, OpenNebula Project Leads (OpenNebula\.org)
.
.P
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

View File

@ -13,6 +13,7 @@
.
.nf
\-f, \-\-force Force the usage of Hosts in more than one VDC
\-l, \-\-list x,y,z Selects columns to display with list command
\-d, \-\-delay x Sets the delay in seconds for top command
\-x, \-\-xml Show the resource in xml format
@ -34,6 +35,7 @@ create \fIfile\fR
.nf
Create a new VDC
valid options: force
.
.fi
.
@ -82,6 +84,36 @@ Deletes a VDC
.
.IP "" 0
.
.IP "\(bu" 4
addhost \fIvdcid\fR \fIrange\fR
.
.IP "" 4
.
.nf
Adds the set of hosts to the VDC
valid options: force
.
.fi
.
.IP "" 0
.
.IP "\(bu" 4
delhost \fIvdcid\fR \fIrange\fR
.
.IP "" 4
.
.nf
Deletes the set of hosts from the VDC
valid options: force
.
.fi
.
.IP "" 0
.
.IP "" 0
.
@ -146,7 +178,7 @@ VDC ID
.IP "" 0
.
.SH "LICENSE"
OpenNebula 2\.9\.85 Copyright 2002\-2011, OpenNebula Project Leads (OpenNebula\.org)
OpenNebula 3\.0\.0 Copyright 2002\-2011, OpenNebula Project Leads (OpenNebula\.org)
.
.P
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

View File

@ -493,7 +493,7 @@ user VM of the user identified by the username
.IP "" 0
.
.SH "LICENSE"
OpenNebula 2\.9\.85 Copyright 2002\-2011, OpenNebula Project Leads (OpenNebula\.org)
OpenNebula 3\.0\.0 Copyright 2002\-2011, OpenNebula Project Leads (OpenNebula\.org)
.
.P
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

View File

@ -294,7 +294,7 @@ user VNET of the user identified by the username
.IP "" 0
.
.SH "LICENSE"
OpenNebula 2\.9\.85 Copyright 2002\-2011, OpenNebula Project Leads (OpenNebula\.org)
OpenNebula 3\.0\.0 Copyright 2002\-2011, OpenNebula Project Leads (OpenNebula\.org)
.
.P
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

View File

@ -150,7 +150,7 @@ Zone ID
.IP "" 0
.
.SH "LICENSE"
OpenNebula 2\.9\.85 Copyright 2002\-2011, OpenNebula Project Leads (OpenNebula\.org)
OpenNebula 3\.0\.0 Copyright 2002\-2011, OpenNebula Project Leads (OpenNebula\.org)
.
.P
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

View File

@ -158,31 +158,38 @@ public class Client{
String[] token = oneSecret.split(":");
if(token.length != 2 )
if ( token.length > 2 )
{
oneAuth = oneSecret;
}
else if ( token.length == 2 )
{
MessageDigest md = MessageDigest.getInstance("SHA-1");
byte[] digest = md.digest(token[1].getBytes());
String hash = "";
for(byte aux : digest)
{
int b = aux & 0xff;
if (Integer.toHexString(b).length() == 1)
{
hash += "0";
}
hash += Integer.toHexString(b);
}
oneAuth = token[0] + ":" + hash;
}
else
{
throw new ClientConfigurationException(
"Wrong format for authorization string: "
+ oneSecret + "\nFormat expected is user:password");
}
MessageDigest md = MessageDigest.getInstance("SHA-1");
byte[] digest = md.digest(token[1].getBytes());
String hash = "";
for(byte aux : digest)
{
int b = aux & 0xff;
if (Integer.toHexString(b).length() == 1)
{
hash += "0";
}
hash += Integer.toHexString(b);
}
oneAuth = token[0] + ":" + hash;
}
catch (FileNotFoundException e)
{

View File

@ -0,0 +1,31 @@
# -------------------------------------------------------------------------- *
# Copyright 2002-2011, OpenNebula Project Leads (OpenNebula.org) #
# 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. *
# -------------------------------------------------------------------------- *
require "rexml/document"
include REXML
module Migrator
def db_version
"2.9.90"
end
def one_version
"OpenNebula 2.9.90"
end
def up
return true
end
end

View File

@ -0,0 +1,48 @@
# -------------------------------------------------------------------------- *
# Copyright 2002-2011, OpenNebula Project Leads (OpenNebula.org) #
# 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. *
# -------------------------------------------------------------------------- *
require "rexml/document"
include REXML
module Migrator
def db_version
"3.0"
end
def one_version
"OpenNebula 3.0"
end
def up
# The tm_nfs driver has been renamed to tm_shared
# CREATE TABLE host_pool (oid INTEGER PRIMARY KEY, name VARCHAR(256), body TEXT, state INTEGER, last_mon_time INTEGER, UNIQUE(name));
@db.fetch("SELECT * FROM host_pool") do |row|
doc = Document.new(row[:body])
source = nil
doc.root.each_element("TM_MAD") { |e|
if e.text.downcase == "tm_nfs"
e.text = "tm_shared"
@db[:host_pool].filter(:oid => row[:oid]).update(
:body => doc.root.to_s)
end
}
end
return true
end
end

115
src/onedb/Configuration.rb Normal file
View File

@ -0,0 +1,115 @@
# -------------------------------------------------------------------------- #
# Copyright 2002-2011, OpenNebula Project Leads (OpenNebula.org) #
# #
# 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. #
#--------------------------------------------------------------------------- #
###############################################################################
# The Configuration Class represents a simple configuration file for the
# Cloud servers. It does not check syntax.
###############################################################################
class Configuration
###########################################################################
# Patterns to parse the Configuration File
###########################################################################
NAME_REG =/[\w\d_-]+/
VARIABLE_REG =/\s*(#{NAME_REG})\s*=\s*/
SIMPLE_VARIABLE_REG =/#{VARIABLE_REG}([^\[]+?)(#.*)?/
SINGLE_VARIABLE_REG =/^#{SIMPLE_VARIABLE_REG}$/
ARRAY_VARIABLE_REG =/^#{VARIABLE_REG}\[(.*?)\]/m
###########################################################################
###########################################################################
def initialize(file)
@conf=parse_conf(file)
end
def add_configuration_value(key,value)
add_value(@conf,key,value)
end
def [](key)
@conf[key.to_s.upcase]
end
###########################################################################
###########################################################################
private
#
#
#
def add_value(conf, key, value)
if conf[key]
if !conf[key].kind_of?(Array)
conf[key]=[conf[key]]
end
conf[key]<<value
else
conf[key]=value
end
end
#
#
#
def parse_conf(file)
conf_file=File.read(file)
conf=Hash.new
conf_file.scan(SINGLE_VARIABLE_REG) {|m|
key=m[0].strip.upcase
value=m[1].strip
# hack to skip multiline VM_TYPE values
next if %w{NAME TEMPLATE}.include? key.upcase
add_value(conf, key, value)
}
conf_file.scan(ARRAY_VARIABLE_REG) {|m|
master_key=m[0].strip.upcase
pieces=m[1].split(',')
vars=Hash.new
pieces.each {|p|
key, value=p.split('=')
vars[key.strip.upcase]=value.strip
}
add_value(conf, master_key, vars)
}
conf
end
end
#
# Test program for the Configuration Parser
#
if $0 == __FILE__
require 'pp'
conf=Configuration.new('cloud.conf')
pp conf
end

View File

@ -14,7 +14,7 @@
# limitations under the License. #
#--------------------------------------------------------------------------- #
require 'cloud/Configuration'
require 'Configuration'
require 'onedb_backend'
class OneDB

View File

@ -29,8 +29,10 @@ module OZones
htaccess << "RewriteRule ^#{vdc.name} " +
"#{zone.endpoint} [P]\n"
if zone.sunsendpoint != nil
htaccess << "RewriteRule ^sunstone_#{vdc.name}/(.+) " +
"#{zone.sunsendpoint}/$1 [P]\n"
htaccess << "RewriteRule ^sunstone_#{vdc.name} " +
"#{zone.sunsendpoint} [P]\n"
"#{zone.sunsendpoint}/ [P]\n"
end
}
}

View File

@ -165,12 +165,13 @@ class OzonesServer
return [404, error.to_json]
end
if (!vdc_data[:force] or vdc_data[:force].upcase!="YES") and
if (!defined? vdc_data[:force] or
(defined? vdc_data[:force] and vdc_data[:force]!="yes")) and
!host_uniqueness?(zone, vdc_data[:hosts])
return [403, OZones::Error.new(
"Error: Couldn't create resource #{kind}. " +
"Hosts are not unique, and no force option" +
" was given.").to_json]
"One or several hosts belong to a different VDC "+
"and no force option was provided.").to_json]
end
vdcadminname = vdc_data[:vdcadminname]
@ -265,7 +266,7 @@ class OzonesServer
return [404, error.to_json]
end
end
############################################################################
# Update resources
############################################################################
@ -277,8 +278,6 @@ class OzonesServer
data = result if !OpenNebula.is_error?(result)
end
puts data
resource = case kind
when "vdc" then
vdc_data=Hash.new
@ -289,7 +288,7 @@ class OzonesServer
}
# Check parameters
if !vdc_data[:hosts] || !vdc_id
if !vdc_data[:hosts] || !vdc_id
return [400, OZones::Error.new(
"Error: Couldn't update resource #{kind}. " +
"Need ID and HOSTS to update.").to_json]
@ -302,7 +301,7 @@ class OzonesServer
"#{vdc_id} not found, cannot update Vdc.")
return [404, error.to_json]
end
# Get the zone where the Vdc belongs
zone=OZones::Zones.get(vdc.zones.id)
if !zone
@ -312,22 +311,22 @@ class OzonesServer
end
if (!vdc_data[:force] or vdc_data[:force].upcase!="YES") and
!host_uniqueness?(zone, vdc_data[:hosts], vdc_id.to_i)
!host_uniqueness?(zone, vdc_data[:hosts], vdc_id.to_i)
return [403, OZones::Error.new(
"Error: Couldn't update resource #{kind}. " +
"Hosts are not unique, and no force option" +
" was given.").to_json]
"One or several hosts belong to a different VDC "+
"and no force option was provided.").to_json]
end
rc = @ocaInt.update_vdc_hosts(zone, vdc, vdc_data[:hosts])
if !OpenNebula.is_error?(rc)
vdc.hosts = vdc_data[:hosts]
vdc.get_host_acls!(rc)
vdc.save
if vdc.saved?
if vdc.saved?
return [200, vdc.to_json]
else
return [500, OZones::Error.new(
@ -378,7 +377,7 @@ class OzonesServer
############################################################################
# Helper functions
############################################################################
# Check if hosts are already include in any Vdc of the zone
def host_uniqueness?(zone, host_list, vdc_id = -1)
all_hosts = ""

View File

@ -201,6 +201,28 @@ var oZones = {
});
},
"update": function(params,resource){
var callback = params.success;
var callback_error = params.error;
var id = params.data.id;
var data = params.data.extra_param;
var request = oZones.Helper.request(resource,"update", data);
$.ajax({
url: resource.toLowerCase()+'/'+id,
type: "PUT",
dataType: "json",
data: JSON.stringify(data),
success: function(response){
return callback ? callback(request, response) : null;
},
error: function(response){
return callback_error ?
callback_error(request, oZones.Error(response)) : null;
}
});
},
"delete": function(params,resource){
var callback = params.success;
var callback_error = params.error;
@ -385,7 +407,7 @@ var oZones = {
callback(request, oZones.Helper.pool(subresource.toUpperCase(),response)) : null;
},
error: function(response){
return callback_error ? calback_error(request,oZones.Error(response)) : null;
return callback_error ? callback_error(request,oZones.Error(response)) : null;
}
});
@ -421,6 +443,9 @@ var oZones = {
"create": function(params){
oZones.Action.create(params,oZones.VDC.resource);
},
"update": function(params){
oZones.Action.update(params,oZones.VDC.resource);
},
"delete": function(params){
oZones.Action.delete(params,oZones.VDC.resource);
},

View File

@ -36,7 +36,7 @@ var dashboard_tab_content =
</td>\
<td>\
<div class="panel">\
<h3><a href="#vdcs_tab">Virtual Data Center</a>\
<h3><a href="#vdcs_tab">Virtual Data Centers</a>\
<div class="new-resource">\
<a class="action_button" href="#vdcs_tab" value="VDC.create_dialog">+</a>\
</div>\

View File

@ -25,6 +25,7 @@ var vdcs_tab_content =
<th>ID</th>\
<th>Name</th>\
<th>Zone ID</th>\
<th>Hosts</th>\
</tr>\
</thead>\
<tbody id="tbodyvdcs">\
@ -44,7 +45,12 @@ var create_vdc_tmpl =
<input type="password" name="vdcadminpass" id="vdcadminpass" />\
<label for="zone">Zone:</label>\
<select id="zoneid" name="zone">\
</select>\
</select><br />\
<div class="clear"></div>\
<label for="vdc_force_hosts">VDC host sharing:</label>\
<input type="checkbox" name="vdc_force_hosts" id="vdc_force_hosts" />\
<div class="tip">Allows hosts belonging to other VDCs to be re-added to this one. They will appear greyed-out in the lists.</div>\
<div class="clear"></div>\
<label style="margin-left:205px;font-size:0.8em;color:#bbbbbb">Drag & Drop</label>\
<label style="margin-left:195px;font-size:0.8em;color:#bbbbbb">Available / Selected</label>\
<label>Hosts:</label>\
@ -61,7 +67,36 @@ var create_vdc_tmpl =
</fieldset>\
</form>';
var update_vdc_tmpl =
'<form id="update_vdc_form" action="">\
<fieldset>\
<div>\
<label for="vdc_update_id">Update hosts in:</label>\
<select name="vdc_update_id" id="vdc_update_id">\
</select>\
<div class="clear"></div>\
<label for="vdc_update_force_hosts">VDC host sharing:</label>\
<input type="checkbox" name="vdc_update_force_hosts" id="vdc_update_force_hosts" />\
<div class="tip">Allows hosts belonging to other VDCs to be re-added to this one. They will appear greyed-out in the list.</div>\
<div class="clear"></div>\
<label style="margin-left:205px;font-size:0.8em;color:#bbbbbb">Drag & Drop</label>\
<label style="margin-left:195px;font-size:0.8em;color:#bbbbbb">Available / Current</label>\
<label>Hosts:</label>\
<div id="vdc_update_hosts_lists" class="dd_lists">\
<ul id="vdc_update_available_hosts_list" class="dd_list dd_left"></ul>\
<ul id="vdc_update_selected_hosts_list" class="dd_list dd_right"></ul>\
</div>\
</fieldset>\
<fieldset>\
<div class="form_buttons">\
<button class="button" id="update_vdc_submit" value="VDC.update">Update</button>\
<button class="button" type="reset" value="reset">Reset</button>\
</div>\
</fieldset>\
</form>';
var dataTable_vdcs;
var $update_vdc_dialog;
function vdcSelectedNodes() {
return getSelectedNodes(dataTable_vdcs);
@ -81,6 +116,19 @@ var vdc_actions = {
call: openCreateVDCDialog
},
"VDC.update" : {
type: "single",
call: oZones.VDC.update,
callback: updateVDCElement,
error: onError,
notify: true
},
"VDC.update_dialog" : {
type: "custom",
call: openUpdateVDCDialog
},
"VDC.list" : {
type: "list",
call: oZones.VDC.list,
@ -123,6 +171,12 @@ var vdc_actions = {
call: oZones.Zone.host,
callback: fillHostList,
error: onError
},
"VDC.update_zone_hosts" : {
type: "single",
call: oZones.Zone.host,
callback: fillUpdateHostList,
error: onError
}
};
@ -137,6 +191,10 @@ var vdc_buttons = {
text: "+ New",
alwaysActive:true
},
"VDC.update_dialog" : {
type: "action",
text: "Add/Remove hosts",
},
"VDC.delete" : {
type: "action",
text: "Delete",
@ -169,7 +227,8 @@ function vdcElementArray(vdc_json){
'<input type="checkbox" id="vdc_'+vdc.id+'" name="selected_items" value="'+vdc.id+'"/>',
vdc.id,
vdc.name,
vdc.zones_id
vdc.zones_id,
vdc.hosts ? vdc.hosts : "none"
];
}
@ -193,6 +252,12 @@ function addVDCElement(req,vdc_json){
addElement(element,dataTable_vdcs);
}
function updateVDCElement(request, vdc_json){
var id = vdc_json.VDC.id;
var element = vdcElementArray(vdc_json);
updateSingleElement(element,dataTable_vdcs,'#vdc_'+id);
}
function updateVDCsView(req,vdc_list){
var vdc_list_array = [];
@ -230,6 +295,18 @@ function updateVDCInfo(req,vdc_json){
<td class="key_td">Hosts</td>\
<td class="value_td">'+(vdc.hosts? vdc.hosts : "none")+'</td>\
</tr>\
<tr>\
<td class="key_td">Admin name</td>\
<td class="value_td">'+vdc.vdcadminname+'</td>\
</tr>\
<tr>\
<td class="key_td">Group ID</td>\
<td class="value_td">'+vdc.group_id+'</td>\
</tr>\
<tr>\
<td class="key_td">ACLs</td>\
<td class="value_td">'+vdc.acls+'</td>\
</tr>\
</tbody>\
</table>'
};
@ -239,13 +316,87 @@ function updateVDCInfo(req,vdc_json){
}
function fillHostList(req, host_list_json){
list = "";
var list = "";
var force = $('div#create_vdc_dialog #vdc_force_hosts:checked').length ?
true : false;
var zone_id = req.request.data[0];
var free;
$.each(host_list_json,function(){
list+='<li host_id="'+this.HOST.ID+'">'+this.HOST.NAME+'</li>';
free = isHostFree(this.HOST.ID,zone_id);
if (force || free){
list+='<li host_id="'+this.HOST.ID+'">'+(free? this.HOST.NAME : '<span style="color:Grey;">'+this.HOST.NAME+'</span>')+'</li>';
}
});
$('div#create_vdc_dialog #vdc_available_hosts_list').html(list);
}
//return the array of hosts
function isHostMine(host_id,vdc_id){
//locate myself
var vdcs = dataTable_vdcs.fnGetData();
var my_hosts=null;
for (var i=0; i < vdcs.length; i++){
if (vdcs[i][1]==vdc_id){
my_hosts = vdcs[i][4].split(',');
break;
}
};
if (!my_hosts) return false;
return $.inArray(host_id,my_hosts) >= 0;
}
function fillUpdateHostList(req, host_list_json){
var list = "";
var list_mine = "";
var vdc_id = $('#vdc_update_id',$update_vdc_dialog).val();
var force = $('#vdc_update_force_hosts:checked',$update_vdc_dialog).length ?
true : false;
var zone_id = req.request.data[0];
var free,li;
$.each(host_list_json,function(){
//if mine, put in mine_list
if (isHostMine(this.HOST.ID,vdc_id)){
list_mine+='<li host_id="'+this.HOST.ID+'">'+this.HOST.NAME+'</li>';
return true; //continue
}
//otherwise, check if its free etc...
free = isHostFree(this.HOST.ID,zone_id);
if (force || free){
list+='<li host_id="'+this.HOST.ID+'">'+(free? this.HOST.NAME : '<span style="color:Grey;">'+this.HOST.NAME+'</span>')+'</li>';
}
});
$('#vdc_update_available_hosts_list',$update_vdc_dialog).html(list);
$('#vdc_update_selected_hosts_list',$update_vdc_dialog).html(list_mine);
}
function isHostFree(id,zone_id){//strings
var data = dataTable_vdcs.fnGetData();
var result = true;
var hosts;
for (var i=0; i<data.length; i++){
//this vdc is not in the interesting zone:
if (data[i][3] != zone_id) continue;
//note it is an array of strings
hosts = data[i][4].split(',');
if ($.inArray(id,hosts) >= 0){
result = false;
break;
}
}
return result;
}
function setupCreateVDCDialog(){
$('div#dialogs').append('<div title="Create VDC" id="create_vdc_dialog"></div>');
var dialog = $('div#create_vdc_dialog');
@ -253,7 +404,7 @@ function setupCreateVDCDialog(){
dialog.dialog({
autoOpen: false,
modal: true,
width: 500
width: 420
});
$('button',dialog).button();
@ -266,6 +417,12 @@ function setupCreateVDCDialog(){
containment: dialog
});
$('input#vdc_force_hosts',dialog).change(function(){
select = $('select#zoneid',$('#create_vdc_dialog'));
if (select.val().length){
select.trigger("change");
}
});
//load zone hosts
$('select#zoneid').change(function(){
@ -289,9 +446,10 @@ function setupCreateVDCDialog(){
var vdcadminname = $('#vdcadminname',$(this)).val();
var vdcadminpass = $('#vdcadminpass',$(this)).val();
var zoneid = $('select#zoneid',$(this)).val();
var force = $('#vdc_force_hosts:checked',$(this)).length ? "yes" : "please no";
if (!name.length || !vdcadminname.length
|| !vdcadminpass.length || !zoneid.length){
notifyError("Name, administrator credentials or zones are missing");
notifyError("Name, administrator credentials or zone are missing");
return false;
}
var hosts="";
@ -308,6 +466,7 @@ function setupCreateVDCDialog(){
"zoneid" : zoneid,
"vdcadminname" : vdcadminname,
"vdcadminpass" : vdcadminpass,
"force" : force
}
};
if (hosts.length){
@ -328,6 +487,119 @@ function openCreateVDCDialog(){
dialog.dialog('open');
}
function setupUpdateVDCDialog(){
$('div#dialogs').append('<div title="Update VDC" id="update_vdc_dialog"></div>');
$update_vdc_dialog=$('div#update_vdc_dialog',dialogs_context);
var dialog = $update_vdc_dialog;
dialog.html(update_vdc_tmpl);
dialog.dialog({
autoOpen: false,
modal: true,
width: 420
});
$('button',dialog).button();
$('#vdc_update_available_hosts_list',dialog).sortable({
connectWith : '#vdc_update_selected_hosts_list',
containment: dialog
});
$('#vdc_update_selected_hosts_list',dialog).sortable({
connectWith : '#vdc_update_available_hosts_list',
containment: dialog
});
$('#vdc_update_force_hosts',dialog).change(function(){
select = $('select#vdc_update_id',$update_vdc_dialog);
if (select.val().length){
select.trigger("change");
}
});
$('select#vdc_update_id').change(function(){
var id = $(this).val();
var zone_id = $('option:selected',this).attr("zone_id");
var av_hosts=
$('#vdc_update_available_hosts_list',$update_vdc_dialog);
var sel_hosts=
$('#vdc_update_selected_hosts_list',$update_vdc_dialog);
if (!id || !id.length) {
av_hosts.empty();
sel_hosts.empty();
return true;
};
//A VDC has been selected
//Fill in available hosts column
//move current hosts to current
av_hosts.html('<li>'+spinner+'</li>');
sel_hosts.empty();
Sunstone.runAction("VDC.update_zone_hosts",zone_id);
});
$('#update_vdc_form').submit(function(){
var force = $('#vdc_update_force_hosts',this).length ? "yes" : "nein";
var id = $('#vdc_update_id',this).val();
var hosts="";
$('#vdc_update_selected_hosts_list li',this).each(function(){
hosts+=$(this).attr("host_id")+',';
});
if (hosts.length){
hosts= hosts.slice(0,-1);
};
var vdc_json = {
"vdc" : {
"id": id,
"force": force,
"hosts": hosts
}
};
if (hosts.length){
vdc_json["vdc"]["hosts"]=hosts;
};
Sunstone.runAction("VDC.update",id,vdc_json);
dialog.dialog('close');
return false;
});
}
function openUpdateVDCDialog(){
var selected_elems = getSelectedNodes(dataTable_vdcs);
//populate select
var dialog = $update_vdc_dialog;
var options = "";
var vdcs = dataTable_vdcs.fnGetData();
for (var i = 0; i < vdcs.length; i++){
//if this VDC is among the selected
if ($.inArray(vdcs[i][1].toString(),selected_elems) >= 0){
options += '<option zone_id="'+
vdcs[i][3]+
'" value="'+
vdcs[i][1]+'">'+
vdcs[i][2]+
'</option>';
};
};
$('#vdc_update_available_hosts_list',dialog).empty();
$('#vdc_update_selected_hosts_list',dialog).empty();
$('select#vdc_update_id',dialog).html(options);
if (selected_elems.length == 1){
$('select#vdc_update_id',dialog).html(options);
$('select#vdc_update_id option',dialog).attr("checked","checked");
$('select#vdc_update_id').trigger("change");
} else {
$('select#vdc_update_id',dialog).html('<option value="">Please select</option>'+
options);
};
dialog.dialog('open');
}
function setVDCAutorefresh() {
setInterval(function(){
var checked = $('input:checked',dataTable_zones.fnGetNodes());
@ -347,15 +619,19 @@ $(document).ready(function(){
"aoColumnDefs": [
{ "bSortable": false, "aTargets": ["check"] },
{ "sWidth": "60px", "aTargets": [0] },
{ "sWidth": "150px", "aTargets": [4] },
{ "sWidth": "35px", "aTargets": [1,3] }
]
});
dataTable_vdcs.fnClearTable();
addElement([spinner,'','',''],dataTable_vdcs);
addElement([spinner,'','','',''],dataTable_vdcs);
Sunstone.runAction("VDC.list");
setupCreateVDCDialog();
setupTips($('#create_vdc_dialog'));
setupUpdateVDCDialog();
setupTips($('#update_vdc_dialog'));
setVDCAutorefresh();
initCheckAllBoxes(dataTable_vdcs);
tableCheckboxesListener(dataTable_vdcs);

View File

@ -41,10 +41,12 @@ var create_zone_tmpl =
<input type="text" name="name" id="name" /><br />\
<label for="endpoint">End point:</label>\
<input type="text" name="endpoint" id="endpoint" /><br />\
<label for="onename">ONE auth:</label>\
<label for="onename">Oneadmin user:</label>\
<input type="text" name="onename" id="onename" /><br />\
<label for="onepass">Password:</label>\
<input type="password" name="onepass" id="onepass" />\
<label for="sunsendpoint">Sunstone end point:</label>\
<input type="text" name="sunsendpoint" id="sunsendpoint" /><br />\
</div>\
</fieldset>\
<fieldset>\
@ -298,6 +300,10 @@ function updateZoneInfo(req,zone_json){
<td class="key_td">Endpoint</td>\
<td class="value_td">'+zone.endpoint+'</td>\
</tr>\
<tr>\
<td class="key_td">Sunstone endpoint</td>\
<td class="value_td"><a href="'+zone.sunsendpoint+'" target="_blank">'+zone.sunsendpoint+'<span class="ui-icon ui-icon-extlink" style="display:inline-block;" /></a></td>\
</tr>\
<tr>\
<td class="key_td">#VDCs</td>\
<td class="value_td">'+zone.vdcs.length+'</td>\
@ -544,6 +550,7 @@ function setupCreateZoneDialog(){
var endpoint = $('#endpoint',this).val();
var onename = $('#onename',this).val();
var onepass = $('#onepass',this).val();
var sunsendpoint = $('#sunsendpoint',this).val();
if (!name.length || !endpoint.length ||
!onename.length || !onepass.length){
@ -556,7 +563,8 @@ function setupCreateZoneDialog(){
"name": name,
"endpoint": endpoint,
"onename": onename,
"onepass": onepass
"onepass": onepass,
"sunsendpoint" : sunsendpoint
}
};
@ -589,7 +597,8 @@ $(document).ready(function(){
"sPaginationType": "full_numbers",
"aoColumnDefs": [
{ "bSortable": false, "aTargets": ["check"] },
{ "sWidth": "60px", "aTargets": [0,2] },
{ "sWidth": "60px", "aTargets": [0] },
{ "sWidth": "300px", "aTargets": [3] },
{ "sWidth": "35px", "aTargets": [1] }
]
});

View File

@ -96,7 +96,7 @@ private:
int read_oneauth(string &secret);
int split_secret(const string secret, string& user, string& pass);
int split_secret(const string& secret);
};
#endif /*ONECLIENT_H_*/

View File

@ -38,9 +38,6 @@ const int Client::MESSAGE_SIZE = 51200;
void Client::set_one_auth(string secret)
{
string user = "";
string pass = "";
int rc = 0;
if( secret == "" )
@ -50,18 +47,11 @@ void Client::set_one_auth(string secret)
if ( rc == 0 )
{
rc = split_secret(secret, user, pass);
rc = split_secret(secret);
if( rc == 0 )
if( rc != 0 )
{
string sha1_pass = SSLTools::sha1_digest(pass);
one_auth = user + ":" + sha1_pass;
}
else
{
throw runtime_error("Wrong format for auth token, must "
"be <username>:<passwd>");
throw runtime_error("Wrong format for auth token");
}
}
}
@ -132,23 +122,32 @@ int Client::read_oneauth(string &secret)
return rc;
}
int Client::split_secret(const string secret, string& user, string& pass)
int Client::split_secret(const string& secret)
{
size_t pos;
int rc = -1;
pos=secret.find(":");
pos = secret.find(":");
if (pos != string::npos)
if ( pos == string::npos )
{
user = secret.substr(0,pos);
pass = secret.substr(pos+1);
rc = 0;
return -1;
}
return rc;
if ( secret.rfind(":") == pos )
{
string user = secret.substr(0,pos);
string pass = secret.substr(pos+1);
string sha1_pass = SSLTools::sha1_digest(pass);
one_auth = user + ":" + sha1_pass;
}
else
{
one_auth = secret;
}
return 0;
}
/* -------------------------------------------------------------------------- */

View File

@ -229,7 +229,9 @@ class SunstoneServer
begin
novnc_cmd = "#{config[:novnc_path]}/utils/wsproxy.py"
pipe = IO.popen("#{novnc_cmd} #{proxy_port} #{host}:#{vnc_port}")
novnc_exec = "#{novnc_cmd} #{proxy_port} #{host}:#{vnc_port}"
$stderr.puts("Starting vnc proxy: #{novnc_exec}")
pipe = IO.popen(novnc_exec)
rescue Exception => e
error = Error.new(e.message)
return [500, error.to_json]

View File

@ -16,6 +16,8 @@
# limitations under the License. #
#--------------------------------------------------------------------------- #
CONTEXT_FILE=$1
while (( "$#" )); do
if [ "$#" == "1" ]; then
DST=$1
@ -56,7 +58,12 @@ for f in $SRC; do
;;
*)
exec_and_log "cp -R $f $ISO_DIR"
if [ $SECURE_CONTEXT -eq 0 -o "$f" == "$CONTEXT_FILE" ]; then
exec_and_log "cp -R $f $ISO_DIR" \
"Error copying $f to $ISO_DIR"
else
log "not copying potentialy dangerous file $f"
fi
;;
esac
done

View File

@ -22,6 +22,9 @@ VG_NAME=
# Default size for logical volumes if not specified
DEFAULT_LV_SIZE="1G"
# Set to 1 to disable adding files to context image other than context.sh
# itself or http url's
SECURE_CONTEXT=0
# -------------------------------------------------------------------------- #
# Helper functions for the LVM plugin #

View File

@ -16,6 +16,8 @@
# limitations under the License. #
#--------------------------------------------------------------------------- #
CONTEXT_FILE=$1
while (( "$#" )); do
if [ "$#" == "1" ]; then
DST=$1
@ -53,8 +55,12 @@ for f in $SRC; do
;;
*)
exec_and_log "cp -R $f $ISO_DIR" \
"Error copying $f to $ISO_DIR"
if [ $SECURE_CONTEXT -eq 0 -o "$f" == "$CONTEXT_FILE" ]; then
exec_and_log "cp -R $f $ISO_DIR" \
"Error copying $f to $ISO_DIR"
else
log "not copying potentialy dangerous file $f"
fi
;;
esac
done

View File

@ -13,3 +13,7 @@
# See the License for the specific language governing permissions and #
# limitations under the License. #
#--------------------------------------------------------------------------- #
# Set to 1 to disable adding files to context image other than context.sh
# itself or http url's
SECURE_CONTEXT=0

View File

@ -16,6 +16,8 @@
# limitations under the License. #
#--------------------------------------------------------------------------- #
CONTEXT_FILE=$1
while (( "$#" )); do
if [ "$#" == "1" ]; then
DST=$1
@ -58,8 +60,12 @@ for f in $SRC; do
;;
*)
exec_and_log "cp -R $f $ISO_DIR" \
"Error copying $f to $ISO_DIR"
if [ $SECURE_CONTEXT -eq 0 -o "$f" == "$CONTEXT_FILE" ]; then
exec_and_log "cp -R $f $ISO_DIR" \
"Error copying $f to $ISO_DIR"
else
log "not copying potentialy dangerous file $f"
fi
;;
esac
done

View File

@ -13,3 +13,7 @@
# See the License for the specific language governing permissions and #
# limitations under the License. #
#--------------------------------------------------------------------------- #
# Set to 1 to disable adding files to context image other than context.sh
# itself or http url's
SECURE_CONTEXT=0