cfn_manage 0.6.0 → 0.7.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
  SHA256:
3
- metadata.gz: 035ab73bb14da783dcba810528e796a5a5fd21cea291b533b69a54aeeab66930
4
- data.tar.gz: c3317a41490aa56e188e5692d1edf9e64be73ca800bd172906c58297137135ec
3
+ metadata.gz: cb08cd584ef82577a2d39c688d07e5352113d94bc77bb82b260b311aa4928e8d
4
+ data.tar.gz: 89ea17602c3daddbd0019bc51aa4ae474a975e948470520d9529f0ebe4d17203
5
5
  SHA512:
6
- metadata.gz: 0e81937b62aa1ae30ae87b18376103d3b27dbf8a942422655524d97818082be1e4da70e455fd6139df6060a49e89aff5bda20af9ea9c422629b20c1a51cad2a5
7
- data.tar.gz: 389307f1ac698c5d52e2bc8e612f01d0bb85252c4e71f07cdf14e36a6547577be4f9a46a7474a4b1f8f3f323beddc0465a2d5c9251d82a7359b8d1b13f7e815d
6
+ metadata.gz: 6e525014378d5c3b3011aa871fce84d0a26175f067c90fd0d2185c6d354eda26340f59ccf2348b6b8eb5c73aa43cb772c689eed0bc16bcfceab8cdfd6202b4cc
7
+ data.tar.gz: 5b73fc500491e92a9871c1abebd7c9f8d4c480a7a6b1ab06cba002fc46c492648e6c377afdfba4306140fcbb8aab08f68f7643d143737ab4fc6af1ac388651e9
@@ -58,6 +58,10 @@ OptionParser.new do |opts|
58
58
  $options['DOCDB_CLUSTER_ID'] = cluster
59
59
  end
60
60
 
61
+ opts.on('--transfer-server-id [TRANSFER_SERVER_ID]') do |server|
62
+ $options['TRANSFER_SERVER_ID'] = server
63
+ end
64
+
61
65
  opts.on('--ec2-instance-id [EC2_INSTANCE_ID]') do |ec2|
62
66
  $options['EC2_INSTANCE_ID'] = ec2
63
67
  end
@@ -143,6 +147,12 @@ case command
143
147
  when 'start-docdb-cluster'
144
148
  CfnManage::CloudFormation::EnvironmentRunStop.new().start_resource($options['DOCDB_CLUSTER_ID'],'AWS::DocDB::DBCluster')
145
149
 
150
+ # docdb cluster commands
151
+ when 'stop-transfer-server'
152
+ CfnManage::CloudFormation::EnvironmentRunStop.new().stop_resource($options['TRANSFER_SERVER_ID'],'AWS::Transfer::Server')
153
+ when 'start-transfer-server'
154
+ CfnManage::CloudFormation::EnvironmentRunStop.new().start_resource($options['TRANSFER_SERVER_ID'],'AWS::Transfer::Server')
155
+
146
156
  # ec2 instance
147
157
  when 'stop-ec2'
148
158
  CfnManage::CloudFormation::EnvironmentRunStop.new().stop_resource($options['EC2_INSTANCE_ID'],'AWS::EC2::Instance')
@@ -26,6 +26,10 @@ cfn_manage stop-docdb-cluster --docdb-cluster-id [DOCDB_CLUSTER_ID]
26
26
 
27
27
  cfn_manage start-docdb-cluster --docdb-cluster-id [DOCDB_CLUSTER_ID]
28
28
 
29
+ cfn_manage stop-transfer-server --transfer-server-id [TRANSFER_SERVER_ID]
30
+
31
+ cfn_manage start-transfer-server --transfer-server-id [TRANSFER_SERVER_ID]
32
+
29
33
  cfn_manage stop-ec2 --ec2-instance-id [EC2_INSTANCE_ID]
30
34
 
31
35
  cfn_manage start-ec2 --ec2-instance-id [EC2_INSTANCE_ID]
@@ -141,6 +141,7 @@ module CfnManage
141
141
  allHealthy += 1
142
142
  else
143
143
  $log.info("Instance #{instance.instance_id} not currently healthy...")
144
+ sleep(15)
144
145
  end
145
146
  end
146
147
 
@@ -32,6 +32,7 @@ module CfnManage
32
32
  'AWS::AutoScaling::AutoScalingGroup' => '200',
33
33
  'AWS::EC2::Instance' => '200',
34
34
  'AWS::EC2::SpotFleet' => '200',
35
+ 'AWS::Transfer::Server' => '200',
35
36
  'AWS::ECS::Cluster' => '250',
36
37
  'AWS::CloudWatch::Alarm' => '300'
37
38
  }
@@ -6,6 +6,7 @@ require 'cfn_manage/alarm_start_stop_handler'
6
6
  require 'cfn_manage/spot_fleet_start_stop_handler'
7
7
  require 'cfn_manage/ecs_cluster_start_stop_handler'
8
8
  require 'cfn_manage/documentdb_cluster_start_stop_handler'
9
+ require 'cfn_manage/transfer_start_stop_handler'
9
10
 
10
11
  module CfnManage
11
12
 
@@ -40,6 +41,9 @@ module CfnManage
40
41
  when 'AWS::ECS::Cluster'
41
42
  return CfnManage::EcsClusterStartStopHandler.new(resource_id, skip_wait)
42
43
 
44
+ when 'AWS::Transfer::Server'
45
+ return CfnManage::TransferStartStopHandler.new(resource_id, skip_wait)
46
+
43
47
  else
44
48
  return nil
45
49
  end
@@ -0,0 +1,97 @@
1
+ require 'cfn_manage/aws_credentials'
2
+ require 'aws-sdk-transfer'
3
+
4
+ module CfnManage
5
+
6
+ class TransferStartStopHandler
7
+
8
+ def initialize(server_id, skip_wait)
9
+ sftpId = server_id.split("/")
10
+ @server_id = sftpId.last
11
+ @skip_wait = skip_wait
12
+ credentials = CfnManage::AWSCredentials.get_session_credentials("startstoptransfer_#{@server_id}")
13
+ @client = Aws::Transfer::Client.new(retry_limit: 20)
14
+ if credentials != nil
15
+ @client = Aws::Transfer::Client.new(credentials: credentials, retry_limit: 20)
16
+ end
17
+ end
18
+
19
+ def start(configuration)
20
+
21
+ state = get_state()
22
+
23
+ if state != "OFFLINE"
24
+ $log.warn("SFTP Server #{@server_id} is in a state of #{state} and can not be started.")
25
+ return
26
+ end
27
+
28
+ $log.info("Starting SFTP Server #{@server_id}")
29
+ @client.start_server({
30
+ server_id: @server_id,
31
+ })
32
+ unless @skip_wait
33
+ $log.info("Waiting for SFTP to start #{@cluster_id}")
34
+ wait('ONLINE')
35
+ end
36
+
37
+ return configuration
38
+ end
39
+
40
+ def stop()
41
+
42
+ state = get_state()
43
+
44
+ if state != "ONLINE"
45
+ $log.warn("SFTP Server #{@server_id} is in a state of #{state} and can not be stopped.")
46
+ return {}
47
+ end
48
+
49
+ @client.stop_server({
50
+ server_id: @server_id,
51
+ })
52
+ unless @skip_wait
53
+ $log.info("Waiting for SFTP to stop #{@cluster_id}")
54
+ wait('OFFLINE')
55
+ end
56
+ return {}
57
+ end
58
+
59
+ def get_state()
60
+ resp = @client.describe_server({
61
+ server_id: @server_id,
62
+ })
63
+ return resp.server.state
64
+ end
65
+
66
+ def wait(completed_state)
67
+
68
+ state_count = 0
69
+ steady_count = 2
70
+ attempts = 0
71
+ until attempts == (max_attempts = 60*6) do
72
+ state = get_state()
73
+ $log.info("SFTP Server #{@server_id} state: #{state}, waiting for #{completed_state}")
74
+
75
+ if state == "#{completed_state}"
76
+ state_count = state_count + 1
77
+ $log.info("#{state_count}/#{steady_count}")
78
+ elsif ["START_FAILED", "STOP_FAILED"].include?(state)
79
+ $log.error("SFTP Server #{@server_id} failed to reach state #{completed_state} with current state #{state}!")
80
+ break
81
+ else
82
+ state_count = 0
83
+ end
84
+ break if state_count == steady_count
85
+ attempts = attempts + 1
86
+ sleep(15)
87
+ end
88
+
89
+ if attempts == max_attempts
90
+ $log.error("SFTP Server #{@server_id} did not enter #{completed_state} state, however continuing operations...")
91
+ end
92
+
93
+ end
94
+
95
+ end
96
+
97
+ end
@@ -1,3 +1,3 @@
1
1
  module CfnManage
2
- VERSION="0.6.0".freeze
2
+ VERSION="0.7.0".freeze
3
3
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: cfn_manage
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.6.0
4
+ version: 0.7.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Base2Services
@@ -10,7 +10,7 @@ authors:
10
10
  autorequire:
11
11
  bindir: bin
12
12
  cert_chain: []
13
- date: 2019-07-11 00:00:00.000000000 Z
13
+ date: 2019-08-09 00:00:00.000000000 Z
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
16
  name: aws-sdk-core
@@ -212,6 +212,26 @@ dependencies:
212
212
  - - "<"
213
213
  - !ruby/object:Gem::Version
214
214
  version: '2'
215
+ - !ruby/object:Gem::Dependency
216
+ name: aws-sdk-transfer
217
+ requirement: !ruby/object:Gem::Requirement
218
+ requirements:
219
+ - - "~>"
220
+ - !ruby/object:Gem::Version
221
+ version: '1'
222
+ - - "<"
223
+ - !ruby/object:Gem::Version
224
+ version: '2'
225
+ type: :runtime
226
+ prerelease: false
227
+ version_requirements: !ruby/object:Gem::Requirement
228
+ requirements:
229
+ - - "~>"
230
+ - !ruby/object:Gem::Version
231
+ version: '1'
232
+ - - "<"
233
+ - !ruby/object:Gem::Version
234
+ version: '2'
215
235
  - !ruby/object:Gem::Dependency
216
236
  name: bundler
217
237
  requirement: !ruby/object:Gem::Requirement
@@ -333,6 +353,7 @@ files:
333
353
  - lib/cfn_manage/rds_start_stop_handler.rb
334
354
  - lib/cfn_manage/spot_fleet_start_stop_handler.rb
335
355
  - lib/cfn_manage/start_stop_handler_factory.rb
356
+ - lib/cfn_manage/transfer_start_stop_handler.rb
336
357
  - lib/cfn_manage/version.rb
337
358
  homepage: https://github.com/base2Services/cfn-start-stop-stack/blob/master/README.md
338
359
  licenses: