Skip to content

Commit

Permalink
feat(pci-block-storage): add storage edit page
Browse files Browse the repository at this point in the history
ref: DTCORE-1694
Signed-off-by: LIDRISSI Hamid <abdelghani-lidrissi.hamid.ext@ovhcloud.com>
  • Loading branch information
kqesar authored and LIDRISSI Hamid committed Jun 28, 2024
1 parent 1592eb0 commit dde6c43
Show file tree
Hide file tree
Showing 79 changed files with 3,361 additions and 747 deletions.
9 changes: 7 additions & 2 deletions packages/manager-components/src/hooks/index.ts
Original file line number Diff line number Diff line change
@@ -1,5 +1,10 @@
import { TRegion as Region } from './useProjectRegions';

export * from './pci-project-provider';
export { useProductMaintenance } from './pci/useMaintenance';
export * from './useCatalogPrice';
export * from './useMe';
export * from './useProjectRegions';
export * from './useProjectUrl';
export * from './pci-project-provider';
export { useProductMaintenance } from './pci/useMaintenance';

export type TRegion = Region;
Original file line number Diff line number Diff line change
@@ -1,10 +1,11 @@
import { PublicCloudProject as Project } from './publicCloudProject.interface';
import {
getProjectQuery,
useIsDiscoveryProject,
useProject,
useProjectQuota,
} from './useProject';
import { PublicCloudProject as Project } from './publicCloudProject.interface';

export type PublicCloudProject = Project;

export { useProject, useIsDiscoveryProject, getProjectQuery };
export { getProjectQuery, useIsDiscoveryProject, useProject, useProjectQuota };
Original file line number Diff line number Diff line change
Expand Up @@ -51,3 +51,61 @@ export const useIsDiscoveryProject = (projectId?: string) => {
const { data: project } = useProject(projectId);
return project?.planCode === DISCOVERY_PROJECT_PLANCODE;
};

export type TProjectQuota = {
region: string;
instance: {
maxCores: number;
maxInstances: number;
maxRam: number;
usedCores: number;
usedInstances: number;
usedRAM: number;
};
keypair: {
maxCount: number;
};
volume: {
maxGigabytes: number;
usedGigabytes: number;
volumeCount: number;
maxVolumeCount: number;
maxBackupGigabytes: number;
usedBackupGigabytes: number;
volumeBackupCount: number;
maxVolumeBackupCount: number;
};
network: {
maxNetworks: number;
usedNetworks: number;
maxSubnets: number;
usedSubnets: number;
maxFloatingIPs: number;
usedFloatingIPs: number;
maxGateways: number;
usedGateways: number;
};
loadbalancer: {
maxLoadbalancers: number;
usedLoadbalancers: number;
} | null;
keymanager: {
maxSecrets: number;
usedSecrets: number;
} | null;
share: any | null;
};

export const getProjectQuota = async (projectId: string) => {
const { data } = await v6.get<TProjectQuota[]>(
`/cloud/project/${projectId}/quota`,
);

return data;
};

export const useProjectQuota = (projectId: string) =>
useQuery({
queryKey: ['project', projectId, 'quota'],
queryFn: () => getProjectQuota(projectId),
});
3 changes: 2 additions & 1 deletion packages/manager-components/src/hooks/useCatalogPrice.ts
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
import { useTranslation } from 'react-i18next';
import { useContext } from 'react';
import { useTranslation } from 'react-i18next';
import { ShellContext } from '@ovh-ux/manager-react-shell-client';
import { useMe } from './useMe';

Expand Down Expand Up @@ -63,6 +63,7 @@ export const useCatalogPrice = (maximumFractionDigits?: number) => {
)}`;

return {
getTextPrice,
getFormattedCatalogPrice,
getFormattedHourlyCatalogPrice,
getFormattedMonthlyCatalogPrice,
Expand Down
49 changes: 49 additions & 0 deletions packages/manager-components/src/hooks/useProjectRegions.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,49 @@
import { fetchIcebergV6 } from '@ovh-ux/manager-core-api';
import { useQuery } from '@tanstack/react-query';

type TRegionService = {
endpoint: string;
name: string;
status: string;
};

export type TRegion = {
continentCode: string;
datacenterLocation: string;
name: string;
status: string;
type: string;
ipCountries: string[];
services: TRegionService[];
};

export const getProjectRegions = async (
projectId: string,
): Promise<TRegion[]> => {
const { data } = await fetchIcebergV6<TRegion>({
route: `/cloud/project/${projectId}/region`,
});
return data;
};

export const useProjectRegions = (projectId: string) =>
useQuery({
queryKey: ['project', projectId, 'regions'],
queryFn: () => getProjectRegions(projectId),
});

export const useProjectLocalRegions = (projectId: string) =>
useQuery({
queryKey: ['project', projectId, 'regions', 'local'],
queryFn: () => getProjectRegions(projectId),
select: (regions) =>
regions.filter(({ type = [] }) => type === 'localzone'),
});

export const useProjectNonLocalRegions = (projectId: string) =>
useQuery({
queryKey: ['project', projectId, 'regions', 'non-local'],
queryFn: () => getProjectRegions(projectId),
select: (regions) =>
regions.filter(({ type = [] }) => type !== 'localzone'),
});
4 changes: 2 additions & 2 deletions packages/manager/apps/pci-block-storage/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -56,12 +56,12 @@
"@vitejs/plugin-react": "^4.3.0",
"@vitest/coverage-v8": "^1.6.0",
"autoprefixer": "^10.4.19",
"eslint": "^9.4.0",
"eslint": "^8.56.0",
"postcss": "^8.4.38",
"rollup": "^4.18.0",
"tailwindcss": "^3.4.4",
"typescript": "^5.4.5",
"vite": "^5.2.12",
"vite": "^5.2.12",
"vitest": "^1.6.0"
},
"regions": [
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
{
"pci_projects_project_storages_blocks_block_edit_title": "Volume bearbeiten",
"pci_projects_project_storages_blocks_block_edit_submit_label": "Volume bearbeiten",
"pci_projects_project_storages_blocks_block_edit_success_message": "Das Volume {{volume}} wurde aktualisiert.",
"pci_projects_project_storages_blocks_block_edit_error_put": "Bei der Aktualisierung des Volumes {{ volume }} ist ein Fehler aufgetreten: {{ message }}",
"pci_projects_project_storages_blocks_block_edit_error_upsize": "Bei der Änderung der Kapazität des Volumes {{ volume }} ist ein Fehler aufgetreten: {{ message }}",
"pci_projects_project_storages_blocks_block_edit_error_load": "Beim Laden des Volumes ist ein Fehler aufgetreten: {{ message }}"
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
{
"pci_projects_project_storages_blocks_block_edit_title": "Edit a volume",
"pci_projects_project_storages_blocks_block_edit_submit_label": "Modify the volume",
"pci_projects_project_storages_blocks_block_edit_success_message": "The {{volume}} volume has been updated. ",
"pci_projects_project_storages_blocks_block_edit_error_put": "An error has occurred updating the {{ volume }} volume: {{ message }}.",
"pci_projects_project_storages_blocks_block_edit_error_upsize": "An error has occurred changing the capacity for the {{ volume }} volume: {{ message }}.",
"pci_projects_project_storages_blocks_block_edit_error_load": "An error has occurred loading the volume: {{message}}."
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
{
"pci_projects_project_storages_blocks_block_edit_title": "Editar un volumen",
"pci_projects_project_storages_blocks_block_edit_submit_label": "Modificar el volumen",
"pci_projects_project_storages_blocks_block_edit_success_message": "Se ha actualizado el volumen {{ volume }}.",
"pci_projects_project_storages_blocks_block_edit_error_put": "Se ha producido un error al actualizar el volumen {{ volume }}: {{ message }}.",
"pci_projects_project_storages_blocks_block_edit_error_upsize": "Se ha producido un error al cambiar la capacidad del volumen {{ volume }}: {{ message }}.",
"pci_projects_project_storages_blocks_block_edit_error_load": "Se ha producido un error al cargar el volumen: {{ message }}."
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
{
"pci_projects_project_storages_blocks_block_edit_title": "Editer un volume",

"pci_projects_project_storages_blocks_block_edit_submit_label": "Modifier le volume",

"pci_projects_project_storages_blocks_block_edit_success_message": "Le volume {{ volume }} a été mis à jour.",
"pci_projects_project_storages_blocks_block_edit_error_put": "Une erreur est survenue lors de la mise à jour du volume {{ volume }} : {{ message }}",
"pci_projects_project_storages_blocks_block_edit_error_upsize": "Une erreur est survenue lors du changement de la capacité du volume {{ volume }} : {{ message }}",
"pci_projects_project_storages_blocks_block_edit_error_load": "Une erreur est survenue lors du chargement du volume : {{ message }}"
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
{
"pci_projects_project_storages_blocks_block_edit_title": "Modifica un volume",
"pci_projects_project_storages_blocks_block_edit_submit_label": "Modifica il volume",
"pci_projects_project_storages_blocks_block_edit_success_message": "Il volume {{ volume }} è stato aggiornato.",
"pci_projects_project_storages_blocks_block_edit_error_put": "Si è verificato un errore durante l'aggiornamento del volume {{ volume }}: {{ message }}",
"pci_projects_project_storages_blocks_block_edit_error_upsize": "Si è verificato un errore durante il caricamento della capacità del volume {{ volume }}: {{ message }}",
"pci_projects_project_storages_blocks_block_edit_error_load": "Si è verificato un errore durante il caricamento del volume: {{ message }}"
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
{
"pci_projects_project_storages_blocks_block_edit_title": "Edytuj wolumen",
"pci_projects_project_storages_blocks_block_edit_submit_label": "Zmodyfikuj wolumen",
"pci_projects_project_storages_blocks_block_edit_success_message": "Wolumen {{volume}} został zaktualizowany.",
"pci_projects_project_storages_blocks_block_edit_error_put": "Wystąpił błąd podczas aktualizacji wolumenu {{volume}}: {{message}}.",
"pci_projects_project_storages_blocks_block_edit_error_upsize": "Wystąpił błąd podczas zmiany pojemności wolumenu {{volume}}: {{message }}.",
"pci_projects_project_storages_blocks_block_edit_error_load": "Wystąpił błąd podczas ładowania wolumenu: {{message}}."
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
{
"pci_projects_project_storages_blocks_block_edit_title": "Editar um volume",
"pci_projects_project_storages_blocks_block_edit_submit_label": "Alterar o volume",
"pci_projects_project_storages_blocks_block_edit_success_message": "O volume {{ volume }} foi atualizado.",
"pci_projects_project_storages_blocks_block_edit_error_put": "Ocorreu um erro ao atualizar o volume {{ volume }}: {{ message }}",
"pci_projects_project_storages_blocks_block_edit_error_upsize": "Ocorreu um erro ao alterar a capacidade do volume {{ volume }}: {{ message }}",
"pci_projects_project_storages_blocks_block_edit_error_load": "Ocorreu um erro ao carregar o volume: {{ message }}"
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,91 @@
{
"common_clipboard_copy_to_clipboard": "In die Zwischenablage kopieren",
"common_clipboard_copied": "Kopiert",
"common_clipboard_not_supported": "Kann nicht in die Zwischenablage kopiert werden. Bitte kopieren Sie den Text manuell",
"common_criteria_adder_column_label": "Spalte",
"common_criteria_adder_operator_label": "Bedingung",
"common_criteria_adder_operator_boolean_is": "ist",
"common_criteria_adder_operator_boolean_isNot": "ist nicht",
"common_criteria_adder_operator_string_contains": "enthält",
"common_criteria_adder_operator_string_containsNot": "enthält nicht",
"common_criteria_adder_operator_string_startsWith": "beginnt mit",
"common_criteria_adder_operator_string_endsWith": "endet auf",
"common_criteria_adder_operator_string_is": "ist gleich",
"common_criteria_adder_operator_string_isNot": "ist nicht",
"common_criteria_adder_operator_number_is": "ist gleich",
"common_criteria_adder_operator_number_smaller": "ist geringer als",
"common_criteria_adder_operator_number_bigger": "ist größer als",
"common_criteria_adder_operator_date_is": "ist",
"common_criteria_adder_operator_date_isBefore": "ist vor",
"common_criteria_adder_operator_date_isAfter": "ist nach",
"common_criteria_adder_operator_options_is": "ist",
"common_criteria_adder_operator_options_isNot": "ist nicht",
"common_criteria_adder_true_label": "Ja",
"common_criteria_adder_false_label": "Nein",
"common_criteria_adder_value_label": "Wert",
"common_criteria_adder_submit_label": "Hinzufügen",
"common_none": "Keine",
"common_datagrid_nodata": "Keine Ergebnisse",
"common_field_error_required": "Bitte füllen Sie dieses Feld aus.",
"common_field_error_number": "Bitte geben Sie einen gültigen Zahlenwert ein.",
"common_field_error_email": "Bitte geben Sie eine gültige E-Mail-Adresse ein.",
"common_field_error_min": "Bitte geben Sie einen Wert größer oder gleich {{min}} ein.",
"common_field_error_max": "Bitte geben Sie einen Wert kleiner oder gleich {{max}} ein.",
"common_field_error_minlength": "Bitte geben Sie mindestens {{minlength}} Zeichen ein.",
"common_field_error_maxlength": "Bitte geben Sie höchstens {{maxlength}} Zeichen ein.",
"common_field_error_pattern": "Bitte geben Sie ein gültiges Format ein.",
"common_navbar_notification_title": "Benachrichtigungen",
"common_navbar_notification_see_all": "Alle Benachrichtigungen anzeigen",
"common_navbar_notification_error_in_notification": "Es ist ein Fehler aufgetreten.",
"common_navbar_notification_error_in_notification_description": "Das Menü kann nicht gestartet werden.",
"common_navbar_notification_mark_as_read": "Als gelesen markieren",
"common_navbar_notification_mark_as_unread": "Als ungelesen markieren",
"common_navbar_notification_none": "Sie sind auf dem neuesten Stand.",
"common_navbar_notification_none_description": "Sie haben keine Benachrichtigungen.",
"common_open_new_tab": "Öffnet einen neuen Tab",
"common_pagination_resultsperpage": "Ergebnisse pro Seite",
"common_pagination_page": "Seite",
"common_pagination_of": "von",
"common_pagination_ofnresults": "von TOTAL_ITEMS Ergebnissen",
"common_pagination_currentpageofpagecount": "Seite CURRENT_PAGE von PAGE_COUNT",
"common_pagination_results": "Ergebnisse",
"common_pagination_next": "Nächste Seite",
"common_pagination_previous": "Vorherige Seite",
"common_choose": "Auswählen",
"common_stepper_optional_label": "(optional)",
"common_stepper_modify_this_step": "Diesen Schritt bearbeiten",
"common_stepper_skip_this_step": "Diesen Schritt überspringen",
"common_stepper_next_button_label": "Weiter",
"common_stepper_submit_button_label": "Absenden",
"common_stepper_cancel_button_label": "Abbrechen",
"common_file_attachmentsHeading": "Angehängt Datei(en)",
"common_file_dropArea": "Verschieben Sie Dateien per Drag-and-Drop oder",
"common_file_dropAreaSelector": "wählen Sie eine Datei aus",
"common_file_fileSelector": "Wählen Sie eine Datei aus",
"common_file_filesSelector": "Wählen Sie Dateien aus",
"common_file_maxsizeError": "Die Datei übersteigt die maximale Größe",
"common_file_removeFile": "Datei aus Auswahl entfernen",
"common_password_all_rules_met": "Alle Passwortregeln wurden eingehalten.",
"common_password_hide_password": "Passwort verbergen",
"common_password_show_password": "Passwort anzeigen",
"common_password_valid_rule": "Gültige Regel.",
"common_password_invalid_rule": "Ungültige Regel.",
"common_password_risky_password": "Unsicheres Passwort.",
"common_password_bad_password": "Falsches Passwort.",
"common_password_weak_password": "Schwaches Passwort.",
"common_password_good_password": "Korrektes Passwort.",
"common_password_strong_password": "Starkes Passwort.",
"common_criteria_adder_filter_label": "Filtern",
"common_back_button_back_to": "Zurück zu",
"common_back_button_back_to_previous_page": "Zurück zur vorherigen Seite ",
"common_dual_list_source_heading": "Zu wählende Elemente",
"common_dual_list_source_placeholder": "Keine zu wählenden Elemente",
"common_dual_list_source_move": "Hinzufügen",
"common_dual_list_source_move_all": "Alles hinzufügen",
"common_dual_list_source_search": "In den Quelldaten suchen",
"common_dual_list_target_heading": "Ausgewählte Elemente",
"common_dual_list_target_placeholder": "Kein Element ausgewählt",
"common_dual_list_target_move": "Löschen",
"common_dual_list_target_move_all": "Alles löschen",
"common_dual_list_target_search": "In den Zieldaten suchen"
}
Loading

0 comments on commit dde6c43

Please sign in to comment.