port-authority 0.5.0 → 0.5.1

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 221e5235470801ff068ea1fd1cf29494ac4e5c7d
4
- data.tar.gz: d916df00dc140f8d88692dc3df7dd1d427522e8a
3
+ metadata.gz: b9ae0f6c484615e82c028a5eda9b6b5d3c9fb59c
4
+ data.tar.gz: 02534027bd8e7f01bb56f7a110ae90124bc0e45c
5
5
  SHA512:
6
- metadata.gz: 99168b0111a49424e6166a91a0586819b65df8007edfe766740df902bb922400c442ef58a52ae4611f3737d5f609b52bdabf92a24b319849d5fd3e1af669eae1
7
- data.tar.gz: 12f4a20fc48a4606d9e841f5fbba75189294090f668d7f32822d236d39ebe979b871f3e2a4efc19ed395593d9ef174535989493ae25ecab29674e4ac11f8ffd2
6
+ metadata.gz: 951bcbc83d7b399e5ae00730f9f6bdf0845cf4340605d9b2300b6f03323ba8de9f2e4cfdb4cf275d72fe405cb72a08a9a786a25940b55259ec58a2f58cfebe0c
7
+ data.tar.gz: 53cb57289059b35c82ca6a57ac51375f1813011c2168203f376d8a09ce8687ff68abbf41c1efde9c20bd26535416eb5cf0389263ca1606b19fadbc853e781ce4
@@ -1,5 +1,4 @@
1
1
  require 'timeout'
2
- require 'digest/sha2'
3
2
  require 'json'
4
3
  require 'yaml'
5
4
  require 'port-authority'
@@ -146,15 +145,6 @@ module PortAuthority
146
145
  @@_threads.each_value(&:join)
147
146
  end
148
147
 
149
- # Run command in Bash.
150
- def shellcmd(*args)
151
- cmd = args.join(' ').to_s
152
- cksum = Digest::SHA256.hexdigest(args.join.to_s)[0..15]
153
- Logger.debug "Executing shellcommand #{cksum} - #{cmd}"
154
- ret = system cmd
155
- Logger.debug "Shellcommand #{cksum} returned #{ret.to_s}"
156
- end
157
-
158
148
  # Return hostname.
159
149
  def hostname
160
150
  @hostname ||= Socket.gethostname
@@ -36,7 +36,6 @@ module PortAuthority
36
36
 
37
37
  FloatingIP.init!
38
38
  LoadBalancer.init!
39
- LoadBalancer.container || ( LoadBalancer.pull! && LoadBalancer.create! )
40
39
 
41
40
  Logger.debug 'Waiting for threads to gather something...'
42
41
  sleep Config.lbaas[:interval]
@@ -73,7 +72,7 @@ module PortAuthority
73
72
  Logger.notice 'FloatingIP is free :) assigning'
74
73
  FloatingIP.handle! status_swarm
75
74
  Logger.notice 'Notifying the network about change'
76
- FloatingIP.update_arp!
75
+ FloatingIP.arp_update!
77
76
  end
78
77
  end
79
78
  end
@@ -1,5 +1,6 @@
1
1
  # rubocop:disable Metrics/LineLength, Metrics/AbcSize
2
2
  require 'net/ping'
3
+ require 'digest/sha2'
3
4
 
4
5
  module PortAuthority
5
6
  module Mechanism
@@ -11,17 +12,20 @@ module PortAuthority
11
12
 
12
13
  def init!
13
14
  @_icmp = Net::Ping::ICMP.new(Config.lbaas[:floating_ip])
15
+ Logger.debug(Config.lbaas.to_yaml)
14
16
  end
15
17
 
16
18
  # add or remove VIP on interface
17
19
  def handle!(leader)
18
- return true if shellcmd Config.commands[:iproute], 'address', leader ? 'add' : 'delete', "#{Config.lbaas[:floating_ip]}/32", 'dev', Config.lbaas[:interface], '>/dev/null 2>&1'
20
+ return true if shellcmd Config.commands[:iproute], 'address', leader ? 'add' : 'delete', "#{Config.lbaas[:floating_ip]}/32", 'dev', Config.lbaas[:floating_iface], '>/dev/null 2>&1'
19
21
  false
20
22
  end
21
23
 
22
24
  # send gratuitous ARP to the network
23
25
  def arp_update!
24
- return true if shellcmd Config.commands[:arping], '-U', '-q', '-c', Config.lbaas[:arping_count], '-I', Config.lbaas[:interface], Config.lbaas[:floating_ip]
26
+ # return true if shellcmd Config.commands[:arping], '-U', '-q', '-c', Config.lbaas[:arping_count], '-I', Config.lbaas[:floating_iface], Config.lbaas[:floating_ip]
27
+ return true if shellcmd Config.commands[:arping], '-U', '-q', '-c', Config.lbaas[:arping_count], '-I', Config.lbaas[:floating_iface], Config.lbaas[:floating_ip]
28
+
25
29
  false
26
30
  end
27
31
 
@@ -43,9 +47,19 @@ module PortAuthority
43
47
 
44
48
  # check whether the IP is registered anywhere
45
49
  def duplicate?
46
- return true if shellcmd Config.commands[:arping], '-D', '-q', '-c', Config.lbaas[:arping_count], '-w', Config.lbaas[:arping_wait], '-I', Config.lbaas[:interface], Config.lbaas[:floating_ip]
47
- false
50
+ return false if shellcmd Config.commands[:arping], '-D', '-q', '-c', Config.lbaas[:arping_count], '-w', Config.lbaas[:arping_wait], '-I', Config.lbaas[:floating_iface], Config.lbaas[:floating_ip]
51
+ true
48
52
  end
53
+
54
+ private
55
+ def shellcmd(*args)
56
+ cmd = args.join(' ').to_s
57
+ cksum = Digest::SHA256.hexdigest(args.join.to_s)[0..15]
58
+ Logger.debug "Executing shellcommand #{cksum} - #{cmd}"
59
+ ret = system cmd
60
+ Logger.debug "Shellcommand #{cksum} returned #{ret.to_s}"
61
+ end
62
+
49
63
  end
50
64
  end
51
65
  end
@@ -11,6 +11,7 @@ module PortAuthority
11
11
  def init!
12
12
  Docker.url = Config.lbaas[:docker_endpoint]
13
13
  Docker.options = { connect_timeout: Config.lbaas[:docker_timeout] || 10 }
14
+ self.container || ( self.pull! && self.create! )
14
15
  end
15
16
 
16
17
  def container
@@ -56,7 +57,7 @@ module PortAuthority
56
57
 
57
58
  def update!
58
59
  begin
59
- self.stop! && start = true if self.up?
60
+ ( self.stop! && start = true ) if self.up?
60
61
  self.remove!
61
62
  self.pull!
62
63
  self.create!
@@ -69,19 +70,19 @@ module PortAuthority
69
70
  end
70
71
 
71
72
  def remove!
72
- self.container.delete
73
+ @_container.delete
73
74
  end
74
75
 
75
76
  def up?
76
- self.container.json['State']['Running']
77
+ @_container.json['State']['Running']
77
78
  end
78
79
 
79
80
  def start!
80
- self.container.start
81
+ @_container.start
81
82
  end
82
83
 
83
84
  def stop!
84
- self.container.stop
85
+ @_container.stop
85
86
  end
86
87
 
87
88
  end
metadata CHANGED
@@ -1,14 +1,16 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: port-authority
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.5.0
4
+ version: 0.5.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Radek 'blufor' Slavicinsky
8
+ - Tomas 'arteal' Hejatko
9
+ - Jan 'liquid' Kaufman
8
10
  autorequire:
9
11
  bindir: bin
10
12
  cert_chain: []
11
- date: 2016-05-01 00:00:00.000000000 Z
13
+ date: 2016-05-11 00:00:00.000000000 Z
12
14
  dependencies:
13
15
  - !ruby/object:Gem::Dependency
14
16
  name: etcd
@@ -90,8 +92,8 @@ dependencies:
90
92
  - - ">="
91
93
  - !ruby/object:Gem::Version
92
94
  version: 1.25.0
93
- description: CLI Tools for PortAuthority
94
- email: radek.slavicinsky@gmail.com
95
+ description: Highly opinionated PaaS based on Docker Swarm and ETCD
96
+ email: cloud@prozeta.eu
95
97
  executables:
96
98
  - pa-lbaas-agent
97
99
  - pa-service-list
@@ -130,7 +132,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
130
132
  version: '0'
131
133
  requirements: []
132
134
  rubyforge_project:
133
- rubygems_version: 2.4.8
135
+ rubygems_version: 2.4.6
134
136
  signing_key:
135
137
  specification_version: 4
136
138
  summary: Port Authority