From 60c539e6a15f2e544dfea4c885f29d0604db08ef Mon Sep 17 00:00:00 2001 From: Ioana Maniga Date: Wed, 2 Apr 2025 20:01:55 +0300 Subject: [PATCH 1/6] PMM-13746 issue a popup to advise users to migrate to PMM v3 --- .../PerconaBootstrapper.tsx | 102 ++++++++++-------- .../PerconaNewVersion.constants.ts | 11 ++ .../PerconaNewVersion.styles.ts | 22 ++++ .../PerconaNewVersion/PerconaNewVersion.tsx | 34 ++++++ .../PerconaNewVersion.types.ts | 4 + .../PerconaNewVersion/index.ts | 3 + 6 files changed, 133 insertions(+), 43 deletions(-) create mode 100644 public/app/percona/shared/components/PerconaBootstrapper/PerconaNewVersion/PerconaNewVersion.constants.ts create mode 100644 public/app/percona/shared/components/PerconaBootstrapper/PerconaNewVersion/PerconaNewVersion.styles.ts create mode 100644 public/app/percona/shared/components/PerconaBootstrapper/PerconaNewVersion/PerconaNewVersion.tsx create mode 100644 public/app/percona/shared/components/PerconaBootstrapper/PerconaNewVersion/PerconaNewVersion.types.ts create mode 100644 public/app/percona/shared/components/PerconaBootstrapper/PerconaNewVersion/index.ts diff --git a/public/app/percona/shared/components/PerconaBootstrapper/PerconaBootstrapper.tsx b/public/app/percona/shared/components/PerconaBootstrapper/PerconaBootstrapper.tsx index be1a330158e97..818e11184209e 100644 --- a/public/app/percona/shared/components/PerconaBootstrapper/PerconaBootstrapper.tsx +++ b/public/app/percona/shared/components/PerconaBootstrapper/PerconaBootstrapper.tsx @@ -1,4 +1,5 @@ import React, { useEffect, useState } from 'react'; +import { useLocalStorage } from 'react-use'; import { config } from '@grafana/runtime'; import { Button, HorizontalGroup, Icon, Modal, useStyles2, useTheme2 } from '@grafana/ui'; @@ -14,7 +15,9 @@ import { fetchUserStatusAction, setAuthorized, } from 'app/percona/shared/core/reducers/user/user'; +import { getPerconaUser } from 'app/percona/shared/core/selectors'; import { useAppDispatch } from 'app/store/store'; +import { useSelector } from 'app/types'; import { Telemetry } from '../../../ui-events/components/Telemetry'; import usePerconaTour from '../../core/hooks/tour'; @@ -24,6 +27,7 @@ import { Messages } from './PerconaBootstrapper.messages'; import { getStyles } from './PerconaBootstrapper.styles'; import { PerconaBootstrapperProps } from './PerconaBootstrapper.types'; import PerconaNavigation from './PerconaNavigation/PerconaNavigation'; +import PerconaNewVersion from './PerconaNewVersion'; import PerconaTourBootstrapper from './PerconaTour'; // This component is only responsible for populating the store with Percona's settings initially @@ -36,7 +40,9 @@ export const PerconaBootstrapper = ({ onReady }: PerconaBootstrapperProps) => { const { user } = config.bootData; const { isSignedIn } = user; const theme = useTheme2(); + const { userId } = useSelector(getPerconaUser); + const [modalNewVersionShown, setModalNewVersionShown] = useLocalStorage(`${userId}-grafana.pmm3.modalShown`, false); const dismissModal = () => { setModalIsOpen(false); }; @@ -94,54 +100,64 @@ export const PerconaBootstrapper = ({ onReady }: PerconaBootstrapperProps) => { } }, [dispatch, isSignedIn, setSteps, onReady, user]); + const onDismissModalNewVersion = () => { + setModalNewVersionShown(true); + }; + return ( <> {isSignedIn && } + - {isSignedIn && showTour && ( - -
- -
-

- {Messages.pmm} - {Messages.pmmIs} -

-

- {Messages.pmmEnables} -

    -
  • {Messages.spotCriticalPerformance}
  • -
  • {Messages.ensureDbPerformance}
  • -
  • {Messages.backup}
  • -
-

-

- {Messages.moreInfo} - - {Messages.pmmOnlineHelp} - - . -

- - - - - - - -
+ {isSignedIn && userId !== 0 && !modalNewVersionShown ? ( + + ) : ( + isSignedIn && + showTour && ( + +
+ +
+

+ {Messages.pmm} + {Messages.pmmIs} +

+

+ {Messages.pmmEnables} +

    +
  • {Messages.spotCriticalPerformance}
  • +
  • {Messages.ensureDbPerformance}
  • +
  • {Messages.backup}
  • +
+

+

+ {Messages.moreInfo} + + {Messages.pmmOnlineHelp} + + . +

+ + + + + + + +
+ ) )} ); diff --git a/public/app/percona/shared/components/PerconaBootstrapper/PerconaNewVersion/PerconaNewVersion.constants.ts b/public/app/percona/shared/components/PerconaBootstrapper/PerconaNewVersion/PerconaNewVersion.constants.ts new file mode 100644 index 0000000000000..40730ba848fc9 --- /dev/null +++ b/public/app/percona/shared/components/PerconaBootstrapper/PerconaNewVersion/PerconaNewVersion.constants.ts @@ -0,0 +1,11 @@ +export const Messages = { + titleNewVersion: 'PMM 3 is here and it’s better', + viewMigrationGuide: 'View migration guide', + close: 'Close', + description: + 'Upgrade for enhanced security, improved stability, and a smoother experience. PMM 3 also sets the foundation for exciting future updates. ', + seeWhatsNew: 'See what’s new in PMM 3', +}; + +export const DOCUMENTATION_LINK_URL = 'https://per.co.na/pmm/3.0.0/release-notes'; +export const MIGRATION_LINK_URL = 'https://per.co.na/migrate_to_PMM3'; diff --git a/public/app/percona/shared/components/PerconaBootstrapper/PerconaNewVersion/PerconaNewVersion.styles.ts b/public/app/percona/shared/components/PerconaBootstrapper/PerconaNewVersion/PerconaNewVersion.styles.ts new file mode 100644 index 0000000000000..dcfd7aee82d3a --- /dev/null +++ b/public/app/percona/shared/components/PerconaBootstrapper/PerconaNewVersion/PerconaNewVersion.styles.ts @@ -0,0 +1,22 @@ +import { css } from '@emotion/css'; + +import { GrafanaTheme2 } from '@grafana/data'; + +export const getStyles = (theme: GrafanaTheme2) => ({ + newVersionModal: css` + display: flex; + flex-direction: column; + width: 480px; + `, + buttons: css` + margin-top: 35px; + display: flex; + justify-content: flex-end; + `, + closeButton: css` + margin-right: 20px; + `, + link: css` + color: ${theme.colors.text.link}; + `, +}); diff --git a/public/app/percona/shared/components/PerconaBootstrapper/PerconaNewVersion/PerconaNewVersion.tsx b/public/app/percona/shared/components/PerconaBootstrapper/PerconaNewVersion/PerconaNewVersion.tsx new file mode 100644 index 0000000000000..f2370f71b867e --- /dev/null +++ b/public/app/percona/shared/components/PerconaBootstrapper/PerconaNewVersion/PerconaNewVersion.tsx @@ -0,0 +1,34 @@ +import React from 'react'; + +import { Modal, useStyles2, Button, LinkButton } from '@grafana/ui'; + +import { Messages, MIGRATION_LINK_URL, DOCUMENTATION_LINK_URL } from './PerconaNewVersion.constants'; +import { getStyles } from './PerconaNewVersion.styles'; +import { PerconaNewVersionProps } from './PerconaNewVersion.types'; + +const PerconaNewVersion = ({ isOpen, onDismiss }: PerconaNewVersionProps) => { + const styles = useStyles2(getStyles); + + return ( + <> + +
+ + {Messages.description} + + {Messages.seeWhatsNew} + + +
+ + {Messages.viewMigrationGuide} +
+
+
+ + ); +}; + +export default PerconaNewVersion; diff --git a/public/app/percona/shared/components/PerconaBootstrapper/PerconaNewVersion/PerconaNewVersion.types.ts b/public/app/percona/shared/components/PerconaBootstrapper/PerconaNewVersion/PerconaNewVersion.types.ts new file mode 100644 index 0000000000000..6bd02bbaf92d3 --- /dev/null +++ b/public/app/percona/shared/components/PerconaBootstrapper/PerconaNewVersion/PerconaNewVersion.types.ts @@ -0,0 +1,4 @@ +export interface PerconaNewVersionProps { + onDismiss: () => void; + isOpen: boolean; +} diff --git a/public/app/percona/shared/components/PerconaBootstrapper/PerconaNewVersion/index.ts b/public/app/percona/shared/components/PerconaBootstrapper/PerconaNewVersion/index.ts new file mode 100644 index 0000000000000..112c16f9d7d93 --- /dev/null +++ b/public/app/percona/shared/components/PerconaBootstrapper/PerconaNewVersion/index.ts @@ -0,0 +1,3 @@ +import PerconaNewVersion from './PerconaNewVersion'; + +export default PerconaNewVersion; From 00063273b52354daeb7e7cbba5c4960f8524cc30 Mon Sep 17 00:00:00 2001 From: Ioana Maniga Date: Thu, 3 Apr 2025 14:35:59 +0300 Subject: [PATCH 2/6] PMM-13746 resolve comments --- .../PerconaBootstrapper.tsx | 7 ++-- .../PerconaNewVersion.constants.ts | 9 ----- .../PerconaNewVersion.messages.ts | 8 +++++ .../PerconaNewVersion/PerconaNewVersion.tsx | 35 +++++++++---------- 4 files changed, 27 insertions(+), 32 deletions(-) create mode 100644 public/app/percona/shared/components/PerconaBootstrapper/PerconaNewVersion/PerconaNewVersion.messages.ts diff --git a/public/app/percona/shared/components/PerconaBootstrapper/PerconaBootstrapper.tsx b/public/app/percona/shared/components/PerconaBootstrapper/PerconaBootstrapper.tsx index 818e11184209e..12a78e8b37b02 100644 --- a/public/app/percona/shared/components/PerconaBootstrapper/PerconaBootstrapper.tsx +++ b/public/app/percona/shared/components/PerconaBootstrapper/PerconaBootstrapper.tsx @@ -15,9 +15,7 @@ import { fetchUserStatusAction, setAuthorized, } from 'app/percona/shared/core/reducers/user/user'; -import { getPerconaUser } from 'app/percona/shared/core/selectors'; import { useAppDispatch } from 'app/store/store'; -import { useSelector } from 'app/types'; import { Telemetry } from '../../../ui-events/components/Telemetry'; import usePerconaTour from '../../core/hooks/tour'; @@ -40,9 +38,8 @@ export const PerconaBootstrapper = ({ onReady }: PerconaBootstrapperProps) => { const { user } = config.bootData; const { isSignedIn } = user; const theme = useTheme2(); - const { userId } = useSelector(getPerconaUser); - const [modalNewVersionShown, setModalNewVersionShown] = useLocalStorage(`${userId}-grafana.pmm3.modalShown`, false); + const [modalNewVersionShown, setModalNewVersionShown] = useLocalStorage(`${user.id}-grafana.pmm3.modalShown`, false); const dismissModal = () => { setModalIsOpen(false); }; @@ -110,7 +107,7 @@ export const PerconaBootstrapper = ({ onReady }: PerconaBootstrapperProps) => { - {isSignedIn && userId !== 0 && !modalNewVersionShown ? ( + {isSignedIn && user.id !== 0 && !modalNewVersionShown ? ( ) : ( isSignedIn && diff --git a/public/app/percona/shared/components/PerconaBootstrapper/PerconaNewVersion/PerconaNewVersion.constants.ts b/public/app/percona/shared/components/PerconaBootstrapper/PerconaNewVersion/PerconaNewVersion.constants.ts index 40730ba848fc9..864965ed087b6 100644 --- a/public/app/percona/shared/components/PerconaBootstrapper/PerconaNewVersion/PerconaNewVersion.constants.ts +++ b/public/app/percona/shared/components/PerconaBootstrapper/PerconaNewVersion/PerconaNewVersion.constants.ts @@ -1,11 +1,2 @@ -export const Messages = { - titleNewVersion: 'PMM 3 is here and it’s better', - viewMigrationGuide: 'View migration guide', - close: 'Close', - description: - 'Upgrade for enhanced security, improved stability, and a smoother experience. PMM 3 also sets the foundation for exciting future updates. ', - seeWhatsNew: 'See what’s new in PMM 3', -}; - export const DOCUMENTATION_LINK_URL = 'https://per.co.na/pmm/3.0.0/release-notes'; export const MIGRATION_LINK_URL = 'https://per.co.na/migrate_to_PMM3'; diff --git a/public/app/percona/shared/components/PerconaBootstrapper/PerconaNewVersion/PerconaNewVersion.messages.ts b/public/app/percona/shared/components/PerconaBootstrapper/PerconaNewVersion/PerconaNewVersion.messages.ts new file mode 100644 index 0000000000000..2e69eeccbdfd7 --- /dev/null +++ b/public/app/percona/shared/components/PerconaBootstrapper/PerconaNewVersion/PerconaNewVersion.messages.ts @@ -0,0 +1,8 @@ +export const Messages = { + titleNewVersion: 'PMM 3 is here and it’s better', + viewMigrationGuide: 'View migration guide', + close: 'Close', + description: + 'Upgrade for enhanced security, improved stability, and a smoother experience. PMM 3 also sets the foundation for exciting future updates. ', + seeWhatsNew: 'See what’s new in PMM 3', +}; diff --git a/public/app/percona/shared/components/PerconaBootstrapper/PerconaNewVersion/PerconaNewVersion.tsx b/public/app/percona/shared/components/PerconaBootstrapper/PerconaNewVersion/PerconaNewVersion.tsx index f2370f71b867e..36eedd75fc0b3 100644 --- a/public/app/percona/shared/components/PerconaBootstrapper/PerconaNewVersion/PerconaNewVersion.tsx +++ b/public/app/percona/shared/components/PerconaBootstrapper/PerconaNewVersion/PerconaNewVersion.tsx @@ -2,7 +2,8 @@ import React from 'react'; import { Modal, useStyles2, Button, LinkButton } from '@grafana/ui'; -import { Messages, MIGRATION_LINK_URL, DOCUMENTATION_LINK_URL } from './PerconaNewVersion.constants'; +import { MIGRATION_LINK_URL, DOCUMENTATION_LINK_URL } from './PerconaNewVersion.constants'; +import { Messages } from './PerconaNewVersion.messages'; import { getStyles } from './PerconaNewVersion.styles'; import { PerconaNewVersionProps } from './PerconaNewVersion.types'; @@ -10,24 +11,22 @@ const PerconaNewVersion = ({ isOpen, onDismiss }: PerconaNewVersionProps) => { const styles = useStyles2(getStyles); return ( - <> - -
- - {Messages.description} - - {Messages.seeWhatsNew} - - -
- - {Messages.viewMigrationGuide} -
+ +
+ + {Messages.description} + + {Messages.seeWhatsNew} + + +
+ + {Messages.viewMigrationGuide}
- - +
+
); }; From 62237034bea8fe9ed0f699ea0dd3adfeb327feed Mon Sep 17 00:00:00 2001 From: Ioana Maniga Date: Thu, 3 Apr 2025 15:23:25 +0300 Subject: [PATCH 3/6] PMM-13746 bump version actions/upload-artifact --- .github/workflows/detect-breaking-changes-build-skip.yml | 2 +- .github/workflows/detect-breaking-changes-build.yml | 6 +++--- .github/workflows/ui-tests.yml | 2 +- 3 files changed, 5 insertions(+), 5 deletions(-) diff --git a/.github/workflows/detect-breaking-changes-build-skip.yml b/.github/workflows/detect-breaking-changes-build-skip.yml index 58e3cb5642451..feac05d62c5cd 100644 --- a/.github/workflows/detect-breaking-changes-build-skip.yml +++ b/.github/workflows/detect-breaking-changes-build-skip.yml @@ -28,7 +28,7 @@ jobs: # Upload artifact (so it can be used in the more privileged "report" workflow) - name: Upload check output as artifact - uses: actions/upload-artifact@v3 + uses: actions/upload-artifact@v4 with: name: levitate path: levitate/ diff --git a/.github/workflows/detect-breaking-changes-build.yml b/.github/workflows/detect-breaking-changes-build.yml index daadcbde738e7..e8d73af52d52d 100644 --- a/.github/workflows/detect-breaking-changes-build.yml +++ b/.github/workflows/detect-breaking-changes-build.yml @@ -49,7 +49,7 @@ jobs: run: zip -r ./pr_built_packages.zip ./packages/**/*.tgz - name: Upload build output as artifact - uses: actions/upload-artifact@v3 + uses: actions/upload-artifact@v4 with: name: buildPr path: './pr/pr_built_packages.zip' @@ -97,7 +97,7 @@ jobs: run: zip -r ./base_built_packages.zip ./packages/**/*.tgz - name: Upload build output as artifact - uses: actions/upload-artifact@v3 + uses: actions/upload-artifact@v4 with: name: buildBase path: './base/base_built_packages.zip' @@ -149,7 +149,7 @@ jobs: echo "{ \"exit_code\": ${{ steps.breaking-changes.outputs.is_breaking }}, \"message\": \"${{ steps.breaking-changes.outputs.message }}\", \"job_link\": \"${{ steps.job.outputs.link }}#step:${GITHUB_STEP_NUMBER}:1\", \"pr_number\": \"${{ github.event.pull_request.number }}\" }" > ./levitate/result.json - name: Upload check output as artifact - uses: actions/upload-artifact@v3 + uses: actions/upload-artifact@v4 with: name: levitate path: levitate/ diff --git a/.github/workflows/ui-tests.yml b/.github/workflows/ui-tests.yml index 7f80b4095f5da..bcd5ae7cb3424 100644 --- a/.github/workflows/ui-tests.yml +++ b/.github/workflows/ui-tests.yml @@ -78,7 +78,7 @@ jobs: - name: Attaching artifacts if: ${{ always() }} - uses: actions/upload-artifact@v3 + uses: actions/upload-artifact@v4 with: name: ui-tests-output path: ./pmm-ui-tests/tests/output From 7294f36a0d450db144cfa0b70cf2790c41c2091a Mon Sep 17 00:00:00 2001 From: Ioana Maniga Date: Thu, 3 Apr 2025 16:19:47 +0300 Subject: [PATCH 4/6] PMM-13746 open links in new tab --- .../PerconaNewVersion/PerconaNewVersion.tsx | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/public/app/percona/shared/components/PerconaBootstrapper/PerconaNewVersion/PerconaNewVersion.tsx b/public/app/percona/shared/components/PerconaBootstrapper/PerconaNewVersion/PerconaNewVersion.tsx index 36eedd75fc0b3..22d76a748085e 100644 --- a/public/app/percona/shared/components/PerconaBootstrapper/PerconaNewVersion/PerconaNewVersion.tsx +++ b/public/app/percona/shared/components/PerconaBootstrapper/PerconaNewVersion/PerconaNewVersion.tsx @@ -15,7 +15,7 @@ const PerconaNewVersion = ({ isOpen, onDismiss }: PerconaNewVersionProps) => {
{Messages.description} - + {Messages.seeWhatsNew} @@ -23,7 +23,9 @@ const PerconaNewVersion = ({ isOpen, onDismiss }: PerconaNewVersionProps) => { - {Messages.viewMigrationGuide} + + {Messages.viewMigrationGuide} +
From b7955451c9d4935bc01dbf4de1480083b067906e Mon Sep 17 00:00:00 2001 From: Matej Kubinec Date: Mon, 7 Apr 2025 16:02:46 +0200 Subject: [PATCH 5/6] PMM-13746 Use conditions in accordance with local storage item name --- .../PerconaBootstrapper/PerconaBootstrapper.tsx | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/public/app/percona/shared/components/PerconaBootstrapper/PerconaBootstrapper.tsx b/public/app/percona/shared/components/PerconaBootstrapper/PerconaBootstrapper.tsx index 12a78e8b37b02..cf0f27c66cedb 100644 --- a/public/app/percona/shared/components/PerconaBootstrapper/PerconaBootstrapper.tsx +++ b/public/app/percona/shared/components/PerconaBootstrapper/PerconaBootstrapper.tsx @@ -38,8 +38,8 @@ export const PerconaBootstrapper = ({ onReady }: PerconaBootstrapperProps) => { const { user } = config.bootData; const { isSignedIn } = user; const theme = useTheme2(); + const [modalNewVersionShown, setModalNewVersionShown] = useLocalStorage(`${user.id}-grafana.pmm3.modalShown`, true); - const [modalNewVersionShown, setModalNewVersionShown] = useLocalStorage(`${user.id}-grafana.pmm3.modalShown`, false); const dismissModal = () => { setModalIsOpen(false); }; @@ -98,17 +98,16 @@ export const PerconaBootstrapper = ({ onReady }: PerconaBootstrapperProps) => { }, [dispatch, isSignedIn, setSteps, onReady, user]); const onDismissModalNewVersion = () => { - setModalNewVersionShown(true); + setModalNewVersionShown(false); }; return ( <> {isSignedIn && } - - {isSignedIn && user.id !== 0 && !modalNewVersionShown ? ( - + {isSignedIn && user.id !== 0 && modalNewVersionShown ? ( + ) : ( isSignedIn && showTour && ( From de9e9c9f550ff80d1e5fa8b8c6ce1eaf2e9c8f39 Mon Sep 17 00:00:00 2001 From: Ioana Maniga Date: Wed, 9 Apr 2025 13:24:06 +0300 Subject: [PATCH 6/6] PMM-13746 change release notes link --- .../PerconaNewVersion/PerconaNewVersion.constants.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/public/app/percona/shared/components/PerconaBootstrapper/PerconaNewVersion/PerconaNewVersion.constants.ts b/public/app/percona/shared/components/PerconaBootstrapper/PerconaNewVersion/PerconaNewVersion.constants.ts index 864965ed087b6..6e2d22e27b611 100644 --- a/public/app/percona/shared/components/PerconaBootstrapper/PerconaNewVersion/PerconaNewVersion.constants.ts +++ b/public/app/percona/shared/components/PerconaBootstrapper/PerconaNewVersion/PerconaNewVersion.constants.ts @@ -1,2 +1,2 @@ -export const DOCUMENTATION_LINK_URL = 'https://per.co.na/pmm/3.0.0/release-notes'; +export const DOCUMENTATION_LINK_URL = 'https://per.co.na/PMM3_RelNotes'; export const MIGRATION_LINK_URL = 'https://per.co.na/migrate_to_PMM3';