cuber 1.6.0 → 1.8.0
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 +4 -4
- data/lib/cuber/cli.rb +2 -1
- data/lib/cuber/commands/info.rb +1 -1
- data/lib/cuber/cuberfile_parser.rb +5 -0
- data/lib/cuber/cuberfile_validator.rb +11 -5
- data/lib/cuber/templates/deployment.yml.erb +25 -1
- data/lib/cuber/version.rb +1 -1
- metadata +2 -2
    
        checksums.yaml
    CHANGED
    
    | @@ -1,7 +1,7 @@ | |
| 1 1 | 
             
            ---
         | 
| 2 2 | 
             
            SHA256:
         | 
| 3 | 
            -
              metadata.gz:  | 
| 4 | 
            -
              data.tar.gz:  | 
| 3 | 
            +
              metadata.gz: 8c28c18ed3acd87a99a88d336b9b729d4089efe1f97224b9bc4d16058a7ace8e
         | 
| 4 | 
            +
              data.tar.gz: 36957c9449da91c15284dbd041edef524627c33dbf3252300049baf717f64c5b
         | 
| 5 5 | 
             
            SHA512:
         | 
| 6 | 
            -
              metadata.gz:  | 
| 7 | 
            -
              data.tar.gz:  | 
| 6 | 
            +
              metadata.gz: 8498fc1f4c44b8e6fe4ed0939eec0e6229bb44e0dc66da2eb1e504e3304d0e2f74dc5d5ba40a123f884d9550fa584e245400cf0a1e3124beda52c0a078a48628
         | 
| 7 | 
            +
              data.tar.gz: 2f76ecbc4462b448069ec251ccfebbc9c4def63ca4be2e2378d37e63b3db8df38ea889830b4a1ef0e73be51a9f2de418fc81bb3f83c5c79eb46080825a2706d8
         | 
    
        data/lib/cuber/cli.rb
    CHANGED
    
    | @@ -7,6 +7,7 @@ require 'yaml' | |
| 7 7 | 
             
            require 'json'
         | 
| 8 8 | 
             
            require 'shellwords'
         | 
| 9 9 | 
             
            require 'time'
         | 
| 10 | 
            +
            require 'uri'
         | 
| 10 11 |  | 
| 11 12 | 
             
            module Cuber
         | 
| 12 13 | 
             
              class CLI
         | 
| @@ -26,7 +27,7 @@ module Cuber | |
| 26 27 | 
             
                end
         | 
| 27 28 |  | 
| 28 29 | 
             
                def parse_cuberfile
         | 
| 29 | 
            -
                  abort 'Cuberfile not found in current directory' unless File. | 
| 30 | 
            +
                  abort 'Cuberfile not found in current directory' unless File.exist? 'Cuberfile'
         | 
| 30 31 | 
             
                  content = File.read 'Cuberfile'
         | 
| 31 32 | 
             
                  parser = CuberfileParser.new
         | 
| 32 33 | 
             
                  parser.instance_eval(content)
         | 
    
        data/lib/cuber/commands/info.rb
    CHANGED
    
    | @@ -98,7 +98,7 @@ module Cuber::Commands | |
| 98 98 | 
             
                    schedule = cron['spec']['schedule']
         | 
| 99 99 | 
             
                    command = cron['spec']['jobTemplate']['spec']['template']['spec']['containers'][0]['command'].shelljoin
         | 
| 100 100 | 
             
                    last = cron['status']['lastScheduleTime']
         | 
| 101 | 
            -
                    puts "#{name}: #{schedule} #{command}  | 
| 101 | 
            +
                    puts "#{name}: #{schedule} #{command} #{'(' + time_ago_in_words(last) + ')' if last}"
         | 
| 102 102 | 
             
                  end
         | 
| 103 103 | 
             
                end
         | 
| 104 104 |  | 
| @@ -15,6 +15,7 @@ module Cuber | |
| 15 15 | 
             
                  @cron = {}
         | 
| 16 16 | 
             
                  @secrets = {}
         | 
| 17 17 | 
             
                  @env = {}
         | 
| 18 | 
            +
                  @health = nil
         | 
| 18 19 | 
             
                  @lb = {}
         | 
| 19 20 | 
             
                  @ingress = nil
         | 
| 20 21 | 
             
                  @ssl = nil
         | 
| @@ -75,6 +76,10 @@ module Cuber | |
| 75 76 | 
             
                def env key, value, secret: false
         | 
| 76 77 | 
             
                  secret ? (@secrets[key] = value) : (@env[key] = value)
         | 
| 77 78 | 
             
                end
         | 
| 79 | 
            +
                
         | 
| 80 | 
            +
                def health url
         | 
| 81 | 
            +
                  @health = url
         | 
| 82 | 
            +
                end
         | 
| 78 83 |  | 
| 79 84 | 
             
                def lb key, value
         | 
| 80 85 | 
             
                  @lb[key] = value
         | 
| @@ -20,6 +20,7 @@ module Cuber | |
| 20 20 | 
             
                  validate_procs
         | 
| 21 21 | 
             
                  validate_cron
         | 
| 22 22 | 
             
                  validate_env
         | 
| 23 | 
            +
                  validate_health
         | 
| 23 24 | 
             
                  validate_lb
         | 
| 24 25 | 
             
                  validate_ingress
         | 
| 25 26 | 
             
                  validate_ssl
         | 
| @@ -49,7 +50,7 @@ module Cuber | |
| 49 50 |  | 
| 50 51 | 
             
                def validate_dockerfile
         | 
| 51 52 | 
             
                  return unless @options[:dockerfile]
         | 
| 52 | 
            -
                  @errors << 'dockerfile must be a file' unless File. | 
| 53 | 
            +
                  @errors << 'dockerfile must be a file' unless File.exist? @options[:dockerfile]
         | 
| 53 54 | 
             
                end
         | 
| 54 55 |  | 
| 55 56 | 
             
                def validate_image
         | 
| @@ -63,12 +64,12 @@ module Cuber | |
| 63 64 |  | 
| 64 65 | 
             
                def validate_dockerconfig
         | 
| 65 66 | 
             
                  return unless @options[:dockerconfig]
         | 
| 66 | 
            -
                  @errors << 'dockerconfig must be a file' unless File. | 
| 67 | 
            +
                  @errors << 'dockerconfig must be a file' unless File.exist? @options[:dockerconfig]
         | 
| 67 68 | 
             
                end
         | 
| 68 69 |  | 
| 69 70 | 
             
                def validate_kubeconfig
         | 
| 70 71 | 
             
                  @errors << 'kubeconfig must be present' if @options[:kubeconfig].to_s.strip.empty?
         | 
| 71 | 
            -
                  @errors << 'kubeconfig must be a file' unless File. | 
| 72 | 
            +
                  @errors << 'kubeconfig must be a file' unless File.exist? @options[:kubeconfig]
         | 
| 72 73 | 
             
                end
         | 
| 73 74 |  | 
| 74 75 | 
             
                def validate_migrate
         | 
| @@ -103,6 +104,11 @@ module Cuber | |
| 103 104 | 
             
                    @errors << "env \"#{key}\" name can only include uppercase letters, digits or underscores" if key !~ /\A[A-Z_]+[A-Z0-9_]*\z/
         | 
| 104 105 | 
             
                  end
         | 
| 105 106 | 
             
                end
         | 
| 107 | 
            +
                
         | 
| 108 | 
            +
                def validate_health
         | 
| 109 | 
            +
                  return unless @options[:health]
         | 
| 110 | 
            +
                  @errors << 'health checks must be an http url' unless URI.parse(@options[:health]).kind_of? URI::HTTP
         | 
| 111 | 
            +
                end
         | 
| 106 112 |  | 
| 107 113 | 
             
                def validate_lb
         | 
| 108 114 | 
             
                  @options[:lb].each do |key, value|
         | 
| @@ -117,8 +123,8 @@ module Cuber | |
| 117 123 |  | 
| 118 124 | 
             
                def validate_ssl
         | 
| 119 125 | 
             
                  return unless @options[:ssl]
         | 
| 120 | 
            -
                  @errors << 'ssl crt must be a file' unless File. | 
| 121 | 
            -
                  @errors << 'ssl key must be a file' unless File. | 
| 126 | 
            +
                  @errors << 'ssl crt must be a file' unless File.exist? @options[:ssl][:crt]
         | 
| 127 | 
            +
                  @errors << 'ssl key must be a file' unless File.exist? @options[:ssl][:key]
         | 
| 122 128 | 
             
                end
         | 
| 123 129 |  | 
| 124 130 | 
             
              end
         | 
| @@ -59,6 +59,23 @@ data: | |
| 59 59 | 
             
              <%= key %>: <%= value.to_s.to_json %>
         | 
| 60 60 | 
             
              <%- end -%>
         | 
| 61 61 |  | 
| 62 | 
            +
            ---
         | 
| 63 | 
            +
            apiVersion: policy/v1
         | 
| 64 | 
            +
            kind: PodDisruptionBudget
         | 
| 65 | 
            +
            metadata:
         | 
| 66 | 
            +
              name: web-pdb
         | 
| 67 | 
            +
              namespace: <%= @options[:app] %>
         | 
| 68 | 
            +
              labels:
         | 
| 69 | 
            +
                app.kubernetes.io/name: <%= @options[:app] %>
         | 
| 70 | 
            +
                app.kubernetes.io/instance: <%= @options[:instance] %>
         | 
| 71 | 
            +
                app.kubernetes.io/version: <%= @options[:release] %>
         | 
| 72 | 
            +
                app.kubernetes.io/managed-by: cuber
         | 
| 73 | 
            +
            spec:
         | 
| 74 | 
            +
              maxUnavailable: "50%"
         | 
| 75 | 
            +
              selector:
         | 
| 76 | 
            +
                matchLabels:
         | 
| 77 | 
            +
                  app: web-proc
         | 
| 78 | 
            +
             | 
| 62 79 | 
             
            <%- if @options[:migrate] -%>
         | 
| 63 80 | 
             
            ---
         | 
| 64 81 | 
             
            apiVersion: batch/v1
         | 
| @@ -164,10 +181,17 @@ spec: | |
| 164 181 | 
             
                      value: "8080"
         | 
| 165 182 | 
             
                    ports:
         | 
| 166 183 | 
             
                    - containerPort: 8080
         | 
| 184 | 
            +
                    <%- end -%>
         | 
| 185 | 
            +
                    <%- if procname.to_s == 'web' && @options[:health] -%>
         | 
| 167 186 | 
             
                    readinessProbe:
         | 
| 168 187 | 
             
                      httpGet:
         | 
| 169 | 
            -
                        path: /
         | 
| 170 188 | 
             
                        port: 8080
         | 
| 189 | 
            +
                        path: <%= URI.parse(@options[:health]).path.to_json %>
         | 
| 190 | 
            +
                        httpHeaders:
         | 
| 191 | 
            +
                          - name: Host
         | 
| 192 | 
            +
                            value: <%= URI.parse(@options[:health]).host.to_json %>
         | 
| 193 | 
            +
                          - name: X-Forwarded-Proto
         | 
| 194 | 
            +
                            value: <%= URI.parse(@options[:health]).scheme.to_json %>
         | 
| 171 195 | 
             
                    <%- end -%>
         | 
| 172 196 | 
             
                  <%- if @options[:migrate] && @options[:migrate][:check] -%>
         | 
| 173 197 | 
             
                  initContainers:
         | 
    
        data/lib/cuber/version.rb
    CHANGED
    
    
    
        metadata
    CHANGED
    
    | @@ -1,14 +1,14 @@ | |
| 1 1 | 
             
            --- !ruby/object:Gem::Specification
         | 
| 2 2 | 
             
            name: cuber
         | 
| 3 3 | 
             
            version: !ruby/object:Gem::Version
         | 
| 4 | 
            -
              version: 1. | 
| 4 | 
            +
              version: 1.8.0
         | 
| 5 5 | 
             
            platform: ruby
         | 
| 6 6 | 
             
            authors:
         | 
| 7 7 | 
             
            - Cuber
         | 
| 8 8 | 
             
            autorequire: 
         | 
| 9 9 | 
             
            bindir: bin
         | 
| 10 10 | 
             
            cert_chain: []
         | 
| 11 | 
            -
            date: 2022-11- | 
| 11 | 
            +
            date: 2022-11-08 00:00:00.000000000 Z
         | 
| 12 12 | 
             
            dependencies: []
         | 
| 13 13 | 
             
            description: 
         | 
| 14 14 | 
             
            email: 
         |