gooddata-edge 0.6.27.edge
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.
- checksums.yaml +7 -0
- data/.document +5 -0
- data/.gitignore +36 -0
- data/.rspec +3 -0
- data/.rubocop.yml +89 -0
- data/.yardopts +22 -0
- data/CHANGELOG.md +196 -0
- data/CLI.md +439 -0
- data/DEPENDENCIES.md +817 -0
- data/Gemfile +4 -0
- data/Guardfile +5 -0
- data/LICENSE +22 -0
- data/LICENSE.rb +5 -0
- data/README.md +75 -0
- data/Rakefile +179 -0
- data/TODO.md +32 -0
- data/authors.sh +4 -0
- data/bin/gooddata +7 -0
- data/dependency_decisions.yml +104 -0
- data/gooddata +9 -0
- data/gooddata.gemspec +63 -0
- data/lib/gooddata.rb +31 -0
- data/lib/gooddata/app/app.rb +16 -0
- data/lib/gooddata/bricks/base_downloader.rb +86 -0
- data/lib/gooddata/bricks/brick.rb +38 -0
- data/lib/gooddata/bricks/bricks.rb +15 -0
- data/lib/gooddata/bricks/middleware/aws_middleware.rb +29 -0
- data/lib/gooddata/bricks/middleware/base_middleware.rb +56 -0
- data/lib/gooddata/bricks/middleware/bench_middleware.rb +24 -0
- data/lib/gooddata/bricks/middleware/bulk_salesforce_middleware.rb +37 -0
- data/lib/gooddata/bricks/middleware/decode_params_middleware.rb +20 -0
- data/lib/gooddata/bricks/middleware/fs_download_middleware.rb +48 -0
- data/lib/gooddata/bricks/middleware/fs_upload_middleware.rb +36 -0
- data/lib/gooddata/bricks/middleware/gooddata_middleware.rb +39 -0
- data/lib/gooddata/bricks/middleware/logger_middleware.rb +29 -0
- data/lib/gooddata/bricks/middleware/middleware.rb +12 -0
- data/lib/gooddata/bricks/middleware/restforce_middleware.rb +61 -0
- data/lib/gooddata/bricks/middleware/stdout_middleware.rb +23 -0
- data/lib/gooddata/bricks/middleware/twitter_middleware.rb +29 -0
- data/lib/gooddata/bricks/middleware/undot_params_middleware.rb +37 -0
- data/lib/gooddata/bricks/pipeline.rb +32 -0
- data/lib/gooddata/bricks/utils.rb +18 -0
- data/lib/gooddata/cli/cli.rb +27 -0
- data/lib/gooddata/cli/commands/auth_cmd.rb +29 -0
- data/lib/gooddata/cli/commands/domain_cmd.rb +28 -0
- data/lib/gooddata/cli/commands/project_cmd.rb +45 -0
- data/lib/gooddata/cli/hooks.rb +57 -0
- data/lib/gooddata/cli/shared.rb +61 -0
- data/lib/gooddata/cli/terminal.rb +20 -0
- data/lib/gooddata/client.rb +67 -0
- data/lib/gooddata/commands/api.rb +64 -0
- data/lib/gooddata/commands/auth.rb +107 -0
- data/lib/gooddata/commands/base.rb +12 -0
- data/lib/gooddata/commands/commands.rb +12 -0
- data/lib/gooddata/commands/datasets.rb +148 -0
- data/lib/gooddata/commands/datawarehouse.rb +20 -0
- data/lib/gooddata/commands/domain.rb +40 -0
- data/lib/gooddata/commands/process.rb +67 -0
- data/lib/gooddata/commands/project.rb +175 -0
- data/lib/gooddata/commands/projects.rb +20 -0
- data/lib/gooddata/commands/role.rb +36 -0
- data/lib/gooddata/commands/runners.rb +47 -0
- data/lib/gooddata/commands/scaffold.rb +69 -0
- data/lib/gooddata/commands/user.rb +39 -0
- data/lib/gooddata/connection.rb +127 -0
- data/lib/gooddata/core/core.rb +12 -0
- data/lib/gooddata/core/logging.rb +105 -0
- data/lib/gooddata/core/nil_logger.rb +23 -0
- data/lib/gooddata/core/project.rb +74 -0
- data/lib/gooddata/core/rest.rb +149 -0
- data/lib/gooddata/core/user.rb +20 -0
- data/lib/gooddata/data/data.rb +12 -0
- data/lib/gooddata/data/guesser.rb +122 -0
- data/lib/gooddata/exceptions/attr_element_not_found.rb +16 -0
- data/lib/gooddata/exceptions/command_failed.rb +11 -0
- data/lib/gooddata/exceptions/exceptions.rb +12 -0
- data/lib/gooddata/exceptions/execution_limit_exceeded.rb +13 -0
- data/lib/gooddata/exceptions/filter_maqlization.rb +16 -0
- data/lib/gooddata/exceptions/malformed_user.rb +15 -0
- data/lib/gooddata/exceptions/no_project_error.rb +15 -0
- data/lib/gooddata/exceptions/object_migration.rb +32 -0
- data/lib/gooddata/exceptions/project_not_found.rb +13 -0
- data/lib/gooddata/exceptions/segment_not_empty.rb +18 -0
- data/lib/gooddata/exceptions/uncomputable_report.rb +13 -0
- data/lib/gooddata/exceptions/user_in_different_domain.rb +15 -0
- data/lib/gooddata/exceptions/validation_error.rb +16 -0
- data/lib/gooddata/extensions/big_decimal.rb +17 -0
- data/lib/gooddata/extensions/enumerable.rb +39 -0
- data/lib/gooddata/extensions/extensions.rb +10 -0
- data/lib/gooddata/extensions/false.rb +15 -0
- data/lib/gooddata/extensions/hash.rb +38 -0
- data/lib/gooddata/extensions/nil.rb +15 -0
- data/lib/gooddata/extensions/numeric.rb +15 -0
- data/lib/gooddata/extensions/object.rb +27 -0
- data/lib/gooddata/extensions/symbol.rb +15 -0
- data/lib/gooddata/extensions/true.rb +15 -0
- data/lib/gooddata/extract.rb +21 -0
- data/lib/gooddata/goodzilla/goodzilla.rb +159 -0
- data/lib/gooddata/helpers/auth_helpers.rb +75 -0
- data/lib/gooddata/helpers/csv_helper.rb +61 -0
- data/lib/gooddata/helpers/data_helper.rb +116 -0
- data/lib/gooddata/helpers/global_helpers.rb +331 -0
- data/lib/gooddata/helpers/global_helpers_params.rb +172 -0
- data/lib/gooddata/helpers/helpers.rb +10 -0
- data/lib/gooddata/mixins/author.rb +26 -0
- data/lib/gooddata/mixins/content_getter.rb +15 -0
- data/lib/gooddata/mixins/content_property_reader.rb +17 -0
- data/lib/gooddata/mixins/content_property_writer.rb +17 -0
- data/lib/gooddata/mixins/contributor.rb +20 -0
- data/lib/gooddata/mixins/data_getter.rb +15 -0
- data/lib/gooddata/mixins/data_property_reader.rb +19 -0
- data/lib/gooddata/mixins/data_property_writer.rb +19 -0
- data/lib/gooddata/mixins/inspector.rb +53 -0
- data/lib/gooddata/mixins/is_attribute.rb +17 -0
- data/lib/gooddata/mixins/is_dimension.rb +17 -0
- data/lib/gooddata/mixins/is_fact.rb +17 -0
- data/lib/gooddata/mixins/is_label.rb +19 -0
- data/lib/gooddata/mixins/links.rb +15 -0
- data/lib/gooddata/mixins/md_finders.rb +77 -0
- data/lib/gooddata/mixins/md_grantees.rb +42 -0
- data/lib/gooddata/mixins/md_id_to_uri.rb +34 -0
- data/lib/gooddata/mixins/md_json.rb +15 -0
- data/lib/gooddata/mixins/md_lock.rb +87 -0
- data/lib/gooddata/mixins/md_object_id.rb +15 -0
- data/lib/gooddata/mixins/md_object_indexer.rb +64 -0
- data/lib/gooddata/mixins/md_object_query.rb +128 -0
- data/lib/gooddata/mixins/md_relations.rb +43 -0
- data/lib/gooddata/mixins/meta_getter.rb +17 -0
- data/lib/gooddata/mixins/meta_property_reader.rb +19 -0
- data/lib/gooddata/mixins/meta_property_writer.rb +19 -0
- data/lib/gooddata/mixins/mixins.rb +19 -0
- data/lib/gooddata/mixins/not_attribute.rb +17 -0
- data/lib/gooddata/mixins/not_exportable.rb +15 -0
- data/lib/gooddata/mixins/not_fact.rb +17 -0
- data/lib/gooddata/mixins/not_group.rb +17 -0
- data/lib/gooddata/mixins/not_label.rb +19 -0
- data/lib/gooddata/mixins/not_metric.rb +19 -0
- data/lib/gooddata/mixins/obj_id.rb +15 -0
- data/lib/gooddata/mixins/rest_getters.rb +17 -0
- data/lib/gooddata/mixins/rest_resource.rb +47 -0
- data/lib/gooddata/mixins/root_key_getter.rb +15 -0
- data/lib/gooddata/mixins/root_key_setter.rb +15 -0
- data/lib/gooddata/mixins/timestamps.rb +19 -0
- data/lib/gooddata/mixins/to_json.rb +11 -0
- data/lib/gooddata/mixins/uri_getter.rb +9 -0
- data/lib/gooddata/models/blueprint/anchor_field.rb +64 -0
- data/lib/gooddata/models/blueprint/attribute_field.rb +29 -0
- data/lib/gooddata/models/blueprint/blueprint.rb +11 -0
- data/lib/gooddata/models/blueprint/blueprint_field.rb +70 -0
- data/lib/gooddata/models/blueprint/dashboard_builder.rb +30 -0
- data/lib/gooddata/models/blueprint/dataset_blueprint.rb +449 -0
- data/lib/gooddata/models/blueprint/date_dimension.rb +14 -0
- data/lib/gooddata/models/blueprint/fact_field.rb +20 -0
- data/lib/gooddata/models/blueprint/label_field.rb +43 -0
- data/lib/gooddata/models/blueprint/project_blueprint.rb +746 -0
- data/lib/gooddata/models/blueprint/project_builder.rb +83 -0
- data/lib/gooddata/models/blueprint/reference_field.rb +43 -0
- data/lib/gooddata/models/blueprint/schema_blueprint.rb +160 -0
- data/lib/gooddata/models/blueprint/schema_builder.rb +89 -0
- data/lib/gooddata/models/blueprint/to_manifest.rb +181 -0
- data/lib/gooddata/models/blueprint/to_wire.rb +154 -0
- data/lib/gooddata/models/client.rb +182 -0
- data/lib/gooddata/models/client_synchronization_result.rb +31 -0
- data/lib/gooddata/models/client_synchronization_result_details.rb +41 -0
- data/lib/gooddata/models/datawarehouse.rb +92 -0
- data/lib/gooddata/models/domain.rb +479 -0
- data/lib/gooddata/models/execution.rb +115 -0
- data/lib/gooddata/models/execution_detail.rb +81 -0
- data/lib/gooddata/models/from_wire.rb +160 -0
- data/lib/gooddata/models/invitation.rb +75 -0
- data/lib/gooddata/models/links.rb +50 -0
- data/lib/gooddata/models/membership.rb +441 -0
- data/lib/gooddata/models/metadata.rb +272 -0
- data/lib/gooddata/models/metadata/attribute.rb +134 -0
- data/lib/gooddata/models/metadata/dashboard.rb +108 -0
- data/lib/gooddata/models/metadata/dashboard/dashboard_item.rb +76 -0
- data/lib/gooddata/models/metadata/dashboard/filter_apply_item.rb +37 -0
- data/lib/gooddata/models/metadata/dashboard/filter_item.rb +64 -0
- data/lib/gooddata/models/metadata/dashboard/geo_chart_item.rb +56 -0
- data/lib/gooddata/models/metadata/dashboard/headline_item.rb +56 -0
- data/lib/gooddata/models/metadata/dashboard/iframe_item.rb +46 -0
- data/lib/gooddata/models/metadata/dashboard/report_item.rb +92 -0
- data/lib/gooddata/models/metadata/dashboard/text_item.rb +55 -0
- data/lib/gooddata/models/metadata/dashboard_tab.rb +141 -0
- data/lib/gooddata/models/metadata/dataset.rb +64 -0
- data/lib/gooddata/models/metadata/dimension.rb +54 -0
- data/lib/gooddata/models/metadata/fact.rb +44 -0
- data/lib/gooddata/models/metadata/label.rb +128 -0
- data/lib/gooddata/models/metadata/metadata.rb +12 -0
- data/lib/gooddata/models/metadata/metric.rb +198 -0
- data/lib/gooddata/models/metadata/report.rb +247 -0
- data/lib/gooddata/models/metadata/report_definition.rb +264 -0
- data/lib/gooddata/models/metadata/scheduled_mail.rb +274 -0
- data/lib/gooddata/models/metadata/scheduled_mail/dashboard_attachment.rb +62 -0
- data/lib/gooddata/models/metadata/scheduled_mail/report_attachment.rb +64 -0
- data/lib/gooddata/models/metadata/variable.rb +91 -0
- data/lib/gooddata/models/model.rb +282 -0
- data/lib/gooddata/models/models.rb +12 -0
- data/lib/gooddata/models/module_constants.rb +31 -0
- data/lib/gooddata/models/process.rb +316 -0
- data/lib/gooddata/models/profile.rb +426 -0
- data/lib/gooddata/models/project.rb +1514 -0
- data/lib/gooddata/models/project_creator.rb +126 -0
- data/lib/gooddata/models/project_metadata.rb +67 -0
- data/lib/gooddata/models/project_role.rb +79 -0
- data/lib/gooddata/models/report_data_result.rb +266 -0
- data/lib/gooddata/models/schedule.rb +518 -0
- data/lib/gooddata/models/segment.rb +201 -0
- data/lib/gooddata/models/tab_builder.rb +27 -0
- data/lib/gooddata/models/user_filters/mandatory_user_filter.rb +76 -0
- data/lib/gooddata/models/user_filters/user_filter.rb +100 -0
- data/lib/gooddata/models/user_filters/user_filter_builder.rb +512 -0
- data/lib/gooddata/models/user_filters/user_filters.rb +13 -0
- data/lib/gooddata/models/user_filters/variable_user_filter.rb +31 -0
- data/lib/gooddata/models/user_group.rb +241 -0
- data/lib/gooddata/rest/README.md +37 -0
- data/lib/gooddata/rest/client.rb +389 -0
- data/lib/gooddata/rest/connection.rb +765 -0
- data/lib/gooddata/rest/object.rb +69 -0
- data/lib/gooddata/rest/object_factory.rb +76 -0
- data/lib/gooddata/rest/resource.rb +27 -0
- data/lib/gooddata/rest/rest.rb +24 -0
- data/lib/gooddata/version.rb +23 -0
- data/lib/templates/bricks/brick.rb.erb +7 -0
- data/lib/templates/bricks/main.rb.erb +5 -0
- data/lib/templates/project/Goodfile.erb +4 -0
- data/lib/templates/project/data/commits.csv +4 -0
- data/lib/templates/project/data/devs.csv +4 -0
- data/lib/templates/project/data/repos.csv +3 -0
- data/lib/templates/project/model/model.rb.erb +20 -0
- data/spec/bricks/bricks_spec.rb +112 -0
- data/spec/bricks/default-config.json +8 -0
- data/spec/data/.gooddata +4 -0
- data/spec/data/blueprints/additional_dataset_module.json +32 -0
- data/spec/data/blueprints/big_blueprint_not_pruned.json +2079 -0
- data/spec/data/blueprints/invalid_blueprint.json +103 -0
- data/spec/data/blueprints/m_n_model.json +104 -0
- data/spec/data/blueprints/model_module.json +25 -0
- data/spec/data/blueprints/test_blueprint.json +38 -0
- data/spec/data/blueprints/test_project_model_spec.json +106 -0
- data/spec/data/cc/data/source/commits.csv +4 -0
- data/spec/data/cc/data/source/devs.csv +4 -0
- data/spec/data/cc/data/source/repos.csv +3 -0
- data/spec/data/cc/devel.prm +0 -0
- data/spec/data/cc/graph/graph.grf +11 -0
- data/spec/data/cc/workspace.prm +19 -0
- data/spec/data/column_based_permissions.csv +7 -0
- data/spec/data/column_based_permissions2.csv +6 -0
- data/spec/data/gd_gse_data_blueprint.json +1371 -0
- data/spec/data/gd_gse_data_manifest.json +1424 -0
- data/spec/data/gd_gse_data_model.json +1772 -0
- data/spec/data/gooddata_version_process/gooddata_version.rb +9 -0
- data/spec/data/gooddata_version_process/gooddata_version.zip +0 -0
- data/spec/data/hello_world_process/hello_world.rb +9 -0
- data/spec/data/hello_world_process/hello_world.zip +0 -0
- data/spec/data/line_based_permissions.csv +3 -0
- data/spec/data/manifests/test_blueprint.json +32 -0
- data/spec/data/manifests/test_project.json +107 -0
- data/spec/data/reports/left_attr_report.json +108 -0
- data/spec/data/reports/metric_only_one_line.json +83 -0
- data/spec/data/reports/report_1.json +197 -0
- data/spec/data/reports/top_attr_report.json +108 -0
- data/spec/data/ruby_params_process/ruby_params.rb +9 -0
- data/spec/data/ruby_process/deep_files/deep_stuff.txt +1 -0
- data/spec/data/ruby_process/process.rb +8 -0
- data/spec/data/ruby_process/stuff.txt +1 -0
- data/spec/data/superfluous_titles_view.json +81 -0
- data/spec/data/test-ci-data.csv +2 -0
- data/spec/data/users.csv +12 -0
- data/spec/data/wire_models/model_view.json +1775 -0
- data/spec/data/wire_models/nu_model.json +3046 -0
- data/spec/data/wire_models/test_blueprint.json +63 -0
- data/spec/data/wire_test_project.json +150 -0
- data/spec/environment/default.rb +41 -0
- data/spec/environment/develop.rb +31 -0
- data/spec/environment/environment.rb +18 -0
- data/spec/environment/hotfix.rb +21 -0
- data/spec/environment/production.rb +35 -0
- data/spec/environment/release.rb +21 -0
- data/spec/environment/staging.rb +30 -0
- data/spec/environment/staging_3.rb +36 -0
- data/spec/helpers/blueprint_helper.rb +26 -0
- data/spec/helpers/cli_helper.rb +36 -0
- data/spec/helpers/connection_helper.rb +41 -0
- data/spec/helpers/crypto_helper.rb +17 -0
- data/spec/helpers/csv_helper.rb +18 -0
- data/spec/helpers/process_helper.rb +33 -0
- data/spec/helpers/project_helper.rb +59 -0
- data/spec/helpers/schedule_helper.rb +31 -0
- data/spec/helpers/spec_helper.rb +15 -0
- data/spec/integration/blueprint_updates_spec.rb +101 -0
- data/spec/integration/blueprint_with_grain_spec.rb +72 -0
- data/spec/integration/clients_spec.rb +134 -0
- data/spec/integration/command_datawarehouse_spec.rb +39 -0
- data/spec/integration/command_projects_spec.rb +32 -0
- data/spec/integration/create_from_template_spec.rb +22 -0
- data/spec/integration/create_project_spec.rb +24 -0
- data/spec/integration/date_dim_switch_spec.rb +142 -0
- data/spec/integration/deprecated_load_spec.rb +58 -0
- data/spec/integration/full_process_schedule_spec.rb +298 -0
- data/spec/integration/full_project_spec.rb +569 -0
- data/spec/integration/over_to_user_filters_spec.rb +94 -0
- data/spec/integration/partial_md_export_import_spec.rb +42 -0
- data/spec/integration/project_spec.rb +264 -0
- data/spec/integration/rest_spec.rb +213 -0
- data/spec/integration/schedule_spec.rb +626 -0
- data/spec/integration/segments_spec.rb +141 -0
- data/spec/integration/user_filters_spec.rb +290 -0
- data/spec/integration/user_group_spec.rb +127 -0
- data/spec/integration/variables_spec.rb +188 -0
- data/spec/logging_in_logging_out_spec.rb +93 -0
- data/spec/spec_helper.rb +95 -0
- data/spec/unit/bricks/bricks_spec.rb +35 -0
- data/spec/unit/bricks/middleware/aws_middelware_spec.rb +51 -0
- data/spec/unit/bricks/middleware/bench_middleware_spec.rb +15 -0
- data/spec/unit/bricks/middleware/bulk_salesforce_middleware_spec.rb +15 -0
- data/spec/unit/bricks/middleware/gooddata_middleware_spec.rb +15 -0
- data/spec/unit/bricks/middleware/logger_middleware_spec.rb +15 -0
- data/spec/unit/bricks/middleware/restforce_middleware_spec.rb +15 -0
- data/spec/unit/bricks/middleware/stdout_middleware_spec.rb +15 -0
- data/spec/unit/bricks/middleware/twitter_middleware_spec.rb +15 -0
- data/spec/unit/cli/cli_spec.rb +17 -0
- data/spec/unit/cli/commands/cmd_auth_spec.rb +17 -0
- data/spec/unit/commands/command_projects_spec.rb +22 -0
- data/spec/unit/core/connection_spec.rb +57 -0
- data/spec/unit/core/logging_spec.rb +133 -0
- data/spec/unit/core/nil_logger_spec.rb +13 -0
- data/spec/unit/core/project_spec.rb +54 -0
- data/spec/unit/extensions/hash_spec.rb +23 -0
- data/spec/unit/godzilla/goodzilla_spec.rb +78 -0
- data/spec/unit/helpers/csv_helper_spec.rb +22 -0
- data/spec/unit/helpers/data_helper_spec.rb +61 -0
- data/spec/unit/helpers/global_helpers_spec.rb +111 -0
- data/spec/unit/helpers_spec.rb +86 -0
- data/spec/unit/models/blueprint/attributes_spec.rb +29 -0
- data/spec/unit/models/blueprint/dataset_spec.rb +121 -0
- data/spec/unit/models/blueprint/labels_spec.rb +44 -0
- data/spec/unit/models/blueprint/project_blueprint_spec.rb +648 -0
- data/spec/unit/models/blueprint/reference_spec.rb +29 -0
- data/spec/unit/models/blueprint/schema_builder_spec.rb +38 -0
- data/spec/unit/models/blueprint/to_wire_spec.rb +174 -0
- data/spec/unit/models/domain_spec.rb +144 -0
- data/spec/unit/models/execution_spec.rb +108 -0
- data/spec/unit/models/from_wire_spec.rb +296 -0
- data/spec/unit/models/invitation_spec.rb +17 -0
- data/spec/unit/models/membership_spec.rb +132 -0
- data/spec/unit/models/metadata_spec.rb +104 -0
- data/spec/unit/models/metric_spec.rb +117 -0
- data/spec/unit/models/model_spec.rb +82 -0
- data/spec/unit/models/params_spec.rb +118 -0
- data/spec/unit/models/profile_spec.rb +215 -0
- data/spec/unit/models/project_creator_spec.rb +127 -0
- data/spec/unit/models/project_role_spec.rb +94 -0
- data/spec/unit/models/project_spec.rb +162 -0
- data/spec/unit/models/report_result_data_spec.rb +199 -0
- data/spec/unit/models/schedule_spec.rb +418 -0
- data/spec/unit/models/to_manifest_spec.rb +63 -0
- data/spec/unit/models/unit_project_spec.rb +125 -0
- data/spec/unit/models/user_filters_spec.rb +95 -0
- data/spec/unit/models/variable_spec.rb +265 -0
- data/spec/unit/rest/polling_spec.rb +89 -0
- data/spec/unit/rest/resource_spec.rb +10 -0
- data/yard-server.sh +3 -0
- metadata +1125 -0
@@ -0,0 +1,115 @@
|
|
1
|
+
# encoding: UTF-8
|
2
|
+
#
|
3
|
+
# Copyright (c) 2010-2015 GoodData Corporation. All rights reserved.
|
4
|
+
# This source code is licensed under the BSD-style license found in the
|
5
|
+
# LICENSE file in the root directory of this source tree.
|
6
|
+
|
7
|
+
require_relative '../rest/resource'
|
8
|
+
require_relative '../extensions/hash'
|
9
|
+
|
10
|
+
module GoodData
|
11
|
+
class Execution < Rest::Resource
|
12
|
+
attr_reader :dirty, :json
|
13
|
+
|
14
|
+
alias_method :data, :json
|
15
|
+
|
16
|
+
# Initializes object instance from raw wire JSON
|
17
|
+
#
|
18
|
+
# @param json Json used for initialization
|
19
|
+
def initialize(json)
|
20
|
+
super
|
21
|
+
@json = json
|
22
|
+
end
|
23
|
+
|
24
|
+
# Timestamp when execution was created
|
25
|
+
def created
|
26
|
+
Time.parse(json['execution']['createdTime'])
|
27
|
+
end
|
28
|
+
|
29
|
+
# Data for execution
|
30
|
+
def data
|
31
|
+
@client.get(json['execution']['data'])
|
32
|
+
end
|
33
|
+
|
34
|
+
# Has execution failed?
|
35
|
+
def error?
|
36
|
+
status == :error
|
37
|
+
end
|
38
|
+
|
39
|
+
# Timestamp when execution was finished
|
40
|
+
def finished
|
41
|
+
json['execution']['endTime'] && Time.parse(json['execution']['endTime'])
|
42
|
+
end
|
43
|
+
|
44
|
+
# Log for execution
|
45
|
+
def log
|
46
|
+
@client.get(json['execution']['log'])
|
47
|
+
end
|
48
|
+
|
49
|
+
# Is execution ok?
|
50
|
+
def ok?
|
51
|
+
status == :ok
|
52
|
+
end
|
53
|
+
|
54
|
+
# Returns schedule URL
|
55
|
+
#
|
56
|
+
# @return [String] Schedule URL
|
57
|
+
def schedule_uri
|
58
|
+
uri = @json['execution']['links']['self'] if @json && @json['execution'] && @json['execution']['links']
|
59
|
+
uri.split('/')[0..-3].join('/')
|
60
|
+
end
|
61
|
+
|
62
|
+
# Is execution running?
|
63
|
+
def running?
|
64
|
+
status == :running
|
65
|
+
end
|
66
|
+
|
67
|
+
# Returns schedule
|
68
|
+
#
|
69
|
+
# @return [String] Schedule URL
|
70
|
+
def schedule
|
71
|
+
schedule_uri && project.schedules(schedule_uri)
|
72
|
+
end
|
73
|
+
|
74
|
+
# Timestamp when execution was started
|
75
|
+
def started
|
76
|
+
Time.parse(json['execution']['startTime'])
|
77
|
+
end
|
78
|
+
|
79
|
+
# Status of execution
|
80
|
+
def status
|
81
|
+
json['execution']['status'].downcase.to_sym
|
82
|
+
end
|
83
|
+
|
84
|
+
# Returns URL
|
85
|
+
#
|
86
|
+
# @return [String] Schedule URL
|
87
|
+
def uri
|
88
|
+
@json['execution']['links']['self'] if @json && @json['execution'] && @json['execution']['links']
|
89
|
+
end
|
90
|
+
|
91
|
+
# Wait for execution result, status different than RUNNING or SCHEDULED
|
92
|
+
#
|
93
|
+
# @return [GoodData::Execution] Execution result
|
94
|
+
def wait_for_result(options = {})
|
95
|
+
res = client.poll_on_response(uri, options) do |body|
|
96
|
+
body['execution'] && (body['execution']['status'] == 'RUNNING' || body['execution']['status'] == 'SCHEDULED')
|
97
|
+
end
|
98
|
+
@json = res
|
99
|
+
self
|
100
|
+
end
|
101
|
+
|
102
|
+
def duration
|
103
|
+
if running?
|
104
|
+
Time.now - started
|
105
|
+
else
|
106
|
+
finished && finished - started
|
107
|
+
end
|
108
|
+
end
|
109
|
+
|
110
|
+
# Compares two executions - based on their URI
|
111
|
+
def ==(other)
|
112
|
+
other.respond_to?(:uri) && other.uri == uri && other.respond_to?(:to_hash) && other.to_hash == to_hash
|
113
|
+
end
|
114
|
+
end
|
115
|
+
end
|
@@ -0,0 +1,81 @@
|
|
1
|
+
# encoding: UTF-8
|
2
|
+
#
|
3
|
+
# Copyright (c) 2010-2015 GoodData Corporation. All rights reserved.
|
4
|
+
# This source code is licensed under the BSD-style license found in the
|
5
|
+
# LICENSE file in the root directory of this source tree.
|
6
|
+
|
7
|
+
require_relative '../rest/resource'
|
8
|
+
require_relative '../extensions/hash'
|
9
|
+
|
10
|
+
module GoodData
|
11
|
+
class ExecutionDetail < Rest::Resource
|
12
|
+
attr_reader :dirty, :json
|
13
|
+
|
14
|
+
alias_method :data, :json
|
15
|
+
|
16
|
+
# Initializes object instance from raw wire JSON
|
17
|
+
#
|
18
|
+
# @param json Json used for initialization
|
19
|
+
def initialize(json)
|
20
|
+
super
|
21
|
+
@json = json
|
22
|
+
end
|
23
|
+
|
24
|
+
# Timestamp when execution was created
|
25
|
+
def created
|
26
|
+
Time.parse(json['executionDetail']['created'])
|
27
|
+
end
|
28
|
+
|
29
|
+
# Has execution failed?
|
30
|
+
def error?
|
31
|
+
status == :error
|
32
|
+
end
|
33
|
+
|
34
|
+
# Timestamp when execution was finished
|
35
|
+
def finished
|
36
|
+
Time.parse(json['executionDetail']['finished'])
|
37
|
+
end
|
38
|
+
|
39
|
+
# Log for execution
|
40
|
+
def log
|
41
|
+
@client.get(json['executionDetail']['links']['log'])
|
42
|
+
end
|
43
|
+
|
44
|
+
# Filename of log
|
45
|
+
def log_filename
|
46
|
+
@client.get(json['executionDetail']['logFileName'])
|
47
|
+
end
|
48
|
+
|
49
|
+
# Is execution ok?
|
50
|
+
def ok?
|
51
|
+
status == :ok
|
52
|
+
end
|
53
|
+
|
54
|
+
# Timestamp when execution was started
|
55
|
+
def started
|
56
|
+
Time.parse(json['executionDetail']['started'])
|
57
|
+
end
|
58
|
+
|
59
|
+
# Status of execution
|
60
|
+
def status
|
61
|
+
json['executionDetail']['status'].downcase.to_sym
|
62
|
+
end
|
63
|
+
|
64
|
+
# Timestamp when execution was updated
|
65
|
+
def updated
|
66
|
+
Time.parse(json['executionDetail']['updated'])
|
67
|
+
end
|
68
|
+
|
69
|
+
# Returns URL
|
70
|
+
#
|
71
|
+
# @return [String] Schedule URL
|
72
|
+
def uri
|
73
|
+
@json['executionDetail']['links']['self'] if @json && @json['executionDetail'] && @json['executionDetail']['links']
|
74
|
+
end
|
75
|
+
|
76
|
+
# Compares two executions - based on their URI
|
77
|
+
def ==(other)
|
78
|
+
other.respond_to?(:uri) && other.uri == uri && other.respond_to?(:to_hash) && other.to_hash == to_hash
|
79
|
+
end
|
80
|
+
end
|
81
|
+
end
|
@@ -0,0 +1,160 @@
|
|
1
|
+
# encoding: UTF-8
|
2
|
+
#
|
3
|
+
# Copyright (c) 2010-2015 GoodData Corporation. All rights reserved.
|
4
|
+
# This source code is licensed under the BSD-style license found in the
|
5
|
+
# LICENSE file in the root directory of this source tree.
|
6
|
+
|
7
|
+
module GoodData
|
8
|
+
module Model
|
9
|
+
module FromWire
|
10
|
+
# Converts dataset from wire format into an internal blueprint representation
|
11
|
+
#
|
12
|
+
# @param dataset [Hash] Whatever comes from wire
|
13
|
+
# @return [Hash] Manifest for a particular reference
|
14
|
+
def self.dataset_from_wire(dataset)
|
15
|
+
{}.tap do |d|
|
16
|
+
id = dataset['dataset']['identifier']
|
17
|
+
|
18
|
+
d[:type] = :dataset
|
19
|
+
d[:title] = dataset['dataset']['title']
|
20
|
+
d[:id] = id
|
21
|
+
d[:columns] = (parse_anchor(dataset) + parse_attributes(dataset) + parse_facts(dataset) + parse_references(dataset))
|
22
|
+
end
|
23
|
+
end
|
24
|
+
|
25
|
+
# Entry method for converting information about project mode from wire
|
26
|
+
# format into an internal blueprint representation
|
27
|
+
#
|
28
|
+
# @param wire_model [Hash] Whatever comes from wire
|
29
|
+
# @return [GoodData::Model::ProjectBlueprint] Manifest for a particular reference
|
30
|
+
def self.from_wire(wire_model)
|
31
|
+
model = wire_model['projectModelView']['model']['projectModel']
|
32
|
+
datasets = model['datasets'] || []
|
33
|
+
dims = model['dateDimensions'] || []
|
34
|
+
|
35
|
+
ProjectBlueprint.new(
|
36
|
+
datasets: datasets.map { |ds| dataset_from_wire(ds) },
|
37
|
+
date_dimensions: dims.map { |dd| parse_date_dimensions(dd) }
|
38
|
+
)
|
39
|
+
end
|
40
|
+
|
41
|
+
# Converts attrbutes from wire format into an internal blueprint representation
|
42
|
+
#
|
43
|
+
# @param stuff [Hash] Whatever comes from wire
|
44
|
+
# @return [Hash] Manifest for a particular reference
|
45
|
+
def self.parse_attributes(stuff)
|
46
|
+
dataset = stuff['dataset']
|
47
|
+
attributes = dataset['attributes'] || []
|
48
|
+
attributes.mapcat do |a|
|
49
|
+
parse_attribute(a['attribute'])
|
50
|
+
end
|
51
|
+
end
|
52
|
+
|
53
|
+
# Converts anchor from wire format into an internal blueprint representation
|
54
|
+
#
|
55
|
+
# @param stuff [Hash] Whatever comes from wire
|
56
|
+
# @return [Hash] Manifest for a particular reference
|
57
|
+
def self.parse_anchor(stuff)
|
58
|
+
anchor = stuff['dataset']['anchor']['attribute']
|
59
|
+
parse_attribute(anchor, :anchor)
|
60
|
+
end
|
61
|
+
|
62
|
+
def self.parse_attribute(attribute, type = :attribute)
|
63
|
+
labels = attribute['labels'] || []
|
64
|
+
default_label_id = attribute['defaultLabel']
|
65
|
+
default_label = labels.find { |l| l['label']['identifier'] == default_label_id } || labels.first
|
66
|
+
regular_labels = labels - [default_label]
|
67
|
+
pl = default_label.nil? ? [] : [parse_label(attribute, default_label, :default_label)]
|
68
|
+
rl = regular_labels.map do |label|
|
69
|
+
parse_label(attribute, label, :label)
|
70
|
+
end
|
71
|
+
attribute = {}.tap do |a|
|
72
|
+
a[:type] = type
|
73
|
+
a[:id] = attribute['identifier']
|
74
|
+
a[:title] = attribute['title']
|
75
|
+
a[:description] = attribute['description']
|
76
|
+
a[:folder] = attribute['folder']
|
77
|
+
if attribute['grain']
|
78
|
+
a[:grain] = attribute['grain'].map do |g|
|
79
|
+
case g.keys.first.to_sym
|
80
|
+
when :dateDimension
|
81
|
+
{ date: g.values.first }
|
82
|
+
else
|
83
|
+
Helpers.symbolize_keys(g)
|
84
|
+
end
|
85
|
+
end
|
86
|
+
end
|
87
|
+
end
|
88
|
+
[attribute] + pl + rl
|
89
|
+
end
|
90
|
+
|
91
|
+
# Converts date dimensions from wire format into an internal blueprint representation
|
92
|
+
#
|
93
|
+
# @param stuff [Hash] Whatever comes from wire
|
94
|
+
# @return [Hash] Manifest for a particular reference
|
95
|
+
def self.parse_date_dimensions(date_dim)
|
96
|
+
{}.tap do |d|
|
97
|
+
d[:type] = :date_dimension
|
98
|
+
d[:id] = date_dim['dateDimension']['name']
|
99
|
+
d[:title] = date_dim['dateDimension']['title']
|
100
|
+
end
|
101
|
+
end
|
102
|
+
|
103
|
+
# Converts facts from wire format into an internal blueprint representation
|
104
|
+
#
|
105
|
+
# @param stuff [Hash] Whatever comes from wire
|
106
|
+
# @return [Hash] Manifest for a particular reference
|
107
|
+
def self.parse_facts(stuff)
|
108
|
+
facts = stuff['dataset']['facts'] || []
|
109
|
+
facts.map do |fact|
|
110
|
+
{}.tap do |f|
|
111
|
+
f[:type] = fact['fact']['identifier'] =~ /^dt\./ ? :date_fact : :fact
|
112
|
+
f[:id] = fact['fact']['identifier']
|
113
|
+
f[:title] = fact['fact']['title']
|
114
|
+
f[:description] = fact['fact']['description'] if fact['fact']['description']
|
115
|
+
f[:folder] = fact['fact']['folder']
|
116
|
+
f[:gd_data_type] = fact['fact']['dataType'] || GoodData::Model::DEFAULT_FACT_DATATYPE
|
117
|
+
end
|
118
|
+
end
|
119
|
+
end
|
120
|
+
|
121
|
+
# Converts label from wire format into an internal blueprint representation
|
122
|
+
#
|
123
|
+
# @param stuff [Hash] Whatever comes from wire
|
124
|
+
# @return [Hash] Manifest for a particular reference
|
125
|
+
def self.parse_label(attribute, label, type)
|
126
|
+
{}.tap do |l|
|
127
|
+
l[:type] = :label
|
128
|
+
l[:id] = label['label']['identifier']
|
129
|
+
l[:reference] = attribute['identifier']
|
130
|
+
l[:title] = label['label']['title']
|
131
|
+
l[:gd_data_type] = label['label']['dataType'] || GoodData::Model::DEFAULT_ATTRIBUTE_DATATYPE
|
132
|
+
l[:gd_type] = label['label']['type'] || GoodData::Model::DEFAULT_TYPE
|
133
|
+
l[:default_label] = true if type == :default_label
|
134
|
+
end
|
135
|
+
end
|
136
|
+
|
137
|
+
# Converts label from wire format into an internal blueprint representation
|
138
|
+
#
|
139
|
+
# @param dataset [Hash] Whatever comes from wire
|
140
|
+
# @param anchor_hash [Hash] dataset id -> anchor id hash
|
141
|
+
# @return [Hash] Manifest for a particular reference
|
142
|
+
def self.parse_references(dataset)
|
143
|
+
references = dataset['dataset']['references'] || []
|
144
|
+
references.map do |ref|
|
145
|
+
if ref =~ /^dataset\./
|
146
|
+
{
|
147
|
+
:type => :reference,
|
148
|
+
:dataset => ref
|
149
|
+
}
|
150
|
+
else
|
151
|
+
{
|
152
|
+
:type => :date,
|
153
|
+
:dataset => ref
|
154
|
+
}
|
155
|
+
end
|
156
|
+
end
|
157
|
+
end
|
158
|
+
end
|
159
|
+
end
|
160
|
+
end
|
@@ -0,0 +1,75 @@
|
|
1
|
+
# encoding: UTF-8
|
2
|
+
#
|
3
|
+
# Copyright (c) 2010-2015 GoodData Corporation. All rights reserved.
|
4
|
+
# This source code is licensed under the BSD-style license found in the
|
5
|
+
# LICENSE file in the root directory of this source tree.
|
6
|
+
|
7
|
+
require_relative '../rest/rest'
|
8
|
+
|
9
|
+
module GoodData
|
10
|
+
class Invitation < Rest::Resource
|
11
|
+
def initialize(json)
|
12
|
+
@json = json
|
13
|
+
end
|
14
|
+
|
15
|
+
def contributor
|
16
|
+
data = client.get @json['invitation']['meta']['contributor']
|
17
|
+
client.create GoodData::AccountSettings, data
|
18
|
+
end
|
19
|
+
|
20
|
+
def created
|
21
|
+
DateTime.parse(@json['invitation']['meta']['created'])
|
22
|
+
end
|
23
|
+
|
24
|
+
def email
|
25
|
+
@json['invitation']['content']['email']
|
26
|
+
end
|
27
|
+
|
28
|
+
def first_name
|
29
|
+
@json['invitation']['content']['firstname']
|
30
|
+
end
|
31
|
+
|
32
|
+
def phone
|
33
|
+
@json['invitation']['content']['phone']
|
34
|
+
end
|
35
|
+
|
36
|
+
def profile
|
37
|
+
data = client.get @json['invitation']['links']['profile']
|
38
|
+
client.create GoodData::AccountSettings, data
|
39
|
+
end
|
40
|
+
|
41
|
+
def project
|
42
|
+
data = client.get @json['invitation']['links']['project']
|
43
|
+
client.create GoodData::Project, data
|
44
|
+
end
|
45
|
+
|
46
|
+
def project_name
|
47
|
+
@json['invitation']['content']['projectname']
|
48
|
+
end
|
49
|
+
|
50
|
+
def role
|
51
|
+
# TODO: Return object instead
|
52
|
+
@json['invitation']['content']['role']
|
53
|
+
end
|
54
|
+
|
55
|
+
def status
|
56
|
+
@json['invitation']['content']['status']
|
57
|
+
end
|
58
|
+
|
59
|
+
def summary
|
60
|
+
@json['invitation']['content']['summary']
|
61
|
+
end
|
62
|
+
|
63
|
+
def title
|
64
|
+
@json['invitation']['content']['title']
|
65
|
+
end
|
66
|
+
|
67
|
+
def updated
|
68
|
+
DateTime.parse(@json['invitation']['meta']['updated'])
|
69
|
+
end
|
70
|
+
|
71
|
+
def uri
|
72
|
+
@json['invitation']['links']['self']
|
73
|
+
end
|
74
|
+
end
|
75
|
+
end
|
@@ -0,0 +1,50 @@
|
|
1
|
+
# encoding: UTF-8
|
2
|
+
#
|
3
|
+
# Copyright (c) 2010-2015 GoodData Corporation. All rights reserved.
|
4
|
+
# This source code is licensed under the BSD-style license found in the
|
5
|
+
# LICENSE file in the root directory of this source tree.
|
6
|
+
|
7
|
+
require_relative '../rest/object'
|
8
|
+
|
9
|
+
module GoodData
|
10
|
+
class Links < Rest::Resource
|
11
|
+
attr_reader :data
|
12
|
+
|
13
|
+
def initialize(items)
|
14
|
+
@data = {}
|
15
|
+
items.values[0]['links'].each do |item|
|
16
|
+
category = item['category']
|
17
|
+
if @data[category]
|
18
|
+
if @data[category]['category'] == category
|
19
|
+
@data[category] = { @data[category]['identifier'] => @data[category] }
|
20
|
+
end
|
21
|
+
@data[category][item['identifier']] = item
|
22
|
+
else
|
23
|
+
@data[category] = item
|
24
|
+
end
|
25
|
+
end
|
26
|
+
end
|
27
|
+
|
28
|
+
def links(category, identifier = nil)
|
29
|
+
return Links.new(client.get(self[category])) unless identifier
|
30
|
+
Links.new client.get(get(category, identifier))
|
31
|
+
end
|
32
|
+
|
33
|
+
def [](category)
|
34
|
+
return @data[category]['link'] if @data[category] && @data[category]['link']
|
35
|
+
@data[category]
|
36
|
+
end
|
37
|
+
|
38
|
+
def unique?(category)
|
39
|
+
@data[category]['link'].is_a? String
|
40
|
+
end
|
41
|
+
|
42
|
+
def ambiguous?(category)
|
43
|
+
!unique?(category)
|
44
|
+
end
|
45
|
+
|
46
|
+
def get(category, identifier)
|
47
|
+
self[category][identifier]
|
48
|
+
end
|
49
|
+
end
|
50
|
+
end
|