|
|
@@ -38,9 +38,9 @@ type Props = {
|
|
|
};
|
|
|
|
|
|
const getReadableDate = (s: string) => {
|
|
|
- let ts = new Date(s);
|
|
|
- let date = ts.toLocaleDateString();
|
|
|
- let time = ts.toLocaleTimeString([], {
|
|
|
+ const ts = new Date(s);
|
|
|
+ const date = ts.toLocaleDateString();
|
|
|
+ const time = ts.toLocaleTimeString([], {
|
|
|
hour: "numeric",
|
|
|
minute: "2-digit",
|
|
|
});
|
|
|
@@ -72,12 +72,12 @@ const ExpandedChart: React.FC<Props> = (props) => {
|
|
|
const [imageIsPlaceholder, setImageIsPlaceholer] = useState<boolean>(false);
|
|
|
const [newestImage, setNewestImage] = useState<string>(null);
|
|
|
const [isLoadingChartData, setIsLoadingChartData] = useState<boolean>(true);
|
|
|
- const [showRepoTooltip, setShowRepoTooltip] = useState(false);
|
|
|
const [isAuthorized] = useAuth();
|
|
|
const [fullScreenLogs, setFullScreenLogs] = useState<boolean>(false);
|
|
|
const [isFullscreen, setIsFullscreen] = useState<boolean>(false);
|
|
|
- const [logData, setLogData] = useState<InitLogData>();
|
|
|
+ const [logData, setLogData] = useState<InitLogData>({});
|
|
|
const [overrideCurrentTab, setOverrideCurrentTab] = useState("");
|
|
|
+ const [isAgentInstalled, setIsAgentInstalled] = useState<boolean>(false);
|
|
|
|
|
|
const {
|
|
|
isStack,
|
|
|
@@ -180,7 +180,7 @@ const ExpandedChart: React.FC<Props> = (props) => {
|
|
|
const wsConfig = {
|
|
|
onmessage(evt: MessageEvent) {
|
|
|
const event = JSON.parse(evt.data);
|
|
|
- let object = event.Object;
|
|
|
+ const object = event.Object;
|
|
|
object.metadata.kind = event.Kind;
|
|
|
|
|
|
if (event.event_type != "UPDATE") {
|
|
|
@@ -247,11 +247,11 @@ const ExpandedChart: React.FC<Props> = (props) => {
|
|
|
values = currentChart.config;
|
|
|
}
|
|
|
|
|
|
- for (let key in rawValues) {
|
|
|
+ for (const key in rawValues) {
|
|
|
_.set(values, key, rawValues[key]);
|
|
|
}
|
|
|
|
|
|
- let valuesYaml = yaml.dump({
|
|
|
+ const valuesYaml = yaml.dump({
|
|
|
...values,
|
|
|
});
|
|
|
|
|
|
@@ -364,9 +364,9 @@ const ExpandedChart: React.FC<Props> = (props) => {
|
|
|
const handleUpgradeVersion = useCallback(
|
|
|
async (version: string, cb: () => void) => {
|
|
|
// convert current values to yaml
|
|
|
- let values = currentChart.config;
|
|
|
+ const values = currentChart.config;
|
|
|
|
|
|
- let valuesYaml = yaml.dump({
|
|
|
+ const valuesYaml = yaml.dump({
|
|
|
...values,
|
|
|
});
|
|
|
|
|
|
@@ -398,7 +398,7 @@ const ExpandedChart: React.FC<Props> = (props) => {
|
|
|
|
|
|
cb && cb();
|
|
|
} catch (err) {
|
|
|
- let parsedErr = err?.response?.data?.error;
|
|
|
+ const parsedErr = err?.response?.data?.error;
|
|
|
|
|
|
if (parsedErr) {
|
|
|
err = parsedErr;
|
|
|
@@ -418,16 +418,22 @@ const ExpandedChart: React.FC<Props> = (props) => {
|
|
|
);
|
|
|
|
|
|
const renderTabContents = (currentTab: string) => {
|
|
|
- let { setSidebar } = props;
|
|
|
- let chart = currentChart;
|
|
|
+ const { setSidebar } = props;
|
|
|
+ const chart = currentChart; // // Reset the logData when navigating to a different tab
|
|
|
+
|
|
|
switch (currentTab) {
|
|
|
case "logs":
|
|
|
+ if (!isAgentInstalled) {
|
|
|
+ return null;
|
|
|
+ }
|
|
|
+
|
|
|
return (
|
|
|
<LogsSection
|
|
|
currentChart={chart}
|
|
|
isFullscreen={isFullscreen}
|
|
|
setIsFullscreen={setIsFullscreen}
|
|
|
initData={logData}
|
|
|
+ setInitData={setLogData}
|
|
|
/>
|
|
|
);
|
|
|
case "metrics":
|
|
|
@@ -547,7 +553,10 @@ const ExpandedChart: React.FC<Props> = (props) => {
|
|
|
currentChart.chart.metadata.name === "job")
|
|
|
) {
|
|
|
leftTabOptions.push({ label: "Events", value: "events" });
|
|
|
- leftTabOptions.push({ label: "Logs", value: "logs" });
|
|
|
+
|
|
|
+ if (isAgentInstalled) {
|
|
|
+ leftTabOptions.push({ label: "Logs", value: "logs" });
|
|
|
+ }
|
|
|
}
|
|
|
leftTabOptions.push({ label: "Status", value: "status" });
|
|
|
|
|
|
@@ -578,7 +587,7 @@ const ExpandedChart: React.FC<Props> = (props) => {
|
|
|
|
|
|
// Filter tabs if previewing an old revision or updating the chart version
|
|
|
if (isPreview) {
|
|
|
- let liveTabs = ["status", "events", "settings", "deploy", "metrics"];
|
|
|
+ const liveTabs = ["status", "events", "settings", "deploy", "metrics"];
|
|
|
rightTabOptions = rightTabOptions.filter(
|
|
|
(tab: any) => !liveTabs.includes(tab.value)
|
|
|
);
|
|
|
@@ -697,6 +706,58 @@ const ExpandedChart: React.FC<Props> = (props) => {
|
|
|
}
|
|
|
};
|
|
|
|
|
|
+ // Check if porter agent is installed. If not installed hide the `Logs` component
|
|
|
+ useEffect(() => {
|
|
|
+ api
|
|
|
+ .detectPorterAgent(
|
|
|
+ "<token>",
|
|
|
+ {},
|
|
|
+ {
|
|
|
+ project_id: currentProject.id,
|
|
|
+ cluster_id: currentCluster.id,
|
|
|
+ }
|
|
|
+ )
|
|
|
+ .then(() => setIsAgentInstalled(true))
|
|
|
+ .catch((err) => {
|
|
|
+ setIsAgentInstalled(false);
|
|
|
+
|
|
|
+ if (err.status !== 404) {
|
|
|
+ setCurrentError(
|
|
|
+ "We could not detect the Porter agent installation status, please try again."
|
|
|
+ );
|
|
|
+ }
|
|
|
+ });
|
|
|
+ }, []);
|
|
|
+
|
|
|
+ useEffect(() => {
|
|
|
+ if (logData.revision) {
|
|
|
+ api
|
|
|
+ .getRevisions(
|
|
|
+ "<token>",
|
|
|
+ {},
|
|
|
+ {
|
|
|
+ id: currentProject.id,
|
|
|
+ namespace: props.currentChart.namespace,
|
|
|
+ cluster_id: currentCluster.id,
|
|
|
+ name: props.currentChart.name,
|
|
|
+ }
|
|
|
+ )
|
|
|
+ .then((res) => {
|
|
|
+ const chart = res.data?.find(
|
|
|
+ (revision: ChartType) =>
|
|
|
+ revision.version.toString() === logData.revision
|
|
|
+ );
|
|
|
+
|
|
|
+ setCurrentChart(chart ?? props.currentChart);
|
|
|
+ })
|
|
|
+ .catch(console.log);
|
|
|
+
|
|
|
+ return;
|
|
|
+ }
|
|
|
+
|
|
|
+ setCurrentChart(props.currentChart);
|
|
|
+ }, [logData, props.currentChart]);
|
|
|
+
|
|
|
useEffect(() => {
|
|
|
window.analytics?.track("Opened Chart", {
|
|
|
chart: currentChart.name,
|
|
|
@@ -723,7 +784,7 @@ const ExpandedChart: React.FC<Props> = (props) => {
|
|
|
useEffect(() => {
|
|
|
updateTabs();
|
|
|
localStorage.setItem("devOpsMode", devOpsMode.toString());
|
|
|
- }, [devOpsMode, currentChart?.form, isPreview]);
|
|
|
+ }, [devOpsMode, currentChart?.form, isPreview, isAgentInstalled]);
|
|
|
|
|
|
useEffect((): any => {
|
|
|
let isSubscribed = true;
|
|
|
@@ -908,6 +969,12 @@ const ExpandedChart: React.FC<Props> = (props) => {
|
|
|
},
|
|
|
}}
|
|
|
overrideCurrentTab={overrideCurrentTab}
|
|
|
+ onTabChange={(newTab) => {
|
|
|
+ if (newTab !== "logs") {
|
|
|
+ setOverrideCurrentTab("");
|
|
|
+ setLogData({});
|
|
|
+ }
|
|
|
+ }}
|
|
|
/>
|
|
|
</BodyWrapper>
|
|
|
)}
|