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
37 changes: 6 additions & 31 deletions src/gitops/components/application/ApplicationDetailsTab.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@ import * as React from 'react';
import { RouteComponentProps } from 'react-router';
import classNames from 'classnames';

import { useArgoServer } from '@gitops/hooks/useArgoServer';
import {
ApplicationKind,
ApplicationModel,
Expand All @@ -11,11 +12,11 @@ import Revision from '@gitops/Revision/Revision';
import HealthStatus from '@gitops/Statuses/HealthStatus';
import { OperationState } from '@gitops/Statuses/OperationState';
import SyncStatus from '@gitops/Statuses/SyncStatus';
import { ArgoServer, getArgoServer, getFriendlyClusterName } from '@gitops/utils/gitops';
import { getApplicationArgoUrl, getFriendlyClusterName } from '@gitops/utils/gitops';
import { labelControllerNamespaceKey } from '@gitops/utils/gitops';
import { useGitOpsTranslation } from '@gitops/utils/hooks/useGitOpsTranslation';
import { useObjectModifyPermissions } from '@gitops/utils/utils';
import { k8sUpdate, ResourceLink, useK8sModel } from '@openshift-console/dynamic-plugin-sdk';
import { k8sUpdate, ResourceLink } from '@openshift-console/dynamic-plugin-sdk';
import { Label as PfLabel, ToggleGroup, ToggleGroupItem } from '@patternfly/react-core';
import {
DescriptionList,
Expand Down Expand Up @@ -43,22 +44,10 @@ type ApplicationDetailsTabProps = RouteComponentProps<{

const ApplicationDetailsTab: React.FC<ApplicationDetailsTabProps> = ({ obj }) => {
const { t } = useGitOpsTranslation();
const [model] = useK8sModel({ group: 'route.openshift.io', version: 'v1', kind: 'Route' });

const [canPatch, canUpdate] = useObjectModifyPermissions(obj, ApplicationModel);

const [argoServer, setArgoServer] = React.useState<ArgoServer>({ host: '', protocol: '' });
React.useEffect(() => {
(async () => {
getArgoServer(model, obj)
.then((server) => {
setArgoServer(server);
})
.catch((err) => {
console.error('Error:', err);
});
})();
}, [model, obj]);
const argoServer = useArgoServer(obj);
const argoUrl = getApplicationArgoUrl(argoServer, obj);
Comment thread
coderabbitai[bot] marked this conversation as resolved.

const onChangeAutomated = (event: React.MouseEvent<any> | React.KeyboardEvent | MouseEvent) => {
const id = event.currentTarget.id;
Expand Down Expand Up @@ -142,21 +131,7 @@ const ApplicationDetailsTab: React.FC<ApplicationDetailsTabProps> = ({ obj }) =>
<BaseDetailsSummary
obj={obj}
model={ApplicationModel}
nameLink={
<>
<ArgoCDLink
href={
argoServer.protocol +
'://' +
argoServer.host +
'/applications/' +
obj?.metadata?.namespace +
'/' +
obj?.metadata?.name
}
/>
</>
}
nameLink={argoUrl ? <ArgoCDLink href={argoUrl} /> : undefined}
/>
</FlexItem>
</Flex>
Expand Down
6 changes: 5 additions & 1 deletion src/gitops/components/application/ApplicationNavPage.tsx
Original file line number Diff line number Diff line change
@@ -1,7 +1,9 @@
import * as React from 'react';

import { useApplicationActionsProvider } from '@gitops/hooks/useApplicationActionsProvider';
import { useArgoServer } from '@gitops/hooks/useArgoServer';
import { ApplicationKind, ApplicationModel } from '@gitops/models/ApplicationModel';
import { getApplicationArgoUrl } from '@gitops/utils/gitops';
import { useGitOpsTranslation } from '@gitops/utils/hooks/useGitOpsTranslation';
import { HorizontalNav, useK8sWatchResource } from '@openshift-console/dynamic-plugin-sdk';
import { Bullseye, Spinner } from '@patternfly/react-core';
Expand Down Expand Up @@ -35,7 +37,9 @@ const ApplicationNavPage: React.FC<ApplicationPageProps> = ({ name, namespace, k
namespace,
});

const [actions] = useApplicationActionsProvider(application);
const argoServer = useArgoServer(application);
const argoUrl = getApplicationArgoUrl(argoServer, application);
const [actions] = useApplicationActionsProvider(application, argoUrl);

const pages = React.useMemo(
() => [
Expand Down
47 changes: 6 additions & 41 deletions src/gitops/components/application/ApplicationResourcesTab.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@ import * as React from 'react';
import { RouteComponentProps } from 'react-router';
import classNames from 'classnames';

import { useArgoServer } from '@gitops/hooks/useArgoServer';
import { useResourceActionsProvider } from '@gitops/hooks/useResourceActionsProvider';
import HealthStatus from '@gitops/Statuses/HealthStatus';
import SyncStatus from '@gitops/Statuses/SyncStatus';
Expand All @@ -15,7 +16,6 @@ import {
ResourceLink,
RowFilter,
RowFilterItem,
useK8sModel,
useListPageFilter,
} from '@openshift-console/dynamic-plugin-sdk';
import {
Expand All @@ -33,7 +33,7 @@ import { DataViewTh, DataViewTr } from '@patternfly/react-data-view/dist/esm/Dat
import { CubesIcon } from '@patternfly/react-icons';
import { Tbody, Td, Tr } from '@patternfly/react-table';

import { ArgoServer, getArgoServer } from '../../utils/gitops';
import { getApplicationArgoUrl } from '../../utils/gitops';
import ArgoCDLink from '../shared/ArgoCDLink/ArgoCDLink';
import { GitOpsDataViewTable, useGitOpsDataViewSort } from '../shared/DataView';

Expand All @@ -47,21 +47,8 @@ type ApplicationResourcesTabProps = RouteComponentProps<{
};

const ApplicationResourcesTab: React.FC<ApplicationResourcesTabProps> = ({ obj }) => {
const [model] = useK8sModel({ group: 'route.openshift.io', version: 'v1', kind: 'Route' });

const [argoServer, setArgoServer] = React.useState<ArgoServer>({ host: '', protocol: '' });

React.useEffect(() => {
(async () => {
getArgoServer(model, obj)
.then((server) => {
setArgoServer(server);
})
.catch((err) => {
console.error('Error:', err);
});
})();
}, [model, obj]);
const argoServer = useArgoServer(obj);
const argoUrl = getApplicationArgoUrl(argoServer, obj);
Comment thread
coderabbitai[bot] marked this conversation as resolved.

let resources: ApplicationResourceStatus[];
if (obj?.status?.resources) {
Expand Down Expand Up @@ -91,17 +78,7 @@ const ApplicationResourcesTab: React.FC<ApplicationResourcesTabProps> = ({ obj }
const memoizedFilteredResources = React.useMemo(() => [...filteredData], [filteredData]);
const isEmptyResources = memoizedFilteredResources.length === 0;

const rows = useResourceRowsDV(
memoizedFilteredResources,
obj,
argoServer.protocol +
'://' +
argoServer.host +
'/applications/' +
obj?.metadata?.namespace +
'/' +
obj?.metadata?.name,
);
const rows = useResourceRowsDV(memoizedFilteredResources, obj, argoUrl);

const empty = (
<Tbody>
Expand Down Expand Up @@ -134,19 +111,7 @@ const ApplicationResourcesTab: React.FC<ApplicationResourcesTabProps> = ({ obj }
</Flex>
<PageBody>
<Flex style={{ marginTop: '15px' }} flex={{ default: 'flexDefault' }}>
<FlexItem>
<ArgoCDLink
href={
argoServer.protocol +
'://' +
argoServer.host +
'/applications/' +
obj?.metadata?.namespace +
'/' +
obj?.metadata?.name
}
/>
</FlexItem>
<FlexItem>{argoUrl ? <ArgoCDLink href={argoUrl} /> : <></>}</FlexItem>
</Flex>
<>
{obj.metadata && (
Expand Down
51 changes: 17 additions & 34 deletions src/gitops/components/application/ApplicationSourcesTab.tsx
Original file line number Diff line number Diff line change
@@ -1,15 +1,15 @@
import * as React from 'react';
import { RouteComponentProps } from 'react-router';

import { useArgoServer } from '@gitops/hooks/useArgoServer';
import { ApplicationKind, ApplicationSource } from '@gitops/models/ApplicationModel';
import ExternalLink from '@gitops/utils/components/ExternalLink/ExternalLink';
import { GitIcon } from '@gitops/utils/components/Icons/GitIcon';
import { HelmIcon } from '@gitops/utils/components/Icons/HelmIcon';
import { OciIcon } from '@gitops/utils/components/Icons/OciIcon';
import { ArgoServer, getArgoServer } from '@gitops/utils/gitops';
import { ArgoServer, getApplicationArgoUrl } from '@gitops/utils/gitops';
import { t } from '@gitops/utils/hooks/useGitOpsTranslation';
import { repoUrl, revisionUrl } from '@gitops/utils/urls';
import { useK8sModel } from '@openshift-console/dynamic-plugin-sdk';
import {
EmptyState,
EmptyStateBody,
Expand Down Expand Up @@ -182,6 +182,7 @@ export const useRowsDV = (sources: ApplicationSource[]): DataViewTr[] => {
export const SourceList: React.FC<SourceListProps> = ({ sources, obj, argoServer }) => {
const columns = useColumnsDV();
const rows = useRowsDV(sources);
const argoUrl = getApplicationArgoUrl(argoServer, obj);
const empty = (
<Tbody>
<Tr key="loading" ouiaId="table-tr-loading">
Expand All @@ -197,23 +198,19 @@ export const SourceList: React.FC<SourceListProps> = ({ sources, obj, argoServer
);
return (
<>
<ArgoCDLink
href={
argoServer.protocol +
'://' +
argoServer.host +
'/applications/' +
obj?.metadata?.namespace +
'/' +
obj?.metadata?.name +
'?resource=&node=argoproj.io%2FApplication%2F' +
obj?.metadata?.namespace +
'%2F' +
obj?.metadata?.name +
'%2F' +
'&tab=parameters'
}
/>
{argoUrl && (
<ArgoCDLink
href={
argoUrl +
'?resource=&node=argoproj.io%2FApplication%2F' +
obj?.metadata?.namespace +
'%2F' +
obj?.metadata?.name +
'%2F' +
'&tab=parameters'
}
/>
)}
<GitOpsDataViewTable
rows={rows}
columns={columns}
Expand All @@ -225,7 +222,7 @@ export const SourceList: React.FC<SourceListProps> = ({ sources, obj, argoServer
};

const ApplicationSourcesTab: React.FC<ApplicationDetailsTabProps> = ({ obj }) => {
const [model] = useK8sModel({ group: 'route.openshift.io', version: 'v1', kind: 'Route' });
const argoServer = useArgoServer(obj);

let sources: ApplicationSource[];
if (obj?.spec?.source) {
Expand All @@ -237,20 +234,6 @@ const ApplicationSourcesTab: React.FC<ApplicationDetailsTabProps> = ({ obj }) =>
sources = [];
}

const [argoServer, setArgoServer] = React.useState<ArgoServer>({ host: '', protocol: '' });

React.useEffect(() => {
(async () => {
getArgoServer(model, obj)
.then((server) => {
setArgoServer(server);
})
.catch((err) => {
console.error('Error:', err);
});
})();
}, [model, obj]);

return (
<div>
<PageSection
Expand Down
33 changes: 5 additions & 28 deletions src/gitops/components/application/ApplicationSyncStatusTab.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -2,19 +2,19 @@ import * as React from 'react';
import { RouteComponentProps } from 'react-router';
import classNames from 'classnames';

import { useArgoServer } from '@gitops/hooks/useArgoServer';
import { useResourceActionsProvider } from '@gitops/hooks/useResourceActionsProvider';
import { OperationState } from '@gitops/Statuses/OperationState';
import SyncStatus from '@gitops/Statuses/SyncStatus';
import ActionDropDown from '@gitops/utils/components/ActionDropDown/ActionDropDown';
import { ArgoServer, getArgoServer, getDuration } from '@gitops/utils/gitops';
import { getApplicationArgoUrl, getDuration } from '@gitops/utils/gitops';
import { t } from '@gitops/utils/hooks/useGitOpsTranslation';
import { ApplicationKind, ApplicationResourceStatus } from '@gitops-models/ApplicationModel';
import {
Action,
K8sGroupVersionKind,
ResourceLink,
Timestamp,
useK8sModel,
} from '@openshift-console/dynamic-plugin-sdk';
import {
DescriptionList,
Expand Down Expand Up @@ -49,21 +49,8 @@ type ApplicationSyncStatusTabProps = RouteComponentProps<{
};

const ApplicationSyncStatusTab: React.FC<ApplicationSyncStatusTabProps> = ({ obj }) => {
const [model] = useK8sModel({ group: 'route.openshift.io', version: 'v1', kind: 'Route' });

const [argoServer, setArgoServer] = React.useState<ArgoServer>({ host: '', protocol: '' });

React.useEffect(() => {
(async () => {
getArgoServer(model, obj)
.then((server) => {
setArgoServer(server);
})
.catch((err) => {
console.error('Error:', err);
});
})();
}, [model, obj]);
const argoServer = useArgoServer(obj);
const argoUrl = getApplicationArgoUrl(argoServer, obj);

let resources: ApplicationResourceStatus[];
if (obj?.status?.operationState?.syncResult?.resources) {
Expand All @@ -83,17 +70,7 @@ const ApplicationSyncStatusTab: React.FC<ApplicationSyncStatusTabProps> = ({ obj
return sortData(resources, sortBy, direction);
}, [resources, sortBy, direction]);

const rows = useResourceRowsDV(
sortedResources,
obj,
argoServer.protocol +
'://' +
argoServer.host +
'/applications/' +
obj?.metadata?.namespace +
'/' +
obj?.metadata?.name,
);
const rows = useResourceRowsDV(sortedResources, obj, argoUrl);

const empty = (
<Tbody>
Expand Down
Loading
Loading