in pkg/client/jenkins/jenkins.go [207:252]
func (jc JenkinsClient) CreateUser(instance *jenkinsApi.JenkinsServiceAccount) error {
crumb, err := jc.GetCrumb()
if err != nil {
return fmt.Errorf("failed to get crumb: %w", err)
}
headers := make(map[string]string)
if crumb != "" {
headers[jenkinsCrumbKey] = crumb
headers["Content-Type"] = "application/x-www-form-urlencoded"
}
secretData, err := jc.PlatformService.GetSecretData(instance.Namespace, instance.Spec.Credentials)
if err != nil || secretData == nil {
return fmt.Errorf("failed to get info from secret %v", instance.Spec.Credentials)
}
credentials, err := helper.NewJenkinsUser(secretData, instance.Spec.Type, instance.Spec.Credentials)
if err != nil {
return fmt.Errorf("failed to create new jenkins user: %w", err)
}
requestParams := map[string]string{}
requestParams["json"], err = credentials.ToString()
if err != nil {
return fmt.Errorf("failed to parse credentials to string: %w", err)
}
resp, err := jc.resty.
SetRedirectPolicy(resty.FlexibleRedirectPolicy(numOfRedirects)).
R().
SetHeaders(headers).
SetFormData(requestParams).
Post("/credentials/store/system/domain/_/createCredentials")
if err != nil {
return fmt.Errorf("failed to send Jenkins user creation request: %w", err)
}
if resp.StatusCode() != http.StatusOK {
return fmt.Errorf("failed to create user in Jenkins: response code: %v, response body: %s", resp.StatusCode(), resp.Body())
}
return nil
}