public async Task <CreateProjectResponse> CreateProject(string projectName) { var normalizedProjectName = ArgoCDEntityNameNormalizer.Normalize(projectName); var projectRequest = new CreateProjectRequest(); projectRequest.Project.Metadata.Name = normalizedProjectName; projectRequest.Project.Spec.SourceRepos.Add("*"); projectRequest.Project.Spec.Destinations.Add(new V1alpha1ApplicationDestination { Namespace = normalizedProjectName, Server = "*" }); var payload = _jsonSerializer.GetPayload(projectRequest); var response = await _httpClient.PostAsync("/api/v1/projects", payload); if (response.StatusCode == HttpStatusCode.Conflict) { _logger.LogWarning($"{normalizedProjectName} already exist as a project in Argo."); return(new CreateProjectResponse { Project = (await GetProject(normalizedProjectName))?.Project }); } // Other errors should throw exception. response.EnsureSuccessStatusCode(); var content = await response.Content.ReadAsStringAsync(); var project = _jsonSerializer.Deserialize <AppProject>(content); return(new CreateProjectResponse { Project = project }); }
public async Task <GetProjectResponse> GetProject(string projectName) { var normalizedProjectName = ArgoCDEntityNameNormalizer.Normalize(projectName); var response = await _httpClient.GetAsync("/api/v1/projects/{normalizedProjectName}"); response.EnsureSuccessStatusCode(); var content = await response.Content.ReadAsStringAsync(); var project = _jsonSerializer.Deserialize <AppProject>(content); return(new GetProjectResponse { Project = project }); }