Skip to content

Commit 494974a

Browse files
author
Jongmin Kim
authored
Merge pull request #294 from whdalsrnt/master
Implement Dormant Features
2 parents 28ca5e7 + d90a54a commit 494974a

File tree

14 files changed

+84
-67
lines changed

14 files changed

+84
-67
lines changed

src/spaceone/identity/interface/grpc/project.py

Lines changed: 0 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -49,18 +49,6 @@ def remove_users(self, request, context):
4949
response: dict = project_svc.remove_users(params)
5050
return self.dict_to_message(response)
5151

52-
def add_user_groups(self, request, context):
53-
params, metadata = self.parse_request(request, context)
54-
project_svc = ProjectService(metadata)
55-
response: dict = project_svc.add_user_groups(params)
56-
return self.dict_to_message(response)
57-
58-
def remove_user_groups(self, request, context):
59-
params, metadata = self.parse_request(request, context)
60-
project_svc = ProjectService(metadata)
61-
response: dict = project_svc.remove_user_groups(params)
62-
return self.dict_to_message(response)
63-
6452
def get(self, request, context):
6553
params, metadata = self.parse_request(request, context)
6654
project_svc = ProjectService(metadata)

src/spaceone/identity/model/project/database.py

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,6 @@ class Project(MongoModel):
1010
)
1111
tags = DictField(default=None)
1212
users = ListField(StringField(max_length=40), default=None)
13-
user_groups = ListField(StringField(max_length=255), default=None)
1413
created_by = StringField(max_length=255)
1514
reference_id = StringField(max_length=255, default=None, null=True)
1615
is_managed = BooleanField(default=False)
@@ -27,7 +26,6 @@ class Project(MongoModel):
2726
"project_type",
2827
"tags",
2928
"users",
30-
"user_groups",
3129
"is_managed",
3230
"trusted_account_id",
3331
"project_group_id",
@@ -43,13 +41,11 @@ class Project(MongoModel):
4341
"change_query_keys": {
4442
"user_projects": "project_id",
4543
"user_id": "users",
46-
"user_group_id": "user_groups",
4744
},
4845
"ordering": ["name"],
4946
"indexes": [
5047
"project_type",
5148
"users",
52-
"user_groups",
5349
"project_group_id",
5450
"workspace_id",
5551
"domain_id",

src/spaceone/identity/model/project/request.py

Lines changed: 0 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -8,8 +8,6 @@
88
"ProjectDeleteRequest",
99
"ProjectAddUsersRequest",
1010
"ProjectRemoveUsersRequest",
11-
"ProjectAddUserGroupsRequest",
12-
"ProjectRemoveUserGroupsRequest",
1311
"ProjectGetRequest",
1412
"ProjectSearchQueryRequest",
1513
"ProjectStatQueryRequest",
@@ -74,22 +72,6 @@ class ProjectRemoveUsersRequest(BaseModel):
7472
user_projects: Union[list, None] = None
7573

7674

77-
class ProjectAddUserGroupsRequest(BaseModel):
78-
project_id: str
79-
user_groups: List[str]
80-
workspace_id: str
81-
domain_id: str
82-
user_projects: Union[list, None] = None
83-
84-
85-
class ProjectRemoveUserGroupsRequest(BaseModel):
86-
project_id: str
87-
user_groups: List[str]
88-
workspace_id: str
89-
domain_id: str
90-
user_projects: Union[list, None] = None
91-
92-
9375
class ProjectGetRequest(BaseModel):
9476
project_id: str
9577
workspace_id: Union[str, None] = None
@@ -105,7 +87,6 @@ class ProjectSearchQueryRequest(BaseModel):
10587
created_by: Union[str, None] = None
10688
include_children: Union[bool, None] = None
10789
user_id: Union[str, None] = None
108-
user_group_id: Union[str, None] = None
10990
project_group_id: Union[str, None] = None
11091
workspace_id: Union[str, None] = None
11192
domain_id: str

src/spaceone/identity/model/project/response.py

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,6 @@ class ProjectResponse(BaseModel):
1515
project_type: Union[ProjectType, None] = None
1616
tags: Union[dict, None] = None
1717
users: Union[List[str], None] = None
18-
user_groups: Union[List[str], None] = None
1918
created_by: Union[str, None] = None
2019
reference_id: Union[str, None] = None
2120
is_managed: Union[bool, None] = None

src/spaceone/identity/model/service_account/database.py

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,11 +7,18 @@ class ServiceAccount(MongoModel):
77
name = StringField(
88
max_length=255, unique_with=["domain_id", "workspace_id", "project_id"]
99
)
10+
state = StringField(
11+
max_length=20,
12+
required=True,
13+
choices=["PENDING", "ACTIVE", "INACTIVE", "DELETED"],
14+
)
1015
data = DictField(default=None)
1116
provider = StringField(max_length=40)
1217
tags = DictField(default=None)
1318
reference_id = StringField(max_length=255, default=None, null=True)
1419
is_managed = BooleanField(default=False)
20+
asset_info = DictField(default=None)
21+
cost_info = DictField(default=None)
1522
secret_schema_id = StringField(max_length=40)
1623
secret_id = StringField(max_length=40)
1724
trusted_account_id = StringField(max_length=40, null=True, default=None)
@@ -20,13 +27,18 @@ class ServiceAccount(MongoModel):
2027
domain_id = StringField(max_length=40)
2128
created_at = DateTimeField(auto_now_add=True)
2229
last_synced_at = DateTimeField(default=None, null=True)
30+
deleted_at = DateTimeField(default=None, null=True)
31+
inactivated_at = DateTimeField(default=None, null=True)
2332

2433
meta = {
2534
"updatable_fields": [
2635
"name",
36+
"state",
2737
"data",
2838
"tags",
2939
"is_managed",
40+
"asset_info",
41+
"cost_info",
3042
"secret_schema_id",
3143
"secret_id",
3244
"trusted_account_id",
@@ -36,6 +48,7 @@ class ServiceAccount(MongoModel):
3648
"minimal_fields": [
3749
"service_account_id",
3850
"name",
51+
"state",
3952
"provider",
4053
"is_managed",
4154
"trusted_account_id",
@@ -46,6 +59,7 @@ class ServiceAccount(MongoModel):
4659
"ordering": ["name"],
4760
"indexes": [
4861
"name",
62+
"state",
4963
"provider",
5064
"secret_schema_id",
5165
"secret_id",

src/spaceone/identity/model/service_account/request.py

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
from typing import Union
1+
from typing import Union, Literal
22
from pydantic import BaseModel
33

44
__all__ = [
@@ -10,8 +10,11 @@
1010
"ServiceAccountGetRequest",
1111
"ServiceAccountSearchQueryRequest",
1212
"ServiceAccountStatQueryRequest",
13+
"State",
1314
]
1415

16+
State = Literal["PENDING", "ACTIVE", "INACTIVE", "DELETED"]
17+
1518

1619
class ServiceAccountCreateRequest(BaseModel):
1720
name: str
@@ -72,6 +75,7 @@ class ServiceAccountSearchQueryRequest(BaseModel):
7275
query: Union[dict, None] = None
7376
service_account_id: Union[str, None] = None
7477
name: Union[str, None] = None
78+
state: Union[State, None] = None
7579
provider: Union[str, None] = None
7680
secret_schema_id: Union[str, None] = None
7781
secret_id: Union[str, None] = None

src/spaceone/identity/model/service_account/response.py

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,13 +2,15 @@
22
from typing import Union, List
33
from pydantic import BaseModel
44
from spaceone.core import utils
5+
from spaceone.identity.model.service_account.request import State
56

67
__all__ = ["ServiceAccountResponse", "ServiceAccountsResponse"]
78

89

910
class ServiceAccountResponse(BaseModel):
1011
service_account_id: Union[str, None] = None
1112
name: Union[str, None] = None
13+
state: Union[State, None] = None
1214
data: Union[dict, None] = None
1315
provider: Union[str, None] = None
1416
tags: Union[dict, None] = None
@@ -22,11 +24,15 @@ class ServiceAccountResponse(BaseModel):
2224
domain_id: Union[str, None] = None
2325
created_at: Union[datetime, None] = None
2426
last_synced_at: Union[datetime, None] = None
27+
deleted_at: Union[datetime, None] = None
28+
inactivated_at: Union[datetime, None] = None
2529

2630
def dict(self, *args, **kwargs):
2731
data = super().dict(*args, **kwargs)
2832
data["created_at"] = utils.datetime_to_iso8601(data["created_at"])
2933
data["last_synced_at"] = utils.datetime_to_iso8601(data.get("last_synced_at"))
34+
data["deleted_at"] = utils.datetime_to_iso8601(data.get("deleted_at"))
35+
data["inactivated_at"] = utils.datetime_to_iso8601(data.get("inactivated_at"))
3036
return data
3137

3238

src/spaceone/identity/model/user_profile/response.py

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,15 +19,20 @@ class MyWorkspaceResponse(BaseModel):
1919
created_by: Union[str, None] = None
2020
reference_id: Union[str, None] = None
2121
is_managed: Union[bool, None] = None
22+
is_dormant: Union[bool, None] = None
2223
role_id: Union[str, None] = None
2324
domain_id: Union[str, None] = None
2425
created_at: Union[datetime, None] = None
2526
last_synced_at: Union[datetime, None] = None
27+
dormant_updated_at: Union[datetime, None] = None
2628

2729
def dict(self, *args, **kwargs):
2830
data = super().dict(*args, **kwargs)
2931
data["created_at"] = utils.datetime_to_iso8601(data["created_at"])
3032
data["last_synced_at"] = utils.datetime_to_iso8601(data.get("last_synced_at"))
33+
data["dormant_updated_at"] = utils.datetime_to_iso8601(
34+
data.get("dormant_updated_at")
35+
)
3136
return data
3237

3338

src/spaceone/identity/model/workspace/database.py

Lines changed: 20 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,18 +15,29 @@ class Workspace(MongoModel):
1515
created_by = StringField(max_length=255)
1616
references = ListField(StringField(max_length=255), default=None, null=True)
1717
is_managed = BooleanField(default=False)
18+
19+
is_dormant = BooleanField(default=False)
20+
dormant_ttl = IntField(default=None)
21+
service_account_count = IntField(default=None)
22+
cost_info = DictField(default=None)
23+
1824
trusted_account_id = StringField(max_length=40, default=None, null=True)
1925
domain_id = StringField(max_length=40)
2026
created_at = DateTimeField(auto_now_add=True)
2127
deleted_at = DateTimeField(default=None, null=True)
2228
last_synced_at = DateTimeField(default=None, null=True)
29+
dormant_updated_at = DateTimeField(default=None, null=True)
2330

2431
meta = {
2532
"updatable_fields": [
2633
"name",
2734
"state",
2835
"tags",
2936
"is_managed",
37+
"is_dormant",
38+
"dormant_ttl",
39+
"service_account_count",
40+
"cost_info",
3041
"trusted_account_id",
3142
"references",
3243
"deleted_at",
@@ -37,12 +48,20 @@ class Workspace(MongoModel):
3748
"name",
3849
"state",
3950
"is_managed",
51+
"is_dormant",
4052
],
4153
"change_query_keys": {
4254
"reference_id": "references",
4355
},
4456
"ordering": ["name"],
45-
"indexes": ["name", "domain_id"],
57+
"indexes": [
58+
"name",
59+
"state",
60+
"domain_id",
61+
"created_by",
62+
"is_managed",
63+
"is_dormant",
64+
],
4665
}
4766

4867
@queryset_manager

src/spaceone/identity/model/workspace/request.py

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
from typing import Union
1+
from typing import Union, Literal
22
from pydantic import BaseModel
33

44
__all__ = [
@@ -11,8 +11,11 @@
1111
"WorkspaceCheckRequest",
1212
"WorkspaceSearchQueryRequest",
1313
"WorkspaceStatQueryRequest",
14+
"State",
1415
]
1516

17+
State = Literal["ENABLED", "DISABLED"]
18+
1619

1720
class WorkspaceCreateRequest(BaseModel):
1821
name: str
@@ -56,8 +59,11 @@ class WorkspaceCheckRequest(BaseModel):
5659
class WorkspaceSearchQueryRequest(BaseModel):
5760
query: Union[dict, None] = None
5861
name: Union[str, None] = None
62+
state: Union[State, None] = None
5963
workspace_id: Union[str, None] = None
6064
created_by: Union[str, None] = None
65+
is_managed: Union[bool, None] = None
66+
is_dormant: Union[bool, None] = None
6167
domain_id: str
6268

6369

0 commit comments

Comments
 (0)