Skip to content

Commit

Permalink
fix: when add a workspace from A to B, update user_count of workspaces
Browse files Browse the repository at this point in the history
Signed-off-by: Youngjin Jo <youngjinjo@megazone.com>
  • Loading branch information
yjinjo committed Sep 27, 2024
1 parent 4a42fa3 commit ba2ad93
Show file tree
Hide file tree
Showing 4 changed files with 46 additions and 16 deletions.
1 change: 1 addition & 0 deletions src/spaceone/identity/model/user_profile/request.py
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,7 @@
"UserProfileConfirmMFARequest",
"UserProfileGetRequest",
"UserProfileGetWorkspacesRequest",
"UserProfileGetWorkspaceGroupsRequest",
]


Expand Down
2 changes: 1 addition & 1 deletion src/spaceone/identity/model/user_profile/response.py
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@
from pydantic import BaseModel
from spaceone.core import utils

__all__ = ["MyWorkspaceResponse", "MyWorkspacesResponse"]
__all__ = ["MyWorkspaceResponse", "MyWorkspacesResponse", "MyWorkspaceGroupsResponse"]

from spaceone.identity.model.role_binding.response import RoleBindingResponse

Expand Down
20 changes: 11 additions & 9 deletions src/spaceone/identity/service/user_profile_service.py
Original file line number Diff line number Diff line change
Expand Up @@ -16,21 +16,23 @@
from spaceone.identity.manager.mfa_manager.base import MFAManager
from spaceone.identity.manager.role_binding_manager import RoleBindingManager
from spaceone.identity.manager.role_manager import RoleManager
from spaceone.identity.manager.token_manager.local_token_manager import \
LocalTokenManager
from spaceone.identity.manager.token_manager.local_token_manager import (
LocalTokenManager,
)
from spaceone.identity.manager.user_manager import UserManager
from spaceone.identity.manager.workspace_group_manager import \
WorkspaceGroupManager
from spaceone.identity.manager.workspace_group_manager import WorkspaceGroupManager
from spaceone.identity.manager.workspace_manager import WorkspaceManager
from spaceone.identity.model.user.database import User
from spaceone.identity.model.user.response import *
from spaceone.identity.model.user_profile.request import *
from spaceone.identity.model.user_profile.request import \
UserProfileGetWorkspaceGroupsRequest
from spaceone.identity.model.user_profile.request import (
UserProfileGetWorkspaceGroupsRequest,
)
from spaceone.identity.model.user_profile.response import (
MyWorkspaceGroupsResponse, MyWorkspacesResponse)
from spaceone.identity.service.workspace_group_service import \
WorkspaceGroupService
MyWorkspaceGroupsResponse,
MyWorkspacesResponse,
)
from spaceone.identity.service.workspace_group_service import WorkspaceGroupService

_LOGGER = logging.getLogger(__name__)

Expand Down
39 changes: 33 additions & 6 deletions src/spaceone/identity/service/workspace_service.py
Original file line number Diff line number Diff line change
Expand Up @@ -12,12 +12,9 @@
from spaceone.identity.manager.project_manager import ProjectManager
from spaceone.identity.manager.resource_manager import ResourceManager
from spaceone.identity.manager.role_binding_manager import RoleBindingManager
from spaceone.identity.manager.service_account_manager import \
ServiceAccountManager
from spaceone.identity.manager.trusted_account_manager import \
TrustedAccountManager
from spaceone.identity.manager.workspace_group_manager import \
WorkspaceGroupManager
from spaceone.identity.manager.service_account_manager import ServiceAccountManager
from spaceone.identity.manager.trusted_account_manager import TrustedAccountManager
from spaceone.identity.manager.workspace_group_manager import WorkspaceGroupManager
from spaceone.identity.manager.workspace_manager import WorkspaceManager
from spaceone.identity.model import Workspace
from spaceone.identity.model.workspace.request import *
Expand Down Expand Up @@ -427,6 +424,36 @@ def _add_workspace_to_group(
workspace_group_id,
domain_id,
)

workspaces_info, total_count = (
self.workspace_mgr.list_workspace_group_workspaces(
old_workspace_group_id,
domain_id,
)
)
for workspace_info in workspaces_info:
workspace_vo = self.workspace_mgr.get_workspace(
workspace_info["workspace_id"], domain_id
)
user_rb_ids = self.rb_mgr.stat_role_bindings(
query={
"distinct": "user_id",
"filter": [
{
"k": "workspace_id",
"v": workspace_info["workspace_id"],
"o": "eq",
},
{"k": "domain_id", "v": domain_id, "o": "eq"},
],
}
).get("results", [])
user_rb_total_count = len(user_rb_ids)

workspace_vo = self.workspace_mgr.update_workspace_by_vo(
{"user_count": user_rb_total_count}, workspace_vo
)
workspace_info.update({"user_count": workspace_vo.user_count})
else:
is_updatable = False
else:
Expand Down

0 comments on commit ba2ad93

Please sign in to comment.