1
0
Fork 0
mirror of https://github.com/fog/fog.git synced 2022-11-09 13:51:43 -05:00
fog--fog/lib/fog/cloudstack/core.rb
Paul Thornthwaite 15ef5365e5 Require json or xml in provider cores
Since `fog-json` was extracted from `fog` it means if you rely on:

    require "fog/provider/compute"

`Fog::JSON` was not defined although it was supposed to be a supported
use case.

This adds the requires for JSON or XML based APIs based on a quick scan
of each provider to declare the required part.

AWS seems to be relying on both. Which is nice.

Providers relying on native code dependencies
2014-02-19 14:58:00 +00:00

41 lines
865 B
Ruby

require 'fog/core'
require 'fog/json'
require 'uri'
module Fog
module Cloudstack
extend Fog::Provider
service(:compute, 'Compute')
@@digest = OpenSSL::Digest.new('sha1')
def self.escape(string)
string = CGI::escape(string)
string = string.gsub("+","%20")
string
end
def self.signed_params(key,params)
query = params.map{|k,v| [k.to_s, v]}.sort.collect{|c| "#{c[0]}=#{escape(c[1].to_s)}"}.join('&').downcase
signed_string = Base64.encode64(OpenSSL::HMAC.digest(@@digest,key,query)).strip
signed_string
end
def self.uuid
[8,4,4,4,12].map{|i| Fog::Mock.random_hex(i)}.join("-")
end
def self.ip_address
4.times.map{ Fog::Mock.random_numbers(3) }.join(".")
end
def self.mac_address
6.times.map{ Fog::Mock.random_numbers(2) }.join(":")
end
end
end