Exemplo n.º 1
0
    def review(self, assets):
        """Review existing data in Config Validator (Audit in parallel
        per policy).

        Args:
            assets (list): A list of assets to review.

        Returns:
            list: List of violations.

        Raises:
            ConfigValidatorAuditError: Config Validator Audit Error.
            ConfigValidatorServerUnavailableError: Config Validator Server
                Unavailable Error.
        """
        try:

            review_request = validator_pb2.ReviewRequest()
            # pylint: disable=no-member
            review_request.assets.extend(assets)
            # pylint: enable=no-member
            LOGGER.info(f'Config Validator - reviewing {len(assets)} assets')
            return self.stub.Review(review_request).violations
        except grpc.RpcError as e:
            # pylint: disable=no-member
            if e.code() == grpc.StatusCode.UNAVAILABLE:
                raise errors.ConfigValidatorServerUnavailableError(e)
            else:
                LOGGER.exception('ConfigValidatorAuditError: %s', e)
                raise errors.ConfigValidatorAuditError(e)
    def reset(self):
        """Clears previously added data from Config Validator.

        Raises:
            ConfigValidatorResetError: Config Validator Reset Error.
            ConfigValidatorServerUnavailableError: Config Validator Server
                Unavailable Error."""
        try:
            self.stub.Reset(validator_pb2.ResetRequest())
        except grpc.RpcError as e:
            # pylint: disable=no-member
            if e.code() == grpc.StatusCode.UNAVAILABLE:
                raise errors.ConfigValidatorServerUnavailableError(e.message)
            else:
                LOGGER.exception('ConfigValidatorResetError: %s', e.message)
                raise errors.ConfigValidatorResetError(e.message)
    def audit(self):
        """Audit existing data in Config Validator.

        Returns:
            list: List of violations.

        Raises:
            ConfigValidatorAuditError: Config Validator Audit Error.
            ConfigValidatorServerUnavailableError: Config Validator Server
                Unavailable Error.
        """
        try:
            return self.stub.Audit(validator_pb2.AuditRequest()).violations
        except grpc.RpcError as e:
            # pylint: disable=no-member
            if e.code() == grpc.StatusCode.UNAVAILABLE:
                raise errors.ConfigValidatorServerUnavailableError(e.message)
            else:
                LOGGER.exception('ConfigValidatorAuditError: %s', e.message)
                raise errors.ConfigValidatorAuditError(e.message)
    def add_data(self, assets):
        """Add asset data.

        Args:
            assets (list): A list of asset data.

        Raises:
            ConfigValidatorAddDataError: Config Validator Add Data Error.
            ConfigValidatorServerUnavailableError: Config Validator
                Server Unavailable Error.
        """
        try:
            request = validator_pb2.AddDataRequest()
            request.assets.extend(assets)  # pylint: disable=no-member
            self.stub.AddData(request)
        except grpc.RpcError as e:
            # pylint: disable=no-member
            if e.code() == grpc.StatusCode.UNAVAILABLE:
                raise errors.ConfigValidatorServerUnavailableError(e.message)
            else:
                LOGGER.exception('Failed to add data: %s', assets[0])
                # LOGGER.exception('ConfigValidatorAddDataError: %s', e.message)
                # raise errors.ConfigValidatorAddDataError(e.message)
                return