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.
- checksums.yaml +7 -0
- data/lib/hoobskubes.rb +124 -0
- 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: []
|