Skip to content

Commit

Permalink
feat: delete repository secret on unregistering repository (#75)
Browse files Browse the repository at this point in the history
  • Loading branch information
4molybdenum2 committed Jul 28, 2022
1 parent c456a8c commit 6f9106b
Show file tree
Hide file tree
Showing 3 changed files with 40 additions and 3 deletions.
3 changes: 3 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -37,3 +37,6 @@ site

# Sensitive credentials
*-credentials.yaml

# Vscode settings
.vscode
6 changes: 5 additions & 1 deletion plugins/cad/src/components/RepositoryPage/RepositoryPage.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -215,7 +215,11 @@ export const RepositoryPage = () => {
},
{
label: 'Advanced',
content: <AdvancedRepositoryOptions />,
content: (
<AdvancedRepositoryOptions
repositorySummary={repositorySummary}
/>
),
},
]}
/>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -21,8 +21,15 @@ import { useNavigate, useParams } from 'react-router-dom';
import { configAsDataApiRef } from '../../../apis';
import { rootRouteRef } from '../../../routes';
import { ConfirmationDialog } from '../../Controls/ConfirmationDialog';
import { RepositorySummary } from '../../../types/RepositorySummary';

export const AdvancedRepositoryOptions = () => {
type AdvancedRepositoryOptionsProps = {
repositorySummary: RepositorySummary;
};

export const AdvancedRepositoryOptions = ({
repositorySummary,
}: AdvancedRepositoryOptionsProps) => {
const { repositoryName } = useParams();
const api = useApi(configAsDataApiRef);

Expand All @@ -41,7 +48,30 @@ export const AdvancedRepositoryOptions = () => {
};

const executeUnregisterRepository = async (): Promise<void> => {
await api.unregisterRepository(repositoryName);
const checkUsedByOtherRepository = async (
secretName: string,
): Promise<boolean> => {
const { items: repositories } = await api.listRepositories();
const isSecretShared = repositories.some(
repository =>
repository.metadata.name !== repositoryName &&
repository.spec.git?.secretRef?.name === secretName,
);
return isSecretShared;
};

const repoSecretName =
repositorySummary.repository.spec.git?.secretRef?.name;
const repoNamespace = repositorySummary.repository.metadata.namespace;

if (repoSecretName && !(await checkUsedByOtherRepository(repoSecretName))) {
await Promise.all([
api.unregisterRepository(repositoryName),
api.deleteSecret(repoSecretName, repoNamespace),
]);
} else {
await api.unregisterRepository(repositoryName);
}
navigate(repositoriesRef());
};

Expand Down

0 comments on commit 6f9106b

Please sign in to comment.