Skip to content
Merged
Changes from all commits
Commits
File filter

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
28 changes: 21 additions & 7 deletions blackduck/HubRestApi.py
100644 → 100755
Original file line number Diff line number Diff line change
Expand Up @@ -243,8 +243,8 @@ def _get_role_url(self):
def get_roles(self, parameters={}):
url = self._get_role_url() + self._get_parameter_string(parameters)
response = self.execute_get(url)
return response.json()

return response.json()
def get_roles_url_from_user_or_group(self, user_or_group):
# Given a user or user group object, return the 'roles' url
roles_url = None
Expand Down Expand Up @@ -374,8 +374,8 @@ def get_user_groups(self, parameters={}):
return response.json()

def get_user_group_by_name(self, group_name):
groups = self.get_user_groups()
for group in groups['items']:
group_list = self.get_user_groups({"q": f"name:{group_name}"})
for group in group_list['items']:
if group['name'] == group_name:
return group

Expand Down Expand Up @@ -535,8 +535,8 @@ def find_component_info_for_protex_component(self, protex_component_id, protex_c
#
##

valid_categories = ['VERSION','CODE_LOCATIONS','COMPONENTS','SECURITY','FILES']
valid_report_formats = ["CSV"]
valid_categories = ['VERSION','CODE_LOCATIONS','COMPONENTS','SECURITY','FILES', 'ATTACHMENTS', 'CRYPTO_ALGORITHMS', 'PROJECT_VERSION_CUSTOM_FIELDS', 'BOM_COMPONENT_CUSTOM_FIELDS', 'LICENSE_TERM_FULFILLMENT']
valid_report_formats = ["CSV", "JSON"]
def create_version_reports(self, version, report_list, format="CSV"):
assert all(list(map(lambda k: k in HubInstance.valid_categories, report_list))), "One or more selected report categories in {} are not valid ({})".format(
report_list, HubInstance.valid_categories)
Expand Down Expand Up @@ -1028,7 +1028,7 @@ def assign_user_group_to_project(self, project_name, user_group_name, project_ro
project_url = project['_meta']['href']
assignable_user_groups_link = self.get_link(project, 'assignable-usergroups')
if assignable_user_groups_link:
assignable_user_groups_response = self.execute_get(assignable_user_groups_link)
assignable_user_groups_response = self.execute_get(f"{assignable_user_groups_link}?q=name:{user_group_name}")
assignable_user_groups = assignable_user_groups_response.json()

# TODO: What to do if the user group is already assigned to the project, and therefore
Expand Down Expand Up @@ -1072,6 +1072,20 @@ def assign_user_group_to_project(self, project_name, user_group_name, project_ro
else:
logger.warning("Did not find a project by the name {}".format(project_name))

def delete_user_group_from_project(self, project_name, user_group_name):
project = self.get_project_by_name(project_name)

if project:
project_url = project['_meta']['href']

user_group = self.get_user_group_by_name(user_group_name)
if user_group:
user_group_url = user_group['_meta']['href']
user_group_id = user_group_url.rsplit('/', 1)[-1]

project_user_group_url = f"{project_url}/usergroups/{user_group_id}"
self.execute_delete(project_user_group_url)

def assign_user_to_project(self, user_name, project_name, project_roles, limit=1000):
# Assign users to projects
project = self.get_project_by_name(project_name)
Expand Down