Last active
          June 25, 2024 16:38 
        
      - 
      
 - 
        
Save iman4000/6c55a9842ba8c78febf9f577270605bc to your computer and use it in GitHub Desktop.  
Revisions
- 
        
iman4000 revised this gist
Jun 25, 2024 . 1 changed file with 3 additions and 1 deletion.There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode charactersOriginal file line number Diff line number Diff line change @@ -129,7 +129,9 @@ if __name__ == "__main__": ######################################################################################### ######################################################################################### ######################################################################################### ### DT with one by one project insertion import requests  - 
        
iman4000 renamed this gist
Jun 25, 2024 . 1 changed file with 0 additions and 0 deletions.There are no files selected for viewing
File renamed without changes. - 
        
iman4000 created this gist
Jun 25, 2024 .There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode charactersOriginal file line number Diff line number Diff line change @@ -0,0 +1,258 @@ ### DT with list import requests API_BASE_URL = "http://your-api-url/api" API_KEY = "your-api-key" def get_headers(): return { 'X-Api-Key': API_KEY, 'Content-Type': 'application/json' } def create_team(team_name): url = f"{API_BASE_URL}/v1/team" payload = {"name": team_name} response = requests.post(url, json=payload, headers=get_headers()) if response.status_code == 201: return response.json()['uuid'] else: print(f"Error creating team: {response.status_code} - {response.text}") return None def get_team_uuid(team_name): url = f"{API_BASE_URL}/v1/team" response = requests.get(url, headers=get_headers()) if response.status_code == 200: teams = response.json() for team in teams: if team['name'] == team_name: return team['uuid'] return create_team(team_name) def upload_bom(project_name, project_version, bom_file_path, auto_create=True): url = f"{API_BASE_URL}/v1/bom" with open(bom_file_path, 'rb') as bom_file: files = { 'bom': bom_file, 'projectName': (None, project_name), 'projectVersion': (None, project_version), 'autoCreate': (None, str(auto_create).lower()) } response = requests.post(url, files=files, headers={'X-Api-Key': API_KEY}) if response.status_code == 200: return response.json()['project']['uuid'] else: print(f"Error uploading BOM: {response.status_code} - {response.text}") return None def map_project_to_team(project_uuid, team_uuid): url = f"{API_BASE_URL}/v1/acl/mapping" payload = { "team": team_uuid, "project": project_uuid } response = requests.put(url, json=payload, headers=get_headers()) if response.status_code == 200: print(f"Successfully mapped project {project_uuid} to team {team_uuid}") else: print(f"Error mapping project: {response.status_code} - {response.text}") def set_project_property(project_uuid, manager, namespace, docker_image_link): url = f"{API_BASE_URL}/v1/project/{project_uuid}/property" properties = [ {"key": "project_manager", "value": manager}, {"key": "namespace", "value": namespace}, {"key": "docker_image_link", "value": docker_image_link} ] for prop in properties: response = requests.put(url, json=prop, headers=get_headers()) if response.status_code != 201: print(f"Error setting property {prop['key']} for project {project_uuid}: {response.status_code} - {response.text}") def set_project_tag(project_uuid, tag_name): url = f"{API_BASE_URL}/v1/project/{project_uuid}/tag" payload = {"name": tag_name} response = requests.put(url, json=payload, headers=get_headers()) if response.status_code == 201: print(f"Successfully set tag {tag_name} for project {project_uuid}") else: print(f"Error setting tag {tag_name} for project {project_uuid}: {response.status_code} - {response.text}") def main(project_team_map, project_bom_files, project_properties, project_tags): for project, team in project_team_map.items(): project_name, project_version = project.split(':') team_uuid = get_team_uuid(team) bom_file_path = project_bom_files.get(project) if bom_file_path: project_uuid = upload_bom(project_name, project_version, bom_file_path) if project_uuid and team_uuid: map_project_to_team(project_uuid, team_uuid) if project in project_properties: properties = project_properties[project] set_project_property(project_uuid, properties['manager'], properties['namespace'], properties['docker_image_link']) if project in project_tags: set_project_tag(project_uuid, project_tags[project]) else: print(f"BOM file not found for project {project}") if __name__ == "__main__": project_team_map = { "ProjectA:1.0": "TeamA", "ProjectB:2.0": "TeamB", # Add more projects and their respective teams here } project_bom_files = { "ProjectA:1.0": "path/to/your/bom/fileA", "ProjectB:2.0": "path/to/your/bom/fileB", # Add more projects and their BOM file paths here } project_properties = { "ProjectA:1.0": { "manager": "ManagerA", "namespace": "NamespaceA", "docker_image_link": "docker.registry.com/namespacea/projecta" }, "ProjectB:2.0": { "manager": "ManagerB", "namespace": "NamespaceB", "docker_image_link": "docker.registry.com/namespaceb/projectb" } # Add more projects and their properties here } project_tags = { "ProjectA:1.0": "SpecialTagA", "ProjectB:2.0": "SpecialTagB", # Add more projects and their tags here } main(project_team_map, project_bom_files, project_properties, project_tags) ### DT with one by one project insertion import requests API_BASE_URL = "http://your-api-url/api" API_KEY = "your-api-key" def get_headers(): return { 'X-Api-Key': API_KEY, 'Content-Type': 'application/json' } def create_team(team_name): url = f"{API_BASE_URL}/v1/team" payload = {"name": team_name} response = requests.post(url, json=payload, headers=get_headers()) if response.status_code == 201: return response.json()['uuid'] else: print(f"Error creating team: {response.status_code} - {response.text}") return None def get_team_uuid(team_name): url = f"{API_BASE_URL}/v1/team" response = requests.get(url, headers=get_headers()) if response.status_code == 200: teams = response.json() for team in teams: if team['name'] == team_name: return team['uuid'] return create_team(team_name) def upload_bom(project_name, project_version, bom_file_path, auto_create=True): url = f"{API_BASE_URL}/v1/bom" with open(bom_file_path, 'rb') as bom_file: files = { 'bom': bom_file, 'projectName': (None, project_name), 'projectVersion': (None, project_version), 'autoCreate': (None, str(auto_create).lower()) } response = requests.post(url, files=files, headers={'X-Api-Key': API_KEY}) if response.status_code == 200: return response.json()['project']['uuid'] else: print(f"Error uploading BOM: {response.status_code} - {response.text}") return None def map_project_to_team(project_uuid, team_uuid): url = f"{API_BASE_URL}/v1/acl/mapping" payload = { "team": team_uuid, "project": project_uuid } response = requests.put(url, json=payload, headers=get_headers()) if response.status_code == 200: print(f"Successfully mapped project {project_uuid} to team {team_uuid}") else: print(f"Error mapping project: {response.status_code} - {response.text}") def set_project_property(project_uuid, manager, namespace, docker_image_link): url = f"{API_BASE_URL}/v1/project/{project_uuid}/property" properties = [ {"key": "project_manager", "value": manager}, {"key": "namespace", "value": namespace}, {"key": "docker_image_link", "value": docker_image_link} ] for prop in properties: response = requests.put(url, json=prop, headers=get_headers()) if response.status_code != 201: print(f"Error setting property {prop['key']} for project {project_uuid}: {response.status_code} - {response.text}") def set_project_tag(project_uuid, tag_name): url = f"{API_BASE_URL}/v1/project/{project_uuid}/tag" payload = {"name": tag_name} response = requests.put(url, json=payload, headers=get_headers()) if response.status_code == 201: print(f"Successfully set tag {tag_name} for project {project_uuid}") else: print(f"Error setting tag {tag_name} for project {project_uuid}: {response.status_code} - {response.text}") def process_project(project_name, project_version, team_name, bom_file_path, properties, tag_name): team_uuid = get_team_uuid(team_name) if not team_uuid: print(f"Failed to get or create team: {team_name}") return project_uuid = upload_bom(project_name, project_version, bom_file_path) if not project_uuid: print(f"Failed to upload BOM for project: {project_name}") return map_project_to_team(project_uuid, team_uuid) set_project_property(project_uuid, properties['manager'], properties['namespace'], properties['docker_image_link']) set_project_tag(project_uuid, tag_name) if __name__ == "__main__": project_name = "ProjectA" project_version = "1.0" team_name = "TeamA" bom_file_path = "path/to/your/bom/fileA" properties = { "manager": "ManagerA", "namespace": "NamespaceA", "docker_image_link": "docker.registry.com/namespacea/projecta" } tag_name = "SpecialTagA" process_project(project_name, project_version, team_name, bom_file_path, properties, tag_name) # Repeat the above block for other projects project_name = "ProjectB" project_version = "2.0" team_name = "TeamB" bom_file_path = "path/to/your/bom/fileB" properties = { "manager": "ManagerB", "namespace": "NamespaceB", "docker_image_link": "docker.registry.com/namespaceb/projectb" } tag_name = "SpecialTagB" process_project(project_name, project_version, team_name, bom_file_path, properties, tag_name) # Continue for other projects