awspec 0.6.1 → 0.6.2

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 (52) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +10 -0
  3. data/doc/_resource_types/rds_db_parameter_group.md +8 -0
  4. data/doc/resource_types.md +32 -25
  5. data/lib/awspec.rb +2 -0
  6. data/lib/awspec/bin/toolbox +5 -0
  7. data/lib/awspec/generator.rb +5 -1
  8. data/lib/awspec/generator/doc/type.rb +26 -0
  9. data/lib/awspec/generator/doc/type/auto_scaling_group.rb +16 -0
  10. data/lib/awspec/generator/doc/type/base.rb +89 -0
  11. data/lib/awspec/generator/doc/type/ebs.rb +17 -0
  12. data/lib/awspec/generator/doc/type/ec2.rb +17 -0
  13. data/lib/awspec/generator/doc/type/elb.rb +20 -0
  14. data/lib/awspec/generator/doc/type/rds.rb +17 -0
  15. data/lib/awspec/generator/doc/type/rds_db_parameter_group.rb +16 -0
  16. data/lib/awspec/generator/doc/type/route53_hosted_zone.rb +16 -0
  17. data/lib/awspec/generator/doc/type/route_table.rb +16 -0
  18. data/lib/awspec/generator/doc/type/s3.rb +16 -0
  19. data/lib/awspec/generator/doc/type/security_group.rb +16 -0
  20. data/lib/awspec/generator/doc/type/subnet.rb +16 -0
  21. data/lib/awspec/generator/doc/type/vpc.rb +17 -0
  22. data/lib/awspec/generator/template.rb +100 -0
  23. data/lib/awspec/stub.rb +7 -0
  24. data/lib/awspec/stub/auto_scaling_group.rb +87 -0
  25. data/lib/awspec/stub/ebs.rb +66 -0
  26. data/lib/awspec/stub/ec2.rb +117 -0
  27. data/lib/awspec/stub/elb.rb +129 -0
  28. data/lib/awspec/stub/rds.rb +93 -0
  29. data/lib/awspec/stub/rds_db_parameter_group.rb +16 -0
  30. data/lib/awspec/stub/route53_hosted_zone.rb +83 -0
  31. data/lib/awspec/stub/route_table.rb +60 -0
  32. data/lib/awspec/stub/s3.rb +14 -0
  33. data/lib/awspec/stub/security_group.rb +66 -0
  34. data/lib/awspec/stub/subnet.rb +33 -0
  35. data/lib/awspec/stub/vpc.rb +69 -0
  36. data/lib/awspec/toolbox.rb +13 -0
  37. data/lib/awspec/version.rb +1 -1
  38. metadata +33 -16
  39. data/lib/awspec/docgen.rb +0 -23
  40. data/lib/awspec/generator/doc/auto_scaling_group.rb +0 -15
  41. data/lib/awspec/generator/doc/base.rb +0 -74
  42. data/lib/awspec/generator/doc/ebs.rb +0 -15
  43. data/lib/awspec/generator/doc/ec2.rb +0 -15
  44. data/lib/awspec/generator/doc/elb.rb +0 -18
  45. data/lib/awspec/generator/doc/rds.rb +0 -15
  46. data/lib/awspec/generator/doc/rds_db_parameter_group.rb +0 -15
  47. data/lib/awspec/generator/doc/route53_hosted_zone.rb +0 -15
  48. data/lib/awspec/generator/doc/route_table.rb +0 -15
  49. data/lib/awspec/generator/doc/s3.rb +0 -15
  50. data/lib/awspec/generator/doc/security_group.rb +0 -15
  51. data/lib/awspec/generator/doc/subnet.rb +0 -15
  52. data/lib/awspec/generator/doc/vpc.rb +0 -15
@@ -0,0 +1,16 @@
1
+ module Awspec::Generator
2
+ module Doc
3
+ module Type
4
+ class Route53HostedZone < Base
5
+ def initialize
6
+ super
7
+ @type = Awspec::Type::Route53HostedZone.new('example.com.')
8
+ @ret = @type.hosted_zone
9
+ @matchers = []
10
+ @ignore_matchers = []
11
+ @describes = []
12
+ end
13
+ end
14
+ end
15
+ end
16
+ end
@@ -0,0 +1,16 @@
1
+ module Awspec::Generator
2
+ module Doc
3
+ module Type
4
+ class RouteTable < Base
5
+ def initialize
6
+ super
7
+ @type = Awspec::Type::RouteTable.new('my-route-table')
8
+ @ret = @type.route_table
9
+ @matchers = []
10
+ @ignore_matchers = []
11
+ @describes = []
12
+ end
13
+ end
14
+ end
15
+ end
16
+ end
@@ -0,0 +1,16 @@
1
+ module Awspec::Generator
2
+ module Doc
3
+ module Type
4
+ class S3 < Base
5
+ def initialize
6
+ super
7
+ @type = Awspec::Type::S3.new('my-bucket')
8
+ @ret = @type.bucket
9
+ @matchers = []
10
+ @ignore_matchers = []
11
+ @describes = []
12
+ end
13
+ end
14
+ end
15
+ end
16
+ end
@@ -0,0 +1,16 @@
1
+ module Awspec::Generator
2
+ module Doc
3
+ module Type
4
+ class SecurityGroup < Base
5
+ def initialize
6
+ super
7
+ @type = Awspec::Type::SecurityGroup.new('my-security-group-name')
8
+ @ret = @type.sg
9
+ @matchers = ['its(:inbound), its(:outbound)']
10
+ @ignore_matchers = %w(be_opened be_inbound_opened be_outbound_opened)
11
+ @describes = %w(ip_permissions_count ip_permissions_egress_count)
12
+ end
13
+ end
14
+ end
15
+ end
16
+ end
@@ -0,0 +1,16 @@
1
+ module Awspec::Generator
2
+ module Doc
3
+ module Type
4
+ class Subnet < Base
5
+ def initialize
6
+ super
7
+ @type = Awspec::Type::Subnet.new('my-route-table')
8
+ @ret = @type.subnet
9
+ @matchers = []
10
+ @ignore_matchers = []
11
+ @describes = []
12
+ end
13
+ end
14
+ end
15
+ end
16
+ end
@@ -0,0 +1,17 @@
1
+ module Awspec::Generator
2
+ module Doc
3
+ module Type
4
+ class Vpc < Base
5
+ def initialize
6
+ super
7
+ @type_name = 'VPC'
8
+ @type = Awspec::Type::Vpc.new('my-vpc')
9
+ @ret = @type.vpc
10
+ @matchers = []
11
+ @ignore_matchers = []
12
+ @describes = []
13
+ end
14
+ end
15
+ end
16
+ end
17
+ end
@@ -0,0 +1,100 @@
1
+ module Awspec::Generator
2
+ class Template
3
+ def self.generate(type)
4
+ @type = type
5
+ @root_path = File.dirname(__FILE__) + '/../../../'
6
+ generate_stub
7
+ generate_type
8
+ generate_type_spec
9
+ generate_generator_doc
10
+ put_message
11
+ end
12
+
13
+ def self.generate_type
14
+ path = 'lib/awspec/type/' + @type.to_snake_case + '.rb'
15
+ full_path = @root_path + path
16
+ content = <<-"EOF"
17
+ module Awspec::Type
18
+ class #{@type.to_camel_case} < Base
19
+ def initialize(id)
20
+ super
21
+ # @id = # @FIXME
22
+ end
23
+ end
24
+ end
25
+ EOF
26
+ self.file_check_and_puts(path, content)
27
+ end
28
+
29
+ def self.generate_stub
30
+ path = 'lib/awspec/stub/' + @type.to_snake_case + '.rb'
31
+ full_path = @root_path + path
32
+ content = <<-"EOF"
33
+ # Aws.config[:ec2]= {
34
+ # stub_responses: true
35
+ # }
36
+ EOF
37
+ self.file_check_and_puts(path, content)
38
+ end
39
+
40
+ def self.generate_type_spec
41
+ path = 'spec/type/' + @type.to_snake_case + '_spec.rb'
42
+ full_path = @root_path + path
43
+ content = <<-"EOF"
44
+ require 'spec_helper'
45
+ Awspec::Stub.load '#{@type.to_snake_case}'
46
+
47
+ describe #{@type.to_snake_case}('my-#{@type.to_snake_case.tr('_', '-')}') do
48
+ it { should exist }
49
+ end
50
+ EOF
51
+ self.file_check_and_puts(path, content)
52
+ end
53
+
54
+ def self.generate_generator_doc
55
+ path = 'lib/awspec/generator/doc/type/' + @type.to_snake_case + '.rb'
56
+ full_path = @root_path + path
57
+ content = <<-"EOF"
58
+ module Awspec::Generator
59
+ module Doc
60
+ module Type
61
+ class #{@type.to_camel_case} < Base
62
+ def initialize
63
+ super
64
+ @type_name = '#{@type.to_camel_case}'
65
+ @type = Awspec::Type::#{@type.to_camel_case}.new('my-#{@type.to_snake_case.tr('_', '-')}')
66
+ # @ret = # @FIXME
67
+ @matchers = []
68
+ @ignore_matchers = []
69
+ @describes = []
70
+ end
71
+ end
72
+ end
73
+ end
74
+ end
75
+ EOF
76
+ self.file_check_and_puts(path, content)
77
+ end
78
+
79
+ def self.put_message
80
+ content = <<-"EOF"
81
+
82
+ Genarate #{@type.to_camel_case} template files.
83
+
84
+ * !! AND add '#{@type.to_snake_case}' to Awspec::Helper::Type::TYPES in awspec/lib/helper/type.rb *
85
+
86
+ EOF
87
+ end
88
+
89
+ def self.file_check_and_puts(path, content)
90
+ if File.exist? @root_path + path
91
+ $stderr.puts "!! #{path} already exists"
92
+ else
93
+ File.open(@root_path + path, 'w') do |f|
94
+ f.puts content
95
+ end
96
+ puts " + #{path}"
97
+ end
98
+ end
99
+ end
100
+ end
@@ -0,0 +1,7 @@
1
+ module Awspec
2
+ class Stub
3
+ def self.load(type)
4
+ require File.dirname(__FILE__) + '/stub/' + type
5
+ end
6
+ end
7
+ end
@@ -0,0 +1,87 @@
1
+ Aws.config[:autoscaling] = {
2
+ stub_responses: {
3
+ describe_auto_scaling_groups: {
4
+ auto_scaling_groups: [
5
+ {
6
+ auto_scaling_group_name: 'my-auto-scaling-group',
7
+ auto_scaling_group_arn: 'arn:aws:autoscaling:::autoScalingGroup::autoScalingGroupName/my-auto-scaling-group',
8
+ launch_configuration_name: 'my-lc',
9
+ min_size: 4,
10
+ max_size: 20,
11
+ desired_capacity: 4,
12
+ default_cooldown: 300,
13
+ availability_zones: [
14
+ 'ap-northeast-1a',
15
+ 'ap-northeast-1c'
16
+ ],
17
+ load_balancer_names: [
18
+ 'my-elb'
19
+ ],
20
+ health_check_type: 'EC2',
21
+ health_check_grace_period: 0,
22
+ instances: [
23
+ {
24
+ instance_id: 'i-ec12345a',
25
+ availability_zone: 'ap-northeast-1a',
26
+ lifecycle_state: 'InService',
27
+ health_status: 'Healthy',
28
+ launch_configuration_name: 'my-lc'
29
+ }
30
+ ],
31
+ created_time: Time.local(2015)
32
+ }
33
+ ]
34
+ }
35
+ }
36
+ }
37
+
38
+ Aws.config[:ec2] = {
39
+ stub_responses: {
40
+ describe_instances: {
41
+ reservations: [
42
+ {
43
+ instances: [
44
+ {
45
+ instance_id: 'i-ec12345a',
46
+ image_id: 'ami-abc12def',
47
+ vpc_id: 'vpc-ab123cde',
48
+ subnet_id: 'subnet-1234a567',
49
+ public_ip_address: '123.0.456.789',
50
+ private_ip_address: '10.0.1.1',
51
+ instance_type: 't2.small',
52
+ state: {
53
+ name: 'running'
54
+ },
55
+ security_groups: [
56
+ {
57
+ group_id: 'sg-1a2b3cd4',
58
+ group_name: 'my-security-group-name'
59
+ }
60
+ ],
61
+ tags: [
62
+ {
63
+ key: 'Name',
64
+ value: 'my-ec2'
65
+ }
66
+ ]
67
+ }
68
+ ]
69
+ }
70
+ ]
71
+ },
72
+ describe_subnets: {
73
+ subnets: [
74
+ {
75
+ vpc_id: 'vpc-ab123cde',
76
+ subnet_id: 'subnet-1234a567',
77
+ tags: [
78
+ {
79
+ key: 'Name',
80
+ value: 'my-subnet'
81
+ }
82
+ ]
83
+ }
84
+ ]
85
+ }
86
+ }
87
+ }
@@ -0,0 +1,66 @@
1
+ Aws.config[:ec2] = {
2
+ stub_responses: {
3
+ describe_instances: {
4
+ reservations: [
5
+ {
6
+ instances: [
7
+ {
8
+ instance_id: 'i-ec12345a',
9
+ image_id: 'ami-abc12def',
10
+ vpc_id: 'vpc-ab123cde',
11
+ subnet_id: 'subnet-1234a567',
12
+ public_ip_address: '123.0.456.789',
13
+ private_ip_address: '10.0.1.1',
14
+ instance_type: 't2.small',
15
+ state: {
16
+ name: 'running'
17
+ },
18
+ security_groups: [
19
+ {
20
+ group_id: 'sg-1a2b3cd4',
21
+ group_name: 'my-security-group-name'
22
+ }
23
+ ],
24
+ block_device_mappings: [
25
+ {
26
+ device_name: '/dev/sda',
27
+ ebs: {
28
+ volume_id: 'vol-123a123b'
29
+ }
30
+ }
31
+ ],
32
+ tags: [
33
+ {
34
+ key: 'Name',
35
+ value: 'my-ec2'
36
+ }
37
+ ]
38
+ }
39
+ ]
40
+ }
41
+ ]
42
+ },
43
+ describe_volumes: {
44
+ volumes: [
45
+ {
46
+ volume_id: 'vpc-ab123cde',
47
+ state: 'in-use',
48
+ size: 100,
49
+ attachments: [
50
+ {
51
+ instance_id: 'i-ec12345a',
52
+ volume_id: 'vpc-ab123cde',
53
+ state: 'attached'
54
+ }
55
+ ],
56
+ tags: [
57
+ {
58
+ key: 'Name',
59
+ value: 'my-volume'
60
+ }
61
+ ]
62
+ }
63
+ ]
64
+ }
65
+ }
66
+ }
@@ -0,0 +1,117 @@
1
+ Aws.config[:ec2] = {
2
+ stub_responses: {
3
+ describe_instances: {
4
+ reservations: [
5
+ {
6
+ instances: [
7
+ {
8
+ instance_id: 'i-ec12345a',
9
+ image_id: 'ami-abc12def',
10
+ vpc_id: 'vpc-ab123cde',
11
+ subnet_id: 'subnet-1234a567',
12
+ public_ip_address: '123.0.456.789',
13
+ private_ip_address: '10.0.1.1',
14
+ instance_type: 't2.small',
15
+ state: {
16
+ name: 'running'
17
+ },
18
+ security_groups: [
19
+ {
20
+ group_id: 'sg-1a2b3cd4',
21
+ group_name: 'my-security-group-name'
22
+ }
23
+ ],
24
+ block_device_mappings: [
25
+ {
26
+ device_name: '/dev/sda',
27
+ ebs: {
28
+ volume_id: 'vol-123a123b'
29
+ }
30
+ }
31
+ ],
32
+ tags: [
33
+ {
34
+ key: 'Name',
35
+ value: 'my-ec2'
36
+ }
37
+ ]
38
+ }
39
+ ]
40
+ }
41
+ ]
42
+ },
43
+ describe_vpcs: {
44
+ vpcs: [
45
+ {
46
+ vpc_id: 'vpc-ab123cde',
47
+ tags: [
48
+ {
49
+ key: 'Name',
50
+ value: 'my-vpc'
51
+ }
52
+ ]
53
+ }
54
+ ]
55
+ },
56
+ describe_subnets: {
57
+ subnets: [
58
+ {
59
+ state: 'available',
60
+ vpc_id: 'vpc-ab123cde',
61
+ subnet_id: 'subnet-1234a567',
62
+ cidr_block: '10.0.1.0/24',
63
+ tags: [
64
+ {
65
+ key: 'Name',
66
+ value: 'my-subnet'
67
+ }
68
+ ]
69
+ }
70
+ ]
71
+ },
72
+ describe_addresses: {
73
+ addresses: [
74
+ {
75
+ public_ip: '123.0.456.789',
76
+ instance_id: 'i-ec12345a'
77
+ }
78
+ ]
79
+ },
80
+ describe_security_groups: {
81
+ security_groups: [
82
+ {
83
+ group_id: 'sg-1a2b3cd4',
84
+ group_name: 'my-security-group-name',
85
+ tags: [
86
+ {
87
+ key: 'Name',
88
+ value: 'my-security-group-tag-name'
89
+ }
90
+ ]
91
+ }
92
+ ]
93
+ },
94
+ describe_volumes: {
95
+ volumes: [
96
+ {
97
+ volume_id: 'vpc-ab123cde',
98
+ state: 'in-use',
99
+ size: 100,
100
+ attachments: [
101
+ {
102
+ instance_id: 'i-ec12345a',
103
+ volume_id: 'vpc-ab123cde',
104
+ state: 'attached'
105
+ }
106
+ ],
107
+ tags: [
108
+ {
109
+ key: 'Name',
110
+ value: 'my-volume'
111
+ }
112
+ ]
113
+ }
114
+ ]
115
+ }
116
+ }
117
+ }