def replace_service_key(old_kid, kid, jwk, metadata, expiration_date): try: with db_transaction(): key = db_for_update( ServiceKey.select().where(ServiceKey.kid == old_kid)).get() key.metadata.update(metadata) ServiceKey.create( name=key.name, kid=kid, service=key.service, jwk=jwk, metadata=key.metadata, expiration_date=expiration_date, rotation_duration=key.rotation_duration, approval=key.approval, ) key.delete_instance() except ServiceKey.DoesNotExist: raise ServiceKeyDoesNotExist _notify_superusers(key) delete_all_notifications_by_path_prefix( "/service_key_approval/{0}".format(old_kid)) _gc_expired(key.service)
def create_service_key(name, kid, service, jwk, metadata, expiration_date, rotation_duration=None): _verify_service_name(service) _gc_expired(service) key = ServiceKey.create(name=name, kid=kid, service=service, jwk=jwk, metadata=metadata, expiration_date=expiration_date, rotation_duration=rotation_duration) _notify_superusers(key) return key