| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152 |
- import enum
- import logging
-
- from pydantic import BaseModel
-
- from services.enterprise.base import EnterprisePluginManagerRequest
- from services.errors.base import BaseServiceError
-
-
- class PluginCredentialType(enum.Enum):
- MODEL = 0
- TOOL = 1
-
- def to_number(self):
- return self.value
-
-
- class CheckCredentialPolicyComplianceRequest(BaseModel):
- dify_credential_id: str
- provider: str
- credential_type: PluginCredentialType
-
- def model_dump(self, **kwargs):
- data = super().model_dump(**kwargs)
- data["credential_type"] = self.credential_type.to_number()
- return data
-
-
- class CredentialPolicyViolationError(BaseServiceError):
- pass
-
-
- class PluginManagerService:
- @classmethod
- def check_credential_policy_compliance(cls, body: CheckCredentialPolicyComplianceRequest):
- try:
- ret = EnterprisePluginManagerRequest.send_request(
- "POST", "/check-credential-policy-compliance", json=body.model_dump()
- )
- if not isinstance(ret, dict) or "result" not in ret:
- raise ValueError("Invalid response format from plugin manager API")
- except Exception as e:
- raise CredentialPolicyViolationError(
- f"error occurred while checking credential policy compliance: {e}"
- ) from e
-
- if not ret.get("result", False):
- raise CredentialPolicyViolationError("Credentials not available: Please use ENTERPRISE global credentials")
-
- logging.debug(
- f"Credential policy compliance checked for {body.provider} with credential {body.dify_credential_id}, result: {ret.get('result', False)}"
- )
|