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:
commit
8d7a76edd7
15
README.md
15
README.md
@ -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
|
||||
|
@ -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
|
||||
|
@ -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},
|
||||
|
@ -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
|
@ -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
|
@ -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
|
@ -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
|
@ -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
|
@ -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
|
@ -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
|
@ -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
|
@ -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
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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)
|
||||
{
|
||||
|
31
src/onedb/2.9.85_to_2.9.90.rb
Normal file
31
src/onedb/2.9.85_to_2.9.90.rb
Normal 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
|
48
src/onedb/2.9.90_to_3.0.rb
Normal file
48
src/onedb/2.9.90_to_3.0.rb
Normal 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
115
src/onedb/Configuration.rb
Normal 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
|
@ -14,7 +14,7 @@
|
||||
# limitations under the License. #
|
||||
#--------------------------------------------------------------------------- #
|
||||
|
||||
require 'cloud/Configuration'
|
||||
require 'Configuration'
|
||||
require 'onedb_backend'
|
||||
|
||||
class OneDB
|
||||
|
@ -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
|
||||
}
|
||||
}
|
||||
|
@ -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 = ""
|
||||
|
@ -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);
|
||||
},
|
||||
|
@ -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>\
|
||||
|
@ -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);
|
||||
|
@ -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] }
|
||||
]
|
||||
});
|
||||
|
@ -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_*/
|
||||
|
@ -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;
|
||||
}
|
||||
|
||||
/* -------------------------------------------------------------------------- */
|
||||
|
@ -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]
|
||||
|
@ -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
|
||||
|
@ -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 #
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
Loading…
x
Reference in New Issue
Block a user