File: service_mapper.rb

package info (click to toggle)
ruby-fog-aws 3.3.0-5
  • links: PTS, VCS
  • area: main
  • in suites: buster
  • size: 7,816 kB
  • sloc: ruby: 68,587; makefile: 6
file content (129 lines) | stat: -rw-r--r-- 4,725 bytes parent folder | download | duplicates (4)
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
127
128
129
module Fog
  module AWS
    # @api private
    #
    # This is a temporary lookup helper for extracting into external module.
    #
    # Cleaner provider/service registration will replace this code.
    #
    class ServiceMapper
      def self.class_for(key)
        case key
          when :auto_scaling
            Fog::AWS::AutoScaling
          when :beanstalk
            Fog::AWS::ElasticBeanstalk
          when :cdn
            Fog::AWS::CDN
          when :cloud_formation
            Fog::AWS::CloudFormation
          when :cloud_watch
            Fog::AWS::CloudWatch
          when :compute
            Fog::AWS::Compute
          when :data_pipeline
            Fog::AWS::DataPipeline
          when :ddb, :dynamodb
            Fog::AWS::DynamoDB
          when :dns
            Fog::AWS::DNS
          when :elasticache
            Fog::AWS::Elasticache
          when :elb
            Fog::AWS::ELB
          when :emr
            Fog::AWS::EMR
          when :glacier
            Fog::AWS::Glacier
          when :iam
            Fog::AWS::IAM
          when :redshift
            Fog::AWS::Redshift
          when :sdb, :simpledb
            Fog::AWS::SimpleDB
          when :ses
            Fog::AWS::SES
          when :sqs
            Fog::AWS::SQS
          when :eu_storage, :storage
            Fog::AWS::Storage
          when :rds
            Fog::AWS::RDS
          when :sns
            Fog::AWS::SNS
          when :sts
            Fog::AWS::STS
          else
            # @todo Replace most instances of ArgumentError with NotImplementedError
            # @todo For a list of widely supported Exceptions, see:
            # => http://www.zenspider.com/Languages/Ruby/QuickRef.html#35
            raise ArgumentError, "Unsupported #{self} service: #{key}"
        end
      end

      def self.[](service)
        @@connections ||= Hash.new do |hash, key|
          hash[key] = case key
                        when :auto_scaling
                          Fog::AWS::AutoScaling.new
                        when :beanstalk
                          Fog::AWS::ElasticBeanstalk.new
                        when :cdn
                          Fog::Logger.warning("AWS[:cdn] is not recommended, use CDN[:aws] for portability")
                          Fog::CDN.new(:provider => 'AWS')
                        when :cloud_formation
                          Fog::AWS::CloudFormation.new
                        when :cloud_watch
                          Fog::AWS::CloudWatch.new
                        when :compute
                          Fog::Logger.warning("AWS[:compute] is not recommended, use Compute[:aws] for portability")
                          Fog::Compute.new(:provider => 'AWS')
                        when :data_pipeline
                          Fog::AWS::DataPipeline.new
                        when :ddb, :dynamodb
                          Fog::AWS::DynamoDB.new
                        when :dns
                          Fog::Logger.warning("AWS[:dns] is not recommended, use DNS[:aws] for portability")
                          Fog::DNS.new(:provider => 'AWS')
                        when :elasticache
                          Fog::AWS::Elasticache.new
                        when :elb
                          Fog::AWS::ELB.new
                        when :emr
                          Fog::AWS::EMR.new
                        when :glacier
                          Fog::AWS::Glacier.new
                        when :iam
                          Fog::AWS::IAM.new
                        when :redshift
                          Fog::AWS::Redshift.new
                        when :rds
                          Fog::AWS::RDS.new
                        when :eu_storage
                          Fog::Storage.new(:provider => 'AWS', :region => 'eu-west-1')
                        when :sdb, :simpledb
                          Fog::AWS::SimpleDB.new
                        when :ses
                          Fog::AWS::SES.new
                        when :sqs
                          Fog::AWS::SQS.new
                        when :storage
                          Fog::Logger.warning("AWS[:storage] is not recommended, use Storage[:aws] for portability")
                          Fog::Storage.new(:provider => 'AWS')
                        when :sns
                          Fog::AWS::SNS.new
                        when :sts
                          Fog::AWS::STS.new
                        else
                          raise ArgumentError, "Unrecognized service: #{key.inspect}"
                      end
        end
        @@connections[service]
      end

      def self.services
        Fog::AWS.services
      end
    end
  end
end