# File lib/deltacloud/drivers/eucalyptus/eucalyptus_driver.rb, line 65 def self.instance_state_machine Ec2::Ec2Driver.instance_state_machine end
override EC2 implementation; Eucalyptus implements the older definition of EC2 security group; docs.amazonwebservices.com/AWSEC2/2009-07-15/APIReference/index.html?ApiReference-query-AuthorizeSecurityGroupIngress.html if the rule specifies a source group, port&protocol will be ignored. And source group and cidr range can't be mixed in a request
# File lib/deltacloud/drivers/eucalyptus/eucalyptus_driver.rb, line 149 def create_firewall_rule(credentials, opts={}) # only either source groups or cidr IP range can be given, not both; if !(opts['groups'].nil?) && opts['groups'].length>0 ec2 = new_client(credentials) opts['groups'].each do |group,owner| safely do ec2.authorize_security_group_named_ingress(opts['id'], owner, group) end end elsif !(opts['addresses'].nil?) && opts['addresses'].length>0 ec2 = new_client(credentials) opts['addresses'].each do |ip| ec2.authorize_security_group_IP_ingress(opts['id'], opts['port_from'], opts['port_to'], opts['protocol'], ip) end end end
# File lib/deltacloud/drivers/eucalyptus/eucalyptus_driver.rb, line 101 def create_load_balancer(credentials, opts={}) raise Deltacloud::BackendError.new(500, "Loadbalancer", "Loadbalancer not supported in Eucalyptus", "") end
# File lib/deltacloud/drivers/eucalyptus/eucalyptus_driver.rb, line 73 def default_image_owner "self" end
# File lib/deltacloud/drivers/eucalyptus/eucalyptus_driver.rb, line 77 def default_image_type nil end
# File lib/deltacloud/drivers/eucalyptus/eucalyptus_driver.rb, line 166 def delete_firewall_rule(credentials, opts={}) ec2 = new_client(credentials) firewall = opts[:firewall] protocol, from_port, to_port, addresses, groups = firewall_rule_params(opts[:rule_id]) unless groups.nil? groups.each_index do |i| ec2.revoke_security_group_named_ingress(firewall, groups[i]['owner'], groups[i]['group_name']) end end unless addresses.nil? addresses.each do |ip| ec2.revoke_security_group_IP_ingress(firewall, from_port, to_port, protocol, ip ) end end end
# File lib/deltacloud/drivers/eucalyptus/eucalyptus_driver.rb, line 106 def destroy_load_balancer(credentials, id) raise Deltacloud::BackendError.new(500, "Loadbalancer", "Loadbalancer not supported in Eucalyptus", "") end
# File lib/deltacloud/drivers/eucalyptus/eucalyptus_driver.rb, line 201 def endpoint_for_service(service) service = service.to_s endpoint = api_provider if endpoint && endpoint.include?(service) # example endpoint: 'ec2=192.168.1.1; s3=192.168.1.2' addr = Hash[endpoint.split(";").map { |svc| svc.strip.split("=") }][service] host = addr.split(':')[0] port = addr.split(':')[1] || DEFAULT_PORT stub = SERVICE_STUBS[service] { :endpoint_url => "http://#{host}:#{port}#{stub}", :connection_mode => :per_thread } else #EC2_URL/S3_URL env variable will be used by AWS { :connection_mode => :per_thread } end end
# File lib/deltacloud/drivers/eucalyptus/eucalyptus_driver.rb, line 69 def instance_state_machine self.class.instance_state_machine end
# File lib/deltacloud/drivers/eucalyptus/eucalyptus_driver.rb, line 111 def lb_register_instance(credentials, opts={}) raise Deltacloud::BackendError.new(500, "Loadbalancer", "Loadbalancer not supported in Eucalyptus", "") end
# File lib/deltacloud/drivers/eucalyptus/eucalyptus_driver.rb, line 116 def lb_unregister_instance(credentials, opts={}) raise Deltacloud::BackendError.new(500, "Loadbalancer", "Loadbalancer not supported in Eucalyptus", "") end
because load balancer is not on the supported_collections, the following methods shouldn't be called.
# File lib/deltacloud/drivers/eucalyptus/eucalyptus_driver.rb, line 91 def load_balancer(credentials, opts={}) raise Deltacloud::BackendError.new(500, "Loadbalancer", "Loadbalancer not supported in Eucalyptus", "") end
# File lib/deltacloud/drivers/eucalyptus/eucalyptus_driver.rb, line 96 def load_balancers(credentials, opts=nil) raise Deltacloud::BackendError.new(500, "Loadbalancer", "Loadbalancer not supported in Eucalyptus", "") end
# File lib/deltacloud/drivers/eucalyptus/eucalyptus_driver.rb, line 182 def new_client(credentials, type = :ec2) klass = case type when :ec2 then Aws::Ec2 when :s3 then Aws::S3 when :elb then raise Deltacloud::BackendError.new(500, "Loadbalancer", "Loadbalancer not supported in Eucalyptus", "") end klass.new(credentials.user, credentials.password, endpoint_for_service(type)) end
override ec2 driver realms - euca API doesn't support vpc/subnet concepts docs.aws.amazon.com/AWSEC2/2009-04-04/DeveloperGuide/
# File lib/deltacloud/drivers/eucalyptus/eucalyptus_driver.rb, line 123 def realms(credentials, opts={}) ec2 = new_client(credentials) realms = [] safely do if opts[:id] and !opts[:id].empty? begin ec2.describe_availability_zones([opts[:id]]).collect do |realm| realms << convert_realm(realm) unless realm.empty? end rescue => e raise e unless e.message =~ /Invalid availability zone/ realms = [] end else realms = ec2.describe_availability_zones.collect do |realm| convert_realm(realm) unless realm.empty? end end end realms end
# File lib/deltacloud/drivers/eucalyptus/eucalyptus_driver.rb, line 81 def tag_instance(credentials, instance, name) # dummy end
# File lib/deltacloud/drivers/eucalyptus/eucalyptus_driver.rb, line 85 def untag_instance(credentials, instance_id) # dummy end