Skip to content

Commit ca49f32

Browse files
committed
feat(backup-agent): add edit configuration agent drawer
ref: #BKP-656 Signed-off-by: Thibault Barske <[email protected]>
1 parent 31340c8 commit ca49f32

File tree

18 files changed

+948
-59
lines changed

18 files changed

+948
-59
lines changed

package.json

Lines changed: 223 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,224 @@
55
"description": "OVH Control Panel also known as Manager",
66
"license": "BSD-3-Clause",
77
"workspaces": {
8-
"packages": []
8+
"packages": [
9+
"docs",
10+
"packages/components/ng-at-internet",
11+
"packages/components/ng-at-internet-ui-router-plugin",
12+
"packages/components/ng-log-live-tail",
13+
"packages/components/ng-ovh-actions-menu",
14+
"packages/components/ng-ovh-browser-alert",
15+
"packages/components/ng-ovh-chart",
16+
"packages/components/ng-ovh-checkbox-table",
17+
"packages/components/ng-ovh-contact",
18+
"packages/components/ng-ovh-contacts",
19+
"packages/components/ng-ovh-contracts",
20+
"packages/components/ng-ovh-doc-url",
21+
"packages/components/ng-ovh-export-csv",
22+
"packages/components/ng-ovh-feature-flipping",
23+
"packages/components/ng-ovh-http",
24+
"packages/components/ng-ovh-jquery-ui-draggable",
25+
"packages/components/ng-ovh-line-diagnostics",
26+
"packages/components/ng-ovh-mondial-relay",
27+
"packages/components/ng-ovh-otrs",
28+
"packages/components/ng-ovh-payment-method",
29+
"packages/components/ng-ovh-proxy-request",
30+
"packages/components/ng-ovh-responsive-popover",
31+
"packages/components/ng-ovh-sidebar-menu",
32+
"packages/components/ng-ovh-simple-country-list",
33+
"packages/components/ng-ovh-sso-auth",
34+
"packages/components/ng-ovh-swimming-poll",
35+
"packages/components/ng-ovh-timeline",
36+
"packages/components/ng-ovh-toaster",
37+
"packages/components/ng-ovh-ui-confirm-modal",
38+
"packages/components/ng-ovh-user-pref",
39+
"packages/components/ng-ovh-utils",
40+
"packages/components/ng-pagination-front",
41+
"packages/components/ng-q-allsettled",
42+
"packages/components/ng-shell-tracking",
43+
"packages/components/ng-tail-logs",
44+
"packages/components/ng-translate-async-loader",
45+
"packages/components/ng-ui-router-breadcrumb",
46+
"packages/components/ng-ui-router-layout",
47+
"packages/components/ng-ui-router-title",
48+
"packages/components/ovh-at-internet",
49+
"packages/components/ovh-payment-method",
50+
"packages/components/ovh-reket",
51+
"packages/components/ovh-shell",
52+
"packages/manager-tools/manager-cli",
53+
"packages/manager-tools/manager-forge-cli",
54+
"packages/manager-tools/manager-legacy-tools/codename-generator",
55+
"packages/manager-tools/manager-legacy-tools/component-rollup-config",
56+
"packages/manager-tools/manager-legacy-tools/dev-server",
57+
"packages/manager-tools/manager-legacy-tools/dev-server-config",
58+
"packages/manager-tools/manager-legacy-tools/test-utils",
59+
"packages/manager-tools/manager-legacy-tools/webpack-config",
60+
"packages/manager-tools/manager-legacy-tools/webpack-dev-server",
61+
"packages/manager-tools/manager-muk-cli",
62+
"packages/manager-tools/manager-pm",
63+
"packages/manager-tools/manager-static-analysis-kit",
64+
"packages/manager-tools/manager-tailwind-config",
65+
"packages/manager-tools/manager-tests-setup",
66+
"packages/manager-tools/manager-vite-config",
67+
"packages/manager-ui-kit",
68+
"packages/manager-wiki",
69+
"packages/manager/apps/account",
70+
"packages/manager/apps/account-creation",
71+
"packages/manager/apps/billing",
72+
"packages/manager/apps/bmc-backup-agent-baremetal",
73+
"packages/manager/apps/carbon-calculator",
74+
"packages/manager/apps/carrier-sip",
75+
"packages/manager/apps/catalog",
76+
"packages/manager/apps/cda",
77+
"packages/manager/apps/cloud-connect",
78+
"packages/manager/apps/cloud-shell",
79+
"packages/manager/apps/communication",
80+
"packages/manager/apps/container",
81+
"packages/manager/apps/dbaas-logs",
82+
"packages/manager/apps/dedicated",
83+
"packages/manager/apps/dedicated-servers",
84+
"packages/manager/apps/email-domain",
85+
"packages/manager/apps/email-pro",
86+
"packages/manager/apps/exchange",
87+
"packages/manager/apps/freefax",
88+
"packages/manager/apps/hpc-backup-agent-iaas",
89+
"packages/manager/apps/hpc-vmware-public-vcf-aas",
90+
"packages/manager/apps/hpc-vmware-vsphere",
91+
"packages/manager/apps/hub",
92+
"packages/manager/apps/hycu",
93+
"packages/manager/apps/iam",
94+
"packages/manager/apps/identity-access-management",
95+
"packages/manager/apps/iplb",
96+
"packages/manager/apps/metrics",
97+
"packages/manager/apps/nasha",
98+
"packages/manager/apps/netapp",
99+
"packages/manager/apps/nutanix",
100+
"packages/manager/apps/okms",
101+
"packages/manager/apps/order-tracking",
102+
"packages/manager/apps/overthebox",
103+
"packages/manager/apps/pci",
104+
"packages/manager/apps/pci-ai-endpoints",
105+
"packages/manager/apps/pci-ai-tools",
106+
"packages/manager/apps/pci-billing",
107+
"packages/manager/apps/pci-block-storage",
108+
"packages/manager/apps/pci-cold-archive",
109+
"packages/manager/apps/pci-contacts",
110+
"packages/manager/apps/pci-databases-analytics",
111+
"packages/manager/apps/pci-dataplatform",
112+
"packages/manager/apps/pci-gateway",
113+
"packages/manager/apps/pci-instances",
114+
"packages/manager/apps/pci-kubernetes",
115+
"packages/manager/apps/pci-load-balancer",
116+
"packages/manager/apps/pci-object-storage",
117+
"packages/manager/apps/pci-private-network",
118+
"packages/manager/apps/pci-private-registry",
119+
"packages/manager/apps/pci-public-ip",
120+
"packages/manager/apps/pci-quota",
121+
"packages/manager/apps/pci-rancher",
122+
"packages/manager/apps/pci-savings-plan",
123+
"packages/manager/apps/pci-ssh-keys",
124+
"packages/manager/apps/pci-users",
125+
"packages/manager/apps/pci-volume-backup",
126+
"packages/manager/apps/pci-volume-snapshot",
127+
"packages/manager/apps/pci-vouchers",
128+
"packages/manager/apps/pci-workflow",
129+
"packages/manager/apps/procedures",
130+
"packages/manager/apps/public-cloud",
131+
"packages/manager/apps/restricted",
132+
"packages/manager/apps/sap-features-hub",
133+
"packages/manager/apps/sign-up",
134+
"packages/manager/apps/sms",
135+
"packages/manager/apps/support",
136+
"packages/manager/apps/telecom",
137+
"packages/manager/apps/telecom-dashboard",
138+
"packages/manager/apps/telecom-task",
139+
"packages/manager/apps/veeam-backup",
140+
"packages/manager/apps/veeam-enterprise",
141+
"packages/manager/apps/vps",
142+
"packages/manager/apps/vrack",
143+
"packages/manager/apps/vrack-services",
144+
"packages/manager/apps/web",
145+
"packages/manager/apps/web-domains",
146+
"packages/manager/apps/web-hosting",
147+
"packages/manager/apps/web-office",
148+
"packages/manager/apps/web-ongoing-operations",
149+
"packages/manager/apps/zimbra",
150+
"packages/manager/core/api",
151+
"packages/manager/core/application",
152+
"packages/manager/core/ovh-product-icons",
153+
"packages/manager/core/request-tagger",
154+
"packages/manager/core/sso",
155+
"packages/manager/core/url-builder",
156+
"packages/manager/core/utils",
157+
"packages/manager/modules/account",
158+
"packages/manager/modules/account-migration",
159+
"packages/manager/modules/advices",
160+
"packages/manager/modules/at-internet-configuration",
161+
"packages/manager/modules/backup-agent",
162+
"packages/manager/modules/banner",
163+
"packages/manager/modules/beta-preference",
164+
"packages/manager/modules/billing",
165+
"packages/manager/modules/billing-components",
166+
"packages/manager/modules/billing-informations",
167+
"packages/manager/modules/bm-server-components",
168+
"packages/manager/modules/carbon-calculator",
169+
"packages/manager/modules/carrier-sip",
170+
"packages/manager/modules/catalog-price",
171+
"packages/manager/modules/cda",
172+
"packages/manager/modules/cloud-connect",
173+
"packages/manager/modules/cloud-styles",
174+
"packages/manager/modules/cloud-universe-components",
175+
"packages/manager/modules/common-api",
176+
"packages/manager/modules/common-translations",
177+
"packages/manager/modules/config",
178+
"packages/manager/modules/cookie-policy",
179+
"packages/manager/modules/core",
180+
"packages/manager/modules/dbaas-logs",
181+
"packages/manager/modules/email-domain",
182+
"packages/manager/modules/emailpro",
183+
"packages/manager/modules/error-page",
184+
"packages/manager/modules/exchange",
185+
"packages/manager/modules/filters",
186+
"packages/manager/modules/freefax",
187+
"packages/manager/modules/gcj",
188+
"packages/manager/modules/iam",
189+
"packages/manager/modules/iplb",
190+
"packages/manager/modules/log-to-customer",
191+
"packages/manager/modules/logs-to-customer",
192+
"packages/manager/modules/manager-components",
193+
"packages/manager/modules/manager-pci-common",
194+
"packages/manager/modules/metrics",
195+
"packages/manager/modules/mfa-enrollment",
196+
"packages/manager/modules/models",
197+
"packages/manager/modules/nasha",
198+
"packages/manager/modules/netapp",
199+
"packages/manager/modules/network-common",
200+
"packages/manager/modules/ng-apiv2-helper",
201+
"packages/manager/modules/ng-layout-helpers",
202+
"packages/manager/modules/ng-ovh-order-tracking",
203+
"packages/manager/modules/nutanix",
204+
"packages/manager/modules/order",
205+
"packages/manager/modules/overthebox",
206+
"packages/manager/modules/pci",
207+
"packages/manager/modules/pci-universe-components",
208+
"packages/manager/modules/phone-prefix",
209+
"packages/manager/modules/product-offers",
210+
"packages/manager/modules/request-tagger",
211+
"packages/manager/modules/resource-tagging",
212+
"packages/manager/modules/sign-up",
213+
"packages/manager/modules/sms",
214+
"packages/manager/modules/support",
215+
"packages/manager/modules/telecom-dashboard",
216+
"packages/manager/modules/telecom-styles",
217+
"packages/manager/modules/telecom-task",
218+
"packages/manager/modules/telecom-universe-components",
219+
"packages/manager/modules/trusted-nic",
220+
"packages/manager/modules/vcd-api",
221+
"packages/manager/modules/veeam-enterprise",
222+
"packages/manager/modules/vps",
223+
"packages/manager/modules/vrack",
224+
"packages/manager/modules/web-universe-components"
225+
]
9226
},
10227
"scripts": {
11228
"build": "yarn pm:build:ci",
@@ -39,18 +256,18 @@
39256
"manager-perf-budgets": "yarn manager-pm --type pnpm --action perfBudgets",
40257
"packages:publish": "manager-pm --type pnpm --action publish",
41258
"pm:add:app": "node ./packages/manager-tools/manager-pm/src/manager-pm-add-app.js",
42-
"pm:remove:app": "node ./packages/manager-tools/manager-pm/src/manager-pm-remove-app.js",
43259
"pm:add:module": "node ./packages/manager-tools/manager-pm/src/manager-pm-add-module.js",
44-
"pm:remove:module": "node ./packages/manager-tools/manager-pm/src/manager-pm-remove-module.js",
45-
"pm:isolated:install": "node packages/manager-tools/manager-pm/src/manager-pm-isolated-install.js",
46-
"pm:prepare:legacy:workspace": "node ./packages/manager-tools/manager-pm/src/manager-pm-prepare-workspace.js",
47-
"pm:remove:legacy:workspace": "node ./packages/manager-tools/manager-pm/src/manager-pm-remove-workspace.js",
48260
"pm:build:ci": "manager-pm --type pnpm --action buildCI",
49261
"pm:build:full": "manager-pm --type pnpm --action full-build",
262+
"pm:isolated:install": "node packages/manager-tools/manager-pm/src/manager-pm-isolated-install.js",
50263
"pm:lint": "manager-pm --type pnpm --action full-lint",
51264
"pm:lint:app": "manager-pm --type pnpm --action lint",
52265
"pm:lint:base": "node scripts/lint/lint-runner.js",
53266
"pm:lint:fix": "manager-pm --type pnpm --action full-lint --fix",
267+
"pm:prepare:legacy:workspace": "node ./packages/manager-tools/manager-pm/src/manager-pm-prepare-workspace.js",
268+
"pm:remove:app": "node ./packages/manager-tools/manager-pm/src/manager-pm-remove-app.js",
269+
"pm:remove:legacy:workspace": "node ./packages/manager-tools/manager-pm/src/manager-pm-remove-workspace.js",
270+
"pm:remove:module": "node ./packages/manager-tools/manager-pm/src/manager-pm-remove-module.js",
54271
"pm:start": "manager-pm --type pnpm --action start",
55272
"pm:test:ci": "manager-pm --type pnpm --action testCI",
56273
"pm:test:full": "manager-pm --type pnpm --action full-test",
Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,13 @@
11
{
22
"add_configuration": "Ajouter une configuration",
3+
"edit_configuration": "Editer un agent",
4+
"service_informations": "Informations sur le service",
35
"link_agent_to_a_server": "Lier un agent à un serveur existant",
46
"add_server": "Ajouter un serveur",
57
"select_server": "Sélectionner le serveur",
68
"product_name": "Nom du produit",
79
"select_os": "Sélectionner un système d'exploitation",
810
"os": "Système d'exploitation",
9-
"download_agent": "Télécharger l'agent"
11+
"download_agent": "Télécharger l'agent",
12+
"backup_policy": "Backup Policy"
1013
}
Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,25 @@
1+
import { ApiResponse, v2 } from '@ovh-ux/manager-core-api';
2+
13
export const getBackupAgentsListRoute = (vspcTenantId: string) =>
24
`/backup/tenant/vspc/${vspcTenantId}/backupAgent`;
35

46
export const getBackupAgentsDetailsRoute = (vspcTenantId: string, backupAgentId: string) =>
57
`${getBackupAgentsListRoute(vspcTenantId)}/${backupAgentId}`;
8+
9+
export const editConfigurationBackupAgentsRoute = (vspcTenantId: string, backupAgentId: string) =>
10+
getBackupAgentsDetailsRoute(vspcTenantId, backupAgentId);
11+
12+
export type EditConfigurationBackupAgentsProps = {
13+
vspcTenantId: string;
14+
backupAgentId: string;
15+
ips: string[];
16+
displayName: string;
17+
policy: string;
18+
};
19+
20+
export const editConfigurationBackupAgents = async ({
21+
vspcTenantId,
22+
backupAgentId,
23+
...payload
24+
}: EditConfigurationBackupAgentsProps): Promise<ApiResponse<string>> =>
25+
v2.put(editConfigurationBackupAgentsRoute(vspcTenantId, backupAgentId), payload);
Lines changed: 28 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -1,31 +1,43 @@
1-
import { DefinedInitialDataOptions, useQuery } from '@tanstack/react-query';
1+
import { queryOptions, useQuery } from '@tanstack/react-query';
22

33
import { BACKUP_TENANT_DETAILS_QUERY_KEY } from '@/data/hooks/tenants/useBackupTenantDetails';
44
import { mockAgents } from '@/mocks/agents/agents';
55
import { Agent } from '@/types/Agent.type';
66
import { Resource } from '@/types/Resource.type';
77

88
export const BACKUP_VSPC_TENANT_AGENT_DETAILS_QUERY_KEY = (
9-
vspcTenantID: string,
10-
backupId: string,
11-
) => [...BACKUP_TENANT_DETAILS_QUERY_KEY(vspcTenantID), backupId];
9+
vspcTenantId: string,
10+
agentId: string,
11+
) => [...BACKUP_TENANT_DETAILS_QUERY_KEY(vspcTenantId), agentId];
1212

13-
export const useBackupVSPCTenantDetails = ({
13+
export const useBackupVSPCTenantAgentDetailsOptions = ({
1414
tenantId,
15-
backupId,
16-
...options
15+
agentId,
1716
}: {
18-
tenantId: string;
19-
backupId: string;
20-
} & Partial<
21-
Omit<DefinedInitialDataOptions<Resource<Agent>, unknown, Resource<Agent>>, 'queryKey' | 'queryFn'>
22-
>) =>
23-
useQuery({
17+
tenantId?: string;
18+
agentId?: string;
19+
}) =>
20+
queryOptions({
2421
queryFn: () =>
2522
new Promise<Resource<Agent>>((resolve, reject) => {
26-
const result = mockAgents.find((agent) => agent.id === tenantId);
27-
result ? resolve(result) : reject(new Error('Agent not found'));
23+
setTimeout(() => {
24+
const result = mockAgents.find((agent) => agent.id === agentId);
25+
result ? resolve(result) : reject(new Error('Agent not found'));
26+
}, 1000);
2827
}),
29-
queryKey: BACKUP_VSPC_TENANT_AGENT_DETAILS_QUERY_KEY(tenantId, backupId),
28+
queryKey: BACKUP_VSPC_TENANT_AGENT_DETAILS_QUERY_KEY(tenantId!, agentId!),
29+
enabled: !!tenantId && !!agentId,
30+
});
31+
32+
export const useBackupVSPCTenantAgentDetails = ({
33+
tenantId,
34+
agentId,
35+
...options
36+
}: {
37+
tenantId?: string;
38+
agentId?: string;
39+
}) =>
40+
useQuery({
41+
...useBackupVSPCTenantAgentDetailsOptions({ tenantId, agentId }),
3042
...options,
3143
});
Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,40 @@
1+
import { UseMutationOptions, useMutation, useQueryClient } from '@tanstack/react-query';
2+
3+
import { ApiError, ApiResponse } from '@ovh-ux/manager-core-api';
4+
5+
import {
6+
EditConfigurationBackupAgentsProps,
7+
editConfigurationBackupAgents,
8+
} from '@/data/api/agents/agents.requests';
9+
10+
import { GET_VSPC_TENANTS_QUERY_KEY } from '../tenants/useVspcTenants';
11+
12+
type UseEditConfigurationVSPCTenantAgentParams = Partial<
13+
UseMutationOptions<
14+
ApiResponse<string>,
15+
ApiError,
16+
Omit<EditConfigurationBackupAgentsProps, 'vspcTenantId' | 'backupAgentId'>
17+
>
18+
>;
19+
20+
export const useEditConfigurationVSPCTenantAgent = ({
21+
vspcTenantId,
22+
backupAgentId,
23+
...options
24+
}: UseEditConfigurationVSPCTenantAgentParams &
25+
Pick<EditConfigurationBackupAgentsProps, 'vspcTenantId' | 'backupAgentId'>) => {
26+
const queryClient = useQueryClient();
27+
28+
return useMutation({
29+
mutationFn: (
30+
payload: Omit<EditConfigurationBackupAgentsProps, 'vspcTenantId' | 'backupAgentId'>,
31+
) => editConfigurationBackupAgents({ vspcTenantId, backupAgentId, ...payload }),
32+
...options,
33+
onSuccess: async (...params) => {
34+
await queryClient.invalidateQueries({
35+
queryKey: GET_VSPC_TENANTS_QUERY_KEY,
36+
});
37+
options.onSuccess?.(...params);
38+
},
39+
});
40+
};
Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
export const mockTenantBackupPolicies = ['windows', 'linux', 'macos'];
1+
export const mockTenantBackupPolicies = ['windows', 'linux', 'daily-backup-retention-30d', 'macos'];

0 commit comments

Comments
 (0)