'Deletes a cgsnapshot.
:param context: the context of the caller.
:param cgsnapshot: the dictionary of the cgsnapshot to be deleted.
:param snapshots: a list of snapshot dictionaries in the cgsnapshot.
:returns: model_update, snapshots_model_update
param snapshots is retrieved directly from the db. It is a list of
cinder.db.sqlalchemy.models.Snapshot to be precise. It cannot be
assigned to snapshots_model_update. snapshots_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 snapshots_model_update and model_update
and return them.
The manager will check snapshots_model_update and update db accordingly
for each snapshot. If the driver successfully deleted some snapshots
but failed to delete others, it should set statuses of the snapshots
accordingly so that the manager can update db correctly.
If the status in any entry of snapshots_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 cgsnapshot will be
set to \'error\' in the db. If snapshots_model_update is not returned by
the driver, the manager will set the status of every snapshot 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 and the statuses of
cgsnapshot and all snapshots will be set to \'error\'.
For a successful operation, the driver can either build the
model_update and snapshots_model_update and return them or
return None, None. The statuses of cgsnapshot and all snapshots
will be set to \'deleted\' after the manager deletes them from db.'

def delete_cgsnapshot(self, context, cgsnapshot, snapshots):

    raise NotImplementedError()
