1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126
|
module Aws
require 'xmlsimple'
class Iam < AwsBase
include AwsBaseInterface
API_VERSION = "2010-05-08"
DEFAULT_HOST = "iam.amazonaws.com"
DEFAULT_PATH = '/'
DEFAULT_PROTOCOL = 'https'
DEFAULT_PORT = 443
def self.connection_name
:iam_connection
end
@@bench = AwsBenchmarkingBlock.new
def self.bench
@@bench
end
def self.bench_xml
@@bench.xml
end
def self.bench_ec2
@@bench.service
end
# Current API version (sometimes we have to check it outside the GEM).
@@api = ENV['IAM_API_VERSION'] || API_VERSION
def self.api
@@api
end
def initialize(aws_access_key_id=nil, aws_secret_access_key=nil, params={})
init({:name => 'IAM',
:default_host => ENV['IAM_URL'] ? URI.parse(ENV['IAM_URL']).host : DEFAULT_HOST,
:default_port => ENV['IAM_URL'] ? URI.parse(ENV['IAM_URL']).port : DEFAULT_PORT,
:default_service => ENV['IAM_URL'] ? URI.parse(ENV['IAM_URL']).path : DEFAULT_PATH,
:default_protocol => ENV['IAM_URL'] ? URI.parse(ENV['IAM_URL']).scheme : DEFAULT_PROTOCOL,
:api_version => API_VERSION},
aws_access_key_id || ENV['AWS_ACCESS_KEY_ID'],
aws_secret_access_key|| ENV['AWS_SECRET_ACCESS_KEY'],
params)
end
def do_request(action, params, options={})
link = generate_request(action, params)
p link[:request]
resp = request_info_xml_simple(:iam_connection, @params, link, @logger,
:group_tags =>{"LoadBalancersDescriptions"=>"LoadBalancersDescription",
"DBParameterGroups" =>"DBParameterGroup",
"DBSecurityGroups" =>"DBSecurityGroup",
"EC2SecurityGroups" =>"EC2SecurityGroup",
"IPRanges" =>"IPRange"},
:force_array =>["DBInstances",
"DBParameterGroups",
"DBSecurityGroups",
"EC2SecurityGroups",
"IPRanges"],
:pull_out_array =>options[:pull_out_array],
:pull_out_single=>options[:pull_out_single],
:wrapper =>options[:wrapper])
end
#-----------------------------------------------------------------
# REQUESTS
#-----------------------------------------------------------------
# options:
# :marker => value received from previous response if IsTruncated = true
# :max_items => number of items you want returned
# :path_previx => for filtering results, default is /
def list_server_certificates(options={})
@logger.info("Listing server certificates...")
params = {}
params['Marker'] = options[:marker] if options[:marker]
params['MaxItems'] = options[:max_items] if options[:max_items]
params['PathPrefix'] = options[:path_prefix] if options[:path_prefix]
resp = do_request("ListServerCertificates", params, :pull_out_array=>[:list_server_certificates_result, :server_certificate_metadata_list])
rescue Exception
on_exception
end
#
# name: name of certificate
# public_key: public key certificate in PEM-encoded format
# private_key: private key in PEM-encoded format
# options:
# :path => specify a path you want it stored in
# :certificate_chain => contents of certificate chain
def upload_server_certificate(name, public_key, private_key, options={})
params = {}
params['ServerCertificateName'] = name
params['PrivateKey'] = private_key
params['CertificateBody'] = public_key
params['CertificateChain'] = options[:certificate_chain] if options[:certificate_chain]
params['Path'] = options[:path] if options[:path]
p params
resp = do_request("UploadServerCertificate", params, :pull_out_array=>[:list_server_certificates_result, :server_certificate_metadata_list])
rescue Exception
on_exception
end
end
end
|