Skip to content

Commit

Permalink
Use machine selectors from @console/shared
Browse files Browse the repository at this point in the history
* update machine selector types to use specific kinds
* remove selectors definition from machine module
* use machine selectors from @console/shared in machine, machine-set
  and machine-deployment modules
  • Loading branch information
Jiri Tomasek committed Jun 17, 2019
1 parent 5017a6f commit 3c293aa
Show file tree
Hide file tree
Showing 7 changed files with 32 additions and 23 deletions.
17 changes: 12 additions & 5 deletions frontend/packages/console-shared/src/selectors/machine.ts
Original file line number Diff line number Diff line change
@@ -1,11 +1,18 @@
import * as _ from 'lodash-es';

import { K8sResourceKind } from '@console/internal/module/k8s';
import {
MachineKind,
MachineSetKind,
MachineDeploymentKind,
NodeKind,
} from '@console/internal/module/k8s';
import { getName } from './common';

export const getMachineRole = (machine) =>
_.get(machine, ['metadata', 'labels', 'machine.openshift.io/cluster-api-machine-role']);
export const getMachineNodeName = (machine) => _.get(machine, 'status.nodeRef.name');
export const getMachineRole = (obj: MachineKind | MachineSetKind | MachineDeploymentKind) =>
_.get(obj, ['metadata', 'labels', 'machine.openshift.io/cluster-api-machine-role']);
export const getMachineNodeName = (obj: MachineKind) => _.get(obj, 'status.nodeRef.name');
export const getMachineAWSPlacement = (machine: MachineKind) =>
_.get(machine, 'spec.providerSpec.value.placement') || {};

export const getMachineNode = (machine: K8sResourceKind, nodes: K8sResourceKind[]) =>
export const getMachineNode = (machine: MachineKind, nodes: NodeKind[]) =>
nodes.find((node) => getMachineNodeName(machine) === getName(node));
4 changes: 2 additions & 2 deletions frontend/packages/metal3-plugin/src/components/host-role.tsx
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
import { getMachineRole, DASH } from '@console/shared';
import { K8sResourceKind } from '@console/internal/module/k8s';
import { MachineKind } from '@console/internal/module/k8s';

type BaremetalHostRoleProps = {
machine: K8sResourceKind;
machine: MachineKind;
};
export const BaremetalHostRole: React.FC<BaremetalHostRoleProps> = ({ machine }) =>
getMachineRole(machine) || DASH;
9 changes: 7 additions & 2 deletions frontend/packages/metal3-plugin/src/components/host.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,12 @@ import { MachineModel, NodeModel } from '@console/internal/models';

import { MultiListPage, Table, TableRow, TableData } from '@console/internal/components/factory';
import { ResourceLink, Kebab } from '@console/internal/components/utils';
import { referenceForModel, K8sResourceKind } from '@console/internal/module/k8s';
import {
referenceForModel,
K8sResourceKind,
MachineKind,
NodeKind,
} from '@console/internal/module/k8s';

import { BaremetalHostModel } from '../models';
import { getHostBMCAddress, getHostMachine } from '../selectors';
Expand Down Expand Up @@ -56,7 +61,7 @@ const HostsTableHeader = () => [
];

type HostsTableRowProps = {
obj: K8sResourceKind & { machine: K8sResourceKind; node: K8sResourceKind };
obj: K8sResourceKind & { machine: MachineKind; node: NodeKind };
index: number;
key?: string;
style: React.StyleHTMLAttributes<any>;
Expand Down
4 changes: 2 additions & 2 deletions frontend/packages/metal3-plugin/src/selectors/index.ts
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
import * as _ from 'lodash-es';

import { K8sResourceKind } from '@console/internal/module/k8s';
import { K8sResourceKind, MachineKind } from '@console/internal/module/k8s';
import { getName } from '@console/shared';

export const getOperationalStatus = (host) => _.get(host, 'status.operationalStatus');
Expand All @@ -17,5 +17,5 @@ export const getHostDescription = (host) => _.get(host, 'spec.description', '');
export const isHostPoweredOn = (host) => _.get(host, 'status.poweredOn', false);
export const getHostTotalStorageCapacity = (host) =>
_.reduce(getHostStorage(host), (sum, disk) => sum + disk.sizeGiB, 0);
export const getHostMachine = (host: K8sResourceKind, machines: K8sResourceKind[]) =>
export const getHostMachine = (host: K8sResourceKind, machines: MachineKind[]) =>
machines.find((machine) => getHostMachineName(host) === getName(machine));
2 changes: 1 addition & 1 deletion frontend/public/components/machine-deployment.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -3,9 +3,9 @@ import * as _ from 'lodash-es';
import { Link } from 'react-router-dom';
import { sortable } from '@patternfly/react-table';
import * as classNames from 'classnames';
import { getMachineRole } from '@console/shared';
import { MachineModel, MachineDeploymentModel } from '../models';
import { MachineDeploymentKind, referenceForModel } from '../module/k8s';
import { getMachineRole } from './machine';
import {
editCountAction,
getAWSPlacement,
Expand Down
3 changes: 2 additions & 1 deletion frontend/public/components/machine-set.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -3,9 +3,10 @@ import * as _ from 'lodash-es';
import { Link } from 'react-router-dom';
import { sortable } from '@patternfly/react-table';
import * as classNames from 'classnames';
import { getMachineRole } from '@console/shared';
import { MachineAutoscalerModel, MachineModel, MachineSetModel } from '../models';
import { K8sKind, MachineDeploymentKind, MachineSetKind, referenceForModel } from '../module/k8s';
import { getMachineRole, MachinePage } from './machine';
import { MachinePage } from './machine';
import { configureMachineAutoscalerModal, configureReplicaCountModal } from './modals';
import { DetailsPage, ListPage, Table, TableRow, TableData } from './factory';
import {
Expand Down
16 changes: 6 additions & 10 deletions frontend/public/components/machine.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -2,8 +2,9 @@ import * as React from 'react';
import * as _ from 'lodash-es';
import { sortable } from '@patternfly/react-table';
import * as classNames from 'classnames';
import { getMachineRole, getMachineNodeName, getMachineAWSPlacement } from '@console/shared';
import { MachineModel } from '../models';
import { MachineDeploymentKind, MachineKind, MachineSetKind, referenceForModel } from '../module/k8s';
import { MachineKind, referenceForModel } from '../module/k8s';
import { Conditions } from './conditions';
import { NodeIPList } from './node';
import { DetailsPage, ListPage, Table, TableRow, TableData } from './factory';
Expand All @@ -21,11 +22,6 @@ import { breadcrumbsForOwnerRefs } from './utils/breadcrumbs';
const { common } = Kebab.factory;
const menuActions = [...common];
export const machineReference = referenceForModel(MachineModel);
const getAWSPlacement = (machine: MachineKind) => _.get(machine, 'spec.providerSpec.value.placement') || {};

export const getMachineRole = (obj: MachineKind | MachineSetKind | MachineDeploymentKind) => _.get(obj, ['metadata', 'labels', 'sigs.k8s.io/cluster-api-machine-role']);

const getNodeName = (obj) => _.get(obj, 'status.nodeRef.name');

const tableColumnClasses = [
classNames('pf-m-3-col-on-xl', 'pf-m-4-col-on-lg', 'pf-m-4-col-on-md', 'pf-m-6-col-on-sm'),
Expand Down Expand Up @@ -66,8 +62,8 @@ const MachineTableHeader = () => {
MachineTableHeader.displayName = 'MachineTableHeader';

const MachineTableRow: React.FC<MachineTableRowProps> = ({obj, index, key, style}) => {
const { availabilityZone, region } = getAWSPlacement(obj);
const nodeName = getNodeName(obj);
const { availabilityZone, region } = getMachineAWSPlacement(obj);
const nodeName = getMachineNodeName(obj);
return (
<TableRow id={obj.metadata.uid} index={index} trKey={key} style={style}>
<TableData className={classNames(tableColumnClasses[0], 'co-break-word')}>
Expand Down Expand Up @@ -100,9 +96,9 @@ type MachineTableRowProps = {
};

const MachineDetails: React.SFC<MachineDetailsProps> = ({obj}: {obj: MachineKind}) => {
const nodeName = getNodeName(obj);
const nodeName = getMachineNodeName(obj);
const machineRole = getMachineRole(obj);
const { availabilityZone, region } = getAWSPlacement(obj);
const { availabilityZone, region } = getMachineAWSPlacement(obj);
return <React.Fragment>
<div className="co-m-pane__body">
<SectionHeading text="Machine Overview" />
Expand Down

0 comments on commit 3c293aa

Please sign in to comment.