vidar 0.3.0 → 0.3.2

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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: cd260ce9a8c7fb23a3e42a72af992f07c21d0ef5ffe30a3b96af32ffc8569d1b
4
- data.tar.gz: 8cc9bf1d9068b7ac59e0b001a5f5f4fc45bc25f13baae05602e91697dcd9364c
3
+ metadata.gz: 105e2f348c313725b7a92f6ce260aea96c34a99c4aeeb1027a07b309d1d4448d
4
+ data.tar.gz: ca750b51ab3e4d8d25f2fc27a742909c3de858f622ffd99354af0a83f58ffc49
5
5
  SHA512:
6
- metadata.gz: dec4d553518f687ea22405189939222ebc442b5ffac32c800aa7610c8ad81a3352f621a8da065b3fef14529b45463266016f2a14403fa84cf02098431e401361
7
- data.tar.gz: ab7f8daf3a3ad6754280b23a004599e91ce4a6d52381b13ca7feee7d3fb68f17296a7243a5329c69326d658a967177446773863d9fba24070303dc0e2a8091bd
6
+ metadata.gz: b1da1774c90625da8378f25182897c76cb91a5cb7e61663d9fab87ac124892cb476f8e772ebcd9af6a290a187606e37f9af16c75b313ddcd525de2d9ff42349b
7
+ data.tar.gz: 3332d5453505935187240eaef57c5191f208cb6c057dbce400b6330cc0ee07f4b0a1ce876c225fd3ae821c5d2f2fe49bbd3eb75d4555d1a598974f0cfe845937
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- vidar (0.3.0)
4
+ vidar (0.3.2)
5
5
  colorize
6
6
  faraday
7
7
  thor (~> 0.20)
@@ -13,7 +13,7 @@ GEM
13
13
  coderay (1.1.2)
14
14
  colorize (0.8.1)
15
15
  diff-lcs (1.3)
16
- faraday (0.15.4)
16
+ faraday (0.16.2)
17
17
  multipart-post (>= 1.2, < 3)
18
18
  jaro_winkler (1.5.3)
19
19
  method_source (0.9.2)
@@ -15,6 +15,7 @@ require 'vidar/run'
15
15
  require 'vidar/slack_notification'
16
16
  require 'vidar/k8s/container_status'
17
17
  require 'vidar/k8s/pods'
18
+ require 'vidar/deploy_status'
18
19
  require 'vidar/cli'
19
20
 
20
21
  module Vidar
@@ -94,39 +94,32 @@ module Vidar
94
94
  end
95
95
 
96
96
  desc "monitor_deploy_status", "Checks is deployment has finished and sends post-deploy notification"
97
+ method_option :success_color, required: false
98
+ method_option :error_color, required: false
97
99
  def monitor_deploy_status
98
100
  Log.info "Current cluster_name: #{Config.get!(:cluster_name)} ###"
99
101
  Log.info "Checking is all containers on #{Config.get!(:cluster_name)} in #{Config.get!(:namespace)} are ready..."
100
102
 
101
- sleep(2)
102
- error = false
103
- tries = 0
104
- max_tries = 30
105
- until K8s::Pods.new(Config.get!(:namespace)).all_ready?
106
- tries += 1
107
- sleep(10)
108
- if tries > max_tries
109
- error = true
110
- break
111
- end
112
- end
113
-
114
103
  slack_notification = SlackNotification.new(
115
104
  webhook_url: Config.get!(:slack_webhook_url),
116
105
  github: Config.get!(:github),
117
106
  revision: Config.get!(:revision),
118
107
  revision_name: Config.get!(:revision_name),
119
- cluster_name: Config.get!(:cluster_name),
120
- cluster_url: Config.get!(:cluster_url)
108
+ cluster_label: Config.get!(:cluster_label),
109
+ cluster_url: Config.get!(:cluster_url),
110
+ success_color: options[:success_color],
111
+ error_color: options[:error_color],
121
112
  )
122
113
 
123
- if error
114
+ ok = Vidar::DeployStatus.new(Config.get!(:namespace)).ok?
115
+
116
+ if ok
117
+ Log.info "OK: All containers are ready."
118
+ slack_notification.success if slack_notification.configured?
119
+ else
124
120
  Log.error "ERROR: Some of containers are not ready."
125
121
  slack_notification.error if slack_notification.configured?
126
122
  exit(1)
127
- else
128
- Log.info "OK: All containers are ready."
129
- slack_notification.success if slack_notification.configured?
130
123
  end
131
124
  end
132
125
  end
@@ -18,6 +18,11 @@ module Vidar
18
18
  names_in_context = current_context.scan(Regexp.new(cluster_names))
19
19
  names_in_context.flatten.first || current_context
20
20
  end
21
+ },
22
+ cluster_label: -> {
23
+ labels = get(:cluster_labels) || {}
24
+ name = get(:cluster_name)
25
+ labels[name] || name
21
26
  }
22
27
  }.freeze
23
28
 
@@ -38,19 +43,12 @@ module Vidar
38
43
  @loaded
39
44
  end
40
45
 
41
- def cluster_name
42
- cluster_names = get(:cluster_names).to_s
43
- current_context = `kubectl config current-context`.strip
44
-
45
- return current_context if cluster_names.empty?
46
-
47
- names_in_context = current_context.scan(Regexp.new(cluster_names))
48
- names_in_context.flatten.first || current_context
49
- end
50
-
51
46
  def get(key)
52
47
  load unless loaded?
53
48
  value = @data[key.to_s] || DEFAULT_OPTIONS[key.to_sym]&.call
49
+
50
+ return value unless value.is_a?(String)
51
+
54
52
  Vidar::Interpolation.call(value, self)
55
53
  end
56
54
 
@@ -0,0 +1,34 @@
1
+ module Vidar
2
+ class DeployStatus
3
+ INITIAL_SLEEP = 2
4
+ SLEEP = 10
5
+ MAX_TRIES = 30
6
+
7
+ attr_reader :namespace
8
+
9
+ def initialize(namespace)
10
+ @namespace = namespace
11
+ end
12
+
13
+ def error?
14
+ any_errors = false
15
+
16
+ sleep(INITIAL_SLEEP)
17
+
18
+ until K8s::Pods.new(namespace).all_ready?
19
+ tries += 1
20
+ sleep(SLEEP)
21
+ if tries > MAX_TRIES
22
+ any_errors = true
23
+ break
24
+ end
25
+ end
26
+
27
+ any_errors
28
+ end
29
+
30
+ def ok?
31
+ !error?
32
+ end
33
+ end
34
+ end
@@ -13,9 +13,7 @@ module Vidar
13
13
 
14
14
  Log.line
15
15
 
16
- container_statuses.each do |container_status|
17
- container_status.print
18
- end
16
+ container_statuses.each(&:print)
19
17
 
20
18
  Log.line
21
19
 
@@ -3,14 +3,26 @@ module Vidar
3
3
  SUCCESS_COLOR = "good".freeze
4
4
  ERROR_COLOR = "danger".freeze
5
5
 
6
- def initialize(webhook_url:, github:, revision:, revision_name:, cluster_name:, cluster_url:)
7
- @webhook_url = webhook_url
8
- @github = github
9
- @revision = revision
10
- @revision_name = revision_name
11
- @cluster_name = cluster_name
12
- @cluster_url = cluster_url
13
- @connection = Faraday.new
6
+ def initialize(
7
+ webhook_url:,
8
+ github:,
9
+ revision:,
10
+ revision_name:,
11
+ cluster_label:,
12
+ cluster_url:,
13
+ success_color: nil,
14
+ error_color: nil
15
+ )
16
+
17
+ @webhook_url = webhook_url
18
+ @github = github
19
+ @revision = revision
20
+ @revision_name = revision_name
21
+ @cluster_label = cluster_label
22
+ @cluster_url = cluster_url
23
+ @success_color = success_color || SUCCESS_COLOR
24
+ @error_color = error_color || ERROR_COLOR
25
+ @connection = Faraday.new
14
26
  end
15
27
 
16
28
  def configured?
@@ -24,7 +36,7 @@ module Vidar
24
36
 
25
37
  def success
26
38
  message = "Successful deploy of #{github_link} to #{cluster_link}"
27
- perform_with data(message: message, color: SUCCESS_COLOR)
39
+ perform_with data(message: message, color: success_color)
28
40
  end
29
41
 
30
42
  def perform_with(data)
@@ -37,7 +49,11 @@ module Vidar
37
49
 
38
50
  private
39
51
 
40
- attr_reader :webhook_url, :github, :revision, :revision_name, :cluster_name, :cluster_url, :connection
52
+ attr_reader :webhook_url, :github,
53
+ :revision, :revision_name,
54
+ :cluster_label, :cluster_url,
55
+ :success_color, :error_color,
56
+ :connection
41
57
 
42
58
  def data(message:, color:)
43
59
  {
@@ -62,7 +78,7 @@ module Vidar
62
78
  end
63
79
 
64
80
  def cluster_link
65
- "<#{cluster_url}|#{cluster_name}>"
81
+ "<#{cluster_url}|#{cluster_label}>"
66
82
  end
67
83
  end
68
84
  end
@@ -1,3 +1,3 @@
1
1
  module Vidar
2
- VERSION = '0.3.0'.freeze
2
+ VERSION = '0.3.2'.freeze
3
3
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: vidar
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.0
4
+ version: 0.3.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Krzysztof Knapik
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: exe
11
11
  cert_chain: []
12
- date: 2019-09-27 00:00:00.000000000 Z
12
+ date: 2019-09-30 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: colorize
@@ -163,6 +163,7 @@ files:
163
163
  - lib/vidar.rb
164
164
  - lib/vidar/cli.rb
165
165
  - lib/vidar/config.rb
166
+ - lib/vidar/deploy_status.rb
166
167
  - lib/vidar/interpolation.rb
167
168
  - lib/vidar/k8s/container_status.rb
168
169
  - lib/vidar/k8s/pods.rb