// *** WARNING: this file was generated by the Pulumi Terraform Bridge (tfgen) Tool. ***
// *** Do not edit by hand unless you're certain you know what you are doing! ***

using System;
using System.Collections.Generic;
using System.Collections.Immutable;
using System.Threading.Tasks;
using Pulumi.Serialization;

namespace Pulumi.Flux
{
    public static class DataInstall
    {
        public static Task<DataInstallResult> InvokeAsync(DataInstallArgs args, InvokeOptions? options = null)
            => global::Pulumi.Deployment.Instance.InvokeAsync<DataInstallResult>("flux:index/dataInstall:DataInstall", args ?? new DataInstallArgs(), options.WithDefaults());

        public static Output<DataInstallResult> Invoke(DataInstallInvokeArgs args, InvokeOptions? options = null)
            => global::Pulumi.Deployment.Instance.Invoke<DataInstallResult>("flux:index/dataInstall:DataInstall", args ?? new DataInstallInvokeArgs(), options.WithDefaults());
    }


    public sealed class DataInstallArgs : global::Pulumi.InvokeArgs
    {
        [Input("baseurl")]
        public string? Baseurl { get; set; }

        [Input("clusterDomain")]
        public string? ClusterDomain { get; set; }

        [Input("components")]
        private List<string>? _components;
        public List<string> Components
        {
            get => _components ?? (_components = new List<string>());
            set => _components = value;
        }

        [Input("componentsExtras")]
        private List<string>? _componentsExtras;
        public List<string> ComponentsExtras
        {
            get => _componentsExtras ?? (_componentsExtras = new List<string>());
            set => _componentsExtras = value;
        }

        [Input("imagePullSecrets")]
        public string? ImagePullSecrets { get; set; }

        [Input("logLevel")]
        public string? LogLevel { get; set; }

        [Input("namespace")]
        public string? Namespace { get; set; }

        [Input("networkPolicy")]
        public bool? NetworkPolicy { get; set; }

        [Input("registry")]
        public string? Registry { get; set; }

        [Input("targetPath", required: true)]
        public string TargetPath { get; set; } = null!;

        [Input("tolerationKeys")]
        private List<string>? _tolerationKeys;
        public List<string> TolerationKeys
        {
            get => _tolerationKeys ?? (_tolerationKeys = new List<string>());
            set => _tolerationKeys = value;
        }

        [Input("version")]
        public string? Version { get; set; }

        [Input("watchAllNamespaces")]
        public bool? WatchAllNamespaces { get; set; }

        public DataInstallArgs()
        {
        }
        public static new DataInstallArgs Empty => new DataInstallArgs();
    }

    public sealed class DataInstallInvokeArgs : global::Pulumi.InvokeArgs
    {
        [Input("baseurl")]
        public Input<string>? Baseurl { get; set; }

        [Input("clusterDomain")]
        public Input<string>? ClusterDomain { get; set; }

        [Input("components")]
        private InputList<string>? _components;
        public InputList<string> Components
        {
            get => _components ?? (_components = new InputList<string>());
            set => _components = value;
        }

        [Input("componentsExtras")]
        private InputList<string>? _componentsExtras;
        public InputList<string> ComponentsExtras
        {
            get => _componentsExtras ?? (_componentsExtras = new InputList<string>());
            set => _componentsExtras = value;
        }

        [Input("imagePullSecrets")]
        public Input<string>? ImagePullSecrets { get; set; }

        [Input("logLevel")]
        public Input<string>? LogLevel { get; set; }

        [Input("namespace")]
        public Input<string>? Namespace { get; set; }

        [Input("networkPolicy")]
        public Input<bool>? NetworkPolicy { get; set; }

        [Input("registry")]
        public Input<string>? Registry { get; set; }

        [Input("targetPath", required: true)]
        public Input<string> TargetPath { get; set; } = null!;

        [Input("tolerationKeys")]
        private InputList<string>? _tolerationKeys;
        public InputList<string> TolerationKeys
        {
            get => _tolerationKeys ?? (_tolerationKeys = new InputList<string>());
            set => _tolerationKeys = value;
        }

        [Input("version")]
        public Input<string>? Version { get; set; }

        [Input("watchAllNamespaces")]
        public Input<bool>? WatchAllNamespaces { get; set; }

        public DataInstallInvokeArgs()
        {
        }
        public static new DataInstallInvokeArgs Empty => new DataInstallInvokeArgs();
    }


    [OutputType]
    public sealed class DataInstallResult
    {
        public readonly string? Baseurl;
        public readonly string? ClusterDomain;
        public readonly ImmutableArray<string> Components;
        public readonly ImmutableArray<string> ComponentsExtras;
        public readonly string Content;
        /// <summary>
        /// The provider-assigned unique ID for this managed resource.
        /// </summary>
        public readonly string Id;
        public readonly string? ImagePullSecrets;
        public readonly string? LogLevel;
        public readonly string? Namespace;
        public readonly bool? NetworkPolicy;
        public readonly string Path;
        public readonly string? Registry;
        public readonly string TargetPath;
        public readonly ImmutableArray<string> TolerationKeys;
        public readonly string? Version;
        public readonly bool? WatchAllNamespaces;

        [OutputConstructor]
        private DataInstallResult(
            string? baseurl,

            string? clusterDomain,

            ImmutableArray<string> components,

            ImmutableArray<string> componentsExtras,

            string content,

            string id,

            string? imagePullSecrets,

            string? logLevel,

            string? @namespace,

            bool? networkPolicy,

            string path,

            string? registry,

            string targetPath,

            ImmutableArray<string> tolerationKeys,

            string? version,

            bool? watchAllNamespaces)
        {
            Baseurl = baseurl;
            ClusterDomain = clusterDomain;
            Components = components;
            ComponentsExtras = componentsExtras;
            Content = content;
            Id = id;
            ImagePullSecrets = imagePullSecrets;
            LogLevel = logLevel;
            Namespace = @namespace;
            NetworkPolicy = networkPolicy;
            Path = path;
            Registry = registry;
            TargetPath = targetPath;
            TolerationKeys = tolerationKeys;
            Version = version;
            WatchAllNamespaces = watchAllNamespaces;
        }
    }
}
