CloudyScripts 0.0.11 → 0.0.12

Sign up to get free protection for your applications and to get access to all the features.
@@ -1,52 +1,101 @@
1
- # Base class for any script on EC2.
2
- class Ec2Script
3
- # Initialization. Common Input parameters:
4
- # * aws_access_key => the Amazon AWS Access Key (see Your Account -> Security Credentials)
5
- # * aws_secret_key => the Amazon AWS Secret Key
6
- # * ec2_api_server => the API Server to connect to (optional, default is us-east-1 (=> <ec2_api_server>.ec2.amazonaws.com)
7
- # * logger => allows to pass a ruby logger object used for logging (optional, default is a stdout logger with level WARN)
8
- # Scripts may add specific key/value pairs.
9
- def initialize(input_params)
10
- @input_params = input_params
11
- @state_change_listeners = []
12
- @progress_message_listeners = []
13
- if input_params[:logger] == nil
14
- @logger = Logger.new(STDOUT)
15
- @logger .level = Logger::WARN
16
- input_params[:logger] = @logger
17
- end
18
- @result = {:done => false, :failed => false}
19
- @input_params[:result] = @result
20
- end
21
-
22
- def register_state_change_listener(listener)
23
- @state_change_listeners << listener
24
- end
25
-
26
- def register_progress_message_listener(listener)
27
- @progress_message_listeners << listener
28
- end
29
-
30
- def start_script
31
- raise Exception.new("must be implemented")
32
- end
33
-
34
- # Return a hash of results. Common values are:
35
- # * :done => is true when the script has terminated, otherwise false
36
- # * :failed => is false when the script succeeded
37
- # * :failure_reason => returns a failure reason (string)
38
- # * :end_state => returns the state, in which the script terminated (#Help::ScriptExecutionState)
39
- # Scripts may add specific key/value pairs.
40
- # *
41
- def get_execution_result
42
- raise Exception.new("must be implemented")
43
- end
44
-
45
- def post_message(message, level = Logger::DEBUG)
46
- @progress_message_listeners.each() {|listener|
47
- listener.new_message(message, level)
48
- }
49
- end
50
-
51
- end
52
-
1
+ # Base class for any script on EC2.
2
+ class Ec2Script
3
+ # Initialization. Common Input parameters:
4
+ # * aws_access_key => the Amazon AWS Access Key (see Your Account -> Security Credentials)
5
+ # * aws_secret_key => the Amazon AWS Secret Key
6
+ # * ec2_api_server => the API Server to connect to (optional, default is us-east-1 (=> <ec2_api_server>.ec2.amazonaws.com)
7
+ # * logger => allows to pass a ruby logger object used for logging (optional, default is a stdout logger with level WARN)
8
+ # Scripts may add specific key/value pairs.
9
+ def initialize(input_params)
10
+ @input_params = input_params
11
+ @state_change_listeners = []
12
+ @progress_message_listeners = []
13
+ if input_params[:logger] == nil
14
+ @logger = Logger.new(STDOUT)
15
+ @logger .level = Logger::WARN
16
+ input_params[:logger] = @logger
17
+ end
18
+ @result = {:done => false, :failed => false}
19
+ @input_params[:result] = @result
20
+ end
21
+
22
+ def register_state_change_listener(listener)
23
+ @state_change_listeners << listener
24
+ end
25
+
26
+ def register_progress_message_listener(listener)
27
+ @progress_message_listeners << listener
28
+ end
29
+
30
+ # Check input parameters (in @input_parameters object variable)
31
+ # and set default values.
32
+ # Abstract method to be implemented by extending classes.
33
+ def check_input_parameters()
34
+ raise Exception.new("check_input_parameters must be implemented")
35
+ end
36
+
37
+ # Load the initial state for the script.
38
+ # Abstract method to be implemented by extending classes.
39
+ def load_initial_state()
40
+ raise Exception.new("load_initial_state must be implemented")
41
+ end
42
+
43
+ # Executes the script.
44
+ def start_script()
45
+ # optional parameters and initialization
46
+ check_input_parameters()
47
+ @input_params[:script] = self
48
+ begin
49
+ current_state = load_initial_state()
50
+ @state_change_listeners.each() {|listener|
51
+ current_state.register_state_change_listener(listener)
52
+ }
53
+ end_state = current_state.start_state_machine()
54
+ if end_state.failed?
55
+ @result[:failed] = true
56
+ @result[:failure_reason] = current_state.end_state.failure_reason
57
+ @result[:end_state] = current_state.end_state
58
+ else
59
+ @result[:failed] = false
60
+ end
61
+ rescue Exception => e
62
+ @logger.warn "exception during encryption: #{e}"
63
+ @logger.warn e.backtrace.join("\n")
64
+ err = e.to_s
65
+ err += " (in #{current_state.end_state.to_s})" unless current_state == nil
66
+ @result[:failed] = true
67
+ @result[:failure_reason] = err
68
+ @result[:end_state] = current_state.end_state unless current_state == nil
69
+ ensure
70
+ begin
71
+ @input_params[:remote_command_handler].disconnect
72
+ rescue Exception => e2
73
+ end
74
+ end
75
+ #
76
+ @result[:done] = true
77
+ end
78
+
79
+
80
+ # Return a hash of results. Common values are:
81
+ # * :done => is true when the script has terminated, otherwise false
82
+ # * :failed => is false when the script succeeded
83
+ # * :failure_reason => returns a failure reason (string)
84
+ # * :end_state => returns the state, in which the script terminated (#Help::ScriptExecutionState)
85
+ # Scripts may add specific key/value pairs.
86
+ # *
87
+ # Returns a hash with the following information:
88
+ # :done => if execution is done
89
+ #
90
+ def get_execution_result
91
+ @result
92
+ end
93
+
94
+ def post_message(message, level = Logger::DEBUG)
95
+ @progress_message_listeners.each() {|listener|
96
+ listener.new_message(message, level)
97
+ }
98
+ end
99
+
100
+ end
101
+
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: CloudyScripts
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.11
4
+ version: 0.0.12
5
5
  platform: ruby
6
6
  authors:
7
7
  - Matthias Jung
@@ -9,7 +9,7 @@ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
11
 
12
- date: 2010-02-08 00:00:00 +01:00
12
+ date: 2010-03-17 00:00:00 +01:00
13
13
  default_executable:
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
@@ -52,8 +52,10 @@ files:
52
52
  - lib/help/remote_command_handler.rb
53
53
  - lib/help/script_execution_state.rb
54
54
  - lib/help/state_change_listener.rb
55
+ - lib/help/state_transition_helper.rb
55
56
  - lib/scripts/ec2/ami2_ebs_conversion.rb
56
57
  - lib/scripts/ec2/dm_encrypt.rb
58
+ - lib/scripts/ec2/download_snapshot.rb
57
59
  - lib/scripts/ec2/ec2_script.rb
58
60
  has_rdoc: true
59
61
  homepage: http://elastic-security.com