// *** WARNING: this file was generated by pulumi-java-gen. ***
// *** Do not edit by hand unless you're certain you know what you are doing! ***

package com.pulumi.aws.ssm.outputs;

import com.pulumi.core.annotations.CustomType;
import java.lang.String;
import java.util.List;
import java.util.Objects;

@CustomType
public final class PatchBaselineSource {
    /**
     * @return The value of the yum repo configuration.
     * For information about other options available for your yum repository configuration, see the [`dnf.conf` documentation](https://man7.org/linux/man-pages/man5/dnf.conf.5.html)
     * 
     */
    private String configuration;
    /**
     * @return The name specified to identify the patch source.
     * 
     */
    private String name;
    /**
     * @return The specific operating system versions a patch repository applies to, such as `&#34;Ubuntu16.04&#34;`, `&#34;AmazonLinux2016.09&#34;`, `&#34;RedhatEnterpriseLinux7.2&#34;` or `&#34;Suse12.7&#34;`.
     * For lists of supported product values, see [PatchFilter](https://docs.aws.amazon.com/systems-manager/latest/APIReference/API_PatchFilter.html).
     * 
     */
    private List<String> products;

    private PatchBaselineSource() {}
    /**
     * @return The value of the yum repo configuration.
     * For information about other options available for your yum repository configuration, see the [`dnf.conf` documentation](https://man7.org/linux/man-pages/man5/dnf.conf.5.html)
     * 
     */
    public String configuration() {
        return this.configuration;
    }
    /**
     * @return The name specified to identify the patch source.
     * 
     */
    public String name() {
        return this.name;
    }
    /**
     * @return The specific operating system versions a patch repository applies to, such as `&#34;Ubuntu16.04&#34;`, `&#34;AmazonLinux2016.09&#34;`, `&#34;RedhatEnterpriseLinux7.2&#34;` or `&#34;Suse12.7&#34;`.
     * For lists of supported product values, see [PatchFilter](https://docs.aws.amazon.com/systems-manager/latest/APIReference/API_PatchFilter.html).
     * 
     */
    public List<String> products() {
        return this.products;
    }

    public static Builder builder() {
        return new Builder();
    }

    public static Builder builder(PatchBaselineSource defaults) {
        return new Builder(defaults);
    }
    @CustomType.Builder
    public static final class Builder {
        private String configuration;
        private String name;
        private List<String> products;
        public Builder() {}
        public Builder(PatchBaselineSource defaults) {
    	      Objects.requireNonNull(defaults);
    	      this.configuration = defaults.configuration;
    	      this.name = defaults.name;
    	      this.products = defaults.products;
        }

        @CustomType.Setter
        public Builder configuration(String configuration) {
            this.configuration = Objects.requireNonNull(configuration);
            return this;
        }
        @CustomType.Setter
        public Builder name(String name) {
            this.name = Objects.requireNonNull(name);
            return this;
        }
        @CustomType.Setter
        public Builder products(List<String> products) {
            this.products = Objects.requireNonNull(products);
            return this;
        }
        public Builder products(String... products) {
            return products(List.of(products));
        }
        public PatchBaselineSource build() {
            final var o = new PatchBaselineSource();
            o.configuration = configuration;
            o.name = name;
            o.products = products;
            return o;
        }
    }
}
