Skip to content

Commit

Permalink
moz_kinto_publisher: Unenroll local deletions (#161)
Browse files Browse the repository at this point in the history
  • Loading branch information
jschanck authored and mozkeeler committed Oct 7, 2021
1 parent 246107a commit cb9fce8
Showing 1 changed file with 28 additions and 4 deletions.
32 changes: 28 additions & 4 deletions moz_kinto_publisher/main.py
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,7 @@
from datetime import datetime, timedelta, timezone
from kinto_http import Client
from kinto_http.exceptions import KintoException
from kinto_http.patch_type import BasicPatch
from pathlib import Path
from requests.auth import HTTPBasicAuth
from cryptography import x509
Expand Down Expand Up @@ -521,6 +522,17 @@ def delete_from_kinto(self, *, rw_client=None):
id=self.kinto_id,
)

def unenroll_from_crlite_in_kinto(self, *, rw_client=None):
if self.kinto_id is None:
raise IntermediateRecordError(
"Cannot unenroll a record not at Kinto: {}".format(self)
)
rw_client.patch_record(
collection=settings.KINTO_INTERMEDIATES_COLLECTION,
id=self.kinto_id,
changes=BasicPatch({"crlite_enrolled": False}),
)

def update_kinto(self, *, remote_record=None, rw_client=None):
if self.pemData is None:
raise IntermediateRecordError(
Expand Down Expand Up @@ -782,14 +794,26 @@ def publish_intermediates(*, args, ro_client, rw_client):
except KintoException as ke:
log.warning(f"Couldn't delete record id {record['id']}: {ke}")

for unique_id in to_delete:
intermediate = remote_intermediates[unique_id]
log.info(f"Deleting {intermediate} from Kinto (delete={args.delete})")
if args.delete:
if args.delete:
for unique_id in to_delete:
intermediate = remote_intermediates[unique_id]
log.info(f"Deleting {intermediate} from Kinto")
try:
intermediate.delete_from_kinto(rw_client=rw_client)
except KintoException as ke:
log.warning(f"Couldn't delete record id {intermediate}: {ke}")
else:
# Locally deleted intermediates should be unenrolled from CRLite even
# if we aren't performing deletions.
for unique_id in to_delete:
intermediate = remote_intermediates[unique_id]
if not intermediate.crlite_enrolled:
continue
log.info(f"Unenrolling deleted {intermediate} from CRLite")
try:
intermediate.unenroll_from_crlite_in_kinto(rw_client=rw_client)
except KintoException as ke:
log.warning(f"Couldn't unenroll record id {intermediate}: {ke}")

for unique_id in to_upload:
intermediate = local_intermediates[unique_id]
Expand Down

0 comments on commit cb9fce8

Please sign in to comment.