async def __call__(self, activity_input: Input) -> None:
raise NotImplementedError()
+
+
+class ResolveCharmErrors(BaseActivity):
+ """Mark the errors as resolved in all units for the given charm in the given model.
+
+ Collaborators:
+ Juju Controller: Connect to controller and mark charm errors as resolved.
+
+ Raises (Retryable):
+ ApplicationError If any of password, cacert, cloud_credentials is invalid
+ or Juju controller is not reachable
+
+ Activity Lifecycle:
+ This activity will continue indefinitely until the error of specific application
+ is resolved. Heartbeats are performed to ensure this activity does not time out.
+
+ A start-to-close of something reasonable (such as 2 minutes) should be implemented
+ at the workflow level and such a timeout shall trigger workflow failure logic.
+
+ """
+
+ @dataclass
+ class Input:
+ """
+ Input dataclass for marking errors as resolved on all units of a specific charm
+
+ Attributes:
+ -----------
+ vim_uuid : str
+ The UUID of the VIM as stored in the OSM vim_accounts
+ collection in Mongo.
+
+ model_name : str
+ Name of the model in Juju where the charm is deployed.
+
+ application_name : str
+ Name of the application for which unit errors have to be resolved.
+
+ poll_interval : int (optional)
+ Time, in seconds, to wait between application status checks to see if error resolved or not.
+
+ """
+
+ vim_uuid: str
+ model_name: str
+ application_name: str
+ poll_interval: int = 1
+
+ def __init__(self, juju_controller):
+ super().__init__()
+ self.juju_controller = juju_controller
+
+ async def __call__(self, activity_input: Input) -> None:
+ raise NotImplementedError()