ey-core 3.4.4 → 3.5.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 (59) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +11 -3
  3. data/bin/ey-core +8 -0
  4. data/features/environment_variables.feature +54 -0
  5. data/features/step_definitions/accounts_steps.rb +14 -0
  6. data/features/step_definitions/applications_steps.rb +7 -14
  7. data/features/step_definitions/environment_variables_steps.rb +51 -0
  8. data/features/step_definitions/environments_steps.rb +15 -0
  9. data/features/support/environment_variable_helpers.rb +20 -0
  10. data/features/support/resource_helpers.rb +12 -0
  11. data/lib/ey-core/cli/environment_variables.rb +71 -0
  12. data/lib/ey-core/cli/helpers/core.rb +29 -0
  13. data/lib/ey-core/cli/main.rb +2 -0
  14. data/lib/ey-core/cli/servers.rb +34 -17
  15. data/lib/ey-core/client.rb +23 -0
  16. data/lib/ey-core/client/mock.rb +3 -0
  17. data/lib/ey-core/collections/auto_scaling_alarms.rb +8 -0
  18. data/lib/ey-core/collections/auto_scaling_policies.rb +33 -0
  19. data/lib/ey-core/collections/environment_variables.rb +8 -0
  20. data/lib/ey-core/models/address.rb +2 -0
  21. data/lib/ey-core/models/application.rb +1 -0
  22. data/lib/ey-core/models/auto_scaling_alarm.rb +54 -0
  23. data/lib/ey-core/models/auto_scaling_group.rb +26 -0
  24. data/lib/ey-core/models/base_auto_scaling_policy.rb +61 -0
  25. data/lib/ey-core/models/environment.rb +53 -47
  26. data/lib/ey-core/models/environment_variable.rb +29 -0
  27. data/lib/ey-core/models/request.rb +4 -0
  28. data/lib/ey-core/models/simple_auto_scaling_policy.rb +24 -0
  29. data/lib/ey-core/models/step_auto_scaling_policy.rb +24 -0
  30. data/lib/ey-core/models/target_auto_scaling_policy.rb +24 -0
  31. data/lib/ey-core/requests/create_account.rb +5 -0
  32. data/lib/ey-core/requests/create_address.rb +1 -0
  33. data/lib/ey-core/requests/create_application.rb +8 -7
  34. data/lib/ey-core/requests/create_auto_scaling_alarm.rb +69 -0
  35. data/lib/ey-core/requests/create_auto_scaling_policy.rb +68 -0
  36. data/lib/ey-core/requests/create_environment.rb +2 -1
  37. data/lib/ey-core/requests/create_environment_variable.rb +39 -0
  38. data/lib/ey-core/requests/create_user.rb +8 -6
  39. data/lib/ey-core/requests/destroy_auto_scaling_alarm.rb +49 -0
  40. data/lib/ey-core/requests/destroy_auto_scaling_policy.rb +49 -0
  41. data/lib/ey-core/requests/get_applications.rb +1 -1
  42. data/lib/ey-core/requests/get_auto_scaling_alarm.rb +27 -0
  43. data/lib/ey-core/requests/get_auto_scaling_alarms.rb +34 -0
  44. data/lib/ey-core/requests/get_auto_scaling_policies.rb +46 -0
  45. data/lib/ey-core/requests/get_auto_scaling_policy.rb +27 -0
  46. data/lib/ey-core/requests/get_environment_variable.rb +19 -0
  47. data/lib/ey-core/requests/get_environment_variables.rb +29 -0
  48. data/lib/ey-core/requests/get_environments.rb +1 -1
  49. data/lib/ey-core/requests/update_auto_scaling_alarm.rb +45 -0
  50. data/lib/ey-core/requests/update_auto_scaling_policy.rb +46 -0
  51. data/lib/ey-core/requests/update_environment_variable.rb +25 -0
  52. data/lib/ey-core/test_helpers.rb +2 -0
  53. data/lib/ey-core/test_helpers/auto_scaling_helpers.rb +35 -0
  54. data/lib/ey-core/version.rb +1 -1
  55. data/spec/addresses_spec.rb +2 -1
  56. data/spec/auto_scaling_alarms_spec.rb +40 -0
  57. data/spec/auto_scaling_policies_spec.rb +94 -0
  58. data/spec/spec_helper.rb +7 -0
  59. metadata +37 -2
@@ -0,0 +1,94 @@
1
+ require "spec_helper"
2
+
3
+ RSpec.describe "Auto scaling policies" do
4
+ let!(:client) { create_client }
5
+ let!(:account) { create_account(client: client) }
6
+ let!(:environment) { create_environment(account: account) }
7
+ let(:auto_scaling_group) { create_auto_scaling_group(environment: environment.id) }
8
+ let(:simple_policy_params) do
9
+ {
10
+ name: SecureRandom.hex(16),
11
+ action_value: 2,
12
+ action_type: "add",
13
+ action_unit: "instances",
14
+ auto_scaling_group_id: auto_scaling_group.id,
15
+ type: "simple"
16
+ }
17
+ end
18
+
19
+ describe "common requests for all policy types" do
20
+ let!(:policy) { client.auto_scaling_policies.create!(simple_policy_params).resource! }
21
+
22
+ it "is able to retrieve auto scaling policy by it's id" do
23
+ found_policy = client.auto_scaling_policies.get(policy.id)
24
+ expect(found_policy).not_to be_nil
25
+ expect(found_policy.id).to eq(policy.id)
26
+ end
27
+
28
+ it "updates auto scaling policy" do
29
+ expect do
30
+ policy.update(name: "new name")
31
+ end.to change { policy.name }.to("new name")
32
+ end
33
+
34
+ it "destroys a policy by it's id" do
35
+ expect do
36
+ policy.destroy!
37
+ end.to change { auto_scaling_group.reload.simple_auto_scaling_policies.count }.from(1).to(0)
38
+ end
39
+ end
40
+
41
+ context "simple autoscaling policy" do
42
+ it "adds one to autoscaling group" do
43
+ expect {
44
+ client.auto_scaling_policies.create!(simple_policy_params)
45
+ }.to change { auto_scaling_group.reload.simple_auto_scaling_policies.count }.from(0).to(1)
46
+ .and not_change { auto_scaling_group.reload.step_auto_scaling_policies.count }
47
+ .and not_change { auto_scaling_group.reload.target_auto_scaling_policies.count }
48
+ end
49
+ end
50
+
51
+ context "target tracking auto scaling policy" do
52
+ let(:params) do
53
+ {
54
+ auto_scaling_group_id: auto_scaling_group.id,
55
+ name: SecureRandom.hex(16),
56
+ target_value: 0.7,
57
+ estimated_warmup: 200,
58
+ metric_type: "avg_cup",
59
+ disable_scale_in: false,
60
+ type: "target"
61
+ }
62
+ end
63
+
64
+ it "adds one to autoscaling group" do
65
+ expect {
66
+ client.auto_scaling_policies.create!(params)
67
+ }.to change { auto_scaling_group.reload.target_auto_scaling_policies.count }.from(0).to(1)
68
+ .and not_change { auto_scaling_group.reload.simple_auto_scaling_policies.count }
69
+ .and not_change { auto_scaling_group.reload.step_auto_scaling_policies.count }
70
+ end
71
+ end
72
+
73
+ context "step auto scaling policy" do
74
+ let(:params) do
75
+ {
76
+ auto_scaling_group_id: auto_scaling_group.id,
77
+ name: SecureRandom.hex(16),
78
+ estimated_warmup: 200,
79
+ action_unit: "instances",
80
+ action_type: "add",
81
+ steps: [{ metric_from: 50, metric_to: nil, action_value: 1 }],
82
+ type: "step"
83
+ }
84
+ end
85
+
86
+ it "adds one to autoscaling group" do
87
+ expect {
88
+ client.auto_scaling_policies.create!(params)
89
+ }.to change { auto_scaling_group.reload.step_auto_scaling_policies.count }.from(0).to(1)
90
+ .and not_change { auto_scaling_group.reload.simple_auto_scaling_policies.count }
91
+ .and not_change { auto_scaling_group.reload.target_auto_scaling_policies.count }
92
+ end
93
+ end
94
+ end
@@ -17,4 +17,11 @@ RSpec.configure do |config|
17
17
  $stdin = STDIN
18
18
  $stderr = STDERR
19
19
  end
20
+
21
+ #
22
+ # This allows to have not_change matcher, i.e.
23
+ #
24
+ # expect { something }.to change { other_thing }
25
+ # .and not_change { completely_other_things }
26
+ RSpec::Matchers.define_negated_matcher :not_change, :change
20
27
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ey-core
3
3
  version: !ruby/object:Gem::Version
4
- version: 3.4.4
4
+ version: 3.5.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Engine Yard Engineering
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2017-11-11 00:00:00.000000000 Z
11
+ date: 2018-04-05 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: addressable
@@ -403,6 +403,7 @@ files:
403
403
  - features/accounts.feature
404
404
  - features/applications.feature
405
405
  - features/current_user.feature
406
+ - features/environment_variables.feature
406
407
  - features/environments.feature
407
408
  - features/init.feature
408
409
  - features/login.feature
@@ -411,6 +412,7 @@ files:
411
412
  - features/step_definitions/applications_steps.rb
412
413
  - features/step_definitions/current_user_steps.rb
413
414
  - features/step_definitions/deprecated_command_steps.rb
415
+ - features/step_definitions/environment_variables_steps.rb
414
416
  - features/step_definitions/environments_steps.rb
415
417
  - features/step_definitions/version_steps.rb
416
418
  - features/support/account_helpers.rb
@@ -423,6 +425,7 @@ files:
423
425
  - features/support/deployment_helpers.rb
424
426
  - features/support/env.rb
425
427
  - features/support/environment_helpers.rb
428
+ - features/support/environment_variable_helpers.rb
426
429
  - features/support/fake_kernel.rb
427
430
  - features/support/io.rb
428
431
  - features/support/mock_api.rb
@@ -439,6 +442,7 @@ files:
439
442
  - lib/ey-core/cli/console.rb
440
443
  - lib/ey-core/cli/current_user.rb
441
444
  - lib/ey-core/cli/deploy.rb
445
+ - lib/ey-core/cli/environment_variables.rb
442
446
  - lib/ey-core/cli/environments.rb
443
447
  - lib/ey-core/cli/errors.rb
444
448
  - lib/ey-core/cli/help.rb
@@ -485,7 +489,9 @@ files:
485
489
  - lib/ey-core/collections/application_archives.rb
486
490
  - lib/ey-core/collections/application_deployments.rb
487
491
  - lib/ey-core/collections/applications.rb
492
+ - lib/ey-core/collections/auto_scaling_alarms.rb
488
493
  - lib/ey-core/collections/auto_scaling_groups.rb
494
+ - lib/ey-core/collections/auto_scaling_policies.rb
489
495
  - lib/ey-core/collections/backup_files.rb
490
496
  - lib/ey-core/collections/blueprints.rb
491
497
  - lib/ey-core/collections/components.rb
@@ -499,6 +505,7 @@ files:
499
505
  - lib/ey-core/collections/database_services.rb
500
506
  - lib/ey-core/collections/deployments.rb
501
507
  - lib/ey-core/collections/environment_plan_usages.rb
508
+ - lib/ey-core/collections/environment_variables.rb
502
509
  - lib/ey-core/collections/environments.rb
503
510
  - lib/ey-core/collections/features.rb
504
511
  - lib/ey-core/collections/firewall_rules.rb
@@ -549,8 +556,10 @@ files:
549
556
  - lib/ey-core/models/application.rb
550
557
  - lib/ey-core/models/application_archive.rb
551
558
  - lib/ey-core/models/application_deployment.rb
559
+ - lib/ey-core/models/auto_scaling_alarm.rb
552
560
  - lib/ey-core/models/auto_scaling_group.rb
553
561
  - lib/ey-core/models/backup_file.rb
562
+ - lib/ey-core/models/base_auto_scaling_policy.rb
554
563
  - lib/ey-core/models/billing.rb
555
564
  - lib/ey-core/models/blueprint.rb
556
565
  - lib/ey-core/models/component.rb
@@ -565,6 +574,7 @@ files:
565
574
  - lib/ey-core/models/deployment.rb
566
575
  - lib/ey-core/models/environment.rb
567
576
  - lib/ey-core/models/environment_plan_usage.rb
577
+ - lib/ey-core/models/environment_variable.rb
568
578
  - lib/ey-core/models/feature.rb
569
579
  - lib/ey-core/models/firewall.rb
570
580
  - lib/ey-core/models/firewall_rule.rb
@@ -587,10 +597,13 @@ files:
587
597
  - lib/ey-core/models/server_event.rb
588
598
  - lib/ey-core/models/server_usage.rb
589
599
  - lib/ey-core/models/service.rb
600
+ - lib/ey-core/models/simple_auto_scaling_policy.rb
590
601
  - lib/ey-core/models/ssl_certificate.rb
602
+ - lib/ey-core/models/step_auto_scaling_policy.rb
591
603
  - lib/ey-core/models/storage.rb
592
604
  - lib/ey-core/models/storage_user.rb
593
605
  - lib/ey-core/models/support_trial.rb
606
+ - lib/ey-core/models/target_auto_scaling_policy.rb
594
607
  - lib/ey-core/models/task.rb
595
608
  - lib/ey-core/models/token.rb
596
609
  - lib/ey-core/models/untracked_address.rb
@@ -615,12 +628,15 @@ files:
615
628
  - lib/ey-core/requests/create_alert.rb
616
629
  - lib/ey-core/requests/create_application.rb
617
630
  - lib/ey-core/requests/create_application_archive.rb
631
+ - lib/ey-core/requests/create_auto_scaling_alarm.rb
618
632
  - lib/ey-core/requests/create_auto_scaling_group.rb
633
+ - lib/ey-core/requests/create_auto_scaling_policy.rb
619
634
  - lib/ey-core/requests/create_backup_file.rb
620
635
  - lib/ey-core/requests/create_database_server.rb
621
636
  - lib/ey-core/requests/create_database_service.rb
622
637
  - lib/ey-core/requests/create_database_service_snapshot.rb
623
638
  - lib/ey-core/requests/create_environment.rb
639
+ - lib/ey-core/requests/create_environment_variable.rb
624
640
  - lib/ey-core/requests/create_firewall.rb
625
641
  - lib/ey-core/requests/create_firewall_rule.rb
626
642
  - lib/ey-core/requests/create_keypair.rb
@@ -644,7 +660,9 @@ files:
644
660
  - lib/ey-core/requests/deploy_environment_application.rb
645
661
  - lib/ey-core/requests/deprovision_environment.rb
646
662
  - lib/ey-core/requests/destroy_addon.rb
663
+ - lib/ey-core/requests/destroy_auto_scaling_alarm.rb
647
664
  - lib/ey-core/requests/destroy_auto_scaling_group.rb
665
+ - lib/ey-core/requests/destroy_auto_scaling_policy.rb
648
666
  - lib/ey-core/requests/destroy_blueprint.rb
649
667
  - lib/ey-core/requests/destroy_database_server.rb
650
668
  - lib/ey-core/requests/destroy_database_server_snapshot.rb
@@ -687,8 +705,12 @@ files:
687
705
  - lib/ey-core/requests/get_application_deployment.rb
688
706
  - lib/ey-core/requests/get_application_deployments.rb
689
707
  - lib/ey-core/requests/get_applications.rb
708
+ - lib/ey-core/requests/get_auto_scaling_alarm.rb
709
+ - lib/ey-core/requests/get_auto_scaling_alarms.rb
690
710
  - lib/ey-core/requests/get_auto_scaling_group.rb
691
711
  - lib/ey-core/requests/get_auto_scaling_groups.rb
712
+ - lib/ey-core/requests/get_auto_scaling_policies.rb
713
+ - lib/ey-core/requests/get_auto_scaling_policy.rb
692
714
  - lib/ey-core/requests/get_backup_file.rb
693
715
  - lib/ey-core/requests/get_backup_files.rb
694
716
  - lib/ey-core/requests/get_billing.rb
@@ -715,6 +737,8 @@ files:
715
737
  - lib/ey-core/requests/get_environment_database_services.rb
716
738
  - lib/ey-core/requests/get_environment_logical_databases.rb
717
739
  - lib/ey-core/requests/get_environment_plan_usages.rb
740
+ - lib/ey-core/requests/get_environment_variable.rb
741
+ - lib/ey-core/requests/get_environment_variables.rb
718
742
  - lib/ey-core/requests/get_environments.rb
719
743
  - lib/ey-core/requests/get_feature.rb
720
744
  - lib/ey-core/requests/get_features.rb
@@ -794,11 +818,14 @@ files:
794
818
  - lib/ey-core/requests/update_address.rb
795
819
  - lib/ey-core/requests/update_alert.rb
796
820
  - lib/ey-core/requests/update_application_archive.rb
821
+ - lib/ey-core/requests/update_auto_scaling_alarm.rb
797
822
  - lib/ey-core/requests/update_auto_scaling_group.rb
823
+ - lib/ey-core/requests/update_auto_scaling_policy.rb
798
824
  - lib/ey-core/requests/update_billing.rb
799
825
  - lib/ey-core/requests/update_blueprint.rb
800
826
  - lib/ey-core/requests/update_connector.rb
801
827
  - lib/ey-core/requests/update_environment.rb
828
+ - lib/ey-core/requests/update_environment_variable.rb
802
829
  - lib/ey-core/requests/update_membership.rb
803
830
  - lib/ey-core/requests/update_provider_location.rb
804
831
  - lib/ey-core/requests/update_server.rb
@@ -812,6 +839,7 @@ files:
812
839
  - lib/ey-core/test_helpers.rb
813
840
  - lib/ey-core/test_helpers/account_helpers.rb
814
841
  - lib/ey-core/test_helpers/alert_helpers.rb
842
+ - lib/ey-core/test_helpers/auto_scaling_helpers.rb
815
843
  - lib/ey-core/test_helpers/client_helpers.rb
816
844
  - lib/ey-core/test_helpers/cucumber.rb
817
845
  - lib/ey-core/test_helpers/resource_helpers.rb
@@ -827,7 +855,9 @@ files:
827
855
  - spec/alerts_spec.rb
828
856
  - spec/application_archives_spec.rb
829
857
  - spec/applications_spec.rb
858
+ - spec/auto_scaling_alarms_spec.rb
830
859
  - spec/auto_scaling_groups_spec.rb
860
+ - spec/auto_scaling_policies_spec.rb
831
861
  - spec/billing_spec.rb
832
862
  - spec/blueprints_spec.rb
833
863
  - spec/client_spec.rb
@@ -911,6 +941,7 @@ test_files:
911
941
  - features/accounts.feature
912
942
  - features/applications.feature
913
943
  - features/current_user.feature
944
+ - features/environment_variables.feature
914
945
  - features/environments.feature
915
946
  - features/init.feature
916
947
  - features/login.feature
@@ -919,6 +950,7 @@ test_files:
919
950
  - features/step_definitions/applications_steps.rb
920
951
  - features/step_definitions/current_user_steps.rb
921
952
  - features/step_definitions/deprecated_command_steps.rb
953
+ - features/step_definitions/environment_variables_steps.rb
922
954
  - features/step_definitions/environments_steps.rb
923
955
  - features/step_definitions/version_steps.rb
924
956
  - features/support/account_helpers.rb
@@ -931,6 +963,7 @@ test_files:
931
963
  - features/support/deployment_helpers.rb
932
964
  - features/support/env.rb
933
965
  - features/support/environment_helpers.rb
966
+ - features/support/environment_variable_helpers.rb
934
967
  - features/support/fake_kernel.rb
935
968
  - features/support/io.rb
936
969
  - features/support/mock_api.rb
@@ -948,7 +981,9 @@ test_files:
948
981
  - spec/alerts_spec.rb
949
982
  - spec/application_archives_spec.rb
950
983
  - spec/applications_spec.rb
984
+ - spec/auto_scaling_alarms_spec.rb
951
985
  - spec/auto_scaling_groups_spec.rb
986
+ - spec/auto_scaling_policies_spec.rb
952
987
  - spec/billing_spec.rb
953
988
  - spec/blueprints_spec.rb
954
989
  - spec/client_spec.rb