cloud-mu 2.0.0.pre.alpha9 → 2.0.0.pre.beta1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (61) hide show
  1. checksums.yaml +4 -4
  2. data/Berksfile.lock +1 -1
  3. data/README.md +2 -0
  4. data/bin/mu-configure +2 -58
  5. data/bin/mu-gen-docs +29 -4
  6. data/bin/mu-load-config.rb +0 -1
  7. data/bin/mu-user-manage +4 -0
  8. data/cloud-mu.gemspec +2 -2
  9. data/cookbooks/mu-master/recipes/default.rb +3 -4
  10. data/cookbooks/mu-master/recipes/init.rb +3 -3
  11. data/cookbooks/mu-tools/files/default/Mu_CA.pem +15 -15
  12. data/cookbooks/mu-tools/libraries/helper.rb +1 -1
  13. data/cookbooks/mu-tools/recipes/eks.rb +3 -3
  14. data/cookbooks/mu-tools/recipes/set_local_fw.rb +1 -1
  15. data/cookbooks/mu-utility/recipes/remi.rb +1 -1
  16. data/cookbooks/nagios/libraries/base.rb +4 -4
  17. data/cookbooks/nagios/libraries/contact.rb +1 -1
  18. data/cookbooks/nagios/libraries/contactgroup.rb +1 -1
  19. data/cookbooks/nagios/libraries/host.rb +2 -2
  20. data/cookbooks/nagios/libraries/hostdependency.rb +3 -3
  21. data/cookbooks/nagios/libraries/hostescalation.rb +3 -3
  22. data/cookbooks/nagios/libraries/hostgroup.rb +2 -2
  23. data/cookbooks/nagios/libraries/nagios.rb +5 -5
  24. data/cookbooks/nagios/libraries/service.rb +3 -3
  25. data/cookbooks/nagios/libraries/servicedependency.rb +2 -2
  26. data/cookbooks/nagios/libraries/serviceescalation.rb +2 -2
  27. data/cookbooks/nagios/libraries/servicegroup.rb +2 -2
  28. data/cookbooks/nagios/libraries/timeperiod.rb +1 -1
  29. data/install/installer +1 -1
  30. data/modules/mu/cleanup.rb +1 -1
  31. data/modules/mu/cloud.rb +43 -1
  32. data/modules/mu/clouds/aws.rb +55 -35
  33. data/modules/mu/clouds/aws/bucket.rb +287 -0
  34. data/modules/mu/clouds/aws/database.rb +65 -11
  35. data/modules/mu/clouds/aws/endpoint.rb +592 -0
  36. data/modules/mu/clouds/aws/firewall_rule.rb +4 -0
  37. data/modules/mu/clouds/aws/function.rb +138 -93
  38. data/modules/mu/clouds/aws/nosqldb.rb +387 -0
  39. data/modules/mu/clouds/aws/role.rb +1 -1
  40. data/modules/mu/clouds/aws/server.rb +5 -5
  41. data/modules/mu/clouds/aws/server_pool.rb +60 -3
  42. data/modules/mu/clouds/azure.rb +0 -1
  43. data/modules/mu/clouds/google.rb +34 -12
  44. data/modules/mu/clouds/google/bucket.rb +179 -0
  45. data/modules/mu/config.rb +1 -1
  46. data/modules/mu/config/bucket.rb +69 -0
  47. data/modules/mu/config/bucket.yml +10 -0
  48. data/modules/mu/config/database.rb +1 -1
  49. data/modules/mu/config/endpoint.rb +71 -0
  50. data/modules/mu/config/function.rb +6 -0
  51. data/modules/mu/config/nosqldb.rb +49 -0
  52. data/modules/mu/config/nosqldb.yml +44 -0
  53. data/modules/mu/config/notifier.yml +2 -2
  54. data/modules/mu/config/vpc.rb +0 -1
  55. data/modules/mu/defaults/amazon_images.yaml +32 -30
  56. data/modules/mu/groomers/chef.rb +1 -1
  57. data/modules/mu/kittens.rb +2430 -1511
  58. data/modules/mu/master/ldap.rb +1 -1
  59. data/modules/tests/super_complex_bok.yml +7 -0
  60. data/modules/tests/super_simple_bok.yml +7 -0
  61. metadata +11 -2
@@ -116,7 +116,7 @@ class Nagios
116
116
  @escalation_period = nil if @escalation_period == obj
117
117
  end
118
118
  end
119
- # rubocop:enable MethodLength
119
+
120
120
 
121
121
  def to_s
122
122
  host_description
@@ -160,7 +160,7 @@ class Nagios
160
160
  'register' => 'register',
161
161
  }
162
162
  end
163
- # rubocop:enable MethodLength
163
+
164
164
 
165
165
  def merge_members(obj)
166
166
  obj.contacts.each { |m| push(m) }
@@ -170,4 +170,4 @@ class Nagios
170
170
  end
171
171
  end
172
172
  end
173
- # rubocop:enable ClassLength
173
+
@@ -83,7 +83,7 @@ class Nagios
83
83
  end
84
84
  end
85
85
  end
86
- # rubocop:enable MethodLength
86
+
87
87
 
88
88
  def self.create(name)
89
89
  Nagios.instance.find(Nagios::Hostgroup.new(name))
@@ -109,7 +109,7 @@ class Nagios
109
109
  'register' => 'register',
110
110
  }
111
111
  end
112
- # rubocop:enable MethodLength
112
+
113
113
 
114
114
  def merge_members(obj)
115
115
  obj.members.each { |m| push(m) }
@@ -64,7 +64,7 @@ class Nagios
64
64
  @host_name_attribute = 'hostname'
65
65
  @normalize_hostname = false
66
66
  end
67
- # rubocop:enable MethodLength
67
+
68
68
 
69
69
  def commands
70
70
  Hash[@commands.sort]
@@ -108,7 +108,7 @@ class Nagios
108
108
  @resources.delete(key)
109
109
  end
110
110
  end
111
- # rubocop:enable MethodLength
111
+
112
112
 
113
113
  def find(obj)
114
114
  case obj
@@ -136,7 +136,7 @@ class Nagios
136
136
  find_object(obj, @resources)
137
137
  end
138
138
  end
139
- # rubocop:enable MethodLength
139
+
140
140
 
141
141
  def hosts
142
142
  Hash[@hosts.sort]
@@ -189,7 +189,7 @@ class Nagios
189
189
  raise
190
190
  end
191
191
  end
192
- # rubocop:enable MethodLength
192
+
193
193
 
194
194
  def timeperiods
195
195
  Hash[@timeperiods.sort]
@@ -273,7 +273,7 @@ class Nagios
273
273
  host.push(hg)
274
274
  end
275
275
  end
276
- # rubocop:enable MethodLength
276
+
277
277
 
278
278
  def push_object(obj)
279
279
  object = find(obj.class.new(obj.to_s))
@@ -83,7 +83,7 @@ class Nagios
83
83
  @custom_options = {}
84
84
  super()
85
85
  end
86
- # rubocop:enable MethodLength
86
+
87
87
 
88
88
  def check_command
89
89
  if blank?(@arguments)
@@ -236,7 +236,7 @@ class Nagios
236
236
  end
237
237
  end
238
238
  end
239
- # rubocop:enable MethodLength
239
+
240
240
 
241
241
  # servicegroups
242
242
  # This directive is used to define the description of the service, which may contain spaces,
@@ -441,7 +441,7 @@ class Nagios
441
441
  'register' => 'register',
442
442
  }
443
443
  end
444
- # rubocop:enable MethodLength
444
+
445
445
 
446
446
  def merge_members(obj)
447
447
  obj.contacts.each { |m| push(m) }
@@ -145,7 +145,7 @@ class Nagios
145
145
  end
146
146
  end
147
147
  end
148
- # rubocop:enable MethodLength
148
+
149
149
 
150
150
  def push_dependency(obj)
151
151
  case obj
@@ -201,7 +201,7 @@ class Nagios
201
201
  'notification_failure_criteria' => 'notification_failure_criteria',
202
202
  }
203
203
  end
204
- # rubocop:enable MethodLength
204
+
205
205
 
206
206
  def merge_members(obj)
207
207
  obj.host_name.each { |m| push(m) }
@@ -135,7 +135,7 @@ class Nagios
135
135
  @escalation_period = nil if @escalation_period == obj
136
136
  end
137
137
  end
138
- # rubocop:enable MethodLength
138
+
139
139
 
140
140
  def to_s
141
141
  service_description
@@ -182,7 +182,7 @@ class Nagios
182
182
  'register' => 'register',
183
183
  }
184
184
  end
185
- # rubocop:enable MethodLength
185
+
186
186
 
187
187
  def merge_members(obj)
188
188
  obj.contacts.each { |m| push(m) }
@@ -80,7 +80,7 @@ class Nagios
80
80
  end
81
81
  end
82
82
  end
83
- # rubocop:enable MethodLength
83
+
84
84
 
85
85
  def self.create(name)
86
86
  Nagios.instance.find(Nagios::Servicegroup.new(name))
@@ -134,7 +134,7 @@ class Nagios
134
134
  end
135
135
  convert_hostgroup_hash(hostgroup_hash)
136
136
  end
137
- # rubocop:enable MethodLength
137
+
138
138
 
139
139
  def merge_members(obj)
140
140
  obj.members.each { |m| push(m) }
@@ -114,7 +114,7 @@ class Nagios
114
114
  end
115
115
  end
116
116
  end
117
- # rubocop:enable MethodLength
117
+
118
118
 
119
119
  def to_s
120
120
  timeperiod_name
data/install/installer CHANGED
@@ -4,7 +4,7 @@ BOLD=`tput bold`
4
4
  NORM=`tput sgr0`
5
5
  CHEF_CLIENT_VERSION="14.4.56"
6
6
  if [ "$MU_BRANCH" == "" ];then
7
- MU_BRANCH="Azure_you_want_azure" # GIT HOOK EDITABLE DO NOT TOUCH
7
+ MU_BRANCH="master"
8
8
  mydir="`dirname $0`"
9
9
  cd $mydir
10
10
  if git rev-parse --abbrev-ref HEAD > /dev/null 2>&1;then
@@ -61,7 +61,7 @@ module MU
61
61
  end
62
62
 
63
63
 
64
- types_in_order = ["Collection", "Function", "ServerPool", "ContainerCluster", "SearchDomain", "Server", "MsgQueue", "Database", "CacheCluster", "StoragePool", "LoadBalancer", "FirewallRule", "Alarm", "Notifier", "Log", "VPC", "DNSZone", "Collection", "Habitat"]
64
+ types_in_order = ["Collection", "Endpoint", "Function", "ServerPool", "ContainerCluster", "SearchDomain", "Server", "MsgQueue", "Database", "CacheCluster", "StoragePool", "LoadBalancer", "NoSQLDB", "FirewallRule", "Alarm", "Notifier", "Log", "VPC", "Role", "Group", "User", "Bucket", "DNSZone", "Collection", "Habitat"]
65
65
 
66
66
  # Load up our deployment metadata
67
67
  if !mommacat.nil?
data/modules/mu/cloud.rb CHANGED
@@ -116,6 +116,15 @@ module MU
116
116
  # Stub base class; real implementations generated at runtime
117
117
  class Role;
118
118
  end
119
+ # Stub base class; real implementations generated at runtime
120
+ class Endpoint;
121
+ end
122
+ # Stub base class; real implementations generated at runtime
123
+ class Bucket;
124
+ end
125
+ # Stub base class; real implementations generated at runtime
126
+ class NoSQLDB;
127
+ end
119
128
 
120
129
  # The types of cloud resources we can create, as class objects. Include
121
130
  # methods a class implementing this resource type must support to be
@@ -273,7 +282,18 @@ module MU
273
282
  :deps_wait_on_my_creation => true,
274
283
  :waits_on_parent_completion => false,
275
284
  :class => generic_class_methods,
276
- :instance => generic_instance_methods
285
+ :instance => generic_instance_methods + [:groom]
286
+ },
287
+ :Endpoint => {
288
+ :has_multiples => false,
289
+ :can_live_in_vpc => true,
290
+ :cfg_name => "endpoint",
291
+ :cfg_plural => "endpoints",
292
+ :interface => self.const_get("Endpoint"),
293
+ :deps_wait_on_my_creation => true,
294
+ :waits_on_parent_completion => false,
295
+ :class => generic_class_methods,
296
+ :instance => generic_instance_methods + [:groom]
277
297
  },
278
298
  :ContainerCluster => {
279
299
  :has_multiples => false,
@@ -362,6 +382,28 @@ module MU
362
382
  :waits_on_parent_completion => true,
363
383
  :class => generic_class_methods,
364
384
  :instance => generic_instance_methods + [:groom]
385
+ },
386
+ :Bucket => {
387
+ :has_multiples => false,
388
+ :can_live_in_vpc => false,
389
+ :cfg_name => "bucket",
390
+ :cfg_plural => "buckets",
391
+ :interface => self.const_get("Bucket"),
392
+ :deps_wait_on_my_creation => true,
393
+ :waits_on_parent_completion => true,
394
+ :class => generic_class_methods,
395
+ :instance => generic_instance_methods + [:groom]
396
+ },
397
+ :NoSQLDB => {
398
+ :has_multiples => false,
399
+ :can_live_in_vpc => false,
400
+ :cfg_name => "nosqldb",
401
+ :cfg_plural => "nosqldbs",
402
+ :interface => self.const_get("NoSQLDB"),
403
+ :deps_wait_on_my_creation => true,
404
+ :waits_on_parent_completion => true,
405
+ :class => generic_class_methods,
406
+ :instance => generic_instance_methods + [:groom]
365
407
  }
366
408
  }.freeze
367
409
 
@@ -151,6 +151,9 @@ module MU
151
151
  return nil
152
152
  end
153
153
 
154
+ # Given an AWS region, check the API to make sure it's a valid one
155
+ # @param r [String]
156
+ # @return [String]
154
157
  def self.validate_region(r)
155
158
  MU::Cloud::AWS.ec2(region: r).describe_availability_zones.availability_zones.first.region_name
156
159
  end
@@ -406,12 +409,20 @@ module MU
406
409
  $MU_CFG['aws'].keys
407
410
  end
408
411
 
412
+ # Resolve the administrative S3 bucket for a given credential set, or
413
+ # return a default.
414
+ # @param credentials [String]
415
+ # @return [String]
409
416
  def self.adminBucketName(credentials = nil)
410
417
  #XXX find a default if this particular account doesn't have a log_bucket_name configured
411
418
  cfg = credConfig(credentials)
412
419
  cfg['log_bucket_name']
413
420
  end
414
421
 
422
+ # Resolve the administrative S3 bucket for a given credential set, or
423
+ # return a default.
424
+ # @param credentials [String]
425
+ # @return [String]
415
426
  def self.adminBucketUrl(credentials = nil)
416
427
  "s3://"+adminBucketName+"/"
417
428
  end
@@ -716,13 +727,13 @@ module MU
716
727
  def self.acm(region: MU.curRegion, credentials: nil)
717
728
  region ||= myRegion
718
729
  @@acm_api[credentials] ||= {}
719
- @@acm_api[credentials][region] ||= MU::Cloud::AWS::Endpoint.new(api: "ACM", region: region, credentials: credentials)
730
+ @@acm_api[credentials][region] ||= MU::Cloud::AWS::AmazonEndpoint.new(api: "ACM", region: region, credentials: credentials)
720
731
  @@acm_api[credentials][region]
721
732
  end
722
733
 
723
734
  # Amazon's IAM API
724
735
  def self.iam(credentials: nil)
725
- @@iam_api[credentials] ||= MU::Cloud::AWS::Endpoint.new(api: "IAM", credentials: credentials)
736
+ @@iam_api[credentials] ||= MU::Cloud::AWS::AmazonEndpoint.new(api: "IAM", credentials: credentials)
726
737
  @@iam_api[credentials]
727
738
  end
728
739
 
@@ -730,7 +741,7 @@ module MU
730
741
  def self.ec2(region: MU.curRegion, credentials: nil)
731
742
  region ||= myRegion
732
743
  @@ec2_api[credentials] ||= {}
733
- @@ec2_api[credentials][region] ||= MU::Cloud::AWS::Endpoint.new(api: "EC2", region: region, credentials: credentials)
744
+ @@ec2_api[credentials][region] ||= MU::Cloud::AWS::AmazonEndpoint.new(api: "EC2", region: region, credentials: credentials)
734
745
  @@ec2_api[credentials][region]
735
746
  end
736
747
 
@@ -738,7 +749,7 @@ module MU
738
749
  def self.autoscale(region: MU.curRegion, credentials: nil)
739
750
  region ||= myRegion
740
751
  @@autoscale_api[credentials] ||= {}
741
- @@autoscale_api[credentials][region] ||= MU::Cloud::AWS::Endpoint.new(api: "AutoScaling", region: region, credentials: credentials)
752
+ @@autoscale_api[credentials][region] ||= MU::Cloud::AWS::AmazonEndpoint.new(api: "AutoScaling", region: region, credentials: credentials)
742
753
  @@autoscale_api[credentials][region]
743
754
  end
744
755
 
@@ -746,7 +757,7 @@ module MU
746
757
  def self.elb(region: MU.curRegion, credentials: nil)
747
758
  region ||= myRegion
748
759
  @@elb_api[credentials] ||= {}
749
- @@elb_api[credentials][region] ||= MU::Cloud::AWS::Endpoint.new(api: "ElasticLoadBalancing", region: region, credentials: credentials)
760
+ @@elb_api[credentials][region] ||= MU::Cloud::AWS::AmazonEndpoint.new(api: "ElasticLoadBalancing", region: region, credentials: credentials)
750
761
  @@elb_api[credentials][region]
751
762
  end
752
763
 
@@ -754,13 +765,13 @@ module MU
754
765
  def self.elb2(region: MU.curRegion, credentials: nil)
755
766
  region ||= myRegion
756
767
  @@elb2_api[credentials] ||= {}
757
- @@elb2_api[credentials][region] ||= MU::Cloud::AWS::Endpoint.new(api: "ElasticLoadBalancingV2", region: region, credentials: credentials)
768
+ @@elb2_api[credentials][region] ||= MU::Cloud::AWS::AmazonEndpoint.new(api: "ElasticLoadBalancingV2", region: region, credentials: credentials)
758
769
  @@elb2_api[credentials][region]
759
770
  end
760
771
 
761
772
  # Amazon's Route53 API
762
773
  def self.route53(credentials: nil)
763
- @@route53_api[credentials] ||= MU::Cloud::AWS::Endpoint.new(api: "Route53", credentials: credentials)
774
+ @@route53_api[credentials] ||= MU::Cloud::AWS::AmazonEndpoint.new(api: "Route53", credentials: credentials)
764
775
  @@route53_api[credentials]
765
776
  end
766
777
 
@@ -768,7 +779,7 @@ module MU
768
779
  def self.rds(region: MU.curRegion, credentials: nil)
769
780
  region ||= myRegion
770
781
  @@rds_api[credentials] ||= {}
771
- @@rds_api[credentials][region] ||= MU::Cloud::AWS::Endpoint.new(api: "RDS", region: region, credentials: credentials)
782
+ @@rds_api[credentials][region] ||= MU::Cloud::AWS::AmazonEndpoint.new(api: "RDS", region: region, credentials: credentials)
772
783
  @@rds_api[credentials][region]
773
784
  end
774
785
 
@@ -776,7 +787,7 @@ module MU
776
787
  def self.cloudformation(region: MU.curRegion, credentials: nil)
777
788
  region ||= myRegion
778
789
  @@cloudformation_api[credentials] ||= {}
779
- @@cloudformation_api[credentials][region] ||= MU::Cloud::AWS::Endpoint.new(api: "CloudFormation", region: region, credentials: credentials)
790
+ @@cloudformation_api[credentials][region] ||= MU::Cloud::AWS::AmazonEndpoint.new(api: "CloudFormation", region: region, credentials: credentials)
780
791
  @@cloudformation_api[credentials][region]
781
792
  end
782
793
 
@@ -784,7 +795,7 @@ module MU
784
795
  def self.s3(region: MU.curRegion, credentials: nil)
785
796
  region ||= myRegion
786
797
  @@s3_api[credentials] ||= {}
787
- @@s3_api[credentials][region] ||= MU::Cloud::AWS::Endpoint.new(api: "S3", region: region, credentials: credentials)
798
+ @@s3_api[credentials][region] ||= MU::Cloud::AWS::AmazonEndpoint.new(api: "S3", region: region, credentials: credentials)
788
799
  @@s3_api[credentials][region]
789
800
  end
790
801
 
@@ -792,7 +803,7 @@ module MU
792
803
  def self.cloudtrail(region: MU.curRegion, credentials: nil)
793
804
  region ||= myRegion
794
805
  @@cloudtrail_api[credentials] ||= {}
795
- @@cloudtrail_api[credentials][region] ||= MU::Cloud::AWS::Endpoint.new(api: "CloudTrail", region: region, credentials: credentials)
806
+ @@cloudtrail_api[credentials][region] ||= MU::Cloud::AWS::AmazonEndpoint.new(api: "CloudTrail", region: region, credentials: credentials)
796
807
  @@cloudtrail_api[credentials][region]
797
808
  end
798
809
 
@@ -800,7 +811,7 @@ module MU
800
811
  def self.cloudwatch(region: MU.curRegion, credentials: nil)
801
812
  region ||= myRegion
802
813
  @@cloudwatch_api[credentials] ||= {}
803
- @@cloudwatch_api[credentials][region] ||= MU::Cloud::AWS::Endpoint.new(api: "CloudWatch", region: region, credentials: credentials)
814
+ @@cloudwatch_api[credentials][region] ||= MU::Cloud::AWS::AmazonEndpoint.new(api: "CloudWatch", region: region, credentials: credentials)
804
815
  @@cloudwatch_api[credentials][region]
805
816
  end
806
817
 
@@ -808,7 +819,7 @@ module MU
808
819
  def self.wafglobal(region: MU.curRegion, credentials: nil)
809
820
  region ||= myRegion
810
821
  @@wafglobal_api[credentials] ||= {}
811
- @@wafglobal[credentials][region] ||= MU::Cloud::AWS::Endpoint.new(api: "WAF", region: region, credentials: credentials)
822
+ @@wafglobal[credentials][region] ||= MU::Cloud::AWS::AmazonEndpoint.new(api: "WAF", region: region, credentials: credentials)
812
823
  @@wafglobal[credentials][region]
813
824
  end
814
825
 
@@ -817,7 +828,7 @@ module MU
817
828
  def self.waf(region: MU.curRegion, credentials: nil)
818
829
  region ||= myRegion
819
830
  @@waf[credentials] ||= {}
820
- @@waf[credentials][region] ||= MU::Cloud::AWS::Endpoint.new(api: "WAFRegional", region: region, credentials: credentials)
831
+ @@waf[credentials][region] ||= MU::Cloud::AWS::AmazonEndpoint.new(api: "WAFRegional", region: region, credentials: credentials)
821
832
  @@waf[credentials][region]
822
833
  end
823
834
 
@@ -825,7 +836,7 @@ module MU
825
836
  def self.cloudwatchlogs(region: MU.curRegion, credentials: nil)
826
837
  region ||= myRegion
827
838
  @@cloudwatchlogs_api[credentials] ||= {}
828
- @@cloudwatchlogs_api[credentials][region] ||= MU::Cloud::AWS::Endpoint.new(api: "CloudWatchLogs", region: region, credentials: credentials)
839
+ @@cloudwatchlogs_api[credentials][region] ||= MU::Cloud::AWS::AmazonEndpoint.new(api: "CloudWatchLogs", region: region, credentials: credentials)
829
840
  @@cloudwatchlogs_api[credentials][region]
830
841
  end
831
842
 
@@ -833,7 +844,7 @@ module MU
833
844
  def self.cloudfront(region: MU.curRegion, credentials: nil)
834
845
  region ||= myRegion
835
846
  @@cloudfront_api[credentials] ||= {}
836
- @@cloudfront_api[credentials][region] ||= MU::Cloud::AWS::Endpoint.new(api: "CloudFront", region: region, credentials: credentials)
847
+ @@cloudfront_api[credentials][region] ||= MU::Cloud::AWS::AmazonEndpoint.new(api: "CloudFront", region: region, credentials: credentials)
837
848
  @@cloudfront_api[credentials][region]
838
849
  end
839
850
 
@@ -841,7 +852,7 @@ module MU
841
852
  def self.elasticache(region: MU.curRegion, credentials: nil)
842
853
  region ||= myRegion
843
854
  @@elasticache_api[credentials] ||= {}
844
- @@elasticache_api[credentials][region] ||= MU::Cloud::AWS::Endpoint.new(api: "ElastiCache", region: region, credentials: credentials)
855
+ @@elasticache_api[credentials][region] ||= MU::Cloud::AWS::AmazonEndpoint.new(api: "ElastiCache", region: region, credentials: credentials)
845
856
  @@elasticache_api[credentials][region]
846
857
  end
847
858
 
@@ -849,7 +860,7 @@ module MU
849
860
  def self.sns(region: MU.curRegion, credentials: nil)
850
861
  region ||= myRegion
851
862
  @@sns_api[credentials] ||= {}
852
- @@sns_api[credentials][region] ||= MU::Cloud::AWS::Endpoint.new(api: "SNS", region: region, credentials: credentials)
863
+ @@sns_api[credentials][region] ||= MU::Cloud::AWS::AmazonEndpoint.new(api: "SNS", region: region, credentials: credentials)
853
864
  @@sns_api[credentials][region]
854
865
  end
855
866
 
@@ -857,7 +868,7 @@ module MU
857
868
  def self.sqs(region: MU.curRegion, credentials: nil)
858
869
  region ||= myRegion
859
870
  @@sqs_api[credentials] ||= {}
860
- @@sqs_api[credentials][region] ||= MU::Cloud::AWS::Endpoint.new(api: "SQS", region: region, credentials: credentials)
871
+ @@sqs_api[credentials][region] ||= MU::Cloud::AWS::AmazonEndpoint.new(api: "SQS", region: region, credentials: credentials)
861
872
  @@sqs_api[credentials][region]
862
873
  end
863
874
 
@@ -865,7 +876,7 @@ module MU
865
876
  def self.efs(region: MU.curRegion, credentials: nil)
866
877
  region ||= myRegion
867
878
  @@efs_api[credentials] ||= {}
868
- @@efs_api[credentials][region] ||= MU::Cloud::AWS::Endpoint.new(api: "EFS", region: region, credentials: credentials)
879
+ @@efs_api[credentials][region] ||= MU::Cloud::AWS::AmazonEndpoint.new(api: "EFS", region: region, credentials: credentials)
869
880
  @@efs_api[credentials][region]
870
881
  end
871
882
 
@@ -873,7 +884,7 @@ module MU
873
884
  def self.lambda(region: MU.curRegion, credentials: nil)
874
885
  region ||= myRegion
875
886
  @@lambda_api[credentials] ||= {}
876
- @@lambda_api[credentials][region] ||= MU::Cloud::AWS::Endpoint.new(api: "Lambda", region: region, credentials: credentials)
887
+ @@lambda_api[credentials][region] ||= MU::Cloud::AWS::AmazonEndpoint.new(api: "Lambda", region: region, credentials: credentials)
877
888
  @@lambda_api[credentials][region]
878
889
  end
879
890
 
@@ -881,7 +892,7 @@ module MU
881
892
  def self.apig(region: MU.curRegion, credentials: nil)
882
893
  region ||= myRegion
883
894
  @@apig_api[credentials] ||= {}
884
- @@apig_api[credentials][region] ||= MU::Cloud::AWS::Endpoint.new(api: "APIGateway", region: region, credentials: credentials)
895
+ @@apig_api[credentials][region] ||= MU::Cloud::AWS::AmazonEndpoint.new(api: "APIGateway", region: region, credentials: credentials)
885
896
  @@apig_api[credentials][region]
886
897
  end
887
898
 
@@ -889,7 +900,7 @@ module MU
889
900
  def self.cloudwatch_events(region = MU.cureRegion)
890
901
  region ||= myRegion
891
902
  @@cloudwatch_events_api[credentials] ||= {}
892
- @@cloudwatch_events_api[credentials][region] ||= MU::Cloud::AWS::Endpoint.new(api: "CloudWatchEvents", region: region, credentials: credentials)
903
+ @@cloudwatch_events_api[credentials][region] ||= MU::Cloud::AWS::AmazonEndpoint.new(api: "CloudWatchEvents", region: region, credentials: credentials)
893
904
  @@cloudwatch_events_api
894
905
  end
895
906
 
@@ -897,7 +908,7 @@ module MU
897
908
  def self.ecs(region: MU.curRegion, credentials: nil)
898
909
  region ||= myRegion
899
910
  @@ecs_api[credentials] ||= {}
900
- @@ecs_api[credentials][region] ||= MU::Cloud::AWS::Endpoint.new(api: "ECS", region: region, credentials: credentials)
911
+ @@ecs_api[credentials][region] ||= MU::Cloud::AWS::AmazonEndpoint.new(api: "ECS", region: region, credentials: credentials)
901
912
  @@ecs_api[credentials][region]
902
913
  end
903
914
 
@@ -905,15 +916,23 @@ module MU
905
916
  def self.eks(region: MU.curRegion, credentials: nil)
906
917
  region ||= myRegion
907
918
  @@eks_api[credentials] ||= {}
908
- @@eks_api[credentials][region] ||= MU::Cloud::AWS::Endpoint.new(api: "EKS", region: region, credentials: credentials)
919
+ @@eks_api[credentials][region] ||= MU::Cloud::AWS::AmazonEndpoint.new(api: "EKS", region: region, credentials: credentials)
909
920
  @@eks_api[credentials][region]
910
921
  end
911
922
 
923
+ # Amazon's DynamoDB API
924
+ def self.dynamo(region: MU.curRegion, credentials: nil)
925
+ region ||= myRegion
926
+ @@dynamo_api[credentials] ||= {}
927
+ @@dynamo_api[credentials][region] ||= MU::Cloud::AWS::AmazonEndpoint.new(api: "DynamoDB", region: region, credentials: credentials)
928
+ @@dynamo_api[credentials][region]
929
+ end
930
+
912
931
  # Amazon's Pricing API
913
932
  def self.pricing(region: MU.curRegion, credentials: nil)
914
933
  region ||= myRegion
915
934
  @@pricing_api[credentials] ||= {}
916
- @@pricing_api[credentials][region] ||= MU::Cloud::AWS::Endpoint.new(api: "Pricing", region: region, credentials: credentials)
935
+ @@pricing_api[credentials][region] ||= MU::Cloud::AWS::AmazonEndpoint.new(api: "Pricing", region: region, credentials: credentials)
917
936
  @@pricing_api[credentials][region]
918
937
  end
919
938
 
@@ -921,7 +940,7 @@ module MU
921
940
  def self.ssm(region: MU.curRegion, credentials: nil)
922
941
  region ||= myRegion
923
942
  @@ssm_api[credentials] ||= {}
924
- @@ssm_api[credentials][region] ||= MU::Cloud::AWS::Endpoint.new(api: "SSM", region: region, credentials: credentials)
943
+ @@ssm_api[credentials][region] ||= MU::Cloud::AWS::AmazonEndpoint.new(api: "SSM", region: region, credentials: credentials)
925
944
  @@ssm_api[credentials][region]
926
945
  end
927
946
 
@@ -929,7 +948,7 @@ module MU
929
948
  def self.elasticsearch(region: MU.curRegion, credentials: nil)
930
949
  region ||= myRegion
931
950
  @@elasticsearch_api[credentials] ||= {}
932
- @@elasticsearch_api[credentials][region] ||= MU::Cloud::AWS::Endpoint.new(api: "ElasticsearchService", region: region, credentials: credentials)
951
+ @@elasticsearch_api[credentials][region] ||= MU::Cloud::AWS::AmazonEndpoint.new(api: "ElasticsearchService", region: region, credentials: credentials)
933
952
  @@elasticsearch_api[credentials][region]
934
953
  end
935
954
 
@@ -937,7 +956,7 @@ module MU
937
956
  def self.cognito_ident(region: MU.curRegion, credentials: nil)
938
957
  region ||= myRegion
939
958
  @@cognito_ident_api[credentials] ||= {}
940
- @@cognito_ident_api[credentials][region] ||= MU::Cloud::AWS::Endpoint.new(api: "CognitoIdentity", region: region, credentials: credentials)
959
+ @@cognito_ident_api[credentials][region] ||= MU::Cloud::AWS::AmazonEndpoint.new(api: "CognitoIdentity", region: region, credentials: credentials)
941
960
  @@cognito_ident_api[credentials][region]
942
961
  end
943
962
 
@@ -945,7 +964,7 @@ module MU
945
964
  def self.cognito_user(region: MU.curRegion, credentials: nil)
946
965
  region ||= myRegion
947
966
  @@cognito_user_api[credentials] ||= {}
948
- @@cognito_user_api[credentials][region] ||= MU::Cloud::AWS::Endpoint.new(api: "CognitoIdentityProvider", region: region, credentials: credentials)
967
+ @@cognito_user_api[credentials][region] ||= MU::Cloud::AWS::AmazonEndpoint.new(api: "CognitoIdentityProvider", region: region, credentials: credentials)
949
968
  @@cognito_user_api[credentials][region]
950
969
  end
951
970
 
@@ -953,7 +972,7 @@ module MU
953
972
  def self.kms(region: MU.curRegion, credentials: nil)
954
973
  region ||= myRegion
955
974
  @@kms_api[credentials] ||= {}
956
- @@kms_api[credentials][region] ||= MU::Cloud::AWS::Endpoint.new(api: "KMS", region: region, credentials: credentials)
975
+ @@kms_api[credentials][region] ||= MU::Cloud::AWS::AmazonEndpoint.new(api: "KMS", region: region, credentials: credentials)
957
976
  @@kms_api[credentials][region]
958
977
  end
959
978
 
@@ -961,7 +980,7 @@ module MU
961
980
  def self.orgs(credentials: nil)
962
981
  @@organizations_api ||= {}
963
982
  # XXX org api doesn't seem to work in many regions
964
- @@organizations_api[credentials] ||= MU::Cloud::AWS::Endpoint.new(api: "Organizations", credentials: credentials, region: "us-east-1")
983
+ @@organizations_api[credentials] ||= MU::Cloud::AWS::AmazonEndpoint.new(api: "Organizations", credentials: credentials, region: "us-east-1")
965
984
  @@organizations_api[credentials]
966
985
  end
967
986
 
@@ -1154,7 +1173,7 @@ module MU
1154
1173
 
1155
1174
  # Wrapper class for the EC2 API, so that we can catch some common transient
1156
1175
  # endpoint errors without having to spray rescues all over the codebase.
1157
- class Endpoint
1176
+ class AmazonEndpoint
1158
1177
  @api = nil
1159
1178
  @region = nil
1160
1179
  @cred_obj = nil
@@ -1204,7 +1223,7 @@ module MU
1204
1223
  retval = @api.method(method_sym).call
1205
1224
  end
1206
1225
  return retval
1207
- rescue Aws::EC2::Errors::InternalError, Aws::EC2::Errors::RequestLimitExceeded, Aws::EC2::Errors::Unavailable, Aws::Route53::Errors::Throttling, Aws::ElasticLoadBalancing::Errors::HttpFailureException, Aws::EC2::Errors::Http503Error, Aws::AutoScaling::Errors::Http503Error, Aws::AutoScaling::Errors::InternalFailure, Aws::AutoScaling::Errors::ServiceUnavailable, Aws::Route53::Errors::ServiceUnavailable, Aws::ElasticLoadBalancing::Errors::Throttling, Aws::RDS::Errors::ClientUnavailable, Aws::Waiters::Errors::UnexpectedError, Aws::ElasticLoadBalancing::Errors::ServiceUnavailable, Aws::ElasticLoadBalancingV2::Errors::Throttling, Seahorse::Client::NetworkingError, Aws::IAM::Errors::Throttling, Aws::EFS::Errors::ThrottlingException, Aws::Pricing::Errors::ThrottlingException => e
1226
+ rescue Aws::EC2::Errors::InternalError, Aws::EC2::Errors::RequestLimitExceeded, Aws::EC2::Errors::Unavailable, Aws::Route53::Errors::Throttling, Aws::ElasticLoadBalancing::Errors::HttpFailureException, Aws::EC2::Errors::Http503Error, Aws::AutoScaling::Errors::Http503Error, Aws::AutoScaling::Errors::InternalFailure, Aws::AutoScaling::Errors::ServiceUnavailable, Aws::Route53::Errors::ServiceUnavailable, Aws::ElasticLoadBalancing::Errors::Throttling, Aws::RDS::Errors::ClientUnavailable, Aws::Waiters::Errors::UnexpectedError, Aws::ElasticLoadBalancing::Errors::ServiceUnavailable, Aws::ElasticLoadBalancingV2::Errors::Throttling, Seahorse::Client::NetworkingError, Aws::IAM::Errors::Throttling, Aws::EFS::Errors::ThrottlingException, Aws::Pricing::Errors::ThrottlingException, Aws::APIGateway::Errors::TooManyRequestsException => e
1208
1227
  if e.class.name == "Seahorse::Client::NetworkingError" and e.message.match(/Name or service not known/)
1209
1228
  MU.log e.inspect, MU::ERR
1210
1229
  raise e
@@ -1262,7 +1281,8 @@ module MU
1262
1281
  @@cognito_ident_api ={}
1263
1282
  @@cognito_user_api ={}
1264
1283
  @@kms_api ={}
1265
- @@organizataion_api ={}
1284
+ @@organization_api ={}
1285
+ @@dynamo_api ={}
1266
1286
  end
1267
1287
  end
1268
1288
  end