def delete(self, roles=[]): storage_filename = self._get_storage_filename() volume_manager = JsonVolumeManager(storage_filename) for role in roles: mountable_volumes_list = volume_manager.get_instance_storage_for_role(role) ec2_volumes = self._get_ec2_volumes_dict(mountable_volumes_list) all_available = True for volume in ec2_volumes.itervalues(): if volume.status != 'available': all_available = False logger.warning("Volume %s is not available.", volume) if not all_available: msg = "Some volumes are still in use. Aborting delete." logger.warning(msg) raise VolumesStillInUseException(msg) for volume in ec2_volumes.itervalues(): volume.delete() volume_manager.remove_instance_storage_for_role(role)
def _get_mountable_volumes(self, role): storage_filename = self._get_storage_filename() volume_manager = JsonVolumeManager(storage_filename) return volume_manager.get_instance_storage_for_role(role)