func()

in pkg/client/jenkins/jenkins.go [296:328]


func (jc JenkinsClient) GetJobProvisions(jobPath string) ([]string, error) {
	var provisionNames []string

	raw, err := jc.obtainRawJobProvisions(jobPath)
	if err != nil {
		return nil, fmt.Errorf("failed to obtain raw JobProvisioners data: %w", err)
	}

	classValue, ok := raw["_class"].(string)
	if !ok {
		return nil, fmt.Errorf("failed to access \"_class\" field")
	}

	if classValue != "com.cloudbees.hudson.plugins.folder.Folder" {
		return nil, fmt.Errorf("failed to get job provisions: %v is not a Jenkins folder", defaultJobProvisionsFolder)
	}

	jobValues, ok := raw["jobs"].([]interface{})
	if !ok {
		return nil, fmt.Errorf("failed to access \"jobs\" field")
	}

	for _, jobProvision := range jobValues {
		provisionName, ok := jobProvision.(map[string]interface{})["name"].(string)
		if !ok {
			return nil, fmt.Errorf("failed to access \"name\" field of a job")
		}

		provisionNames = append(provisionNames, provisionName)
	}

	return provisionNames, nil
}