diff --git a/package.json b/package.json
index d7937e7..5fb811f 100644
--- a/package.json
+++ b/package.json
@@ -7,6 +7,7 @@
"@patternfly/patternfly-next": "^1.0.175",
"@patternfly/react-icons": "^3.5.0",
"@patternfly/react-tokens": "^2.0.4",
+ "@patternfly/react-core": "^2.3.6",
"axios": "^0.18.0",
"braces": "^2.3.2",
"react": "^16.8.4",
diff --git a/src/playbooks/PlaybookContainer.js b/src/playbooks/PlaybookContainer.js
index 565a8b0..273a396 100644
--- a/src/playbooks/PlaybookContainer.js
+++ b/src/playbooks/PlaybookContainer.js
@@ -1,9 +1,10 @@
import React, { Component } from "react";
+import { List, ListItem } from '@patternfly/react-core';
import { connect } from "react-redux";
import { isEmpty } from "lodash";
import { LoadingContainer, Container404 } from "../containers";
import { getPlaybook } from "./playbooksActions";
-import TasksContainer from "../tasks/TasksContainer";
+
export class PlaybookContainer extends Component {
state = {
@@ -31,12 +32,73 @@ export class PlaybookContainer extends Component {
-
+
+
+
+ Name |
+ OK |
+ CHANGED |
+ FAILED |
+ SKIPPED |
+ UNREACHABLE |
+
+
+
+ {playbook.hosts.map(host => (
+
+ {host.name} |
+ {host.ok} |
+ {host.changed} |
+ {host.failed} |
+ {host.skipped} |
+ {host.unreachable} |
+
+ ))}
+
+
+
+
+ {playbook.plays.map(play => (
+
+
{play.name}
+
+ Started: {play.started}
+ Ended: {play.ended}
+ Duration: {play.duration}
+
+
+
+
+ Task |
+ Host |
+ Action |
+ Duration |
+ Status |
+
+
+
+ {play.tasks.map(task =>
+ task.results.map(result =>
+
+ {task.name} |
+ {result.host.name} |
+ {task.action} |
+ {result.duration} |
+ {result.status} |
+
+ ))}
+
+
+
+ ))}
+
);
}
diff --git a/src/playbooks/PlaybookSummary.js b/src/playbooks/PlaybookSummary.js
index 75a78a0..33a69a9 100644
--- a/src/playbooks/PlaybookSummary.js
+++ b/src/playbooks/PlaybookSummary.js
@@ -149,19 +149,22 @@ export default class Playbook extends Component {
- {playbook.hosts.length} Hosts
+ {playbook.items.plays} Plays
- {playbook.files.length} Files
+ {playbook.items.tasks} Tasks
- {Object.keys(playbook.tasks).length} tasks
+ {playbook.items.results} Results
- {Object.keys(playbook.plays).length} plays
+ {playbook.items.hosts} Hosts
- {Object.keys(playbook.records).length} records
+ {playbook.items.files} Files
+
+
+ {playbook.items.records} Records
diff --git a/src/tasks/TasksContainer.js b/src/tasks/TasksContainer.js
deleted file mode 100644
index 969afb0..0000000
--- a/src/tasks/TasksContainer.js
+++ /dev/null
@@ -1,62 +0,0 @@
-import React, { Component } from "react";
-import { connect } from "react-redux";
-import { isEmpty } from "lodash";
-import { getTasks } from "./tasksActions";
-
-export class TasksContainer extends Component {
- state = {
- isLoading: true,
- tasks: []
- };
-
- componentDidMount() {
- const { playbook, getTasks } = this.props;
- getTasks(playbook)
- .then(response => this.setState({ tasks: response.data.results }))
- .catch(error => console.log(error))
- .then(() => this.setState({ isLoading: false }));
- }
-
- render() {
- const { isLoading, tasks } = this.state;
- if (isLoading) {
- return null;
- }
- if (!isLoading && isEmpty(tasks)) {
- return no tasks for this playbook
;
- }
- return (
-
-
-
- Name |
- Action |
- Duration |
- Status |
-
-
-
- {tasks.map(task => (
-
- {task.name} |
- {task.action} |
- {task.duration} |
- {task.status} |
-
- ))}
-
-
- );
- }
-}
-
-function mapDispatchToProps(dispatch) {
- return {
- getTasks: playbook => dispatch(getTasks(playbook))
- };
-}
-
-export default connect(
- null,
- mapDispatchToProps
-)(TasksContainer);
diff --git a/src/tasks/tasksActions.js b/src/tasks/tasksActions.js
deleted file mode 100644
index ad675bc..0000000
--- a/src/tasks/tasksActions.js
+++ /dev/null
@@ -1,9 +0,0 @@
-import axios from "axios";
-
-export function getTasks(playbook) {
- return (dispatch, getState) => {
- const { apiURL } = getState().config;
- return axios
- .get(`${apiURL}/api/v1/tasks?playbook=${playbook.id}`);
- };
-}