mirror of
https://github.com/lensapp/lens.git
synced 2025-05-20 05:10:56 +00:00
Lint: comma-spacing (error) & comma-dangle (error) (#4200)
Signed-off-by: Sebastian Malton <sebastian@malton.name>
This commit is contained in:
1 parent
02e77afcd1
commit
c6dce043a7
406 files changed
+1590
-1580
No files matched your search
@@ -37,19 +37,19 @@ class FooBarCategory extends CatalogCategory {
|
||||
public readonly kind = "CatalogCategory";
|
||||
public metadata = {
|
||||
name: "FooBars",
|
||||
icon: "broken"
|
||||
icon: "broken",
|
||||
};
|
||||
public spec = {
|
||||
group: "entity.k8slens.dev",
|
||||
versions: [
|
||||
{
|
||||
name: "v1alpha1",
|
||||
entityClass: WebLink
|
||||
}
|
||||
entityClass: WebLink,
|
||||
},
|
||||
],
|
||||
names: {
|
||||
kind: "FooBar"
|
||||
}
|
||||
kind: "FooBar",
|
||||
},
|
||||
};
|
||||
}
|
||||
const entity = new WebLink({
|
||||
@@ -57,43 +57,43 @@ const entity = new WebLink({
|
||||
uid: "test",
|
||||
name: "test-link",
|
||||
source: "test",
|
||||
labels: {}
|
||||
labels: {},
|
||||
},
|
||||
spec: {
|
||||
url: "https://k8slens.dev"
|
||||
url: "https://k8slens.dev",
|
||||
},
|
||||
status: {
|
||||
phase: "available"
|
||||
}
|
||||
phase: "available",
|
||||
},
|
||||
});
|
||||
const entity2 = new WebLink({
|
||||
metadata: {
|
||||
uid: "test2",
|
||||
name: "test-link",
|
||||
source: "test",
|
||||
labels: {}
|
||||
labels: {},
|
||||
},
|
||||
spec: {
|
||||
url: "https://k8slens.dev"
|
||||
url: "https://k8slens.dev",
|
||||
},
|
||||
status: {
|
||||
phase: "available"
|
||||
}
|
||||
phase: "available",
|
||||
},
|
||||
});
|
||||
const entitykc = new KubernetesCluster({
|
||||
metadata: {
|
||||
uid: "test3",
|
||||
name: "test-link",
|
||||
source: "test",
|
||||
labels: {}
|
||||
labels: {},
|
||||
},
|
||||
spec: {
|
||||
kubeconfigPath: "",
|
||||
kubeconfigContext: "",
|
||||
},
|
||||
status: {
|
||||
phase: "connected"
|
||||
}
|
||||
phase: "connected",
|
||||
},
|
||||
});
|
||||
|
||||
describe("CatalogEntityRegistry", () => {
|
||||
@@ -107,12 +107,12 @@ describe("CatalogEntityRegistry", () => {
|
||||
uid: "123",
|
||||
name: "foobar",
|
||||
source: "test",
|
||||
labels: {}
|
||||
labels: {},
|
||||
},
|
||||
status: {
|
||||
phase: "disconnected"
|
||||
phase: "disconnected",
|
||||
},
|
||||
spec: {}
|
||||
spec: {},
|
||||
}];
|
||||
|
||||
catalog.replaceItems(items);
|
||||
@@ -125,12 +125,12 @@ describe("CatalogEntityRegistry", () => {
|
||||
uid: "456",
|
||||
name: "barbaz",
|
||||
source: "test",
|
||||
labels: {}
|
||||
labels: {},
|
||||
},
|
||||
status: {
|
||||
phase: "disconnected"
|
||||
phase: "disconnected",
|
||||
},
|
||||
spec: {}
|
||||
spec: {},
|
||||
});
|
||||
|
||||
catalog.replaceItems(items);
|
||||
@@ -146,12 +146,12 @@ describe("CatalogEntityRegistry", () => {
|
||||
uid: "123",
|
||||
name: "foobar",
|
||||
source: "test",
|
||||
labels: {}
|
||||
labels: {},
|
||||
},
|
||||
status: {
|
||||
phase: "disconnected"
|
||||
phase: "disconnected",
|
||||
},
|
||||
spec: {}
|
||||
spec: {},
|
||||
}];
|
||||
|
||||
catalog.replaceItems(items);
|
||||
@@ -174,12 +174,12 @@ describe("CatalogEntityRegistry", () => {
|
||||
uid: "123",
|
||||
name: "foobar",
|
||||
source: "test",
|
||||
labels: {}
|
||||
labels: {},
|
||||
},
|
||||
status: {
|
||||
phase: "disconnected"
|
||||
phase: "disconnected",
|
||||
},
|
||||
spec: {}
|
||||
spec: {},
|
||||
}];
|
||||
|
||||
catalog.replaceItems(items);
|
||||
@@ -201,12 +201,12 @@ describe("CatalogEntityRegistry", () => {
|
||||
uid: "123",
|
||||
name: "foobar",
|
||||
source: "test",
|
||||
labels: {}
|
||||
labels: {},
|
||||
},
|
||||
status: {
|
||||
phase: "disconnected"
|
||||
phase: "disconnected",
|
||||
},
|
||||
spec: {}
|
||||
spec: {},
|
||||
},
|
||||
{
|
||||
apiVersion: "entity.k8slens.dev/v1alpha1",
|
||||
@@ -215,13 +215,13 @@ describe("CatalogEntityRegistry", () => {
|
||||
uid: "456",
|
||||
name: "barbaz",
|
||||
source: "test",
|
||||
labels: {}
|
||||
labels: {},
|
||||
},
|
||||
status: {
|
||||
phase: "disconnected"
|
||||
phase: "disconnected",
|
||||
},
|
||||
spec: {}
|
||||
}
|
||||
spec: {},
|
||||
},
|
||||
];
|
||||
|
||||
catalog.replaceItems(items);
|
||||
@@ -243,12 +243,12 @@ describe("CatalogEntityRegistry", () => {
|
||||
uid: "123",
|
||||
name: "foobar",
|
||||
source: "test",
|
||||
labels: {}
|
||||
labels: {},
|
||||
},
|
||||
status: {
|
||||
phase: "disconnected"
|
||||
phase: "disconnected",
|
||||
},
|
||||
spec: {}
|
||||
spec: {},
|
||||
},
|
||||
{
|
||||
apiVersion: "entity.k8slens.dev/v1alpha1",
|
||||
@@ -257,13 +257,13 @@ describe("CatalogEntityRegistry", () => {
|
||||
uid: "456",
|
||||
name: "barbaz",
|
||||
source: "test",
|
||||
labels: {}
|
||||
labels: {},
|
||||
},
|
||||
status: {
|
||||
phase: "disconnected"
|
||||
phase: "disconnected",
|
||||
},
|
||||
spec: {}
|
||||
}
|
||||
spec: {},
|
||||
},
|
||||
];
|
||||
|
||||
catalog.replaceItems(items);
|
||||
@@ -281,13 +281,13 @@ describe("CatalogEntityRegistry", () => {
|
||||
uid: "456",
|
||||
name: "barbaz",
|
||||
source: "test",
|
||||
labels: {}
|
||||
labels: {},
|
||||
},
|
||||
status: {
|
||||
phase: "disconnected"
|
||||
phase: "disconnected",
|
||||
},
|
||||
spec: {}
|
||||
}
|
||||
spec: {},
|
||||
},
|
||||
];
|
||||
|
||||
catalog.replaceItems(items);
|
||||
|
||||
@@ -131,19 +131,19 @@ export class CatalogEntityRegistry {
|
||||
this.filters,
|
||||
iter.filter,
|
||||
this.items.values(),
|
||||
)
|
||||
),
|
||||
);
|
||||
}
|
||||
|
||||
@computed get entities(): Map<string, CatalogEntity> {
|
||||
return new Map(
|
||||
this.items.map(entity => [entity.getId(), entity])
|
||||
this.items.map(entity => [entity.getId(), entity]),
|
||||
);
|
||||
}
|
||||
|
||||
@computed get filteredEntities(): Map<string, CatalogEntity> {
|
||||
return new Map(
|
||||
this.filteredItems.map(entity => [entity.getId(), entity])
|
||||
this.filteredItems.map(entity => [entity.getId(), entity]),
|
||||
);
|
||||
}
|
||||
|
||||
|
||||
@@ -38,5 +38,5 @@ export const catalogEntityRunContext = {
|
||||
navigate: (url: string) => navigate(url),
|
||||
setCommandPaletteContext: (entity?: CatalogEntity) => {
|
||||
catalogEntityRegistry.activeEntity = entity;
|
||||
}
|
||||
},
|
||||
};
|
||||
@@ -170,7 +170,7 @@ export class TerminalApi extends WebSocketApi {
|
||||
|
||||
protected emitError(error: string) {
|
||||
this.emitStatus(error, {
|
||||
color: TerminalColor.RED
|
||||
color: TerminalColor.RED,
|
||||
});
|
||||
}
|
||||
}
|
||||
@@ -140,7 +140,7 @@ export async function bootstrap(comp: () => Promise<AppComponent>) {
|
||||
bootstrap(
|
||||
async () => process.isMainFrame
|
||||
? (await import("./lens-app")).LensApp
|
||||
: (await import("./components/app")).App
|
||||
: (await import("./components/app")).App,
|
||||
);
|
||||
|
||||
|
||||
|
||||
@@ -53,7 +53,7 @@ function getContexts(config: KubeConfig): Map<string, Option> {
|
||||
.map(({ config, error }) => [config.currentContext, {
|
||||
config,
|
||||
error,
|
||||
}])
|
||||
}]),
|
||||
);
|
||||
}
|
||||
|
||||
@@ -76,7 +76,7 @@ export class AddCluster extends React.Component {
|
||||
@computed get allErrors(): string[] {
|
||||
return [
|
||||
...this.errors,
|
||||
...iter.map(this.kubeContexts.values(), ({ error }) => error)
|
||||
...iter.map(this.kubeContexts.values(), ({ error }) => error),
|
||||
].filter(Boolean);
|
||||
}
|
||||
|
||||
|
||||
@@ -43,7 +43,7 @@ interface Props {
|
||||
const LargeTooltip = withStyles({
|
||||
tooltip: {
|
||||
fontSize: "var(--font-size-small)",
|
||||
}
|
||||
},
|
||||
})(Tooltip);
|
||||
|
||||
@observer
|
||||
@@ -148,7 +148,7 @@ export class HelmChartDetails extends Component<Props> {
|
||||
</DrawerItem>
|
||||
<DrawerItem name="Maintainers" className="maintainers">
|
||||
{selectedChart.getMaintainers().map(({ name, email, url }) =>
|
||||
<a key={name} href={url || `mailto:${email}`} target="_blank" rel="noreferrer">{name}</a>
|
||||
<a key={name} href={url || `mailto:${email}`} target="_blank" rel="noreferrer">{name}</a>,
|
||||
)}
|
||||
</DrawerItem>
|
||||
{selectedChart.getKeywords().length > 0 && (
|
||||
|
||||
@@ -61,7 +61,7 @@ export class HelmChartStore extends ItemStore<HelmChart> {
|
||||
|
||||
protected sortVersions = (versions: IChartVersion[]) => {
|
||||
return versions
|
||||
.map(chartVersion => ({ ...chartVersion, __version: semver.coerce(chartVersion.version, { includePrerelease: true, loose: true }), }))
|
||||
.map(chartVersion => ({ ...chartVersion, __version: semver.coerce(chartVersion.version, { includePrerelease: true, loose: true }) }))
|
||||
.sort(sortCompareChartVersions)
|
||||
.map(({ __version, ...chartVersion }) => chartVersion);
|
||||
};
|
||||
@@ -78,7 +78,7 @@ export class HelmChartStore extends ItemStore<HelmChart> {
|
||||
|
||||
return versions.map(chart => ({
|
||||
repo,
|
||||
version: chart.getVersion()
|
||||
version: chart.getVersion(),
|
||||
}));
|
||||
};
|
||||
|
||||
|
||||
@@ -72,7 +72,7 @@ export class HelmCharts extends Component<Props> {
|
||||
params: {
|
||||
chartName: chart.getName(),
|
||||
repo: chart.getRepository(),
|
||||
}
|
||||
},
|
||||
}));
|
||||
}
|
||||
};
|
||||
@@ -104,7 +104,7 @@ export class HelmCharts extends Component<Props> {
|
||||
searchProps: {
|
||||
...searchProps,
|
||||
placeholder: "Search Helm Charts...",
|
||||
}
|
||||
},
|
||||
})}
|
||||
renderTableHeader={[
|
||||
{ className: "icon", showWithColumn: columnId.name },
|
||||
@@ -126,7 +126,7 @@ export class HelmCharts extends Component<Props> {
|
||||
chart.getVersion(),
|
||||
chart.getAppVersion(),
|
||||
{ title: chart.getRepository(), className: chart.getRepository().toLowerCase() },
|
||||
{ className: "menu" }
|
||||
{ className: "menu" },
|
||||
]}
|
||||
detailsItem={this.selectedChart}
|
||||
onDetails={this.onDetails}
|
||||
|
||||
@@ -128,7 +128,7 @@ export class ReleaseDetails extends Component<Props> {
|
||||
chart: release.getChart(),
|
||||
repo: await release.getRepo(),
|
||||
version: release.getVersion(),
|
||||
values: this.values
|
||||
values: this.values,
|
||||
};
|
||||
|
||||
this.saving = true;
|
||||
@@ -136,7 +136,7 @@ export class ReleaseDetails extends Component<Props> {
|
||||
try {
|
||||
await releaseStore.update(name, namespace, data);
|
||||
Notifications.ok(
|
||||
<p>Release <b>{name}</b> successfully updated!</p>
|
||||
<p>Release <b>{name}</b> successfully updated!</p>,
|
||||
);
|
||||
} catch (err) {
|
||||
Notifications.error(err);
|
||||
|
||||
@@ -77,7 +77,7 @@ export class ReleaseStore extends ItemStore<HelmRelease> {
|
||||
getReleaseSecret(release: HelmRelease) {
|
||||
return secretsStore.getByLabel({
|
||||
owner: "helm",
|
||||
name: release.getName()
|
||||
name: release.getName(),
|
||||
})
|
||||
.find(secret => secret.getNs() == release.getNs());
|
||||
}
|
||||
|
||||
@@ -46,7 +46,7 @@ enum columnId {
|
||||
version = "version",
|
||||
appVersion = "app-version",
|
||||
status = "status",
|
||||
updated = "update"
|
||||
updated = "update",
|
||||
}
|
||||
|
||||
interface Props extends RouteComponentProps<ReleaseRouteParams> {
|
||||
@@ -87,8 +87,8 @@ export class HelmReleases extends Component<Props> {
|
||||
navigation.push(releaseURL({
|
||||
params: {
|
||||
name: item.getName(),
|
||||
namespace: item.getNs()
|
||||
}
|
||||
namespace: item.getNs(),
|
||||
},
|
||||
}));
|
||||
};
|
||||
|
||||
@@ -174,7 +174,7 @@ export class HelmReleases extends Component<Props> {
|
||||
/>
|
||||
)}
|
||||
customizeRemoveDialog={selectedItems => ({
|
||||
message: this.renderRemoveDialogMessage(selectedItems)
|
||||
message: this.renderRemoveDialogMessage(selectedItems),
|
||||
})}
|
||||
detailsItem={this.selectedRelease}
|
||||
onDetails={this.onDetails}
|
||||
|
||||
@@ -35,8 +35,8 @@ class TestCatalogCategory extends CatalogCategory {
|
||||
group: "entity.k8slens.dev",
|
||||
versions: [],
|
||||
names: {
|
||||
kind: "Test"
|
||||
}
|
||||
kind: "Test",
|
||||
},
|
||||
};
|
||||
}
|
||||
|
||||
@@ -49,8 +49,8 @@ describe("CatalogAddButton", () => {
|
||||
{
|
||||
icon: "text_snippet",
|
||||
title: "Add from kubeconfig",
|
||||
onClick: () => {}
|
||||
}
|
||||
onClick: () => {},
|
||||
},
|
||||
);
|
||||
});
|
||||
|
||||
@@ -68,15 +68,15 @@ describe("CatalogAddButton", () => {
|
||||
{
|
||||
icon: "text_snippet",
|
||||
title: "foobar",
|
||||
onClick: () => {}
|
||||
}
|
||||
onClick: () => {},
|
||||
},
|
||||
);
|
||||
ctx.menuItems.push(
|
||||
{
|
||||
icon: "text_snippet",
|
||||
title: "Add from kubeconfig",
|
||||
onClick: () => {}
|
||||
}
|
||||
onClick: () => {},
|
||||
},
|
||||
);
|
||||
});
|
||||
|
||||
|
||||
@@ -79,7 +79,7 @@ export class CatalogAddButton extends React.Component<CatalogAddButtonProps> {
|
||||
const menuItems: CatalogEntityAddMenu[] = [];
|
||||
const context: CatalogEntityAddMenuContext = {
|
||||
navigate: (url: string) => navigate(url),
|
||||
menuItems
|
||||
menuItems,
|
||||
};
|
||||
|
||||
category.emit("catalogAddMenu", context);
|
||||
@@ -142,7 +142,7 @@ export class CatalogAddButton extends React.Component<CatalogAddButtonProps> {
|
||||
menuItem.onClick();
|
||||
}}
|
||||
TooltipClasses={{
|
||||
popper: "catalogSpeedDialPopper"
|
||||
popper: "catalogSpeedDialPopper",
|
||||
}}
|
||||
/>;
|
||||
})}
|
||||
|
||||
@@ -63,7 +63,7 @@ export class CatalogEntityDrawerMenu<T extends CatalogEntity> extends React.Comp
|
||||
ok: () => {
|
||||
menuItem.onClick();
|
||||
},
|
||||
message: menuItem.confirm.message
|
||||
message: menuItem.confirm.message,
|
||||
});
|
||||
} else {
|
||||
menuItem.onClick();
|
||||
@@ -90,7 +90,7 @@ export class CatalogEntityDrawerMenu<T extends CatalogEntity> extends React.Comp
|
||||
tooltip={menuItem.title}
|
||||
{...{ [key]: menuItem.icon }}
|
||||
/>
|
||||
</MenuItem>
|
||||
</MenuItem>,
|
||||
);
|
||||
}
|
||||
|
||||
@@ -100,7 +100,7 @@ export class CatalogEntityDrawerMenu<T extends CatalogEntity> extends React.Comp
|
||||
entity={entity}
|
||||
addContent={<Icon material="push_pin" small tooltip="Add to Hotbar"/>}
|
||||
removeContent={<Icon svg="push_off" small tooltip="Remove from Hotbar"/>}
|
||||
/>
|
||||
/>,
|
||||
);
|
||||
|
||||
return items;
|
||||
|
||||
@@ -53,7 +53,7 @@ jest.mock("electron", () => ({
|
||||
AppPaths.init();
|
||||
|
||||
jest.mock("./hotbar-toggle-menu-item", () => ({
|
||||
HotbarToggleMenuItem: () => <div>menu item</div>
|
||||
HotbarToggleMenuItem: () => <div>menu item</div>,
|
||||
}));
|
||||
|
||||
class MockCatalogEntity extends CatalogEntity {
|
||||
@@ -146,7 +146,7 @@ describe("<Catalog />", () => {
|
||||
expect(onRun).toHaveBeenCalled();
|
||||
done();
|
||||
}, 500);
|
||||
}
|
||||
},
|
||||
);
|
||||
|
||||
render(
|
||||
@@ -155,7 +155,7 @@ describe("<Catalog />", () => {
|
||||
location={mockLocation}
|
||||
match={mockMatch}
|
||||
catalogEntityStore={catalogEntityStore}
|
||||
/>
|
||||
/>,
|
||||
);
|
||||
|
||||
userEvent.click(screen.getByTestId("detail-panel-hot-bar-icon"));
|
||||
@@ -180,7 +180,7 @@ describe("<Catalog />", () => {
|
||||
done();
|
||||
}, 500);
|
||||
e.preventDefault();
|
||||
}
|
||||
},
|
||||
);
|
||||
|
||||
render(
|
||||
@@ -189,7 +189,7 @@ describe("<Catalog />", () => {
|
||||
location={mockLocation}
|
||||
match={mockMatch}
|
||||
catalogEntityStore={catalogEntityStore}
|
||||
/>
|
||||
/>,
|
||||
);
|
||||
|
||||
userEvent.click(screen.getByTestId("detail-panel-hot-bar-icon"));
|
||||
@@ -215,7 +215,7 @@ describe("<Catalog />", () => {
|
||||
}, 500);
|
||||
|
||||
throw new Error("error!");
|
||||
}
|
||||
},
|
||||
);
|
||||
|
||||
render(
|
||||
@@ -224,7 +224,7 @@ describe("<Catalog />", () => {
|
||||
location={mockLocation}
|
||||
match={mockMatch}
|
||||
catalogEntityStore={catalogEntityStore}
|
||||
/>
|
||||
/>,
|
||||
);
|
||||
|
||||
userEvent.click(screen.getByTestId("detail-panel-hot-bar-icon"));
|
||||
@@ -245,7 +245,7 @@ describe("<Catalog />", () => {
|
||||
catalogEntityRegistry.addOnBeforeRun(
|
||||
async () => {
|
||||
// no op
|
||||
}
|
||||
},
|
||||
);
|
||||
|
||||
render(
|
||||
@@ -254,7 +254,7 @@ describe("<Catalog />", () => {
|
||||
location={mockLocation}
|
||||
match={mockMatch}
|
||||
catalogEntityStore={catalogEntityStore}
|
||||
/>
|
||||
/>,
|
||||
);
|
||||
|
||||
userEvent.click(screen.getByTestId("detail-panel-hot-bar-icon"));
|
||||
@@ -282,7 +282,7 @@ describe("<Catalog />", () => {
|
||||
}, 500);
|
||||
|
||||
e.preventDefault();
|
||||
}
|
||||
},
|
||||
);
|
||||
|
||||
render(
|
||||
@@ -291,7 +291,7 @@ describe("<Catalog />", () => {
|
||||
location={mockLocation}
|
||||
match={mockMatch}
|
||||
catalogEntityStore={catalogEntityStore}
|
||||
/>
|
||||
/>,
|
||||
);
|
||||
|
||||
userEvent.click(screen.getByTestId("detail-panel-hot-bar-icon"));
|
||||
@@ -317,7 +317,7 @@ describe("<Catalog />", () => {
|
||||
}, 500);
|
||||
|
||||
throw new Error("rejection!");
|
||||
}
|
||||
},
|
||||
);
|
||||
|
||||
render(
|
||||
@@ -326,7 +326,7 @@ describe("<Catalog />", () => {
|
||||
location={mockLocation}
|
||||
match={mockMatch}
|
||||
catalogEntityStore={catalogEntityStore}
|
||||
/>
|
||||
/>,
|
||||
);
|
||||
|
||||
userEvent.click(screen.getByTestId("detail-panel-hot-bar-icon"));
|
||||
|
||||
@@ -53,7 +53,7 @@ enum sortBy {
|
||||
name = "name",
|
||||
kind = "kind",
|
||||
source = "source",
|
||||
status = "status"
|
||||
status = "status",
|
||||
}
|
||||
|
||||
const css = makeCss(styles);
|
||||
@@ -153,7 +153,7 @@ export class Catalog extends React.Component<Props> {
|
||||
ok: () => {
|
||||
menuItem.onClick();
|
||||
},
|
||||
message: menuItem.confirm.message
|
||||
message: menuItem.confirm.message,
|
||||
});
|
||||
} else {
|
||||
menuItem.onClick();
|
||||
@@ -286,7 +286,7 @@ export class Catalog extends React.Component<Props> {
|
||||
!activeCategory && item.kind,
|
||||
item.source,
|
||||
item.getLabelBadges(),
|
||||
{ title: item.phase, className: cssNames(css[item.phase]) }
|
||||
{ title: item.phase, className: cssNames(css[item.phase]) },
|
||||
].filter(Boolean)}
|
||||
onDetails={this.onDetails}
|
||||
renderItemMenu={this.renderItemMenu}
|
||||
|
||||
@@ -40,23 +40,23 @@ export const ClusterMetrics = observer(() => {
|
||||
const colors = { cpu: "#3D90CE", memory: "#C93DCE" };
|
||||
const data = metricValues.map(value => ({
|
||||
x: value[0],
|
||||
y: parseFloat(value[1]).toFixed(3)
|
||||
y: parseFloat(value[1]).toFixed(3),
|
||||
}));
|
||||
|
||||
const datasets = [{
|
||||
id: metricType + metricNodeRole,
|
||||
label: `${metricType.toUpperCase()} usage`,
|
||||
borderColor: colors[metricType],
|
||||
data
|
||||
data,
|
||||
}];
|
||||
const cpuOptions: ChartOptions = {
|
||||
scales: {
|
||||
yAxes: [{
|
||||
ticks: {
|
||||
suggestedMax: cpuCapacity,
|
||||
callback: (value) => value
|
||||
}
|
||||
}]
|
||||
callback: (value) => value,
|
||||
},
|
||||
}],
|
||||
},
|
||||
tooltips: {
|
||||
callbacks: {
|
||||
@@ -64,18 +64,18 @@ export const ClusterMetrics = observer(() => {
|
||||
const value = data.datasets[0].data[index] as ChartPoint;
|
||||
|
||||
return value.y.toString();
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
},
|
||||
},
|
||||
};
|
||||
const memoryOptions: ChartOptions = {
|
||||
scales: {
|
||||
yAxes: [{
|
||||
ticks: {
|
||||
suggestedMax: memoryCapacity,
|
||||
callback: (value: string) => !value ? 0 : bytesToUnits(parseInt(value))
|
||||
}
|
||||
}]
|
||||
callback: (value: string) => !value ? 0 : bytesToUnits(parseInt(value)),
|
||||
},
|
||||
}],
|
||||
},
|
||||
tooltips: {
|
||||
callbacks: {
|
||||
@@ -83,9 +83,9 @@ export const ClusterMetrics = observer(() => {
|
||||
const value = data.datasets[0].data[index] as ChartPoint;
|
||||
|
||||
return bytesToUnits(parseInt(value.y as string), 3);
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
},
|
||||
},
|
||||
};
|
||||
const options = metricType === MetricType.CPU ? cpuOptions : memoryOptions;
|
||||
|
||||
|
||||
@@ -29,12 +29,12 @@ import { apiManager } from "../../../common/k8s-api/api-manager";
|
||||
|
||||
export enum MetricType {
|
||||
MEMORY = "memory",
|
||||
CPU = "cpu"
|
||||
CPU = "cpu",
|
||||
}
|
||||
|
||||
export enum MetricNodeRole {
|
||||
MASTER = "master",
|
||||
WORKER = "worker"
|
||||
WORKER = "worker",
|
||||
}
|
||||
|
||||
export interface ClusterOverviewStorageState {
|
||||
|
||||
@@ -60,7 +60,7 @@ export class ClusterOverview extends React.Component {
|
||||
}),
|
||||
reaction(
|
||||
() => clusterOverviewStore.metricNodeRole, // Toggle Master/Worker node switcher
|
||||
() => this.metricPoller.restart(true)
|
||||
() => this.metricPoller.restart(true),
|
||||
),
|
||||
]);
|
||||
}
|
||||
|
||||
@@ -69,7 +69,7 @@ export const ClusterPieCharts = observer(() => {
|
||||
defaultColor,
|
||||
],
|
||||
id: "cpuUsage",
|
||||
label: "Usage"
|
||||
label: "Usage",
|
||||
},
|
||||
{
|
||||
data: [
|
||||
@@ -81,7 +81,7 @@ export const ClusterPieCharts = observer(() => {
|
||||
defaultColor,
|
||||
],
|
||||
id: "cpuRequests",
|
||||
label: "Requests"
|
||||
label: "Requests",
|
||||
},
|
||||
{
|
||||
data: [
|
||||
@@ -93,7 +93,7 @@ export const ClusterPieCharts = observer(() => {
|
||||
defaultColor,
|
||||
],
|
||||
id: "cpuLimits",
|
||||
label: "Limits"
|
||||
label: "Limits",
|
||||
},
|
||||
],
|
||||
labels: createLabels([
|
||||
@@ -116,7 +116,7 @@ export const ClusterPieCharts = observer(() => {
|
||||
defaultColor,
|
||||
],
|
||||
id: "memoryUsage",
|
||||
label: "Usage"
|
||||
label: "Usage",
|
||||
},
|
||||
{
|
||||
data: [
|
||||
@@ -128,7 +128,7 @@ export const ClusterPieCharts = observer(() => {
|
||||
defaultColor,
|
||||
],
|
||||
id: "memoryRequests",
|
||||
label: "Requests"
|
||||
label: "Requests",
|
||||
},
|
||||
{
|
||||
data: [
|
||||
@@ -140,7 +140,7 @@ export const ClusterPieCharts = observer(() => {
|
||||
defaultColor,
|
||||
],
|
||||
id: "memoryLimits",
|
||||
label: "Limits"
|
||||
label: "Limits",
|
||||
},
|
||||
],
|
||||
labels: [
|
||||
@@ -148,8 +148,8 @@ export const ClusterPieCharts = observer(() => {
|
||||
`Requests: ${bytesToUnits(memoryRequests)}`,
|
||||
`Limits: ${bytesToUnits(memoryLimits)}`,
|
||||
`Allocatable Capacity: ${bytesToUnits(memoryAllocatableCapacity)}`,
|
||||
`Capacity: ${bytesToUnits(memoryCapacity)}`
|
||||
]
|
||||
`Capacity: ${bytesToUnits(memoryCapacity)}`,
|
||||
],
|
||||
};
|
||||
const podsData: ChartData = {
|
||||
datasets: [
|
||||
@@ -163,13 +163,13 @@ export const ClusterPieCharts = observer(() => {
|
||||
defaultColor,
|
||||
],
|
||||
id: "podUsage",
|
||||
label: "Usage"
|
||||
label: "Usage",
|
||||
},
|
||||
],
|
||||
labels: [
|
||||
`Usage: ${podUsage || 0}`,
|
||||
`Capacity: ${podAllocatableCapacity}`,
|
||||
]
|
||||
],
|
||||
};
|
||||
|
||||
return (
|
||||
|
||||
@@ -40,7 +40,7 @@ enum columnId {
|
||||
maxPods = "max-pods",
|
||||
replicas = "replicas",
|
||||
age = "age",
|
||||
status = "status"
|
||||
status = "status",
|
||||
}
|
||||
|
||||
interface Props extends RouteComponentProps<HpaRouteParams> {
|
||||
@@ -72,7 +72,7 @@ export class HorizontalPodAutoscalers extends React.Component<Props> {
|
||||
[columnId.age]: item => item.getTimeDiffFromNow(),
|
||||
}}
|
||||
searchFilters={[
|
||||
item => item.getSearchFields()
|
||||
item => item.getSearchFields(),
|
||||
]}
|
||||
renderHeaderTitle="Horizontal Pod Autoscalers"
|
||||
renderTableHeader={[
|
||||
@@ -107,7 +107,7 @@ export class HorizontalPodAutoscalers extends React.Component<Props> {
|
||||
expandable={false}
|
||||
/>
|
||||
);
|
||||
})
|
||||
}),
|
||||
]}
|
||||
/>
|
||||
);
|
||||
|
||||
@@ -55,7 +55,7 @@ export class ConfigMapDetails extends React.Component<Props> {
|
||||
if (configMap) {
|
||||
this.data.replace(configMap.data); // refresh
|
||||
}
|
||||
})
|
||||
}),
|
||||
]);
|
||||
}
|
||||
|
||||
@@ -71,7 +71,7 @@ export class ConfigMapDetails extends React.Component<Props> {
|
||||
Notifications.ok(
|
||||
<p>
|
||||
<>ConfigMap <b>{configMap.getName()}</b> successfully updated.</>
|
||||
</p>
|
||||
</p>,
|
||||
);
|
||||
} catch (error) {
|
||||
Notifications.error(`Failed to save config map: ${error}`);
|
||||
|
||||
@@ -55,7 +55,7 @@ export class ConfigMaps extends React.Component<Props> {
|
||||
}}
|
||||
searchFilters={[
|
||||
item => item.getSearchFields(),
|
||||
item => item.getKeys()
|
||||
item => item.getKeys(),
|
||||
]}
|
||||
renderHeaderTitle="Config Maps"
|
||||
renderTableHeader={[
|
||||
|
||||
@@ -135,8 +135,8 @@ export class AddQuotaDialog extends React.Component<Props> {
|
||||
|
||||
await resourceQuotaApi.create({ namespace, name: quotaName }, {
|
||||
spec: {
|
||||
hard: quotas
|
||||
}
|
||||
hard: quotas,
|
||||
},
|
||||
});
|
||||
this.close();
|
||||
} catch (err) {
|
||||
|
||||
@@ -33,7 +33,7 @@ import type { ResourceQuotaRouteParams } from "../../../common/routes";
|
||||
enum columnId {
|
||||
name = "name",
|
||||
namespace = "namespace",
|
||||
age = "age"
|
||||
age = "age",
|
||||
}
|
||||
|
||||
interface Props extends RouteComponentProps<ResourceQuotaRouteParams> {
|
||||
@@ -72,7 +72,7 @@ export class ResourceQuotas extends React.Component<Props> {
|
||||
]}
|
||||
addRemoveButtons={{
|
||||
onAdd: () => AddQuotaDialog.open(),
|
||||
addTooltip: "Create new ResourceQuota"
|
||||
addTooltip: "Create new ResourceQuota",
|
||||
}}
|
||||
/>
|
||||
<AddQuotaDialog/>
|
||||
|
||||
@@ -35,7 +35,7 @@ describe("SecretDetails tests", () => {
|
||||
metadata: {
|
||||
name: "test",
|
||||
resourceVersion: "1",
|
||||
uid: "uid"
|
||||
uid: "uid",
|
||||
},
|
||||
data: {
|
||||
foobar: "",
|
||||
|
||||
@@ -81,7 +81,7 @@ export class AddSecretDialog extends React.Component<Props> {
|
||||
[SecretType.ServiceAccountToken]: {
|
||||
annotations: [
|
||||
{ key: "kubernetes.io/service-account.name", required: true },
|
||||
{ key: "kubernetes.io/service-account.uid", required: true }
|
||||
{ key: "kubernetes.io/service-account.uid", required: true },
|
||||
],
|
||||
},
|
||||
};
|
||||
@@ -127,7 +127,7 @@ export class AddSecretDialog extends React.Component<Props> {
|
||||
namespace,
|
||||
annotations: this.getDataFromFields(annotations),
|
||||
labels: this.getDataFromFields(labels),
|
||||
} as KubeObjectMetadata
|
||||
} as KubeObjectMetadata,
|
||||
};
|
||||
|
||||
try {
|
||||
|
||||
@@ -59,7 +59,7 @@ export class SecretDetails extends React.Component<Props> {
|
||||
this.data = secret.data;
|
||||
this.revealSecret.clear();
|
||||
}
|
||||
})
|
||||
}),
|
||||
]);
|
||||
}
|
||||
|
||||
|
||||
@@ -85,7 +85,7 @@ export class Secrets extends React.Component<Props> {
|
||||
]}
|
||||
addRemoveButtons={{
|
||||
onAdd: () => AddSecretDialog.open(),
|
||||
addTooltip: "Create new Secret"
|
||||
addTooltip: "Create new Secret",
|
||||
}}
|
||||
/>
|
||||
<AddSecretDialog/>
|
||||
|
||||
@@ -95,7 +95,7 @@ export class CrdResources extends React.Component<Props> {
|
||||
...searchProps,
|
||||
placeholder: `${crd.getResourceKind()} search ...`,
|
||||
},
|
||||
...headerPlaceholders
|
||||
...headerPlaceholders,
|
||||
})}
|
||||
renderTableHeader={[
|
||||
{ title: "Name", className: "name", sortBy: columnId.name, id: columnId.name },
|
||||
@@ -107,7 +107,7 @@ export class CrdResources extends React.Component<Props> {
|
||||
title: name,
|
||||
className: name.toLowerCase(),
|
||||
sortBy: name,
|
||||
id: name
|
||||
id: name,
|
||||
};
|
||||
}),
|
||||
{ title: "Age", className: "age", sortBy: columnId.age, id: columnId.age },
|
||||
|
||||
@@ -36,7 +36,7 @@ export class CustomResources extends React.Component {
|
||||
component: CustomResources,
|
||||
url: crdURL(),
|
||||
routePath: String(crdDefinitionsRoute.path),
|
||||
}
|
||||
},
|
||||
];
|
||||
}
|
||||
|
||||
|
||||
@@ -135,7 +135,7 @@ export class Events extends React.Component<Props> {
|
||||
/>
|
||||
</>,
|
||||
title,
|
||||
...headerPlaceholders
|
||||
...headerPlaceholders,
|
||||
};
|
||||
};
|
||||
|
||||
@@ -193,7 +193,7 @@ export class Events extends React.Component<Props> {
|
||||
{message}
|
||||
</Tooltip>
|
||||
</Fragment>
|
||||
)
|
||||
),
|
||||
},
|
||||
event.getNs(),
|
||||
<Link key="link" to={getDetailsUrl(apiManager.lookupApiLink(involvedObject, event))} onClick={stopPropagation}>
|
||||
|
||||
@@ -66,7 +66,7 @@ export class KubeEventIcon extends React.Component<Props> {
|
||||
{event.getAge(undefined, undefined, true)}
|
||||
</div>
|
||||
</div>
|
||||
)
|
||||
),
|
||||
}}
|
||||
/>
|
||||
);
|
||||
|
||||
@@ -75,7 +75,7 @@ AppPaths.init();
|
||||
describe("Extensions", () => {
|
||||
beforeEach(async () => {
|
||||
mockFs({
|
||||
"tmp": {}
|
||||
"tmp": {},
|
||||
});
|
||||
|
||||
ExtensionInstallationStateStore.reset();
|
||||
@@ -84,13 +84,13 @@ describe("Extensions", () => {
|
||||
id: "extensionId",
|
||||
manifest: {
|
||||
name: "test",
|
||||
version: "1.2.3"
|
||||
version: "1.2.3",
|
||||
},
|
||||
absolutePath: "/absolute/path",
|
||||
manifestPath: "/symlinked/path/package.json",
|
||||
isBundled: false,
|
||||
isEnabled: true,
|
||||
isCompatible: true
|
||||
isCompatible: true,
|
||||
});
|
||||
ExtensionDiscovery.createInstance().uninstallExtension = jest.fn(() => Promise.resolve());
|
||||
UserStore.createInstance();
|
||||
@@ -136,11 +136,11 @@ describe("Extensions", () => {
|
||||
(fse.unlink as jest.MockedFunction<typeof fse.unlink>).mockReturnValue(Promise.resolve() as any);
|
||||
|
||||
fireEvent.change(res.getByPlaceholderText("File path or URL", {
|
||||
exact: false
|
||||
exact: false,
|
||||
}), {
|
||||
target: {
|
||||
value: "https://test.extensionurl/package.tgz"
|
||||
}
|
||||
value: "https://test.extensionurl/package.tgz",
|
||||
},
|
||||
});
|
||||
|
||||
fireEvent.click(res.getByText("Install"));
|
||||
|
||||
@@ -31,10 +31,10 @@ import path from "path";
|
||||
import React from "react";
|
||||
import { SemVer } from "semver";
|
||||
import URLParse from "url-parse";
|
||||
import { Disposer, disposer, downloadFile, downloadJson, ExtendableDisposer, extractTar, listTarEntries, noop, readFileFromTar, } from "../../../common/utils";
|
||||
import { Disposer, disposer, downloadFile, downloadJson, ExtendableDisposer, extractTar, listTarEntries, noop, readFileFromTar } from "../../../common/utils";
|
||||
import { ExtensionDiscovery, InstalledExtension, manifestFilename } from "../../../extensions/extension-discovery";
|
||||
import { ExtensionLoader } from "../../../extensions/extension-loader";
|
||||
import { extensionDisplayName, LensExtensionId, LensExtensionManifest, sanitizeExtensionName, } from "../../../extensions/lens-extension";
|
||||
import { extensionDisplayName, LensExtensionId, LensExtensionManifest, sanitizeExtensionName } from "../../../extensions/lens-extension";
|
||||
import logger from "../../../main/logger";
|
||||
import { Button } from "../button";
|
||||
import { ConfirmDialog } from "../confirm-dialog";
|
||||
@@ -121,7 +121,7 @@ async function uninstallExtension(extensionId: LensExtensionId): Promise<boolean
|
||||
await when(() => !loader.userExtensions.has(extensionId));
|
||||
|
||||
Notifications.ok(
|
||||
<p>Extension <b>{displayName}</b> successfully uninstalled!</p>
|
||||
<p>Extension <b>{displayName}</b> successfully uninstalled!</p>,
|
||||
);
|
||||
|
||||
return true;
|
||||
@@ -238,7 +238,7 @@ async function createTempFilesAndValidate({ fileName, dataP }: InstallRequest):
|
||||
<div className="flex column gaps">
|
||||
<p>Installing <em>{fileName}</em> has failed, skipping.</p>
|
||||
<p>Reason: <em>{message}</em></p>
|
||||
</div>
|
||||
</div>,
|
||||
);
|
||||
}
|
||||
|
||||
@@ -283,7 +283,7 @@ async function unpackExtension(request: InstallRequestValidated, disposeDownload
|
||||
ExtensionLoader.getInstance().setIsEnabled(id, true);
|
||||
|
||||
Notifications.ok(
|
||||
<p>Extension <b>{displayName}</b> successfully installed!</p>
|
||||
<p>Extension <b>{displayName}</b> successfully installed!</p>,
|
||||
);
|
||||
} catch (error) {
|
||||
const message = getMessageFromError(error);
|
||||
@@ -375,7 +375,7 @@ async function attemptInstall(request: InstallRequest, d?: ExtendableDisposer):
|
||||
<b>Extension Install Collision:</b>
|
||||
<p>The <em>{name}</em> extension is currently {curState.toLowerCase()}.</p>
|
||||
<p>Will not proceed with this current install request.</p>
|
||||
</div>
|
||||
</div>,
|
||||
);
|
||||
}
|
||||
|
||||
@@ -410,7 +410,7 @@ async function attemptInstall(request: InstallRequest, d?: ExtendableDisposer):
|
||||
</div>,
|
||||
{
|
||||
onClose: dispose,
|
||||
}
|
||||
},
|
||||
);
|
||||
}
|
||||
}
|
||||
@@ -474,8 +474,8 @@ async function installFromSelectFileDialog() {
|
||||
message: `Select extensions to install (formats: ${supportedFormats.join(", ")}), `,
|
||||
buttonLabel: "Use configuration",
|
||||
filters: [
|
||||
{ name: "tarball", extensions: supportedFormats }
|
||||
]
|
||||
{ name: "tarball", extensions: supportedFormats },
|
||||
],
|
||||
});
|
||||
|
||||
if (!canceled) {
|
||||
@@ -503,7 +503,7 @@ export class Extensions extends React.Component<Props> {
|
||||
when(() => !ExtensionInstallationStateStore.anyInstalling, () => this.installPath = ""),
|
||||
]);
|
||||
}
|
||||
})
|
||||
}),
|
||||
]);
|
||||
}
|
||||
|
||||
|
||||
@@ -76,16 +76,16 @@ export const InstalledExtensions = observer(({ extensions, uninstall, enable, di
|
||||
},
|
||||
{
|
||||
Header: "Status",
|
||||
accessor: "status"
|
||||
accessor: "status",
|
||||
},
|
||||
{
|
||||
Header: "",
|
||||
accessor: "actions",
|
||||
disableSortBy: true,
|
||||
width: 20,
|
||||
className: "actions"
|
||||
}
|
||||
], []
|
||||
className: "actions",
|
||||
},
|
||||
], [],
|
||||
);
|
||||
|
||||
const data = useMemo(
|
||||
@@ -142,10 +142,10 @@ export const InstalledExtensions = observer(({ extensions, uninstall, enable, di
|
||||
<span className="title" aria-disabled={isUninstalling}>Uninstall</span>
|
||||
</MenuItem>
|
||||
</MenuActions>
|
||||
)
|
||||
),
|
||||
};
|
||||
});
|
||||
}, [extensions, ExtensionInstallationStateStore.anyUninstalling]
|
||||
}, [extensions, ExtensionInstallationStateStore.anyUninstalling],
|
||||
);
|
||||
|
||||
if (!ExtensionDiscovery.getInstance().isLoaded) {
|
||||
|
||||
@@ -55,7 +55,7 @@ export class NamespaceSelect extends React.Component<Props> {
|
||||
kubeWatchApi.subscribeStores([namespaceStore], {
|
||||
preload: true,
|
||||
loadOnce: true, // skip reloading namespaces on every render / page visit
|
||||
})
|
||||
}),
|
||||
]);
|
||||
}
|
||||
|
||||
|
||||
@@ -19,7 +19,7 @@
|
||||
* CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||
*/
|
||||
|
||||
import { action, comparer, computed, IReactionDisposer, IReactionOptions, makeObservable, reaction, } from "mobx";
|
||||
import { action, comparer, computed, IReactionDisposer, IReactionOptions, makeObservable, reaction } from "mobx";
|
||||
import { autoBind, createStorage, noop, ToggleSet } from "../../utils";
|
||||
import { KubeObjectStore, KubeObjectStoreLoadingParams } from "../../../common/k8s-api/kube-object.store";
|
||||
import { Namespace, namespacesApi } from "../../../common/k8s-api/endpoints/namespaces.api";
|
||||
@@ -258,7 +258,7 @@ export function getDummyNamespace(name: string) {
|
||||
name,
|
||||
uid: "",
|
||||
resourceVersion: "",
|
||||
selfLink: `/api/v1/namespaces/${name}`
|
||||
}
|
||||
selfLink: `/api/v1/namespaces/${name}`,
|
||||
},
|
||||
});
|
||||
}
|
||||
@@ -58,7 +58,7 @@ export class Namespaces extends React.Component<Props> {
|
||||
}}
|
||||
searchFilters={[
|
||||
item => item.getSearchFields(),
|
||||
item => item.getStatus()
|
||||
item => item.getStatus(),
|
||||
]}
|
||||
renderHeaderTitle="Namespaces"
|
||||
renderTableHeader={[
|
||||
|
||||
@@ -53,7 +53,7 @@ export class Endpoints extends React.Component<Props> {
|
||||
[columnId.age]: endpoint => endpoint.getTimeDiffFromNow(),
|
||||
}}
|
||||
searchFilters={[
|
||||
endpoint => endpoint.getSearchFields()
|
||||
endpoint => endpoint.getSearchFields(),
|
||||
]}
|
||||
renderHeaderTitle="Endpoints"
|
||||
renderTableHeader={[
|
||||
@@ -75,7 +75,7 @@ export class Endpoints extends React.Component<Props> {
|
||||
const lines = item.getEndpointSubsets().length || 1;
|
||||
|
||||
return lines * lineHeight + paddings;
|
||||
}
|
||||
},
|
||||
}}
|
||||
/>
|
||||
);
|
||||
|
||||
@@ -44,7 +44,7 @@ export const IngressCharts = observer(() => {
|
||||
bytesSentSuccess,
|
||||
bytesSentFailure,
|
||||
requestDurationSeconds,
|
||||
responseDurationSeconds
|
||||
responseDurationSeconds,
|
||||
] = values;
|
||||
|
||||
const datasets = [
|
||||
@@ -55,14 +55,14 @@ export const IngressCharts = observer(() => {
|
||||
label: `Bytes sent, status 2xx`,
|
||||
tooltip: `Bytes sent by Ingress controller with successful status`,
|
||||
borderColor: "#46cd9e",
|
||||
data: bytesSentSuccess.map(([x, y]) => ({ x, y }))
|
||||
data: bytesSentSuccess.map(([x, y]) => ({ x, y })),
|
||||
},
|
||||
{
|
||||
id: `${id}-bytesSentFailure`,
|
||||
label: `Bytes sent, status 5xx`,
|
||||
tooltip: `Bytes sent by Ingress controller with error status`,
|
||||
borderColor: "#cd465a",
|
||||
data: bytesSentFailure.map(([x, y]) => ({ x, y }))
|
||||
data: bytesSentFailure.map(([x, y]) => ({ x, y })),
|
||||
},
|
||||
],
|
||||
// Duration
|
||||
@@ -72,25 +72,25 @@ export const IngressCharts = observer(() => {
|
||||
label: `Request`,
|
||||
tooltip: `Request duration in seconds`,
|
||||
borderColor: "#48b18d",
|
||||
data: requestDurationSeconds.map(([x, y]) => ({ x, y }))
|
||||
data: requestDurationSeconds.map(([x, y]) => ({ x, y })),
|
||||
},
|
||||
{
|
||||
id: `${id}-responseDurationSeconds`,
|
||||
label: `Response`,
|
||||
tooltip: `Response duration in seconds`,
|
||||
borderColor: "#73ba3c",
|
||||
data: responseDurationSeconds.map(([x, y]) => ({ x, y }))
|
||||
data: responseDurationSeconds.map(([x, y]) => ({ x, y })),
|
||||
},
|
||||
]
|
||||
],
|
||||
];
|
||||
|
||||
const durationOptions: ChartOptions = {
|
||||
scales: {
|
||||
yAxes: [{
|
||||
ticks: {
|
||||
callback: value => value
|
||||
}
|
||||
}]
|
||||
callback: value => value,
|
||||
},
|
||||
}],
|
||||
},
|
||||
tooltips: {
|
||||
callbacks: {
|
||||
@@ -100,9 +100,9 @@ export const IngressCharts = observer(() => {
|
||||
const chartTooltipSec = `sec`;
|
||||
|
||||
return `${label}: ${parseFloat(value.y as string).toFixed(3)} ${chartTooltipSec}`;
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
},
|
||||
},
|
||||
};
|
||||
|
||||
const options = [memoryOptions, durationOptions];
|
||||
|
||||
@@ -79,7 +79,7 @@ export class Ingresses extends React.Component<Props> {
|
||||
const lines = item.getRoutes().length || 1;
|
||||
|
||||
return lines * lineHeight + paddings;
|
||||
}
|
||||
},
|
||||
}}
|
||||
/>
|
||||
);
|
||||
|
||||
@@ -80,7 +80,7 @@ export class NetworkPolicyDetails extends React.Component<Props> {
|
||||
else {
|
||||
return (<DrawerItem name={key} key={key}>(empty)</DrawerItem>);
|
||||
}
|
||||
})
|
||||
}),
|
||||
)}
|
||||
</>
|
||||
);
|
||||
|
||||
@@ -42,7 +42,7 @@ export class PortForwardDetails extends React.Component<Props> {
|
||||
const name = portForward.getName();
|
||||
const api = {
|
||||
"service": serviceApi,
|
||||
"pod": podsApi
|
||||
"pod": podsApi,
|
||||
}[portForward.kind];
|
||||
|
||||
if (!api) {
|
||||
|
||||
@@ -71,7 +71,7 @@ export class PortForwards extends React.Component<Props> {
|
||||
navigation.push(portForwardsURL({
|
||||
params: {
|
||||
forwardport: String(item.getForwardPort()),
|
||||
}
|
||||
},
|
||||
}));
|
||||
};
|
||||
|
||||
@@ -135,7 +135,7 @@ export class PortForwards extends React.Component<Props> {
|
||||
/>
|
||||
)}
|
||||
customizeRemoveDialog={selectedItems => ({
|
||||
message: this.renderRemoveDialogMessage(selectedItems)
|
||||
message: this.renderRemoveDialogMessage(selectedItems),
|
||||
})}
|
||||
detailsItem={this.selectedPortForward}
|
||||
onDetails={this.onDetails}
|
||||
|
||||
@@ -58,7 +58,7 @@ export const NodeCharts = observer(() => {
|
||||
podUsage,
|
||||
podCapacity,
|
||||
fsSize,
|
||||
fsUsage
|
||||
fsUsage,
|
||||
} = mapValues(metrics, metric => normalizeMetrics(metric).data.result[0].values);
|
||||
|
||||
const datasets = [
|
||||
@@ -69,29 +69,29 @@ export const NodeCharts = observer(() => {
|
||||
label: `Usage`,
|
||||
tooltip: `CPU cores usage`,
|
||||
borderColor: "#3D90CE",
|
||||
data: cpuUsage.map(([x, y]) => ({ x, y }))
|
||||
data: cpuUsage.map(([x, y]) => ({ x, y })),
|
||||
},
|
||||
{
|
||||
id: `${id}-cpuRequests`,
|
||||
label: `Requests`,
|
||||
tooltip: `CPU requests`,
|
||||
borderColor: "#30b24d",
|
||||
data: cpuRequests.map(([x, y]) => ({ x, y }))
|
||||
data: cpuRequests.map(([x, y]) => ({ x, y })),
|
||||
},
|
||||
{
|
||||
id: `${id}-cpuAllocatableCapacity`,
|
||||
label: `Allocatable Capacity`,
|
||||
tooltip: `CPU allocatable capacity`,
|
||||
borderColor: "#032b4d",
|
||||
data: cpuAllocatableCapacity.map(([x, y]) => ({ x, y }))
|
||||
data: cpuAllocatableCapacity.map(([x, y]) => ({ x, y })),
|
||||
},
|
||||
{
|
||||
id: `${id}-cpuCapacity`,
|
||||
label: `Capacity`,
|
||||
tooltip: `CPU capacity`,
|
||||
borderColor: chartCapacityColor,
|
||||
data: cpuCapacity.map(([x, y]) => ({ x, y }))
|
||||
}
|
||||
data: cpuCapacity.map(([x, y]) => ({ x, y })),
|
||||
},
|
||||
],
|
||||
// Memory
|
||||
[
|
||||
@@ -100,36 +100,36 @@ export const NodeCharts = observer(() => {
|
||||
label: `Usage`,
|
||||
tooltip: `Memory usage`,
|
||||
borderColor: "#c93dce",
|
||||
data: memoryUsage.map(([x, y]) => ({ x, y }))
|
||||
data: memoryUsage.map(([x, y]) => ({ x, y })),
|
||||
},
|
||||
{
|
||||
id: `${id}-workloadMemoryUsage`,
|
||||
label: `Workload Memory Usage`,
|
||||
tooltip: `Workload memory usage`,
|
||||
borderColor: "#9cd3ce",
|
||||
data: workloadMemoryUsage.map(([x, y]) => ({ x, y }))
|
||||
data: workloadMemoryUsage.map(([x, y]) => ({ x, y })),
|
||||
},
|
||||
{
|
||||
id: "memoryRequests",
|
||||
label: `Requests`,
|
||||
tooltip: `Memory requests`,
|
||||
borderColor: "#30b24d",
|
||||
data: memoryRequests.map(([x, y]) => ({ x, y }))
|
||||
data: memoryRequests.map(([x, y]) => ({ x, y })),
|
||||
},
|
||||
{
|
||||
id: `${id}-memoryAllocatableCapacity`,
|
||||
label: `Allocatable Capacity`,
|
||||
tooltip: `Memory allocatable capacity`,
|
||||
borderColor: "#032b4d",
|
||||
data: memoryAllocatableCapacity.map(([x, y]) => ({ x, y }))
|
||||
data: memoryAllocatableCapacity.map(([x, y]) => ({ x, y })),
|
||||
},
|
||||
{
|
||||
id: `${id}-memoryCapacity`,
|
||||
label: `Capacity`,
|
||||
tooltip: `Memory capacity`,
|
||||
borderColor: chartCapacityColor,
|
||||
data: memoryCapacity.map(([x, y]) => ({ x, y }))
|
||||
}
|
||||
data: memoryCapacity.map(([x, y]) => ({ x, y })),
|
||||
},
|
||||
],
|
||||
// Disk
|
||||
[
|
||||
@@ -138,15 +138,15 @@ export const NodeCharts = observer(() => {
|
||||
label: `Usage`,
|
||||
tooltip: `Node filesystem usage in bytes`,
|
||||
borderColor: "#ffc63d",
|
||||
data: fsUsage.map(([x, y]) => ({ x, y }))
|
||||
data: fsUsage.map(([x, y]) => ({ x, y })),
|
||||
},
|
||||
{
|
||||
id: `${id}-fsSize`,
|
||||
label: `Size`,
|
||||
tooltip: `Node filesystem size in bytes`,
|
||||
borderColor: chartCapacityColor,
|
||||
data: fsSize.map(([x, y]) => ({ x, y }))
|
||||
}
|
||||
data: fsSize.map(([x, y]) => ({ x, y })),
|
||||
},
|
||||
],
|
||||
// Pods
|
||||
[
|
||||
@@ -155,25 +155,25 @@ export const NodeCharts = observer(() => {
|
||||
label: `Usage`,
|
||||
tooltip: `Number of running Pods`,
|
||||
borderColor: "#30b24d",
|
||||
data: podUsage.map(([x, y]) => ({ x, y }))
|
||||
data: podUsage.map(([x, y]) => ({ x, y })),
|
||||
},
|
||||
{
|
||||
id: `${id}-podCapacity`,
|
||||
label: `Capacity`,
|
||||
tooltip: `Node Pods capacity`,
|
||||
borderColor: chartCapacityColor,
|
||||
data: podCapacity.map(([x, y]) => ({ x, y }))
|
||||
}
|
||||
]
|
||||
data: podCapacity.map(([x, y]) => ({ x, y })),
|
||||
},
|
||||
],
|
||||
];
|
||||
|
||||
const podOptions: ChartOptions = {
|
||||
scales: {
|
||||
yAxes: [{
|
||||
ticks: {
|
||||
callback: value => value
|
||||
}
|
||||
}]
|
||||
callback: value => value,
|
||||
},
|
||||
}],
|
||||
},
|
||||
tooltips: {
|
||||
callbacks: {
|
||||
@@ -182,9 +182,9 @@ export const NodeCharts = observer(() => {
|
||||
const value = data[index] as ChartPoint;
|
||||
|
||||
return `${label}: ${value.y}`;
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
},
|
||||
},
|
||||
};
|
||||
|
||||
const options = [cpuOptions, memoryOptions, memoryOptions, podOptions];
|
||||
|
||||
@@ -164,8 +164,8 @@ export class NodeDetails extends React.Component<Props> {
|
||||
<div key={key} className="flex gaps align-center">
|
||||
<div className="name">{upperFirst(key)}</div>
|
||||
<div className="value">{value}</div>
|
||||
</div>
|
||||
)
|
||||
</div>,
|
||||
),
|
||||
}}
|
||||
/>
|
||||
);
|
||||
|
||||
@@ -115,7 +115,7 @@ export class Nodes extends React.Component<Props> {
|
||||
value={usage}
|
||||
tooltip={{
|
||||
preferredPositions: TooltipPosition.BOTTOM,
|
||||
children: `CPU: ${cpuUsagePercentLabel}\%, cores: ${cores}`
|
||||
children: `CPU: ${cpuUsagePercentLabel}\%, cores: ${cores}`,
|
||||
}}
|
||||
/>
|
||||
);
|
||||
@@ -134,7 +134,7 @@ export class Nodes extends React.Component<Props> {
|
||||
value={usage}
|
||||
tooltip={{
|
||||
preferredPositions: TooltipPosition.BOTTOM,
|
||||
children: `Memory: ${Math.ceil(usage * 100 / capacity)}%, ${bytesToUnits(usage, 3)}`
|
||||
children: `Memory: ${Math.ceil(usage * 100 / capacity)}%, ${bytesToUnits(usage, 3)}`,
|
||||
}}
|
||||
/>
|
||||
);
|
||||
@@ -153,7 +153,7 @@ export class Nodes extends React.Component<Props> {
|
||||
value={usage}
|
||||
tooltip={{
|
||||
preferredPositions: TooltipPosition.BOTTOM,
|
||||
children: `Disk: ${Math.ceil(usage * 100 / capacity)}%, ${bytesToUnits(usage, 3)}`
|
||||
children: `Disk: ${Math.ceil(usage * 100 / capacity)}%, ${bytesToUnits(usage, 3)}`,
|
||||
}}
|
||||
/>
|
||||
);
|
||||
@@ -177,7 +177,7 @@ export class Nodes extends React.Component<Props> {
|
||||
<div key={key} className="flex gaps align-center">
|
||||
<div className="name">{upperFirst(key)}</div>
|
||||
<div className="value">{value}</div>
|
||||
</div>
|
||||
</div>,
|
||||
)}
|
||||
</Tooltip>
|
||||
</div>);
|
||||
|
||||
@@ -56,7 +56,7 @@ export class AddHelmRepoDialog extends React.Component<Props> {
|
||||
private emptyRepo = { name: "", url: "", username: "", password: "", insecureSkipTlsVerify: false, caFile:"", keyFile: "", certFile: "" };
|
||||
|
||||
private static keyExtensions = ["key", "keystore", "jks", "p12", "pfx", "pem"];
|
||||
private static certExtensions = ["crt", "cer", "ca-bundle", "p7b", "p7c" , "p7s", "p12", "pfx", "pem"];
|
||||
private static certExtensions = ["crt", "cer", "ca-bundle", "p7b", "p7c", "p7s", "p12", "pfx", "pem"];
|
||||
|
||||
constructor(props: Props) {
|
||||
super(props);
|
||||
@@ -96,8 +96,8 @@ export class AddHelmRepoDialog extends React.Component<Props> {
|
||||
buttonLabel: `Use file`,
|
||||
filters: [
|
||||
fileFilter,
|
||||
{ name: "Any", extensions: ["*"] }
|
||||
]
|
||||
{ name: "Any", extensions: ["*"] },
|
||||
],
|
||||
});
|
||||
|
||||
if (!canceled && filePaths.length) {
|
||||
@@ -116,7 +116,7 @@ export class AddHelmRepoDialog extends React.Component<Props> {
|
||||
}
|
||||
}
|
||||
|
||||
renderFileInput(placeholder:string, fileType:FileType ,fileExtensions:string[]){
|
||||
renderFileInput(placeholder:string, fileType:FileType, fileExtensions:string[]){
|
||||
return(
|
||||
<div className="flex gaps align-center">
|
||||
<Input
|
||||
|
||||
@@ -31,7 +31,7 @@ enum EditorLineNumbersStyles {
|
||||
on = "On",
|
||||
off = "Off",
|
||||
relative = "Relative",
|
||||
interval = "Interval"
|
||||
interval = "Interval",
|
||||
}
|
||||
|
||||
export const Editor = observer(() => {
|
||||
|
||||
@@ -31,7 +31,7 @@ export const Extensions = observer(() => {
|
||||
<section id="extensions">
|
||||
<h2>Extensions</h2>
|
||||
{extensions.filter(e => !e.showInPreferencesTab).map((extension) =>
|
||||
<ExtensionSettings key={extension.id} {...extension}/>
|
||||
<ExtensionSettings key={extension.id} {...extension}/>,
|
||||
)}
|
||||
</section>
|
||||
);
|
||||
|
||||
@@ -91,7 +91,7 @@ export class HelmCharts extends React.Component {
|
||||
this.addedRepos.delete(repo.name);
|
||||
} catch (err) {
|
||||
Notifications.error(
|
||||
<>Removing helm branch <b>{repo.name}</b> has failed: {String(err)}</>
|
||||
<>Removing helm branch <b>{repo.name}</b> has failed: {String(err)}</>,
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -97,7 +97,7 @@ export class KubeconfigSyncs extends React.Component {
|
||||
disposeOnUnmount(this, [
|
||||
reaction(() => Array.from(this.syncs.entries(), ([filePath, { data }]) => [filePath, data]), syncs => {
|
||||
UserStore.getInstance().syncKubeconfigEntries.replace(syncs);
|
||||
})
|
||||
}),
|
||||
]);
|
||||
}
|
||||
|
||||
|
||||
@@ -36,7 +36,7 @@ export const KubectlBinaries = observer(() => {
|
||||
const pathValidator = downloadPath ? InputValidators.isPath : undefined;
|
||||
const downloadMirrorOptions: SelectOption<string>[] = Array.from(
|
||||
packageMirrors.entries(),
|
||||
([value, { label, platforms }]) => ({ value, label, platforms })
|
||||
([value, { label, platforms }]) => ({ value, label, platforms }),
|
||||
);
|
||||
|
||||
const save = () => {
|
||||
|
||||
@@ -80,7 +80,7 @@ export class PersistentVolumeClaimDetails extends React.Component<Props> {
|
||||
const { metrics } = this;
|
||||
const pods = volumeClaim.getPods(podsStore.items);
|
||||
const metricTabs = [
|
||||
"Disk"
|
||||
"Disk",
|
||||
];
|
||||
const isMetricHidden = getActiveClusterEntity()?.isMetricHidden(ClusterMetricsResourceType.VolumeClaim);
|
||||
|
||||
|
||||
@@ -48,15 +48,15 @@ export const VolumeClaimDiskChart = observer(() => {
|
||||
label: `Usage`,
|
||||
tooltip: `Volume disk usage`,
|
||||
borderColor: "#ffc63d",
|
||||
data: usage.map(([x, y]) => ({ x, y }))
|
||||
data: usage.map(([x, y]) => ({ x, y })),
|
||||
},
|
||||
{
|
||||
id: `${id}-diskCapacity`,
|
||||
label: `Capacity`,
|
||||
tooltip: `Volume disk capacity`,
|
||||
borderColor: chartCapacityColor,
|
||||
data: capacity.map(([x, y]) => ({ x, y }))
|
||||
}
|
||||
data: capacity.map(([x, y]) => ({ x, y })),
|
||||
},
|
||||
];
|
||||
|
||||
return (
|
||||
|
||||
@@ -85,7 +85,7 @@ export class PersistentVolumeClaims extends React.Component<Props> {
|
||||
const pods = pvc.getPods(podsStore.items);
|
||||
const { storageClassName } = pvc.spec;
|
||||
const storageClassDetailsUrl = getDetailsUrl(storageClassApi.getUrl({
|
||||
name: storageClassName
|
||||
name: storageClassName,
|
||||
}));
|
||||
|
||||
return [
|
||||
|
||||
@@ -35,7 +35,7 @@ export class PersistentVolumesStore extends KubeObjectStore<PersistentVolume> {
|
||||
|
||||
getByStorageClass(storageClass: StorageClass): PersistentVolume[] {
|
||||
return this.items.filter(volume =>
|
||||
volume.getStorageClassName() === storageClass.getName()
|
||||
volume.getStorageClassName() === storageClass.getName(),
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -77,7 +77,7 @@ export class PersistentVolumes extends React.Component<Props> {
|
||||
renderTableContents={volume => {
|
||||
const { claimRef, storageClassName } = volume.spec;
|
||||
const storageClassDetailsUrl = getDetailsUrl(storageClassApi.getUrl({
|
||||
name: storageClassName
|
||||
name: storageClassName,
|
||||
}));
|
||||
|
||||
return [
|
||||
@@ -93,7 +93,7 @@ export class PersistentVolumes extends React.Component<Props> {
|
||||
</Link>
|
||||
),
|
||||
volume.getAge(),
|
||||
{ title: volume.getStatus(), className: volume.getStatus().toLowerCase() }
|
||||
{ title: volume.getStatus(), className: volume.getStatus().toLowerCase() },
|
||||
];
|
||||
}}
|
||||
/>
|
||||
|
||||
@@ -53,7 +53,7 @@ export class ClusterRoleBindingDetails extends React.Component<Props> {
|
||||
disposeOnUnmount(this, [
|
||||
reaction(() => this.props.object, () => {
|
||||
this.selectedSubjects.clear();
|
||||
})
|
||||
}),
|
||||
]);
|
||||
}
|
||||
|
||||
@@ -66,7 +66,7 @@ export class ClusterRoleBindingDetails extends React.Component<Props> {
|
||||
labelOk: `Remove`,
|
||||
message: (
|
||||
<p>Remove selected bindings for <b>{clusterRoleBinding.getName()}</b>?</p>
|
||||
)
|
||||
),
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
@@ -125,7 +125,7 @@ export class ClusterRoleBindingDialog extends React.Component<Props> {
|
||||
return {
|
||||
value: `${account.getName()}%${account.getNs()}`,
|
||||
account,
|
||||
label: <><Icon small material="account_box" /> {name} ({namespace})</>
|
||||
label: <><Icon small material="account_box" /> {name} ({namespace})</>,
|
||||
};
|
||||
});
|
||||
}
|
||||
@@ -152,7 +152,7 @@ export class ClusterRoleBindingDialog extends React.Component<Props> {
|
||||
|
||||
this.selectedAccounts.replace(
|
||||
serviceAccountsStore.items
|
||||
.filter(sa => accountNames.has(sa.getName()))
|
||||
.filter(sa => accountNames.has(sa.getName())),
|
||||
);
|
||||
this.selectedUsers.replace(uSubjects.map(user => user.name));
|
||||
this.selectedGroups.replace(gSubjects.map(group => group.name));
|
||||
@@ -178,7 +178,7 @@ export class ClusterRoleBindingDialog extends React.Component<Props> {
|
||||
roleRef: {
|
||||
name: selectedRoleRef.getName(),
|
||||
kind: selectedRoleRef.kind,
|
||||
}
|
||||
},
|
||||
});
|
||||
|
||||
showDetails(selfLink);
|
||||
|
||||
@@ -36,7 +36,7 @@ export class ClusterRoleBindingsStore extends KubeObjectStore<ClusterRoleBinding
|
||||
protected sortItems(items: ClusterRoleBinding[]) {
|
||||
return super.sortItems(items, [
|
||||
clusterRoleBinding => clusterRoleBinding.kind,
|
||||
clusterRoleBinding => clusterRoleBinding.getName()
|
||||
clusterRoleBinding => clusterRoleBinding.getName(),
|
||||
]);
|
||||
}
|
||||
|
||||
|
||||
@@ -48,7 +48,7 @@ export class RoleBindingDetails extends React.Component<Props> {
|
||||
disposeOnUnmount(this, [
|
||||
reaction(() => this.props.object, () => {
|
||||
this.selectedSubjects.clear();
|
||||
})
|
||||
}),
|
||||
]);
|
||||
}
|
||||
|
||||
@@ -62,7 +62,7 @@ export class RoleBindingDetails extends React.Component<Props> {
|
||||
labelOk: `Remove`,
|
||||
message: (
|
||||
<p>Remove selected bindings for <b>{roleBinding.getName()}</b>?</p>
|
||||
)
|
||||
),
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
@@ -95,11 +95,11 @@ export class RoleBindingDialog extends React.Component<Props> {
|
||||
}));
|
||||
const users = Array.from(this.selectedUsers, user => ({
|
||||
name: user,
|
||||
kind: "User" as const
|
||||
kind: "User" as const,
|
||||
}));
|
||||
const groups = Array.from(this.selectedGroups, group => ({
|
||||
name: group,
|
||||
kind: "Group" as const
|
||||
kind: "Group" as const,
|
||||
}));
|
||||
|
||||
return [
|
||||
@@ -130,7 +130,7 @@ export class RoleBindingDialog extends React.Component<Props> {
|
||||
return {
|
||||
value: `${account.getName()}%${account.getNs()}`,
|
||||
account,
|
||||
label: <><Icon small material="account_box" /> {name} ({namespace})</>
|
||||
label: <><Icon small material="account_box" /> {name} ({namespace})</>,
|
||||
};
|
||||
});
|
||||
}
|
||||
@@ -159,7 +159,7 @@ export class RoleBindingDialog extends React.Component<Props> {
|
||||
|
||||
this.selectedAccounts.replace(
|
||||
serviceAccountsStore.items
|
||||
.filter(sa => accountNames.has(sa.getName()))
|
||||
.filter(sa => accountNames.has(sa.getName())),
|
||||
);
|
||||
this.selectedUsers.replace(uSubjects.map(user => user.name));
|
||||
this.selectedGroups.replace(gSubjects.map(group => group.name));
|
||||
@@ -186,7 +186,7 @@ export class RoleBindingDialog extends React.Component<Props> {
|
||||
roleRef: {
|
||||
name: selectedRoleRef.getName(),
|
||||
kind: selectedRoleRef.kind,
|
||||
}
|
||||
},
|
||||
});
|
||||
|
||||
showDetails(roleBinding.selfLink);
|
||||
|
||||
@@ -31,7 +31,7 @@ export class RoleBindingsStore extends KubeObjectStore<RoleBinding> {
|
||||
protected sortItems(items: RoleBinding[]) {
|
||||
return super.sortItems(items, [
|
||||
roleBinding => roleBinding.kind,
|
||||
roleBinding => roleBinding.getName()
|
||||
roleBinding => roleBinding.getName(),
|
||||
]);
|
||||
}
|
||||
|
||||
|
||||
@@ -79,7 +79,7 @@ export class ServiceAccountsDetails extends React.Component<Props> {
|
||||
}
|
||||
|
||||
return secrets.map(secret =>
|
||||
<ServiceAccountsSecret key={secret.getId()} secret={secret}/>
|
||||
<ServiceAccountsSecret key={secret.getId()} secret={secret}/>,
|
||||
);
|
||||
}
|
||||
|
||||
@@ -123,9 +123,9 @@ export class ServiceAccountsDetails extends React.Component<Props> {
|
||||
name,
|
||||
uid: null,
|
||||
selfLink: null,
|
||||
resourceVersion: null
|
||||
resourceVersion: null,
|
||||
},
|
||||
type: SecretType.Opaque
|
||||
type: SecretType.Opaque,
|
||||
});
|
||||
}
|
||||
|
||||
@@ -137,7 +137,7 @@ export class ServiceAccountsDetails extends React.Component<Props> {
|
||||
}
|
||||
const tokens = secretsStore.items.filter(secret =>
|
||||
secret.getNs() == serviceAccount.getNs() &&
|
||||
secret.getAnnotations().some(annot => annot == `kubernetes.io/service-account.name: ${serviceAccount.getName()}`)
|
||||
secret.getAnnotations().some(annot => annot == `kubernetes.io/service-account.name: ${serviceAccount.getName()}`),
|
||||
);
|
||||
const imagePullSecrets = serviceAccount.getImagePullSecrets();
|
||||
|
||||
|
||||
@@ -38,7 +38,7 @@ export function getRoleRefSelectOption<T extends KubeObject>(item: T): SelectOpt
|
||||
material={item.kind === "Role" ? "person" : "people"}
|
||||
tooltip={{
|
||||
preferredPositions: TooltipPosition.LEFT,
|
||||
children: item.kind
|
||||
children: item.kind,
|
||||
}}
|
||||
/>
|
||||
{" "}
|
||||
|
||||
@@ -35,7 +35,7 @@ jest.mock(
|
||||
app: {
|
||||
getPath: () => "tmp",
|
||||
},
|
||||
})
|
||||
}),
|
||||
);
|
||||
|
||||
describe("<Welcome/>", () => {
|
||||
@@ -56,8 +56,8 @@ describe("<Welcome/>", () => {
|
||||
|
||||
WelcomeBannerRegistry.getInstance().getItems = jest.fn().mockImplementationOnce(() => [
|
||||
{
|
||||
Banner: () => <div data-testid={testId} />
|
||||
}
|
||||
Banner: () => <div data-testid={testId} />,
|
||||
},
|
||||
]);
|
||||
|
||||
const { container } = render(<Welcome />);
|
||||
@@ -70,12 +70,12 @@ describe("<Welcome/>", () => {
|
||||
WelcomeBannerRegistry.getInstance().getItems = jest.fn().mockImplementationOnce(() => [
|
||||
{
|
||||
width: 100,
|
||||
Banner: () => <div />
|
||||
Banner: () => <div />,
|
||||
},
|
||||
{
|
||||
width: 800,
|
||||
Banner: () => <div />
|
||||
}
|
||||
Banner: () => <div />,
|
||||
},
|
||||
]);
|
||||
|
||||
render(<Welcome />);
|
||||
@@ -85,10 +85,10 @@ describe("<Welcome/>", () => {
|
||||
width: `800px`,
|
||||
});
|
||||
expect(screen.queryByTestId("welcome-text-container")).toHaveStyle({
|
||||
width: `${defaultWidth}px`
|
||||
width: `${defaultWidth}px`,
|
||||
});
|
||||
expect(screen.queryByTestId("welcome-menu-container")).toHaveStyle({
|
||||
width: `${defaultWidth}px`
|
||||
width: `${defaultWidth}px`,
|
||||
});
|
||||
});
|
||||
});
|
||||
@@ -57,18 +57,18 @@ export class Welcome extends React.Component {
|
||||
navButtonsAlwaysInvisible={true}
|
||||
indicatorIconButtonProps={{
|
||||
style: {
|
||||
color: "var(--iconActiveBackground)"
|
||||
}
|
||||
color: "var(--iconActiveBackground)",
|
||||
},
|
||||
}}
|
||||
activeIndicatorIconButtonProps={{
|
||||
style: {
|
||||
color: "var(--iconActiveColor)"
|
||||
}
|
||||
color: "var(--iconActiveColor)",
|
||||
},
|
||||
}}
|
||||
interval={8000}
|
||||
>
|
||||
{welcomeBanner.map((item, index) =>
|
||||
<item.Banner key={index} />
|
||||
<item.Banner key={index} />,
|
||||
)}
|
||||
</Carousel>
|
||||
) : <Icon svg="logo-lens" className="logo" />}
|
||||
|
||||
@@ -87,7 +87,7 @@ export class CronJobTriggerDialog extends Component<Props> {
|
||||
try {
|
||||
const cronjobDefinition = await cronJobApi.get({
|
||||
name: cronjob.getName(),
|
||||
namespace: cronjob.getNs()
|
||||
namespace: cronjob.getNs(),
|
||||
});
|
||||
|
||||
await jobApi.create({
|
||||
@@ -104,7 +104,7 @@ export class CronJobTriggerDialog extends Component<Props> {
|
||||
name: cronjob.metadata.name,
|
||||
uid: cronjob.metadata.uid,
|
||||
}],
|
||||
} as KubeObjectMetadata
|
||||
} as KubeObjectMetadata,
|
||||
});
|
||||
|
||||
close();
|
||||
|
||||
@@ -44,7 +44,7 @@ const dialogState = observable.object({
|
||||
@observer
|
||||
export class DeploymentScaleDialog extends Component<Props> {
|
||||
static defaultProps = {
|
||||
deploymentApi
|
||||
deploymentApi,
|
||||
};
|
||||
|
||||
@observable ready = false;
|
||||
|
||||
@@ -41,7 +41,7 @@ export class JobStore extends KubeObjectStore<Job> {
|
||||
getJobsByOwner(cronJob: CronJob) {
|
||||
return this.items.filter(job =>
|
||||
job.getNs() == cronJob.getNs() &&
|
||||
job.getOwnerRefs().find(ref => ref.name === cronJob.getName() && ref.kind === cronJob.kind)
|
||||
job.getOwnerRefs().find(ref => ref.name === cronJob.getName() && ref.kind === cronJob.kind),
|
||||
);
|
||||
}
|
||||
|
||||
|
||||
@@ -81,7 +81,7 @@ export class Jobs extends React.Component<Props> {
|
||||
condition && {
|
||||
title: condition.type,
|
||||
className: kebabCase(condition.type),
|
||||
}
|
||||
},
|
||||
];
|
||||
}}
|
||||
/>
|
||||
|
||||
@@ -68,8 +68,8 @@ export class OverviewWorkloadStatus extends React.Component<Props> {
|
||||
datasets: [{
|
||||
data: [1],
|
||||
backgroundColor: [ThemeStore.getInstance().activeTheme.colors.pieChartDefaultColor],
|
||||
label: "Empty"
|
||||
}]
|
||||
label: "Empty",
|
||||
}],
|
||||
};
|
||||
|
||||
if (statuses.some(([, val]) => val > 0)) {
|
||||
|
||||
@@ -36,13 +36,13 @@ const tolerations: IToleration[] =[
|
||||
key: "CriticalAddonsOnly",
|
||||
operator: "Exist",
|
||||
effect: "NoExecute",
|
||||
tolerationSeconds: 3600
|
||||
tolerationSeconds: 3600,
|
||||
},
|
||||
{
|
||||
key: "node.kubernetes.io/not-ready",
|
||||
operator: "NoExist",
|
||||
effect: "NoSchedule",
|
||||
tolerationSeconds: 7200
|
||||
tolerationSeconds: 7200,
|
||||
},
|
||||
];
|
||||
|
||||
|
||||
@@ -45,7 +45,7 @@ export const ContainerCharts = observer(() => {
|
||||
memoryUsage,
|
||||
memoryRequests,
|
||||
memoryLimits,
|
||||
fsUsage
|
||||
fsUsage,
|
||||
} = mapValues(metrics, metric => normalizeMetrics(metric).data.result[0].values);
|
||||
|
||||
const datasets = [
|
||||
@@ -56,22 +56,22 @@ export const ContainerCharts = observer(() => {
|
||||
label: `Usage`,
|
||||
tooltip: `CPU cores usage`,
|
||||
borderColor: "#3D90CE",
|
||||
data: cpuUsage.map(([x, y]) => ({ x, y }))
|
||||
data: cpuUsage.map(([x, y]) => ({ x, y })),
|
||||
},
|
||||
{
|
||||
id: "cpuRequests",
|
||||
label: `Requests`,
|
||||
tooltip: `CPU requests`,
|
||||
borderColor: "#30b24d",
|
||||
data: cpuRequests.map(([x, y]) => ({ x, y }))
|
||||
data: cpuRequests.map(([x, y]) => ({ x, y })),
|
||||
},
|
||||
{
|
||||
id: "cpuLimits",
|
||||
label: `Limits`,
|
||||
tooltip: `CPU limits`,
|
||||
borderColor: chartCapacityColor,
|
||||
data: cpuLimits.map(([x, y]) => ({ x, y }))
|
||||
}
|
||||
data: cpuLimits.map(([x, y]) => ({ x, y })),
|
||||
},
|
||||
],
|
||||
// Memory
|
||||
[
|
||||
@@ -80,22 +80,22 @@ export const ContainerCharts = observer(() => {
|
||||
label: `Usage`,
|
||||
tooltip: `Memory usage`,
|
||||
borderColor: "#c93dce",
|
||||
data: memoryUsage.map(([x, y]) => ({ x, y }))
|
||||
data: memoryUsage.map(([x, y]) => ({ x, y })),
|
||||
},
|
||||
{
|
||||
id: "memoryRequests",
|
||||
label: `Requests`,
|
||||
tooltip: `Memory requests`,
|
||||
borderColor: "#30b24d",
|
||||
data: memoryRequests.map(([x, y]) => ({ x, y }))
|
||||
data: memoryRequests.map(([x, y]) => ({ x, y })),
|
||||
},
|
||||
{
|
||||
id: "memoryLimits",
|
||||
label: `Limits`,
|
||||
tooltip: `Memory limits`,
|
||||
borderColor: chartCapacityColor,
|
||||
data: memoryLimits.map(([x, y]) => ({ x, y }))
|
||||
}
|
||||
data: memoryLimits.map(([x, y]) => ({ x, y })),
|
||||
},
|
||||
],
|
||||
// Filesystem
|
||||
[
|
||||
@@ -104,9 +104,9 @@ export const ContainerCharts = observer(() => {
|
||||
label: `Usage`,
|
||||
tooltip: `Bytes consumed on this filesystem`,
|
||||
borderColor: "#ffc63d",
|
||||
data: fsUsage.map(([x, y]) => ({ x, y }))
|
||||
}
|
||||
]
|
||||
data: fsUsage.map(([x, y]) => ({ x, y })),
|
||||
},
|
||||
],
|
||||
];
|
||||
|
||||
const options = tabId == 0 ? cpuOptions : memoryOptions;
|
||||
|
||||
@@ -52,7 +52,7 @@ export const PodCharts = observer(() => {
|
||||
memoryUsage,
|
||||
fsUsage,
|
||||
networkReceive,
|
||||
networkTransmit
|
||||
networkTransmit,
|
||||
} = mapValues(metrics, metric => normalizeMetrics(metric).data.result[0].values);
|
||||
|
||||
const datasets = [
|
||||
@@ -63,8 +63,8 @@ export const PodCharts = observer(() => {
|
||||
label: `Usage`,
|
||||
tooltip: `Container CPU cores usage`,
|
||||
borderColor: "#3D90CE",
|
||||
data: cpuUsage.map(([x, y]) => ({ x, y }))
|
||||
}
|
||||
data: cpuUsage.map(([x, y]) => ({ x, y })),
|
||||
},
|
||||
],
|
||||
// Memory
|
||||
[
|
||||
@@ -73,7 +73,7 @@ export const PodCharts = observer(() => {
|
||||
label: `Usage`,
|
||||
tooltip: `Container memory usage`,
|
||||
borderColor: "#c93dce",
|
||||
data: memoryUsage.map(([x, y]) => ({ x, y }))
|
||||
data: memoryUsage.map(([x, y]) => ({ x, y })),
|
||||
},
|
||||
],
|
||||
// Network
|
||||
@@ -83,15 +83,15 @@ export const PodCharts = observer(() => {
|
||||
label: `Receive`,
|
||||
tooltip: `Bytes received by all containers`,
|
||||
borderColor: "#64c5d6",
|
||||
data: networkReceive.map(([x, y]) => ({ x, y }))
|
||||
data: networkReceive.map(([x, y]) => ({ x, y })),
|
||||
},
|
||||
{
|
||||
id: `${id}-networkTransmit`,
|
||||
label: `Transmit`,
|
||||
tooltip: `Bytes transmitted from all containers`,
|
||||
borderColor: "#46cd9e",
|
||||
data: networkTransmit.map(([x, y]) => ({ x, y }))
|
||||
}
|
||||
data: networkTransmit.map(([x, y]) => ({ x, y })),
|
||||
},
|
||||
],
|
||||
// Filesystem
|
||||
[
|
||||
@@ -100,9 +100,9 @@ export const PodCharts = observer(() => {
|
||||
label: `Usage`,
|
||||
tooltip: `Bytes consumed on this filesystem`,
|
||||
borderColor: "#ffc63d",
|
||||
data: fsUsage.map(([x, y]) => ({ x, y }))
|
||||
}
|
||||
]
|
||||
data: fsUsage.map(([x, y]) => ({ x, y })),
|
||||
},
|
||||
],
|
||||
];
|
||||
|
||||
return (
|
||||
|
||||
@@ -139,7 +139,7 @@ export const ContainerEnvironment = observer((props: Props) => {
|
||||
return Object.keys(secret.data).map(key => {
|
||||
const secretKeyRef = {
|
||||
name: secret.getName(),
|
||||
key
|
||||
key,
|
||||
};
|
||||
|
||||
const value = (
|
||||
|
||||
@@ -62,7 +62,7 @@ export class PodDetailsList extends React.Component<Props> {
|
||||
componentDidMount() {
|
||||
this.metricsWatcher.start(true);
|
||||
disposeOnUnmount(this, [
|
||||
reaction(() => this.props.owner, () => this.metricsWatcher.restart(true))
|
||||
reaction(() => this.props.owner, () => this.metricsWatcher.restart(true)),
|
||||
]);
|
||||
}
|
||||
|
||||
|
||||
@@ -44,7 +44,7 @@ export class PodDetailsSecrets extends Component<Props> {
|
||||
pod.getSecrets().map(secretName => secretsApi.get({
|
||||
name: secretName,
|
||||
namespace: pod.getNs(),
|
||||
}))
|
||||
})),
|
||||
);
|
||||
|
||||
secrets.forEach(secret => secret && this.secrets.set(secret.getName(), secret));
|
||||
|
||||
@@ -63,7 +63,7 @@ export class PodDetails extends React.Component<Props> {
|
||||
reaction(() => this.props.object, () => {
|
||||
this.metrics = null;
|
||||
this.containerMetrics = null;
|
||||
})
|
||||
}),
|
||||
]);
|
||||
}
|
||||
|
||||
|
||||
@@ -79,7 +79,7 @@ export class PodsStore extends KubeObjectStore<Pod> {
|
||||
const metrics = this.kubeMetrics.find(metric => {
|
||||
return [
|
||||
metric.getName() === pod.getName(),
|
||||
metric.getNs() === pod.getNs()
|
||||
metric.getNs() === pod.getNs(),
|
||||
].every(v => v);
|
||||
});
|
||||
|
||||
@@ -97,7 +97,7 @@ export class PodsStore extends KubeObjectStore<Pod> {
|
||||
|
||||
return {
|
||||
cpu: total.cpu + cpuUnitsToNumber(cpu),
|
||||
memory: total.memory + unitsToBytes(memory)
|
||||
memory: total.memory + unitsToBytes(memory),
|
||||
};
|
||||
}, empty);
|
||||
}
|
||||
|
||||
@@ -67,7 +67,7 @@ export class Pods extends React.Component<Props> {
|
||||
className={cssNames(state, { ready })}
|
||||
tooltip={{
|
||||
formatters: {
|
||||
tableView: true
|
||||
tableView: true,
|
||||
},
|
||||
children: Object.keys(state).map(status => (
|
||||
<Fragment key={status}>
|
||||
@@ -81,7 +81,7 @@ export class Pods extends React.Component<Props> {
|
||||
</div>
|
||||
))}
|
||||
</Fragment>
|
||||
))
|
||||
)),
|
||||
}}
|
||||
/>
|
||||
</Fragment>
|
||||
@@ -153,7 +153,7 @@ export class Pods extends React.Component<Props> {
|
||||
: "",
|
||||
pod.getQosClass(),
|
||||
pod.getAge(),
|
||||
{ title: pod.getStatusMessage(), className: kebabCase(pod.getStatusMessage()) }
|
||||
{ title: pod.getStatusMessage(), className: kebabCase(pod.getStatusMessage()) },
|
||||
]}
|
||||
/>
|
||||
);
|
||||
|
||||
@@ -40,7 +40,7 @@ const dummyReplicaSet: ReplicaSet = {
|
||||
spec: {
|
||||
replicas: 1,
|
||||
selector: {
|
||||
matchLabels: { "label": "label" }
|
||||
matchLabels: { "label": "label" },
|
||||
},
|
||||
template: {
|
||||
metadata: {
|
||||
@@ -115,7 +115,7 @@ describe("<ReplicaSetScaleDialog />", () => {
|
||||
|
||||
beforeEach(() => {
|
||||
replicaSetApi = new ReplicaSetApi({
|
||||
objectConstructor: ReplicaSet
|
||||
objectConstructor: ReplicaSet,
|
||||
});
|
||||
});
|
||||
|
||||
|
||||
@@ -44,7 +44,7 @@ const dialogState = observable.object({
|
||||
@observer
|
||||
export class ReplicaSetScaleDialog extends Component<Props> {
|
||||
static defaultProps = {
|
||||
replicaSetApi
|
||||
replicaSetApi,
|
||||
};
|
||||
|
||||
@observable ready = false;
|
||||
|
||||
@@ -63,7 +63,7 @@ export class ReplicaSetStore extends KubeObjectStore<ReplicaSet> {
|
||||
|
||||
getReplicaSetsByOwner(deployment: Deployment) {
|
||||
return this.items.filter(replicaSet =>
|
||||
!!replicaSet.getOwnerRefs().find(owner => owner.uid === deployment.getId())
|
||||
!!replicaSet.getOwnerRefs().find(owner => owner.uid === deployment.getId()),
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -42,7 +42,7 @@ const dummyStatefulSet: StatefulSet = {
|
||||
serviceName: "dummy",
|
||||
replicas: 1,
|
||||
selector: {
|
||||
matchLabels: { "label": "label" }
|
||||
matchLabels: { "label": "label" },
|
||||
},
|
||||
template: {
|
||||
metadata: {
|
||||
@@ -125,7 +125,7 @@ describe("<StatefulSetScaleDialog />", () => {
|
||||
|
||||
beforeEach(() => {
|
||||
statefulSetApi = new StatefulSetApi({
|
||||
objectConstructor: StatefulSet
|
||||
objectConstructor: StatefulSet,
|
||||
});
|
||||
});
|
||||
|
||||
|
||||
@@ -44,7 +44,7 @@ const dialogState = observable.object({
|
||||
@observer
|
||||
export class StatefulSetScaleDialog extends Component<Props> {
|
||||
static defaultProps = {
|
||||
statefulSetApi
|
||||
statefulSetApi,
|
||||
};
|
||||
@observable ready = false;
|
||||
@observable currentReplicas = 0;
|
||||
|
||||
@@ -43,8 +43,8 @@ export class Workloads extends React.Component {
|
||||
title: "Overview",
|
||||
component: WorkloadsOverview,
|
||||
url: routes.overviewURL(),
|
||||
routePath: routes.overviewRoute.path.toString()
|
||||
}
|
||||
routePath: routes.overviewRoute.path.toString(),
|
||||
},
|
||||
];
|
||||
|
||||
if (isAllowedResource("pods")) {
|
||||
@@ -52,7 +52,7 @@ export class Workloads extends React.Component {
|
||||
title: "Pods",
|
||||
component: Pods,
|
||||
url: routes.podsURL(),
|
||||
routePath: routes.podsRoute.path.toString()
|
||||
routePath: routes.podsRoute.path.toString(),
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
@@ -36,13 +36,13 @@ const spec = {
|
||||
terminationGracePeriodSeconds: 1,
|
||||
dnsPolicy: "no",
|
||||
hostPID: true,
|
||||
schedulerName: "string"
|
||||
}
|
||||
}
|
||||
}
|
||||
schedulerName: "string",
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
successfulJobsHistoryLimit: 1,
|
||||
failedJobsHistoryLimit: 1
|
||||
failedJobsHistoryLimit: 1,
|
||||
};
|
||||
|
||||
const scheduledCronJob = new CronJob({
|
||||
@@ -64,7 +64,7 @@ const suspendedCronJob = new CronJob({
|
||||
resourceVersion: "suspendedCronJob",
|
||||
uid: "suspendedCronJob",
|
||||
namespace: "default",
|
||||
}
|
||||
},
|
||||
});
|
||||
|
||||
const otherSuspendedCronJob = new CronJob({
|
||||
@@ -88,7 +88,7 @@ describe("CronJob Store tests", () => {
|
||||
const statuses = Object.entries(cronJobStore.getStatuses([
|
||||
suspendedCronJob,
|
||||
otherSuspendedCronJob,
|
||||
scheduledCronJob
|
||||
scheduledCronJob,
|
||||
]));
|
||||
|
||||
expect(statuses).toEqual([
|
||||
|
||||
@@ -67,7 +67,7 @@ const runningPod = new Pod({
|
||||
ownerReferences: [{
|
||||
uid: "runningDaemonSet",
|
||||
}],
|
||||
namespace: "default"
|
||||
namespace: "default",
|
||||
},
|
||||
});
|
||||
|
||||
@@ -85,7 +85,7 @@ runningPod.status = {
|
||||
status: "True",
|
||||
lastProbeTime: 1,
|
||||
lastTransitionTime: "1",
|
||||
}
|
||||
},
|
||||
],
|
||||
hostIP: "10.0.0.1",
|
||||
podIP: "10.0.0.1",
|
||||
@@ -104,7 +104,7 @@ const pendingPod = new Pod({
|
||||
ownerReferences: [{
|
||||
uid: "pendingDaemonSet",
|
||||
}],
|
||||
namespace: "default"
|
||||
namespace: "default",
|
||||
},
|
||||
});
|
||||
|
||||
@@ -118,7 +118,7 @@ const failedPod = new Pod({
|
||||
ownerReferences: [{
|
||||
uid: "failedDaemonSet",
|
||||
}],
|
||||
namespace: "default"
|
||||
namespace: "default",
|
||||
},
|
||||
});
|
||||
|
||||
@@ -135,7 +135,7 @@ describe("DaemonSet Store tests", () => {
|
||||
podsStore.items = observable.array([
|
||||
runningPod,
|
||||
failedPod,
|
||||
pendingPod
|
||||
pendingPod,
|
||||
]);
|
||||
});
|
||||
|
||||
@@ -143,7 +143,7 @@ describe("DaemonSet Store tests", () => {
|
||||
const statuses = Object.entries(daemonSetStore.getStatuses([
|
||||
failedDaemonSet,
|
||||
runningDaemonSet,
|
||||
pendingDaemonSet
|
||||
pendingDaemonSet,
|
||||
]));
|
||||
|
||||
expect(statuses).toEqual([
|
||||
|
||||
@@ -31,7 +31,7 @@ const spec = {
|
||||
resources: {
|
||||
requests: {
|
||||
cpu: "2",
|
||||
memory: "2Gi"
|
||||
memory: "2Gi",
|
||||
},
|
||||
},
|
||||
terminationMessagePath: "test",
|
||||
@@ -44,7 +44,7 @@ const spec = {
|
||||
serviceAccountName: "test",
|
||||
serviceAccount: "test",
|
||||
securityContext: {},
|
||||
schedulerName: "test"
|
||||
schedulerName: "test",
|
||||
};
|
||||
|
||||
const runningDeployment = new Deployment({
|
||||
@@ -65,17 +65,17 @@ runningDeployment.spec = {
|
||||
type: "test",
|
||||
rollingUpdate: {
|
||||
maxSurge: 1,
|
||||
maxUnavailable: 1
|
||||
}
|
||||
maxUnavailable: 1,
|
||||
},
|
||||
},
|
||||
template: {
|
||||
metadata: {
|
||||
labels: {
|
||||
"name": "kube-state-metrics"
|
||||
}
|
||||
"name": "kube-state-metrics",
|
||||
},
|
||||
},
|
||||
spec
|
||||
}
|
||||
spec,
|
||||
},
|
||||
};
|
||||
|
||||
const failedDeployment = new Deployment({
|
||||
@@ -96,17 +96,17 @@ failedDeployment.spec = {
|
||||
type: "test",
|
||||
rollingUpdate: {
|
||||
maxSurge: 1,
|
||||
maxUnavailable: 1
|
||||
}
|
||||
maxUnavailable: 1,
|
||||
},
|
||||
},
|
||||
template: {
|
||||
metadata: {
|
||||
labels: {
|
||||
"name": "failedpods"
|
||||
}
|
||||
"name": "failedpods",
|
||||
},
|
||||
},
|
||||
spec
|
||||
}
|
||||
spec,
|
||||
},
|
||||
};
|
||||
|
||||
const pendingDeployment = new Deployment({
|
||||
@@ -127,17 +127,17 @@ pendingDeployment.spec = {
|
||||
type: "test",
|
||||
rollingUpdate: {
|
||||
maxSurge: 1,
|
||||
maxUnavailable: 1
|
||||
}
|
||||
maxUnavailable: 1,
|
||||
},
|
||||
},
|
||||
template: {
|
||||
metadata: {
|
||||
labels: {
|
||||
"mydeployment": "true"
|
||||
}
|
||||
"mydeployment": "true",
|
||||
},
|
||||
},
|
||||
spec
|
||||
}
|
||||
spec,
|
||||
},
|
||||
};
|
||||
|
||||
const runningPod = new Pod({
|
||||
@@ -148,9 +148,9 @@ const runningPod = new Pod({
|
||||
resourceVersion: "foobar",
|
||||
uid: "foobar",
|
||||
labels: {
|
||||
"name": "kube-state-metrics"
|
||||
"name": "kube-state-metrics",
|
||||
},
|
||||
namespace: "default"
|
||||
namespace: "default",
|
||||
},
|
||||
});
|
||||
|
||||
@@ -168,7 +168,7 @@ runningPod.status = {
|
||||
status: "True",
|
||||
lastProbeTime: 1,
|
||||
lastTransitionTime: "1",
|
||||
}
|
||||
},
|
||||
],
|
||||
hostIP: "10.0.0.1",
|
||||
podIP: "10.0.0.1",
|
||||
@@ -185,9 +185,9 @@ const pendingPod = new Pod({
|
||||
resourceVersion: "foobar",
|
||||
uid: "foobar-pending",
|
||||
labels: {
|
||||
"mydeployment": "true"
|
||||
"mydeployment": "true",
|
||||
},
|
||||
namespace: "default"
|
||||
namespace: "default",
|
||||
},
|
||||
});
|
||||
|
||||
@@ -199,9 +199,9 @@ const failedPod = new Pod({
|
||||
resourceVersion: "foobar",
|
||||
uid: "foobar-failed",
|
||||
labels: {
|
||||
"name": "failedpods"
|
||||
"name": "failedpods",
|
||||
},
|
||||
namespace: "default"
|
||||
namespace: "default",
|
||||
},
|
||||
});
|
||||
|
||||
@@ -219,7 +219,7 @@ describe("Deployment Store tests", () => {
|
||||
podsStore.items = observable.array([
|
||||
runningPod,
|
||||
failedPod,
|
||||
pendingPod
|
||||
pendingPod,
|
||||
]);
|
||||
});
|
||||
|
||||
@@ -227,7 +227,7 @@ describe("Deployment Store tests", () => {
|
||||
const statuses = Object.entries(deploymentStore.getStatuses([
|
||||
failedDeployment,
|
||||
runningDeployment,
|
||||
pendingDeployment
|
||||
pendingDeployment,
|
||||
]));
|
||||
|
||||
expect(statuses).toEqual([
|
||||
|
||||
@@ -78,7 +78,7 @@ const runningPod = new Pod({
|
||||
ownerReferences: [{
|
||||
uid: "runningJob",
|
||||
}],
|
||||
namespace: "default"
|
||||
namespace: "default",
|
||||
},
|
||||
});
|
||||
|
||||
@@ -96,7 +96,7 @@ runningPod.status = {
|
||||
status: "True",
|
||||
lastProbeTime: 1,
|
||||
lastTransitionTime: "1",
|
||||
}
|
||||
},
|
||||
],
|
||||
hostIP: "10.0.0.1",
|
||||
podIP: "10.0.0.1",
|
||||
@@ -115,7 +115,7 @@ const pendingPod = new Pod({
|
||||
ownerReferences: [{
|
||||
uid: "pendingJob",
|
||||
}],
|
||||
namespace: "default"
|
||||
namespace: "default",
|
||||
},
|
||||
});
|
||||
|
||||
@@ -129,7 +129,7 @@ const failedPod = new Pod({
|
||||
ownerReferences: [{
|
||||
uid: "failedJob",
|
||||
}],
|
||||
namespace: "default"
|
||||
namespace: "default",
|
||||
},
|
||||
});
|
||||
|
||||
@@ -168,7 +168,7 @@ describe("Job Store tests", () => {
|
||||
runningPod,
|
||||
failedPod,
|
||||
pendingPod,
|
||||
succeededPod
|
||||
succeededPod,
|
||||
]);
|
||||
});
|
||||
|
||||
@@ -177,7 +177,7 @@ describe("Job Store tests", () => {
|
||||
failedJob,
|
||||
succeededJob,
|
||||
runningJob,
|
||||
pendingJob
|
||||
pendingJob,
|
||||
]));
|
||||
|
||||
expect(statuses).toEqual([
|
||||
|
||||
@@ -27,7 +27,7 @@ describe("formatNodeTaint tests", () => {
|
||||
effect: "Foo",
|
||||
key: "hello",
|
||||
timeAdded: "pre",
|
||||
value: "a"
|
||||
value: "a",
|
||||
})).toBe("hello=a:Foo");
|
||||
});
|
||||
|
||||
|
||||
@@ -46,7 +46,7 @@ runningPod.status = {
|
||||
status: "True",
|
||||
lastProbeTime: 1,
|
||||
lastTransitionTime: "1",
|
||||
}
|
||||
},
|
||||
],
|
||||
hostIP: "10.0.0.1",
|
||||
podIP: "10.0.0.1",
|
||||
@@ -128,7 +128,7 @@ describe("Pod Store tests", () => {
|
||||
succeededPod,
|
||||
failedPod,
|
||||
evictedPod,
|
||||
evictedPod
|
||||
evictedPod,
|
||||
]));
|
||||
|
||||
expect(statuses).toEqual([
|
||||
|
||||
@@ -67,7 +67,7 @@ const runningPod = new Pod({
|
||||
ownerReferences: [{
|
||||
uid: "runningReplicaSet",
|
||||
}],
|
||||
namespace: "default"
|
||||
namespace: "default",
|
||||
},
|
||||
});
|
||||
|
||||
@@ -85,7 +85,7 @@ runningPod.status = {
|
||||
status: "True",
|
||||
lastProbeTime: 1,
|
||||
lastTransitionTime: "1",
|
||||
}
|
||||
},
|
||||
],
|
||||
hostIP: "10.0.0.1",
|
||||
podIP: "10.0.0.1",
|
||||
@@ -104,7 +104,7 @@ const pendingPod = new Pod({
|
||||
ownerReferences: [{
|
||||
uid: "pendingReplicaSet",
|
||||
}],
|
||||
namespace: "default"
|
||||
namespace: "default",
|
||||
},
|
||||
});
|
||||
|
||||
@@ -118,7 +118,7 @@ const failedPod = new Pod({
|
||||
ownerReferences: [{
|
||||
uid: "failedReplicaSet",
|
||||
}],
|
||||
namespace: "default"
|
||||
namespace: "default",
|
||||
},
|
||||
});
|
||||
|
||||
@@ -135,7 +135,7 @@ describe("ReplicaSet Store tests", () => {
|
||||
podsStore.items = observable.array([
|
||||
runningPod,
|
||||
failedPod,
|
||||
pendingPod
|
||||
pendingPod,
|
||||
]);
|
||||
});
|
||||
|
||||
@@ -143,7 +143,7 @@ describe("ReplicaSet Store tests", () => {
|
||||
const statuses = Object.entries(replicaSetStore.getStatuses([
|
||||
failedReplicaSet,
|
||||
runningReplicaSet,
|
||||
pendingReplicaSet
|
||||
pendingReplicaSet,
|
||||
]));
|
||||
|
||||
expect(statuses).toEqual([
|
||||
|
||||
@@ -67,7 +67,7 @@ const runningPod = new Pod({
|
||||
ownerReferences: [{
|
||||
uid: "runningStatefulSet",
|
||||
}],
|
||||
namespace: "default"
|
||||
namespace: "default",
|
||||
},
|
||||
});
|
||||
|
||||
@@ -85,7 +85,7 @@ runningPod.status = {
|
||||
status: "True",
|
||||
lastProbeTime: 1,
|
||||
lastTransitionTime: "1",
|
||||
}
|
||||
},
|
||||
],
|
||||
hostIP: "10.0.0.1",
|
||||
podIP: "10.0.0.1",
|
||||
@@ -104,7 +104,7 @@ const pendingPod = new Pod({
|
||||
ownerReferences: [{
|
||||
uid: "pendingStatefulSet",
|
||||
}],
|
||||
namespace: "default"
|
||||
namespace: "default",
|
||||
},
|
||||
});
|
||||
|
||||
@@ -118,7 +118,7 @@ const failedPod = new Pod({
|
||||
ownerReferences: [{
|
||||
uid: "failedStatefulSet",
|
||||
}],
|
||||
namespace: "default"
|
||||
namespace: "default",
|
||||
},
|
||||
});
|
||||
|
||||
@@ -136,7 +136,7 @@ describe("StatefulSet Store tests", () => {
|
||||
podsStore.items = observable.array([
|
||||
runningPod,
|
||||
failedPod,
|
||||
pendingPod
|
||||
pendingPod,
|
||||
]);
|
||||
});
|
||||
|
||||
@@ -144,7 +144,7 @@ describe("StatefulSet Store tests", () => {
|
||||
const statuses = Object.entries(statefulSetStore.getStatuses([
|
||||
failedStatefulSet,
|
||||
runningStatefulSet,
|
||||
pendingStatefulSet
|
||||
pendingStatefulSet,
|
||||
]));
|
||||
|
||||
expect(statuses).toEqual([
|
||||
|
||||
@@ -48,7 +48,7 @@ export class Animate extends React.Component<AnimateProps> {
|
||||
@observable isVisible = !!this.props.enter;
|
||||
@observable statusClassName = {
|
||||
enter: false,
|
||||
leave: false
|
||||
leave: false,
|
||||
};
|
||||
|
||||
constructor(props: AnimateProps) {
|
||||
@@ -68,7 +68,7 @@ export class Animate extends React.Component<AnimateProps> {
|
||||
}, {
|
||||
delay: Animate.VISIBILITY_DELAY_MS,
|
||||
fireImmediately: true,
|
||||
})
|
||||
}),
|
||||
]);
|
||||
}
|
||||
|
||||
|
||||
@@ -105,8 +105,8 @@ export class App extends React.Component {
|
||||
name: "cluster",
|
||||
action: "open",
|
||||
params: {
|
||||
clusterId: App.clusterId
|
||||
}
|
||||
clusterId: App.clusterId,
|
||||
},
|
||||
});
|
||||
});
|
||||
window.addEventListener("online", () => {
|
||||
@@ -132,7 +132,7 @@ export class App extends React.Component {
|
||||
preload: true,
|
||||
}),
|
||||
|
||||
watchHistoryState()
|
||||
watchHistoryState(),
|
||||
]);
|
||||
}
|
||||
|
||||
|
||||
Loaded 100 of 406 files, more files were not shown because too many files have changed in this diff.
Show more
Reference in new issue
Block a user