Skip to content

Commit

Permalink
Merge pull request JupiterOne-Archives#13 from DualbootPartnersLLC/fe…
Browse files Browse the repository at this point in the history
…ature/ingest_deployments

Feature/ingest deployments
  • Loading branch information
Adam Williams authored May 31, 2019
2 parents cbd963e + 5a11543 commit 17fbf4b
Show file tree
Hide file tree
Showing 48 changed files with 1,554 additions and 41 deletions.
9 changes: 8 additions & 1 deletion src/converters/entities/ContainerEntityConverter.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -250,7 +250,14 @@ test("convert containers", async () => {
};

const entities = createContainerEntities([
{ pods, serviceAccounts: [], services: [], routes: [], project },
{
pods,
serviceAccounts: [],
services: [],
routes: [],
project,
deployments: [],
},
]);

expect(entities).toEqual([
Expand Down
338 changes: 338 additions & 0 deletions src/converters/entities/DeploymentEntityConverter.test.ts

Large diffs are not rendered by default.

32 changes: 32 additions & 0 deletions src/converters/entities/DeploymentEntityConverter.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
import {
DEPLOYMENT_ENTITY_CLASS,
DEPLOYMENT_ENTITY_TYPE,
DeploymentEntity,
} from "../../jupiterone";
import { NamespaceData } from "../../openshift/types";
import { generateEntityKey } from "../../utils/generateKeys";
import getTime from "../../utils/getTime";

export function createDeploymentEntities(
namespaces: NamespaceData[],
): DeploymentEntity[] {
const defaultEntities: DeploymentEntity[] = [];

return namespaces.reduce((acc, namespace) => {
const entities = namespace.deployments.reduce((deployments, item) => {
const entity: DeploymentEntity = {
_class: DEPLOYMENT_ENTITY_CLASS,
_key: generateEntityKey(DEPLOYMENT_ENTITY_TYPE, item.metadata.uid),
_type: DEPLOYMENT_ENTITY_TYPE,
displayName: item.metadata.name,
name: item.metadata.name,
isActive: item.status.replicas > 0,
createdOn: getTime(item.metadata.creationTimestamp)!,
};

return [...deployments, entity];
}, defaultEntities);

return [...acc, ...entities];
}, defaultEntities);
}
8 changes: 2 additions & 6 deletions src/converters/entities/GroupEntityConverter.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -31,21 +31,17 @@ test("convert groups", async () => {
_class: "UserGroup",
_key: "openshift_user_group_259b87ab-5c46-11e9-82b7-4e620801d617",
_type: "openshift_user_group",
creationTimestamp: "2019-04-11T10:39:55Z",
createdOn: 1554979195000,
displayName: "first-group",
generation: undefined,
namespace: undefined,
resourceVersion: "34739",
uid: "259b87ab-5c46-11e9-82b7-4e620801d617",
},
{
_class: "UserGroup",
_key: "openshift_user_group_2aafc5a6-5c46-11e9-82b7-4e620801d617",
_type: "openshift_user_group",
creationTimestamp: "2019-04-11T10:40:04Z",
createdOn: 1554979204000,
displayName: "second-group",
generation: undefined,
namespace: undefined,
resourceVersion: "34775",
uid: "2aafc5a6-5c46-11e9-82b7-4e620801d617",
},
Expand Down
3 changes: 2 additions & 1 deletion src/converters/entities/GroupEntityConverter.ts
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@ import {
import { Group } from "../../openshift/types";

import { generateEntityKey } from "../../utils/generateKeys";
import getTime from "../../utils/getTime";

export function createGroupEntities(data: Group[]): GroupEntity[] {
return data.map(d => {
Expand All @@ -19,7 +20,7 @@ export function createGroupEntities(data: Group[]): GroupEntity[] {
namespace: d.metadata.namespace,
generation: d.metadata.generation,
resourceVersion: d.metadata.resourceVersion,
creationTimestamp: d.metadata.creationTimestamp,
createdOn: getTime(d.metadata.creationTimestamp)!,
};
return group;
});
Expand Down
13 changes: 10 additions & 3 deletions src/converters/entities/PodEntityConverter.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -250,15 +250,22 @@ test("convert pods", async () => {
};

const entities = createPodEntities([
{ pods, serviceAccounts: [], services: [], routes: [], project },
{
pods,
serviceAccounts: [],
services: [],
routes: [],
project,
deployments: [],
},
]);

expect(entities).toEqual([
{
_class: ["Cluster", "Task"],
_key: "openshift_pod_c764e7d4-61bf-11e9-b220-0a2a2b777307",
_type: "openshift_pod",
creationTimestamp: "2019-04-18T09:53:12Z",
createdOn: 1555581192000,
displayName: "jenkins-1-vqgxg",
hostIP: "172.31.56.129",
name: "jenkins-1-vqgxg",
Expand All @@ -268,7 +275,7 @@ test("convert pods", async () => {
podIP: "10.131.29.54",
qosClass: "Burstable",
resourceVersion: "3548837654",
startTime: "2019-04-18T09:53:12Z",
startTime: 1555581192000,
uid: "c764e7d4-61bf-11e9-b220-0a2a2b777307",
},
]);
Expand Down
5 changes: 3 additions & 2 deletions src/converters/entities/PodEntityConverter.ts
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
import { POD_ENTITY_CLASS, POD_ENTITY_TYPE, PodEntity } from "../../jupiterone";
import { NamespaceData } from "../../openshift/types";
import { generateEntityKey } from "../../utils/generateKeys";
import getTime from "../../utils/getTime";

export function createPodEntities(namespaces: NamespaceData[]): PodEntity[] {
const defaultEntities: PodEntity[] = [];
Expand All @@ -15,13 +16,13 @@ export function createPodEntities(namespaces: NamespaceData[]): PodEntity[] {
uid: pod.metadata.uid,
namespace: pod.metadata.namespace,
resourceVersion: pod.metadata.resourceVersion,
creationTimestamp: pod.metadata.creationTimestamp,
createdOn: getTime(pod.metadata.creationTimestamp)!,
name: pod.metadata.name,
nodeName: pod.spec.nodeName,
phase: pod.status.phase,
hostIP: pod.status.hostIP,
podIP: pod.status.podIP,
startTime: pod.status.startTime,
startTime: getTime(pod.status.startTime)!,
qosClass: pod.status.qosClass,
};

Expand Down
2 changes: 1 addition & 1 deletion src/converters/entities/ProjectEntityConverter.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,7 @@ test("convert projects", async () => {
_class: "Project",
_key: "openshift_project_39537998-5bb8-11e9-8c30-4e620801d617",
_type: "openshift_project",
creationTimestamp: "2019-04-10T17:44:00Z",
createdOn: 1554918240000,
displayName: "default",
resourceVersion: "1284",
uid: "39537998-5bb8-11e9-8c30-4e620801d617",
Expand Down
3 changes: 2 additions & 1 deletion src/converters/entities/ProjectEntityConverter.ts
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@ import {
import { Project } from "../../openshift/types";

import { generateEntityKey } from "../../utils/generateKeys";
import getTime from "../../utils/getTime";

export function createProjectEntities(data: Project[]): ProjectEntity[] {
return data.map(d => {
Expand All @@ -18,7 +19,7 @@ export function createProjectEntities(data: Project[]): ProjectEntity[] {
namespace: d.metadata.namespace,
generation: d.metadata.generation,
resourceVersion: d.metadata.resourceVersion,
creationTimestamp: d.metadata.creationTimestamp,
createdOn: getTime(d.metadata.creationTimestamp)!,
};

return project;
Expand Down
11 changes: 9 additions & 2 deletions src/converters/entities/RouteEntityConverter.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -75,15 +75,22 @@ test("convert routes", async () => {
};

const entities = createRouteEntities([
{ routes, serviceAccounts: [], services: [], pods: [], project },
{
routes,
serviceAccounts: [],
services: [],
pods: [],
project,
deployments: [],
},
]);

expect(entities).toEqual([
{
_class: "Domain",
_key: "openshift_route_c3cd6d2e-61bf-11e9-9c2a-0ab8769191d3",
_type: "openshift_route",
creationTimestamp: "2019-04-18T09:53:06Z",
createdOn: 1555581186000,
displayName: "jenkins",
host:
"jenkins-example_namespace.7e14.starter-us-west-2.openshiftapps.com",
Expand Down
3 changes: 2 additions & 1 deletion src/converters/entities/RouteEntityConverter.ts
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@ import {
} from "../../jupiterone";
import { NamespaceData } from "../../openshift/types";
import { generateEntityKey } from "../../utils/generateKeys";
import getTime from "../../utils/getTime";

export function createRouteEntities(
namespaces: NamespaceData[],
Expand All @@ -21,7 +22,7 @@ export function createRouteEntities(
uid: route.metadata.uid,
namespace: route.metadata.namespace,
resourceVersion: route.metadata.resourceVersion,
creationTimestamp: route.metadata.creationTimestamp,
createdOn: getTime(route.metadata.creationTimestamp)!,
name: route.metadata.name,
host: route.spec.host,
};
Expand Down
11 changes: 9 additions & 2 deletions src/converters/entities/ServiceAccountEntityConverter.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -46,15 +46,22 @@ test("convert service accounts", async () => {
};

const entities = createServiceAccountEntities([
{ routes: [], serviceAccounts, services: [], pods: [], project },
{
routes: [],
serviceAccounts,
services: [],
pods: [],
project,
deployments: [],
},
]);

expect(entities).toEqual([
{
_class: "User",
_key: "openshift_service_account_c077817b-61bf-11e9-b220-0a2a2b777307",
_type: "openshift_service_account",
creationTimestamp: "2019-04-18T09:53:00Z",
createdOn: 1555581180000,
displayName: "builder",
name: "builder",
namespace: "example_namespace",
Expand Down
3 changes: 2 additions & 1 deletion src/converters/entities/ServiceAccountEntityConverter.ts
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@ import {
} from "../../jupiterone";
import { NamespaceData } from "../../openshift/types";
import { generateEntityKey } from "../../utils/generateKeys";
import getTime from "../../utils/getTime";

export function createServiceAccountEntities(
namespaces: NamespaceData[],
Expand All @@ -25,7 +26,7 @@ export function createServiceAccountEntities(
uid: srvAcc.metadata.uid,
namespace: srvAcc.metadata.namespace,
resourceVersion: srvAcc.metadata.resourceVersion,
creationTimestamp: srvAcc.metadata.creationTimestamp,
createdOn: getTime(srvAcc.metadata.creationTimestamp)!,
name: srvAcc.metadata.name,
};

Expand Down
11 changes: 9 additions & 2 deletions src/converters/entities/ServiceEntityConverter.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -60,7 +60,14 @@ test("convert services", async () => {
};

const entities = createServiceEntities([
{ routes: [], serviceAccounts: [], services, pods: [], project },
{
routes: [],
serviceAccounts: [],
services,
pods: [],
project,
deployments: [],
},
]);

expect(entities).toEqual([
Expand All @@ -69,7 +76,7 @@ test("convert services", async () => {
_key: "openshift_service_c3ee12dc-61bf-11e9-ad62-0a69cdf75e6f",
_type: "openshift_service",
clusterIP: "172.30.122.71",
creationTimestamp: "2019-04-18T09:53:06Z",
createdOn: 1555581186000,
displayName: "jenkins",
name: "jenkins",
namespace: "example_namespace",
Expand Down
3 changes: 2 additions & 1 deletion src/converters/entities/ServiceEntityConverter.ts
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@ import {
} from "../../jupiterone";
import { NamespaceData } from "../../openshift/types";
import { generateEntityKey } from "../../utils/generateKeys";
import getTime from "../../utils/getTime";

export function createServiceEntities(
namespaces: NamespaceData[],
Expand All @@ -21,7 +22,7 @@ export function createServiceEntities(
uid: srv.metadata.uid,
namespace: srv.metadata.namespace,
resourceVersion: srv.metadata.resourceVersion,
creationTimestamp: srv.metadata.creationTimestamp,
createdOn: getTime(srv.metadata.creationTimestamp)!,
name: srv.metadata.name,
clusterIP: srv.spec.clusterIP,
type: srv.spec.type,
Expand Down
6 changes: 2 additions & 4 deletions src/converters/entities/UserEntityConverter.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -34,21 +34,19 @@ test("convert users", async () => {
_class: "User",
_key: "openshift_user_ad550b5e-5bb8-11e9-a9f5-4e620801d617",
_type: "openshift_user",
creationTimestamp: "2019-04-10T17:47:15Z",
createdOn: 1554918435000,
displayName: "developer",
fullName: "",
generation: undefined,
resourceVersion: "2142",
uid: "ad550b5e-5bb8-11e9-a9f5-4e620801d617",
},
{
_class: "User",
_key: "openshift_user_eabd5afd-5c45-11e9-82b7-4e620801d617",
_type: "openshift_user",
creationTimestamp: "2019-04-11T10:38:17Z",
createdOn: 1554979097000,
displayName: "test-user",
fullName: "User Test",
generation: undefined,
resourceVersion: "47231",
uid: "eabd5afd-5c45-11e9-82b7-4e620801d617",
},
Expand Down
3 changes: 2 additions & 1 deletion src/converters/entities/UserEntityConverter.ts
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@ import {
import { User } from "../../openshift/types";

import { generateEntityKey } from "../../utils/generateKeys";
import getTime from "../../utils/getTime";

export function createUserEntities(data: User[]): UserEntity[] {
return data.map(u => {
Expand All @@ -18,7 +19,7 @@ export function createUserEntities(data: User[]): UserEntity[] {
fullName: u.fullName || "",
generation: u.metadata.generation,
resourceVersion: u.metadata.resourceVersion,
creationTimestamp: u.metadata.creationTimestamp,
createdOn: getTime(u.metadata.creationTimestamp)!,
};

return user;
Expand Down
1 change: 1 addition & 0 deletions src/converters/entities/index.ts
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
export { createAccountEntity } from "./AccountEntityConverter";
export { createGroupEntities } from "./GroupEntityConverter";
export { createContainerEntities } from "./ContainerEntityConverter";
export { createDeploymentEntities } from "./DeploymentEntityConverter";
export { createPodEntities } from "./PodEntityConverter";
export { createProjectEntities } from "./ProjectEntityConverter";
export { createRouteEntities } from "./RouteEntityConverter";
Expand Down
Loading

0 comments on commit 17fbf4b

Please sign in to comment.