rdstune 1.2.0 → 2.0.1

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: e4edf67742bd54a9a386e0b11a73a805837ae822
4
- data.tar.gz: 157a3204c4082b6543aa0481b5fa511d05bca54b
3
+ metadata.gz: 2ac11bb822eb833691837dde44033a06ed68e8cd
4
+ data.tar.gz: da661b2ba83116d93c866081678bc1f23e53c161
5
5
  SHA512:
6
- metadata.gz: f2696f3a9dcbe01451029a05778256376ff9d129933ca7aebbbf8759c1f043b0a48752fad50e4ebda1af40cfed02676c9989e2b838b6d910e2286a82e96f8c3a
7
- data.tar.gz: 07cb4d939e26b37a1710608455af464f0de726e7424d07e86a7cabddab81e11fc730223d01b6e2e6d4a9b43207c9838f700cd4834d2dadb511f1b990aa1db758
6
+ metadata.gz: 5f4b503d14c8041a1a6f9be33f903a87c03ba4ccd1fae8aafd0fdf09ec1f86362f1636f9d14980a3ad8f1eb663c8175a182227369b846136950d1ab166d245ee
7
+ data.tar.gz: 1657ab25b1ea3c35511fb964810a4f54805cd388f08fd09019f8fa7ce1c71386bec6ed4a0d3a400ede77cc5718460eb3b6a5163d773d3f6051c19b9fca6cdb9c
data/bin/rdstune CHANGED
@@ -13,33 +13,43 @@ This gem creates a Parameter Group with sane defaults for your PostgreSQL RDS in
13
13
  Options:
14
14
  EOS
15
15
  opt :type, "Type of Database Server (Web/DW/Mixed/Desktop)", :type => :string, :default => 'web'
16
+ opt :instance_type, "Generate values based on an AWS instance type", :type => :string
16
17
  opt :memory, "Amount of Memory on the Server (GiB)", :type => :float
17
18
  opt :connections, "Specify the Target Max Connections", :type => :integer
18
19
  opt :oversubscribe, "Oversubscribe the number of connections", :type => :integer
19
20
  opt :name, "Name of your RDS Parameter Group", :type => :string
20
21
  opt :family, "Database Family (Postgres version)", :type => :string, :default => 'postgres9.4'
21
- opt :access_key_id, "Set the AWS Access Key for the account (default: $AWS_ACCESS_KEY_ID)", :type => :string, :default => ENV['AWS_ACCESS_KEY_ID']
22
- opt :secret_access_key, "Set the AWS Secret Key for the account (default: $AWS_SECRET_ACCESS_KEY)", :type => :string, :default => ENV['AWS_SECRET_ACCESS_KEY']
23
- opt :region, "Specify the AWS Region for the account (default: $AWS_REGION)", :type => :string, :default => ENV['AWS_REGION']
22
+ opt :access_key_id, "Set the AWS Access Key for the account", :type => :string, :default => ENV['AWS_ACCESS_KEY_ID']
23
+ opt :secret_access_key, "Set the AWS Secret Key for the account", :type => :string, :default => ENV['AWS_SECRET_ACCESS_KEY']
24
+ opt :region, "Specify the AWS Region for the account", :type => :string, :default => ENV['AWS_REGION']
25
+ opt :dry, "Dry Run - Do not Create", :default => false
24
26
  opt :version, "Show the current version of rdstune"
25
27
  end
26
28
 
27
29
  opts = Trollop::with_standard_exception_handling p do
28
30
  o = p.parse ARGV
29
- if o[:memory] == nil or o[:connections] == nil
31
+ if (o[:memory] == nil or o[:instance_type] == nil) and (o[:connections] == nil)
30
32
  raise Trollop::HelpNeeded
31
33
  end
32
34
  o
33
35
  end
34
36
 
35
- name = opts[:name] || "rdstune-#{opts[:type]}-#{opts[:memory]}-#{opts[:connections]}".gsub('.','-')
37
+ if opts[:instance_type]
38
+ name = opts[:name] || "rdstune-#{opts[:instance_type]}-#{opts[:connections]}".gsub('.','-')
39
+ else
40
+ name = opts[:name] || "rdstune-#{opts[:type]}-#{opts[:memory]}-#{opts[:connections]}".gsub('.','-')
41
+ end
42
+
36
43
  options = {}
37
44
  aws_credentials = { :access_key_id => opts[:access_key_id],
38
45
  :secret_access_key => opts[:secret_access_key],
39
46
  :region => opts[:region] }
40
47
  options['connections'] = opts[:connections] if opts[:connections]
41
48
  options['oversubscribe'] = opts[:oversubscribe] if opts[:oversubscribe]
42
- rdstune = RDSTUNE::RdsTune.new(type: opts[:type], memory: opts[:memory],
43
- aws_credentials: aws_credentials, options: options)
44
- rdstune.create_parameter_group name, opts[:family]
49
+
50
+ rdstune = RDSTUNE::RdsTune.new(instance_type: opts[:instance_type], type: opts[:type],
51
+ memory: opts[:memory],aws_credentials: aws_credentials,
52
+ options: options)
53
+
54
+ rdstune.create_parameter_group(name: name, family: opts[:family]) unless opts[:dry]
45
55
  rdstune.display_config
data/lib/ec2info.rb ADDED
@@ -0,0 +1,20 @@
1
+ require 'net/http'
2
+ require 'json'
3
+
4
+ module RDSTUNE
5
+ class Ec2Info
6
+ def initialize(instance_type)
7
+ @instance_type = instance_type
8
+ @ec2info = JSON.parse(Net::HTTP.get(URI('http://www.ec2instances.info/instances.json')))
9
+ end
10
+
11
+ def show()
12
+ puts get()
13
+ end
14
+
15
+ def get_memory()
16
+ m = @ec2info.select {|instances| instances['instance_type'] == @instance_type}
17
+ m.first["memory"]
18
+ end
19
+ end
20
+ end
data/lib/rdstune.rb CHANGED
@@ -1,18 +1,26 @@
1
1
  require 'aws-sdk'
2
2
  require 'mrtuner'
3
+ require_relative 'ec2info'
3
4
 
4
5
 
5
6
  module RDSTUNE
6
7
  class RdsTune < MrTuner
7
8
 
8
- def initialize(type: nil, memory: nil, options: {}, aws_credentials: {}, rds_client: nil)
9
+ def initialize(instance_type: nil, type: nil, memory: nil, options: {}, aws_credentials: {}, rds_client: nil)
9
10
  if rds_client
10
11
  @rds = rds_client
11
12
  else
12
13
  @rds = Aws::RDS::Client.new(aws_credentials)
13
14
  end
15
+
16
+ if instance_type then
17
+ @ec2info = Ec2Info.new(instance_type)
18
+ @memory = @ec2info.get_memory
19
+ else
20
+ @memory = memory
21
+ end
22
+
14
23
  @type = type
15
- @memory = memory
16
24
  @options = options
17
25
  super(@type, @memory, @options)
18
26
  end
@@ -22,10 +30,11 @@ module RDSTUNE
22
30
  group_name = name
23
31
  group_family = family
24
32
  unless find_parameter_group(group_name)
33
+ description = "Created by RdsTune - #{@type} - #{@memory} - #{Time.now.to_s}"
25
34
  @rds.create_db_parameter_group({
26
35
  :db_parameter_group_name => group_name,
27
36
  :db_parameter_group_family => group_family,
28
- :description => "Created by RdsTune - #{@type} - #{@memory} - #{Time.now.to_s}"
37
+ :description => description
29
38
  })
30
39
  end
31
40
  update_parameter_group(group_name)
data/lib/version.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  module RDSTUNE
2
- VERSION = "1.2.0"
2
+ VERSION = "2.0.1"
3
3
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rdstune
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.2.0
4
+ version: 2.0.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - David Kerr
@@ -61,6 +61,7 @@ extra_rdoc_files: []
61
61
  files:
62
62
  - bin/rdstune
63
63
  - contributors.txt
64
+ - lib/ec2info.rb
64
65
  - lib/rdstune.rb
65
66
  - lib/version.rb
66
67
  - license.txt