'Get and verify node configuration.'

def _get_node_data(self):

    ssh_cmd = ['svcinfo', 'lssystem', '-delim', '!']
    attributes = self._execute_command_and_parse_attributes(ssh_cmd)
    if ((not attributes) or (not ('name' in attributes))):
        msg = _('Could    not    get    system    name.')
        LOG.error(msg)
        raise exception.VolumeBackendAPIException(data=msg)
    self._system_name = attributes['name']
    self._system_id = attributes['id']
    if ((not attributes) or (not ('open_access_enabled' in attributes)) or (attributes['open_access_enabled'] != 'off')):
        msg = _('open_access_enabled    is    not    off.')
        LOG.error(msg)
        raise exception.VolumeBackendAPIException(data=msg)
    pool = FLASHSYSTEM_VOLPOOL_NAME
    ssh_cmd = ['svcinfo', 'lsmdiskgrp', '-bytes', '-delim', '!', pool]
    attributes = self._execute_command_and_parse_attributes(ssh_cmd)
    if (not attributes):
        msg = _('Unable    to    parse    attributes.')
        LOG.error(msg)
        raise exception.InvalidInput(reason=msg)
    if ((not ('status' in attributes)) or (attributes['status'] == 'offline')):
        msg = (_('Array    does    not    exist    or    is    offline.    Current    status    of    array    is    %s.') % attributes['status'])
        LOG.error(msg)
        raise exception.InvalidInput(reason=msg)
    ssh_cmd = ['svcinfo', 'lsnode', '-delim', '!']
    (out, err) = self._ssh(ssh_cmd)
    self._assert_ssh_return(out.strip(), '_get_config_data', ssh_cmd, out, err)
    nodes = out.strip().splitlines()
    self._assert_ssh_return(nodes, '_get_node_data', ssh_cmd, out, err)
    header = nodes.pop(0)
    for node_line in nodes:
        try:
            node_data = self._get_hdr_dic(header, node_line, '!')
        except exception.VolumeBackendAPIException:
            with excutils.save_and_reraise_exception():
                self._log_cli_output_error('_get_node_data', ssh_cmd, out, err)
        try:
            node = {'id': node_data['id'], 'name': node_data['name'], 'IO_group': node_data['IO_group_id'], 'WWNN': node_data['WWNN'], 'status': node_data['status'], 'WWPN': [], 'protocol': None, 'iscsi_name': node_data['iscsi_name'], 'config_node': node_data['config_node'], 'ipv4': [], 'ipv6': []}
            if (node['status'] == 'online'):
                self._storage_nodes[node['id']] = node
        except KeyError:
            self._handle_keyerror('lsnode', header)
