@@ -2734,6 +2734,27 @@ async def grant_secret(self, secret_name, application, *applications):
27342734 if result_error .error is not None :
27352735 raise JujuAPIError (result_error .error )
27362736
2737+ async def revoke_secret (self , secret_name , application , * applications ):
2738+ """Revoke access to a secret.
2739+
2740+ Revoke applications' access to view the value of a specified secret.
2741+
2742+ :param secret_name str: ID|name of the secret.
2743+ :param application str: name of an application for which the access to the secret is revoked
2744+ :param applications []str: names of more applications to disassociate the secret with
2745+ """
2746+ if client .SecretsFacade .best_facade_version (self .connection ()) < 2 :
2747+ raise JujuNotSupportedError ("user secrets" )
2748+ secretsFacade = client .SecretsFacade .from_connection (self .connection ())
2749+ results = await secretsFacade .RevokeSecret (
2750+ applications = [application ] + list (applications ),
2751+ label = secret_name )
2752+ if len (results .results ) != 1 :
2753+ raise JujuAPIError (f"expected 1 result, got { len (results .results )} " )
2754+ result_error = results .results [0 ]
2755+ if result_error .error is not None :
2756+ raise JujuAPIError (result_error .error )
2757+
27372758 async def _get_source_api (self , url , controller_name = None ):
27382759 controller = Controller ()
27392760 if url .has_empty_source ():
0 commit comments