rezept 0.2.0 → 0.3.0

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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 93ba080e87808028a6d1edb483253b8d3bc721e8
4
- data.tar.gz: e725df836b7f0b506af99e7a466e94ce7884c20a
3
+ metadata.gz: e1a63c85f4f727f5f7f62cf237216d194f59e084
4
+ data.tar.gz: 208608be750743f64f5e4e5b707d7bc1596751f1
5
5
  SHA512:
6
- metadata.gz: c0bcb318a0130aaab5d6dd78ab73668eaf68dc81074d51ec3a9e50d8b6d7619f6583e362479561e257870cf07de9f3185f18dea62da7edd4a6f072bbfd33c085
7
- data.tar.gz: 11bbdf453fa3b64696ad5febbb9cef60096737d3814cc0b0c2c9cc8202234891a921c421f28961b8f7923a5d759fab0bc88c7be4d3a84a513ae42dab989a2be8
6
+ metadata.gz: 3439526ec9d6f927172b56590bc343d7e24a0c7ff8d2651834145a677fc94ab01f14a699a5413ea9b01021c246843184f85339296671785250a390b9071dd042
7
+ data.tar.gz: 726585c29de47da270c4129d780bd275a7ec3e0cfa9b101ba2cab6657a4b56a76430299a738fdc58767bdb9a71f6176711363f75a57c3ebd40d47676ee38e8ef
data/CHANGELOG.md CHANGED
@@ -1,3 +1,9 @@
1
+ ## 0.3.0
2
+ - Add `--wait-entries option` to `run_command` [#3][]
3
+ - Change `--wait` option to `--wait-results` option
4
+ - Add `--wait-entries` option
5
+ - Bugfix
6
+
1
7
  ## 0.2.0
2
8
  - Add `put_inventory` command [#2][]
3
9
  - Add the options to search target instances from inventory to `run_command` [#2][]
@@ -17,4 +23,5 @@
17
23
 
18
24
  <!--- The following link definition list is generated by PimpMyChangelog --->
19
25
  [#1]: https://github.com/serverworks/rezept/issues/1
20
- [#2]: https://github.com/serverworks/rezept/issues/2
26
+ [#2]: https://github.com/serverworks/rezept/issues/2
27
+ [#3]: https://github.com/serverworks/rezept/issues/3
data/README.md CHANGED
@@ -112,21 +112,22 @@ Usage:
112
112
  rezept run_command -d, --document=DOCUMENT
113
113
 
114
114
  Options:
115
- -d, --document=DOCUMENT # The name of the document
116
- -i, [--instance-ids=one two three] # EC2 Instance IDs
117
- -t, [--tags=key:value] # EC2 Instance tags
118
- -I, [--inventory=INVENTORY] # The name of the inventory type
119
- -C, [--conditions=one two three] # The conditions to search inventories (ex. "Foo = Bar", "Buz > 1.0")
120
- -p, [--parameters=key:value] # Parameters for the document
121
- [--dry-run], [--no-dry-run] # Dry run (Only output the targets)
122
- [--wait], [--no-wait] # Wait and check for all results
123
- -f, [--file=FILE] # Configuration file
124
- # Default: Docfile
125
- [--color], [--no-color] # Disable colorize
126
- # Default: true
127
- [--amazon-docs], [--no-amazon-docs] # Include Amazon owned documents
128
- [--dsl-content], [--no-dsl-content] # Convert JSON contents to DSL
129
- # Default: true
115
+ -d, --document=DOCUMENT # The name of the document
116
+ -i, [--instance-ids=one two three] # EC2 Instance IDs
117
+ -t, [--tags=key:value] # EC2 Instance tags
118
+ -I, [--inventory=INVENTORY] # The name of the inventory type
119
+ -C, [--conditions=one two three] # The conditions to search inventories (ex. "Foo = Bar", "Buz > 1.0")
120
+ -p, [--parameters=key:value] # Parameters for the document
121
+ [--dry-run], [--no-dry-run] # Dry run (Only output the targets)
122
+ [--wait-entries], [--no-wait-entries] # Wait for entries of managed instances
123
+ [--wait-results], [--no-wait-results] # Wait and check for all results
124
+ -f, [--file=FILE] # Configuration file
125
+ # Default: Docfile
126
+ [--color], [--no-color] # Disable colorize
127
+ # Default: true
128
+ [--amazon-docs], [--no-amazon-docs] # Include Amazon owned documents
129
+ [--dsl-content], [--no-dsl-content] # Convert JSON contents to DSL
130
+ # Default: true
130
131
  ```
131
132
 
132
133
  - If you specify multiple values to `tags` and `parameters`, separate them with commas(`,`).
@@ -167,7 +168,7 @@ Command "My-RunShellScript" do
167
168
  content do
168
169
  __dsl do
169
170
  schemaVersion "2.0"
170
- description "my Run a shell script or specify the path to a script to run."
171
+ description "Run a shell script."
171
172
  mainSteps do |*|
172
173
  action "aws:runShellScript"
173
174
  name "runShellScript"
@@ -74,28 +74,40 @@ module Rezept
74
74
 
75
75
  def run_command(options)
76
76
  dry_run = options['dry_run'] ? '[Dry run] ' : ''
77
+ @client.set_options(options)
77
78
 
78
79
  if options['instance_ids'].nil? and options['tags'].nil? and (options['inventory'].nil? or options['conditions'].nil?)
79
80
  raise "Please specify the targets (--instance-ids/-i' or '--target-tags/-t' or '--inventroty/-I and --conditions/-C')"
80
81
  end
81
82
 
82
- instances = @client.get_target_instances(
83
+ instances = @client.get_instances(
83
84
  options['instance_ids'],
84
85
  _tags_to_criteria(options['tags'], 'name')
85
86
  )
86
87
 
88
+ instance_ids = []
89
+ instances.each {|i| instance_ids << i.instance_id }
90
+ managed_instances = @client.get_managed_instances(instance_ids)
91
+
92
+ if options['wait_entries']
93
+ info("#{dry_run}Wait for entries of managed instances...")
94
+ while instances.length > 0 and managed_instances.length == 0
95
+ managed_instances = @client.get_managed_instances(instance_ids)
96
+ end
97
+ end
98
+
87
99
  info("#{dry_run}Target instances...")
88
100
 
89
101
  unless options['inventory'].nil?
90
- instances = _filter_by_inventory(instances, options['inventory'], options['conditions'])
91
- raise "Can't find target instances from inventories" if instances.empty?
102
+ managed_instances = _filter_by_inventory(managed_instances, options['inventory'], options['conditions'])
103
+ raise "Can't find target instances from inventories" if managed_instances.empty?
92
104
  end
93
- _print_instances(instances)
105
+ _print_instances(managed_instances)
94
106
 
95
107
  instance_ids = options['instance_ids']
96
108
  if instance_ids.nil? and not options['inventory'].nil?
97
109
  instance_ids = []
98
- instances.each {|i| instance_ids << i.instance_id}
110
+ managed_instances.each {|i| instance_ids << i.instance_id}
99
111
  end
100
112
 
101
113
  if dry_run.empty?
@@ -105,7 +117,7 @@ module Rezept
105
117
  _tags_to_criteria(options['tags'], 'key'),
106
118
  _convert_paraeters(options['parameters'])
107
119
  )
108
- _wait_all_results(command.command_id) if options['wait']
120
+ _wait_all_results(command.command_id) if options['wait_results']
109
121
  end
110
122
  end
111
123
 
@@ -113,12 +125,12 @@ module Rezept
113
125
  filters = _conditions_to_filters(conditions)
114
126
  ret = []
115
127
  instances.each do |i|
116
- inventory = @client.list_inventory_entries(
128
+ inventory_entries = @client.list_inventory_entries(
117
129
  i.instance_id,
118
130
  inventory,
119
131
  filters,
120
132
  )
121
- ret << i unless inventory.entries.empty?
133
+ ret << i unless inventory_entries.entries.empty?
122
134
  end
123
135
  ret
124
136
  end
@@ -134,11 +146,10 @@ module Rezept
134
146
 
135
147
  def _print_instances(instances)
136
148
  instances.each do |instance|
137
- name_tag = instance.tags.select {|i| i.key == 'Name'}
138
- if name_tag.empty?
149
+ if instance.name.nil?
139
150
  info("- #{instance.instance_id}")
140
151
  else
141
- info("- #{name_tag[0].value} (#{instance.instance_id})")
152
+ info("- #{instance.name} (#{instance.instance_id})")
142
153
  end
143
154
  end
144
155
  end
data/lib/rezept/cli.rb CHANGED
@@ -45,7 +45,8 @@ module Rezept
45
45
  option :conditions, aliases: '-C', desc: 'The conditions to search inventories (ex. "Foo = Bar", "Buz > 1.0")', type: :array
46
46
  option :parameters, aliases: '-p', desc: 'Parameters for the document', type: :hash
47
47
  option :dry_run, desc: 'Dry run (Only output the targets)', type: :boolean, default: false
48
- option :wait, desc: 'Wait and check for all results', type: :boolean, default: false
48
+ option :wait_entries, desc: 'Wait for entries of managed instances', type: :boolean, default: false
49
+ option :wait_results, desc: 'Wait and check for all results', type: :boolean, default: false
49
50
  def run_command
50
51
  @actions.run_command(options)
51
52
  end
data/lib/rezept/client.rb CHANGED
@@ -62,7 +62,7 @@ module Rezept
62
62
  )
63
63
  end
64
64
 
65
- def get_target_instances(instance_ids=nil, filters=nil, next_token=nil)
65
+ def get_instances(instance_ids=nil, filters=nil, next_token=nil)
66
66
  instances = []
67
67
 
68
68
  ret = @ec2.describe_instances(
@@ -74,7 +74,22 @@ module Rezept
74
74
  instances.concat(reservation.instances)
75
75
  end
76
76
 
77
- instances.concat(get_target_instances(instance_ids, filters, ret.next_token)) unless ret.next_token.nil?
77
+ instances.concat(get_instances(instance_ids, filters, ret.next_token)) unless ret.next_token.nil?
78
+ instances
79
+ end
80
+
81
+ def get_managed_instances(instance_ids, next_token=nil)
82
+ instances = []
83
+
84
+ ret = @ssm.describe_instance_information(
85
+ filters: [{
86
+ key: "InstanceIds",
87
+ values: instance_ids
88
+ }],
89
+ next_token: next_token
90
+ )
91
+ instances = ret.instance_information_list
92
+ instances.concat(get_target_instances(instance_ids, ret.next_token)) unless ret.next_token.nil?
78
93
  instances
79
94
  end
80
95
 
@@ -1,3 +1,3 @@
1
1
  module Rezept
2
- VERSION = "0.2.0"
2
+ VERSION = "0.3.0"
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rezept
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.0
4
+ version: 0.3.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Serverworks Co.,Ltd.
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2017-03-02 00:00:00.000000000 Z
11
+ date: 2017-03-08 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: aws-sdk