import React from 'react';
import PropTypes from 'prop-types';
import forceArray from 'force-array';
import { compose, graphql } from 'react-apollo';
import find from 'lodash.find';
import get from 'lodash.get';
import {
ViewContainer,
StatusLoader,
Message,
MessageDescription,
MessageTitle,
Table,
TableThead,
TableTr,
TableTh,
TableTbody,
P
} from 'joyent-ui-toolkit';
import GetFirewallRules from '@graphql/list-firewall-rules.gql';
import { FirewallRule as InstanceFirewallRule } from '@components/instances';
const Firewall = ({
// eslint-disable-next-line camelcase
firewallEnabled = false,
firewallRules = [],
loading,
error
}) => {
const values = forceArray(firewallRules);
const _loading = !(loading && !values.length) ? null : ;
const _firewall =
_loading && !values.length ? null : (
Rule
Global
Enabled
{values.map(network => (
))}
);
const _error =
error && !values.length && !_loading ? (
Ooops!
An error occurred while loading your instance firewall rules
) : null;
return (
{_loading}
{_error}
{_firewall}
);
};
Firewall.propTypes = {
loading: PropTypes.bool
};
export default compose(
graphql(GetFirewallRules, {
options: ({ match }) => ({
pollInterval: 1000,
variables: {
name: get(match, 'params.instance')
}
}),
props: ({ data: { loading, error, variables, ...rest } }) => {
const machine = find(get(rest, 'machines', []), ['name', variables.name]);
// eslint-disable-next-line camelcase
const firewallEnabled = get(machine, 'firewall_enabled', false);
const firewallRules = get(machine, 'firewall_rules', []);
// eslint-disable-next-line camelcase
return { firewallEnabled, firewallRules, loading, error };
}
})
)(Firewall);