mirror of
https://github.com/Azure/cosmos-explorer.git
synced 2026-01-29 22:54:15 +00:00
fetch account details from account id instead of context
This commit is contained in:
@@ -1,22 +1,28 @@
|
|||||||
import { configContext } from "ConfigContext";
|
|
||||||
import React from "react";
|
import React from "react";
|
||||||
import { userContext } from "UserContext";
|
import { userContext } from "UserContext";
|
||||||
import { useSidePanel } from "../../../hooks/useSidePanel";
|
import { useSidePanel } from "../../../hooks/useSidePanel";
|
||||||
import { armRequest } from "../../../Utils/arm/request";
|
import {
|
||||||
|
cancel,
|
||||||
|
complete,
|
||||||
|
create,
|
||||||
|
listByDatabaseAccount,
|
||||||
|
pause,
|
||||||
|
resume
|
||||||
|
} from "../../../Utils/arm/generatedClients/dataTransferService/dataTransferJobs";
|
||||||
|
import { CreateJobRequest, DataTransferJobGetResults } from "../../../Utils/arm/generatedClients/dataTransferService/types";
|
||||||
import ContainerCopyMessages from "../ContainerCopyMessages";
|
import ContainerCopyMessages from "../ContainerCopyMessages";
|
||||||
import {
|
import {
|
||||||
buildDataTransferJobPath,
|
|
||||||
convertTime,
|
convertTime,
|
||||||
convertToCamelCase,
|
convertToCamelCase,
|
||||||
COPY_JOB_API_VERSION,
|
|
||||||
COSMOS_SQL_COMPONENT,
|
COSMOS_SQL_COMPONENT,
|
||||||
extractErrorMessage,
|
extractErrorMessage,
|
||||||
formatUTCDateTime
|
formatUTCDateTime,
|
||||||
|
getAccountDetailsFromResourceId
|
||||||
} from "../CopyJobUtils";
|
} from "../CopyJobUtils";
|
||||||
import CreateCopyJobScreensProvider from "../CreateCopyJob/Screens/CreateCopyJobScreensProvider";
|
import CreateCopyJobScreensProvider from "../CreateCopyJob/Screens/CreateCopyJobScreensProvider";
|
||||||
import { CopyJobStatusType } from "../Enums";
|
import { CopyJobActions, CopyJobStatusType } from "../Enums";
|
||||||
import { MonitorCopyJobsRefState } from "../MonitorCopyJobs/MonitorCopyJobRefState";
|
import { MonitorCopyJobsRefState } from "../MonitorCopyJobs/MonitorCopyJobRefState";
|
||||||
import { CopyJobContextState, CopyJobError, CopyJobType, DataTransferJobType } from "../Types";
|
import { CopyJobContextState, CopyJobError, CopyJobErrorType, CopyJobType } from "../Types";
|
||||||
|
|
||||||
export const openCreateCopyJobPanel = () => {
|
export const openCreateCopyJobPanel = () => {
|
||||||
const sidePanelState = useSidePanel.getState()
|
const sidePanelState = useSidePanel.getState()
|
||||||
@@ -37,19 +43,13 @@ export const getCopyJobs = async (): Promise<CopyJobType[]> => {
|
|||||||
}
|
}
|
||||||
copyJobsAbortController = new AbortController();
|
copyJobsAbortController = new AbortController();
|
||||||
try {
|
try {
|
||||||
const path = buildDataTransferJobPath({
|
const { subscriptionId, resourceGroup, accountName } = getAccountDetailsFromResourceId(userContext.databaseAccount?.id || "");
|
||||||
subscriptionId: userContext.subscriptionId,
|
const response = await listByDatabaseAccount(
|
||||||
resourceGroup: userContext.databaseAccount?.resourceGroup || "",
|
subscriptionId,
|
||||||
accountName: userContext.databaseAccount?.name || ""
|
resourceGroup,
|
||||||
});
|
accountName,
|
||||||
|
copyJobsAbortController.signal
|
||||||
const response: { value: DataTransferJobType[] } = await armRequest({
|
);
|
||||||
host: configContext.ARM_ENDPOINT,
|
|
||||||
path,
|
|
||||||
method: "GET",
|
|
||||||
apiVersion: COPY_JOB_API_VERSION,
|
|
||||||
signal: copyJobsAbortController.signal
|
|
||||||
});
|
|
||||||
|
|
||||||
const jobs = response.value || [];
|
const jobs = response.value || [];
|
||||||
if (!Array.isArray(jobs)) {
|
if (!Array.isArray(jobs)) {
|
||||||
@@ -74,14 +74,14 @@ export const getCopyJobs = async (): Promise<CopyJobType[]> => {
|
|||||||
};
|
};
|
||||||
|
|
||||||
const formattedJobs: CopyJobType[] = jobs
|
const formattedJobs: CopyJobType[] = jobs
|
||||||
.filter((job: DataTransferJobType) =>
|
.filter((job: DataTransferJobGetResults) =>
|
||||||
job.properties?.source?.component === COSMOS_SQL_COMPONENT &&
|
job.properties?.source?.component === COSMOS_SQL_COMPONENT &&
|
||||||
job.properties?.destination?.component === COSMOS_SQL_COMPONENT
|
job.properties?.destination?.component === COSMOS_SQL_COMPONENT
|
||||||
)
|
)
|
||||||
.sort((current: DataTransferJobType, next: DataTransferJobType) =>
|
.sort((current: DataTransferJobGetResults, next: DataTransferJobGetResults) =>
|
||||||
new Date(next.properties.lastUpdatedUtcTime).getTime() - new Date(current.properties.lastUpdatedUtcTime).getTime()
|
new Date(next.properties.lastUpdatedUtcTime).getTime() - new Date(current.properties.lastUpdatedUtcTime).getTime()
|
||||||
)
|
)
|
||||||
.map((job: DataTransferJobType, index: number) => {
|
.map((job: DataTransferJobGetResults, index: number) => {
|
||||||
const dateTimeObj = formatUTCDateTime(job.properties.lastUpdatedUtcTime);
|
const dateTimeObj = formatUTCDateTime(job.properties.lastUpdatedUtcTime);
|
||||||
|
|
||||||
return {
|
return {
|
||||||
@@ -93,7 +93,7 @@ export const getCopyJobs = async (): Promise<CopyJobType[]> => {
|
|||||||
Duration: convertTime(job.properties.duration),
|
Duration: convertTime(job.properties.duration),
|
||||||
LastUpdatedTime: dateTimeObj.formattedDateTime,
|
LastUpdatedTime: dateTimeObj.formattedDateTime,
|
||||||
timestamp: dateTimeObj.timestamp,
|
timestamp: dateTimeObj.timestamp,
|
||||||
Error: job.properties.error ? extractErrorMessage(job.properties.error) : null,
|
Error: job.properties.error ? extractErrorMessage(job.properties.error as unknown as CopyJobErrorType) : null,
|
||||||
} as CopyJobType;
|
} as CopyJobType;
|
||||||
});
|
});
|
||||||
return formattedJobs;
|
return formattedJobs;
|
||||||
@@ -107,32 +107,31 @@ export const getCopyJobs = async (): Promise<CopyJobType[]> => {
|
|||||||
export const submitCreateCopyJob = async (state: CopyJobContextState, onSuccess: () => void) => {
|
export const submitCreateCopyJob = async (state: CopyJobContextState, onSuccess: () => void) => {
|
||||||
try {
|
try {
|
||||||
const { source, target, migrationType, jobName } = state;
|
const { source, target, migrationType, jobName } = state;
|
||||||
const path = buildDataTransferJobPath({
|
const { subscriptionId, resourceGroup, accountName } = getAccountDetailsFromResourceId(userContext.databaseAccount?.id || "");
|
||||||
subscriptionId: userContext.subscriptionId,
|
|
||||||
resourceGroup: userContext.databaseAccount?.resourceGroup || "",
|
|
||||||
accountName: userContext.databaseAccount?.name || "",
|
|
||||||
jobName
|
|
||||||
});
|
|
||||||
const body = {
|
const body = {
|
||||||
"properties": {
|
properties: {
|
||||||
"source": {
|
source: {
|
||||||
"component": "CosmosDBSql",
|
component: "CosmosDBSql",
|
||||||
"remoteAccountName": source?.account?.name,
|
remoteAccountName: source?.account?.name,
|
||||||
"databaseName": source?.databaseId,
|
databaseName: source?.databaseId,
|
||||||
"containerName": source?.containerId
|
containerName: source?.containerId
|
||||||
},
|
},
|
||||||
"destination": {
|
destination: {
|
||||||
"component": "CosmosDBSql",
|
component: "CosmosDBSql",
|
||||||
"databaseName": target?.databaseId,
|
databaseName: target?.databaseId,
|
||||||
"containerName": target?.containerId
|
containerName: target?.containerId
|
||||||
},
|
},
|
||||||
"mode": migrationType
|
mode: migrationType
|
||||||
}
|
}
|
||||||
};
|
} as unknown as CreateJobRequest;
|
||||||
|
|
||||||
const response: DataTransferJobType = await armRequest({
|
const response = await create(
|
||||||
host: configContext.ARM_ENDPOINT, path, method: "PUT", body, apiVersion: COPY_JOB_API_VERSION
|
subscriptionId,
|
||||||
});
|
resourceGroup,
|
||||||
|
accountName,
|
||||||
|
jobName,
|
||||||
|
body,
|
||||||
|
);
|
||||||
MonitorCopyJobsRefState.getState().ref?.refreshJobList();
|
MonitorCopyJobsRefState.getState().ref?.refreshJobList();
|
||||||
onSuccess();
|
onSuccess();
|
||||||
return response;
|
return response;
|
||||||
@@ -142,19 +141,29 @@ export const submitCreateCopyJob = async (state: CopyJobContextState, onSuccess:
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
export const updateCopyJobStatus = async (job: CopyJobType, action: string): Promise<DataTransferJobType> => {
|
export const updateCopyJobStatus = async (job: CopyJobType, action: string): Promise<DataTransferJobGetResults> => {
|
||||||
try {
|
try {
|
||||||
const path = buildDataTransferJobPath({
|
|
||||||
subscriptionId: userContext.subscriptionId,
|
|
||||||
resourceGroup: userContext.databaseAccount?.resourceGroup || "",
|
|
||||||
accountName: userContext.databaseAccount?.name || "",
|
|
||||||
jobName: job.Name,
|
|
||||||
action: action
|
|
||||||
});
|
|
||||||
|
|
||||||
const response: DataTransferJobType = await armRequest({
|
let updateFn = null;
|
||||||
host: configContext.ARM_ENDPOINT, path, method: "POST", apiVersion: COPY_JOB_API_VERSION
|
switch (action.toLowerCase()) {
|
||||||
});
|
case CopyJobActions.pause:
|
||||||
|
updateFn = pause;
|
||||||
|
break;
|
||||||
|
case CopyJobActions.resume:
|
||||||
|
updateFn = resume;
|
||||||
|
break;
|
||||||
|
case CopyJobActions.cancel:
|
||||||
|
updateFn = cancel;
|
||||||
|
break;
|
||||||
|
case CopyJobActions.complete:
|
||||||
|
updateFn = complete;
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
throw new Error(`Unsupported action: ${action}`);
|
||||||
|
}
|
||||||
|
const { subscriptionId, resourceGroup, accountName } = getAccountDetailsFromResourceId(userContext.databaseAccount?.id || "");
|
||||||
|
const response = await updateFn?.(subscriptionId, resourceGroup, accountName, job.Name);
|
||||||
|
|
||||||
return response;
|
return response;
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
const errorMessage = JSON.stringify((error as CopyJobError).message || error.content || error);
|
const errorMessage = JSON.stringify((error as CopyJobError).message || error.content || error);
|
||||||
|
|||||||
@@ -97,8 +97,8 @@ export default {
|
|||||||
Actions: {
|
Actions: {
|
||||||
pause: "Pause",
|
pause: "Pause",
|
||||||
resume: "Resume",
|
resume: "Resume",
|
||||||
stop: "Stop",
|
cancel: "Cancel",
|
||||||
cutover: "Cutover",
|
complete: "Complete",
|
||||||
viewDetails: "View Details",
|
viewDetails: "View Details",
|
||||||
},
|
},
|
||||||
Status: {
|
Status: {
|
||||||
|
|||||||
@@ -3,6 +3,7 @@ import React, { useCallback } from "react";
|
|||||||
import { assignRole } from "../../../../../Utils/arm/RbacUtils";
|
import { assignRole } from "../../../../../Utils/arm/RbacUtils";
|
||||||
import ContainerCopyMessages from "../../../ContainerCopyMessages";
|
import ContainerCopyMessages from "../../../ContainerCopyMessages";
|
||||||
import { useCopyJobContext } from "../../../Context/CopyJobContext";
|
import { useCopyJobContext } from "../../../Context/CopyJobContext";
|
||||||
|
import { getAccountDetailsFromResourceId } from "../../../CopyJobUtils";
|
||||||
import InfoTooltip from "../Components/InfoTooltip";
|
import InfoTooltip from "../Components/InfoTooltip";
|
||||||
import PopoverMessage from "../Components/PopoverContainer";
|
import PopoverMessage from "../Components/PopoverContainer";
|
||||||
import { PermissionSectionConfig } from "./hooks/usePermissionsSection";
|
import { PermissionSectionConfig } from "./hooks/usePermissionsSection";
|
||||||
@@ -19,12 +20,19 @@ const AddReadPermissionToDefaultIdentity: React.FC<AddManagedIdentityProps> = ()
|
|||||||
|
|
||||||
const handleAddReadPermission = useCallback(async () => {
|
const handleAddReadPermission = useCallback(async () => {
|
||||||
const { source, target } = copyJobState;
|
const { source, target } = copyJobState;
|
||||||
|
const selectedSourceAccount = source?.account;
|
||||||
try {
|
try {
|
||||||
|
const {
|
||||||
|
subscriptionId: sourceSubscriptionId,
|
||||||
|
resourceGroup: sourceResourceGroup,
|
||||||
|
accountName: sourceAccountName
|
||||||
|
} = getAccountDetailsFromResourceId(selectedSourceAccount?.id);
|
||||||
|
|
||||||
setLoading(true);
|
setLoading(true);
|
||||||
const assignedRole = await assignRole(
|
const assignedRole = await assignRole(
|
||||||
source?.subscription?.subscriptionId,
|
sourceSubscriptionId,
|
||||||
source?.account?.resourceGroup,
|
sourceResourceGroup,
|
||||||
source?.account?.name,
|
sourceAccountName,
|
||||||
target?.account?.identity?.principalId!,
|
target?.account?.identity?.principalId!,
|
||||||
);
|
);
|
||||||
if (assignedRole) {
|
if (assignedRole) {
|
||||||
|
|||||||
@@ -3,7 +3,7 @@ import React, { useCallback, useState } from "react";
|
|||||||
import { fetchDatabaseAccount } from "Utils/arm/databaseAccountUtils";
|
import { fetchDatabaseAccount } from "Utils/arm/databaseAccountUtils";
|
||||||
import ContainerCopyMessages from "../../../ContainerCopyMessages";
|
import ContainerCopyMessages from "../../../ContainerCopyMessages";
|
||||||
import { useCopyJobContext } from "../../../Context/CopyJobContext";
|
import { useCopyJobContext } from "../../../Context/CopyJobContext";
|
||||||
import { buildResourceLink } from "../../../CopyJobUtils";
|
import { buildResourceLink, getAccountDetailsFromResourceId } from "../../../CopyJobUtils";
|
||||||
import { PermissionSectionConfig } from "./hooks/usePermissionsSection";
|
import { PermissionSectionConfig } from "./hooks/usePermissionsSection";
|
||||||
import useWindowOpenMonitor from "./hooks/useWindowOpenMonitor";
|
import useWindowOpenMonitor from "./hooks/useWindowOpenMonitor";
|
||||||
|
|
||||||
@@ -16,17 +16,19 @@ const PointInTimeRestore: React.FC<AddManagedIdentityProps> = () => {
|
|||||||
|
|
||||||
const onWindowClosed = useCallback(async () => {
|
const onWindowClosed = useCallback(async () => {
|
||||||
try {
|
try {
|
||||||
|
const selectedSourceAccount = source?.account;
|
||||||
|
const {
|
||||||
|
subscriptionId: sourceSubscriptionId,
|
||||||
|
resourceGroup: sourceResourceGroup,
|
||||||
|
accountName: sourceAccountName
|
||||||
|
} = getAccountDetailsFromResourceId(selectedSourceAccount?.id);
|
||||||
|
|
||||||
setLoading(true);
|
setLoading(true);
|
||||||
const account = await fetchDatabaseAccount(
|
const account = await fetchDatabaseAccount(
|
||||||
source?.subscription?.subscriptionId,
|
sourceSubscriptionId,
|
||||||
source?.account?.resourceGroup,
|
sourceResourceGroup,
|
||||||
source?.account?.name
|
sourceAccountName
|
||||||
);
|
);
|
||||||
/* account.properties = {
|
|
||||||
backupPolicy: {
|
|
||||||
type: "Continuous"
|
|
||||||
}
|
|
||||||
} */
|
|
||||||
if (account) {
|
if (account) {
|
||||||
setCopyJobState((prevState) => ({
|
setCopyJobState((prevState) => ({
|
||||||
...prevState,
|
...prevState,
|
||||||
|
|||||||
@@ -1,6 +1,7 @@
|
|||||||
import { DatabaseAccount } from "Contracts/DataModels";
|
import { DatabaseAccount } from "Contracts/DataModels";
|
||||||
import { useCallback, useState } from "react";
|
import { useCallback, useState } from "react";
|
||||||
import { useCopyJobContext } from "../../../../Context/CopyJobContext";
|
import { useCopyJobContext } from "../../../../Context/CopyJobContext";
|
||||||
|
import { getAccountDetailsFromResourceId } from "../../../../CopyJobUtils";
|
||||||
|
|
||||||
interface UseManagedIdentityUpdaterParams {
|
interface UseManagedIdentityUpdaterParams {
|
||||||
updateIdentityFn: (
|
updateIdentityFn: (
|
||||||
@@ -24,11 +25,17 @@ const useManagedIdentity = (
|
|||||||
const handleAddSystemIdentity = useCallback(async (): Promise<void> => {
|
const handleAddSystemIdentity = useCallback(async (): Promise<void> => {
|
||||||
try {
|
try {
|
||||||
setLoading(true);
|
setLoading(true);
|
||||||
const { target } = copyJobState;
|
const selectedTargetAccount = copyJobState?.target?.account;
|
||||||
|
const {
|
||||||
|
subscriptionId: targetSubscriptionId,
|
||||||
|
resourceGroup: targetResourceGroup,
|
||||||
|
accountName: targetAccountName
|
||||||
|
} = getAccountDetailsFromResourceId(selectedTargetAccount?.id);
|
||||||
|
|
||||||
const updatedAccount = await updateIdentityFn(
|
const updatedAccount = await updateIdentityFn(
|
||||||
target.subscriptionId,
|
targetSubscriptionId,
|
||||||
target.account?.resourceGroup,
|
targetResourceGroup,
|
||||||
target.account?.name
|
targetAccountName
|
||||||
);
|
);
|
||||||
if (updatedAccount) {
|
if (updatedAccount) {
|
||||||
setCopyJobState((prevState) => ({
|
setCopyJobState((prevState) => ({
|
||||||
|
|||||||
@@ -5,6 +5,7 @@ import {
|
|||||||
RoleDefinitionType
|
RoleDefinitionType
|
||||||
} from "../../../../../../Utils/arm/RbacUtils";
|
} from "../../../../../../Utils/arm/RbacUtils";
|
||||||
import ContainerCopyMessages from "../../../../ContainerCopyMessages";
|
import ContainerCopyMessages from "../../../../ContainerCopyMessages";
|
||||||
|
import { getAccountDetailsFromResourceId } from "../../../../CopyJobUtils";
|
||||||
import {
|
import {
|
||||||
BackupPolicyType,
|
BackupPolicyType,
|
||||||
CopyJobMigrationType,
|
CopyJobMigrationType,
|
||||||
@@ -68,10 +69,17 @@ const PERMISSION_SECTIONS_CONFIG: PermissionSectionConfig[] = [
|
|||||||
disabled: true,
|
disabled: true,
|
||||||
validate: async (state: CopyJobContextState) => {
|
validate: async (state: CopyJobContextState) => {
|
||||||
const principalId = state?.target?.account?.identity?.principalId;
|
const principalId = state?.target?.account?.identity?.principalId;
|
||||||
|
const selectedSourceAccount = state?.source?.account;
|
||||||
|
const {
|
||||||
|
subscriptionId: sourceSubscriptionId,
|
||||||
|
resourceGroup: sourceResourceGroup,
|
||||||
|
accountName: sourceAccountName
|
||||||
|
} = getAccountDetailsFromResourceId(selectedSourceAccount?.id);
|
||||||
|
|
||||||
const rolesAssigned = await fetchRoleAssignments(
|
const rolesAssigned = await fetchRoleAssignments(
|
||||||
state.source?.subscription?.subscriptionId,
|
sourceSubscriptionId,
|
||||||
state.source?.account?.resourceGroup,
|
sourceResourceGroup,
|
||||||
state.source?.account?.name,
|
sourceAccountName,
|
||||||
principalId
|
principalId
|
||||||
);
|
);
|
||||||
|
|
||||||
|
|||||||
@@ -34,7 +34,7 @@ export enum CopyJobStatusType {
|
|||||||
|
|
||||||
export enum CopyJobActions {
|
export enum CopyJobActions {
|
||||||
pause = "pause",
|
pause = "pause",
|
||||||
stop = "cancel",
|
|
||||||
resume = "resume",
|
resume = "resume",
|
||||||
cutover = "complete"
|
cancel = "cancel",
|
||||||
|
complete = "complete",
|
||||||
}
|
}
|
||||||
@@ -23,9 +23,9 @@ const CopyJobActionMenu: React.FC<CopyJobActionMenuProps> = ({ job, handleClick
|
|||||||
onClick: () => handleClick(job, CopyJobActions.pause)
|
onClick: () => handleClick(job, CopyJobActions.pause)
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
key: CopyJobActions.stop,
|
key: CopyJobActions.cancel,
|
||||||
text: ContainerCopyMessages.MonitorJobs.Actions.stop,
|
text: ContainerCopyMessages.MonitorJobs.Actions.cancel,
|
||||||
onClick: () => handleClick(job, CopyJobActions.stop)
|
onClick: () => handleClick(job, CopyJobActions.cancel)
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
key: CopyJobActions.resume,
|
key: CopyJobActions.resume,
|
||||||
@@ -50,9 +50,9 @@ const CopyJobActionMenu: React.FC<CopyJobActionMenuProps> = ({ job, handleClick
|
|||||||
const filteredItems = baseItems.filter(item => item.key !== CopyJobActions.resume);
|
const filteredItems = baseItems.filter(item => item.key !== CopyJobActions.resume);
|
||||||
if (job.Mode === CopyJobMigrationType.Online) {
|
if (job.Mode === CopyJobMigrationType.Online) {
|
||||||
filteredItems.push({
|
filteredItems.push({
|
||||||
key: CopyJobActions.cutover,
|
key: CopyJobActions.complete,
|
||||||
text: ContainerCopyMessages.MonitorJobs.Actions.cutover,
|
text: ContainerCopyMessages.MonitorJobs.Actions.complete,
|
||||||
onClick: () => handleClick(job, CopyJobActions.cutover)
|
onClick: () => handleClick(job, CopyJobActions.complete)
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
return filteredItems;
|
return filteredItems;
|
||||||
|
|||||||
@@ -3,13 +3,13 @@
|
|||||||
Run "npm run generateARMClients" to regenerate
|
Run "npm run generateARMClients" to regenerate
|
||||||
Edting this file directly should be done with extreme caution as not to diverge from ARM REST specs
|
Edting this file directly should be done with extreme caution as not to diverge from ARM REST specs
|
||||||
|
|
||||||
Generated from: https://raw.githubusercontent.com/Azure/azure-rest-api-specs/main/specification/cosmos-db/resource-manager/Microsoft.DocumentDB/preview/2023-11-15-preview/dataTransferService.json
|
Generated from: https://raw.githubusercontent.com/Azure/azure-rest-api-specs/main/specification/cosmos-db/resource-manager/Microsoft.DocumentDB/DocumentDB/preview/2025-05-01-preview/dataTransferService.json
|
||||||
*/
|
*/
|
||||||
|
|
||||||
import { configContext } from "../../../../ConfigContext";
|
import { configContext } from "../../../../ConfigContext";
|
||||||
import { armRequest } from "../../request";
|
import { armRequest } from "../../request";
|
||||||
import * as Types from "./types";
|
import * as Types from "./types";
|
||||||
const apiVersion = "2023-11-15-preview";
|
const apiVersion = "2025-05-01-preview";
|
||||||
|
|
||||||
/* Creates a Data Transfer Job. */
|
/* Creates a Data Transfer Job. */
|
||||||
export async function create(
|
export async function create(
|
||||||
@@ -67,12 +67,24 @@ export async function cancel(
|
|||||||
return armRequest({ host: configContext.ARM_ENDPOINT, path, method: "POST", apiVersion });
|
return armRequest({ host: configContext.ARM_ENDPOINT, path, method: "POST", apiVersion });
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* Completes a Data Transfer Online Job. */
|
||||||
|
export async function complete(
|
||||||
|
subscriptionId: string,
|
||||||
|
resourceGroupName: string,
|
||||||
|
accountName: string,
|
||||||
|
jobName: string,
|
||||||
|
): Promise<Types.DataTransferJobGetResults> {
|
||||||
|
const path = `/subscriptions/${subscriptionId}/resourceGroups/${resourceGroupName}/providers/Microsoft.DocumentDB/databaseAccounts/${accountName}/dataTransferJobs/${jobName}/complete`;
|
||||||
|
return armRequest({ host: configContext.ARM_ENDPOINT, path, method: "POST", apiVersion });
|
||||||
|
}
|
||||||
|
|
||||||
/* Get a list of Data Transfer jobs. */
|
/* Get a list of Data Transfer jobs. */
|
||||||
export async function listByDatabaseAccount(
|
export async function listByDatabaseAccount(
|
||||||
subscriptionId: string,
|
subscriptionId: string,
|
||||||
resourceGroupName: string,
|
resourceGroupName: string,
|
||||||
accountName: string,
|
accountName: string,
|
||||||
|
signal?: AbortSignal
|
||||||
): Promise<Types.DataTransferJobFeedResults> {
|
): Promise<Types.DataTransferJobFeedResults> {
|
||||||
const path = `/subscriptions/${subscriptionId}/resourceGroups/${resourceGroupName}/providers/Microsoft.DocumentDB/databaseAccounts/${accountName}/dataTransferJobs`;
|
const path = `/subscriptions/${subscriptionId}/resourceGroups/${resourceGroupName}/providers/Microsoft.DocumentDB/databaseAccounts/${accountName}/dataTransferJobs`;
|
||||||
return armRequest({ host: configContext.ARM_ENDPOINT, path, method: "GET", apiVersion });
|
return armRequest({ host: configContext.ARM_ENDPOINT, path, method: "GET", apiVersion, signal });
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -3,99 +3,112 @@
|
|||||||
Run "npm run generateARMClients" to regenerate
|
Run "npm run generateARMClients" to regenerate
|
||||||
Edting this file directly should be done with extreme caution as not to diverge from ARM REST specs
|
Edting this file directly should be done with extreme caution as not to diverge from ARM REST specs
|
||||||
|
|
||||||
Generated from: https://raw.githubusercontent.com/Azure/azure-rest-api-specs/main/specification/cosmos-db/resource-manager/Microsoft.DocumentDB/preview/2023-11-15-preview/dataTransferService.json
|
Generated from: https://raw.githubusercontent.com/Azure/azure-rest-api-specs/main/specification/cosmos-db/resource-manager/Microsoft.DocumentDB/DocumentDB/preview/2025-05-01-preview/dataTransferService.json
|
||||||
*/
|
*/
|
||||||
|
|
||||||
/* Base class for all DataTransfer source/sink */
|
/* Base class for all DataTransfer source/sink */
|
||||||
export interface DataTransferDataSourceSink {
|
export interface DataTransferDataSourceSink {
|
||||||
/* undocumented */
|
/* undocumented */
|
||||||
component: "CosmosDBCassandra" | "CosmosDBMongo" | "CosmosDBSql" | "AzureBlobStorage";
|
component: "CosmosDBCassandra" | "CosmosDBMongo" | "CosmosDBMongoVCore" | "CosmosDBSql" | "AzureBlobStorage";
|
||||||
}
|
}
|
||||||
|
|
||||||
/* A base CosmosDB data source/sink */
|
/* A base CosmosDB data source/sink */
|
||||||
export type BaseCosmosDataTransferDataSourceSink = DataTransferDataSourceSink & {
|
export type BaseCosmosDataTransferDataSourceSink = DataTransferDataSourceSink & {
|
||||||
/* undocumented */
|
/* undocumented */
|
||||||
remoteAccountName?: string;
|
remoteAccountName?: string;
|
||||||
};
|
};
|
||||||
|
|
||||||
/* A CosmosDB Cassandra API data source/sink */
|
/* A CosmosDB Cassandra API data source/sink */
|
||||||
export type CosmosCassandraDataTransferDataSourceSink = BaseCosmosDataTransferDataSourceSink & {
|
export type CosmosCassandraDataTransferDataSourceSink = BaseCosmosDataTransferDataSourceSink & {
|
||||||
/* undocumented */
|
/* undocumented */
|
||||||
keyspaceName: string;
|
keyspaceName: string;
|
||||||
/* undocumented */
|
/* undocumented */
|
||||||
tableName: string;
|
tableName: string;
|
||||||
};
|
};
|
||||||
|
|
||||||
/* A CosmosDB Mongo API data source/sink */
|
/* A CosmosDB Mongo API data source/sink */
|
||||||
export type CosmosMongoDataTransferDataSourceSink = BaseCosmosDataTransferDataSourceSink & {
|
export type CosmosMongoDataTransferDataSourceSink = BaseCosmosDataTransferDataSourceSink & {
|
||||||
/* undocumented */
|
/* undocumented */
|
||||||
databaseName: string;
|
databaseName: string;
|
||||||
/* undocumented */
|
/* undocumented */
|
||||||
collectionName: string;
|
collectionName: string;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
/* A CosmosDB Mongo vCore API data source/sink */
|
||||||
|
export type CosmosMongoVCoreDataTransferDataSourceSink = DataTransferDataSourceSink & {
|
||||||
|
/* undocumented */
|
||||||
|
databaseName: string;
|
||||||
|
/* undocumented */
|
||||||
|
collectionName: string;
|
||||||
|
/* undocumented */
|
||||||
|
hostName?: string;
|
||||||
|
/* undocumented */
|
||||||
|
connectionStringKeyVaultUri?: string;
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
/* A CosmosDB No Sql API data source/sink */
|
/* A CosmosDB No Sql API data source/sink */
|
||||||
export type CosmosSqlDataTransferDataSourceSink = BaseCosmosDataTransferDataSourceSink & {
|
export type CosmosSqlDataTransferDataSourceSink = BaseCosmosDataTransferDataSourceSink & {
|
||||||
/* undocumented */
|
/* undocumented */
|
||||||
databaseName: string;
|
databaseName: string;
|
||||||
/* undocumented */
|
/* undocumented */
|
||||||
containerName: string;
|
containerName: string;
|
||||||
};
|
};
|
||||||
|
|
||||||
/* An Azure Blob Storage data source/sink */
|
/* An Azure Blob Storage data source/sink */
|
||||||
export type AzureBlobDataTransferDataSourceSink = DataTransferDataSourceSink & {
|
export type AzureBlobDataTransferDataSourceSink = DataTransferDataSourceSink & {
|
||||||
/* undocumented */
|
/* undocumented */
|
||||||
containerName: string;
|
containerName: string;
|
||||||
/* undocumented */
|
/* undocumented */
|
||||||
endpointUrl?: string;
|
endpointUrl?: string;
|
||||||
};
|
};
|
||||||
|
|
||||||
/* The properties of a DataTransfer Job */
|
/* The properties of a DataTransfer Job */
|
||||||
export interface DataTransferJobProperties {
|
export interface DataTransferJobProperties {
|
||||||
/* Job Name */
|
/* Job Name */
|
||||||
readonly jobName?: string;
|
readonly jobName?: string;
|
||||||
/* Source DataStore details */
|
/* Source DataStore details */
|
||||||
source: DataTransferDataSourceSink;
|
source: DataTransferDataSourceSink;
|
||||||
|
|
||||||
/* Destination DataStore details */
|
/* Destination DataStore details */
|
||||||
destination: DataTransferDataSourceSink;
|
destination: DataTransferDataSourceSink;
|
||||||
|
|
||||||
/* Job Status */
|
/* Job Status */
|
||||||
readonly status?: string;
|
readonly status?: string;
|
||||||
/* Processed Count. */
|
/* Processed Count. */
|
||||||
readonly processedCount?: number;
|
readonly processedCount?: number
|
||||||
/* Total Count. */
|
/* Total Count. */
|
||||||
readonly totalCount?: number;
|
readonly totalCount?: number;
|
||||||
/* Last Updated Time (ISO-8601 format). */
|
/* Last Updated Time (ISO-8601 format). */
|
||||||
readonly lastUpdatedUtcTime?: string;
|
readonly lastUpdatedUtcTime?: string;
|
||||||
/* Worker count */
|
/* Worker count */
|
||||||
workerCount?: number;
|
workerCount?: number;
|
||||||
/* Error response for Faulted job */
|
/* Error response for Faulted job */
|
||||||
readonly error?: unknown;
|
readonly error?: unknown;
|
||||||
|
|
||||||
/* Total Duration of Job */
|
/* Total Duration of Job */
|
||||||
readonly duration?: string;
|
readonly duration?: string
|
||||||
/* Mode of job execution */
|
/* Mode of job execution */
|
||||||
mode?: "Offline" | "Online";
|
mode?: "Offline" | "Online";
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Parameters to create Data Transfer Job */
|
/* Parameters to create Data Transfer Job */
|
||||||
export type CreateJobRequest = unknown & {
|
export type CreateJobRequest = unknown & {
|
||||||
/* Data Transfer Create Job Properties */
|
/* Data Transfer Create Job Properties */
|
||||||
properties: DataTransferJobProperties;
|
properties: DataTransferJobProperties;
|
||||||
};
|
};
|
||||||
|
|
||||||
/* A Cosmos DB Data Transfer Job */
|
/* A Cosmos DB Data Transfer Job */
|
||||||
export type DataTransferJobGetResults = unknown & {
|
export type DataTransferJobGetResults = unknown & {
|
||||||
/* undocumented */
|
/* undocumented */
|
||||||
properties?: DataTransferJobProperties;
|
properties?: DataTransferJobProperties;
|
||||||
};
|
};
|
||||||
|
|
||||||
/* The List operation response, that contains the Data Transfer jobs and their properties. */
|
/* The List operation response, that contains the Data Transfer jobs and their properties. */
|
||||||
export interface DataTransferJobFeedResults {
|
export interface DataTransferJobFeedResults {
|
||||||
/* List of Data Transfer jobs and their properties. */
|
/* List of Data Transfer jobs and their properties. */
|
||||||
readonly value?: DataTransferJobGetResults[];
|
readonly value?: DataTransferJobGetResults[];
|
||||||
|
|
||||||
/* URL to get the next set of Data Transfer job list results if there are any. */
|
/* URL to get the next set of Data Transfer job list results if there are any. */
|
||||||
readonly nextLink?: string;
|
readonly nextLink?: string;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -21,9 +21,9 @@ const version = "2025-05-01-preview";
|
|||||||
"cosmos" | "managedCassandra" | "mongorbac" | "notebook" | "privateEndpointConnection" | "privateLinkResources" |
|
"cosmos" | "managedCassandra" | "mongorbac" | "notebook" | "privateEndpointConnection" | "privateLinkResources" |
|
||||||
"rbac" | "restorable" | "services" | "dataTransferService"
|
"rbac" | "restorable" | "services" | "dataTransferService"
|
||||||
*/
|
*/
|
||||||
const githubResourceName = "cosmos-db";
|
const githubResourceName = "dataTransferService";
|
||||||
const deResourceName = "cosmos";
|
const deResourceName = "dataTransferService";
|
||||||
const schemaURL = `https://raw.githubusercontent.com/Azure/azure-rest-api-specs/main/specification/cosmos-db/resource-manager/Microsoft.DocumentDB/preview/${version}/${githubResourceName}.json`;
|
const schemaURL = `https://raw.githubusercontent.com/Azure/azure-rest-api-specs/main/specification/cosmos-db/resource-manager/Microsoft.DocumentDB/DocumentDB/preview/${version}/${githubResourceName}.json`;
|
||||||
const outputDir = path.join(__dirname, `../../src/Utils/arm/generatedClients/${deResourceName}`);
|
const outputDir = path.join(__dirname, `../../src/Utils/arm/generatedClients/${deResourceName}`);
|
||||||
|
|
||||||
// Array of strings to use for eventual output
|
// Array of strings to use for eventual output
|
||||||
|
|||||||
Reference in New Issue
Block a user