cpl 1.3.0 → 2.0.0.rc.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.
Files changed (67) hide show
  1. checksums.yaml +4 -4
  2. data/.github/workflows/command_docs.yml +1 -1
  3. data/.github/workflows/rspec-shared.yml +56 -0
  4. data/.github/workflows/rspec.yml +19 -31
  5. data/.github/workflows/rubocop.yml +2 -10
  6. data/.gitignore +2 -0
  7. data/.simplecov_spawn.rb +10 -0
  8. data/CHANGELOG.md +28 -1
  9. data/CONTRIBUTING.md +32 -2
  10. data/Gemfile.lock +38 -29
  11. data/README.md +43 -17
  12. data/cpl.gemspec +2 -1
  13. data/docs/commands.md +68 -59
  14. data/docs/dns.md +6 -0
  15. data/docs/migrating.md +10 -10
  16. data/docs/tips.md +15 -3
  17. data/examples/circleci.yml +3 -3
  18. data/examples/controlplane.yml +35 -9
  19. data/lib/command/apply_template.rb +66 -18
  20. data/lib/command/base.rb +168 -27
  21. data/lib/command/build_image.rb +4 -9
  22. data/lib/command/cleanup_stale_apps.rb +1 -3
  23. data/lib/command/copy_image_from_upstream.rb +0 -7
  24. data/lib/command/delete.rb +39 -7
  25. data/lib/command/deploy_image.rb +35 -2
  26. data/lib/command/exists.rb +1 -1
  27. data/lib/command/generate.rb +1 -1
  28. data/lib/command/info.rb +7 -3
  29. data/lib/command/logs.rb +22 -2
  30. data/lib/command/maintenance_off.rb +1 -1
  31. data/lib/command/maintenance_on.rb +1 -1
  32. data/lib/command/open.rb +2 -2
  33. data/lib/command/open_console.rb +2 -2
  34. data/lib/command/promote_app_from_upstream.rb +5 -25
  35. data/lib/command/ps.rb +1 -1
  36. data/lib/command/ps_start.rb +2 -1
  37. data/lib/command/ps_stop.rb +40 -8
  38. data/lib/command/ps_wait.rb +3 -2
  39. data/lib/command/run.rb +430 -68
  40. data/lib/command/setup_app.rb +22 -2
  41. data/lib/constants/exit_code.rb +7 -0
  42. data/lib/core/config.rb +11 -3
  43. data/lib/core/controlplane.rb +126 -47
  44. data/lib/core/controlplane_api.rb +15 -1
  45. data/lib/core/controlplane_api_cli.rb +3 -3
  46. data/lib/core/controlplane_api_direct.rb +33 -5
  47. data/lib/core/shell.rb +15 -9
  48. data/lib/cpl/version.rb +1 -1
  49. data/lib/cpl.rb +50 -9
  50. data/lib/deprecated_commands.json +2 -1
  51. data/lib/generator_templates/controlplane.yml +5 -0
  52. data/lib/generator_templates/templates/{gvc.yml → app.yml} +4 -4
  53. data/lib/generator_templates/templates/postgres.yml +1 -1
  54. data/lib/generator_templates/templates/rails.yml +1 -1
  55. data/script/check_cpln_links +3 -3
  56. data/templates/app.yml +18 -0
  57. data/templates/daily-task.yml +3 -2
  58. data/templates/rails.yml +3 -2
  59. data/templates/secrets.yml +11 -0
  60. data/templates/sidekiq.yml +3 -2
  61. metadata +38 -25
  62. data/.rspec +0 -1
  63. data/lib/command/run_cleanup.rb +0 -116
  64. data/lib/command/run_detached.rb +0 -175
  65. data/lib/core/scripts.rb +0 -34
  66. data/templates/gvc.yml +0 -13
  67. data/templates/identity.yml +0 -2
@@ -6,6 +6,7 @@ module Command
6
6
  OPTIONS = [
7
7
  app_option(required: true),
8
8
  workload_option,
9
+ location_option,
9
10
  wait_option("workload to be ready")
10
11
  ].freeze
11
12
  DESCRIPTION = "Starts workloads in app"
@@ -42,7 +43,7 @@ module Command
42
43
 
43
44
  @workloads.reverse_each do |workload|
44
45
  step("Waiting for workload '#{workload}' to be ready", retry_on_failure: true) do
45
- cp.workload_deployments_ready?(workload, expected_status: true)
46
+ cp.workload_deployments_ready?(workload, location: config.location, expected_status: true)
46
47
  end
47
48
  end
48
49
  end
@@ -6,6 +6,8 @@ module Command
6
6
  OPTIONS = [
7
7
  app_option(required: true),
8
8
  workload_option,
9
+ replica_option,
10
+ location_option,
9
11
  wait_option("workload to not be ready")
10
12
  ].freeze
11
13
  DESCRIPTION = "Stops workloads in app"
@@ -19,32 +21,62 @@ module Command
19
21
 
20
22
  # Stops a specific workload in app.
21
23
  cpl ps:stop -a $APP_NAME -w $WORKLOAD_NAME
24
+
25
+ # Stops a specific replica of a workload.
26
+ cpl ps:stop -a $APP_NAME -w $WORKLOAD_NAME -r $REPLICA_NAME
22
27
  ```
23
28
  EX
24
29
 
25
30
  def call
26
- @workloads = [config.options[:workload]] if config.options[:workload]
27
- @workloads ||= config[:app_workloads] + config[:additional_workloads]
31
+ workload = config.options[:workload]
32
+ replica = config.options[:replica]
33
+ if replica
34
+ stop_replica(workload, replica)
35
+ else
36
+ workloads = [workload] if workload
37
+ workloads ||= config[:app_workloads] + config[:additional_workloads]
38
+
39
+ stop_workloads(workloads)
40
+ end
41
+ end
28
42
 
29
- @workloads.each do |workload|
43
+ private
44
+
45
+ def stop_workloads(workloads)
46
+ workloads.each do |workload|
30
47
  step("Stopping workload '#{workload}'") do
31
48
  cp.set_workload_suspend(workload, true)
32
49
  end
33
50
  end
34
51
 
35
- wait_for_not_ready if config.options[:wait]
52
+ wait_for_workloads_not_ready(workloads) if config.options[:wait]
36
53
  end
37
54
 
38
- private
55
+ def stop_replica(workload, replica)
56
+ step("Stopping replica '#{replica}'", retry_on_failure: true) do
57
+ cp.stop_workload_replica(workload, replica, location: config.location)
58
+ end
39
59
 
40
- def wait_for_not_ready
60
+ wait_for_replica_not_ready(workload, replica) if config.options[:wait]
61
+ end
62
+
63
+ def wait_for_workloads_not_ready(workloads)
41
64
  progress.puts
42
65
 
43
- @workloads.each do |workload|
66
+ workloads.each do |workload|
44
67
  step("Waiting for workload '#{workload}' to not be ready", retry_on_failure: true) do
45
- cp.workload_deployments_ready?(workload, expected_status: false)
68
+ cp.workload_deployments_ready?(workload, location: config.location, expected_status: false)
46
69
  end
47
70
  end
48
71
  end
72
+
73
+ def wait_for_replica_not_ready(workload, replica)
74
+ progress.puts
75
+
76
+ step("Waiting for replica '#{replica}' to not be ready", retry_on_failure: true) do
77
+ result = cp.fetch_workload_replicas(workload, location: config.location)
78
+ !result["items"].include?(replica)
79
+ end
80
+ end
49
81
  end
50
82
  end
@@ -5,7 +5,8 @@ module Command
5
5
  NAME = "ps:wait"
6
6
  OPTIONS = [
7
7
  app_option(required: true),
8
- workload_option
8
+ workload_option,
9
+ location_option
9
10
  ].freeze
10
11
  DESCRIPTION = "Waits for workloads in app to be ready after re-deployment"
11
12
  LONG_DESCRIPTION = <<~DESC
@@ -27,7 +28,7 @@ module Command
27
28
 
28
29
  @workloads.reverse_each do |workload|
29
30
  step("Waiting for workload '#{workload}' to be ready", retry_on_failure: true) do
30
- cp.workload_deployments_ready?(workload, expected_status: true)
31
+ cp.workload_deployments_ready?(workload, location: config.location, expected_status: true)
31
32
  end
32
33
  end
33
34
  end