Unable to publish a workbook successfully

Open
#1,635 4 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

Assessment

Difficulty
4/5
Estimated time
3-5 days
Newbie friendliness
45/100
Issue type
Bug
Clarity
Needs clarification
Activity status
Quiet
Tech stack
python
Domain
api, backend

Research direction

Start at server.workbooks.publish and compare the two provided calls, especially skip_connection_check, as_job, and hidden_views. Reproduce the hang with the on-prem live datasource and cloud environment, then use the reported 403132 result and non-returning call to define and verify the corrected behavior.

Written by the indexing model from the issue text.

Description

help wanted

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.
Dominant language
Python
Stars
716
Forks
446
Avg merge
8d 8h
Merged PRs (30d)
2

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

More from tableau/server-client-python

All issues in tableau/server-client-python

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.