hoobskubes 0.0.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.
Files changed (3) hide show
  1. checksums.yaml +7 -0
  2. data/lib/hoobskubes.rb +124 -0
  3. metadata +44 -0
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA256:
3
+ metadata.gz: e6afd377d4dcdaf7fc9d5b93ca335bed1533a99f98403fc9cd3ca5b83c840c91
4
+ data.tar.gz: 09bfe8ba9fbd9c993582bb9f239f63c69ba055efefa542743385360f55b88d34
5
+ SHA512:
6
+ metadata.gz: 440bd13f3ac234ea439ef891ac60852212bee1b03d75795daf5af706ff247e52a3a83ee1bc0dcc1b44390de4a90c66f34e9b44ae77c1d8c2ca6ddb6210fb60bd
7
+ data.tar.gz: 6bc7c8752ec487d97db296b1409627c0d9ac8eace5dd7a6d6882ca8ac959075093c64dd3f3b4a5d407c5d68693f7ab317f9ba513080e18f339d8f760e3a35b3c
data/lib/hoobskubes.rb ADDED
@@ -0,0 +1,124 @@
1
+ class HoobsKubes
2
+ def self.current_context
3
+ %x{kubectl config current-context}.strip
4
+ end
5
+
6
+ def self.change_context
7
+ %x{kubectx #{context}}
8
+ check_correct_context
9
+ end
10
+
11
+ def self.check_correct_context
12
+ Kernel.abort("Context mismatch: expected is `#{context}` but current is `#{current_context}`") unless context == current_context
13
+ log "Context is #{current_context.bold.green}"
14
+ end
15
+
16
+ def self.pretty_print_table(resource, namespace=nil)
17
+ extra = resource == "nodes" ? " -Lbeta.kubernetes.io/instance-type -Lfailure-domain.beta.kubernetes.io/zone" : ""
18
+
19
+ if namespace.nil?
20
+ out = %x{kubectl get #{resource}#{extra}}
21
+ label = resource.capitalize
22
+ else
23
+ out = %x{kubectl get #{resource} --namespace=#{namespace}#{extra}}
24
+ label = "#{resource.capitalize} in #{namespace}"
25
+ end
26
+
27
+ first = true
28
+ out.each_line do |line|
29
+ if first
30
+ first = false
31
+ padlen = line.strip.length - label.length - 2
32
+ lpad = "=" * (padlen / 2)
33
+ rpad = lpad + ("=" * (padlen % 2))
34
+ puts "#{lpad} #{label} #{rpad}".bold.cyan
35
+ puts line.strip.bold
36
+ else
37
+ puts line.strip
38
+ end
39
+ end
40
+ puts "\n"
41
+ end
42
+
43
+ def self.apply_dir(dirname)
44
+ log "Applying #{dirname}:".bold.cyan
45
+ path = "#{@@dir}/#{dirname}"
46
+ Dir.foreach(path) do |item|
47
+ next if item == '.' or item == '..'
48
+ log " #{item}"
49
+ result = %x{kubectl apply -f #{path}/#{item}}.strip
50
+ result.each_line do |line|
51
+ if line.include? "unchanged"
52
+ line = line.strip.bold.green
53
+ elsif line.include? "configured"
54
+ line = line.strip.bold.brown
55
+ else
56
+ line = line.strip.bold.red
57
+ end
58
+ log " #{line}"
59
+ end
60
+ end
61
+ end
62
+
63
+ def self.log(str)
64
+ str.lines do |line|
65
+ puts line.strip.empty? ? "" : "[#{Time.now.to_s.gray}] #{line}"
66
+ end
67
+ end
68
+
69
+ def self.run(dir)
70
+ @@dir = dir
71
+
72
+ if ARGV.length == 0
73
+ begin
74
+ log "Starting deploy".bold.cyan
75
+ deploy
76
+ log "Done!".bold.green
77
+ status
78
+ rescue
79
+ log "Error!".bold.red
80
+ raise
81
+ end
82
+ elsif ARGV.include? "-s" or ARGV.include? "--status"
83
+ status
84
+ elsif ARGV.include? "-c" or ARGV.include? "--change-context"
85
+ change_context
86
+ elsif ARGV.include? "--help"
87
+ log "Usage: ./deploy.rb [options]"
88
+ log " With no options, this will apply yamls and display status"
89
+ log ""
90
+ log "Options:"
91
+ log " --help : This message"
92
+ log " -s --status : Display only status"
93
+
94
+ else
95
+ log "Unknown usage: deploy.rb #{ARGV.join " "}"
96
+ end
97
+ end
98
+ end
99
+
100
+ class String
101
+ def black; "\e[30m#{self}\e[0m" end
102
+ def red; "\e[31m#{self}\e[0m" end
103
+ def green; "\e[32m#{self}\e[0m" end
104
+ def brown; "\e[33m#{self}\e[0m" end
105
+ def blue; "\e[34m#{self}\e[0m" end
106
+ def magenta; "\e[35m#{self}\e[0m" end
107
+ def cyan; "\e[36m#{self}\e[0m" end
108
+ def gray; "\e[37m#{self}\e[0m" end
109
+
110
+ def bg_black; "\e[40m#{self}\e[0m" end
111
+ def bg_red; "\e[41m#{self}\e[0m" end
112
+ def bg_green; "\e[42m#{self}\e[0m" end
113
+ def bg_brown; "\e[43m#{self}\e[0m" end
114
+ def bg_blue; "\e[44m#{self}\e[0m" end
115
+ def bg_magenta; "\e[45m#{self}\e[0m" end
116
+ def bg_cyan; "\e[46m#{self}\e[0m" end
117
+ def bg_gray; "\e[47m#{self}\e[0m" end
118
+
119
+ def bold; "\e[1m#{self}\e[22m" end
120
+ def italic; "\e[3m#{self}\e[23m" end
121
+ def underline; "\e[4m#{self}\e[24m" end
122
+ def blink; "\e[5m#{self}\e[25m" end
123
+ def reverse_color; "\e[7m#{self}\e[27m" end
124
+ end
metadata ADDED
@@ -0,0 +1,44 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: hoobskubes
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.2
5
+ platform: ruby
6
+ authors:
7
+ - Samuel Colburn
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2019-02-06 00:00:00.000000000 Z
12
+ dependencies: []
13
+ description: Terrible kubernetes tools
14
+ email: samuel.colburn@gmail.com
15
+ executables: []
16
+ extensions: []
17
+ extra_rdoc_files: []
18
+ files:
19
+ - lib/hoobskubes.rb
20
+ homepage: https://sam.codes
21
+ licenses:
22
+ - MIT
23
+ metadata: {}
24
+ post_install_message:
25
+ rdoc_options: []
26
+ require_paths:
27
+ - lib
28
+ required_ruby_version: !ruby/object:Gem::Requirement
29
+ requirements:
30
+ - - ">="
31
+ - !ruby/object:Gem::Version
32
+ version: '0'
33
+ required_rubygems_version: !ruby/object:Gem::Requirement
34
+ requirements:
35
+ - - ">="
36
+ - !ruby/object:Gem::Version
37
+ version: '0'
38
+ requirements: []
39
+ rubyforge_project:
40
+ rubygems_version: 2.7.7
41
+ signing_key:
42
+ specification_version: 4
43
+ summary: HoobsKubes
44
+ test_files: []