Compare commits

..

12 Commits

Author SHA1 Message Date
github-actions[bot] 60d76f1cb2 release: v0.4.3 2026-03-19 21:39:48 +00:00
privilegedescalation-paperclip[bot] 0d72d07048 fix: add pull-requests write permission to release workflow (#13)
The reusable release workflow declares pull-requests:write but the
caller didn't grant it, causing startup_failure on GitHub Actions.

Co-authored-by: Hugh Hackman [bot] <hugh-hackman[bot]@users.noreply.github.com>
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-19 21:33:16 +00:00
gandalf-the-greybeard[bot] daad91880c fix: add missing devDependencies for CI (#12)
The package.json only listed @kinvolk/headlamp-plugin as a devDependency,
but CI runs tsc, eslint, prettier, and vitest which all require additional
packages. Add the same devDependencies used by the reference kube-vip plugin
and regenerate the lock file.

Also adds peerDependencies for react/react-dom to match the reference plugin
conventions.

Co-authored-by: Gandalf the Greybeard <gandalf-the-greybeard[bot]@users.noreply.github.com>
Co-authored-by: Paperclip <noreply@paperclip.ing>
2026-03-18 23:30:28 +00:00
null-pointer-nancy[bot] b9137958f0 Merge pull request #11 from privilegedescalation/fix/dep-security-overrides-tar-undici
fix: add npm overrides for tar and undici security advisories
2026-03-18 23:14:06 +00:00
Hugh Hackman 37a2232178 fix: regenerate package-lock.json for undici override
Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-03-18 23:08:00 +00:00
Hugh Hackman 56eb0761dd fix: add npm overrides for tar and undici security advisories
Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-03-18 22:55:50 +00:00
null-pointer-nancy[bot] 18c6a03c0c Merge pull request #9 from privilegedescalation/docs/remove-manual-install
docs: remove manual install sections from README
2026-03-17 12:19:29 +00:00
Gandalf the Greybeard cbd86f696d docs: remove manual install sections from README
ArtifactHub plugin installer is the only supported installation method.
Remove manual tarball, sidecar, and build-from-source install options
to align documentation with company policy.

Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-03-17 12:15:45 +00:00
null-pointer-nancy[bot] 510affbe1a ci: retrigger after shared workflow fix (#8)
CI retrigger after shared workflow fix (.github PR#14)
2026-03-15 17:54:40 +00:00
Chris Farhood fcb2e5f9fd Merge pull request #7 from privilegedescalation/policy/artifacthub-only
policy: add ArtifactHub-only installation requirement
2026-03-15 12:43:25 -04:00
null-pointer-nancy[bot] a34802b477 policy: add ArtifactHub-only installation policy
Per CEO directive, ArtifactHub via the Headlamp plugin installer is the
only approved installation method. No exceptions.

Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-03-15 16:36:41 +00:00
gandalf-the-greybeard[bot] e5e681b415 fix: rename plugin from headlamp-intel-gpu to intel-gpu (#6)
Aligns naming convention across all plugins. Renames package, sidebar entries, routes, and documentation references.
2026-03-10 23:49:08 +00:00
8 changed files with 885 additions and 590 deletions
+1
View File
@@ -10,6 +10,7 @@ on:
permissions:
contents: write
pull-requests: write
jobs:
release:
+1 -1
View File
@@ -6,7 +6,7 @@ This file provides guidance to Claude Code (claude.ai/code) when working with co
Headlamp plugin for Intel GPU device plugin visibility and monitoring. Read-only — monitors GpuDevicePlugin CRDs, GPU-capable nodes, pods requesting Intel GPU resources, and real-time power metrics via Prometheus. No cluster write operations.
- **Plugin name**: `headlamp-intel-gpu`
- **Plugin name**: `intel-gpu`
- **Target**: Headlamp >= v0.20.0
- **Data sources**: GpuDevicePlugin CRDs (`deviceplugin.intel.com/v1`), Nodes, Pods (all namespaces), Prometheus (node-exporter i915 hwmon)
- **Reference plugin**: `../headlamp-kube-vip-plugin`
+24
View File
@@ -0,0 +1,24 @@
# Installation Policy
## Approved Installation Method
**The ONLY approved method for installing this plugin is via [Artifact Hub](https://artifacthub.io/) using the Headlamp plugin installer.**
No other installation method is acceptable. This includes but is not limited to:
- Direct installation from GitHub release assets
- Manual npm pack / tarball extraction
- initContainer workarounds that bypass Artifact Hub
- Direct file copy or sidecar injection
## Enforcement
All deployment configurations, CI/CD pipelines, and documentation MUST reference Artifact Hub as the sole plugin distribution channel. Any pull request that introduces an alternative installation method will be rejected.
## Rationale
Artifact Hub provides verified checksums, consistent versioning, and a standard discovery mechanism for the CNCF ecosystem. Bypassing it introduces security and integrity risks.
---
*This policy is set by the CTO and approved by the CEO of Privileged Escalation.*
+1 -23
View File
@@ -18,29 +18,7 @@ A [Headlamp](https://headlamp.dev/) plugin providing visibility into [Intel GPU
## Installation
### Plugin Manager (Headlamp UI)
Search for `headlamp-intel-gpu` in the Headlamp Plugin Manager.
### Manual
```bash
# Download the latest release tarball
curl -LO https://github.com/privilegedescalation/headlamp-intel-gpu-plugin/releases/latest/download/headlamp-intel-gpu-*.tar.gz
# Extract to Headlamp plugins directory
mkdir -p ~/.config/Headlamp/plugins
tar -xzf headlamp-intel-gpu-*.tar.gz -C ~/.config/Headlamp/plugins/
```
### From Source
```bash
git clone https://github.com/privilegedescalation/headlamp-intel-gpu-plugin.git
cd headlamp-intel-gpu-plugin
npm install
npm run build
```
Search for `headlamp-intel-gpu` in the Headlamp Plugin Manager (Settings → Plugins → Catalog).
## Requirements
+3 -3
View File
@@ -1,4 +1,4 @@
version: "0.4.2"
version: "0.4.3"
name: headlamp-intel-gpu
displayName: Intel GPU
description: >-
@@ -61,7 +61,7 @@ changes:
description: "Resolve ESLint/Prettier indent conflict by disabling ESLint indent rule (Prettier is formatting authority)"
annotations:
headlamp/plugin/archive-url: "https://github.com/privilegedescalation/headlamp-intel-gpu-plugin/releases/download/v0.4.2/headlamp-intel-gpu-0.4.2.tar.gz"
headlamp/plugin/archive-checksum: sha256:0713b099a79ed63ea30675fee96f2a70e37471507d4135b529df158a09960492
headlamp/plugin/archive-url: "https://github.com/privilegedescalation/headlamp-intel-gpu-plugin/releases/download/v0.4.3/intel-gpu-0.4.3.tar.gz"
headlamp/plugin/archive-checksum: sha256:d9c78b3d678d3e6b92c81315bfed88bd22ec4f5cd63578467206727244db7dab
headlamp/plugin/version-compat: ">=0.20.0"
headlamp/plugin/distro-compat: "in-cluster,web,app"
+802 -526
View File
File diff suppressed because it is too large Load Diff
+19 -3
View File
@@ -1,6 +1,6 @@
{
"name": "headlamp-intel-gpu",
"version": "0.4.2",
"name": "intel-gpu",
"version": "0.4.3",
"description": "Headlamp plugin for Intel GPU device plugin visibility and monitoring",
"repository": {
"type": "git",
@@ -24,7 +24,23 @@
"test": "vitest run",
"test:watch": "vitest"
},
"peerDependencies": {
"react": "^18.0.0",
"react-dom": "^18.0.0"
},
"devDependencies": {
"@kinvolk/headlamp-plugin": "^0.13.0"
"@kinvolk/headlamp-plugin": "^0.13.0",
"@testing-library/jest-dom": "^6.4.8",
"@testing-library/react": "^16.0.0",
"@testing-library/user-event": "^14.5.2",
"jsdom": "^24.0.0",
"react": "^18.3.1",
"react-dom": "^18.3.1",
"react-router-dom": "^5.3.0",
"vitest": "^3.0.5"
},
"overrides": {
"tar": "^7.5.11",
"undici": "^7.24.3"
}
}
+34 -34
View File
@@ -1,5 +1,5 @@
/**
* headlamp-intel-gpu-plugin — entry point.
* intel-gpu-plugin — entry point.
*
* Registers sidebar entries, routes, detail view sections, and table column
* processors for Intel GPU device plugin visibility in Headlamp.
@@ -34,49 +34,49 @@ import PodsPage from './components/PodsPage';
registerSidebarEntry({
parent: null,
name: 'headlamp-intel-gpu',
label: 'headlamp-intel-gpu',
url: '/headlamp-intel-gpu',
name: 'intel-gpu',
label: 'intel-gpu',
url: '/intel-gpu',
icon: 'mdi:gpu',
});
registerSidebarEntry({
parent: 'headlamp-intel-gpu',
name: 'headlamp-intel-gpu-overview',
parent: 'intel-gpu',
name: 'intel-gpu-overview',
label: 'Overview',
url: '/headlamp-intel-gpu',
url: '/intel-gpu',
icon: 'mdi:view-dashboard',
});
registerSidebarEntry({
parent: 'headlamp-intel-gpu',
name: 'headlamp-intel-gpu-device-plugins',
parent: 'intel-gpu',
name: 'intel-gpu-device-plugins',
label: 'Device Plugins',
url: '/headlamp-intel-gpu/device-plugins',
url: '/intel-gpu/device-plugins',
icon: 'mdi:chip',
});
registerSidebarEntry({
parent: 'headlamp-intel-gpu',
name: 'headlamp-intel-gpu-nodes',
parent: 'intel-gpu',
name: 'intel-gpu-nodes',
label: 'GPU Nodes',
url: '/headlamp-intel-gpu/nodes',
url: '/intel-gpu/nodes',
icon: 'mdi:server',
});
registerSidebarEntry({
parent: 'headlamp-intel-gpu',
name: 'headlamp-intel-gpu-pods',
parent: 'intel-gpu',
name: 'intel-gpu-pods',
label: 'GPU Pods',
url: '/headlamp-intel-gpu/pods',
url: '/intel-gpu/pods',
icon: 'mdi:cube-outline',
});
registerSidebarEntry({
parent: 'headlamp-intel-gpu',
name: 'headlamp-intel-gpu-metrics',
parent: 'intel-gpu',
name: 'intel-gpu-metrics',
label: 'Metrics',
url: '/headlamp-intel-gpu/metrics',
url: '/intel-gpu/metrics',
icon: 'mdi:chart-line',
});
@@ -85,9 +85,9 @@ registerSidebarEntry({
// ---------------------------------------------------------------------------
registerRoute({
path: '/headlamp-intel-gpu',
sidebar: 'headlamp-intel-gpu-overview',
name: 'headlamp-intel-gpu-overview',
path: '/intel-gpu',
sidebar: 'intel-gpu-overview',
name: 'intel-gpu-overview',
exact: true,
component: () => (
<IntelGpuDataProvider>
@@ -97,9 +97,9 @@ registerRoute({
});
registerRoute({
path: '/headlamp-intel-gpu/device-plugins',
sidebar: 'headlamp-intel-gpu-device-plugins',
name: 'headlamp-intel-gpu-device-plugins',
path: '/intel-gpu/device-plugins',
sidebar: 'intel-gpu-device-plugins',
name: 'intel-gpu-device-plugins',
exact: true,
component: () => (
<IntelGpuDataProvider>
@@ -109,9 +109,9 @@ registerRoute({
});
registerRoute({
path: '/headlamp-intel-gpu/nodes',
sidebar: 'headlamp-intel-gpu-nodes',
name: 'headlamp-intel-gpu-nodes',
path: '/intel-gpu/nodes',
sidebar: 'intel-gpu-nodes',
name: 'intel-gpu-nodes',
exact: true,
component: () => (
<IntelGpuDataProvider>
@@ -121,9 +121,9 @@ registerRoute({
});
registerRoute({
path: '/headlamp-intel-gpu/pods',
sidebar: 'headlamp-intel-gpu-pods',
name: 'headlamp-intel-gpu-pods',
path: '/intel-gpu/pods',
sidebar: 'intel-gpu-pods',
name: 'intel-gpu-pods',
exact: true,
component: () => (
<IntelGpuDataProvider>
@@ -133,9 +133,9 @@ registerRoute({
});
registerRoute({
path: '/headlamp-intel-gpu/metrics',
sidebar: 'headlamp-intel-gpu-metrics',
name: 'headlamp-intel-gpu-metrics',
path: '/intel-gpu/metrics',
sidebar: 'intel-gpu-metrics',
name: 'intel-gpu-metrics',
exact: true,
component: () => (
<IntelGpuDataProvider>