Skip to content

Commit b204995

Browse files
authored
Merge pull request #13 from rdytech/NEP-17493-duplicate-dashboards-also-create-embedded-entry
Nep 17493 duplicate dashboards also create embedded entry
2 parents d57db4e + e25789b commit b204995

File tree

16 files changed

+192
-42
lines changed

16 files changed

+192
-42
lines changed

.gitignore

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,3 +14,6 @@ superset-*.gem
1414

1515
# ignore local .env variables
1616
.env
17+
18+
# ignore local log file
19+
log/superset-client.log
Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
module Superset
2+
module DuplicateDashboardLogger
3+
4+
5+
def logger
6+
@logger ||= begin
7+
if defined?(Rails)
8+
Rails.try(:logger) || Logger.new(STDOUT)
9+
else
10+
Logger.new(STDOUT)
11+
end
12+
end
13+
end
14+
end
15+
end

lib/superset.rb

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66
require_relative "superset/authenticator"
77
require_relative "superset/client"
88
require_relative "superset/display"
9+
require_relative "superset/logger"
910
require_relative "superset/request"
1011

1112
require_rel "superset"

lib/superset/dashboard/copy.rb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ def perform
1818
raise "Error: duplicate_slices must be a boolean" unless duplicate_slices_is_boolean?
1919

2020
response
21-
self
21+
Superset::Dashboard::Get.new(id).perform # return the full new dashboard object
2222
end
2323

2424
def params

lib/superset/dashboard/embedded/get.rb

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -54,4 +54,3 @@ def title
5454
end
5555
end
5656
end
57-
Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
module Superset
2+
module Dashboard
3+
module Embedded
4+
class Put < Superset::Request
5+
attr_reader :dashboard_id, :embedded_domain
6+
7+
def initialize(dashboard_id: , embedded_domain: )
8+
@dashboard_id = dashboard_id
9+
@embedded_domain = embedded_domain
10+
end
11+
12+
def response
13+
@response ||= client.put(route, params)
14+
end
15+
16+
def params
17+
{ "allowed_domains": [embedded_domain] }
18+
end
19+
20+
def uuid
21+
result['uuid'] unless response[:result].empty?
22+
end
23+
24+
private
25+
26+
def route
27+
"dashboard/#{dashboard_id}/embedded"
28+
end
29+
end
30+
end
31+
end
32+
end

lib/superset/dashboard/get.rb

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,11 @@ def self.call(id)
1212
self.new(id).list
1313
end
1414

15+
def perform
16+
response
17+
self
18+
end
19+
1520
def title
1621
"#{result['dashboard_title']}"
1722
end

lib/superset/dataset/duplicate.rb

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,8 @@ def perform
1616
raise "Error: source_dataset_id integer is required" unless source_dataset_id.present? && source_dataset_id.is_a?(Integer)
1717
raise "Error: new_dataset_name string is required" unless new_dataset_name.present? && new_dataset_name.is_a?(String)
1818
raise "Error: new_dataset_name already in use" if new_dataset_name_already_in_use?
19+
20+
logger.info(" Start Duplicate Source Dataset Id: #{source_dataset_id} to New Dataset Name: #{new_dataset_name}")
1921

2022
new_dataset_id
2123
end
@@ -39,7 +41,13 @@ def new_dataset_name_already_in_use?
3941
end
4042

4143
def new_dataset_id
42-
response["id"]
44+
if response["id"].present?
45+
logger.info(" Finish Duplicate Dataset. New Dataset Id: #{response['id']}")
46+
response["id"]
47+
else
48+
logger.error("Error: Unable to duplicate dataset: #{response}")
49+
raise "Error: Unable to duplicate dataset: #{response}"
50+
end
4351
end
4452

4553
def route

lib/superset/logger.rb

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
module Superset
2+
class Logger
3+
4+
def info(msg)
5+
logger.info(msg)
6+
end
7+
8+
def error(msg)
9+
logger.error(msg)
10+
end
11+
12+
def logger
13+
@logger ||= begin
14+
::Logger.new("log/superset-client.log")
15+
end
16+
end
17+
end
18+
end

lib/superset/request.rb

Lines changed: 9 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,8 @@ class Request
33
include Display
44

55
class InvalidParameterError < StandardError; end
6+
class ValidationError < StandardError; end
7+
68

79
PAGE_SIZE = 100
810

@@ -12,16 +14,15 @@ def initialize(page_num: 0)
1214
@page_num = page_num
1315
end
1416

15-
def logger
16-
@logger ||= Logger.new('superset-api.log')
17-
end
18-
1917
def self.call
2018
self.new.response
2119
end
2220

2321
def response
2422
@response ||= client.get(route)
23+
rescue => e
24+
logger.error("#{e.message}")
25+
raise e
2526
end
2627

2728
def result
@@ -53,5 +54,9 @@ def pagination
5354
def filters
5455
""
5556
end
57+
58+
def logger
59+
@logger ||= Superset::Logger.new
60+
end
5661
end
5762
end

0 commit comments

Comments
 (0)