cpl 2.0.0.rc.0 → 2.0.0.rc.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
  SHA256:
3
- metadata.gz: 84efbe4c7082edcef9193b7a4116af57177b54f52373e4e4bca7e6b277f1b846
4
- data.tar.gz: 9e047c8b354e6e0a01b28b84e4b3c74c0f5dd675c8d1f5113119803f1f5bcabb
3
+ metadata.gz: '03793c0046fc403a4fb42583e57c3449394a52da4c03191d3af845e2e5e0b53f'
4
+ data.tar.gz: c882856e066cc3a63f0d8f52738e8e432a72cec33dc565224159a554949a2f5b
5
5
  SHA512:
6
- metadata.gz: 6efc92fbcb3ea76e6ec44561178e719afc80af717790771b9c2c8358f564eb94b9c76b8aef8367c401e6e98f2faf9c0a8e628371a3193e038843339d12f7058e
7
- data.tar.gz: e43668ec1adc98bd399396a35cb092d8d940df1d6bfea3ecb09b99e1be48f8ff7f0c625d8c4936eb61d01ceec4e3c8fb6a2eb7018f6ee91c1b0751dc7847f93f
6
+ metadata.gz: 788fa61c7d5710e72ea00db402770d3fcfd037938ce0ce1ef8134e0614a024cddb7e4629223598a509f33abf2dec499e64bf23a52b0b86b823eafe59b3522cd5
7
+ data.tar.gz: 6ba9d8cdab48da090c7efd86eb9e14f05845ed1f219c6d251ce18ad636e34d678562d092ad52806dae3a4d106cd4760402463c823d9e66158f14e6cd806fc520
data/CHANGELOG.md CHANGED
@@ -14,12 +14,26 @@ Changes since the last non-beta release.
14
14
 
15
15
  _Please add entries here for your pull requests that are not yet released._
16
16
 
17
+ ## [2.0.0.rc.0] - 2024-05-10
18
+
19
+ ### BREAKING CHANGES
20
+
21
+ - Commands that finished with a failure now exit with code `64` instead of `1`. [PR 132](https://github.com/shakacode/heroku-to-control-plane/pull/132) by [Rafael Gomes](https://github.com/rafaelgomesxyz).
22
+ - `run:cleanup` command has been removed. [PR 151](https://github.com/shakacode/heroku-to-control-plane/pull/151) by [Rafael Gomes](https://github.com/rafaelgomesxyz).
23
+ - `deploy-image` command now runs the release script in the context of the `run` command. [PR 151](https://github.com/shakacode/heroku-to-control-plane/pull/151) by [Rafael Gomes](https://github.com/rafaelgomesxyz).
24
+
17
25
  ### Added
18
26
 
27
+ - Added options to `run` command to override the workload container's `--cpu`, `--memory`, and `--entrypoint`. [PR 151](https://github.com/shakacode/heroku-to-control-plane/pull/151) by [Rafael Gomes](https://github.com/rafaelgomesxyz).
28
+ - Added `--workload` option to `delete` command to delete a specific workload. [PR 151](https://github.com/shakacode/heroku-to-control-plane/pull/151) by [Rafael Gomes](https://github.com/rafaelgomesxyz).
29
+ - Added `--replica` option to `logs` command to see logs from a specific replica. [PR 151](https://github.com/shakacode/heroku-to-control-plane/pull/151) by [Rafael Gomes](https://github.com/rafaelgomesxyz).
30
+ - Added `--replica` option to `ps:stop` command to stop a specific replica. [PR 151](https://github.com/shakacode/heroku-to-control-plane/pull/151) by [Rafael Gomes](https://github.com/rafaelgomesxyz).
19
31
  - Added option to set custom names for secrets and secrets policy, using `secrets_name` and `secrets_policy_name` in `controlplane.yml`. [PR 159](https://github.com/shakacode/heroku-to-control-plane/pull/159) by [Rafael Gomes](https://github.com/rafaelgomesxyz).
20
32
 
21
33
  ### Changed
22
34
 
35
+ - `run` command now uses a single reusable cron workload and works for both interactive and non-interactive jobs. [PR 151](https://github.com/shakacode/heroku-to-control-plane/pull/151) by [Rafael Gomes](https://github.com/rafaelgomesxyz).
36
+ - `run:detached` command has been deprecated in favor of `run`. [PR 151](https://github.com/shakacode/heroku-to-control-plane/pull/151) by [Rafael Gomes](https://github.com/rafaelgomesxyz).
23
37
  - `deploy-image` command now raises an error if image does not exist. [PR 153](https://github.com/shakacode/heroku-to-control-plane/pull/153) by [Rafael Gomes](https://github.com/rafaelgomesxyz).
24
38
 
25
39
  ## [1.4.0] - 2024-03-20
@@ -164,7 +178,8 @@ _Please add entries here for your pull requests that are not yet released._
164
178
 
165
179
  - Initial release
166
180
 
167
- [Unreleased]: https://github.com/shakacode/heroku-to-control-plane/compare/v1.4.0...HEAD
181
+ [Unreleased]: https://github.com/shakacode/heroku-to-control-plane/compare/v2.0.0.rc.0...HEAD
182
+ [2.0.0.rc.0]: https://github.com/shakacode/heroku-to-control-plane/compare/v1.4.0...v2.0.0.rc.0
168
183
  [1.4.0]: https://github.com/shakacode/heroku-to-control-plane/compare/v1.3.0...v1.4.0
169
184
  [1.3.0]: https://github.com/shakacode/heroku-to-control-plane/compare/v1.2.0...v1.3.0
170
185
  [1.2.0]: https://github.com/shakacode/heroku-to-control-plane/compare/v1.1.2...v1.2.0
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- cpl (2.0.0.rc.0)
4
+ cpl (2.0.0.rc.1)
5
5
  debug (~> 1.7.1)
6
6
  dotenv (~> 2.8.1)
7
7
  jwt (~> 2.8.1)
data/docs/migrating.md CHANGED
@@ -47,7 +47,7 @@ Note how the templates correspond to files in the `.controlplane/templates/` dir
47
47
  `cpl setup-app` and `cpl apply-template` commands.
48
48
 
49
49
  Ensure that env vars point to the Heroku add-ons in the template for the app (`.controlplane/templates/app.yml`). See
50
- [this example](https://github.com/shakacode/react-webpack-rails-tutorial/blob/master/.controlplane/templates/app.yml).
50
+ [this example](https://github.com/shakacode/react-webpack-rails-tutorial/blob/master/.controlplane/templates/gvc.yml).
51
51
 
52
52
  After that, create a Dockerfile in `.controlplane/Dockerfile` for your deployment. See
53
53
  [this example](https://github.com/shakacode/react-webpack-rails-tutorial/blob/master/.controlplane/Dockerfile).
data/lib/command/run.rb CHANGED
@@ -87,9 +87,9 @@ module Command
87
87
  MAGIC_END = "---cpl run command finished---"
88
88
 
89
89
  attr_reader :interactive, :detached, :location, :original_workload, :runner_workload,
90
- :container, :image_link, :image_changed, :job, :replica, :command
90
+ :container, :expected_deployed_version, :job, :replica, :command
91
91
 
92
- def call # rubocop:disable Metrics/CyclomaticComplexity, Metrics/MethodLength, Metrics/PerceivedComplexity
92
+ def call # rubocop:disable Metrics/MethodLength
93
93
  @interactive = config.options[:interactive] || interactive_command?
94
94
  @detached = config.options[:detached]
95
95
  @log_method = config.options[:log_method]
@@ -117,11 +117,6 @@ module Command
117
117
  update_runner_workload
118
118
  wait_for_runner_workload_update
119
119
 
120
- # NOTE: need to wait some time before starting the job,
121
- # otherwise the image may not be updated yet
122
- # TODO: need to figure out if there's a better way to do this
123
- sleep 1 if image_changed
124
-
125
120
  start_job
126
121
  wait_for_replica_for_job
127
122
 
@@ -177,41 +172,54 @@ module Command
177
172
  end
178
173
  end
179
174
 
180
- def update_runner_workload # rubocop:disable Metrics/MethodLength
181
- step("Updating runner workload '#{runner_workload}' based on '#{original_workload}'") do
175
+ def update_runner_workload # rubocop:disable Metrics/CyclomaticComplexity, Metrics/MethodLength, Metrics/PerceivedComplexity
176
+ step("Updating runner workload '#{runner_workload}' based on '#{original_workload}'") do # rubocop:disable Metrics/BlockLength
177
+ @expected_deployed_version = cp.cron_workload_deployed_version(runner_workload)
178
+ should_update = false
179
+
182
180
  _, original_container_spec = base_workload_specs(original_workload)
183
181
  spec, container_spec = base_workload_specs(runner_workload)
184
182
 
185
183
  # Override image if specified
186
184
  image = config.options[:image]
187
- if image
188
- image = latest_image if image == "latest"
189
- @image_link = "/org/#{config.org}/image/#{image}"
190
- else
191
- @image_link = original_container_spec["image"]
185
+ image_link = if image
186
+ image = latest_image if image == "latest"
187
+ "/org/#{config.org}/image/#{image}"
188
+ else
189
+ original_container_spec["image"]
190
+ end
191
+ if container_spec["image"] != image_link
192
+ container_spec["image"] = image_link
193
+ should_update = true
192
194
  end
193
- @image_changed = container_spec["image"] != image_link
194
- container_spec["image"] = image_link
195
195
 
196
196
  # Container overrides
197
- container_spec["cpu"] = config.options[:cpu] if config.options[:cpu]
198
- container_spec["memory"] = config.options[:memory] if config.options[:memory]
197
+ if config.options[:cpu] && container_spec["cpu"] != config.options[:cpu]
198
+ container_spec["cpu"] = config.options[:cpu]
199
+ should_update = true
200
+ end
201
+ if config.options[:memory] && container_spec["memory"] != config.options[:memory]
202
+ container_spec["memory"] = config.options[:memory]
203
+ should_update = true
204
+ end
205
+
206
+ next true unless should_update
199
207
 
200
208
  # Update runner workload
209
+ @expected_deployed_version += 1
201
210
  cp.apply_hash("kind" => "workload", "name" => runner_workload, "spec" => spec)
202
211
  end
203
212
  end
204
213
 
205
214
  def wait_for_runner_workload_create
206
215
  step("Waiting for runner workload '#{runner_workload}' to be created", retry_on_failure: true) do
207
- cp.fetch_workload(runner_workload)
216
+ !cp.cron_workload_deployed_version(runner_workload).nil?
208
217
  end
209
218
  end
210
219
 
211
220
  def wait_for_runner_workload_update
212
221
  step("Waiting for runner workload '#{runner_workload}' to be updated", retry_on_failure: true) do
213
- _, container_spec = base_workload_specs(runner_workload)
214
- container_spec["image"] == image_link
222
+ cp.cron_workload_deployed_version(runner_workload) >= expected_deployed_version
215
223
  end
216
224
  end
217
225
 
@@ -245,6 +245,16 @@ class Controlplane # rubocop:disable Metrics/ClassLength
245
245
  perform_yaml(cmd)
246
246
  end
247
247
 
248
+ def cron_workload_deployed_version(workload)
249
+ current_deployment = fetch_workload_deployments(workload)&.dig("items")&.first
250
+ return nil unless current_deployment
251
+
252
+ ready = current_deployment.dig("status", "ready")
253
+ last_processed_version = current_deployment.dig("status", "lastProcessedVersion")
254
+
255
+ ready ? last_processed_version : nil
256
+ end
257
+
248
258
  # volumeset
249
259
 
250
260
  def fetch_volumesets(a_gvc = gvc)
data/lib/cpl/version.rb CHANGED
@@ -1,6 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Cpl
4
- VERSION = "2.0.0.rc.0"
4
+ VERSION = "2.0.0.rc.1"
5
5
  MIN_CPLN_VERSION = "0.0.71"
6
6
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: cpl
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.0.0.rc.0
4
+ version: 2.0.0.rc.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Justin Gordon
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2024-05-10 00:00:00.000000000 Z
12
+ date: 2024-05-11 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: debug