Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 5 additions & 0 deletions src/spaceone/dashboard/manager/identity_manager.py
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,11 @@ def check_workspace(self, workspace_id: str, domain_id: str) -> None:
token=system_token,
)

def check_project_group(self, project_group_id: str) -> None:
self.identity_conn.dispatch(
"ProjectGroup.get", {"project_group_id": project_group_id}
)

def get_project(self, project_id: str) -> dict:
return self.identity_conn.dispatch("Project.get", {"project_id": project_id})

Expand Down
4 changes: 4 additions & 0 deletions src/spaceone/dashboard/manager/public_folder_manager.py
Original file line number Diff line number Diff line change
Expand Up @@ -51,6 +51,7 @@ def get_public_folder(
workspace_id: str = None,
user_projects=None,
resource_group=None,
project_group_id=None,
) -> PublicFolder:
conditions = {
"folder_id": folder_id,
Expand All @@ -66,6 +67,9 @@ def get_public_folder(
if resource_group:
conditions["resource_group"] = resource_group

if project_group_id:
conditions["project_group_id"] = project_group_id

return self.folder_model.get(**conditions)

def filter_public_folders(self, **conditions) -> QuerySet:
Expand Down
3 changes: 3 additions & 0 deletions src/spaceone/dashboard/model/private_dashboard/database.py
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,7 @@ class PrivateDashboard(MongoModel):
tags = DictField(default=None)
folder_id = StringField(max_length=40, default=None, null=True)
user_id = StringField(max_length=40)
project_group_id = StringField(max_length=40)
workspace_id = StringField(max_length=40, default=None, null=True)
domain_id = StringField(max_length=40)
created_at = DateTimeField(auto_now_add=True)
Expand All @@ -42,13 +43,15 @@ class PrivateDashboard(MongoModel):
"name",
"version",
"user_id",
"project_group_id",
"workspace_id",
"domain_id",
],
"ordering": ["name"],
"indexes": [
"name",
"user_id",
"project_group_id",
"workspace_id",
"domain_id",
],
Expand Down
2 changes: 2 additions & 0 deletions src/spaceone/dashboard/model/private_dashboard/request.py
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,7 @@ class PrivateDashboardCreateRequest(BaseModel):
tags: Union[dict, None] = None
folder_id: Union[str, None] = None
user_id: str
project_group_id: Union[str, None] = None
workspace_id: Union[str, None] = None
domain_id: str

Expand Down Expand Up @@ -72,6 +73,7 @@ class PrivateDashboardSearchQueryRequest(BaseModel):
folder_id: Union[str, None] = None
workspace_id: Union[str, None] = None
user_id: str
project_group_id: Union[str, None] = None
domain_id: str


Expand Down
1 change: 1 addition & 0 deletions src/spaceone/dashboard/model/private_dashboard/response.py
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,7 @@ class PrivateDashboardResponse(BaseModel):
tags: Union[dict, None] = None
folder_id: Union[str, None] = None
user_id: Union[str, None] = None
project_group_id: Union[str, None] = None
workspace_id: Union[str, None] = None
domain_id: Union[str, None] = None
created_at: Union[datetime, None] = None
Expand Down
3 changes: 3 additions & 0 deletions src/spaceone/dashboard/model/private_folder/database.py
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@ class PrivateFolder(MongoModel):
max_length=40, choices=("DOMAIN", "WORKSPACE", "PROJECT")
)
user_id = StringField(max_length=40)
project_group_id = StringField(max_length=40)
workspace_id = StringField(max_length=40, default=None, null=True)
domain_id = StringField(max_length=40)
created_at = DateTimeField(auto_now_add=True)
Expand All @@ -25,13 +26,15 @@ class PrivateFolder(MongoModel):
"folder_id",
"name",
"user_id",
"project_group_id",
"workspace_id",
"domain_id",
],
"ordering": ["name"],
"indexes": [
"name",
"user_id",
"project_group_id",
"workspace_id",
"domain_id",
],
Expand Down
2 changes: 2 additions & 0 deletions src/spaceone/dashboard/model/private_folder/request.py
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,7 @@ class PrivateFolderCreateRequest(BaseModel):
tags: Union[dict, None] = None
dashboards: Union[list, None] = None
user_id: str
project_group_id: Union[str, None] = None
workspace_id: Union[str, None] = None
domain_id: str

Expand Down Expand Up @@ -45,6 +46,7 @@ class PrivateFolderSearchQueryRequest(BaseModel):
folder_id: Union[str, None] = None
name: Union[str, None] = None
user_id: str
project_group_id: Union[str, None] = None
workspace_id: Union[str, None] = None
domain_id: str

Expand Down
1 change: 1 addition & 0 deletions src/spaceone/dashboard/model/private_folder/response.py
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@ class PrivateFolderResponse(BaseModel):
name: Union[str, None] = None
tags: Union[dict, None] = None
user_id: Union[str, None] = None
project_group_id: Union[str, None] = None
workspace_id: Union[str, None] = None
domain_id: Union[str, None] = None
created_at: Union[datetime, None] = None
Expand Down
4 changes: 4 additions & 0 deletions src/spaceone/dashboard/model/public_dashboard/database.py
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,7 @@ class PublicDashboard(MongoModel):
)
folder_id = StringField(max_length=40, default=None, null=True)
project_id = StringField(max_length=40)
project_group_id = StringField(max_length=40)
workspace_id = StringField(max_length=40)
domain_id = StringField(max_length=40)
created_at = DateTimeField(auto_now_add=True)
Expand All @@ -44,6 +45,7 @@ class PublicDashboard(MongoModel):
"scope",
"folder_id",
"project_id",
"project_group_id",
"workspace_id",
],
"minimal_fields": [
Expand All @@ -53,6 +55,7 @@ class PublicDashboard(MongoModel):
"shared",
"resource_group",
"project_id",
"project_group_id",
"workspace_id",
"domain_id",
],
Expand All @@ -64,6 +67,7 @@ class PublicDashboard(MongoModel):
"scope",
"resource_group",
"project_id",
"project_group_id",
"workspace_id",
"domain_id",
],
Expand Down
2 changes: 2 additions & 0 deletions src/spaceone/dashboard/model/public_dashboard/request.py
Original file line number Diff line number Diff line change
Expand Up @@ -32,6 +32,7 @@ class PublicDashboardCreateRequest(BaseModel):
folder_id: Union[str, None] = None
resource_group: ResourceGroup
project_id: Union[str, None] = None
project_group_id: Union[str, None] = None
workspace_id: Union[str, None] = None
domain_id: str
user_projects: Union[list, None] = None
Expand Down Expand Up @@ -101,6 +102,7 @@ class PublicDashboardSearchQueryRequest(BaseModel):
scope: Union[Scope, None] = None
folder_id: Union[str, None] = None
project_id: Union[str, None] = None
project_group_id: Union[str, None] = None
workspace_id: Union[str, list, None] = None
domain_id: str
user_projects: Union[list, None] = None
Expand Down
1 change: 1 addition & 0 deletions src/spaceone/dashboard/model/public_dashboard/response.py
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,7 @@ class PublicDashboardResponse(BaseModel):
folder_id: Union[str, None] = None
resource_group: Union[ResourceGroup, None] = None
project_id: Union[str, None] = None
project_group_id: Union[str, None] = None
workspace_id: Union[str, None] = None
domain_id: Union[str, None] = None
created_at: Union[datetime, None] = None
Expand Down
4 changes: 4 additions & 0 deletions src/spaceone/dashboard/model/public_folder/database.py
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@ class PublicFolder(MongoModel):
max_length=40, choices=("DOMAIN", "WORKSPACE", "PROJECT")
)
project_id = StringField(max_length=40)
project_group_id = StringField(max_length=40)
workspace_id = StringField(max_length=40)
domain_id = StringField(max_length=40)
created_at = DateTimeField(auto_now_add=True)
Expand All @@ -25,13 +26,15 @@ class PublicFolder(MongoModel):
"shared",
"scope",
"project_id",
"project_group_id",
"workspace_id",
],
"minimal_fields": [
"folder_id",
"name",
"resource_group",
"project_id",
"project_group_id",
"workspace_id",
"domain_id",
],
Expand All @@ -43,6 +46,7 @@ class PublicFolder(MongoModel):
"scope",
"resource_group",
"project_id",
"project_group_id",
"workspace_id",
"domain_id",
],
Expand Down
2 changes: 2 additions & 0 deletions src/spaceone/dashboard/model/public_folder/request.py
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,7 @@ class PublicFolderCreateRequest(BaseModel):
dashboards: Union[list, None] = None
resource_group: ResourceGroup
project_id: Union[str, None] = None
project_group_id: Union[str, None] = None
workspace_id: Union[str, None] = None
domain_id: str

Expand Down Expand Up @@ -72,6 +73,7 @@ class PublicFolderSearchQueryRequest(BaseModel):
shared: Union[bool, None] = None
scope: Union[Scope, None] = None
project_id: Union[str, None] = None
project_group_id: Union[str, None] = None
workspace_id: Union[str, list, None] = None
domain_id: str
user_projects: Union[list, None] = None
Expand Down
1 change: 1 addition & 0 deletions src/spaceone/dashboard/model/public_folder/response.py
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,7 @@ class PublicFolderResponse(BaseModel):
scope: Union[str, None] = None
resource_group: Union[ResourceGroup, None] = None
project_id: Union[str, None] = None
project_group_id: Union[str, None] = None
workspace_id: Union[str, None] = None
domain_id: Union[str, None] = None
created_at: Union[datetime, None] = None
Expand Down
16 changes: 15 additions & 1 deletion src/spaceone/dashboard/service/private_dashboard_service.py
Original file line number Diff line number Diff line change
Expand Up @@ -50,6 +50,7 @@ def create(
'tags': 'dict',
'folder_id': 'str',
'workspace_id': 'str',
'project_group_id': 'str',
'user_id': 'str', # injected from auth (required)
'domain_id': 'str' # injected from auth (required)
}
Expand All @@ -66,6 +67,7 @@ def create_dashboard(self, params_dict: dict) -> dict:
domain_id = params_dict["domain_id"]
user_id = params_dict["user_id"]
workspace_id = params_dict.get("workspace_id")
project_group_id = params_dict.get("project_group_id")

layouts = params_dict.get("layouts")
if layouts:
Expand All @@ -78,6 +80,9 @@ def create_dashboard(self, params_dict: dict) -> dict:
if workspace_id:
self.identity_mgr.check_workspace(workspace_id, domain_id)

if project_group_id:
self.identity_mgr.check_project_group(project_group_id)

pri_dashboard_vo = self.pri_dashboard_mgr.create_private_dashboard(params_dict)

if layouts:
Expand Down Expand Up @@ -252,7 +257,15 @@ def get(
role_types=["USER"],
)
@append_query_filter(
["dashboard_id", "name", "domain_id", "workspace_id", "user_id", "folder_id"]
[
"dashboard_id",
"name",
"domain_id",
"workspace_id",
"user_id",
"project_group_id",
"folder_id",
]
)
@append_keyword_filter(["dashboard_id", "name"])
@convert_model
Expand All @@ -268,6 +281,7 @@ def list(
'name': 'str',
'folder_id': 'str',
'user_id': 'str', # injected from auth (required)
'project_group_id': 'str',
'workspace_id': 'str',
'domain_id': 'str', # injected from auth (required)
}
Expand Down
13 changes: 12 additions & 1 deletion src/spaceone/dashboard/service/private_folder_service.py
Original file line number Diff line number Diff line change
Expand Up @@ -40,6 +40,7 @@ def create(
'tags': 'dict',
'dashboards': 'list',
'workspace_id': 'str',
'project_group_id': 'str',
'user_id': 'str', # injected from auth (required)
'domain_id': 'str' # injected from auth (required)
}
Expand Down Expand Up @@ -148,7 +149,16 @@ def get(
permission="dashboard:PrivateFolder.read",
role_types=["USER"],
)
@append_query_filter(["folder_id", "name", "domain_id", "workspace_id", "user_id"])
@append_query_filter(
[
"folder_id",
"name",
"domain_id",
"workspace_id",
"project_group_id",
"user_id",
]
)
@append_keyword_filter(["folder_id", "name"])
@convert_model
def list(
Expand All @@ -162,6 +172,7 @@ def list(
'folder_id': 'str',
'name': 'str',
'user_id': 'str', # injected from auth (required)
'project_group_id': 'str',
'workspace_id': 'str',
'domain_id': 'str', # injected from auth (required)
}
Expand Down
9 changes: 9 additions & 0 deletions src/spaceone/dashboard/service/public_dashboard_service.py
Original file line number Diff line number Diff line change
Expand Up @@ -53,6 +53,7 @@ def create(
'folder_id': 'str',
'resource_group': 'str', # required
'project_id': 'str',
'project_group_id': 'str',
'workspace_id': 'str', # injected from auth
'domain_id': 'str' # injected from auth (required)
}
Expand All @@ -70,6 +71,7 @@ def create_dashboard(self, params_dict: dict) -> dict:
domain_id = params_dict["domain_id"]
workspace_id = params_dict.get("workspace_id")
user_projects = params_dict.get("user_projects")
project_group_id = params_dict.get("project_group_id")

layouts = params_dict.get("layouts")
if layouts:
Expand All @@ -88,6 +90,10 @@ def create_dashboard(self, params_dict: dict) -> dict:
params_dict["project_id"] = "*"
else:
raise ERROR_REQUIRED_PARAMETER(key="workspace_id")

if project_group_id:
self.identity_mgr.check_project_group(project_group_id)
params_dict["project_group_id"] = project_group_id
else:
params_dict["workspace_id"] = "-"
params_dict["project_id"] = "-"
Expand All @@ -100,6 +106,7 @@ def create_dashboard(self, params_dict: dict) -> dict:
workspace_id,
user_projects,
resource_group,
project_group_id,
)

pub_dashboard_vo = self.pub_dashboard_mgr.create_public_dashboard(params_dict)
Expand Down Expand Up @@ -533,6 +540,7 @@ def get(
"domain_id",
"workspace_id",
"project_id",
"project_group_id",
"folder_id",
"user_projects",
]
Expand All @@ -551,6 +559,7 @@ def list(
'name': 'str',
'folder_id': 'str',
'project_id': 'str',
'project_group_id': 'str',
'workspace_id': 'str', # injected from auth
'domain_id': 'str', # injected from auth (required)
'user_projects': 'list', # injected from auth
Expand Down
3 changes: 3 additions & 0 deletions src/spaceone/dashboard/service/public_folder_service.py
Original file line number Diff line number Diff line change
Expand Up @@ -43,6 +43,7 @@ def create(
'dashboards': 'list',
'resource_group': 'str', # required
'project_id': 'str',
'project_group_id': 'str',
'workspace_id': 'str', # injected from auth
'domain_id': 'str' # injected from auth (required)
}
Expand Down Expand Up @@ -324,6 +325,7 @@ def get(self, params: PublicFolderGetRequest) -> Union[PublicFolderResponse, dic
"domain_id",
"workspace_id",
"project_id",
"project_group_id",
"user_projects",
]
)
Expand All @@ -340,6 +342,7 @@ def list(
'folder_id': 'str',
'name': 'str',
'project_id': 'str',
'project_group_id': 'str',
'workspace_id': 'str', # injected from auth
'domain_id': 'str', # injected from auth (required)
'user_projects': 'list', # injected from auth
Expand Down
Loading