vscripts 0.0.3 → 0.1.0

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: fabee91a36a3e793e9d2e46fb62e3e0295e5e16e
4
- data.tar.gz: 303858f79990e9d93781469001dae7564f9b05ca
3
+ metadata.gz: f136dbab318d66e5849bc3fd0c919f705f3f4628
4
+ data.tar.gz: 1a8fc5ec87de153df9422c606b8bcb92e10a1d42
5
5
  SHA512:
6
- metadata.gz: 0334b47473a8e5208dbfa85a30ef5777b95f519798680e8f3985376de40742e87c6c82cd7453361fd573bb3d78fa082cdcea0f9b5fc18fb52ee528afdcd9e3a9
7
- data.tar.gz: 17d85ac616ce98308f089ccc63f5f1424dffb90da70380bc5ebc77bca0aa06b22b48d4fd694336eb3a1f299e487b48c04a9d0363c71681c3d255fa73a28e1b18
6
+ metadata.gz: 6102d72f4aaed7bf46c3bda322ec5f9d8a41b631c402da8572adde1ebde9b0e63ea51bf07971951a2bfc55b9ac7f0b90cb57d14f2a0e6c0375d9b5df25de3b58
7
+ data.tar.gz: e9d7926d647076d643f8d3f898d990298eb5f268d287335f0dfae69db2703ca3c030f2ba1a05669107355fac20f73e5740d9e5673330702b0159d682873928f6
@@ -1,3 +1,16 @@
1
+ Version 0.1.0
2
+ ---
3
+ * Domain fallback to local ([Vlad Ghinea - c0d176f](https://github.com/vghn/vscripts/commit/c0d176fe244c10dd8d2b394075d5d6ef1c0ef332))
4
+ * Add EC2 region support ([Vlad Ghinea - 8bc9561](https://github.com/vghn/vscripts/commit/8bc956128ca6495392d553366ad34aa15b375afa))
5
+ * Fix JSON tags generation ([Vlad Ghinea - 0134d42](https://github.com/vghn/vscripts/commit/0134d421abb875a1e948927162606b8cfbd7ab43))
6
+ * Fix filtered tags hash ([Vlad Ghinea - 8f72637](https://github.com/vghn/vscripts/commit/8f72637a555d5f0535d1a87be6c50f36fb8ee181))
7
+ * Clean-up code ([Vlad Ghinea - 9d1d544](https://github.com/vghn/vscripts/commit/9d1d544eb8c824ab42e0c3cde5485846833b9af8))
8
+ * New tag query and creation functions ([Vlad Ghinea - 12f1ca0](https://github.com/vghn/vscripts/commit/12f1ca069fef78699c02b8818c8da299e024a785))
9
+ * Clean up code ([Vlad Ghinea - f7a9d16](https://github.com/vghn/vscripts/commit/f7a9d16eb69365b01365285dba4f9ec5052cae53))
10
+ * Add identify command ([Vlad Ghinea - eea3876](https://github.com/vghn/vscripts/commit/eea387656e36137f93b84a8437632f5ca1cbe17d))
11
+ * Update README ([Vlad Ghinea - 90dcf2e](https://github.com/vghn/vscripts/commit/90dcf2eda7640f4705e385e5df0d99abda81ec68))
12
+ * Add automated semantic versioning task ([Vlad Ghinea - 5b60e02](https://github.com/vghn/vscripts/commit/5b60e02d64588b1b09dfc3b5848e9ea1aada535e))
13
+
1
14
  Version 0.0.3
2
15
  ---
3
16
  * Fix command line ([Vlad - 78c776a](https://github.com/vghn/vscripts/commit/78c776ab75f4b4469a73fd08d083b43291b20db0))
data/README.md CHANGED
@@ -52,8 +52,45 @@ can be overridden by adding `[-a|--all]` command line option.
52
52
 
53
53
  > **EXAMPLES**:
54
54
  ```
55
- $ vscripts tags2facts
56
- $ vscripts tags2facts --file /tmp/my_tags.json --all
55
+ $ vscripts tags2facts
56
+ $ vscripts tags2facts --file /tmp/my_tags.json --all
57
+ ```
58
+
59
+ 2. **identify**
60
+ This command creates a themed host name and fully qualified domain name for
61
+ the server, using AWS EC2 tags. The default theme is `Group-Role-#` which means
62
+ that the command collects the value of the `Group` and the `Role` AWS EC2 tags
63
+ (if they are associated with the instance). Additionally, the value of the
64
+ `Domain` tag is also collected so the resulting new host name will be
65
+ `MYGROUP-MYROLE-#.MYDOMAIN`.
66
+ These tags can be any existing EC2 tags. `#` is used as a placeholder for a
67
+ number. This number starts at 1, and, in case other similarly named instances
68
+ exist in the current AWS account, it will be incremented accordingly.
69
+ Once a new host name is composed, both `/etc/hostname` and `/etc/hosts` are
70
+ modified on the local instance and a new `Name` EC2 tag is created and
71
+ associated with the current instance.
72
+
73
+ If a ***--host*** argument is provided it will override the default theme.
74
+ *DOMAIN* is still looked up.
75
+ If a ***--domain*** argument is provided it will override the default
76
+ domain.
77
+
78
+ > Options:
79
+ > ```
80
+ --ec2-tag-theme, -e <s>: Theme (default: Group-Role-#)
81
+ --host, -n <s>: Host name
82
+ --domain, -d <s>: Domain
83
+ --help, -h: Shows help
84
+ ```
85
+
86
+ > EXAMPLES:
87
+ ```
88
+ $ vscripts identify
89
+ MyGroup-MyRole-1.Example.tld
90
+ $ vscripts identify --ec2-tag-theme NAME-#
91
+ MyName-1.Example.tld
92
+ $ vscripts identify --host myhost --domain example.com
93
+ myhost.example.com
57
94
  ```
58
95
 
59
96
 
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.0.3
1
+ 0.1.0
@@ -12,7 +12,7 @@ module VScripts
12
12
 
13
13
  # Load AWS SDK for EC2
14
14
  def initialize
15
- @ec2 ||= ::AWS::EC2.new
15
+ @ec2 ||= ::AWS::EC2.new(region: region)
16
16
  end
17
17
 
18
18
  # @return [AWS::EC2]
@@ -29,6 +29,16 @@ module VScripts
29
29
  instance.tags
30
30
  end
31
31
 
32
+ # @return [AWS::EC2::ResourceTagCollection] Tags collection
33
+ def tag(key)
34
+ instance.tags[key]
35
+ end
36
+
37
+ # @return [AWS::EC2::Tag] Creates an EC2 Tag
38
+ def create_tag(resource, key, value)
39
+ ec2.tags.create(resource, key, value)
40
+ end
41
+
32
42
  # Get a list of tags
33
43
  def tags_without(list = [])
34
44
  all = all_tags
@@ -59,9 +69,8 @@ module VScripts
59
69
  def similar_instances
60
70
  check_instance
61
71
  functional_instances.map do |functional_instance|
62
- if functional_instance.id != instance_id
63
- functional_instance.tags['Name']
64
- end
72
+ next if functional_instance.id == instance_id
73
+ functional_instance.tags['Name']
65
74
  end
66
75
  end
67
76
  end # class EC2
@@ -41,9 +41,8 @@ module VScripts
41
41
 
42
42
  # Fail if the current instance is not an EC2 instance
43
43
  def check_instance
44
- unless ec2_instance?
45
- abort 'FATAL: NOT an EC2 instance or could not connect to Metadata'
46
- end
44
+ return if ec2_instance?
45
+ abort 'FATAL: NOT an EC2 instance or could not connect to Metadata'
47
46
  end
48
47
  end # module Metadata
49
48
  end # module AWS
@@ -1,4 +1,5 @@
1
1
  require 'vscripts/commands/tags2facts'
2
+ require 'vscripts/commands/identify'
2
3
 
3
4
  module VScripts
4
5
  # Main Command class
@@ -0,0 +1,169 @@
1
+ require 'trollop'
2
+ require 'vscripts/aws/ec2'
3
+ require 'vscripts/util/local_system'
4
+
5
+ module VScripts
6
+ # Commands module
7
+ module Commands
8
+ # @ec2 smells of :reek:UncommunicativeVariableName
9
+
10
+ # Identify Class
11
+ class Identify # rubocop:disable ClassLength
12
+ include VScripts::Util::LocalSystem
13
+
14
+ # HELP
15
+ USAGE = <<-EOS
16
+ This command creates a themed host name and fully qualified domain name for
17
+ the server, using AWS EC2 tags. The default theme is `Group-Role-#` which means
18
+ that the command collects the value of the `Group` and the `Role` AWS EC2 tags
19
+ (if they are associated with the instance). Additionally, the value of the
20
+ `Domain` tag is also collected so the resulting new host name will be
21
+ `MYGROUP-MYROLE-#.MYDOMAIN`.
22
+ These tags can be any existing EC2 tags. `#` is used as a placeholder for a
23
+ number. This number starts at 1, and, in case other similarly named instances
24
+ exist in the current AWS account, it will be incremented accordingly.
25
+ Once a new host name is composed, both `/etc/hostname` and `/etc/hosts` are
26
+ modified on the local instance and a new `Name` EC2 tag is created and
27
+ associated with the current instance.
28
+
29
+ If a ***--host*** argument is provided it will override the default theme.
30
+ *DOMAIN* is still looked up.
31
+ If a ***--domain*** argument is provided it will override the default
32
+ domain.
33
+
34
+ EXAMPLES:
35
+ $ vscripts identify
36
+ MyGroup-MyRole-1.Example.tld
37
+ $ vscripts identify --ec2-tag-theme NAME-#
38
+ MyName-1.Example.tld`
39
+ $ vscripts identify --host myhost --domain example.com
40
+ myhost.example.com`
41
+
42
+ Options:
43
+ EOS
44
+
45
+ # @return [AWS::EC2] EC2 SDK
46
+ attr_reader :ec2
47
+ # @return [String] Theme string
48
+ attr_reader :theme
49
+ # @return [String] Host name
50
+ attr_reader :host
51
+ # @return [String] Domain name
52
+ attr_reader :domain
53
+ # @return [Array] Command specific arguments
54
+ attr_reader :arguments
55
+
56
+ def initialize(argv = [])
57
+ @arguments ||= argv
58
+ @theme ||= cli.ec2_tag_theme
59
+ @host ||= cli.host
60
+ @domain ||= cli.domain
61
+ end
62
+
63
+ # Specifies command line options
64
+ # This method smells of :reek:TooManyStatements but ignores them
65
+ def parser
66
+ Trollop::Parser.new do
67
+ banner USAGE
68
+ opt :ec2_tag_theme, 'Theme (default: Group-Role-#)',
69
+ type: :string, default: 'Group-Role-#', short: '-t'
70
+ opt :host, 'Host name', type: :string, short: '-n'
71
+ opt :domain, 'Domain name', type: :string, short: '-d'
72
+ stop_on_unknown
73
+ end
74
+ end
75
+
76
+ # Parses command line arguments
77
+ def cli
78
+ @cli ||= Trollop.with_standard_exception_handling parser do
79
+ parser.parse arguments
80
+ end
81
+ end
82
+
83
+ # Loads AWS::EC2
84
+ # This method smells of :reek:UncommunicativeMethodName but ignores it
85
+ def ec2
86
+ @ec2 ||= VScripts::AWS::EC2.new
87
+ end
88
+
89
+ # @return [Array] Splits theme into elements
90
+ def theme_elements
91
+ theme.split('-')
92
+ end
93
+
94
+ # @return [Array] An array of values for each tag specified in the theme
95
+ def map2tags
96
+ theme_elements.map do |element|
97
+ element == '#' ? element : ec2.tag(element)
98
+ end
99
+ end
100
+
101
+ # @return [String] Compose host name based on found tags
102
+ def themed_host_name
103
+ map2tags.compact.join('-')
104
+ end
105
+
106
+ # @return [String] The incremented host name
107
+ def incremented_hostname
108
+ number = 1
109
+ while ec2.similar_instances.include? "#{themed_host_name}.#{domain}"
110
+ .sub(/#/, "#{number}")
111
+ number += 1
112
+ end
113
+ "#{themed_host_name}".sub(/#/, "#{number}")
114
+ end
115
+
116
+ # @return [String] The command line --host argument or the themed hostname
117
+ def new_hostname
118
+ host || incremented_hostname || local_host_name
119
+ end
120
+
121
+ # @return [String] The value of the command line --domain argument, or the
122
+ # value of the 'Domain' EC2 tag or the local domain name.
123
+ def new_domain
124
+ domain || ec2.tag('Domain') || local_domain_name
125
+ end
126
+
127
+ # @return [String] The fully qualified domain name
128
+ def new_fqdn
129
+ "#{new_hostname}.#{new_domain}"
130
+ end
131
+
132
+ # Modify the 'Name' tag
133
+ def set_name_tag
134
+ return if ec2.tag('Name') == new_fqdn
135
+ puts "Setting name tag to \"#{new_fqdn}\"..."
136
+ ec2.create_tag(ec2.instance, 'Name', value: new_fqdn)
137
+ end
138
+
139
+ # Modify the host name
140
+ def set_hostname
141
+ return if File.read(hostname_path).strip == new_hostname
142
+ puts "Setting local hostname (#{new_hostname})..."
143
+ write_file(hostname_path, new_hostname)
144
+ `hostname -F /etc/hostname`
145
+ end
146
+
147
+ # Modify the hosts file
148
+ def update_hosts
149
+ return if File.readlines(hosts_path)
150
+ .grep(/#{new_fqdn} #{new_hostname}/)
151
+ .any?
152
+ hosts_body = hosts_file.gsub(
153
+ /^127\.0\.0\.1.*/,
154
+ "127\.0\.0\.1 #{new_fqdn} #{new_hostname} localhost"
155
+ )
156
+ puts "Adding \"#{new_fqdn}\" to #{hosts_path}..."
157
+ write_file(hosts_path, hosts_body)
158
+ end
159
+
160
+ # Executes the command
161
+ def execute
162
+ set_name_tag
163
+ set_hostname
164
+ update_hosts
165
+ puts 'Done.'
166
+ end
167
+ end # class Identify
168
+ end # module Commands
169
+ end # module VScripts
@@ -36,7 +36,6 @@ module VScripts
36
36
 
37
37
  def initialize(argv = [])
38
38
  @arguments ||= argv
39
- @ec2 ||= VScripts::AWS::EC2.new
40
39
  end
41
40
 
42
41
  # Specifies command line options
@@ -50,6 +49,12 @@ module VScripts
50
49
  end
51
50
  end
52
51
 
52
+ # Loads AWS EC2
53
+ # This method smells of :reek:UncommunicativeMethodName but ignores it
54
+ def ec2
55
+ @ec2 ||= VScripts::AWS::EC2.new
56
+ end
57
+
53
58
  # Parses command line arguments
54
59
  def cli
55
60
  @cli ||= Trollop.with_standard_exception_handling parser do
@@ -62,14 +67,22 @@ module VScripts
62
67
  cli.all ? [] : %w(Name Domain)
63
68
  end
64
69
 
65
- # @return [Hash] Tags table
66
- def tags_hash
67
- ec2.tags_without(exclude_list).to_h
70
+ # @return [Hash] Filtered tags
71
+ def filtered_tags
72
+ ec2.tags_without(exclude_list).each_with_object({}) do |tag, hash|
73
+ hash[tag[0]] = tag[1]
74
+ hash
75
+ end
68
76
  end
69
77
 
70
78
  # @return [JSON] Formatted JSON
71
79
  def tags_json
72
- JSON.pretty_generate(tags_hash.to_h)
80
+ tags_hash = filtered_tags
81
+ if tags_hash.empty?
82
+ abort 'No tags were found!'
83
+ else
84
+ JSON.pretty_generate(tags_hash)
85
+ end
73
86
  end
74
87
 
75
88
  # Writes the formatted JSON to a file
@@ -11,6 +11,11 @@ module VScripts
11
11
  '/etc/hosts'
12
12
  end
13
13
 
14
+ # @return[String] The contents of the hosts file
15
+ def hosts_file
16
+ File.read(hosts_path)
17
+ end
18
+
14
19
  # Hostname file path
15
20
  def hostname_path
16
21
  '/etc/hostname'
@@ -29,6 +34,8 @@ module VScripts
29
34
  # Returns the local domain name
30
35
  def local_domain_name
31
36
  `dnsdomainname`.strip
37
+ rescue
38
+ 'local'
32
39
  end
33
40
 
34
41
  # Tries to get the reverse dns
@@ -21,6 +21,7 @@ describe VScripts::AWS::EC2 do
21
21
  @ec2 = VScripts::AWS::EC2
22
22
  @ec2.any_instance.stub(:check_instance) { true }
23
23
  @ec2.any_instance.stub(:instance_id) { @inst1.id }
24
+ @ec2.any_instance.stub(:region) { 'us-east-1' }
24
25
  end
25
26
 
26
27
  describe '#instance' do
@@ -43,6 +44,14 @@ describe VScripts::AWS::EC2 do
43
44
  end
44
45
  end
45
46
 
47
+ describe '#tag' do
48
+ it 'returns the tag value' do
49
+ subject.stub_chain(:instance, :tags) {@tags}
50
+ expect(subject.tag('Name'))
51
+ .to eq('test')
52
+ end
53
+ end
54
+
46
55
  describe '#tags_without' do
47
56
  it 'returns a Hash' do
48
57
  expect(subject.tags_without)
@@ -0,0 +1,111 @@
1
+ require 'spec_helper'
2
+ require 'vscripts/commands/identify'
3
+
4
+ describe VScripts::Commands::Identify do
5
+ before :each do
6
+ @identify = VScripts::Commands::Identify.new
7
+ @identify.stub_chain(:ec2, :tag).with('Group') {'TestGroup'}
8
+ @identify.stub_chain(:ec2, :tag).with('Role') {'TestRole'}
9
+ @identify.stub_chain(:ec2, :similar_instances) {[
10
+ 'TestGroup-TestRole-1.'
11
+ ]}
12
+ end
13
+
14
+ describe '#new' do
15
+ context 'when theme is not passed' do
16
+ it 'returns the default theme' do
17
+ expect(@identify.theme).to eq('Group-Role-#')
18
+ end
19
+ end
20
+ context 'when theme is passed' do
21
+ it 'returns the theme' do
22
+ @identify = VScripts::Commands::Identify.new(['--ec2-tag-theme=test'])
23
+ expect(@identify.theme).to eq('test')
24
+ end
25
+ end
26
+ context 'when host is not passed' do
27
+ it 'host is nil' do
28
+ expect(@identify.host).to be_nil
29
+ end
30
+ end
31
+ context 'when host is passed' do
32
+ it 'returns the host' do
33
+ @identify = VScripts::Commands::Identify.new(['--host=test'])
34
+ expect(@identify.host).to eq('test')
35
+ end
36
+ end
37
+ context 'when domain is not passed' do
38
+ it 'domain is nil' do
39
+ expect(@identify.domain).to be_nil
40
+ end
41
+ end
42
+ context 'when domain is passed' do
43
+ it 'returns the domain' do
44
+ @identify = VScripts::Commands::Identify.new(['--domain=test'])
45
+ expect(@identify.domain).to eq('test')
46
+ end
47
+ end
48
+ end
49
+
50
+ describe '#theme_elements' do
51
+ it 'returns an array' do
52
+ expect(@identify.theme_elements).to eq(['Group', 'Role', '#'])
53
+ end
54
+ end
55
+
56
+ describe '#map2tags' do
57
+ it 'returns an array' do
58
+ expect(@identify.map2tags).to eq(['TestGroup', 'TestRole', '#'])
59
+ end
60
+ end
61
+
62
+ describe '#themed_host_name' do
63
+ it 'returns a string' do
64
+ expect(@identify.themed_host_name).to eq('TestGroup-TestRole-#')
65
+ end
66
+ end
67
+
68
+ describe '#incremented_hostname' do
69
+ it 'returns a string' do
70
+ expect(@identify.incremented_hostname).to eq('TestGroup-TestRole-2')
71
+ end
72
+ end
73
+
74
+ describe '#new_hostname' do
75
+ context 'when host is not passed' do
76
+ it 'hostname is incremented' do
77
+ expect(@identify.new_hostname).to eq('TestGroup-TestRole-2')
78
+ end
79
+ end
80
+ context 'when host is passed' do
81
+ it 'returns a string' do
82
+ @identify = VScripts::Commands::Identify.new(['--host=test'])
83
+ expect(@identify.new_hostname).to eq('test')
84
+ end
85
+ end
86
+ end
87
+
88
+ describe '#new_domain' do
89
+ context 'when domain is not passed' do
90
+ context 'when tag is not present' do
91
+ it 'returns a String' do
92
+ @identify.stub_chain(:ec2, :tag).with('Domain') {nil}
93
+ @identify.stub(:local_domain_name) {'local'}
94
+ expect(@identify.new_domain).to eq('local')
95
+ end
96
+ end
97
+ context 'when tag is present' do
98
+ it 'returns a String' do
99
+ @identify.stub_chain(:ec2, :tag).with('Domain') {'Test'}
100
+ expect(@identify.new_domain).to eq('Test')
101
+ end
102
+ end
103
+ end
104
+ context 'when domain is passed' do
105
+ it 'returns a string' do
106
+ @identify = VScripts::Commands::Identify.new(['--domain=test'])
107
+ expect(@identify.new_domain).to eq('test')
108
+ end
109
+ end
110
+ end
111
+ end
@@ -3,6 +3,7 @@ require 'vscripts/commands/tags2facts'
3
3
  describe VScripts::Commands::Tags2facts do
4
4
 
5
5
  before :each do
6
+ VScripts::AWS::EC2.any_instance.stub(:region) { 'us-east-1' }
6
7
  @tags2facts = VScripts::Commands::Tags2facts.new(['extra_args'])
7
8
  end
8
9
 
@@ -27,7 +28,7 @@ describe VScripts::Commands::Tags2facts do
27
28
 
28
29
  describe '#tags_json' do
29
30
  it 'returns JSON formatted string' do
30
- @tags2facts.stub_chain(:tags_hash, :to_h) {{ key: 'value' }}
31
+ @tags2facts.stub(:filtered_tags) {{ key: 'value' }}
31
32
  expect(@tags2facts.tags_json).to eq("{\n \"key\": \"value\"\n}")
32
33
  end
33
34
  end
@@ -3,9 +3,25 @@ LOG_RANGE = "master...#{DEV_BRANCH}"
3
3
  VERSION_FILE = 'VERSION'
4
4
  CHANGELOG_FILE = 'CHANGELOG.md'
5
5
 
6
- desc 'Automated deployment'
7
- task :deploy do
8
- check_branch
6
+ namespace 'deploy' do
7
+ desc 'Automated deployment (increment patch)'
8
+ task :patch do
9
+ bump_version('patch')
10
+ deploy
11
+ end
12
+ desc 'Automated deployment (increment minor)'
13
+ task :minor do
14
+ bump_version('minor')
15
+ deploy
16
+ end
17
+ desc 'Automated deployment (increment major)'
18
+ task :major do
19
+ bump_version('major')
20
+ deploy
21
+ end
22
+ end
23
+
24
+ def deploy
9
25
  commit_changelog
10
26
  merge_changes
11
27
  push_release
@@ -21,12 +37,20 @@ def check_branch
21
37
  `git fetch`
22
38
  end
23
39
 
24
- def bump_version
40
+ def bump_version(type = 'patch')
41
+ check_branch
25
42
  @version = File.read(VERSION_FILE).strip
26
43
  @version.gsub(/(\d+)\.(\d+)\.(\d+)/) {
27
44
  @major, @minor, @patch = $1.to_i, $2.to_i, $3.to_i
28
45
  }
29
- @new_version = "#{@major}.#{@minor}.#{@patch + 1}"
46
+ case type
47
+ when 'patch'
48
+ @new_version = "#{@major}.#{@minor}.#{@patch + 1}"
49
+ when 'minor'
50
+ @new_version = "#{@major}.#{@minor + 1}.0"
51
+ when 'major'
52
+ @new_version = "#{@major + 1}.0.0"
53
+ end
30
54
  File.write('VERSION', @new_version)
31
55
  end
32
56
 
@@ -43,7 +67,6 @@ def pretty_changes
43
67
  end
44
68
 
45
69
  def update_changelog
46
- bump_version
47
70
  puts 'Writing new changelog'
48
71
  File.write(
49
72
  CHANGELOG_FILE,
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: vscripts
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.3
4
+ version: 0.1.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Vlad Ghinea
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-05-23 00:00:00.000000000 Z
11
+ date: 2014-05-29 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: aws-sdk
@@ -216,6 +216,7 @@ files:
216
216
  - lib/vscripts/aws/metadata.rb
217
217
  - lib/vscripts/command.rb
218
218
  - lib/vscripts/command_line.rb
219
+ - lib/vscripts/commands/identify.rb
219
220
  - lib/vscripts/commands/tags2facts.rb
220
221
  - lib/vscripts/util/local_system.rb
221
222
  - lib/vscripts/version.rb
@@ -225,6 +226,7 @@ files:
225
226
  - spec/vscripts/aws_spec.rb
226
227
  - spec/vscripts/command_line_spec.rb
227
228
  - spec/vscripts/command_spec.rb
229
+ - spec/vscripts/commands/identify_spec.rb
228
230
  - spec/vscripts/commands/tags2facts_spec.rb
229
231
  - spec/vscripts/util/local_system_spec.rb
230
232
  - spec/vscripts/version_spec.rb
@@ -263,6 +265,7 @@ test_files:
263
265
  - spec/vscripts/aws_spec.rb
264
266
  - spec/vscripts/command_line_spec.rb
265
267
  - spec/vscripts/command_spec.rb
268
+ - spec/vscripts/commands/identify_spec.rb
266
269
  - spec/vscripts/commands/tags2facts_spec.rb
267
270
  - spec/vscripts/util/local_system_spec.rb
268
271
  - spec/vscripts/version_spec.rb