'Create a new volume in the given storage group.
:param array: the array serial number
:param volume_name: the volume name (String)
:param storagegroup_name: the storage group name
:param volume_size: volume size (String)
:param extra_specs: the extra specifications
:returns: dict -- volume_dict - the volume dict
:raises: VolumeBackendAPIException'

def create_volume_from_sg(self, array, volume_name, storagegroup_name, volume_size, extra_specs):

    payload = {'executionOption': 'ASYNCHRONOUS', 'editStorageGroupActionParam': {'expandStorageGroupParam': {'addVolumeParam': {'num_of_vols': 1, 'emulation': 'FBA', 'volumeIdentifier': {'identifier_name': volume_name, 'volumeIdentifierChoice': 'identifier_name'}, 'volumeAttribute': {'volume_size': volume_size, 'capacityUnit': 'GB'}}}}}
    (status_code, job) = self.modify_storage_group(array, storagegroup_name, payload)
    LOG.debug('Create    Volume:    %(volumename)s.    Status    code:    %(sc)lu.', {'volumename': volume_name, 'sc': status_code})
    task = self.wait_for_job('Create    volume', status_code, job, extra_specs)
    device_id = None
    if task:
        for t in task:
            try:
                desc = t['description']
                if (CREATE_VOL_STRING in desc):
                    t_list = desc.split()
                    device_id = t_list[(len(t_list) - 1)]
                    device_id = device_id[1:(-1)]
                    break
                if device_id:
                    self.get_volume(array, device_id)
            except Exception as e:
                LOG.info('Could    not    retrieve    device    id    from    job.    Exception    received    was    %(e)s.    Attempting    retrieval    by    volume_identifier.', {'e': e})
    if (not device_id):
        device_id = self.find_volume_device_id(array, volume_name)
    volume_dict = {'array': array, 'device_id': device_id}
    return volume_dict
