// *** 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.kubernetes.core.v1.outputs;

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

@CustomType
public final class NodeSystemInfo {
    /**
     * @return The Architecture reported by the node
     * 
     */
    private String architecture;
    /**
     * @return Boot ID reported by the node.
     * 
     */
    private String bootID;
    /**
     * @return ContainerRuntime Version reported by the node through runtime remote API (e.g. containerd://1.4.2).
     * 
     */
    private String containerRuntimeVersion;
    /**
     * @return Kernel Version reported by the node from &#39;uname -r&#39; (e.g. 3.16.0-0.bpo.4-amd64).
     * 
     */
    private String kernelVersion;
    /**
     * @return KubeProxy Version reported by the node.
     * 
     */
    private String kubeProxyVersion;
    /**
     * @return Kubelet Version reported by the node.
     * 
     */
    private String kubeletVersion;
    /**
     * @return MachineID reported by the node. For unique machine identification in the cluster this field is preferred. Learn more from man(5) machine-id: http://man7.org/linux/man-pages/man5/machine-id.5.html
     * 
     */
    private String machineID;
    /**
     * @return The Operating System reported by the node
     * 
     */
    private String operatingSystem;
    /**
     * @return OS Image reported by the node from /etc/os-release (e.g. Debian GNU/Linux 7 (wheezy)).
     * 
     */
    private String osImage;
    /**
     * @return SystemUUID reported by the node. For unique machine identification MachineID is preferred. This field is specific to Red Hat hosts https://access.redhat.com/documentation/en-us/red_hat_subscription_management/1/html/rhsm/uuid
     * 
     */
    private String systemUUID;

    private NodeSystemInfo() {}
    /**
     * @return The Architecture reported by the node
     * 
     */
    public String architecture() {
        return this.architecture;
    }
    /**
     * @return Boot ID reported by the node.
     * 
     */
    public String bootID() {
        return this.bootID;
    }
    /**
     * @return ContainerRuntime Version reported by the node through runtime remote API (e.g. containerd://1.4.2).
     * 
     */
    public String containerRuntimeVersion() {
        return this.containerRuntimeVersion;
    }
    /**
     * @return Kernel Version reported by the node from &#39;uname -r&#39; (e.g. 3.16.0-0.bpo.4-amd64).
     * 
     */
    public String kernelVersion() {
        return this.kernelVersion;
    }
    /**
     * @return KubeProxy Version reported by the node.
     * 
     */
    public String kubeProxyVersion() {
        return this.kubeProxyVersion;
    }
    /**
     * @return Kubelet Version reported by the node.
     * 
     */
    public String kubeletVersion() {
        return this.kubeletVersion;
    }
    /**
     * @return MachineID reported by the node. For unique machine identification in the cluster this field is preferred. Learn more from man(5) machine-id: http://man7.org/linux/man-pages/man5/machine-id.5.html
     * 
     */
    public String machineID() {
        return this.machineID;
    }
    /**
     * @return The Operating System reported by the node
     * 
     */
    public String operatingSystem() {
        return this.operatingSystem;
    }
    /**
     * @return OS Image reported by the node from /etc/os-release (e.g. Debian GNU/Linux 7 (wheezy)).
     * 
     */
    public String osImage() {
        return this.osImage;
    }
    /**
     * @return SystemUUID reported by the node. For unique machine identification MachineID is preferred. This field is specific to Red Hat hosts https://access.redhat.com/documentation/en-us/red_hat_subscription_management/1/html/rhsm/uuid
     * 
     */
    public String systemUUID() {
        return this.systemUUID;
    }

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

    public static Builder builder(NodeSystemInfo defaults) {
        return new Builder(defaults);
    }
    @CustomType.Builder
    public static final class Builder {
        private String architecture;
        private String bootID;
        private String containerRuntimeVersion;
        private String kernelVersion;
        private String kubeProxyVersion;
        private String kubeletVersion;
        private String machineID;
        private String operatingSystem;
        private String osImage;
        private String systemUUID;
        public Builder() {}
        public Builder(NodeSystemInfo defaults) {
    	      Objects.requireNonNull(defaults);
    	      this.architecture = defaults.architecture;
    	      this.bootID = defaults.bootID;
    	      this.containerRuntimeVersion = defaults.containerRuntimeVersion;
    	      this.kernelVersion = defaults.kernelVersion;
    	      this.kubeProxyVersion = defaults.kubeProxyVersion;
    	      this.kubeletVersion = defaults.kubeletVersion;
    	      this.machineID = defaults.machineID;
    	      this.operatingSystem = defaults.operatingSystem;
    	      this.osImage = defaults.osImage;
    	      this.systemUUID = defaults.systemUUID;
        }

        @CustomType.Setter
        public Builder architecture(String architecture) {
            this.architecture = Objects.requireNonNull(architecture);
            return this;
        }
        @CustomType.Setter
        public Builder bootID(String bootID) {
            this.bootID = Objects.requireNonNull(bootID);
            return this;
        }
        @CustomType.Setter
        public Builder containerRuntimeVersion(String containerRuntimeVersion) {
            this.containerRuntimeVersion = Objects.requireNonNull(containerRuntimeVersion);
            return this;
        }
        @CustomType.Setter
        public Builder kernelVersion(String kernelVersion) {
            this.kernelVersion = Objects.requireNonNull(kernelVersion);
            return this;
        }
        @CustomType.Setter
        public Builder kubeProxyVersion(String kubeProxyVersion) {
            this.kubeProxyVersion = Objects.requireNonNull(kubeProxyVersion);
            return this;
        }
        @CustomType.Setter
        public Builder kubeletVersion(String kubeletVersion) {
            this.kubeletVersion = Objects.requireNonNull(kubeletVersion);
            return this;
        }
        @CustomType.Setter
        public Builder machineID(String machineID) {
            this.machineID = Objects.requireNonNull(machineID);
            return this;
        }
        @CustomType.Setter
        public Builder operatingSystem(String operatingSystem) {
            this.operatingSystem = Objects.requireNonNull(operatingSystem);
            return this;
        }
        @CustomType.Setter
        public Builder osImage(String osImage) {
            this.osImage = Objects.requireNonNull(osImage);
            return this;
        }
        @CustomType.Setter
        public Builder systemUUID(String systemUUID) {
            this.systemUUID = Objects.requireNonNull(systemUUID);
            return this;
        }
        public NodeSystemInfo build() {
            final var o = new NodeSystemInfo();
            o.architecture = architecture;
            o.bootID = bootID;
            o.containerRuntimeVersion = containerRuntimeVersion;
            o.kernelVersion = kernelVersion;
            o.kubeProxyVersion = kubeProxyVersion;
            o.kubeletVersion = kubeletVersion;
            o.machineID = machineID;
            o.operatingSystem = operatingSystem;
            o.osImage = osImage;
            o.systemUUID = systemUUID;
            return o;
        }
    }
}
