Skip to content

Commit 5e3a5b3

Browse files
authored
Plugins: Disable install controls for provisioned plugin in cloud (#90479)
1 parent 8fd2245 commit 5e3a5b3

File tree

4 files changed

+11
-1
lines changed

4 files changed

+11
-1
lines changed

public/app/features/plugins/admin/components/PluginActions.tsx

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,8 @@ export const PluginActions = ({ plugin }: Props) => {
3434
? PluginStatus.UPDATE
3535
: PluginStatus.UNINSTALL
3636
: PluginStatus.INSTALL;
37-
const isInstallControlsDisabled = plugin.isCore || plugin.isDisabled || !isInstallControlsEnabled();
37+
const isInstallControlsDisabled =
38+
plugin.isCore || plugin.isDisabled || plugin.isProvisioned || !isInstallControlsEnabled();
3839

3940
return (
4041
<Stack direction="column">

public/app/features/plugins/admin/helpers.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -81,6 +81,7 @@ export function mergeLocalsAndRemotes({
8181
}
8282

8383
catalogPlugin.isUninstallingFromInstance = Boolean(localCounterpart) && !instancesMap.has(remotePlugin.slug);
84+
catalogPlugin.isProvisioned = provisionedSet.has(remotePlugin.slug);
8485
}
8586

8687
catalogPlugins.push(catalogPlugin);

public/app/features/plugins/admin/pages/PluginDetails.test.tsx

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -355,6 +355,13 @@ describe('Plugin details page', () => {
355355
expect(await queryByRole('button', { name: /(un)?install/i })).not.toBeInTheDocument();
356356
});
357357

358+
it('should not display install / uninstall buttons for provisioned plugins', async () => {
359+
const { queryByRole } = renderPluginDetails({ id, isProvisioned: true });
360+
361+
expect(await queryByRole('button', { name: /update/i })).not.toBeInTheDocument();
362+
expect(await queryByRole('button', { name: /(un)?install/i })).not.toBeInTheDocument();
363+
});
364+
358365
it('should display install link with `config.pluginAdminExternalManageEnabled` set to true', async () => {
359366
config.pluginAdminExternalManageEnabled = true;
360367

public/app/features/plugins/admin/types.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -65,6 +65,7 @@ export interface CatalogPlugin extends WithAccessControlMetadata {
6565
isUninstallingFromInstance?: boolean;
6666
isUpdatingFromInstance?: boolean;
6767
iam?: IdentityAccessManagement;
68+
isProvisioned?: boolean;
6869
}
6970

7071
export interface CatalogPluginDetails {

0 commit comments

Comments
 (0)