Hide hosted shells and schema analyzer if VNET, Firewall or Private endpoints is enabled (#826)
* Disable Schema Analyzer if VNET or Firewall is enabled * Add support for private endpoint connections * Fix lint warning
This commit is contained in:
parent
0201e6ff92
commit
cb1d60cc90
|
@ -0,0 +1,17 @@
|
|||
import { userContext } from "../UserContext";
|
||||
|
||||
function isVirtualNetworkFilterEnabled() {
|
||||
return userContext.databaseAccount?.properties?.isVirtualNetworkFilterEnabled;
|
||||
}
|
||||
|
||||
function isIpRulesEnabled() {
|
||||
return userContext.databaseAccount?.properties?.ipRules?.length > 0;
|
||||
}
|
||||
|
||||
function isPrivateEndpointConnectionsEnabled() {
|
||||
return userContext.databaseAccount?.properties?.privateEndpointConnections?.length > 0;
|
||||
}
|
||||
|
||||
export function isPublicInternetAccessAllowed(): boolean {
|
||||
return !isVirtualNetworkFilterEnabled() && !isIpRulesEnabled() && !isPrivateEndpointConnectionsEnabled();
|
||||
}
|
|
@ -22,6 +22,7 @@ export interface DatabaseAccountExtendedProperties {
|
|||
enableAnalyticalStorage?: boolean;
|
||||
isVirtualNetworkFilterEnabled?: boolean;
|
||||
ipRules?: IpRule[];
|
||||
privateEndpointConnections?: unknown[];
|
||||
}
|
||||
|
||||
export interface DatabaseAccountResponseLocation {
|
||||
|
|
|
@ -9,6 +9,7 @@ import * as Constants from "../Common/Constants";
|
|||
import { ExplorerMetrics } from "../Common/Constants";
|
||||
import { readCollection } from "../Common/dataAccess/readCollection";
|
||||
import { readDatabases } from "../Common/dataAccess/readDatabases";
|
||||
import { isPublicInternetAccessAllowed } from "../Common/DatabaseAccountUtility";
|
||||
import { getErrorMessage, getErrorStack, handleError } from "../Common/ErrorHandlingUtils";
|
||||
import * as Logger from "../Common/Logger";
|
||||
import { QueriesClient } from "../Common/QueriesClient";
|
||||
|
@ -188,11 +189,8 @@ export default class Explorer {
|
|||
((await this._containsDefaultNotebookWorkspace(userContext.databaseAccount)) ||
|
||||
userContext.features.enableNotebooks)
|
||||
);
|
||||
this.isShellEnabled(
|
||||
this.isNotebookEnabled() &&
|
||||
!userContext.databaseAccount.properties.isVirtualNetworkFilterEnabled &&
|
||||
userContext.databaseAccount.properties.ipRules.length === 0
|
||||
);
|
||||
|
||||
this.isShellEnabled(this.isNotebookEnabled() && isPublicInternetAccessAllowed());
|
||||
|
||||
TelemetryProcessor.trace(Action.NotebookEnabled, ActionModifiers.Mark, {
|
||||
isNotebookEnabled: this.isNotebookEnabled(),
|
||||
|
|
|
@ -14,6 +14,7 @@ import CollectionIcon from "../../../images/tree-collection.svg";
|
|||
import { ReactAdapter } from "../../Bindings/ReactBindingHandler";
|
||||
import { ArrayHashMap } from "../../Common/ArrayHashMap";
|
||||
import { Areas } from "../../Common/Constants";
|
||||
import { isPublicInternetAccessAllowed } from "../../Common/DatabaseAccountUtility";
|
||||
import * as DataModels from "../../Contracts/DataModels";
|
||||
import * as ViewModels from "../../Contracts/ViewModels";
|
||||
import { IPinnedRepo } from "../../Juno/JunoClient";
|
||||
|
@ -273,11 +274,7 @@ export class ResourceTreeAdapter implements ReactAdapter {
|
|||
contextMenu: ResourceTreeContextMenuButtonFactory.createCollectionContextMenuButton(this.container, collection),
|
||||
});
|
||||
|
||||
if (
|
||||
userContext.apiType === "Mongo" &&
|
||||
this.container.isNotebookEnabled() &&
|
||||
userContext.features.enableSchemaAnalyzer
|
||||
) {
|
||||
if (this.container.isNotebookEnabled() && userContext.apiType === "Mongo" && isPublicInternetAccessAllowed()) {
|
||||
children.push({
|
||||
label: "Schema (Preview)",
|
||||
onClick: collection.onSchemaAnalyzerClick.bind(collection),
|
||||
|
|
Loading…
Reference in New Issue