1
0
Fork 0
mirror of https://github.com/portainer/portainer.git synced 2025-08-02 04:15:28 +02:00

fix(edge/templates): fix issues with git templates [EE-6357] (#10679)

This commit is contained in:
Chaim Lev-Ari 2023-12-04 08:46:44 +02:00 committed by GitHub
parent 974378c9b5
commit 2a18c9f215
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
16 changed files with 201 additions and 116 deletions

View file

@ -27,14 +27,13 @@ import { EdgeGroup } from '@/react/edge/edge-groups/types';
import { DeploymentType, EdgeStack } from '@/react/edge/edge-stacks/types';
import { EdgeGroupsSelector } from '@/react/edge/edge-stacks/components/EdgeGroupsSelector';
import { EdgeStackDeploymentTypeSelector } from '@/react/edge/edge-stacks/components/EdgeStackDeploymentTypeSelector';
import { useCurrentUser } from '@/react/hooks/useUser';
import { useCreateGitCredentialMutation } from '@/react/portainer/account/git-credentials/git-credentials.service';
import { notifyError, notifySuccess } from '@/portainer/services/notifications';
import { notifySuccess } from '@/portainer/services/notifications';
import { EnvironmentType } from '@/react/portainer/environments/types';
import { Registry } from '@/react/portainer/registries/types';
import { useRegistries } from '@/react/portainer/registries/queries/useRegistries';
import { RelativePathFieldset } from '@/react/portainer/gitops/RelativePathFieldset/RelativePathFieldset';
import { parseRelativePathResponse } from '@/react/portainer/gitops/RelativePathFieldset/utils';
import { useSaveCredentialsIfRequired } from '@/react/portainer/account/git-credentials/queries/useCreateGitCredentialsMutation';
import { LoadingButton } from '@@/buttons';
import { FormSection } from '@@/form-components/FormSection';
@ -65,8 +64,8 @@ interface FormValues {
export function GitForm({ stack }: { stack: EdgeStack }) {
const router = useRouter();
const updateStackMutation = useUpdateEdgeStackGitMutation();
const saveCredentialsMutation = useCreateGitCredentialMutation();
const { user } = useCurrentUser();
const { saveCredentials, isLoading: isSaveCredentialsLoading } =
useSaveCredentialsIfRequired();
if (!stack.GitConfig) {
return null;
@ -95,7 +94,9 @@ export function GitForm({ stack }: { stack: EdgeStack }) {
onUpdateSettingsClick={handleUpdateSettings}
gitPath={gitConfig.ConfigFilePath}
gitUrl={gitConfig.URL}
isLoading={updateStackMutation.isLoading}
isLoading={
updateStackMutation.isLoading || isSaveCredentialsLoading
}
isUpdateVersion={!!updateStackMutation.variables?.updateVersion}
/>
);
@ -105,9 +106,7 @@ export function GitForm({ stack }: { stack: EdgeStack }) {
return;
}
const credentialId = await saveCredentialsIfRequired(
values.authentication
);
const credentialId = await saveCredentials(values.authentication);
updateStackMutation.mutate(getPayload(values, credentialId, false), {
onSuccess() {
@ -121,7 +120,7 @@ export function GitForm({ stack }: { stack: EdgeStack }) {
);
async function handleSubmit(values: FormValues) {
const credentialId = await saveCredentialsIfRequired(values.authentication);
const credentialId = await saveCredentials(values.authentication);
updateStackMutation.mutate(getPayload(values, credentialId, true), {
onSuccess() {
@ -151,29 +150,6 @@ export function GitForm({ stack }: { stack: EdgeStack }) {
...values,
};
}
async function saveCredentialsIfRequired(authentication: GitAuthModel) {
if (
!authentication.SaveCredential ||
!authentication.RepositoryPassword ||
!authentication.NewCredentialName
) {
return authentication.RepositoryGitCredentialID;
}
try {
const credential = await saveCredentialsMutation.mutateAsync({
userId: user.Id,
username: authentication.RepositoryUsername,
password: authentication.RepositoryPassword,
name: authentication.NewCredentialName,
});
return credential.id;
} catch (err) {
notifyError('Error', err as Error, 'Unable to save credentials');
return undefined;
}
}
}
function InnerForm({

View file

@ -29,7 +29,7 @@ export function PrivateRegistryFieldsetWrapper({
}) {
const dryRunMutation = useParseRegistries();
const registriesQuery = useRegistries();
const registriesQuery = useRegistries({ hideDefault: true });
if (!registriesQuery.data) {
return null;