import { UISref } from '@uirouter/react'; import classNames from 'classnames'; import * as React from 'react'; import type { Application } from '../application'; import { CloudProviderLogo } from '../cloudProvider'; import type { ILoadBalancerUsage, ISecurityGroup, ISecurityGroupGroup, IServerGroupUsage } from '../domain'; import { EntityNotifications } from '../entityTag/notifications/EntityNotifications'; import { ManagedResourceStatusIndicator } from '../managed'; import { ReactInjector } from '../reactShims'; import { SecurityGroupState } from '../state'; import './securityGroup.less'; interface ISecurityGroupProps { application: Application; securityGroup: ISecurityGroup; parentGrouping: ISecurityGroupGroup; heading: string; } const Heading = ({ application, parentGrouping, securityGroup, heading }: ISecurityGroupProps) => (
{(heading || '').toUpperCase()}
{!parentGrouping.isManaged && securityGroup.isManaged && ( )} application.securityGroups.refresh()} />
); const getSecurityGroupDetailsParams = (securityGroup: ISecurityGroup, application: Application) => ({ application: application.name, region: securityGroup.region, accountId: securityGroup.accountName, name: securityGroup.name, vpcId: securityGroup.vpcId, provider: securityGroup.provider, }); const ServerGroup = ({ serverGroup }: { serverGroup: IServerGroupUsage }) => (
{serverGroup.name}
); const ServerGroups = ({ serverGroups }: { serverGroups: IServerGroupUsage[] }) => { if (!SecurityGroupState.filterModel.asFilterModel.sortFilter.showServerGroups) { return null; } return (
{serverGroups.length === 0 &&
No server groups
} {serverGroups.length > 0 && ( <> {serverGroups.map((serverGroup) => ( ))} )}
); }; const LoadBalancer = ({ loadBalancer, securityGroup, }: { loadBalancer: ILoadBalancerUsage; securityGroup: ISecurityGroup; }) => (
{loadBalancer.name}
); const LoadBalancers = ({ securityGroup }: { securityGroup: ISecurityGroup }) => { if (!SecurityGroupState.filterModel.asFilterModel.sortFilter.showLoadBalancers) { return null; } return (
{securityGroup.usages.loadBalancers.length === 0 &&
No load balancers
} {securityGroup.usages.loadBalancers.length > 0 && ( <> {securityGroup.usages.loadBalancers.map((loadBalancer) => ( ))} )}
); }; export const SecurityGroup = (props: ISecurityGroupProps) => { const params = getSecurityGroupDetailsParams(props.securityGroup, props.application); // don't use - it picks up load balancer and server groups details! const active = ReactInjector.$state.includes('**.firewallDetails', params); return (
); };