Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
{
"pci_projects_project_storages_snapshots_guides_header": "Guides",
"pci_projects_project_storages_snapshots_guides_all_storage_guides": "Alle Guides zu Object Storage",
"pci_projects_project_storages_snapshots_guides_first_steps_with_instances": "Erste Schritte mit den Instanzen",
"pci_projects_project_storages_snapshots_guides_ip_fail_over": "Failover-IP",
"pci_projects_project_storages_snapshots_guides_user_root_and_password": "Root-Benutzer und Passwort",
"pci_projects_project_storages_snapshots_guides_reverse_dns": "Reverse DNS"
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
{
"pci_projects_project_storages_snapshots_guides_header": "Guides",
"pci_projects_project_storages_snapshots_guides_all_storage_guides": "All Object Storage guides",
"pci_projects_project_storages_snapshots_guides_first_steps_with_instances": "Getting started with instances",
"pci_projects_project_storages_snapshots_guides_ip_fail_over": "Failover IP",
"pci_projects_project_storages_snapshots_guides_user_root_and_password": "Root user and password",
"pci_projects_project_storages_snapshots_guides_reverse_dns": "Reverse DNS"
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
{
"pci_projects_project_storages_snapshots_guides_header": "Guías",
"pci_projects_project_storages_snapshots_guides_all_storage_guides": "Todas las guías de Object Storage",
"pci_projects_project_storages_snapshots_guides_first_steps_with_instances": "Primeros pasos con instancias",
"pci_projects_project_storages_snapshots_guides_ip_fail_over": "IP failover",
"pci_projects_project_storages_snapshots_guides_user_root_and_password": "Usuario root y contraseña",
"pci_projects_project_storages_snapshots_guides_reverse_dns": "Registro DNS inverso"
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
{
"pci_projects_project_storages_snapshots_guides_header": "Guides",
"pci_projects_project_storages_snapshots_guides_all_storage_guides": "Tous les guides Object Storage",
"pci_projects_project_storages_snapshots_guides_first_steps_with_instances": "Premiers pas avec les instances",
"pci_projects_project_storages_snapshots_guides_ip_fail_over": "IP fail-over",
"pci_projects_project_storages_snapshots_guides_user_root_and_password": "Utilisateur root et mot de passe",
"pci_projects_project_storages_snapshots_guides_reverse_dns": "Reverse DNS"
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
{
"pci_projects_project_storages_snapshots_guides_header": "Guides",
"pci_projects_project_storages_snapshots_guides_all_storage_guides": "Tous les guides Object Storage",
"pci_projects_project_storages_snapshots_guides_first_steps_with_instances": "Premiers pas avec les instances",
"pci_projects_project_storages_snapshots_guides_ip_fail_over": "IP fail-over",
"pci_projects_project_storages_snapshots_guides_user_root_and_password": "Utilisateur root et mot de passe",
"pci_projects_project_storages_snapshots_guides_reverse_dns": "Reverse DNS"
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
{
"pci_projects_project_storages_snapshots_guides_header": "Guide",
"pci_projects_project_storages_snapshots_guides_all_storage_guides": "Tutte le guide Object Storage",
"pci_projects_project_storages_snapshots_guides_first_steps_with_instances": "Iniziare a utilizzare le istanze",
"pci_projects_project_storages_snapshots_guides_ip_fail_over": "IP Failover",
"pci_projects_project_storages_snapshots_guides_user_root_and_password": "Utente root e password",
"pci_projects_project_storages_snapshots_guides_reverse_dns": "Reverse DNS"
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
{
"pci_projects_project_storages_snapshots_guides_header": "Przewodniki",
"pci_projects_project_storages_snapshots_guides_all_storage_guides": "Wszystkie przewodniki Object Storage",
"pci_projects_project_storages_snapshots_guides_first_steps_with_instances": "Pierwsze kroki z instancjami",
"pci_projects_project_storages_snapshots_guides_ip_fail_over": "IP Failover",
"pci_projects_project_storages_snapshots_guides_user_root_and_password": "Użytkownik root i hasło",
"pci_projects_project_storages_snapshots_guides_reverse_dns": "Rewers DNS"
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
{
"pci_projects_project_storages_snapshots_guides_header": "Manuais",
"pci_projects_project_storages_snapshots_guides_all_storage_guides": "Todos os guias de Object Storage",
"pci_projects_project_storages_snapshots_guides_first_steps_with_instances": "Primeiros passos com as instâncias",
"pci_projects_project_storages_snapshots_guides_ip_fail_over": "IP Failover",
"pci_projects_project_storages_snapshots_guides_user_root_and_password": "Utilizador root e palavra-passe",
"pci_projects_project_storages_snapshots_guides_reverse_dns": "Reverse DNS"
}
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,6 @@ import { FilterComparator } from '@ovh-ux/manager-core-api';
import * as SnapshotsApi from '@/api/hooks/useSnapshots';
import ListingPage from './Listing.page';

// Mock hooks and dependencies
vi.mock('@/hooks/usePageTracking', () => ({
usePageTracking: vi.fn(),
}));
Expand All @@ -21,6 +20,8 @@ vi.mock('@/hooks/useNotifications', () => ({
useNotifications: vi.fn(),
}));

vi.mock('@/pages/listing/components/VolumeSnapshotGuidesHeader.component');

const mockSetPagination = vi.fn();
const mockAddFilter = vi.fn();
const mockRemoveFilter = vi.fn();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,6 @@ import {
BaseLayout,
ChangelogButton,
Datagrid,
PciGuidesHeader,
RedirectionGuard,
useDataGrid,
useProjectUrl,
Expand All @@ -30,13 +29,14 @@ import {
import { Suspense, useContext, useState } from 'react';
import { Outlet, useParams } from 'react-router-dom';
import { ShellContext } from '@ovh-ux/manager-react-shell-client';
import { useDatagridColumn } from '@/pages/listing/useDatagridColumn';
import { useDatagridColumn } from '@/pages/listing/hooks/useDatagridColumn';
import { CHANGELOG_LINKS } from '@/constants';
import {
useAllSnapshots,
usePaginatedVolumeSnapshot,
} from '@/api/hooks/useSnapshots';
import { useQueryParamNotifications } from '@/hooks/useQueryParamNotifications';
import { VolumeSnapshotGuidesHeader } from '@/pages/listing/components/VolumeSnapshotGuidesHeader.component';

export default function ListingPage() {
const { t } = useTranslation(['volumes']);
Expand Down Expand Up @@ -110,7 +110,7 @@ export default function ListingPage() {
}
header={{
title: t('pci_projects_project_storages_snapshots_title'),
headerButton: <PciGuidesHeader category="storage" />,
headerButton: <VolumeSnapshotGuidesHeader />,
changelogButton: <ChangelogButton links={CHANGELOG_LINKS} />,
}}
>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ type ActionsProps = {
snapshot: TVolumeSnapshot;
};

export default function Actions({ snapshot }: Readonly<ActionsProps>) {
export default function ActionsComponent({ snapshot }: Readonly<ActionsProps>) {
const { t } = useTranslation('volumes');

const items = [
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
import { useContext } from 'react';
import { GuidesHeader } from '@ovh-ux/manager-react-components';
import { ShellContext } from '@ovh-ux/manager-react-shell-client';
import { useTranslation } from 'react-i18next';
import { Guide, GUIDES } from './guidesHeader.constants';

export const VolumeSnapshotGuidesHeader = () => {
const context = useContext(ShellContext);
const { ovhSubsidiary } = context.environment.getUser();
const { t } = useTranslation(['guides']);

const getGuideLabel = (guide: Guide) =>
t(`pci_projects_project_storages_snapshots_guides_${guide.key}`);

return (
<GuidesHeader
label={t('pci_projects_project_storages_snapshots_guides_header')}
guides={GUIDES}
ovhSubsidiary={ovhSubsidiary}
getGuideLabel={getGuideLabel}
/>
);
};
Original file line number Diff line number Diff line change
@@ -0,0 +1,196 @@
import { GuidesHeader } from '@ovh-ux/manager-react-components';

export type Guide = Parameters<
Parameters<typeof GuidesHeader>[0]['getGuideLabel']
>[0];

const PUBLIC_CLOUD_STORAGE_GUIDES = {
ASIA:
'https://help.ovhcloud.com/csm/asia-documentation-public-cloud-storage-object-storage?id=kb_browse_cat&kb_id=574a8325551974502d4c6e78b7421938&kb_category=6f34d555f49801102d4ca4d466a7fd9b&spa=1',
AU:
'https://help.ovhcloud.com/csm/en-au-documentation-public-cloud-storage-object-storage?id=kb_browse_cat&kb_id=574a8325551974502d4c6e78b7421938&kb_category=6f34d555f49801102d4ca4d466a7fd9b&spa=1',
CA:
'https://help.ovhcloud.com/csm/en-ca-documentation-public-cloud-storage-object-storage?id=kb_browse_cat&kb_id=574a8325551974502d4c6e78b7421938&kb_category=6f34d555f49801102d4ca4d466a7fd9b&spa=1',
DE:
'https://help.ovhcloud.com/csm/de-documentation-public-cloud-storage-object-storage?id=kb_browse_cat&kb_id=574a8325551974502d4c6e78b7421938&kb_category=6f34d555f49801102d4ca4d466a7fd9b&spa=1',
DEFAULT:
'https://help.ovhcloud.com/csm/en-gb-documentation-public-cloud-storage-object-storage?id=kb_browse_cat&kb_id=574a8325551974502d4c6e78b7421938&kb_category=6f34d555f49801102d4ca4d466a7fd9b&spa=1',
ES:
'https://help.ovhcloud.com/csm/es-es-documentation-public-cloud-storage-object-storage?id=kb_browse_cat&kb_id=574a8325551974502d4c6e78b7421938&kb_category=6f34d555f49801102d4ca4d466a7fd9b&spa=1',
FR:
'https://help.ovhcloud.com/csm/fr-documentation-public-cloud-storage-object-storage?id=kb_browse_cat&kb_id=574a8325551974502d4c6e78b7421938&kb_category=6f34d555f49801102d4ca4d466a7fd9b&spa=1',
GB:
'https://help.ovhcloud.com/csm/en-gb-documentation-public-cloud-storage-object-storage?id=kb_browse_cat&kb_id=574a8325551974502d4c6e78b7421938&kb_category=6f34d555f49801102d4ca4d466a7fd9b&spa=1',
IE:
'https://help.ovhcloud.com/csm/en-ie-documentation-public-cloud-storage-object-storage?id=kb_browse_cat&kb_id=574a8325551974502d4c6e78b7421938&kb_category=6f34d555f49801102d4ca4d466a7fd9b&spa=1',
IN:
'https://help.ovhcloud.com/csm/en-in-documentation-public-cloud-storage-object-storage?id=kb_browse_cat&kb_id=574a8325551974502d4c6e78b7421938&kb_category=6f34d555f49801102d4ca4d466a7fd9b&spa=1',
IT:
'https://help.ovhcloud.com/csm/it-documentation-public-cloud-storage-object-storage?id=kb_browse_cat&kb_id=574a8325551974502d4c6e78b7421938&kb_category=6f34d555f49801102d4ca4d466a7fd9b&spa=1',
MA:
'https://help.ovhcloud.com/csm/fr-documentation-public-cloud-storage-object-storage?id=kb_browse_cat&kb_id=574a8325551974502d4c6e78b7421938&kb_category=6f34d555f49801102d4ca4d466a7fd9b&spa=1',
NL:
'https://help.ovhcloud.com/csm/en-nl-documentation-public-cloud-storage-object-storage?id=kb_browse_cat&kb_id=574a8325551974502d4c6e78b7421938&kb_category=6f34d555f49801102d4ca4d466a7fd9b&spa=1',
PL:
'https://help.ovhcloud.com/csm/pl-documentation-public-cloud-storage-object-storage?id=kb_browse_cat&kb_id=574a8325551974502d4c6e78b7421938&kb_category=6f34d555f49801102d4ca4d466a7fd9b&spa=1',
PT:
'https://help.ovhcloud.com/csm/pt-documentation-public-cloud-storage-object-storage?id=kb_browse_cat&kb_id=574a8325551974502d4c6e78b7421938&kb_category=6f34d555f49801102d4ca4d466a7fd9b&spa=1',
QC:
'https://help.ovhcloud.com/csm/fr-ca-documentation-public-cloud-storage-object-storage?id=kb_browse_cat&kb_id=574a8325551974502d4c6e78b7421938&kb_category=6f34d555f49801102d4ca4d466a7fd9b&spa=1',
SG:
'https://help.ovhcloud.com/csm/en-sg-documentation-public-cloud-storage-object-storage?id=kb_browse_cat&kb_id=574a8325551974502d4c6e78b7421938&kb_category=6f34d555f49801102d4ca4d466a7fd9b&spa=1',
SN:
'https://help.ovhcloud.com/csm/fr-documentation-public-cloud-storage-object-storage?id=kb_browse_cat&kb_id=574a8325551974502d4c6e78b7421938&kb_category=6f34d555f49801102d4ca4d466a7fd9b&spa=1',
TN:
'https://help.ovhcloud.com/csm/fr-documentation-public-cloud-storage-object-storage?id=kb_browse_cat&kb_id=574a8325551974502d4c6e78b7421938&kb_category=6f34d555f49801102d4ca4d466a7fd9b&spa=1',
US:
'https://support.us.ovhcloud.com/hc/en-us/sections/23498311424275-Object-Storage',
WE:
'https://help.ovhcloud.com/csm/en-documentation-public-cloud-storage-object-storage?id=kb_browse_cat&kb_id=574a8325551974502d4c6e78b7421938&kb_category=6f34d555f49801102d4ca4d466a7fd9b&spa=1',
WS:
'https://help.ovhcloud.com/csm/es-documentation-public-cloud-storage-object-storage?id=kb_browse_cat&kb_id=574a8325551974502d4c6e78b7421938&kb_category=6f34d555f49801102d4ca4d466a7fd9b&spa=1',
};

const FIRST_STEPS_WITH_INSTANCES = {
ASIA: 'https://docs.ovh.com/asia/en/public-cloud/public-cloud-first-steps/',
AU: 'https://docs.ovh.com/au/en/public-cloud/public-cloud-first-steps/',
CA: 'https://docs.ovh.com/ca/en/public-cloud/public-cloud-first-steps/',
DE: 'https://docs.ovh.com/de/public-cloud/public-cloud-erste-schritte/',
DEFAULT: 'https://docs.ovh.com/gb/en/public-cloud/public-cloud-first-steps/',
ES: 'https://docs.ovh.com/es/public-cloud/public-cloud-primeros-pasos/',
FR:
'https://docs.ovh.com/fr/public-cloud/premiers-pas-instance-public-cloud/',
GB: 'https://docs.ovh.com/gb/en/public-cloud/public-cloud-first-steps/',
IE: 'https://docs.ovh.com/ie/en/public-cloud/public-cloud-first-steps/',
IN: 'https://docs.ovh.com/asia/en/public-cloud/public-cloud-first-steps/',
IT: 'https://docs.ovh.com/it/public-cloud/primi-passi-public-cloud/',
PL: 'https://docs.ovh.com/pl/public-cloud/public-cloud-pierwsze-kroki/',
PT: 'https://docs.ovh.com/pt/public-cloud/public-cloud-primeiros-passos/',
QC:
'https://docs.ovh.com/ca/fr/public-cloud/premiers-pas-instance-public-cloud/',
SG: 'https://docs.ovh.com/sg/en/public-cloud/public-cloud-first-steps/',
US:
'https://support.us.ovhcloud.com/hc/en-us/articles/4481009956243-How-to-Manage-Your-Public-Cloud-Instance',
WE: 'https://docs.ovh.com/us/en/public-cloud/public-cloud-first-steps/',
WS: 'https://docs.ovh.com/us/es/public-cloud/public-cloud-primeros-pasos/',
};

const IP_FAIL_OVER = {
ASIA: 'https://docs.ovh.com/asia/en/public-cloud/configure_a_failover_ip/',
AU: 'https://docs.ovh.com/au/en/public-cloud/configure_a_failover_ip/',
CA: 'https://docs.ovh.com/ca/en/public-cloud/configure_a_failover_ip/',
DE: 'https://docs.ovh.com/de/public-cloud/failover-ip-konfigurieren-pci/',
DEFAULT: 'https://docs.ovh.com/gb/en/public-cloud/configure_a_failover_ip/',
ES: 'https://docs.ovh.com/es/public-cloud/configurer-une-ip-failover/',
FR: 'https://docs.ovh.com/fr/public-cloud/configurer_une_ip_failover/',
GB: 'https://docs.ovh.com/gb/en/public-cloud/configure_a_failover_ip/',
IE: 'https://docs.ovh.com/ie/en/public-cloud/configure_a_failover_ip/',
IN: 'https://docs.ovh.com/asia/en/public-cloud/configure_a_failover_ip/',
IT: 'https://docs.ovh.com/it/public-cloud/configura-un-ip-failover/',
PL: 'https://docs.ovh.com/pl/public-cloud/konfiguracja-adresu-ip-failover/',
PT: 'https://docs.ovh.com/pt/public-cloud/configurer-une-ip-failover/',
QC: 'https://docs.ovh.com/ca/fr/public-cloud/configurer_une_ip_failover/',
SG: 'https://docs.ovh.com/sg/en/public-cloud/configure_a_failover_ip/',
US:
'https://support.us.ovhcloud.com/hc/en-us/articles/360011668000-Purchasing-and-managing-Additional-IPs',
WE: 'https://docs.ovh.com/us/en/public-cloud/configure_a_failover_ip/',
WS: 'https://docs.ovh.com/us/es/public-cloud/configurer-une-ip-failover/',
};

const USER_ROOT_AND_PASSWORD = {
ASIA:
'https://docs.ovh.com/asia/en/public-cloud/become_the_root_user_and_select_a_password/',
AU:
'https://docs.ovh.com/au/en/public-cloud/become_the_root_user_and_select_a_password/',
CA:
'https://docs.ovh.com/ca/en/public-cloud/become_the_root_user_and_select_a_password/',
DE:
'https://docs.ovh.com/de/public-cloud/root-rechte_erlangen_und_passwort_festlegen/',
DEFAULT:
'https://docs.ovh.com/gb/en/public-cloud/become_the_root_user_and_select_a_password/',
ES:
'https://docs.ovh.com/es/public-cloud/conectarse_como_usuario_root_y_establecer_una_contrasena/',
FR:
'https://docs.ovh.com/fr/public-cloud/passer-root-et-definir-un-mot-de-passe/',
GB:
'https://docs.ovh.com/gb/en/public-cloud/become_the_root_user_and_select_a_password/',
IE:
'https://docs.ovh.com/ie/en/public-cloud/become_the_root_user_and_select_a_password/',
IN:
'https://docs.ovh.com/asia/en/public-cloud/become_the_root_user_and_select_a_password/',
IT:
'https://docs.ovh.com/it/public-cloud/imposta_una_password_amministratore/',
PL: 'https://docs.ovh.com/pl/public-cloud/dostep_root_i_zdefiniowanie_hasla/',
PT:
'https://docs.ovh.com/pt/public-cloud/tornar-se_root_e_definir_uma_palavra-passe/',
QC:
'https://docs.ovh.com/ca/fr/public-cloud/passer-root-et-definir-un-mot-de-passe/',
SG:
'https://docs.ovh.com/sg/en/public-cloud/become_the_root_user_and_select_a_password/',
US:
'https://support.us.ovhcloud.com/hc/en-us/articles/360002208690-How-to-Access-a-Public-Cloud-Instance-via-VNC',
WE:
'https://docs.ovh.com/us/en/public-cloud/become_the_root_user_and_select_a_password/',
WS:
'https://docs.ovh.com/us/es/public-cloud/conectarse_como_usuario_root_y_establecer_una_contrasena/',
};

const REVERSE_DNS = {
ASIA:
'https://docs.ovh.com/asia/en/public-cloud/configure-reverse-dns-instance/',
AU: 'https://docs.ovh.com/au/en/public-cloud/configure-reverse-dns-instance/',
CA: 'https://docs.ovh.com/ca/en/public-cloud/configure-reverse-dns-instance/',
DE: 'https://docs.ovh.com/de/public-cloud/reverse-dns-konfigurieren-instanz/',
DEFAULT:
'https://docs.ovh.com/gb/en/public-cloud/configure-reverse-dns-instance/',
ES:
'https://docs.ovh.com/es/public-cloud/configurar-el-inverso-dns-de-una-instancia/',
FR:
'https://docs.ovh.com/fr/public-cloud/configurer-le-reverse-dns-dune-instance/',
GB: 'https://docs.ovh.com/gb/en/public-cloud/configure-reverse-dns-instance/',
IE: 'https://docs.ovh.com/ie/en/public-cloud/configure-reverse-dns-instance/',
IN:
'https://docs.ovh.com/asia/en/public-cloud/configure-reverse-dns-instance/',
IT:
'https://docs.ovh.com/it/public-cloud/configura_il_reverse_dns_della_tua_istanza/',
PL:
'https://docs.ovh.com/pl/public-cloud/konfiguracja_rewersu_dns_instancji/',
PT:
'https://docs.ovh.com/pt/public-cloud/configurar_a_reverse_dns_de_uma_instancia/',
QC:
'https://docs.ovh.com/ca/fr/public-cloud/configurer-le-reverse-dns-dune-instance/',
SG: 'https://docs.ovh.com/sg/en/public-cloud/configure-reverse-dns-instance/',
US:
'https://support.us.ovhcloud.com/hc/en-us/articles/360002181530-How-to-Configure-Reverse-DNS',
WE: 'https://docs.ovh.com/us/en/public-cloud/configure-reverse-dns-instance/',
WS:
'https://docs.ovh.com/us/es/public-cloud/configurar-el-inverso-dns-de-una-instancia/',
};

export const GUIDES: Record<string, Guide> = {
public_cloud_storage_guides: {
key: 'all_storage_guides',
url: PUBLIC_CLOUD_STORAGE_GUIDES,
tracking: '::guides::go_to_storage',
},
first_steps_with_instances: {
key: 'first_steps_with_instances',
url: FIRST_STEPS_WITH_INSTANCES,
tracking: '::guides::go_to_instances_guide',
},
ip_fail_over: {
key: 'ip_fail_over',
url: IP_FAIL_OVER,
tracking: '::guides::go_to_configure_a_failover_ip',
},
user_root_and_password: {
key: 'user_root_and_password',
url: USER_ROOT_AND_PASSWORD,
tracking: '::guides::go_to_become_the_root_user_and_select_a_password',
},
reverse_dns: {
key: 'reverse_dns',
url: REVERSE_DNS,
tracking: '::guides::go_to_configure_reverse_dns_instance',
},
};
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import { describe, it, expect, vi, beforeEach } from 'vitest';
import { beforeEach, describe, expect, it, vi } from 'vitest';
import React from 'react';
import { render, renderHook } from '@testing-library/react';
import { useDatagridColumn } from './useDatagridColumn';
Expand All @@ -18,11 +18,11 @@ vi.mock('@/hooks/useFormattedDate', () => ({
useFormattedDate: (date: string) => `formatted_${date}`,
}));

vi.mock('./Status.component', () => ({
vi.mock('@/pages/listing/components/Status.component', () => ({
default: ({ status }: { status: string }) => `Status: ${status}`,
}));

vi.mock('./Actions.component', () => ({
vi.mock('@/pages/listing/components/Actions.component', () => ({
default: ({ snapshot }: { snapshot: { id: string } }) =>
`Actions for ${snapshot.id}`,
}));
Expand Down
Loading
Loading