sfpagent 0.1.10 → 0.1.11

Sign up to get free protection for your applications and to get access to all the features.

Potentially problematic release.


This version of sfpagent might be problematic. Click here for more details.

Files changed (3) hide show
  1. data/VERSION +1 -1
  2. data/lib/sfpagent/bsig.rb +35 -14
  3. metadata +3 -3
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.1.10
1
+ 0.1.11
data/lib/sfpagent/bsig.rb CHANGED
@@ -46,8 +46,11 @@ class Sfp::BSig
46
46
  disable
47
47
  }
48
48
  }
49
+
49
50
  register_satisfier_thread(:reset)
50
51
 
52
+ system("rm -f #{CachedDir}/operator.*.lock")
53
+
51
54
  Sfp::Agent.logger.info "[#{@mode}] BSig engine is running."
52
55
 
53
56
  puts "BSig Engine is running with PID #{$$}"
@@ -117,16 +120,16 @@ class Sfp::BSig
117
120
  operator = select_operator(flaws, operators, pi)
118
121
  return :failure if operator.nil?
119
122
 
120
- @lock.synchronize {
121
- return :ongoing if operator['selected']
122
- operator['selected'] = true
123
- }
124
- Sfp::Agent.logger.info "[#{@mode}] Selected operator: #{operator['name']}" #{JSON.generate(operator)}"
123
+ #Sfp::Agent.logger.info "[#{@mode}] Flaws: #{JSON.generate(flaws)}"
124
+
125
+ return :ongoing if not lock_operator(operator)
125
126
 
126
- next_pi = pi + 1
127
+ Sfp::Agent.logger.info "[#{@mode}] Selected operator: #{operator['name']}"
128
+
129
+ next_pi = operator['pi'] + 1
127
130
  pre_local, pre_remote = split_preconditions(operator)
128
131
 
129
- Sfp::Agent.logger.info "[#{@mode}] local-flaws: #{JSON.generate(pre_local)}, remote-flaws: #{JSON.generate(pre_remote)}"
132
+ #Sfp::Agent.logger.info "[#{@mode}] local-flaws: #{JSON.generate(pre_local)}, remote-flaws: #{JSON.generate(pre_remote)}"
130
133
 
131
134
  status = nil
132
135
  tries = MaxTries
@@ -143,16 +146,16 @@ Sfp::Agent.logger.info "[#{@mode}] local-flaws: #{JSON.generate(pre_local)}, rem
143
146
  tries -= 1
144
147
  end until tries <= 0
145
148
 
146
- return :failure if status != :no_flaw
147
-
148
- return :failure if not achieve_remote_goal(id, pre_remote, next_pi)
149
+ if status != :no_flaw or
150
+ not achieve_remote_goal(id, pre_remote, next_pi) or
151
+ not invoke(operator)
149
152
 
150
- return :failure if not invoke(operator)
153
+ unlock_operator(operator) if not operator.nil?
154
+ return :failure
155
+ end
151
156
 
157
+ unlock_operator(operator) if not operator.nil?
152
158
  :repaired
153
-
154
- ensure
155
- @lock.synchronize { operator['selected'] = false } if not operator.nil?
156
159
  end
157
160
 
158
161
  def achieve_remote_goal(id, goal, pi)
@@ -220,6 +223,22 @@ Sfp::Agent.logger.info "[#{@mode}] local-flaws: #{JSON.generate(pre_local)}, rem
220
223
  }
221
224
  end
222
225
 
226
+ def lock_operator(operator)
227
+ @lock.synchronize {
228
+ operator_lock_file = "#{CachedDir}/operator.#{operator['name']}.lock"
229
+ return false if File.exist?(operator_lock_file)
230
+ File.open(operator_lock_file, 'w') { |f| f.write('1') }
231
+ return true
232
+ }
233
+ end
234
+
235
+ def unlock_operator(operator)
236
+ @lock.synchronize {
237
+ operator_lock_file = "#{CachedDir}/operator.#{operator['name']}.lock"
238
+ File.delete(operator_lock_file) if File.exist?(operator_lock_file)
239
+ }
240
+ end
241
+
223
242
  def split_goal_by_agent(goal)
224
243
  agents = Sfp::Agent.get_agents
225
244
  agent_goal = {}
@@ -236,6 +255,8 @@ Sfp::Agent.logger.info "[#{@mode}] local-flaws: #{JSON.generate(pre_local)}, rem
236
255
  data = {'id' => id,
237
256
  'goal' => JSON.generate(g),
238
257
  'pi' => pi}
258
+ Sfp::Agent.logger.info "[#{@mode}] Request goal to: #{agent_name} [WAIT]"
259
+
239
260
  code, _ = put_data(agent['sfpAddress'], agent['sfpPort'], SatisfierPath, data)
240
261
 
241
262
  Sfp::Agent.logger.info "[#{@mode}] Request goal to: #{agent_name} - status: " + code.to_s
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: sfpagent
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.10
4
+ version: 0.1.11
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -13,7 +13,7 @@ date: 2013-08-13 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: sfp
16
- requirement: &16928140 !ruby/object:Gem::Requirement
16
+ requirement: &7616500 !ruby/object:Gem::Requirement
17
17
  none: false
18
18
  requirements:
19
19
  - - ~>
@@ -21,7 +21,7 @@ dependencies:
21
21
  version: 0.3.12
22
22
  type: :runtime
23
23
  prerelease: false
24
- version_requirements: *16928140
24
+ version_requirements: *7616500
25
25
  description: A Ruby implementation of SFP agent.
26
26
  email: herry13@gmail.com
27
27
  executables: