Trying to fix an edge where where the role is not set and there's and error while collecting machines.

This commit is contained in:
Shay Nehmad 2019-04-16 18:19:08 +03:00
parent f776765a27
commit 5018afb48b
3 changed files with 3550 additions and 3205 deletions

View File

@ -1,4 +1,6 @@
import json
from botocore.exceptions import NoCredentialsError
from flask import request, jsonify, make_response
import flask_restful
@ -24,7 +26,12 @@ class RemoteRun(flask_restful.Resource):
is_aws = RemoteRunAwsService.is_running_on_aws()
resp = {'is_aws': is_aws}
if is_aws:
try:
resp['instances'] = AwsService.get_instances()
except NoCredentialsError as e:
# Probably, role hasn't been defined.
resp['error'] = e.message
return jsonify(resp)
return jsonify(resp)
return {}

File diff suppressed because it is too large Load Diff

View File

@ -8,6 +8,12 @@ import {Link} from 'react-router-dom';
import AuthComponent from '../AuthComponent';
import AwsRunTable from "../run-monkey/AwsRunTable";
const loading_css_override = css`
display: block;
margin-right: auto;
margin-left: auto;
`;
class RunMonkeyPageComponent extends AuthComponent {
constructor(props) {
@ -28,7 +34,9 @@ class RunMonkeyPageComponent extends AuthComponent {
awsKeyId: '',
awsSecretKey: '',
awsMachines: [],
is_loading_aws: true
isLoadingAws: true,
isErrorWhileCollectingAwsMachines: false,
awsMachineCollectionErrorMsg: ''
};
}
@ -77,8 +85,13 @@ class RunMonkeyPageComponent extends AuthComponent {
.then(res => res.json())
.then(res =>{
let is_aws = res['is_aws'];
let isErrorWhileCollectingAwsMachines = (res['error'] != null);
if (is_aws) {
this.setState({isOnAws: true, awsMachines: res['instances'], isAwsAuth: res['auth'], is_loading_aws: false});
if (isErrorWhileCollectingAwsMachines) {
this.setState({isOnAws: true, isErrorWhileCollectingAwsMachines: true, awsMachineCollectionErrorMsg: res['error'], isAwsAuth: res['auth'], isLoadingAws: false});
} else {
this.setState({isOnAws: true, awsMachines: res['instances'], isAwsAuth: res['auth'], isLoadingAws: false});
}
}
});
}
@ -421,10 +434,11 @@ class RunMonkeyPageComponent extends AuthComponent {
</div>
</Collapse>
{
this.state.is_loading_aws ?
this.state.isLoadingAws ?
<p style={{'marginBottom': '2em', 'align': 'center'}}>
<div className='sweet-loading'>
<GridLoader
css={loading_css_override}
sizeUnit={"px"}
size={30}
color={'#ffcc00'}
@ -454,6 +468,15 @@ class RunMonkeyPageComponent extends AuthComponent {
}
<Collapse in={this.state.showAws}>
{
this.state.isErrorWhileCollectingAwsMachines ?
<div style={{'marginTop': '1em'}}>
<p>
Error while collecting AWS machine data. Error message: {this.state.awsMachineCollectionErrorMsg}
Are you sure you've set the correct role? Not sure what this is? Not seeing your AWS EC2 instances? <a href="https://github.com/guardicore/monkey/wiki/Monkey-Island:-Running-the-monkey-on-AWS-EC2-instances">Read the documentation</a>!
</p>
</div>
:
this.renderAwsMachinesDiv()
}