1
0
mirror of https://github.com/OpenNebula/one.git synced 2025-03-13 12:58:17 +03:00

Merge pull request #351 from Semedi/master

F #5136: ec2 migrator done, new oca utils file
This commit is contained in:
Javi Fontan 2017-06-21 16:21:13 +02:00 committed by GitHub
commit a4023589e6
5 changed files with 89 additions and 17 deletions

View File

@ -1354,7 +1354,8 @@ RUBY_OPENNEBULA_LIB_FILES="src/oca/ruby/opennebula/acl_pool.rb \
src/oca/ruby/opennebula/marketplace_pool.rb \
src/oca/ruby/opennebula/marketplace.rb \
src/oca/ruby/opennebula/marketplaceapp_pool.rb \
src/oca/ruby/opennebula/marketplaceapp.rb"
src/oca/ruby/opennebula/marketplaceapp.rb \
src/oca/ruby/opennebula/utils.rb"
#-------------------------------------------------------------------------------
# Common Cloud Files

View File

@ -492,20 +492,6 @@ EOT
end
# receive a object key => value format
# returns hashed values
def encrypt(opts, token)
res = {}
opts.each do |key, value|
cipher = OpenSSL::Cipher::AES.new(256,:CBC)
cipher.encrypt.key = token[0..31]
encrypted = cipher.update(value) + cipher.final
res[key] = Base64::encode64(encrypted)
end
return res
end
def list_pool(options, top=false, filter_flag=nil)
if options[:describe]
table = format_pool(options)

View File

@ -27,6 +27,7 @@ require 'pp'
require 'opennebula/xml_utils'
require 'opennebula/client'
require 'opennebula/error'
require 'opennebula/utils'
require 'opennebula/virtual_machine'
require 'opennebula/virtual_machine_pool'
require 'opennebula/virtual_network'

View File

@ -0,0 +1,35 @@
# -------------------------------------------------------------------------- #
# Copyright 2002-2017, OpenNebula Project, OpenNebula Systems #
# #
# 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. #
#--------------------------------------------------------------------------- #
module OpenNebula
# we use this file to extend opennebula oca functionalities
# It contains generic methods that can be used in oca context
# to help other components
# receive a object key => value format
# returns hashed values
def self.encrypt(opts, token)
res = {}
opts.each do |key, value|
cipher = OpenSSL::Cipher::AES.new(256,:CBC)
cipher.encrypt.key = token[0..31]
encrypted = cipher.update(value) + cipher.final
res[key] = Base64::encode64(encrypted).gsub("\n", "")
end
return res
end
end

View File

@ -19,7 +19,7 @@ require 'set'
require 'base64'
require 'zlib'
require 'pathname'
require 'yaml'
require 'opennebula'
$: << File.dirname(__FILE__)
@ -38,6 +38,8 @@ module Migrator
def up
init_log_time()
feature_5136()
feature_4901()
feature_5005()
@ -47,7 +49,6 @@ module Migrator
bug_3705()
feature_4809()
log_time()
return true
@ -64,6 +65,54 @@ module Migrator
end
end
############################################################################
# Feature 5136. Improve ec2 keys_ids_security
#
############################################################################
def feature_5136
ec2_driver_conf = "#{ETC_LOCATION}/ec2_driver.conf"
token = File.read(VAR_LOCATION+'/.one/one_key')
opts = {}
begin
ec2_conf = YAML::load(File.read(ec2_driver_conf))
rescue Exception => e
str_error="ec2_driver.conf invalid syntax!"
raise str_error
end
regions = ec2_conf["regions"]
@db.run "ALTER TABLE host_pool RENAME TO old_host_pool;"
create_table(:host_pool)
@db.transaction do
@db.fetch("SELECT * FROM old_host_pool") do |row|
doc = Nokogiri::XML(row[:body], nil, NOKOGIRI_ENCODING) { |c|
c.default_xml.noblanks
}
template = doc.root.at_xpath("TEMPLATE")
if xpath(doc, "TEMPLATE/HYPERVISOR").to_s == "ec2"
host_name = xpath(doc, "NAME").to_s
host_info = ( regions[host_name].nil? ? regions["default"] : regions[host_name] )
opts["EC2_ACCESS"]=host_info["access_key_id"]
opts["EC2_SECRET"]=host_info["secret_access_key"]
OpenNebula.encrypt(opts, token).each { |k, v|
template.add_child(doc.create_element k, v)
}
end
row[:body] = doc.root.to_s
@db[:host_pool].insert(row)
end
end
@db.run "DROP TABLE old_host_pool;"
end
############################################################################
# Feature 4921. Adds TOTAL_CPU and TOTAL_MEM to HOST/HOST_SHARE to compute
# MAX_CPU and MAX_MEM when RESERVED_CPU/MEM is updated