コード例 #1
0
    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!!!")
コード例 #2
0
 def db_resources_create(self, add_list):
     return db.volumes_create(self.context, add_list)