CloudyScripts 0.0.11 → 0.0.12

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.
@@ -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