Unable to publish a workbook successfully
Describe the bug I have some code that I have been using for quite some time to publish workbook and also data sources to our on -prem environment. We just migrated to the cloud. While I had to change how we authenticate to the cloud the code to publish a dashboard is not completing. This is a workbook that is connecting live to a database that is on-prem. That is why I was using the skip_connection_check=True. Which seems to hang for me.
Versions I'm using version 0.36 right now.
To Reproduce Here is a snippet of the code I was using originally.
if row['AssetType'] == 'Workbook':
try:
################ PUBLISH WORKBOOK ################
displayviews = gethiddensheets(server, asset.id, dload_path, RunProcessPath)
print(' Publishing Workbook!')
show_tabs = True
if row['ShowTabs'].upper() == 'FALSE':
show_tabs = False
wb_item = TSC.WorkbookItem(name=row['AssetName'], project_id=row['DestinationProjectLUID'], show_tabs=show_tabs)
if displayviews is None:
publishedasset = server.workbooks.publish(wb_item, dload_path, 'Overwrite',
as_job=False, skip_connection_check='True', show_tabs=row['ShowTabs'])
elif displayviews == -1:
print('ERROR: Grabbing Hidden Sheets!')
result = '1|ERROR: Grabbing Hidden Sheets!|'
else:
publishedasset = server.workbooks.publish(wb_item, dload_path, 'Overwrite',
as_job=False, skip_connection_check='True',
hidden_views=displayviews)
except Exception as e:
print('ERROR: Publishing Workbook!')
print("error in level argument", e.args[0])
result = '1|ERROR: Publishing Workbook!|'
return result
New code to adjust for the hidden views in the wb_item:
if row['AssetType'] == 'Workbook':
try:
################ PUBLISH WORKBOOK ################
#workbook = server.workbooks.get_by_id(asset.id)
#all_connections = server.workbooks.populate_connections(workbook)
displayviews = gethiddensheets(server, asset.id, dload_path, RunProcessPath)
print(' Publishing Workbook!')
show_tabs = True
if row['ShowTabs'].upper() == 'FALSE':
show_tabs = False
wb_item = TSC.WorkbookItem(name=row['AssetName'], project_id=row['DestinationProjectLUID'], show_tabs=show_tabs)
if displayviews is None:
publishedasset = server.workbooks.publish(wb_item, dload_path, 'Overwrite')
elif displayviews == -1:
print('ERROR: Grabbing Hidden Sheets!')
result = '1|ERROR: Grabbing Hidden Sheets!| '
else:
try:
print('Hidden Views')
wb_item.hidden_views = displayviews
publishedasset = server.workbooks.publish(wb_item, dload_path, mode='Overwrite',
skip_connection_check=True,
as_job=False)
Results server.workbooks.publish never returns. If I remove or change skip_connection_check to false it does complete with the following error.
403132: Forbidden
AssetPromotionRequest failed to establish a connection to your datasource.
The database is on prem, correct? Do you have tableau bridge setup?
Yes the database is on-prem and we do have Tableau bridge setup and the database I'm connecting to does work via the bridge. Now our bridge client happens to be on another server than the one that is running this code. Not sure if that would affect anything.
Quick update. It appears to only be affecting a live connection embedded in a workbook. Or a workbook that is using a server data source that is also a live connection.