def sync(self): """ :return: """ LOG.info('Syncing volumes for storage id:{0}'.format(self.storage_id)) try: # collect the volumes list from driver and database storage_volumes = self.driver_api.list_volumes( self.context, self.storage_id) db_volumes = db.volume_get_all( self.context, filters={"storage_id": self.storage_id}) add_list, update_list, delete_id_list = self._classify_resources( storage_volumes, db_volumes, 'native_volume_id') LOG.info('###StorageVolumeTask for {0}:add={1},delete={2},' 'update={3}'.format(self.storage_id, len(add_list), len(delete_id_list), len(update_list))) if delete_id_list: db.volumes_delete(self.context, delete_id_list) if update_list: db.volumes_update(self.context, update_list) if add_list: db.volumes_create(self.context, add_list) except Exception as e: msg = _('Failed to sync volumes entry in DB: {0}'.format(e)) LOG.error(msg) raise else: LOG.info("Syncing volumes successful!!!")
def db_resources_delete(self, delete_id_list): return db.volumes_delete(self.context, delete_id_list)