'Deletes a group.
:param context: the context of the caller.
:param group: the Group object of the group to be deleted.
:param volumes: a list of Volume objects in the group.
:returns: model_update, volumes_model_update
param volumes is a list of objects retrieved from the db. It cannot
be assigned to volumes_model_update. volumes_model_update is a list
of dictionaries. It has to be built by the driver. An entry will be
in this format: {\'id\': xxx, \'status\': xxx, ......}. model_update
will be in this format: {\'status\': xxx, ......}.
The driver should populate volumes_model_update and model_update
and return them.
The manager will check volumes_model_update and update db accordingly
for each volume. If the driver successfully deleted some volumes
but failed to delete others, it should set statuses of the volumes
accordingly so that the manager can update db correctly.
If the status in any entry of volumes_model_update is \'error_deleting\'
or \'error\', the status in model_update will be set to the same if it
is not already \'error_deleting\' or \'error\'.
If the status in model_update is \'error_deleting\' or \'error\', the
manager will raise an exception and the status of the group will be
set to \'error\' in the db. If volumes_model_update is not returned by
the driver, the manager will set the status of every volume in the
group to \'error\' in the except block.
If the driver raises an exception during the operation, it will be
caught by the try-except block in the manager. The statuses of the
group and all volumes in it will be set to \'error\'.
For a successful operation, the driver can either build the
model_update and volumes_model_update and return them or
return None, None. The statuses of the group and all volumes
will be set to \'deleted\' after the manager deletes them from db.'

def delete_group(self, context, group, volumes):

    raise NotImplementedError()
