private Cluster.Member initializeMember(ObjectName mbeanName, Cluster.Member member)
      throws InstanceNotFoundException, ReflectionException, IOException, IntrospectionException {

    MBeanAttributeInfo[] mbeanAttributes = mbs.getMBeanInfo(mbeanName).getAttributes();

    AttributeList attributeList =
        mbs.getAttributes(mbeanName,
            Arrays.stream(mbeanAttributes).map(MBeanAttributeInfo::getName).distinct()
                .toArray(String[]::new));

    for (Object o : attributeList) {

      Attribute attribute = (Attribute) o;
      String name = attribute.getName();

      switch (name) {
        case PulseConstants.MBEAN_ATTRIBUTE_GEMFIREVERSION:
          if (member.getGemfireVersion() == null) {
            // Set Member's GemFire Version if not set already
            String gemfireVersion =
                obtainGemfireVersion(getStringAttribute(attribute.getValue(), attribute.getName()));
            member.setGemfireVersion(gemfireVersion);
          }
          break;
        case PulseConstants.MBEAN_ATTRIBUTE_MANAGER:
          member.setManager(getBooleanAttribute(attribute.getValue(), attribute.getName()));
          break;
        case PulseConstants.MBEAN_ATTRIBUTE_TOTALREGIONCOUNT:
          member
              .setTotalRegionCount(getIntegerAttribute(attribute.getValue(), attribute.getName()));
          break;
        case PulseConstants.MBEAN_ATTRIBUTE_LOCATOR:
          member.setLocator(getBooleanAttribute(attribute.getValue(), attribute.getName()));
          break;
        case PulseConstants.MBEAN_ATTRIBUTE_TOTALDISKUSAGE:
          member.setTotalDiskUsage(getLongAttribute(attribute.getValue(), attribute.getName()));
          break;
        case PulseConstants.MBEAN_ATTRIBUTE_SERVER:
          member.setServer(getBooleanAttribute(attribute.getValue(), attribute.getName()));
          break;
        case PulseConstants.MBEAN_ATTRIBUTE_TOTALFILEDESCRIPTOROPEN:
          member.setTotalFileDescriptorOpen(
              getLongAttribute(attribute.getValue(), attribute.getName()));
          break;
        case PulseConstants.MBEAN_ATTRIBUTE_LOADAVERAGE:
          member.setLoadAverage(getDoubleAttribute(attribute.getValue(), attribute.getName()));
          break;
        case PulseConstants.MBEAN_ATTRIBUTE_DISKWRITESRATE:
          member.setThroughputWrites(getDoubleAttribute(attribute.getValue(), attribute.getName()));
          member.getThroughputWritesTrend().add(member.getThroughputWrites());
          break;
        case PulseConstants.MBEAN_ATTRIBUTE_DISKREADSRATE:
          member.setThroughputReads(getDoubleAttribute(attribute.getValue(), attribute.getName()));
          member.getThroughputReadsTrend().add(member.getThroughputReads());
          break;
        case PulseConstants.MBEAN_ATTRIBUTE_JVMPAUSES:
          long trendVal = determineCurrentJVMPauses(PulseConstants.JVM_PAUSES_TYPE_MEMBER,
              member.getName(), getLongAttribute(attribute.getValue(), attribute.getName()));
          member.setGarbageCollectionCount(trendVal);
          member.getGarbageCollectionSamples().add(member.getGarbageCollectionCount());
          break;
        case PulseConstants.MBEAN_ATTRIBUTE_USEDMEMORY:
          member.setCurrentHeapSize(getLongAttribute(attribute.getValue(), attribute.getName()));
          member.getHeapUsageSamples().add(member.getCurrentHeapSize());
          break;
        case PulseConstants.MBEAN_ATTRIBUTE_MAXMEMORY:
          member.setMaxHeapSize(getLongAttribute(attribute.getValue(), attribute.getName()));
          break;
        case PulseConstants.MBEAN_ATTRIBUTE_NUMTHREADS:
          member.setNumThreads(getIntegerAttribute(attribute.getValue(), attribute.getName()));
          break;
        case PulseConstants.MBEAN_ATTRIBUTE_MEMBERUPTIME:
          member.setUptime(getLongAttribute(attribute.getValue(), attribute.getName()));
          break;
        case PulseConstants.MBEAN_ATTRIBUTE_HOST:
          member.setHost(getStringAttribute(attribute.getValue(), attribute.getName()));
          break;
        case PulseConstants.MBEAN_ATTRIBUTE_HOSTNAMEFORCLIENTS:
          member
              .setHostnameForClients(getStringAttribute(attribute.getValue(), attribute.getName()));
          break;
        case PulseConstants.MBEAN_ATTRIBUTE_BINDADDRESS:
          member.setBindAddress(getStringAttribute(attribute.getValue(), attribute.getName()));
          break;
        case PulseConstants.MBEAN_ATTRIBUTE_TOTALBYTESONDISK:
          member.setTotalBytesOnDisk(getLongAttribute(attribute.getValue(), attribute.getName()));
          member.getTotalBytesOnDiskSamples().add(member.getTotalBytesOnDisk());
          break;
        case PulseConstants.MBEAN_ATTRIBUTE_CPUUSAGE:
          member.setCpuUsage(getDoubleAttribute(attribute.getValue(), attribute.getName()));
          member.getCpuUsageSamples().add(member.getCpuUsage());
          break;
        case PulseConstants.MBEAN_ATTRIBUTE_HOSTCPUUSAGE:
          // Float value is expected for host cpu usage.
          // TODO Remove Float.valueOf() when float value is provided in mbean
          member.setHostCpuUsage(
              Double.valueOf(getIntegerAttribute(attribute.getValue(), attribute.getName())));
          break;
        case PulseConstants.MBEAN_ATTRIBUTE_MEMBER:
          member.setName(getStringAttribute(attribute.getValue(), attribute.getName()));
          break;
        case PulseConstants.MBEAN_ATTRIBUTE_ID:
          member.setId(getStringAttribute(attribute.getValue(), attribute.getName()));
          break;
        case PulseConstants.MBEAN_ATTRIBUTE_AVERAGEREADS:
          member.setGetsRate(getDoubleAttribute(attribute.getValue(), attribute.getName()));
          member.getGetsPerSecond().add(member.getGetsRate());
          break;
        case PulseConstants.MBEAN_ATTRIBUTE_AVERAGEWRITES:
          member.setPutsRate(getDoubleAttribute(attribute.getValue(), attribute.getName()));
          member.getPutsPerSecond().add(member.getPutsRate());
          break;
        case PulseConstants.MBEAN_ATTRIBUTE_OFFHEAPFREESIZE:
          member.setOffHeapFreeSize(getLongAttribute(attribute.getValue(), attribute.getName()));
          break;
        case PulseConstants.MBEAN_ATTRIBUTE_OFFHEAPUSEDSIZE:
          member.setOffHeapUsedSize(getLongAttribute(attribute.getValue(), attribute.getName()));
          break;
        case PulseConstants.MBEAN_ATTRIBUTE_SERVERGROUPS:
          String[] sgValues = (String[]) attribute.getValue();
          member.getServerGroups().clear();
          for (String sgValue : sgValues) {
            member.getServerGroups().add(sgValue);
          }
          break;
        case PulseConstants.MBEAN_ATTRIBUTE_REDUNDANCYZONES:
          String rzValue = "";
          if (null != attribute.getValue()) {
            rzValue = getStringAttribute(attribute.getValue(), attribute.getName());
          }
          member.getRedundancyZones().clear();
          if (!rzValue.isEmpty()) {
            member.getRedundancyZones().add(rzValue);
          }
          break;
      }
    }

    return member;
  }
function used to iterate through all member attributes and return the updated member
geode-pulse/src/main/java/org/apache/geode/tools/pulse/internal/data/JMXDataUpdater.java