sfpagent 0.4.6 → 0.4.7

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.

checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: 756db80c9a4995bba51be6402b3ed1589d4dc48a
4
+ data.tar.gz: a723b67ba8d1f649f8c4c2c01c9682581721970e
5
+ SHA512:
6
+ metadata.gz: 0db50466b23803da4ee8a613d0c506d85c0866715831d54eb6375ad4d794ab69a253060aa0ceb66348204598a9b0a0a741680dd2ba6daee3a4b4fb6216ad276f
7
+ data.tar.gz: 404edcde4d8942123e912ac130d6a015a7a3317a5c565ed074732979a5bc9f13e6ff6994d09c083239e342cac0a7db38601592daf3eb3d22d1b5530d91544455
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.4.6
1
+ 0.4.7
@@ -603,11 +603,12 @@ module Sfp
603
603
  agents = (json == '' ? {} : JSON[json])
604
604
  current_hash = agents.hash
605
605
 
606
- data.each { |k,v|
607
- if !agents.has_key?(k) or v.nil? or agents[k].hash != v.hash
608
- agents[k] = v
609
- end
610
- }
606
+ #data.each { |k,v|
607
+ # if !agents.has_key?(k) or v.nil? or agents[k].hash != v.hash
608
+ # agents[k] = v
609
+ # end
610
+ #}
611
+ agents.merge!(data)
611
612
  agents.keys.each { |k| agents.delete(k) if agents[k].nil? }
612
613
 
613
614
  if current_hash != agents.hash
data/lib/sfpagent/bsig.rb CHANGED
@@ -17,7 +17,6 @@ class Sfp::BSig
17
17
  @enabled = false
18
18
  @status = :stopped
19
19
  @lock_postprocess = Mutex.new
20
- @locked_operators = []
21
20
  end
22
21
 
23
22
  def stop
@@ -32,21 +31,26 @@ class Sfp::BSig
32
31
  }
33
32
 
34
33
  Thread.new {
35
- register_satisfier_thread(:reset)
34
+ begin
35
+ register_satisfier_thread(:reset)
36
36
 
37
- system("rm -f #{Home}/operator.*.lock")
38
- system("rm -f #{Home}/bsig.satisfier.lock.*")
37
+ system("rm -f #{Home}/operator.*.lock")
38
+ system("rm -f #{Home}/bsig.satisfier.lock.*")
39
39
 
40
- Sfp::Agent.logger.info "[main] BSig engine is running."
40
+ Sfp::Agent.logger.info "[main] BSig engine is running."
41
41
 
42
- puts "BSig Engine is running with PID #{$$}"
43
- File.open(Sfp::Agent::BSigPIDFile, 'w') { |f| f.write($$.to_s) }
42
+ puts "BSig Engine is running with PID #{$$}"
43
+ File.open(Sfp::Agent::BSigPIDFile, 'w') { |f| f.write($$.to_s) }
44
44
 
45
- self.execute_model
45
+ self.execute_model
46
46
 
47
- File.delete(SatisfierLockFile) if File.exist?(SatisfierLockFile)
48
- Sfp::Agent.logger.info "[main] BSig engine has stopped."
47
+ File.delete(SatisfierLockFile) if File.exist?(SatisfierLockFile)
48
+ Sfp::Agent.logger.info "[main] BSig engine has stopped."
49
49
 
50
+ rescue Exception => exp
51
+ Sfp::Agent.logger.error "Cannot start BSig engine => #{exp}\n#{exp.backtrace.join("\n")}"
52
+ end
53
+
50
54
  @status = :stopped
51
55
  }
52
56
  end
@@ -154,8 +158,13 @@ class Sfp::BSig
154
158
  lock = Mutex.new
155
159
  operators.each do |operator|
156
160
  Thread.new {
157
- stat = execute_operator(operator, id, operators, mode)
158
- Sfp::Agent.logger.info "[#{mode}] Execute_operator: #{operator['name']}#{JSON.generate(operator['parameters'])} => #{stat}"
161
+ begin
162
+ stat = execute_operator(operator, id, operators, mode)
163
+ Sfp::Agent.logger.info "[#{mode}] Execute_operator: #{operator['name']}#{JSON.generate(operator['parameters'])} => #{stat}"
164
+ rescue Exception => exp
165
+ stat = :failure
166
+ Sfp::Agent.logger.error "[#{mode}] Execute_operator: #{operator['name']}#{JSON.generate(operator['parameters'])} => #{stat} - #{exp}\n#{exp.backtrace.join("\n")}"
167
+ end
159
168
  lock.synchronize { status << stat }
160
169
  }
161
170
  end
@@ -229,8 +238,13 @@ class Sfp::BSig
229
238
  agents_goal = split_goal_by_agent(goal)
230
239
  agents_goal.each do |agent_name,agent_goal|
231
240
  Thread.new {
232
- stat = achieve_remote_agent_goal(agents, agent_name, agent_goal, id, pi, mode)
233
- Sfp::Agent.logger.info "[#{mode}] remote goal => #{agent_name}: #{agent_goal.inspect} - #{stat}"
241
+ begin
242
+ stat = achieve_remote_agent_goal(agents, agent_name, agent_goal, id, pi, mode)
243
+ Sfp::Agent.logger.info "[#{mode}] remote goal => #{agent_name}: #{agent_goal.inspect} - #{stat}"
244
+ rescue Exception => exp
245
+ stat = false
246
+ Sfp::Agent.logger.error "[#{mode}] remote goal => #{agent_name}: #{agent_goal.inspect} - #{stat} - #{exp}\n#{exp.backtrace.join("\n")}"
247
+ end
234
248
  lock.synchronize { status << stat }
235
249
  }
236
250
  end
@@ -321,7 +335,6 @@ class Sfp::BSig
321
335
  operator_lock_file = "#{Home}/operator.#{operator['id']}.#{operator['name']}.lock"
322
336
  return false if File.exist?(operator_lock_file)
323
337
  File.open(operator_lock_file, 'w') { |f| f.write('1') }
324
- @locked_operators << operator
325
338
  return true
326
339
  }
327
340
  end
@@ -335,7 +348,6 @@ class Sfp::BSig
335
348
  @lock.synchronize {
336
349
  operator_lock_file = "#{Home}/operator.#{operator['id']}.#{operator['name']}.lock"
337
350
  File.delete(operator_lock_file) if File.exist?(operator_lock_file)
338
- @lock_operators.delete(operator)
339
351
  }
340
352
  end
341
353
 
@@ -376,7 +388,7 @@ class Sfp::BSig
376
388
  ref = "#{cloud_ref}.vms"
377
389
  vms = state.at?(ref)
378
390
  vms.each { |name,status| vms[name] = {'created' => true} } if vms.is_a?(Hash)
379
- }
391
+ } if Sfp::Agent.runtime
380
392
  if not vms.has_key?(agent_name)
381
393
  state = {agent_name => {'created' => false, 'in_cloud' => nil}}
382
394
  goal.each { |var,val| return false if state.at?(var) != val }
@@ -402,7 +414,7 @@ class Sfp::BSig
402
414
  'sfpPort' => Sfp::Agent::DefaultPort }
403
415
  }
404
416
  end
405
- }
417
+ } if Sfp::Agent.runtime
406
418
 
407
419
  state
408
420
  end
@@ -441,9 +453,8 @@ class Sfp::BSig
441
453
  repaired = {}
442
454
  operators.each do |op|
443
455
  next if op['pi'] < pi
444
- if can_repair?(op, flaws) and # can the operator repair the flaws?
445
- not threat?(op, selected_operators) and # does the operator threat other selected operators?
446
- not threat?(op, @locked_operators) # does the operator threat locked (being executed) operators?
456
+ if can_repair?(op, flaws) and # can the operator repair the flaws?
457
+ not threat_operators?(op, selected_operators) # does the operator threat other selected operators?
447
458
  selected_operators << op
448
459
  op['effect'].each { |var,val| repaired[var] = val if flaws[var] == val }
449
460
  end
@@ -536,7 +547,7 @@ class Sfp::BSig
536
547
 
537
548
  def postprocess_delete_vm(operator)
538
549
  @lock_postprocess.synchronize {
539
- _, agent_name, _ = operator['name'].split('.', 3)
550
+ _, agent_name, _ = operator['parameters']['$.vm'].split('.', 3)
540
551
 
541
552
  Sfp::Agent.logger.info "Postprocess delete VM #{agent_name}"
542
553
 
@@ -611,7 +622,7 @@ class Sfp::BSig
611
622
  modules = JSON[body]
612
623
  list = ''
613
624
  schemata.each { |m|
614
- list += "#{m} " if m != 'object' and File.exist?("#{modules_dir}/#{m}") and
625
+ list += "#{m} " if File.exist?("#{modules_dir}/#{m}") and
615
626
  (not modules.has_key?(m) or modules[m] != get_local_module_hash(m, modules_dir).to_s)
616
627
  }
617
628
 
metadata CHANGED
@@ -1,49 +1,57 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: sfpagent
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.4.6
5
- prerelease:
4
+ version: 0.4.7
6
5
  platform: ruby
7
6
  authors:
8
7
  - Herry
9
8
  autorequire:
10
9
  bindir: bin
11
10
  cert_chain: []
12
- date: 2013-11-26 00:00:00.000000000 Z
11
+ date: 2013-12-09 00:00:00.000000000 Z
13
12
  dependencies:
14
13
  - !ruby/object:Gem::Dependency
15
14
  name: sfp
16
- requirement: &7919800 !ruby/object:Gem::Requirement
17
- none: false
15
+ requirement: !ruby/object:Gem::Requirement
18
16
  requirements:
19
17
  - - ~>
20
18
  - !ruby/object:Gem::Version
21
19
  version: 0.3.17
22
20
  type: :runtime
23
21
  prerelease: false
24
- version_requirements: *7919800
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - ~>
25
+ - !ruby/object:Gem::Version
26
+ version: 0.3.17
25
27
  - !ruby/object:Gem::Dependency
26
28
  name: net-ssh
27
- requirement: &7919080 !ruby/object:Gem::Requirement
28
- none: false
29
+ requirement: !ruby/object:Gem::Requirement
29
30
  requirements:
30
- - - ! '>='
31
+ - - '>='
31
32
  - !ruby/object:Gem::Version
32
33
  version: '0'
33
34
  type: :runtime
34
35
  prerelease: false
35
- version_requirements: *7919080
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - '>='
39
+ - !ruby/object:Gem::Version
40
+ version: '0'
36
41
  - !ruby/object:Gem::Dependency
37
42
  name: rake
38
- requirement: &7965620 !ruby/object:Gem::Requirement
39
- none: false
43
+ requirement: !ruby/object:Gem::Requirement
40
44
  requirements:
41
- - - ! '>='
45
+ - - '>='
42
46
  - !ruby/object:Gem::Version
43
47
  version: '0'
44
48
  type: :development
45
49
  prerelease: false
46
- version_requirements: *7965620
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - '>='
53
+ - !ruby/object:Gem::Version
54
+ version: '0'
47
55
  description: A Ruby implementation of SFP agent.
48
56
  email: herry13@gmail.com
49
57
  executables:
@@ -76,26 +84,25 @@ files:
76
84
  homepage: https://github.com/herry13/sfpagent
77
85
  licenses:
78
86
  - BSD
87
+ metadata: {}
79
88
  post_install_message:
80
89
  rdoc_options: []
81
90
  require_paths:
82
91
  - lib
83
92
  required_ruby_version: !ruby/object:Gem::Requirement
84
- none: false
85
93
  requirements:
86
- - - ! '>='
94
+ - - '>='
87
95
  - !ruby/object:Gem::Version
88
96
  version: '0'
89
97
  required_rubygems_version: !ruby/object:Gem::Requirement
90
- none: false
91
98
  requirements:
92
- - - ! '>='
99
+ - - '>='
93
100
  - !ruby/object:Gem::Version
94
101
  version: '0'
95
102
  requirements: []
96
103
  rubyforge_project: sfpagent
97
- rubygems_version: 1.8.11
104
+ rubygems_version: 2.0.14
98
105
  signing_key:
99
- specification_version: 3
106
+ specification_version: 4
100
107
  summary: SFP Agent
101
108
  test_files: []