# GET /projects defget_projects(self, project_name=None, is_public=None): # TODO: support parameter result = [] page = 1 page_size = 15
whileTrue: path = '%s://%s/api/v2.0/projects?page=%s&page_size=%s' % (self.protocol, self.host, page, page_size) response = requests.get(path, cookies={'sid': self.session_id}) if response.status_code == 200: logging.debug("Successfully get projects result: {}".format( result)) if isinstance(response.json(), list): result.extend(response.json()) page += 1 else: break else: logging.error("Fail to get projects result") result = None break return result
# GET /projects/{project_name}/repositories defget_repositories(self, project_name, query_string=None): # TODO: support parameter result = [] page = 1 page_size = 15
whileTrue: path = '%s://%s/api/v2.0/projects/%s/repositories?page=%s&page_size=%s' % ( self.protocol, self.host, project_name, page, page_size) response = requests.get(path, cookies={'sid': self.session_id}) if response.status_code == 200: logging.debug( "Successfully get repositories with name: {}, result: {}".format( project_name, result)) if len(response.json()): result.extend(response.json()) page += 1 else: break else: logging.error("Fail to get repositories result with name: {}".format( project_name)) result = None break return result
# GET /projects/{project_name}/repositories/{repository_name}/artifacts # GET /projects/{project_name}/repositories/{repository_name}/artifacts?with_tag=true&with_scan_overview=true&with_label=true&page_size=15&page=1 defget_repository_artifacts(self, project_name, repository_name): result = [] page = 1 page_size = 15
whileTrue: path = '%s://%s/api/v2.0/projects/%s/repositories/%s/artifacts?with_tag=true&with_scan_overview=true&with_label=true&page_size=%s&page=%s' % ( self.protocol, self.host, project_name, repository_name, page_size, page) response = requests.get(path, cookies={'sid': self.session_id}, timeout=60) if response.status_code == 200: logging.debug( "Successfully get repositories artifacts with name: {}, {}, result: {}".format( project_name, repository_name, result)) if len(response.json()): result.extend(response.json()) page += 1 else: break else: logging.error("Fail to get repositories artifacts result with name: {}, {}".format( project_name, repository_name)) result = None break return result
# DELETE /projects/{project_name}/repositories/{repository_name} defdelete_repository(self, project_name, repository_name, tag=None): # TODO: support to check tag # TODO: return 200 but the repo is not deleted, need more test result = False path = '%s://%s/api/v2.0/projects/%s/repositories/%s' % ( self.protocol, self.host, project_name, repository_name) response = requests.delete(path, cookies=self.cookies_new, headers=self.headers) if response.status_code == 200: result = True print("Delete {} successful!".format(repository_name)) logging.debug("Successfully delete repository: {}".format( repository_name)) else: logging.error("Fail to delete repository: {}".format(repository_name)) return result
# Get /projects/{project_name}/repositories/{repository_name}/artifacts/{reference}/tags defget_repository_tags(self, project_name, repository_name, reference_hash): result = None path = '%s://%s/api/v2.0/projects/%s/repositories/%s/artifacts/%s/tags' % ( self.protocol, self.host, project_name, repository_name, reference_hash) response = requests.get(path, cookies={'sid': self.session_id}, timeout=60) if response.status_code == 200: result = response.json() logging.debug( "Successfully get tag with repository name: {}, result: {}".format( repository_name, result)) else: logging.error("Fail to get tags with repository name: {}".format( repository_name)) return result