Skip to content

Commit

Permalink
tmp
Browse files Browse the repository at this point in the history
  • Loading branch information
Thuan Vo committed Feb 22, 2023
1 parent 1a3c8a4 commit 96ab6c0
Show file tree
Hide file tree
Showing 2 changed files with 118 additions and 0 deletions.
22 changes: 22 additions & 0 deletions src/app/Topology/SideBar/EntityDetails.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -36,6 +36,9 @@
* SOFTWARE.
*/

import { ActiveRecording } from '@app/Shared/Services/Api.service';
import { ServiceContext } from '@app/Shared/Services/Services';
import { useSubscriptions } from '@app/utils/useSubscriptions';
import {
Alert,
AlertActionCloseButton,
Expand Down Expand Up @@ -236,9 +239,28 @@ export const RealmDetails: React.FC<{ envNode: EnvironmentNode }> = ({ envNode,
};

export const TargetResources: React.FC<{ targetNode: TargetNode }> = ({ targetNode, ...props }) => {
const context = React.useContext(ServiceContext);
const addSubscription = useSubscriptions();
const target = targetNode.target;

// const [activeRecordings, setActiveRecordings] =

const getActiveRecordings = React.useCallback(() => {
context.api.doGet<ActiveRecording[]>(`targets/${encodeURIComponent(target.connectUrl)}/recordings`);
}, [target]);

const getArchivesRecordings = React.useCallback(() => {}, []);

const getEventTemplates = React.useCallback(() => {}, []);

return <>TODO: Query resources</>;
};

export const TargetResourceItem: React.FC<{
}> = ({ ...props }) => {
return <div {...props}></div>;
};

export const RealmResources: React.FC<{ envNode: EnvironmentNode }> = ({ envNode, ...props }) => {
return (
<Stack hasGutter {...props}>
Expand Down
96 changes: 96 additions & 0 deletions src/app/Topology/SideBar/utils.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,96 @@
/*
* Copyright The Cryostat Authors
*
* The Universal Permissive License (UPL), Version 1.0
*
* Subject to the condition set forth below, permission is hereby granted to any
* person obtaining a copy of this software, associated documentation and/or data
* (collectively the "Software"), free of charge and under any and all copyright
* rights in the Software, and any and all patent rights owned or freely
* licensable by each licensor hereunder covering either (i) the unmodified
* Software as contributed to or provided by such licensor, or (ii) the Larger
* Works (as defined below), to deal in both
*
* (a) the Software, and
* (b) any piece of software and/or hardware listed in the lrgrwrks.txt file if
* one is included with the Software (each a "Larger Work" to which the Software
* is contributed by such licensors),
*
* without restriction, including without limitation the rights to copy, create
* derivative works of, display, perform, and distribute the Software and make,
* use, sell, offer for sale, import, export, have made, and have sold the
* Software and the Larger Work(s), and to sublicense the foregoing rights on
* either these or other terms.
*
* This license is subject to the following condition:
* The above copyright notice and either this complete permission notice or at
* a minimum a reference to the UPL must be included in all copies or
* substantial portions of the Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
* SOFTWARE.
*/
import { ApiService, UPLOADS_SUBDIRECTORY } from "@app/Shared/Services/Api.service";
import { Observable } from "rxjs";
import { TargetNode } from "../typings";

export type TargetOwnedResourceType =
| 'activeRecordings'
| 'archivedRecordings'
| 'archivedUploadRecordings'
| 'eventTemplates'
| 'eventTypes'
| 'agentProbes';

export const getTargetOwnedResources = <T>(resourceType: TargetOwnedResourceType, { target }: TargetNode, apiService: ApiService): Observable<T> => {
switch(resourceType) {
case 'activeRecordings':
return apiService.doGet<T>(`targets/${encodeURIComponent(target.connectUrl)}/recordings`);
case 'archivedRecordings':
return apiService.graphql<T>(
`
query ArchivedRecordingsForTarget($connectUrl: String) {
archivedRecordings(filter: { sourceTarget: $connectUrl }) {
data {
name
downloadUrl
reportUrl
metadata {
labels
}
size
}
}
}`,
{ connectUrl: target.connectUrl }
);
case 'archivedUploadRecordings':
return apiService.graphql<T>(
`query UploadedRecordings($filter: ArchivedRecordingFilterInput){
archivedRecordings(filter: $filter) {
data {
name
downloadUrl
reportUrl
metadata {
labels
}
size
}
}
}`,
{ filter: { sourceTarget: UPLOADS_SUBDIRECTORY } }
);
case 'eventTemplates':
return apiService.doGet<T>(`targets/${encodeURIComponent(target.connectUrl)}/templates`);
case 'eventTypes':
return apiService.doGet<T>(`targets/${encodeURIComponent(target.connectUrl)}/events`);
default:
throw new Error(`Unsupported target resources: ${resourceType}`);
}
};

0 comments on commit 96ab6c0

Please sign in to comment.