def _process_license()

in src/lambdas/custodian_license_updater/handler.py [0:0]


    def _process_license(self, lic: License) -> None:
        """
        Can raise LicenseSyncException
        :param lic:
        :return:
        """
        _LOG.info('Making request to LM ')
        data = self.license_manager_service.cl.sync_license(
            license_key=lic.license_key,
            customer=lic.customer
        )
        if not data:
            raise LicenseSyncError('Request to the License manager failed')
        new_rulesets = [
            self._process_ruleset(i, lic) for i in data.get('rulesets') or ()
        ]

        old_rulesets_ids = set(lic.ruleset_ids)
        new_rulesets_ids = {r.license_manager_id for r in new_rulesets}
        for to_remove in old_rulesets_ids - new_rulesets_ids:
            _LOG.info(f'Removing old licensed ruleset {to_remove}')
            item = self.ruleset_service.by_lm_id(
                to_remove, attributes_to_get=[Ruleset.id]
            )
            if item:
                self.ruleset_service.delete(item)

        _LOG.info('Saving new rulesets')
        self.ruleset_service.batch_save(new_rulesets)

        event_driven = data.get('event_driven') or {}
        if quota := event_driven.get('quota'):  # fixing some bug in cslm
            event_driven['quota'] = int(quota)
        _LOG.info('Saving new license')
        self.license_service.update(
            item=lic,
            description=data.get('description'),
            allowance=data.get('allowance'),
            customers=data.get('customers'),
            event_driven=event_driven,
            rulesets=[r.license_manager_id for r in new_rulesets],
            latest_sync=utc_iso(),
            valid_until=data.get('valid_until')
        )

        _LOG.info('Updating license activation')
        self.update_license_activation(lic, new_rulesets)