-
Notifications
You must be signed in to change notification settings - Fork 9
/
Copy pathrole.py
72 lines (57 loc) · 1.47 KB
/
role.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
from enum import Enum
from typing import NamedTuple, Optional
from shared.constants import (
GOVERNANCE_AGENT_API_KEY,
GOVERNANCE_AGENT_URL,
TENANT_AGENT_API_KEY,
TENANT_AGENT_URL,
)
class AgentType(NamedTuple):
name: str
base_url: str
is_multitenant: bool
is_admin: bool
x_api_key: Optional[str]
GOVERNANCE_AGENT_TYPE = AgentType(
name="governance",
base_url=GOVERNANCE_AGENT_URL,
is_multitenant=False,
is_admin=True,
x_api_key=GOVERNANCE_AGENT_API_KEY,
)
TENANT_ADMIN_AGENT_TYPE = AgentType(
name="tenant-admin",
base_url=TENANT_AGENT_URL,
is_multitenant=True,
is_admin=True,
x_api_key=TENANT_AGENT_API_KEY,
)
TENANT_AGENT_TYPE = AgentType(
name="tenant",
base_url=TENANT_AGENT_URL,
is_multitenant=True,
is_admin=False,
x_api_key=TENANT_AGENT_API_KEY,
)
class Role(Enum):
GOVERNANCE = GOVERNANCE_AGENT_TYPE
TENANT_ADMIN = TENANT_ADMIN_AGENT_TYPE
TENANT = TENANT_AGENT_TYPE
@staticmethod
def from_str(role: str) -> Optional["Role"]:
for item in Role:
if item.role_name == role:
return item
return None
@property
def role_name(self) -> str:
return self.value.name
@property
def agent_type(self) -> AgentType:
return self.value
@property
def is_admin(self) -> bool:
return self.value.is_admin
@property
def is_multitenant(self) -> bool:
return self.value.is_multitenant