Skip to content

Commit

Permalink
Merge pull request #347 from inokappa/add_generate_db_parameter_group
Browse files Browse the repository at this point in the history
Add DB Parameter Group and DB Cluster Parameter Group Generator
  • Loading branch information
k1LoW authored Feb 2, 2018
2 parents cc34b5a + ecced6c commit c8d41a6
Show file tree
Hide file tree
Showing 7 changed files with 90 additions and 28 deletions.
12 changes: 12 additions & 0 deletions lib/awspec/command/generate.rb
Original file line number Diff line number Diff line change
Expand Up @@ -36,6 +36,18 @@ def s3_bucket(bucket_name = nil)
end
end

types = %w(
rds_db_parameter_group rds_db_cluster_parameter_group
)

types.each do |type|
desc type + ' [paramater_name]', "Generate #{type} spec from paramater name."
define_method type do |_paramater_name|
Awsecrets.load(profile: options[:profile], region: options[:region], secrets_path: options[:secrets_path])
eval "puts Awspec::Generator::Spec::#{type.camelize}.new.generate_by_paramater_group(_paramater_name)"
end
end

types_for_generate_all = %w(
cloudwatch_alarm cloudwatch_event directconnect ebs efs
elasticsearch iam_group iam_policy iam_role iam_user kms lambda
Expand Down
2 changes: 2 additions & 0 deletions lib/awspec/generator.rb
Original file line number Diff line number Diff line change
Expand Up @@ -29,6 +29,8 @@
require 'awspec/generator/spec/internet_gateway'
require 'awspec/generator/spec/elasticsearch'
require 'awspec/generator/spec/eip'
require 'awspec/generator/spec/rds_db_parameter_group'
require 'awspec/generator/spec/rds_db_cluster_parameter_group'

# Doc
require 'awspec/generator/doc/type'
Expand Down
23 changes: 23 additions & 0 deletions lib/awspec/generator/spec/rds_db_cluster_parameter_group.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
module Awspec::Generator
module Spec
class RdsDbClusterParameterGroup
include Awspec::Helper::Finder
def generate_by_paramater_group(paramater_group)
@paramater_group = paramater_group
res = select_all_rds_db_cluster_parameters(@paramater_group)
ERB.new(db_cluster_parameter_group_template, nil, '-').result(binding).gsub(/^\n/, '')
end

def db_cluster_parameter_group_template
template = <<-'EOF'
describe rds_db_cluster_parameter_group('<%= @paramater_group %>') do
<% res.each do |key, value| %>
its('<%= key %>') { should eq '<%= value %>' }
<% end %>
end
EOF
template
end
end
end
end
23 changes: 23 additions & 0 deletions lib/awspec/generator/spec/rds_db_parameter_group.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
module Awspec::Generator
module Spec
class RdsDbParameterGroup
include Awspec::Helper::Finder
def generate_by_paramater_group(paramater_group)
@paramater_group = paramater_group
res = select_all_rds_db_parameters(@paramater_group)
ERB.new(db_paramater_group_template, nil, '-').result(binding).gsub(/^\n/, '')
end

def db_paramater_group_template
template = <<-'EOF'
describe rds_db_parameter_group('<%= @paramater_group %>') do
<% res.each do |key, value| %>
its('<%= key %>') { should eq '<%= value %>' }
<% end %>
end
EOF
template
end
end
end
end
28 changes: 28 additions & 0 deletions lib/awspec/helper/finder/rds.rb
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,34 @@ def select_rds_by_vpc_id(vpc_id)
db_instance.db_subnet_group.vpc_id == vpc_id
end
end

def select_all_rds_db_parameters(paramater_group)
parameters = {}
res = rds_client.describe_db_parameters({
db_parameter_group_name: paramater_group
})
loop do
res.parameters.each do |param|
parameters[param.parameter_name] = param.parameter_value
end
(res.next_page? && res = res.next_page) || break
end
parameters
end

def select_all_rds_db_cluster_parameters(paramater_group)
parameters = {}
res = rds_client.describe_db_cluster_parameters({
db_cluster_parameter_group_name: paramater_group
})
loop do
res.parameters.each do |param|
parameters[param.parameter_name] = param.parameter_value
end
(res.respond_to?(:next_page?) && res.next_page? && res = res.next_page) || break
end
parameters
end
end
end
end
15 changes: 1 addition & 14 deletions lib/awspec/type/rds_db_cluster_parameter_group.rb
Original file line number Diff line number Diff line change
Expand Up @@ -2,20 +2,7 @@ module Awspec::Type
class RdsDbClusterParameterGroup < ResourceBase
def resource_via_client
return @resource_via_client if @resource_via_client

parameters = {}
res = rds_client.describe_db_cluster_parameters({
db_cluster_parameter_group_name: @display_name
})

loop do
res.parameters.each do |param|
parameters[param.parameter_name] = param.parameter_value
end
(res.respond_to?(:next_page?) && res.next_page? && res = res.next_page) || break
end

@resource_via_client ||= parameters
@resource_via_client ||= select_all_rds_db_cluster_parameters(@display_name)
end

def id
Expand Down
15 changes: 1 addition & 14 deletions lib/awspec/type/rds_db_parameter_group.rb
Original file line number Diff line number Diff line change
Expand Up @@ -2,20 +2,7 @@ module Awspec::Type
class RdsDbParameterGroup < ResourceBase
def resource_via_client
return @resource_via_client if @resource_via_client

parameters = {}
res = rds_client.describe_db_parameters({
db_parameter_group_name: @display_name
})

loop do
res.parameters.each do |param|
parameters[param.parameter_name] = param.parameter_value
end
(res.next_page? && res = res.next_page) || break
end

@resource_via_client ||= parameters
@resource_via_client ||= select_all_rds_db_parameters(@display_name)
end

def id
Expand Down

0 comments on commit c8d41a6

Please sign in to comment.