gooddata 1.1.0-java → 1.2.0-java
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.document +0 -0
- data/.flayignore +2 -0
- data/.travis.yml +24 -7
- data/.yardopts +0 -0
- data/CHANGELOG.md +144 -0
- data/CLI.md +0 -0
- data/Dockerfile.jruby +7 -2
- data/Dockerfile.ruby +1 -1
- data/Gemfile +0 -0
- data/Guardfile +0 -0
- data/Rakefile +23 -9
- data/TODO.md +0 -0
- data/bin/gitflow-init.sh +8 -0
- data/ci.rake +3 -3
- data/data/2008.crt +39 -0
- data/data/new_ca.cer +22 -0
- data/dependency_decisions.yml +0 -0
- data/docker-compose.lcm.yml +31 -0
- data/docker-compose.yml +4 -2
- data/gooddata.gemspec +3 -3
- data/lcm.rake +288 -0
- data/lib/gooddata.rb +1 -0
- data/lib/gooddata/bricks/base_downloader.rb +1 -1
- data/lib/gooddata/bricks/brick.rb +0 -1
- data/lib/gooddata/bricks/middleware/aws_middleware.rb +1 -1
- data/lib/gooddata/bricks/middleware/logger_middleware.rb +1 -1
- data/lib/gooddata/bricks/pipeline.rb +67 -0
- data/lib/gooddata/bricks/provisioning_brick.rb +18 -0
- data/lib/gooddata/bricks/release_brick.rb +18 -0
- data/lib/gooddata/bricks/rollout_brick.rb +14 -0
- data/lib/gooddata/bricks/user_filters_brick.rb +13 -0
- data/lib/gooddata/bricks/users_brick.rb +13 -0
- data/lib/gooddata/core/logging.rb +1 -1
- data/lib/gooddata/exceptions/maql_execution.rb +1 -1
- data/lib/gooddata/extensions/string.rb +0 -0
- data/lib/gooddata/lcm/actions/associate_clients.rb +34 -8
- data/lib/gooddata/lcm/actions/collect_data_product.rb +8 -1
- data/lib/gooddata/lcm/actions/collect_segment_clients.rb +13 -23
- data/lib/gooddata/lcm/actions/collect_segments.rb +10 -0
- data/lib/gooddata/lcm/actions/synchronize_clients.rb +3 -1
- data/lib/gooddata/lcm/actions/synchronize_ldm.rb +61 -34
- data/lib/gooddata/lcm/actions/synchronize_user_filters.rb +6 -4
- data/lib/gooddata/lcm/actions/update_release_table.rb +4 -12
- data/lib/gooddata/lcm/dsl/params_dsl.rb +0 -4
- data/lib/gooddata/lcm/dsl/type_dsl.rb +0 -4
- data/lib/gooddata/lcm/helpers/check_helper.rb +1 -1
- data/lib/gooddata/lcm/lcm2.rb +0 -2
- data/lib/gooddata/lcm/types/special/enum.rb +6 -0
- data/lib/gooddata/lcm/types/special/enum/synchronize_ldm.rb +20 -0
- data/lib/gooddata/lcm/types/special/types.rb +1 -1
- data/lib/gooddata/mixins/is_folder.rb +0 -0
- data/lib/gooddata/mixins/to_json.rb +0 -0
- data/lib/gooddata/mixins/uri_getter.rb +0 -0
- data/lib/gooddata/models/project_creator.rb +38 -30
- data/lib/gooddata/models/user_filters/user_filter_builder.rb +1 -0
- data/lib/gooddata/rest/README.md +0 -0
- data/lib/gooddata/version.rb +1 -1
- data/lib/templates/bricks/brick.rb.erb +0 -0
- data/lib/templates/bricks/main.rb.erb +0 -0
- data/lib/templates/project/Goodfile.erb +0 -0
- data/lib/templates/project/data/commits.csv +0 -0
- data/lib/templates/project/data/devs.csv +0 -0
- data/lib/templates/project/data/repos.csv +0 -0
- data/lib/templates/project/model/model.rb.erb +0 -0
- metadata +23 -452
- data/lib/gooddata/lcm/actions/ensure_data_product.rb +0 -63
- data/spec/.rubocop.yml +0 -16
- data/spec/bricks/bricks_spec.rb +0 -110
- data/spec/bricks/default-config.json +0 -8
- data/spec/data/.gooddata +0 -4
- data/spec/data/blueprints/additional_dataset_module.json +0 -32
- data/spec/data/blueprints/attribute_sort_order_blueprint.json +0 -72
- data/spec/data/blueprints/big_blueprint_not_pruned.json +0 -2079
- data/spec/data/blueprints/invalid_blueprint.json +0 -103
- data/spec/data/blueprints/m_n_model.json +0 -104
- data/spec/data/blueprints/model_module.json +0 -25
- data/spec/data/blueprints/test_blueprint.json +0 -39
- data/spec/data/blueprints/test_project_model_spec.json +0 -106
- data/spec/data/cc/data/source/commits.csv +0 -4
- data/spec/data/cc/data/source/devs.csv +0 -4
- data/spec/data/cc/data/source/repos.csv +0 -3
- data/spec/data/cc/devel.prm +0 -0
- data/spec/data/cc/graph/graph.grf +0 -11
- data/spec/data/cc/workspace.prm +0 -19
- data/spec/data/column_based_permissions.csv +0 -7
- data/spec/data/column_based_permissions2.csv +0 -6
- data/spec/data/dynamic_schedule_params_table.csv +0 -7
- data/spec/data/gd_gse_data_blueprint.json +0 -1371
- data/spec/data/gd_gse_data_manifest.json +0 -1424
- data/spec/data/gd_gse_data_model.json +0 -1772
- data/spec/data/gooddata_version_process/gooddata_version.rb +0 -9
- data/spec/data/gooddata_version_process/gooddata_version.zip +0 -0
- data/spec/data/hello_world_process/hello_world.rb +0 -9
- data/spec/data/hello_world_process/hello_world.zip +0 -0
- data/spec/data/integration_model.json +0 -252
- data/spec/data/integration_policies.csv +0 -9134
- data/spec/data/line_based_permissions.csv +0 -3
- data/spec/data/manifests/test_blueprint.json +0 -32
- data/spec/data/manifests/test_project.json +0 -107
- data/spec/data/reports/left_attr_report.json +0 -108
- data/spec/data/reports/metric_only_one_line.json +0 -83
- data/spec/data/reports/report_1.json +0 -197
- data/spec/data/reports/top_attr_report.json +0 -108
- data/spec/data/ruby_params_process/ruby_params.rb +0 -9
- data/spec/data/ruby_process/deep_files/deep_stuff.txt +0 -1
- data/spec/data/ruby_process/process.rb +0 -8
- data/spec/data/ruby_process/stuff.txt +0 -1
- data/spec/data/superfluous_titles_view.json +0 -81
- data/spec/data/test-ci-data.csv +0 -2
- data/spec/data/user_filters.csv +0 -2
- data/spec/data/users.csv +0 -12
- data/spec/data/wire_models/attribute_sort_by_model.json +0 -73
- data/spec/data/wire_models/model_view.json +0 -1775
- data/spec/data/wire_models/nu_model.json +0 -3046
- data/spec/data/wire_models/test_blueprint.json +0 -66
- data/spec/data/wire_test_project.json +0 -150
- data/spec/data/workspace_table.csv +0 -3
- data/spec/environment/default.rb +0 -43
- data/spec/environment/development.rb +0 -32
- data/spec/environment/environment.rb +0 -38
- data/spec/environment/production.rb +0 -27
- data/spec/environment/staging.rb +0 -32
- data/spec/environment/testing.rb +0 -32
- data/spec/helpers/appstore_project_helper.rb +0 -221
- data/spec/helpers/blueprint_helper.rb +0 -27
- data/spec/helpers/cli_helper.rb +0 -38
- data/spec/helpers/connection_helper.rb +0 -43
- data/spec/helpers/constants.rb +0 -32
- data/spec/helpers/crypto_helper.rb +0 -19
- data/spec/helpers/csv_helper.rb +0 -20
- data/spec/helpers/process_helper.rb +0 -35
- data/spec/helpers/project_helper.rb +0 -74
- data/spec/helpers/schedule_helper.rb +0 -33
- data/spec/helpers/spec_helper.rb +0 -17
- data/spec/integration/ads_output_stage_spec.rb +0 -45
- data/spec/integration/blueprint_updates_spec.rb +0 -107
- data/spec/integration/blueprint_with_ca_spec.rb +0 -56
- data/spec/integration/blueprint_with_grain_spec.rb +0 -74
- data/spec/integration/channel_configuration_spec.rb +0 -67
- data/spec/integration/clients_spec.rb +0 -164
- data/spec/integration/command_datawarehouse_spec.rb +0 -45
- data/spec/integration/command_projects_spec.rb +0 -32
- data/spec/integration/commands/command_projects_spec.rb +0 -22
- data/spec/integration/connection_spec.rb +0 -37
- data/spec/integration/core/connection_spec.rb +0 -56
- data/spec/integration/core/logging_spec.rb +0 -132
- data/spec/integration/core/project_spec.rb +0 -54
- data/spec/integration/create_from_template_spec.rb +0 -29
- data/spec/integration/create_project_spec.rb +0 -27
- data/spec/integration/date_dim_switch_spec.rb +0 -154
- data/spec/integration/deprecated_load_spec.rb +0 -60
- data/spec/integration/full_process_schedule_spec.rb +0 -367
- data/spec/integration/full_project_spec.rb +0 -592
- data/spec/integration/helpers_spec.rb +0 -16
- data/spec/integration/lcm_spec.rb +0 -54
- data/spec/integration/mandatory_user_filter_spec.rb +0 -53
- data/spec/integration/mixins/id_to_uri_spec.rb +0 -56
- data/spec/integration/models/data_product_spec.rb +0 -71
- data/spec/integration/models/domain_spec.rb +0 -162
- data/spec/integration/models/invitation_spec.rb +0 -17
- data/spec/integration/models/label_spec.rb +0 -49
- data/spec/integration/models/membership_spec.rb +0 -127
- data/spec/integration/models/metadata/report_spec.rb +0 -54
- data/spec/integration/models/metric_spec.rb +0 -24
- data/spec/integration/models/params_spec.rb +0 -118
- data/spec/integration/models/process_spec.rb +0 -35
- data/spec/integration/models/profile_spec.rb +0 -210
- data/spec/integration/models/project_role_spec.rb +0 -94
- data/spec/integration/models/project_spec.rb +0 -225
- data/spec/integration/models/schedule_spec.rb +0 -477
- data/spec/integration/models/unit_project_spec.rb +0 -130
- data/spec/integration/over_to_user_filters_spec.rb +0 -98
- data/spec/integration/partial_md_export_import_spec.rb +0 -41
- data/spec/integration/project_spec.rb +0 -381
- data/spec/integration/rest_spec.rb +0 -214
- data/spec/integration/schedule_spec.rb +0 -611
- data/spec/integration/segments_spec.rb +0 -100
- data/spec/integration/subscription_spec.rb +0 -88
- data/spec/integration/urn_date_dim_spec.rb +0 -53
- data/spec/integration/user_filters_spec.rb +0 -310
- data/spec/integration/user_group_spec.rb +0 -147
- data/spec/integration/variables_spec.rb +0 -189
- data/spec/integration/vcr_cassettes/GoodData_-_logging/_logger/can_assign_a_custom_logger.yml +0 -2287
- data/spec/integration/vcr_cassettes/GoodData_-_logging/_logger/client_logs_when_given_custom_message.yml +0 -2287
- data/spec/integration/vcr_cassettes/GoodData_-_logging/_logger/has_the_request_id_logged_when_I_passed_it.yml +0 -2287
- data/spec/integration/vcr_cassettes/GoodData_-_logging/_logging_off/Disables_logging.yml +0 -2287
- data/spec/integration/vcr_cassettes/GoodData_-_logging/_logging_on/Enables_logging.yml +0 -2287
- data/spec/integration/vcr_cassettes/GoodData_-_project/_project/Returns_project_assigned.yml +0 -354
- data/spec/integration/vcr_cassettes/GoodData_-_project/_project_/Assigns_nil.yml +0 -299
- data/spec/integration/vcr_cassettes/GoodData_-_project/_project_/Assigns_project_directly.yml +0 -354
- data/spec/integration/vcr_cassettes/GoodData_-_project/_project_/Assigns_project_using_project_ID.yml +0 -354
- data/spec/integration/vcr_cassettes/GoodData_-_project/_project_/Assigns_project_using_project_URL.yml +0 -354
- data/spec/integration/vcr_cassettes/GoodData_-_project/_with_project/Uses_project_specified.yml +0 -354
- data/spec/integration/vcr_cassettes/GoodData_Metric/all.yml +0 -2065
- data/spec/integration/vcr_cassettes/GoodData_Metric/should_be_able_to_update_folders.yml +0 -119
- data/spec/integration/vcr_cassettes/GoodData_Mixin_MdIdToUri/all.yml +0 -9812
- data/spec/integration/vcr_cassettes/GoodData_Mixin_MdIdToUri/should_get_json_containing_correct_id.yml +0 -174
- data/spec/integration/vcr_cassettes/GoodData_Mixin_MdIdToUri/should_return_nil_for_unknown_id.yml +0 -58
- data/spec/integration/vcr_cassettes/GoodData_Mixin_MdIdToUri/should_throw_BadRequest_for_-1.yml +0 -63
- data/spec/integration/vcr_cassettes/GoodData_Rest_Connection/_connect/Connects_using_username_and_password.yml +0 -299
- data/spec/integration/vcr_cassettes/GoodData_Rest_Connection/_disconnect/Connects_using_username_and_password.yml +0 -299
- data/spec/integration/vcr_cassettes/GoodData_Rest_Connection/_generate_request_id/Generates_a_non-empty_string.yml +0 -2287
- data/spec/integration/vcr_cassettes/GoodData_UserGroup/_/Should_list_user_groups_as_Array.yml +0 -56
- data/spec/integration/vcr_cassettes/GoodData_UserGroup/_add_members/Should_add_member.yml +0 -315
- data/spec/integration/vcr_cassettes/GoodData_UserGroup/_members/Should_return_members_as_array.yml +0 -54
- data/spec/integration/vcr_cassettes/GoodData_UserGroup/_remove_members/Should_remove_existing_members.yml +0 -258
- data/spec/integration/vcr_cassettes/GoodData_UserGroup/_save/updates_existing_group.yml +0 -159
- data/spec/integration/vcr_cassettes/GoodData_UserGroup/_set_members/Should_set_new_members.yml +0 -158
- data/spec/integration/vcr_cassettes/GoodData_UserGroup/all.yml +0 -809
- data/spec/logging_in_logging_out_spec.rb +0 -91
- data/spec/spec_helper.rb +0 -110
- data/spec/unit/actions/associate_clients_spec.rb +0 -48
- data/spec/unit/actions/collect_client_projects_spec.rb +0 -47
- data/spec/unit/actions/collect_clients_spec.rb +0 -65
- data/spec/unit/actions/collect_data_product_spec.rb +0 -58
- data/spec/unit/actions/collect_dynamic_schedule_params_spec.rb +0 -56
- data/spec/unit/actions/collect_meta_spec.rb +0 -88
- data/spec/unit/actions/collect_segment_clients_spec.rb +0 -82
- data/spec/unit/actions/collect_tagged_objects_spec.rb +0 -126
- data/spec/unit/actions/collect_users_brick_users_spec.rb +0 -36
- data/spec/unit/actions/create_segment_masters_spec.rb +0 -65
- data/spec/unit/actions/ensure_data_product_spec.rb +0 -39
- data/spec/unit/actions/ensure_technical_users_domain_spec.rb +0 -53
- data/spec/unit/actions/ensure_technical_users_project_spec.rb +0 -76
- data/spec/unit/actions/execute_schedules_spec.rb +0 -94
- data/spec/unit/actions/provision_clients_spec.rb +0 -46
- data/spec/unit/actions/purge_clients_spec.rb +0 -47
- data/spec/unit/actions/rename_existing_client_projects_spec.rb +0 -54
- data/spec/unit/actions/segments_filter_spec.rb +0 -46
- data/spec/unit/actions/shared_examples_for_user_actions.rb +0 -43
- data/spec/unit/actions/synchronize_cas_spec.rb +0 -58
- data/spec/unit/actions/synchronize_clients_spec.rb +0 -71
- data/spec/unit/actions/synchronize_etls_in_segment_spec.rb +0 -206
- data/spec/unit/actions/synchronize_ldm_spec.rb +0 -70
- data/spec/unit/actions/synchronize_user_filters_spec.rb +0 -208
- data/spec/unit/actions/synchronize_user_groups_spec.rb +0 -49
- data/spec/unit/actions/synchronize_users_spec.rb +0 -180
- data/spec/unit/bricks/bricks_spec.rb +0 -34
- data/spec/unit/bricks/middleware/aws_middelware_spec.rb +0 -98
- data/spec/unit/bricks/middleware/bench_middleware_spec.rb +0 -15
- data/spec/unit/bricks/middleware/bulk_salesforce_middleware_spec.rb +0 -15
- data/spec/unit/bricks/middleware/gooddata_middleware_spec.rb +0 -15
- data/spec/unit/bricks/middleware/logger_middleware_spec.rb +0 -30
- data/spec/unit/bricks/middleware/restforce_middleware_spec.rb +0 -15
- data/spec/unit/bricks/middleware/stdout_middleware_spec.rb +0 -15
- data/spec/unit/bricks/middleware/twitter_middleware_spec.rb +0 -15
- data/spec/unit/cli/cli_spec.rb +0 -17
- data/spec/unit/cli/commands/cmd_auth_spec.rb +0 -17
- data/spec/unit/core/nil_logger_spec.rb +0 -13
- data/spec/unit/extensions/hash_spec.rb +0 -22
- data/spec/unit/godzilla/goodzilla_spec.rb +0 -74
- data/spec/unit/helpers/check_helper_production_spec.rb +0 -34
- data/spec/unit/helpers/check_helper_spec.rb +0 -134
- data/spec/unit/helpers/csv_helper_spec.rb +0 -22
- data/spec/unit/helpers/data_helper_spec.rb +0 -67
- data/spec/unit/helpers/global_helpers_spec.rb +0 -264
- data/spec/unit/helpers_spec.rb +0 -254
- data/spec/unit/lcm/lcm2_spec.rb +0 -100
- data/spec/unit/lcm/user_bricks_helper_spec.rb +0 -58
- data/spec/unit/models/blueprint/attribute_sort_by_spec.rb +0 -20
- data/spec/unit/models/blueprint/attributes_spec.rb +0 -28
- data/spec/unit/models/blueprint/dataset_spec.rb +0 -120
- data/spec/unit/models/blueprint/label_blueprint_field_spec.rb +0 -43
- data/spec/unit/models/blueprint/project_blueprint_spec.rb +0 -642
- data/spec/unit/models/blueprint/reference_spec.rb +0 -28
- data/spec/unit/models/blueprint/schema_builder_spec.rb +0 -36
- data/spec/unit/models/blueprint/to_wire_spec.rb +0 -196
- data/spec/unit/models/dataset_blueprint.rb +0 -14
- data/spec/unit/models/execution_spec.rb +0 -109
- data/spec/unit/models/from_wire_spec.rb +0 -321
- data/spec/unit/models/metadata_spec.rb +0 -140
- data/spec/unit/models/metric_spec.rb +0 -129
- data/spec/unit/models/model_spec.rb +0 -87
- data/spec/unit/models/project_creator_spec.rb +0 -90
- data/spec/unit/models/project_spec.rb +0 -94
- data/spec/unit/models/report_result_data_spec.rb +0 -194
- data/spec/unit/models/to_manifest_spec.rb +0 -165
- data/spec/unit/models/user_filters/user_filter_builder_spec.rb +0 -149
- data/spec/unit/models/user_filters_spec.rb +0 -95
- data/spec/unit/models/variable_spec.rb +0 -280
- data/spec/unit/rest/phmap_spec.rb +0 -117
- data/spec/unit/rest/polling_spec.rb +0 -101
- data/spec/unit/rest/resource_spec.rb +0 -10
- data/spec/vcr_configurer.rb +0 -63
data/docker-compose.yml
CHANGED
@@ -9,9 +9,10 @@ services:
|
|
9
9
|
- PRONTO_GITHUB_ACCESS_TOKEN
|
10
10
|
- PRONTO_PULL_REQUEST_ID
|
11
11
|
- GD_ENV
|
12
|
+
- VCR_ON
|
12
13
|
volumes:
|
13
14
|
- /etc/passwd:/etc/passwd:ro
|
14
|
-
- .:/
|
15
|
+
- .:/src
|
15
16
|
volumes_from:
|
16
17
|
- bundle
|
17
18
|
gooddata-jruby:
|
@@ -23,9 +24,10 @@ services:
|
|
23
24
|
- GD_PROJECT_TOKEN
|
24
25
|
- GD_SPEC_PASSWORD
|
25
26
|
- GD_ENV
|
27
|
+
- VCR_ON
|
26
28
|
volumes:
|
27
29
|
- /etc/passwd:/etc/passwd:ro
|
28
|
-
- .:/
|
30
|
+
- .:/src
|
29
31
|
volumes_from:
|
30
32
|
- bundle
|
31
33
|
bundle:
|
data/gooddata.gemspec
CHANGED
@@ -22,7 +22,7 @@ Gem::Specification.new do |s|
|
|
22
22
|
s.extra_rdoc_files = %w(LICENSE README.md)
|
23
23
|
|
24
24
|
s.files = `git ls-files`.split($INPUT_RECORD_SEPARATOR)
|
25
|
-
s.
|
25
|
+
s.files.reject! { |fn| fn.start_with? 'spec/' }
|
26
26
|
s.executables = `git ls-files -- bin/*`.split("\n").map { |f| File.basename(f) }
|
27
27
|
|
28
28
|
s.homepage = 'http://github.com/gooddata/gooddata-ruby'
|
@@ -37,7 +37,7 @@ Gem::Specification.new do |s|
|
|
37
37
|
s.add_development_dependency 'rspec_junit_formatter', '~> 0.3.0'
|
38
38
|
s.add_development_dependency 'rubocop', '< 0.48' # TODO: remove it after dealing with new rules introduced in 0.48 version
|
39
39
|
s.add_development_dependency 'simplecov', '~> 0.12'
|
40
|
-
s.add_development_dependency 'webmock', '~> 1
|
40
|
+
s.add_development_dependency 'webmock', '~> 2.3.1'
|
41
41
|
s.add_development_dependency 'yard', '~> 0.9.11'
|
42
42
|
s.add_development_dependency 'yard-rspec', '~> 0.1'
|
43
43
|
s.add_development_dependency 'ZenTest', '~> 4.11'
|
@@ -49,7 +49,7 @@ Gem::Specification.new do |s|
|
|
49
49
|
s.add_development_dependency 'vcr'
|
50
50
|
|
51
51
|
s.add_dependency 'activesupport', '~> 4.2.9'
|
52
|
-
s.add_dependency 'aws-sdk', '~>
|
52
|
+
s.add_dependency 'aws-sdk-s3', '~> 1.16'
|
53
53
|
s.add_dependency 'docile', '~> 1.1'
|
54
54
|
s.add_dependency 'erubis', '~> 2.7'
|
55
55
|
s.add_dependency 'gli', '~> 2.15'
|
data/lcm.rake
ADDED
@@ -0,0 +1,288 @@
|
|
1
|
+
require 'pp'
|
2
|
+
require 'fileutils'
|
3
|
+
require 'pathname'
|
4
|
+
require 'rspec/core/rake_task'
|
5
|
+
|
6
|
+
# Schema for new Bricks.
|
7
|
+
brick_info_schema = {
|
8
|
+
"type" => "object",
|
9
|
+
"required" => ["name","version","language","created"],
|
10
|
+
"properties" => {
|
11
|
+
"name" => {"type" => "string"},
|
12
|
+
"author" => {
|
13
|
+
"type" => "object",
|
14
|
+
"properties" => {
|
15
|
+
"name" => {"type" => "string"},
|
16
|
+
"email" => {"type" => "string"}
|
17
|
+
}
|
18
|
+
},
|
19
|
+
"created" => {"type" => "string"},
|
20
|
+
"version" => {"type" => "string"},
|
21
|
+
"category" => {"type" => "string"},
|
22
|
+
"language" => {"type" => "string"},
|
23
|
+
"description" => { "type" => "string"},
|
24
|
+
"tags" => {"type" => "string"},
|
25
|
+
"is_live" => {"type" => "boolean"},
|
26
|
+
"parameters" => {
|
27
|
+
"type" => "array",
|
28
|
+
"properties" => {
|
29
|
+
"name" => {"type" => "string"},
|
30
|
+
"description" => {"type" => "string"},
|
31
|
+
"type" => {"type" => "string"},
|
32
|
+
"mandatory" => {"type" => "boolean"},
|
33
|
+
}
|
34
|
+
}
|
35
|
+
},
|
36
|
+
}
|
37
|
+
|
38
|
+
check_exit_code = <<-EOT
|
39
|
+
docker-compose --file=docker-compose.lcm.yml ps -q | xargs docker inspect -f '{{ .State.ExitCode }}' | while read code; do
|
40
|
+
if [ "$code" == "1" ]; then
|
41
|
+
exit -1
|
42
|
+
fi
|
43
|
+
done
|
44
|
+
EOT
|
45
|
+
|
46
|
+
desc 'Gets info.json from /apps/ and validates.'
|
47
|
+
task :default do
|
48
|
+
require 'json-schema'
|
49
|
+
|
50
|
+
root = Pathname(__FILE__).expand_path.dirname
|
51
|
+
bricks_root = root + "./apps/*/info.json"
|
52
|
+
|
53
|
+
production_bricks = []
|
54
|
+
bricks = Dir.glob(bricks_root).map do |path|
|
55
|
+
brick = JSON.parse(File.read(path))
|
56
|
+
if JSON::Validator.validate!(brick_info_schema, brick)
|
57
|
+
production_bricks << brick
|
58
|
+
else
|
59
|
+
fail JSON::Schema::ValidationError
|
60
|
+
end
|
61
|
+
end
|
62
|
+
|
63
|
+
task(:write).invoke(production_bricks)
|
64
|
+
end
|
65
|
+
|
66
|
+
desc 'Writes JSON file to location.'
|
67
|
+
task :write, :file do |w, bricks|
|
68
|
+
require 'json'
|
69
|
+
|
70
|
+
File.open("./build/bricks.json", 'w') do |f|
|
71
|
+
f.puts bricks.file.to_json
|
72
|
+
end
|
73
|
+
end
|
74
|
+
|
75
|
+
RSpec::Core::RakeTask.new(:test)
|
76
|
+
namespace :test do
|
77
|
+
desc 'Run integration tests'
|
78
|
+
RSpec::Core::RakeTask.new(:integration) do |t|
|
79
|
+
t.pattern = 'spec/lcm/integration/**/*.rb'
|
80
|
+
end
|
81
|
+
|
82
|
+
desc 'Run load tests'
|
83
|
+
RSpec::Core::RakeTask.new(:load) do |t|
|
84
|
+
t.pattern = 'spec/lcm/load/**/*.rb'
|
85
|
+
end
|
86
|
+
|
87
|
+
desc 'Run slow tests'
|
88
|
+
RSpec::Core::RakeTask.new(:slow) do |t|
|
89
|
+
t.pattern = 'spec/lcm/slow/**/*.rb'
|
90
|
+
end
|
91
|
+
|
92
|
+
namespace :integration do
|
93
|
+
desc 'Run integration tests in Docker'
|
94
|
+
task :docker do
|
95
|
+
system('docker-compose -f docker-compose.lcm.yml up --force-recreate --abort-on-container-exit appstore')
|
96
|
+
|
97
|
+
# TODO: use exit-code-from after update to docker-compose >= 1.12
|
98
|
+
# system('docker-compose up --exit-code-from appstore') ||
|
99
|
+
# fail('Test execution failed')
|
100
|
+
system(check_exit_code) || fail('Test execution failed!')
|
101
|
+
end
|
102
|
+
end
|
103
|
+
namespace :load do
|
104
|
+
desc 'Run load tests in Docker'
|
105
|
+
task :docker do
|
106
|
+
system('docker-compose -f docker-compose.lcm.yml run --rm appstore bundle exec rake -f lcm.rake test:load')
|
107
|
+
|
108
|
+
system(check_exit_code) || fail('Test execution failed!')
|
109
|
+
end
|
110
|
+
end
|
111
|
+
end
|
112
|
+
|
113
|
+
namespace :localstack do
|
114
|
+
desc 'Run localstack'
|
115
|
+
task :start do
|
116
|
+
system('docker run -it --rm -e "SERVICES=s3:4572" -p 4572:4572 -p 8080:8080 localstack/localstack:0.8.1')
|
117
|
+
end
|
118
|
+
end
|
119
|
+
|
120
|
+
namespace :docker do
|
121
|
+
desc 'Build Docker image'
|
122
|
+
task :build do
|
123
|
+
system('docker build -f Dockerfile.jruby -t gooddata/appstore .')
|
124
|
+
end
|
125
|
+
|
126
|
+
desc 'Bundles gems using cache'
|
127
|
+
task :bundle do
|
128
|
+
system('docker-compose -f docker-compose.lcm.yml run appstore bundle')
|
129
|
+
end
|
130
|
+
end
|
131
|
+
|
132
|
+
namespace :sdk do
|
133
|
+
desc 'Updates gooddata-ruby to the version specified in the root Gemfile'
|
134
|
+
task :update do
|
135
|
+
directories = %w(.
|
136
|
+
./apps/release_brick
|
137
|
+
./apps/provisioning_brick
|
138
|
+
./apps/rollout_brick
|
139
|
+
./apps/generic_lifecycle_brick
|
140
|
+
./apps/users_brick
|
141
|
+
./apps/user_filters_brick)
|
142
|
+
directories.map! { |d| File.expand_path(d) }
|
143
|
+
root_gemfile = directories.first + '/Gemfile'
|
144
|
+
new_ref = File.readlines(root_gemfile)
|
145
|
+
.find { |line| line.include?("gem 'gooddata'") }
|
146
|
+
directories.each do |d|
|
147
|
+
gemfile_path = d + '/Gemfile'
|
148
|
+
new_lines = File.readlines(gemfile_path).map do |line|
|
149
|
+
line.include?("gem 'gooddata'") ? new_ref : line
|
150
|
+
end
|
151
|
+
File.write(gemfile_path, new_lines.join)
|
152
|
+
Dir.chdir(d) { Bundler.with_clean_env { system('bundle install') || raise } }
|
153
|
+
end
|
154
|
+
to_commit = directories.map { |d| "#{d}/Gemfile #{d}/Gemfile.lock" }
|
155
|
+
.join(' ')
|
156
|
+
new_ref = new_ref.split(',').last.strip.scan(/'([\w,\.]+)'/).flatten.first
|
157
|
+
system("git commit #{to_commit} -m 'Update gooddata-ruby #{new_ref}'") || raise
|
158
|
+
end
|
159
|
+
|
160
|
+
def gdruby_version_from_gemfile
|
161
|
+
new_ref = File.readlines('Gemfile')
|
162
|
+
.find { |line| line.include?("gem 'gooddata'") }
|
163
|
+
new_ref.split(',').last.strip.scan(/'([\w,\.]+)'/).flatten.first
|
164
|
+
end
|
165
|
+
|
166
|
+
def cmd cmdname, *args, &block
|
167
|
+
require 'open3'
|
168
|
+
begin
|
169
|
+
puts "running $ #{([cmdname] + args).join(' ')}"
|
170
|
+
stdin, stdout, stderr, wait_thr = Open3.popen3(cmdname, *args)
|
171
|
+
so = stdout.gets(nil)
|
172
|
+
stderr.gets(nil)
|
173
|
+
exit_code = wait_thr.value
|
174
|
+
if block
|
175
|
+
block.call(exit_code.exitstatus.to_i == 0, so.nil? ? '' : so)
|
176
|
+
else
|
177
|
+
so
|
178
|
+
end
|
179
|
+
rescue => e
|
180
|
+
p "Error running $ #{([cmdname] + args).join(' ')}"
|
181
|
+
pp e
|
182
|
+
block.call(false, '')
|
183
|
+
ensure
|
184
|
+
stdin.close
|
185
|
+
stdout.close
|
186
|
+
stderr.close
|
187
|
+
end
|
188
|
+
end
|
189
|
+
|
190
|
+
desc 'Synchronizes changelogs with gooddata-ruby'
|
191
|
+
task :changelog, [:new_appstore_version] do |t, args|
|
192
|
+
new_appstore_version = args[:new_appstore_version]
|
193
|
+
|
194
|
+
last_vers = '0.0.0'
|
195
|
+
cmd 'git', 'tag' do |ok, res|
|
196
|
+
if ok
|
197
|
+
res.lines.each do |line|
|
198
|
+
line.strip!
|
199
|
+
if line =~ /^[0-9]+\.[0-9]+\.[0-9]+(-rc[0-9]+)?.*$/
|
200
|
+
first = line.split(/[^\d]+/)
|
201
|
+
second = last_vers.split(/[^\d]+/)
|
202
|
+
(0..[first.length, second.length].max-1).each_with_index do |val, index|
|
203
|
+
if first[index].to_i > second[index].to_i
|
204
|
+
last_vers = line
|
205
|
+
break
|
206
|
+
elsif second[index].to_i > first[index].to_i
|
207
|
+
break
|
208
|
+
end
|
209
|
+
end
|
210
|
+
end
|
211
|
+
end
|
212
|
+
end
|
213
|
+
end
|
214
|
+
|
215
|
+
last_tag_hash = cmd 'git', 'rev-parse', last_vers
|
216
|
+
puts "Lastest AppStore tag is #{last_vers}, #{last_tag_hash}"
|
217
|
+
|
218
|
+
possible_gdruby_version_from_log = cmd 'git', 'log', last_vers do |ok, res|
|
219
|
+
shortid = []
|
220
|
+
if ok
|
221
|
+
res.lines.each do |line|
|
222
|
+
if line =~ /^commit [0-9a-z]+/
|
223
|
+
commit = line.split[1]
|
224
|
+
elsif line =~ /^ Update gooddata-ruby [0-9a-z]+/
|
225
|
+
shortid << line.split[2]
|
226
|
+
end
|
227
|
+
end
|
228
|
+
end
|
229
|
+
shortid
|
230
|
+
end
|
231
|
+
|
232
|
+
if gdruby_version_from_gemfile == possible_gdruby_version_from_log.first
|
233
|
+
gdruby_version_from_log = possible_gdruby_version_from_log[1]
|
234
|
+
else
|
235
|
+
gdruby_version_from_log = possible_gdruby_version_from_log.first
|
236
|
+
end
|
237
|
+
puts "Short id of gooddata-ruby from Gemfile #{gdruby_version_from_gemfile}"
|
238
|
+
puts "Second latest gooddata-ruby commit short id #{gdruby_version_from_log}"
|
239
|
+
|
240
|
+
cmd 'git', 'remote', 'add', 'gdcrb', 'https://github.com/gooddata/gooddata-ruby.git'
|
241
|
+
cmd 'git', 'fetch', '--all'
|
242
|
+
File.open('CHANGELOG.md', 'r') do |origfile|
|
243
|
+
File.unlink('CHANGELOG.md')
|
244
|
+
newsection = false
|
245
|
+
File.open('CHANGELOG.md', 'w') do |file|
|
246
|
+
file.write("# GoodData AppStore Changelog, changes from gooddata-ruby\n\n")
|
247
|
+
file.write("## AppStore #{new_appstore_version}\n")
|
248
|
+
cmd 'git', 'log', '--no-merges', "#{gdruby_version_from_log}..#{gdruby_version_from_gemfile}" do |ok, out|
|
249
|
+
if ok
|
250
|
+
out.lines.each do |gitline|
|
251
|
+
if gitline =~/^commit [0-9a-z]+$/ and not newsection
|
252
|
+
newsection = true
|
253
|
+
next
|
254
|
+
elsif gitline =~ /^ .+$/ and newsection
|
255
|
+
file.write("- " + gitline.strip + "\n")
|
256
|
+
newsection = false
|
257
|
+
end
|
258
|
+
end
|
259
|
+
end
|
260
|
+
end
|
261
|
+
file.write origfile.drop(1).join('')
|
262
|
+
end
|
263
|
+
end
|
264
|
+
|
265
|
+
cmd 'git', 'add', 'CHANGELOG.md'
|
266
|
+
end
|
267
|
+
end
|
268
|
+
|
269
|
+
desc 'Releases new AppStore version. Uses version passed as an argument. \
|
270
|
+
Otherwise increments patch version.'
|
271
|
+
task :release, [:version] do |t, args|
|
272
|
+
new_appstore_version = args[:version]
|
273
|
+
if new_appstore_version.nil?
|
274
|
+
new_appstore_version = File.open('VERSION').read().strip
|
275
|
+
version = new_appstore_version.split('.')
|
276
|
+
version[2] = (version[2].to_i + 1).to_s
|
277
|
+
new_appstore_version = version.join('.')
|
278
|
+
end
|
279
|
+
|
280
|
+
File.open('VERSION', 'w+t') {|file| file.write(new_appstore_version + "\n")}
|
281
|
+
cmd 'git', 'add', 'VERSION'
|
282
|
+
|
283
|
+
Rake::Task["sdk:changelog"].invoke(new_appstore_version)
|
284
|
+
cmd 'git', 'commit', '-m', "Bump version to #{new_appstore_version}"
|
285
|
+
|
286
|
+
cmd 'git', 'tag', "#{new_appstore_version}"
|
287
|
+
# cmd 'git', 'push', 'gerrit', "#{new_appstore_version}"
|
288
|
+
end
|
data/lib/gooddata.rb
CHANGED
@@ -21,6 +21,7 @@ require_relative 'gooddata/helpers/helpers'
|
|
21
21
|
require_relative 'gooddata/lcm/lcm'
|
22
22
|
require_relative 'gooddata/lcm/lcm2'
|
23
23
|
require_relative 'gooddata/models/models'
|
24
|
+
require_relative 'gooddata/bricks/pipeline'
|
24
25
|
|
25
26
|
# Files
|
26
27
|
require_relative 'gooddata/app/app'
|
@@ -18,7 +18,7 @@ module GoodData
|
|
18
18
|
logger = NilLogger.new
|
19
19
|
else
|
20
20
|
logger = params[:GDC_LOGGER_FILE].nil? ? Logger.new(STDOUT) : Logger.new(params[:GDC_LOGGER_FILE])
|
21
|
-
logger.level = params['GDC_LOG_LEVEL']
|
21
|
+
logger.level = params['GDC_LOG_LEVEL'] || 'info'
|
22
22
|
logger.info('Pipeline starts')
|
23
23
|
end
|
24
24
|
params['GDC_LOGGER'] = logger
|
@@ -4,6 +4,12 @@
|
|
4
4
|
# This source code is licensed under the BSD-style license found in the
|
5
5
|
# LICENSE file in the root directory of this source tree.
|
6
6
|
|
7
|
+
require_relative 'users_brick'
|
8
|
+
require_relative 'user_filters_brick'
|
9
|
+
require_relative 'release_brick'
|
10
|
+
require_relative 'provisioning_brick'
|
11
|
+
require_relative 'rollout_brick'
|
12
|
+
|
7
13
|
module GoodData
|
8
14
|
module Bricks
|
9
15
|
class Pipeline
|
@@ -20,6 +26,67 @@ module GoodData
|
|
20
26
|
end
|
21
27
|
end
|
22
28
|
end
|
29
|
+
|
30
|
+
def self.users_brick_pipeline
|
31
|
+
prepare([
|
32
|
+
DecodeParamsMiddleware,
|
33
|
+
LoggerMiddleware,
|
34
|
+
BenchMiddleware,
|
35
|
+
GoodDataMiddleware,
|
36
|
+
AWSMiddleware,
|
37
|
+
WarehouseMiddleware,
|
38
|
+
FsProjectUploadMiddleware.new(:destination => :staging),
|
39
|
+
UsersBrick])
|
40
|
+
end
|
41
|
+
|
42
|
+
def self.user_filters_brick_pipeline
|
43
|
+
prepare([
|
44
|
+
DecodeParamsMiddleware,
|
45
|
+
LoggerMiddleware,
|
46
|
+
BenchMiddleware,
|
47
|
+
GoodDataMiddleware,
|
48
|
+
AWSMiddleware,
|
49
|
+
FsProjectDownloadMiddleware.new(:source => :staging),
|
50
|
+
FsProjectUploadMiddleware.new(:destination => :staging),
|
51
|
+
WarehouseMiddleware,
|
52
|
+
UserFiltersBrick])
|
53
|
+
end
|
54
|
+
|
55
|
+
def self.release_brick_pipeline
|
56
|
+
prepare([
|
57
|
+
DecodeParamsMiddleware,
|
58
|
+
LoggerMiddleware,
|
59
|
+
BenchMiddleware,
|
60
|
+
GoodDataMiddleware,
|
61
|
+
AWSMiddleware,
|
62
|
+
WarehouseMiddleware,
|
63
|
+
ReleaseBrick
|
64
|
+
])
|
65
|
+
end
|
66
|
+
|
67
|
+
def self.provisioning_brick_pipeline
|
68
|
+
prepare([
|
69
|
+
DecodeParamsMiddleware,
|
70
|
+
LoggerMiddleware,
|
71
|
+
BenchMiddleware,
|
72
|
+
GoodDataMiddleware,
|
73
|
+
AWSMiddleware,
|
74
|
+
WarehouseMiddleware,
|
75
|
+
ProvisioningBrick
|
76
|
+
])
|
77
|
+
end
|
78
|
+
|
79
|
+
def self.rollout_brick_pipeline
|
80
|
+
prepare([
|
81
|
+
DecodeParamsMiddleware,
|
82
|
+
LoggerMiddleware,
|
83
|
+
BenchMiddleware,
|
84
|
+
GoodDataMiddleware,
|
85
|
+
AWSMiddleware,
|
86
|
+
WarehouseMiddleware,
|
87
|
+
RolloutBrick
|
88
|
+
])
|
89
|
+
end
|
23
90
|
end
|
24
91
|
end
|
25
92
|
end
|