// *** 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.gcp.osconfig.inputs;

import com.pulumi.core.Output;
import com.pulumi.core.annotations.Import;
import com.pulumi.gcp.osconfig.inputs.OsPolicyAssignmentOsPolicyResourceGroupResourcePkgRpmSourceArgs;
import java.lang.Boolean;
import java.util.Objects;
import java.util.Optional;
import javax.annotation.Nullable;


public final class OsPolicyAssignmentOsPolicyResourceGroupResourcePkgRpmArgs extends com.pulumi.resources.ResourceArgs {

    public static final OsPolicyAssignmentOsPolicyResourceGroupResourcePkgRpmArgs Empty = new OsPolicyAssignmentOsPolicyResourceGroupResourcePkgRpmArgs();

    /**
     * Whether dependencies should also be installed. -
     * install when false: `rpm --upgrade --replacepkgs package.rpm` - install when
     * true: `yum -y install package.rpm` or `zypper -y install package.rpm`
     * 
     */
    @Import(name="pullDeps")
    private @Nullable Output<Boolean> pullDeps;

    /**
     * @return Whether dependencies should also be installed. -
     * install when false: `rpm --upgrade --replacepkgs package.rpm` - install when
     * true: `yum -y install package.rpm` or `zypper -y install package.rpm`
     * 
     */
    public Optional<Output<Boolean>> pullDeps() {
        return Optional.ofNullable(this.pullDeps);
    }

    /**
     * An rpm package. Structure is
     * documented below.
     * 
     */
    @Import(name="source", required=true)
    private Output<OsPolicyAssignmentOsPolicyResourceGroupResourcePkgRpmSourceArgs> source;

    /**
     * @return An rpm package. Structure is
     * documented below.
     * 
     */
    public Output<OsPolicyAssignmentOsPolicyResourceGroupResourcePkgRpmSourceArgs> source() {
        return this.source;
    }

    private OsPolicyAssignmentOsPolicyResourceGroupResourcePkgRpmArgs() {}

    private OsPolicyAssignmentOsPolicyResourceGroupResourcePkgRpmArgs(OsPolicyAssignmentOsPolicyResourceGroupResourcePkgRpmArgs $) {
        this.pullDeps = $.pullDeps;
        this.source = $.source;
    }

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

    public static final class Builder {
        private OsPolicyAssignmentOsPolicyResourceGroupResourcePkgRpmArgs $;

        public Builder() {
            $ = new OsPolicyAssignmentOsPolicyResourceGroupResourcePkgRpmArgs();
        }

        public Builder(OsPolicyAssignmentOsPolicyResourceGroupResourcePkgRpmArgs defaults) {
            $ = new OsPolicyAssignmentOsPolicyResourceGroupResourcePkgRpmArgs(Objects.requireNonNull(defaults));
        }

        /**
         * @param pullDeps Whether dependencies should also be installed. -
         * install when false: `rpm --upgrade --replacepkgs package.rpm` - install when
         * true: `yum -y install package.rpm` or `zypper -y install package.rpm`
         * 
         * @return builder
         * 
         */
        public Builder pullDeps(@Nullable Output<Boolean> pullDeps) {
            $.pullDeps = pullDeps;
            return this;
        }

        /**
         * @param pullDeps Whether dependencies should also be installed. -
         * install when false: `rpm --upgrade --replacepkgs package.rpm` - install when
         * true: `yum -y install package.rpm` or `zypper -y install package.rpm`
         * 
         * @return builder
         * 
         */
        public Builder pullDeps(Boolean pullDeps) {
            return pullDeps(Output.of(pullDeps));
        }

        /**
         * @param source An rpm package. Structure is
         * documented below.
         * 
         * @return builder
         * 
         */
        public Builder source(Output<OsPolicyAssignmentOsPolicyResourceGroupResourcePkgRpmSourceArgs> source) {
            $.source = source;
            return this;
        }

        /**
         * @param source An rpm package. Structure is
         * documented below.
         * 
         * @return builder
         * 
         */
        public Builder source(OsPolicyAssignmentOsPolicyResourceGroupResourcePkgRpmSourceArgs source) {
            return source(Output.of(source));
        }

        public OsPolicyAssignmentOsPolicyResourceGroupResourcePkgRpmArgs build() {
            $.source = Objects.requireNonNull($.source, "expected parameter 'source' to be non-null");
            return $;
        }
    }

}
