Skip to content

Commit 098ad09

Browse files
Merge pull request #435 from thoughtspot/main
main release sync
2 parents d247e93 + c992dc9 commit 098ad09

23 files changed

+773
-336
lines changed

modules/ROOT/pages/common/nav.adoc

Lines changed: 9 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -110,7 +110,7 @@
110110
***** link:{{navprefix}}/custom-action-payload[Callback response payload]
111111
***** link:{{navprefix}}/edit-custom-action[Set the position of a custom action]
112112
***** link:{{navprefix}}/add-action-viz[Add a local action to a visualization]
113-
***** link:{{navprefix}}/add-action-worksheet[Add a local action to a worksheet]
113+
***** link:{{navprefix}}/add-action-worksheet[Add a local action to a model]
114114
**** link:{{navprefix}}/code-based-custom-action[Code based custom actions]
115115
*** link:{{navprefix}}/customize-links[Customize links]
116116
*** link:{{navprefix}}/set-locale[Customize locale]
@@ -236,16 +236,18 @@ include::generated/typedoc/CustomSideNav.adoc[]
236236
* link:{{navprefix}}/development-and-deployment[Deployment and integration]
237237
** link:{{navprefix}}/development-and-deployment[Development and deployment]
238238
*** link:{{navprefix}}/thoughtspot-objects[ThoughtSpot objects overview]
239-
*** link:{{navprefix}}/variables[Custom variables]
240-
*** link:{{navprefix}}/git-integration[Deploy with Git]
241-
**** link:{{navprefix}}/git-configuration[Configure Git integration]
242-
**** link:{{navprefix}}/git-api[Version Control REST APIs]
243-
**** link:{{navprefix}}/guid-mapping[GUID mapping]
239+
*** link:{{navprefix}}/variables[Variables]
240+
*** link:{{navprefix}}/parameterze-metdata[Parameterize metadata]
244241
*** link:{{navprefix}}/deploy-with-tml-apis[Deploy with TML APIs]
242+
**** link:{{navprefix}}/git-provider-integration[Git provider integration]
245243
**** link:{{navprefix}}/modify-tml[TML modification]
246244
*** link:{{navprefix}}/publish-data-overview[Publish content to Orgs]
247-
**** link:{{navprefix}}/parameterze-metdata[Parameterize metadata]
248245
**** link:{{navprefix}}/publish-to-orgs[Publish objects to Orgs]
246+
*** link:{{navprefix}}/git-integration[Deploy with GitHub APIs (legacy)]
247+
**** link:{{navprefix}}/git-configuration[Configure GitHub integration]
248+
**** link:{{navprefix}}/git-api[GitHub REST APIs]
249+
**** link:{{navprefix}}/guid-mapping[GUID mapping]
250+
249251
250252
** link:{{navprefix}}/multi-tenancy[Multi-tenancy]
251253
*** link:{{navprefix}}/orgs[Multi-tenancy with Orgs]

modules/ROOT/pages/deploy-with-tml-apis.adoc

Lines changed: 221 additions & 213 deletions
Large diffs are not rendered by default.

modules/ROOT/pages/deprecated-features.adoc

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -308,7 +308,7 @@ Use the new version of REST API v2.0 endpoints and SDK versions available for th
308308

309309
==== Documentation
310310
Starting from 9.0.0.cl, the API documentation for the REST API v2 [beta betaBackground]^Beta^ endpoints will not be accessible from the REST API Playground in ThoughtSpot.
311-
For information about the REST API v2 [beta betaBackground]^Beta^ endpoints, see xref:rest-api-v2-reference-beta.adoc[REST API v2 ^Beta^ reference].
311+
//For information about the REST API v2 [beta betaBackground]^Beta^ endpoints, see xref:rest-api-v2-reference-beta.adoc[REST API v2 ^Beta^ reference].
312312

313313
Recommended action::
314314
For information about REST API v2.0 endpoints, refer to the following articles and visit the link:{{navprefix}}/restV2-playground?apiResourceId=http%2Fgetting-started%2Fintroduction[REST API v2 Playground].

modules/ROOT/pages/development-and-deployment.adoc

Lines changed: 87 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -12,31 +12,99 @@ ThoughtSpot instances act as a constantly running service, so xref:development-a
1212

1313
ThoughtSpot provides numerous tools for building a structured deployment process, built around the link:https://docs.thoughtspot.com/cloud/latest/tml[ThoughtSpot Modeling Language (TML), window=_blank] format for representing the xref:intro-thoughtspot-objects.adoc[objects within ThoughtSpot].
1414

15-
== Best practices
16-
The primary tool for structured development and deployment in ThoughtSpot is called xref:orgs.adoc[Orgs].
15+
== Overview
16+
ThoughtSpot may provision your organization one or more separate *instances*, each with an individual URL.
1717

18-
Each Org in ThoughtSpot can be xref:version_control.adoc[paired] to a link:https://docs.github.com/en/pull-requests/collaborating-with-pull-requests/proposing-changes-to-your-work-with-pull-requests/about-branches[branch, target=_blank] in a link:https://docs.github.com/en/repositories/creating-and-managing-repositories/about-repositories[Git repository, target=_blank] as a single *environment*.
18+
Within a ThoughtSpot instance, the administrator of the Primary Org can create any number of logical tenants called xref:orgs.adoc[Orgs].
1919

2020
xref:orgs.adoc[Orgs] are fully separated tenants on a single ThoughtSpot instance. For TSE customers and others who need a structured development and deployment process, Orgs should always be enabled.
2121

22-
Once your environments are configured, you can xref:version_control.adoc#moving-tml-changes-between-environments[move data models and content] from the initial "dev environment" to any other environment using the xref:git-rest-api-guide.adoc[Git integration REST APIs].
22+
image::./images/instances_and_orgs.png[Instances and Orgs]
23+
24+
By setting the `xref:intro-thoughtspot-objects.adoc#object-identifiers[obj_id]` property of objects, objects in various Orgs that are related copies of one another will have the same `obj_id`, allowing for tracking related objects and updating them without concern for each object's unique GUID.
2325

2426
[NOTE]
2527
====
26-
ThoughtSpot does not recommend TML export and import across different versions of ThoughtSpot application because the TML syntax, supported features, and object schemas can vary between releases and can sometimes lead to compatibility issues and validation errors.
28+
ThoughtSpot does not recommend TML export and import from a *newer version* of ThoughtSpot to an instance on a *previous version*, because the TML syntax, supported features, and object schemas can vary between releases and can sometimes lead to compatibility issues and validation errors.
2729
====
2830

31+
== Version Control
32+
*Version control* is the process of tracking changes that occur to objects in ThoughtSpot.
33+
34+
A single branch in Git can be used for version control of a single Org in ThoughtSpot.
35+
36+
ThoughtSpot provides a GitHub-based link:https://docs.thoughtspot.com/cloud/10.15.0.cl/git-version-control[automated version control in the UI] for Liveboards and answers or a customized process can be built using the TML Export API to any Git provider.
37+
38+
It is best to use separate branches or even repositories for the UI automated version control and direct REST API processes.
39+
40+
When using the TML REST APIs and a Git provider, you can also implement version control branches, but they should be separate from the "deploy branches":
41+
42+
image::./images/version-control-branches.png[version control branches diagram]
43+
44+
It is important to have a version control branch for any "prod" Orgs with end user created content, which otherwise will not be archived in any way.
45+
46+
== Deployment
47+
*Deployment* is the process of *making copies of objects* from one Org to another Org.
48+
49+
Deployment is used in the process of building a *release* from a *dev Org* and then deploying copies of the release objects via TML to *test*, *uat*, and eventual *prod* Orgs.
50+
51+
The TML Export and Import APIs allow customizable release and deployment processes to integrate with any Git provider.
52+
53+
The standard deployment pattern for a xref:multi-tenancy-intro.adoc[multi-tenanted prod database] is shown below. RLS rules will filter the shared data models on the "prod" Org so that standard LBs and Answers only show the right data for each end customer, who are all only added as users to the "prod" Org.
54+
55+
image::./images/multi_tenant_deployment.png[Multi-tenant Database Deployment SDLC Pattern]
56+
57+
In a scenario where xref:single-tenant-data-models.adoc[end customer databases are single-tenanted], an Org can be created programmatically matching with the level of tenant separation, so that there is an Org representing each separate logical database.
58+
59+
There are two techniques for managing Orgs for single-tenanted databases:
60+
61+
* Publishing [beta betaBackground]^Beta^
62+
* Deploy to each Org using TML Import
63+
64+
== Publishing
65+
66+
*xref:publishing-overview.adoc[Publishing]* makes objects available in other Orgs without making copies.
67+
68+
Variables can be set at the Org level to override the Connection and Table object details for Publishing objects when they are accessed in a specific Org. Variables for connections and tables work with both Publishing and TML Import.
69+
70+
image::./images/publishing_diagram.png[Publishing and Variables]
71+
72+
With single-tenanted prod Orgs, the *Publishing* feature allows the final deployment step to import TML into the *publisher* Org, updating the *Published* objects, which instantly updates the objects in every Org the objects are published to.
73+
74+
image::./images/single_tenant_publishing.png[Publishing to Single-Tenants]
75+
76+
If there are structural differences within the various databases that make Publishing unviable, the TML Import process can be used to deploy unique copies of the release TML into each Org. This process may also include modifying the release TML to introduce variation into the objects that are deployed.
77+
78+
image::./images/single_tenant_deployment.png[Individual Deployment to Single-Tenants]
79+
80+
81+
82+
83+
////
84+
Each Org in ThoughtSpot can be xref:version_control.adoc[paired] to a link:https://docs.github.com/en/pull-requests/collaborating-with-pull-requests/proposing-changes-to-your-work-with-pull-requests/about-branches[branch, target=_blank] in a link:https://docs.github.com/en/repositories/creating-and-managing-repositories/about-repositories[Git repository, target=_blank] as a single *environment*.
85+
////
86+
87+
////
88+
Once your environments are configured, you can xref:version_control.adoc#moving-tml-changes-between-environments[move data models and content] from the initial "dev environment" to any other environment using the xref:git-rest-api-guide.adoc[Git integration REST APIs].
89+
////
90+
91+
92+
2993
////
3094
If you have used ThoughtSpot for a long time and are enabling Orgs for the first time, please see xref:moving-to-orgs.adoc[moving to Orgs from single-tenant ThoughtSpot instance].
3195
////
32-
== Standard structure of Orgs
96+
////
97+
== Typical Orgs pattern for SDLC
3398
When Orgs are enabled, the *Primary Org* (`org_id: 0`) should be treated as the "root" or "super-admin" Org, and all "real content" should exist on Orgs other than the Primary.
3499
100+
Additionally, the *Primary Org* is the only Org where *Published* objects can originate, so *Primary* serves as the *Publisher* Org within SDLC flows that involve Publishing.
101+
35102
The most basic standard configuration for separated development and deployment, with a xref:multi-tenancy-best-practices.adoc[multi-tenanted "prod" environment], has the following environments:
36103
37104
- *Primary*: only used for administration of instance and Orgs themselves
38-
- *Dev*: ThoughtSpot customer internal development team builds data models and standard Liveboards and Answers
39-
- *Prod*: Data models and standard content are published to this environment by service account. All end customers get READ-ONLY access to data models, standard Liveboards, and Answers.
105+
- *dev*: ThoughtSpot customer internal development team builds data models and standard Liveboards and Answers
106+
- *test*:
107+
- *prod*: Data models and standard content are published to this environment by service account. All end customers get READ-ONLY access to data models, standard Liveboards, and Answers.
40108
41109
image::./images/multi-tenanted_prod_deployment.png[Multi-tenanted prod deployment model]
42110
@@ -47,20 +115,25 @@ RLS filters the shared data models on the "prod" Org so that standard LBs and An
47115
If the production end customer data models are xref:single-tenant-data-models.adoc[single-tenanted (logical separation for each end customer)], such that a different connection is necessary), then the standard deployment involves a "release"/"pre-prod" Org and then one prod Org per end customer.
48116
49117
image::./images/single-tenant_prod_per_customer.png[Single-tenant final deployment model]
50-
118+
////
119+
////
51120
=== Additional "typical" Orgs
52121
53122
- *Test*, *UAT*: Additional steps in the publishing process between Dev and Prod, for verification before changes are deployed into Prod
54123
- *Internal Org(s)*: Org(s) for ThoughtSpot customer's own business work, never to be shared with end customers
55124
- Separate *'dev' instance*: Some people want a fully separated environment for dev, especially if doing MAJOR changes, even to cluster config. Recommend there be a 'Test Org' on the 'Prod Instance' to push to first, before pushing to 'Prod'
56125
- Separate *regional instances*: prod per customer Orgs may extend to multiple ThoughtSpot instances in different regional cloud data centers
126+
////
57127

128+
////
58129
[#deploy-between-environments]
59130
== Deploying content between environments
60-
////
131+
61132
The workflow for a very simple "dev" to "prod" flow on the same environment shown here, is the same pattern for any source-to-destination environment flow:
62133
63134
image::./images/development-deployment-process.png[Development and deployment workflow]
135+
////
136+
64137
////
65138
=== Git deployment
66139
The xref:version_control.adoc[Git REST APIs] are designed for the best practice pattern of building on a Dev Org and then deploying to any number of Orgs through Prod(s).
@@ -74,9 +147,12 @@ You will need a xref:guid-mapping.adoc[GUID Mapping file] that records the `orig
74147
75148
== Multi-tenancy and data security
76149
The exact deployment pattern chosen will depend on the design of your data warehouse. Please see the xref:multi-tenancy-intro.adoc[full documentation on multi-tenancy within ThoughtSpot] to determine which deployment pattern best fits your needs.
150+
////
77151

152+
////
78153
== Publishing content to Orgs within a ThoughtSpot instance
79154
80155
Starting with the 10.10.0.cl release, ThoughtSpot provides the ability to parameterize object properties using variables for each Org and publish objects directly from the Primary Org to other Orgs on a multi-tenant instance. The publishing feature [beta betaBackground]^Beta^ enables administrators to create a single main object in the Primary Org and distribute it to other Orgs within the instance.
81156
82-
For more information, see xref:publishing-overview.adoc[Publishing content to Orgs].
157+
For more information, see xref:publishing-overview.adoc[Publishing content to Orgs].
158+
////

modules/ROOT/pages/embed-authentication.adoc

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -71,6 +71,11 @@ a| Do not use this method if you don’t want the SDK to redirect your entire ap
7171
* This authentication will fail if multifactor authentication (MFA) is enabled on your ThoughtSpot instance. Contact https://community.thoughtspot.com/customers/s/login/?ec=302&startURL=%2Fcustomers%2Fs%2Fcontactsupport[ThoughtSpot Support] for assistance.
7272
|=====
7373

74+
[NOTE]
75+
====
76+
xref:orgs.adoc#per-org-subdomain[Per Org Subdomain] can be enabled to allow Orgs with different IdPs to be identified properly within the authentication flows triggered by the Visual Embed SDK.
77+
====
78+
7479
== User accounts
7580
Many ThoughtSpot features are tied to individual user accounts with a valid email address. xref:just-in-time-provisioning.adoc[Just-In-Time Provisioning] and user management REST APIs make it easy to create and update user accounts as part of the SSO process.
7681

@@ -218,7 +223,7 @@ The `init` method returns an event emitter, which you can use to listen to `Auth
218223

219224
[source,TypeScript]
220225
----
221-
authStatus = init(embedConfig); authStatus.on(AuthStatus.FAILURE, (reason) => {
226+
const authStatus = init(embedConfig); authStatus.on(AuthStatus.FAILURE, (reason) => {
222227
console.log('Authentication failed');
223228
});
224229
----
@@ -267,7 +272,7 @@ import { logout } from "@thoughtspot/visual-embed-sdk";
267272
logout();
268273
----
269274

270-
The `logout` function returns a promise that resolves when the user is logged out of ThoughtSpot. When you call `logout`, the `autoLogin` attribute is set to `false` to prevent the SDK from automatically logging in the user again. If you do not want to disable `autoLogin`, set the `doNotDisableAutoLogin` parameter to `false`.
275+
The `logout` function returns a promise that resolves when the user is logged out of ThoughtSpot. When you call `logout`, the `autoLogin` attribute is set to `false` to prevent the SDK from automatically logging in the user again. If you do not want to disable `autoLogin`, set the `doNotDisableAutoLogin` parameter to `true`.
271276

272277
You can also call `init` again with the `autoLogin` property set to `true` to re-login a user.
273278

0 commit comments

Comments
 (0)