ManageIQ/manageiq-ui-classic

View on GitHub
app/javascript/components/network-security-groups-form/helper.js

Summary

Maintainability
C
1 day
Test Coverage
// Get the current and deleted firewall rules
export const getFirewallRules = (initialValues, values, securityGroupId) => {
  const oldFirewallRuleIds = [];
  const temp = { firewall_rules: [], firewall_rules_delete: false };

  if (values.firewall_rules.length > 0 || initialValues.firewall_rules.length > 0) {
    // Get current firewall rules
    if (values.firewall_rules.length > 0) {
      values.firewall_rules.forEach((rule) => {
        if (rule && rule.id) {
          if (rule.source_security_group_id === undefined || rule.source_security_group_id === null) {
            rule.source_security_group_id = null;
          } else {
            rule.source_ip_range = '';
          }
          temp.firewall_rules.push(rule);
          oldFirewallRuleIds.push(rule.id);
        } else if (rule) {
          rule.id = null;
          rule.ems_ref = null;
          rule.resource_id = securityGroupId;
          rule.resource_type = 'SecurityGroup';
          if (rule.direction === undefined) {
            rule.direction = null;
          }
          if (rule.network_protocol === undefined) {
            rule.network_protocol = null;
          }
          if (rule.host_protocol === undefined) {
            rule.host_protocol = null;
          }
          if (rule.source_security_group_id === undefined || rule.source_security_group_id === null) {
            rule.source_security_group_id = null;
          } else {
            rule.source_ip_range = '';
          }
          if (rule.source_ip_range === undefined) {
            rule.source_ip_range = null;
          }
          if (rule.port === undefined) {
            rule.port = null;
          }
          if (rule.end_port === undefined) {
            rule.end_port = null;
          }
          temp.firewall_rules.push(rule);
        }
      });
    }

    // Check if any fire wall rules deleted and add them to temp array
    if (initialValues.firewall_rules.length > 0) {
      initialValues.firewall_rules.forEach((rule) => {
        if (rule && rule.id && oldFirewallRuleIds.includes(rule.id) === false) {
          temp.firewall_rules_delete = true;
          rule.deleted = true;
          temp.firewall_rules.push(rule);
        }
      });
    }
  }
  return temp;
};