@@ -9,7 +9,8 @@ module GoodData
99 module Model
1010 class ProjectCreator
1111 class << self
12- def migrate ( opts = { client : GoodData . connection , project : GoodData . project } )
12+ def migrate ( opts = { } )
13+ opts = { client : GoodData . connection , project : GoodData . project } . merge ( opts )
1314 client = opts [ :client ]
1415 fail ArgumentError , 'No :client specified' if client . nil?
1516
@@ -25,27 +26,21 @@ def migrate(opts = { client: GoodData.connection, project: GoodData.project })
2526
2627 begin
2728 GoodData . with_project ( project , opts ) do |p |
28- # migrate_date_dimensions(p, spec[:date_dimensions] || [])
29- migrate_datasets ( spec , :project => p , :client => client )
29+ migrate_datasets ( spec , opts . merge ( project : p , client : client ) )
3030 load ( p , spec )
3131 migrate_metrics ( p , spec [ :metrics ] || [ ] )
3232 migrate_reports ( p , spec [ :reports ] || [ ] )
3333 migrate_dashboards ( p , spec [ :dashboards ] || [ ] )
34- migrate_users ( p , spec [ :users ] || [ ] )
3534 execute_tests ( p , spec [ :assert_tests ] || [ ] )
3635 p
3736 end
3837 end
3938 end
4039
41- def migrate_date_dimensions ( project , spec )
42- spec . each do |dd |
43- Model . add_schema ( DateDimension . new ( dd ) , project )
44- end
45- end
46-
47- def migrate_datasets ( spec , opts = { :client => GoodData . connection } )
40+ def migrate_datasets ( spec , opts = { } )
41+ opts = { client : GoodData . connection } . merge ( opts )
4842 client = opts [ :client ]
43+ dry_run = opts [ :dry_run ]
4944 fail ArgumentError , 'No :client specified' if client . nil?
5045
5146 p = opts [ :project ]
@@ -63,29 +58,29 @@ def migrate_datasets(spec, opts = { :client => GoodData.connection })
6358 link = result [ 'asyncTask' ] [ 'link' ] [ 'poll' ]
6459 response = client . get ( link , :process => false )
6560
66- # pp response
6761 while response . code != 200
6862 sleep 1
6963 GoodData ::Rest ::Client . retryable ( :tries => 3 ) do
7064 sleep 1
7165 response = client . get ( link , :process => false )
72- # pp response
7366 end
7467 end
7568
7669 response = client . get ( link )
7770
7871 chunks = pick_correct_chunks ( response [ 'projectModelDiff' ] [ 'updateScripts' ] )
79- chunks [ 'updateScript' ] [ 'maqlDdlChunks' ] . each do |chunk |
80- result = project . execute_maql ( chunk )
81- fail 'Creating dataset failed' if result [ 'wTaskStatus' ] [ 'status' ] == 'ERROR'
82- end
83-
84- bp . datasets . zip ( GoodData ::Model ::ToManifest . to_manifest ( bp . to_hash ) ) . each do |ds |
85- dataset = ds [ 0 ]
86- manifest = ds [ 1 ]
87- GoodData ::ProjectMetadata [ "manifest_#{ dataset . name } " , :client => client , :project => project ] = manifest . to_json
72+ if !chunks . nil? && !dry_run
73+ chunks [ 'updateScript' ] [ 'maqlDdlChunks' ] . each do |chunk |
74+ result = project . execute_maql ( chunk )
75+ fail 'Creating dataset failed' if result [ 'wTaskStatus' ] [ 'status' ] == 'ERROR'
76+ end
77+ bp . datasets . zip ( GoodData ::Model ::ToManifest . to_manifest ( bp . to_hash ) ) . each do |ds |
78+ dataset = ds [ 0 ]
79+ manifest = ds [ 1 ]
80+ GoodData ::ProjectMetadata [ "manifest_#{ dataset . name } " , :client => client , :project => project ] = manifest . to_json
81+ end
8882 end
83+ chunks
8984 end
9085
9186 def migrate_reports ( project , spec )
@@ -106,13 +101,6 @@ def migrate_metrics(project, spec)
106101 end
107102 end
108103
109- def migrate_users ( _project , spec )
110- spec . each do |user |
111- puts "Would migrate user #{ user } "
112- # project.add_user(user)
113- end
114- end
115-
116104 def load ( project , spec )
117105 if spec . key? ( :uploads ) # rubocop:disable Style/GuardClause
118106 spec [ :uploads ] . each do |load |
0 commit comments