diff --git a/README.md b/README.md index 2480dac71f..7f0cc5b5f4 100644 --- a/README.md +++ b/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 diff --git a/install.sh b/install.sh index 72fb72b1d7..23dc500a82 100755 --- a/install.sh +++ b/install.sh @@ -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 diff --git a/share/install_gems/install_gems b/share/install_gems/install_gems index bbdf2c3a6e..f9dc603092 100755 --- a/share/install_gems/install_gems +++ b/share/install_gems/install_gems @@ -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}, diff --git a/share/man/econe-describe-images.1 b/share/man/econe-describe-images.1 index e69de29bb2..975ca7f8fd 100644 --- a/share/man/econe-describe-images.1 +++ b/share/man/econe-describe-images.1 @@ -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 , \fB\-K\fR +.IP +The username of the user +.HP +\fB\-\-secret\-key\fR , \fB\-S\fR +.IP +The password of the user +.HP +\fB\-\-url\fR , \fB\-U\fR +.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 diff --git a/share/man/econe-describe-instances.1 b/share/man/econe-describe-instances.1 index e69de29bb2..ec9e972991 100644 --- a/share/man/econe-describe-instances.1 +++ b/share/man/econe-describe-instances.1 @@ -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 , \fB\-K\fR +.IP +The username of the user +.HP +\fB\-\-secret\-key\fR , \fB\-S\fR +.IP +The password of the user +.HP +\fB\-\-url\fR , \fB\-U\fR +.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 diff --git a/share/man/econe-register.1 b/share/man/econe-register.1 index e69de29bb2..1db1a75d02 100644 --- a/share/man/econe-register.1 +++ b/share/man/econe-register.1 @@ -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 , \fB\-K\fR +.IP +The username of the user +.HP +\fB\-\-secret\-key\fR , \fB\-S\fR +.IP +The password of the user +.HP +\fB\-\-url\fR , \fB\-U\fR +.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 diff --git a/share/man/econe-run-instances.1 b/share/man/econe-run-instances.1 index e69de29bb2..92ab73a6d2 100644 --- a/share/man/econe-run-instances.1 +++ b/share/man/econe-run-instances.1 @@ -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 , \fB\-K\fR +.IP +The username of the user +.HP +\fB\-\-secret\-key\fR , \fB\-S\fR +.IP +The password of the user +.HP +\fB\-\-url\fR , \fB\-U\fR +.IP +Set url as the web service url to use +.HP +\fB\-\-type\fR , \fB\-t\fR +.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 diff --git a/share/man/econe-terminate-instances.1 b/share/man/econe-terminate-instances.1 index e69de29bb2..f39fb6b867 100644 --- a/share/man/econe-terminate-instances.1 +++ b/share/man/econe-terminate-instances.1 @@ -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 , \fB\-K\fR +.IP +The username of the user +.HP +\fB\-\-secret\-key\fR , \fB\-S\fR +.IP +The password of the user +.HP +\fB\-\-url\fR , \fB\-U\fR +.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 diff --git a/share/man/econe-upload.1 b/share/man/econe-upload.1 index e69de29bb2..10239bc1d3 100644 --- a/share/man/econe-upload.1 +++ b/share/man/econe-upload.1 @@ -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 , \fB\-K\fR +.IP +The username of the user +.HP +\fB\-\-secret\-key\fR , \fB\-S\fR +.IP +The password of the user +.HP +\fB\-\-url\fR , \fB\-U\fR +.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 diff --git a/share/man/occi-compute.1 b/share/man/occi-compute.1 index e69de29bb2..7e2276bb51 100644 --- a/share/man/occi-compute.1 +++ b/share/man/occi-compute.1 @@ -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 \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 , \fB\-U\fR +.IP +The username of the user +.PP +\fB\-\-password\fR , \fB\-P\fR +.IP +The password of the user +.PP +\fB\-\-url\fR , \fB\-R\fR +.IP +Set url as the web service url to use +.PP +\fB\-\-timeout\fR , \fB\-T\fR +.IP +Sets a timeout for the http connection +.PP +\fB\-\-debug\fR, \fB\-D\fR +.IP +Enables verbosity +.SH COMMANDS +.TP +\fBcreate\fR +.IP +creates a new compute resource described by the provided + +.TP +\fBlist\fR +.IP +lists available compute resources +.TP +\fBshow\fR +.IP +retrieves the OCCI XML representation of the compute resource +identified by +.TP +\fBupdate\fR +.IP +updates the representation of the compute resource represented by the +provided +.TP +\fBdelete\fR +.IP +deletes the compute resource idenfitied by +.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 diff --git a/share/man/occi-network.1 b/share/man/occi-network.1 index e69de29bb2..21ae49696c 100644 --- a/share/man/occi-network.1 +++ b/share/man/occi-network.1 @@ -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 \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 , \fB\-U\fR +.IP +The username of the user +.PP +\fB\-\-password\fR , \fB\-P\fR +.IP +The password of the user +.PP +\fB\-\-url\fR , \fB\-R\fR +.IP +Set url as the web service url to use +.PP +\fB\-\-timeout\fR , \fB\-T\fR +.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 +.IP +creates a new virtual network described by the provided + +.TP +\fBlist\fR +.IP +lists available virtual networks +.TP +\fBshow\fR +.IP +retrieves the OCCI XML representation of the virtual network +identified by +.TP +\fBupdate\fR +.IP +updates the representation of the network resource represented by the +provided +.TP +\fBdelete\fR +.IP +deletes the virtual network idenfitied by +.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 diff --git a/share/man/occi-storage.1 b/share/man/occi-storage.1 index e69de29bb2..e63697e535 100644 --- a/share/man/occi-storage.1 +++ b/share/man/occi-storage.1 @@ -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 \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 , \fB\-U\fR +.IP +The username of the user +.PP +\fB\-\-password\fR , \fB\-P\fR +.IP +The password of the user +.PP +\fB\-\-url\fR , \fB\-R\fR +.IP +Set url as the web service url to use +.PP +\fB\-\-timeout\fR , \fB\-T\fR +.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 +.IP +creates a new storage resource described by the provided + +.TP +\fBlist\fR +.IP +lists available storage resources +.TP +\fBshow\fR +.IP +retrieves the OCCI XML representation of the storage resource +identified by +.TP +\fBupdate\fR +.IP +updates the representation of the storage resource represented by the +provided +.TP +\fBdelete\fR +.IP +deletes the storage resource idenfitied by +.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 diff --git a/share/man/oneacl.1 b/share/man/oneacl.1 index 83ca8a8ec3..874513861c 100644 --- a/share/man/oneacl.1 +++ b/share/man/oneacl.1 @@ -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 diff --git a/share/man/onegroup.1 b/share/man/onegroup.1 index c7491abcfc..32bf32f9be 100644 --- a/share/man/onegroup.1 +++ b/share/man/onegroup.1 @@ -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 diff --git a/share/man/onehost.1 b/share/man/onehost.1 index c5598b5d12..0082e1339f 100644 --- a/share/man/onehost.1 +++ b/share/man/onehost.1 @@ -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 diff --git a/share/man/oneimage.1 b/share/man/oneimage.1 index d47d831509..b100089273 100644 --- a/share/man/oneimage.1 +++ b/share/man/oneimage.1 @@ -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 diff --git a/share/man/onetemplate.1 b/share/man/onetemplate.1 index a8f9cb2066..7a3f23139a 100644 --- a/share/man/onetemplate.1 +++ b/share/man/onetemplate.1 @@ -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 diff --git a/share/man/oneuser.1 b/share/man/oneuser.1 index 8a327e1d63..8bed68c785 100644 --- a/share/man/oneuser.1 +++ b/share/man/oneuser.1 @@ -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 diff --git a/share/man/onevdc.1 b/share/man/onevdc.1 index 5ca56052f5..c6aa1c9e5a 100644 --- a/share/man/onevdc.1 +++ b/share/man/onevdc.1 @@ -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 diff --git a/share/man/onevm.1 b/share/man/onevm.1 index 5b24c0f7ca..7ecebedb64 100644 --- a/share/man/onevm.1 +++ b/share/man/onevm.1 @@ -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 diff --git a/share/man/onevnet.1 b/share/man/onevnet.1 index db089aae93..75844a4749 100644 --- a/share/man/onevnet.1 +++ b/share/man/onevnet.1 @@ -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 diff --git a/share/man/onezone.1 b/share/man/onezone.1 index a25d516379..f6467d59fd 100644 --- a/share/man/onezone.1 +++ b/share/man/onezone.1 @@ -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 diff --git a/src/oca/java/src/org/opennebula/client/Client.java b/src/oca/java/src/org/opennebula/client/Client.java index 6c06e92cf4..b5386efc19 100644 --- a/src/oca/java/src/org/opennebula/client/Client.java +++ b/src/oca/java/src/org/opennebula/client/Client.java @@ -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) { diff --git a/src/onedb/2.9.85_to_2.9.90.rb b/src/onedb/2.9.85_to_2.9.90.rb new file mode 100644 index 0000000000..53a7d084ae --- /dev/null +++ b/src/onedb/2.9.85_to_2.9.90.rb @@ -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 diff --git a/src/onedb/2.9.90_to_3.0.rb b/src/onedb/2.9.90_to_3.0.rb new file mode 100644 index 0000000000..8692af3bfe --- /dev/null +++ b/src/onedb/2.9.90_to_3.0.rb @@ -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 diff --git a/src/onedb/Configuration.rb b/src/onedb/Configuration.rb new file mode 100644 index 0000000000..2189e4ad1a --- /dev/null +++ b/src/onedb/Configuration.rb @@ -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]<\ \
\ -

Virtual Data Center\ +

Virtual Data Centers\
\ +\
\ diff --git a/src/ozones/Server/public/js/plugins/vdcs-tab.js b/src/ozones/Server/public/js/plugins/vdcs-tab.js index dcd5555296..4564886c96 100644 --- a/src/ozones/Server/public/js/plugins/vdcs-tab.js +++ b/src/ozones/Server/public/js/plugins/vdcs-tab.js @@ -25,6 +25,7 @@ var vdcs_tab_content = ID\ Name\ Zone ID\ + Hosts\ \ \ \ @@ -44,7 +45,12 @@ var create_vdc_tmpl = \ \ \ +
\ +
\ + \ + \ +
Allows hosts belonging to other VDCs to be re-added to this one. They will appear greyed-out in the lists.
\ +
\ \ \ \ @@ -61,7 +67,36 @@ var create_vdc_tmpl = \ '; +var update_vdc_tmpl = +'
\ +
\ +
\ + \ + \ +
\ + \ + \ +
Allows hosts belonging to other VDCs to be re-added to this one. They will appear greyed-out in the list.
\ +
\ + \ + \ + \ +
\ +
    \ +
      \ +
      \ +
      \ +
      \ +
      \ + \ + \ +
      \ +
      \ +
      '; + 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){ '', 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){ Hosts\ '+(vdc.hosts? vdc.hosts : "none")+'\ \ + \ + Admin name\ + '+vdc.vdcadminname+'\ + \ + \ + Group ID\ + '+vdc.group_id+'\ + \ + \ + ACLs\ + '+vdc.acls+'\ + \ \ ' }; @@ -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+='
    • '+this.HOST.NAME+'
    • '; + free = isHostFree(this.HOST.ID,zone_id); + + if (force || free){ + list+='
    • '+(free? this.HOST.NAME : ''+this.HOST.NAME+'')+'
    • '; + } }); $('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+='
    • '+this.HOST.NAME+'
    • '; + return true; //continue + } + //otherwise, check if its free etc... + free = isHostFree(this.HOST.ID,zone_id); + + if (force || free){ + list+='
    • '+(free? this.HOST.NAME : ''+this.HOST.NAME+'')+'
    • '; + } + }); + + + + $('#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= 0){ + result = false; + break; + } + } + return result; +} + function setupCreateVDCDialog(){ $('div#dialogs').append('
      '); 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('
      '); + $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('
    • '+spinner+'
    • '); + 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 += ''; + }; + }; + + $('#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(''+ + 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); diff --git a/src/ozones/Server/public/js/plugins/zones-tab.js b/src/ozones/Server/public/js/plugins/zones-tab.js index ffdd2d0069..8f792209cd 100644 --- a/src/ozones/Server/public/js/plugins/zones-tab.js +++ b/src/ozones/Server/public/js/plugins/zones-tab.js @@ -41,10 +41,12 @@ var create_zone_tmpl =
      \ \
      \ - \ + \
      \ \ \ + \ +
      \

      \ \
      \ @@ -298,6 +300,10 @@ function updateZoneInfo(req,zone_json){ Endpoint\ '+zone.endpoint+'\ \ + \ + Sunstone endpoint\ + '+zone.sunsendpoint+'\ + \ \ #VDCs\ '+zone.vdcs.length+'\ @@ -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] } ] }); diff --git a/src/scheduler/include/Client.h b/src/scheduler/include/Client.h index e82c10c9d8..276fd9cba2 100644 --- a/src/scheduler/include/Client.h +++ b/src/scheduler/include/Client.h @@ -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_*/ diff --git a/src/scheduler/src/client/Client.cc b/src/scheduler/src/client/Client.cc index b2bc97bc7a..5899ce9211 100644 --- a/src/scheduler/src/client/Client.cc +++ b/src/scheduler/src/client/Client.cc @@ -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 :"); + 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; } /* -------------------------------------------------------------------------- */ diff --git a/src/sunstone/models/SunstoneServer.rb b/src/sunstone/models/SunstoneServer.rb index 02283816a4..297bd58425 100644 --- a/src/sunstone/models/SunstoneServer.rb +++ b/src/sunstone/models/SunstoneServer.rb @@ -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] diff --git a/src/tm_mad/lvm/tm_context.sh b/src/tm_mad/lvm/tm_context.sh index 6d6aea06ab..74061b6637 100755 --- a/src/tm_mad/lvm/tm_context.sh +++ b/src/tm_mad/lvm/tm_context.sh @@ -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 diff --git a/src/tm_mad/lvm/tm_lvmrc b/src/tm_mad/lvm/tm_lvmrc index b3054c23e7..e01da3a0d5 100644 --- a/src/tm_mad/lvm/tm_lvmrc +++ b/src/tm_mad/lvm/tm_lvmrc @@ -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 # diff --git a/src/tm_mad/shared/tm_context.sh b/src/tm_mad/shared/tm_context.sh index db05f2dda0..fef2593fbe 100755 --- a/src/tm_mad/shared/tm_context.sh +++ b/src/tm_mad/shared/tm_context.sh @@ -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 diff --git a/src/tm_mad/shared/tm_sharedrc b/src/tm_mad/shared/tm_sharedrc index 52c0e6dab0..e1a1b9b0db 100644 --- a/src/tm_mad/shared/tm_sharedrc +++ b/src/tm_mad/shared/tm_sharedrc @@ -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 diff --git a/src/tm_mad/ssh/tm_context.sh b/src/tm_mad/ssh/tm_context.sh index d5c16f6721..772b549e7f 100755 --- a/src/tm_mad/ssh/tm_context.sh +++ b/src/tm_mad/ssh/tm_context.sh @@ -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 diff --git a/src/tm_mad/ssh/tm_sshrc b/src/tm_mad/ssh/tm_sshrc index 52c0e6dab0..e1a1b9b0db 100644 --- a/src/tm_mad/ssh/tm_sshrc +++ b/src/tm_mad/ssh/tm_sshrc @@ -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