3scale_toolbox 0.12.4 → 0.17.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 (121) hide show
  1. checksums.yaml +4 -4
  2. data/3scale_toolbox.gemspec +4 -3
  3. data/README.md +31 -10
  4. data/lib/3scale_toolbox.rb +5 -2
  5. data/lib/3scale_toolbox/attribute_filters.rb +2 -0
  6. data/lib/3scale_toolbox/attribute_filters/attribute_filter.rb +9 -0
  7. data/lib/3scale_toolbox/attribute_filters/service_id_from_ref_filter.rb +30 -0
  8. data/lib/3scale_toolbox/cli.rb +4 -0
  9. data/lib/3scale_toolbox/cli/custom_table_printer.rb +32 -0
  10. data/lib/3scale_toolbox/cli/error_handler.rb +17 -14
  11. data/lib/3scale_toolbox/cli/json_printer.rb +13 -0
  12. data/lib/3scale_toolbox/cli/output_flag.rb +20 -0
  13. data/lib/3scale_toolbox/cli/yaml_printer.rb +13 -0
  14. data/lib/3scale_toolbox/commands.rb +5 -1
  15. data/lib/3scale_toolbox/commands/activedocs_command/apply_command.rb +34 -11
  16. data/lib/3scale_toolbox/commands/activedocs_command/create_command.rb +22 -7
  17. data/lib/3scale_toolbox/commands/activedocs_command/list_command.rb +21 -11
  18. data/lib/3scale_toolbox/commands/application_command/apply_command.rb +27 -4
  19. data/lib/3scale_toolbox/commands/application_command/create_command.rb +16 -1
  20. data/lib/3scale_toolbox/commands/application_command/list_command.rb +10 -13
  21. data/lib/3scale_toolbox/commands/application_command/show_command.rb +8 -14
  22. data/lib/3scale_toolbox/commands/backend_command.rb +22 -0
  23. data/lib/3scale_toolbox/commands/backend_command/copy_command.rb +65 -0
  24. data/lib/3scale_toolbox/commands/backend_command/copy_command/copy_mapping_rules_task.rb +52 -0
  25. data/lib/3scale_toolbox/commands/backend_command/copy_command/copy_methods_task.rb +40 -0
  26. data/lib/3scale_toolbox/commands/backend_command/copy_command/copy_metrics_task.rb +30 -0
  27. data/lib/3scale_toolbox/commands/backend_command/copy_command/create_or_update_target_backend_task.rb +45 -0
  28. data/lib/3scale_toolbox/commands/backend_command/copy_command/task.rb +89 -0
  29. data/lib/3scale_toolbox/commands/copy_command.rb +2 -2
  30. data/lib/3scale_toolbox/commands/copy_command/service_command.rb +40 -0
  31. data/lib/3scale_toolbox/commands/import_command/openapi.rb +29 -7
  32. data/lib/3scale_toolbox/commands/import_command/openapi/create_activedocs_step.rb +4 -17
  33. data/lib/3scale_toolbox/commands/import_command/openapi/create_service_step.rb +1 -5
  34. data/lib/3scale_toolbox/commands/import_command/openapi/mapping_rule.rb +3 -2
  35. data/lib/3scale_toolbox/commands/import_command/openapi/step.rb +43 -5
  36. data/lib/3scale_toolbox/commands/import_command/openapi/update_policies_step.rb +9 -10
  37. data/lib/3scale_toolbox/commands/import_command/openapi/update_service_oidc_conf_step.rb +2 -17
  38. data/lib/3scale_toolbox/commands/import_command/openapi/update_service_proxy_step.rb +10 -10
  39. data/lib/3scale_toolbox/commands/methods_command/apply_command.rb +26 -4
  40. data/lib/3scale_toolbox/commands/methods_command/create_command.rb +23 -1
  41. data/lib/3scale_toolbox/commands/methods_command/list_command.rb +11 -9
  42. data/lib/3scale_toolbox/commands/metrics_command/apply_command.rb +26 -4
  43. data/lib/3scale_toolbox/commands/metrics_command/create_command.rb +23 -1
  44. data/lib/3scale_toolbox/commands/metrics_command/list_command.rb +7 -12
  45. data/lib/3scale_toolbox/commands/plans_command/apply_command.rb +36 -7
  46. data/lib/3scale_toolbox/commands/plans_command/create_command.rb +23 -1
  47. data/lib/3scale_toolbox/commands/plans_command/import/import_plan_limits_step.rb +11 -12
  48. data/lib/3scale_toolbox/commands/plans_command/import/import_plan_pricing_rules_step.rb +11 -12
  49. data/lib/3scale_toolbox/commands/plans_command/list_command.rb +8 -13
  50. data/lib/3scale_toolbox/commands/plans_command/show_command.rb +6 -14
  51. data/lib/3scale_toolbox/commands/product_command.rb +22 -0
  52. data/lib/3scale_toolbox/commands/product_command/copy_command.rb +78 -0
  53. data/lib/3scale_toolbox/commands/product_command/copy_command/copy_backends_task.rb +71 -0
  54. data/lib/3scale_toolbox/commands/product_command/copy_command/delete_target_backend_usages_task.rb +48 -0
  55. data/lib/3scale_toolbox/commands/proxy_config_command.rb +3 -0
  56. data/lib/3scale_toolbox/commands/proxy_config_command/export_command.rb +74 -0
  57. data/lib/3scale_toolbox/commands/proxy_config_command/helper.rb +15 -0
  58. data/lib/3scale_toolbox/commands/proxy_config_command/list_command.rb +13 -29
  59. data/lib/3scale_toolbox/commands/proxy_config_command/show_command.rb +20 -23
  60. data/lib/3scale_toolbox/commands/service_command.rb +7 -5
  61. data/lib/3scale_toolbox/commands/service_command/apply_command.rb +69 -58
  62. data/lib/3scale_toolbox/commands/service_command/copy_command.rb +95 -0
  63. data/lib/3scale_toolbox/commands/service_command/copy_command/bump_proxy_version_task.rb +36 -0
  64. data/lib/3scale_toolbox/commands/service_command/copy_command/copy_activedocs_task.rb +46 -0
  65. data/lib/3scale_toolbox/commands/service_command/copy_command/copy_app_plans_task.rb +35 -0
  66. data/lib/3scale_toolbox/commands/service_command/copy_command/copy_limits_task.rb +39 -0
  67. data/lib/3scale_toolbox/commands/service_command/copy_command/copy_mapping_rules_task.rb +35 -0
  68. data/lib/3scale_toolbox/commands/service_command/copy_command/copy_methods_task.rb +40 -0
  69. data/lib/3scale_toolbox/commands/service_command/copy_command/copy_metrics_task.rb +37 -0
  70. data/lib/3scale_toolbox/commands/service_command/copy_command/copy_policies_task.rb +17 -0
  71. data/lib/3scale_toolbox/commands/service_command/copy_command/copy_pricingrules_task.rb +44 -0
  72. data/lib/3scale_toolbox/commands/service_command/copy_command/copy_service_proxy_task.rb +32 -0
  73. data/lib/3scale_toolbox/commands/service_command/copy_command/create_or_update_service_task.rb +48 -0
  74. data/lib/3scale_toolbox/commands/service_command/copy_command/destroy_mapping_rules_task.rb +34 -0
  75. data/lib/3scale_toolbox/commands/service_command/copy_command/task.rb +99 -0
  76. data/lib/3scale_toolbox/commands/service_command/create_command.rb +58 -44
  77. data/lib/3scale_toolbox/commands/service_command/delete_command.rb +31 -33
  78. data/lib/3scale_toolbox/commands/service_command/list_command.rb +24 -34
  79. data/lib/3scale_toolbox/commands/service_command/show_command.rb +39 -44
  80. data/lib/3scale_toolbox/commands/update_command.rb +3 -3
  81. data/lib/3scale_toolbox/commands/update_command/{update_service.rb → service_command.rb} +22 -18
  82. data/lib/3scale_toolbox/commands/update_command/service_command/copy_service_settings_task.rb +35 -0
  83. data/lib/3scale_toolbox/commands/update_command/service_command/delete_activedocs_task.rb +26 -0
  84. data/lib/3scale_toolbox/entities.rb +5 -0
  85. data/lib/3scale_toolbox/entities/application_plan.rb +31 -4
  86. data/lib/3scale_toolbox/entities/backend.rb +152 -0
  87. data/lib/3scale_toolbox/entities/backend_mapping_rule.rb +76 -0
  88. data/lib/3scale_toolbox/entities/backend_method.rb +90 -0
  89. data/lib/3scale_toolbox/entities/backend_metric.rb +88 -0
  90. data/lib/3scale_toolbox/entities/backend_usage.rb +99 -0
  91. data/lib/3scale_toolbox/entities/service.rb +18 -3
  92. data/lib/3scale_toolbox/error.rb +53 -0
  93. data/lib/3scale_toolbox/helper.rb +20 -0
  94. data/lib/3scale_toolbox/openapi.rb +2 -0
  95. data/lib/3scale_toolbox/openapi/oas3.rb +232 -0
  96. data/lib/3scale_toolbox/openapi/swagger.rb +192 -0
  97. data/lib/3scale_toolbox/proxy_logger.rb +1 -1
  98. data/lib/3scale_toolbox/version.rb +1 -1
  99. data/licenses.xml +190 -20
  100. data/resources/oas3_meta_schema.json +1654 -0
  101. metadata +69 -30
  102. data/lib/3scale_toolbox/commands/copy_command/copy_service.rb +0 -142
  103. data/lib/3scale_toolbox/commands/import_command/openapi/threescale_api_spec.rb +0 -80
  104. data/lib/3scale_toolbox/swagger.rb +0 -1
  105. data/lib/3scale_toolbox/swagger/swagger.rb +0 -123
  106. data/lib/3scale_toolbox/tasks.rb +0 -15
  107. data/lib/3scale_toolbox/tasks/bump_proxy_version_task.rb +0 -32
  108. data/lib/3scale_toolbox/tasks/copy_activedocs_task.rb +0 -42
  109. data/lib/3scale_toolbox/tasks/copy_app_plans_task.rb +0 -31
  110. data/lib/3scale_toolbox/tasks/copy_limits_task.rb +0 -36
  111. data/lib/3scale_toolbox/tasks/copy_mapping_rules_task.rb +0 -32
  112. data/lib/3scale_toolbox/tasks/copy_methods_task.rb +0 -36
  113. data/lib/3scale_toolbox/tasks/copy_metrics_task.rb +0 -33
  114. data/lib/3scale_toolbox/tasks/copy_policies_task.rb +0 -13
  115. data/lib/3scale_toolbox/tasks/copy_pricingrules_task.rb +0 -41
  116. data/lib/3scale_toolbox/tasks/copy_service_proxy_task.rb +0 -12
  117. data/lib/3scale_toolbox/tasks/copy_service_settings_task.rb +0 -38
  118. data/lib/3scale_toolbox/tasks/copy_task.rb +0 -66
  119. data/lib/3scale_toolbox/tasks/delete_activedocs_task.rb +0 -22
  120. data/lib/3scale_toolbox/tasks/destroy_mapping_rules_task.rb +0 -22
  121. data/lib/3scale_toolbox/tasks/helper_task.rb +0 -25
@@ -1,15 +0,0 @@
1
- require '3scale_toolbox/tasks/copy_task'
2
- require '3scale_toolbox/tasks/helper_task'
3
- require '3scale_toolbox/tasks/copy_service_proxy_task'
4
- require '3scale_toolbox/tasks/copy_metrics_task'
5
- require '3scale_toolbox/tasks/copy_methods_task'
6
- require '3scale_toolbox/tasks/copy_app_plans_task'
7
- require '3scale_toolbox/tasks/copy_limits_task'
8
- require '3scale_toolbox/tasks/destroy_mapping_rules_task'
9
- require '3scale_toolbox/tasks/copy_mapping_rules_task'
10
- require '3scale_toolbox/tasks/copy_service_settings_task'
11
- require '3scale_toolbox/tasks/copy_policies_task'
12
- require '3scale_toolbox/tasks/copy_pricingrules_task'
13
- require '3scale_toolbox/tasks/delete_activedocs_task'
14
- require '3scale_toolbox/tasks/copy_activedocs_task'
15
- require '3scale_toolbox/tasks/bump_proxy_version_task'
@@ -1,32 +0,0 @@
1
- module ThreeScaleToolbox
2
- module Tasks
3
- class BumpProxyVersionTask
4
- attr_reader :service
5
-
6
- def initialize(service:)
7
- @service = service
8
- end
9
-
10
- ##
11
- # bumps proxy config version to propagate proxy settings updates
12
- def call
13
- # Proxy update is the mechanism to increase version of the proxy,
14
- # Hence propagating (mapping rules, poicies, oidc, auth) update to
15
- # latest proxy config, making available to gateway.
16
-
17
- # Currently it is done always because mapping rules, at least, are always created
18
- # So they need to be propagated
19
- proxy_settings = {
20
- # Adding harmless attribute to avoid empty body
21
- # update_proxy cannot be done with empty body
22
- # and must be done to increase proxy version
23
- # If proxy settings have not been changed since last update,
24
- # this request will not have effect and proxy config version will not be bumped.
25
- service_id: service.id
26
- }
27
-
28
- service.update_proxy proxy_settings
29
- end
30
- end
31
- end
32
- end
@@ -1,42 +0,0 @@
1
- module ThreeScaleToolbox
2
- module Tasks
3
- class CopyActiveDocsTask
4
- include CopyTask
5
-
6
- def call
7
- puts 'copying all service ActiveDocs'
8
-
9
- source.activedocs.each(&method(:apply_target_activedoc))
10
- end
11
-
12
- private
13
-
14
- def apply_target_activedoc(attrs)
15
- activedocs = Entities::ActiveDocs.find_by_system_name(remote: target.remote,
16
- system_name: attrs['system_name'])
17
- if activedocs.nil?
18
- Entities::ActiveDocs.create(remote: target.remote, attrs: create_attrs(attrs))
19
- elsif activedocs.attrs.fetch('service_id') == target.id
20
- activedocs.update(update_attrs(attrs))
21
- else
22
- # activedocs with same system_name exists, but now owned by target service
23
- new_attrs = create_attrs(attrs)
24
- new_attrs['system_name'] = "#{attrs['system_name']}#{target.id}"
25
- Entities::ActiveDocs.create(remote: target.remote, attrs: new_attrs)
26
- end
27
- end
28
-
29
- def update_attrs(old_attrs)
30
- create_attrs(old_attrs)
31
- end
32
-
33
- def create_attrs(old_attrs)
34
- # keep same system_name
35
- new_attrs = old_attrs.reject { |key, _| %w[id created_at updated_at].include? key }
36
- new_attrs.tap do |attrs|
37
- attrs['service_id'] = target.id
38
- end
39
- end
40
- end
41
- end
42
- end
@@ -1,31 +0,0 @@
1
- module ThreeScaleToolbox
2
- module Tasks
3
- class CopyApplicationPlansTask
4
- include CopyTask
5
-
6
- def call
7
- source_plans = source.plans
8
- target_plans = target.plans
9
- missing_plans = missing_app_plans(source_plans, target_plans)
10
- missing_plans.each do |plan|
11
- plan.delete('links')
12
- plan.delete('default') # TODO: handle default plan
13
- if plan.delete('custom') # TODO: what to do with custom plans?
14
- puts "skipping custom plan #{plan}"
15
- else
16
- ThreeScaleToolbox::Entities::ApplicationPlan.create(service: target, plan_attrs: plan)
17
- end
18
- end
19
- puts "target service missing #{missing_plans.size} application plans"
20
- end
21
-
22
- private
23
-
24
- def missing_app_plans(source_plans, target_plans)
25
- ThreeScaleToolbox::Helper.array_difference(source_plans, target_plans) do |src, target|
26
- ThreeScaleToolbox::Helper.compare_hashes(src, target, ['system_name'])
27
- end
28
- end
29
- end
30
- end
31
- end
@@ -1,36 +0,0 @@
1
- module ThreeScaleToolbox
2
- module Tasks
3
- class CopyLimitsTask
4
- include CopyTask
5
- include Helper
6
-
7
- def call
8
- plan_mapping = application_plan_mapping(source.plans, target.plans)
9
- plan_mapping.each do |plan_id, target_plan|
10
- source_plan = ThreeScaleToolbox::Entities::ApplicationPlan.new(id: plan_id, service: source)
11
- target_plan = ThreeScaleToolbox::Entities::ApplicationPlan.new(id: target_plan['id'], service: target)
12
- missing_limits = missing_limits(source_plan.limits, target_plan.limits, metrics_map)
13
- missing_limits.each do |limit|
14
- limit.delete('links')
15
- target_plan.create_limit(metrics_map.fetch(limit.fetch('metric_id')), limit)
16
- end
17
- puts "Missing #{missing_limits.size} plan limits from target application plan " \
18
- "#{target_plan.id}. Source plan #{plan_id}"
19
- end
20
- end
21
-
22
- private
23
-
24
- def metrics_map
25
- @metrics_map ||= metrics_mapping(source_metrics_and_methods, target_metrics_and_methods)
26
- end
27
-
28
- def missing_limits(source_limits, target_limits, metrics_map)
29
- ThreeScaleToolbox::Helper.array_difference(source_limits, target_limits) do |limit, target|
30
- ThreeScaleToolbox::Helper.compare_hashes(limit, target, ['period']) &&
31
- metrics_map.fetch(limit.fetch('metric_id')) == target.fetch('metric_id')
32
- end
33
- end
34
- end
35
- end
36
- end
@@ -1,32 +0,0 @@
1
- module ThreeScaleToolbox
2
- module Tasks
3
- class CopyMappingRulesTask
4
- include CopyTask
5
- include Helper
6
-
7
- def call
8
- missing_rules = missing_mapping_rules(source.mapping_rules,
9
- target.mapping_rules, metrics_map)
10
- missing_rules.each do |mapping_rule|
11
- mapping_rule.delete('links')
12
- mapping_rule['metric_id'] = metrics_map.fetch(mapping_rule.delete('metric_id'))
13
- target.create_mapping_rule mapping_rule
14
- end
15
- puts "created #{missing_rules.size} mapping rules"
16
- end
17
-
18
- private
19
-
20
- def metrics_map
21
- @metrics_map ||= metrics_mapping(source_metrics_and_methods, target_metrics_and_methods)
22
- end
23
-
24
- def missing_mapping_rules(source_rules, target_rules, metrics_map)
25
- ThreeScaleToolbox::Helper.array_difference(source_rules, target_rules) do |source_rule, target_rule|
26
- ThreeScaleToolbox::Helper.compare_hashes(source_rule, target_rule, %w[pattern http_method delta]) &&
27
- metrics_map.fetch(source_rule.fetch('metric_id')) == target_rule.fetch('metric_id')
28
- end
29
- end
30
- end
31
- end
32
- end
@@ -1,36 +0,0 @@
1
- module ThreeScaleToolbox
2
- module Tasks
3
- class CopyMethodsTask
4
- include CopyTask
5
-
6
- def call
7
- puts "original service hits metric #{source_hits.fetch('id')} has #{source_methods.size} methods"
8
- puts "target service hits metric #{target_hits.fetch('id')} has #{target_methods.size} methods"
9
- missing_methods.each(&method(:create_method))
10
- puts "created #{missing_methods.size} missing methods on target service"
11
- invalidate_target_methods if missing_methods.size.positive?
12
- end
13
-
14
- private
15
-
16
- def create_method(method)
17
- Entities::Method.create(
18
- service: target,
19
- parent_id: target_hits.fetch('id'),
20
- attrs: ThreeScaleToolbox::Helper.filter_params(%w[friendly_name system_name], method)
21
- )
22
- rescue ThreeScaleToolbox::ThreeScaleApiError => e
23
- raise e unless ThreeScaleToolbox::Helper.system_name_already_taken_error?(e.apierrors)
24
-
25
- warn "[WARN] method #{method.fetch('system_name')} not created. " \
26
- 'Metric with the same system_name exists.'
27
- end
28
-
29
- def missing_methods
30
- @missing_methods ||= ThreeScaleToolbox::Helper.array_difference(source_methods, target_methods) do |method, target|
31
- ThreeScaleToolbox::Helper.compare_hashes(method, target, ['system_name'])
32
- end
33
- end
34
- end
35
- end
36
- end
@@ -1,33 +0,0 @@
1
- module ThreeScaleToolbox
2
- module Tasks
3
- class CopyMetricsTask
4
- include CopyTask
5
-
6
- def call
7
- puts "original service has #{source_metrics.size} metrics"
8
- puts "target service has #{target_metrics.size} metrics"
9
- missing_metrics.each(&method(:create_metric))
10
- puts "created #{missing_metrics.size} metrics on the target service"
11
- invalidate_target_metrics if missing_metrics.size.positive?
12
- end
13
-
14
- private
15
-
16
- def create_metric(metric)
17
- new_metric = metric.reject { |key, _| %w[id links].include? key }
18
- Entities::Metric.create(service: target, attrs: new_metric)
19
- rescue ThreeScaleToolbox::ThreeScaleApiError => e
20
- raise e unless ThreeScaleToolbox::Helper.system_name_already_taken_error?(e.apierrors)
21
-
22
- warn "[WARN] metric #{metric.fetch('system_name')} not created. " \
23
- 'Method with the same system_name exists.'
24
- end
25
-
26
- def missing_metrics
27
- @missing_metrics ||= ThreeScaleToolbox::Helper.array_difference(source_metrics, target_metrics) do |source, target|
28
- ThreeScaleToolbox::Helper.compare_hashes(source, target, ['system_name'])
29
- end
30
- end
31
- end
32
- end
33
- end
@@ -1,13 +0,0 @@
1
- module ThreeScaleToolbox
2
- module Tasks
3
- class CopyPoliciesTask
4
- include CopyTask
5
-
6
- def call
7
- puts 'copy proxy policies'
8
- source_policies = source.policies
9
- target.update_policies('policies_config' => source_policies)
10
- end
11
- end
12
- end
13
- end
@@ -1,41 +0,0 @@
1
- module ThreeScaleToolbox
2
- module Tasks
3
- class CopyPricingRulesTask
4
- include CopyTask
5
- include Helper
6
-
7
- def call
8
- plan_mapping = application_plan_mapping(source.plans, target.plans)
9
- plan_mapping.each do |plan_id, target_plan|
10
- pricing_rules_source = source.remote.list_pricingrules_per_application_plan(plan_id)
11
- pricing_rules_target = target.remote.list_pricingrules_per_application_plan(target_plan['id'])
12
- missing_pricing_rules = missing_pricing_rules(pricing_rules_source, pricing_rules_target,
13
- metrics_map)
14
- missing_pricing_rules.each do |pricing_rule|
15
- pricing_rule.delete('links')
16
- target.remote.create_pricingrule(
17
- target_plan['id'],
18
- metrics_map.fetch(pricing_rule['metric_id']),
19
- pricing_rule
20
- )
21
- end
22
- puts "Missing #{missing_pricing_rules.size} pricing rules from target application plan " \
23
- "#{target_plan['id']}. Source plan #{plan_id}"
24
- end
25
- end
26
-
27
- private
28
-
29
- def metrics_map
30
- @metrics_map ||= metrics_mapping(source_metrics_and_methods, target_metrics_and_methods)
31
- end
32
-
33
- def missing_pricing_rules(source_pricing_rules, target_pricing_rules, metrics_map)
34
- ThreeScaleToolbox::Helper.array_difference(source_pricing_rules, target_pricing_rules) do |src, target|
35
- ThreeScaleToolbox::Helper.compare_hashes(src, target, %w[cost_per_unit min max]) &&
36
- metrics_map.fetch(src.fetch('metric_id')) == target.fetch('metric_id')
37
- end
38
- end
39
- end
40
- end
41
- end
@@ -1,12 +0,0 @@
1
- module ThreeScaleToolbox
2
- module Tasks
3
- class CopyServiceProxyTask
4
- include CopyTask
5
-
6
- def call
7
- target.update_proxy source.proxy
8
- puts "updated proxy of #{target.id} to match the original"
9
- end
10
- end
11
- end
12
- end
@@ -1,38 +0,0 @@
1
- module ThreeScaleToolbox
2
- module Tasks
3
- class CopyServiceSettingsTask
4
- include CopyTask
5
- PARAMS_FILTER = %w[system_name id links]
6
-
7
- def call
8
- svc_obj = update_service source_service_settings
9
- if (errors = svc_obj['errors'])
10
- raise ThreeScaleToolbox::Error, "Service has not been saved. Errors: #{errors}" \
11
- end
12
-
13
- puts "updated service settings for service id #{source.id}..."
14
- end
15
-
16
- private
17
-
18
- def source_service_settings
19
- source.attrs.reject { |k, _| PARAMS_FILTER.include? k }
20
- end
21
-
22
- def update_service(service_attrs)
23
- svc_obj = target.update service_attrs
24
-
25
- # Source and target remotes might not allow same set of deployment options
26
- # Invalid deployment option check
27
- # use default deployment_option
28
- if (errors = svc_obj['errors']) &&
29
- ThreeScaleToolbox::Helper.service_invalid_deployment_option?(errors)
30
- service_attrs.delete('deployment_option')
31
- svc_obj = target.update service_attrs
32
- end
33
-
34
- svc_obj
35
- end
36
- end
37
- end
38
- end
@@ -1,66 +0,0 @@
1
- module ThreeScaleToolbox
2
- module Tasks
3
- module CopyTask
4
- def self.included(base)
5
- base.extend(ClassMethods)
6
- end
7
-
8
- module ClassMethods
9
- end
10
-
11
- attr_reader :context
12
-
13
- def initialize(context)
14
- @context = context
15
- end
16
-
17
- def source
18
- context[:source]
19
- end
20
-
21
- def target
22
- context[:target]
23
- end
24
-
25
- def source_metrics
26
- context[:source_metrics] ||= source.metrics
27
- end
28
-
29
- def source_hits
30
- context[:source_hits] ||= source.hits
31
- end
32
-
33
- def source_methods
34
- context[:source_methods] ||= source.methods(source_hits.fetch('id'))
35
- end
36
-
37
- def source_metrics_and_methods
38
- source_metrics + source_methods
39
- end
40
-
41
- def target_metrics
42
- context[:target_metrics] ||= target.metrics
43
- end
44
-
45
- def target_hits
46
- context[:target_hits] ||= target.hits
47
- end
48
-
49
- def target_methods
50
- context[:target_methods] ||= target.methods(target_hits.fetch('id'))
51
- end
52
-
53
- def target_metrics_and_methods
54
- target_metrics + target_methods
55
- end
56
-
57
- def invalidate_target_methods
58
- context[:target_methods] = nil
59
- end
60
-
61
- def invalidate_target_metrics
62
- context[:target_metrics] = nil
63
- end
64
- end
65
- end
66
- end
@@ -1,22 +0,0 @@
1
- module ThreeScaleToolbox
2
- module Tasks
3
- class DeleteActiveDocsTask
4
- attr_reader :context
5
-
6
- def initialize(context)
7
- @context = context
8
- end
9
-
10
- def call
11
- puts 'deleting all target service ActiveDocs'
12
- target.activedocs.each do |activedoc|
13
- target.remote.delete_activedocs(activedoc['id'])
14
- end
15
- end
16
-
17
- def target
18
- context[:target]
19
- end
20
- end
21
- end
22
- end