cpl 1.3.0 → 2.0.0.rc.0

Sign up to get free protection for your applications and to get access to all the features.
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