Explorar el Código

Merge branch 'master' into stacks-invalidate-old-porter-yaml

Feroze Mohideen hace 2 años
padre
commit
b0e685cc7b

+ 1 - 3
api/server/handlers/porter_app/rollback.go

@@ -68,9 +68,7 @@ func (c *RollbackPorterAppHandler) ServeHTTP(w http.ResponseWriter, r *http.Requ
 
 	imageInfo := attemptToGetImageInfoFromRelease(helmRelease.Config)
 	if imageInfo.Tag == "" {
-		err = telemetry.Error(ctx, span, err, "error getting image info from release")
-		c.HandleAPIError(w, r, apierrors.NewErrPassThroughToClient(err, http.StatusInternalServerError))
-		return
+		imageInfo.Tag = "latest"
 	}
 
 	porterApp, err := c.Repo().PorterApp().ReadPorterAppByName(cluster.ID, stackName)

+ 16 - 7
dashboard/src/components/porter/ConfirmOverlay.tsx

@@ -1,3 +1,4 @@
+import Loading from "components/Loading";
 import React from "react";
 import { createPortal } from "react-dom";
 import styled from "styled-components";
@@ -6,23 +7,31 @@ type Props = {
   message: string;
   onYes: React.MouseEventHandler;
   onNo: React.MouseEventHandler;
+  loading?: boolean;
 };
 
-const TemplateComponent: React.FC<Props> = ({
+const ConfirmOverlay: React.FC<Props> = ({
   message,
   onYes,
   onNo,
+  loading,
 }) => {
   return (
     <>
       {
         createPortal(
           <StyledConfirmOverlay>
-            {message}
-            <ButtonRow>
-              <ConfirmButton onClick={onYes}>Yes</ConfirmButton>
-              <ConfirmButton onClick={onNo}>No</ConfirmButton>
-            </ButtonRow>
+            {loading ? (
+              <Loading />
+            ) : (
+              <>
+                {message}
+                <ButtonRow>
+                  <ConfirmButton onClick={onYes}>Yes</ConfirmButton>
+                  <ConfirmButton onClick={onNo}>No</ConfirmButton>
+                </ButtonRow>
+              </>
+            )}
           </StyledConfirmOverlay>,
           document.body
         )
@@ -31,7 +40,7 @@ const TemplateComponent: React.FC<Props> = ({
   );
 };
 
-export default TemplateComponent;
+export default ConfirmOverlay;
 
 const StyledConfirmOverlay = styled.div`
   position: absolute;

+ 1 - 37
dashboard/src/main/home/app-dashboard/expanded-app/ExpandedApp.tsx

@@ -46,7 +46,6 @@ import { PorterYamlSchema } from "../new-app-flow/schema";
 import { EnvVariablesTab } from "./EnvVariablesTab";
 import GHABanner from "./GHABanner";
 import LogSection from "./LogSection";
-import EventsTab from "./EventsTab";
 import ActivityFeed from "./activity-feed/ActivityFeed";
 import JobRuns from "./JobRuns";
 import MetricsSection from "./MetricsSection";
@@ -747,8 +746,6 @@ const ExpandedApp: React.FC<Props> = ({ ...props }) => {
             </Button>
           </>
         );
-      case "events":
-        return <EventsTab currentChart={appData.chart} />;
       case "activity":
         return (
           <ActivityFeed
@@ -776,35 +773,6 @@ const ExpandedApp: React.FC<Props> = ({ ...props }) => {
             clearStatus={() => setButtonStatus("")}
           />
         );
-      case "pre-deploy":
-        return (
-          <>
-            {!isLoading && !services.some(Service.isRelease) && (
-              <>
-                <Fieldset>
-                  <Container row>
-                    <PlaceholderIcon src={notFound} />
-                    <Text color="helper">
-                      No pre-deploy jobs were found. You can add a pre-deploy
-                      job in the Overview tab to perform an operation before
-                      your application services deploy, like a database
-                      migration.
-                    </Text>
-                  </Container>
-                </Fieldset>
-                <Spacer y={0.5} />
-              </>
-            )}
-            {services.some(Service.isRelease) && (
-              <JobRuns
-                lastRunStatus="all"
-                namespace={appData.chart?.namespace}
-                sortType="Newest"
-                releaseName={appData.app.name + "-r"}
-              />
-            )}
-          </>
-        );
       default:
         return <div>Tab not found</div>;
     }
@@ -1042,17 +1010,13 @@ const ExpandedApp: React.FC<Props> = ({ ...props }) => {
                 </Banner>
               </AnimateHeight>
               <TabSelector
+                noBuffer
                 options={[
                   { label: "Overview", value: "overview" },
                   featurePreview && { label: "Activity", value: "activity" },
-                  hasBuiltImage && { label: "Events", value: "events" },
                   hasBuiltImage && { label: "Logs", value: "logs" },
                   hasBuiltImage && { label: "Metrics", value: "metrics" },
                   hasBuiltImage && { label: "Debug", value: "status" },
-                  appData.app.git_repo_id && {
-                    label: "Pre-deploy logs",
-                    value: "pre-deploy",
-                  },
                   {
                     label: "Environment",
                     value: "environment-variables",

+ 21 - 6
dashboard/src/main/home/app-dashboard/expanded-app/activity-feed/events/DeployEventCard.tsx

@@ -16,6 +16,7 @@ import styled from "styled-components";
 import Button from "components/porter/Button";
 import api from "shared/api";
 import Link from "components/porter/Link";
+import ConfirmOverlay from "components/porter/ConfirmOverlay";
 
 type Props = {
   event: PorterAppEvent;
@@ -35,6 +36,7 @@ const DeployEventCard: React.FC<Props> = ({ event, appData }) => {
   };
 
   const revertToRevision = async (revision: number) => {
+    setLoading(true);
     try {
       await api
         .rollbackPorterApp(
@@ -50,6 +52,7 @@ const DeployEventCard: React.FC<Props> = ({ event, appData }) => {
         )
       window.location.reload();
     } catch (err) {
+      setLoading(false);
       console.log(err)
     }
   }
@@ -69,14 +72,26 @@ const DeployEventCard: React.FC<Props> = ({ event, appData }) => {
           <Icon height="16px" src={getStatusIcon(event.status)} />
           <Spacer inline width="10px" />
           {renderStatusText(event)}
-          <Spacer inline x={1} />
-          <TempWrapper>
-            <Link hasunderline onClick={() => revertToRevision(event.metadata.revision)}>
-              Revert to v{event?.metadata?.revision}
-            </Link>
-          </TempWrapper>
+          {appData?.chart?.version !== event.metadata?.revision && (
+            <>
+              <Spacer inline x={1} />
+              <TempWrapper>
+                <Link hasunderline onClick={() => setShowOverlay(true)}>
+                  Revert to v{event?.metadata?.revision}
+                </Link>
+              </TempWrapper>
+            </>
+          )}
         </Container>
       </Container>
+      {showOverlay && (
+        <ConfirmOverlay
+          loading={loading}
+          message={`Are you sure you want to revert to version no. ${event?.metadata?.revision}?`}
+          onYes={() => revertToRevision(event.metadata.revision)}
+          onNo={() => setShowOverlay(false)}
+        />
+      )}
     </StyledEventCard>
   );
 };

+ 12 - 5
dashboard/src/main/home/app-dashboard/expanded-app/activity-feed/events/PreDeployEventCard.tsx

@@ -1,4 +1,5 @@
 import React, { useState } from "react";
+import styled from "styled-components";
 
 import pre_deploy from "assets/pre_deploy.png";
 
@@ -34,9 +35,9 @@ const PreDeployEventCard: React.FC<Props> = ({ event, appData }) => {
   const renderStatusText = (event: PorterAppEvent) => {
     switch (event.status) {
       case "SUCCESS":
-        return <Text color="#68BF8B">Pre-deploy succeeded.</Text>;
+        return <Text color="#68BF8B">Pre-deploy succeeded</Text>;
       case "FAILED":
-        return <Text color="#FF6060">Pre-deploy failed.</Text>;
+        return <Text color="#FF6060">Pre-deploy failed</Text>;
       default:
         return <Text color="#aaaabb66">Pre-deploy in progress...</Text>;
     }
@@ -93,9 +94,11 @@ const PreDeployEventCard: React.FC<Props> = ({ event, appData }) => {
           <Spacer inline width="10px" />
           {renderStatusText(event)}
           <Spacer inline x={1} />
-          <Link hasunderline onClick={getPredeployLogs}>
-            View logs
-          </Link>
+          <Wrapper>
+            <Link hasunderline onClick={getPredeployLogs}>
+              View logs
+            </Link>
+          </Wrapper>
           {event.status === "FAILED" && (
             <>
               <Spacer inline x={1} />
@@ -127,3 +130,7 @@ const PreDeployEventCard: React.FC<Props> = ({ event, appData }) => {
 };
 
 export default PreDeployEventCard;
+
+const Wrapper = styled.div`
+  margin-top: -3px;
+`;