From 0ce0150bded7319f35673b43022ccb857d750e3a Mon Sep 17 00:00:00 2001 From: nikhiljindal Date: Fri, 15 May 2015 12:58:01 -0700 Subject: [PATCH] Fixing the omitempty tag --- pkg/api/v1/types.go | 79 ++++++++++++++++++++-------------------- pkg/api/v1beta3/types.go | 79 ++++++++++++++++++++-------------------- 2 files changed, 78 insertions(+), 80 deletions(-) diff --git a/pkg/api/v1/types.go b/pkg/api/v1/types.go index 52a74c04be0..52b74924781 100644 --- a/pkg/api/v1/types.go +++ b/pkg/api/v1/types.go @@ -188,7 +188,7 @@ type Volume struct { // Source represents the location and type of a volume to mount. // This is optional for now. If not specified, the Volume is implied to be an EmptyDir. // This implied behavior is deprecated and will be removed in a future version. - VolumeSource `json:",inline,omitempty"` + VolumeSource `json:",inline"` } // VolumeSource represents the source location of a volume to mount. @@ -200,26 +200,26 @@ type VolumeSource struct { // to see the host machine. Most containers will NOT need this. // TODO(jonesdl) We need to restrict who can use host directory mounts and who can/can not // mount host directories as read/write. - HostPath *HostPathVolumeSource `json:"hostPath" description:"pre-existing host file or directory; generally for privileged system daemons or other agents tied to the host"` + HostPath *HostPathVolumeSource `json:"hostPath,omitempty" description:"pre-existing host file or directory; generally for privileged system daemons or other agents tied to the host"` // EmptyDir represents a temporary directory that shares a pod's lifetime. - EmptyDir *EmptyDirVolumeSource `json:"emptyDir" description:"temporary directory that shares a pod's lifetime"` + EmptyDir *EmptyDirVolumeSource `json:"emptyDir,omitempty" description:"temporary directory that shares a pod's lifetime"` // GCEPersistentDisk represents a GCE Disk resource that is attached to a // kubelet's host machine and then exposed to the pod. - GCEPersistentDisk *GCEPersistentDiskVolumeSource `json:"gcePersistentDisk" description:"GCE disk resource attached to the host machine on demand"` + GCEPersistentDisk *GCEPersistentDiskVolumeSource `json:"gcePersistentDisk,omitempty" description:"GCE disk resource attached to the host machine on demand"` // AWSElasticBlockStore represents an AWS Disk resource that is attached to a // kubelet's host machine and then exposed to the pod. - AWSElasticBlockStore *AWSElasticBlockStoreVolumeSource `json:"awsElasticBlockStore" description:"AWS disk resource attached to the host machine on demand"` + AWSElasticBlockStore *AWSElasticBlockStoreVolumeSource `json:"awsElasticBlockStore,omitempty" description:"AWS disk resource attached to the host machine on demand"` // GitRepo represents a git repository at a particular revision. - GitRepo *GitRepoVolumeSource `json:"gitRepo" description:"git repository at a particular revision"` + GitRepo *GitRepoVolumeSource `json:"gitRepo,omitempty" description:"git repository at a particular revision"` // Secret represents a secret that should populate this volume. - Secret *SecretVolumeSource `json:"secret" description:"secret to populate volume"` + Secret *SecretVolumeSource `json:"secret,omitempty" description:"secret to populate volume"` // NFS represents an NFS mount on the host that shares a pod's lifetime - NFS *NFSVolumeSource `json:"nfs" description:"NFS volume that will be mounted in the host machine"` + NFS *NFSVolumeSource `json:"nfs,omitempty" description:"NFS volume that will be mounted in the host machine"` // ISCSI represents an ISCSI Disk resource that is attached to a // kubelet's host machine and then exposed to the pod. - ISCSI *ISCSIVolumeSource `json:"iscsi" description:"iSCSI disk attached to host machine on demand"` + ISCSI *ISCSIVolumeSource `json:"iscsi,omitempty" description:"iSCSI disk attached to host machine on demand"` // Glusterfs represents a Glusterfs mount on the host that shares a pod's lifetime - Glusterfs *GlusterfsVolumeSource `json:"glusterfs" description:"Glusterfs volume that will be mounted on the host machine "` + Glusterfs *GlusterfsVolumeSource `json:"glusterfs,omitempty" description:"Glusterfs volume that will be mounted on the host machine "` // PersistentVolumeClaimVolumeSource represents a reference to a PersistentVolumeClaim in the same namespace PersistentVolumeClaimVolumeSource *PersistentVolumeClaimVolumeSource `json:"persistentVolumeClaim,omitempty" description:"a reference to a PersistentVolumeClaim in the same namespace"` } @@ -237,25 +237,25 @@ type PersistentVolumeClaimVolumeSource struct { type PersistentVolumeSource struct { // GCEPersistentDisk represents a GCE Disk resource that is attached to a // kubelet's host machine and then exposed to the pod. - GCEPersistentDisk *GCEPersistentDiskVolumeSource `json:"gcePersistentDisk" description:"GCE disk resource provisioned by an admin"` + GCEPersistentDisk *GCEPersistentDiskVolumeSource `json:"gcePersistentDisk,omitempty" description:"GCE disk resource provisioned by an admin"` // AWSElasticBlockStore represents an AWS Disk resource that is attached to a // kubelet's host machine and then exposed to the pod. - AWSElasticBlockStore *AWSElasticBlockStoreVolumeSource `json:"awsElasticBlockStore" description:"AWS disk resource provisioned by an admin"` + AWSElasticBlockStore *AWSElasticBlockStoreVolumeSource `json:"awsElasticBlockStore,omitempty" description:"AWS disk resource provisioned by an admin"` // HostPath represents a directory on the host. // This is useful for development and testing only. // on-host storage is not supported in any way. - HostPath *HostPathVolumeSource `json:"hostPath" description:"a HostPath provisioned by a developer or tester; for develment use only"` + HostPath *HostPathVolumeSource `json:"hostPath,omitempty" description:"a HostPath provisioned by a developer or tester; for develment use only"` // Glusterfs represents a Glusterfs volume that is attached to a host and exposed to the pod - Glusterfs *GlusterfsVolumeSource `json:"glusterfs" description:"Glusterfs volume resource provisioned by an admin"` + Glusterfs *GlusterfsVolumeSource `json:"glusterfs,omitempty" description:"Glusterfs volume resource provisioned by an admin"` // NFS represents an NFS mount on the host - NFS *NFSVolumeSource `json:"nfs" description:"NFS volume resource provisioned by an admin"` + NFS *NFSVolumeSource `json:"nfs,omitempty" description:"NFS volume resource provisioned by an admin"` } type PersistentVolume struct { TypeMeta `json:",inline"` ObjectMeta `json:"metadata,omitempty" description:"standard object metadata; see http://docs.k8s.io/api-conventions.md#metadata"` - //Spec defines a persistent volume owned by the cluster + // Spec defines a persistent volume owned by the cluster Spec PersistentVolumeSpec `json:"spec,omitempty" description:"specification of a persistent volume as provisioned by an administrator"` // Status represents the current information about persistent volume. @@ -366,7 +366,7 @@ type HostPathVolumeSource struct { type EmptyDirVolumeSource struct { // Optional: what type of storage medium should back this directory. // The default is "" which means to use the node's default medium. - Medium StorageType `json:"medium" description:"type of storage used to back the volume; must be an empty string (default) or Memory"` + Medium StorageType `json:"medium,omitempty" description:"type of storage used to back the volume; must be an empty string (default) or Memory"` } // GlusterfsVolumeSource represents a Glusterfs Mount that lasts the lifetime of a pod @@ -412,7 +412,7 @@ type GCEPersistentDiskVolumeSource struct { // Must be a filesystem type supported by the host operating system. // Ex. "ext4", "xfs", "ntfs" // TODO: how do we prevent errors in the filesystem from compromising the machine - FSType string `json:"fsType,omitempty" description:"file system type to mount, such as ext4, xfs, ntfs"` + FSType string `json:"fsType" description:"file system type to mount, such as ext4, xfs, ntfs"` // Optional: Partition on the disk to mount. // If omitted, kubelet will attempt to mount the device name. // Ex. For /dev/sda1, this field is "1", for /dev/sda, this field is 0 or empty. @@ -434,8 +434,7 @@ type AWSElasticBlockStoreVolumeSource struct { // Must be a filesystem type supported by the host operating system. // Ex. "ext4", "xfs", "ntfs" // TODO: how do we prevent errors in the filesystem from compromising the machine - // TODO: why omitempty if required? - FSType string `json:"fsType,omitempty" description:"file system type to mount, such as ext4, xfs, ntfs"` + FSType string `json:"fsType" description:"file system type to mount, such as ext4, xfs, ntfs"` // Optional: Partition on the disk to mount. // If omitted, kubelet will attempt to mount the device name. // Ex. For /dev/sda1, this field is "1", for /dev/sda, this field 0 or empty. @@ -478,16 +477,16 @@ type NFSVolumeSource struct { type ISCSIVolumeSource struct { // Required: iSCSI target portal // the portal is either an IP or ip_addr:port if port is other than default (typically TCP ports 860 and 3260) - TargetPortal string `json:"targetPortal,omitempty" description:"iSCSI target portal"` + TargetPortal string `json:"targetPortal" description:"iSCSI target portal"` // Required: target iSCSI Qualified Name - IQN string `json:"iqn,omitempty" description:"iSCSI Qualified Name"` + IQN string `json:"iqn" description:"iSCSI Qualified Name"` // Required: iSCSI target lun number - Lun int `json:"lun,omitempty" description:"iscsi target lun number"` + Lun int `json:"lun" description:"iscsi target lun number"` // Required: Filesystem type to mount. // Must be a filesystem type supported by the host operating system. // Ex. "ext4", "xfs", "ntfs" // TODO: how do we prevent errors in the filesystem from compromising the machine - FSType string `json:"fsType,omitempty" description:"file system type to mount, such as ext4, xfs, ntfs"` + FSType string `json:"fsType" description:"file system type to mount, such as ext4, xfs, ntfs"` // Optional: Defaults to false (read/write). ReadOnly here will force // the ReadOnly setting in VolumeMounts. ReadOnly bool `json:"readOnly,omitempty" description:"read-only if true, read-write otherwise (false or unspecified)"` @@ -549,7 +548,7 @@ type HTTPGetAction struct { // Optional: Path to access on the HTTP server. Path string `json:"path,omitempty" description:"path to access on the HTTP server"` // Required: Name or number of the port to access on the container. - Port util.IntOrString `json:"port,omitempty" description:"number or name of the port to access on the container"` + Port util.IntOrString `json:"port" description:"number or name of the port to access on the container"` // Optional: Host name to connect to, defaults to the pod IP. Host string `json:"host,omitempty" description:"hostname to connect to; defaults to pod IP"` } @@ -557,7 +556,7 @@ type HTTPGetAction struct { // TCPSocketAction describes an action based on opening a socket type TCPSocketAction struct { // Required: Port to connect to. - Port util.IntOrString `json:"port,omitempty" description:"number of name of the port to access on the container"` + Port util.IntOrString `json:"port" description:"number of name of the port to access on the container"` } // ExecAction describes a "run in container" action. @@ -643,7 +642,7 @@ type Container struct { // Deprecated - see SecurityContext. Optional: Default to false. Privileged bool `json:"privileged,omitempty" description:"hether or not the container is granted privileged status; defaults to false; cannot be updated; deprecated; See SecurityContext"` // Optional: Policy for pulling images for this container - ImagePullPolicy PullPolicy `json:"imagePullPolicy" description:"image pull policy; one of PullAlways, PullNever, PullIfNotPresent; defaults to PullAlways if :latest tag is specified, or PullIfNotPresent otherwise; cannot be updated"` + ImagePullPolicy PullPolicy `json:"imagePullPolicy,omitempty" description:"image pull policy; one of PullAlways, PullNever, PullIfNotPresent; defaults to PullAlways if :latest tag is specified, or PullIfNotPresent otherwise; cannot be updated"` // Deprecated - see SecurityContext. Optional: Capabilities for container. Capabilities Capabilities `json:"capabilities,omitempty" description:"capabilities for container; cannot be updated; deprecated; See SecurityContext"` // Optional: SecurityContext defines the security options the pod should be run with @@ -802,7 +801,7 @@ const ( // PodSpec is a description of a pod type PodSpec struct { - Volumes []Volume `json:"volumes" description:"list of volumes that can be mounted by containers belonging to the pod" patchStrategy:"merge" patchMergeKey:"name"` + Volumes []Volume `json:"volumes,omitempty" description:"list of volumes that can be mounted by containers belonging to the pod" patchStrategy:"merge" patchMergeKey:"name"` // Required: there must be at least one container in a pod. Containers []Container `json:"containers" description:"list of containers belonging to the pod; cannot be updated; containers cannot currently be added or removed; there must be at least one container in a Pod" patchStrategy:"merge" patchMergeKey:"name"` RestartPolicy RestartPolicy `json:"restartPolicy,omitempty" description:"restart policy for all containers within the pod; one of RestartPolicyAlways, RestartPolicyOnFailure, RestartPolicyNever"` @@ -819,7 +818,7 @@ type PodSpec struct { NodeSelector map[string]string `json:"nodeSelector,omitempty" description:"selector which must match a node's labels for the pod to be scheduled on that node"` // ServiceAccount is the name of the ServiceAccount to use to run this pod - ServiceAccount string `json:"serviceAccount" description:"name of the ServiceAccount to use to run this pod"` + ServiceAccount string `json:"serviceAccount,omitempty" description:"name of the ServiceAccount to use to run this pod"` // Host is a request to schedule this pod onto a specific host. If it is non-empty, // the the scheduler simply schedules this pod onto that host, assuming that it fits @@ -907,7 +906,7 @@ type PodTemplateList struct { // ReplicationControllerSpec is the specification of a replication controller. type ReplicationControllerSpec struct { // Replicas is the number of desired replicas. - Replicas int `json:"replicas" description:"number of replicas desired"` + Replicas int `json:"replicas,omitempty" description:"number of replicas desired"` // Selector is a label query over pods that should match the Replicas count. // If Selector is empty, it is defaulted to the labels present on the Pod template. @@ -972,7 +971,7 @@ type ServiceSpec struct { Ports []ServicePort `json:"ports" description:"ports exposed by the service"` // This service will route traffic to pods having labels matching this selector. If null, no endpoints will be automatically created. If empty, all pods will be selected. - Selector map[string]string `json:"selector" description:"label keys and values that must match in order to receive traffic for this service; if empty, all pods are selected, if not specified, endpoints must be manually specified"` + Selector map[string]string `json:"selector,omitempty" description:"label keys and values that must match in order to receive traffic for this service; if empty, all pods are selected, if not specified, endpoints must be manually specified"` // PortalIP is usually assigned by the master. If specified by the user // we will try to respect it or else fail the request. This field can @@ -997,11 +996,11 @@ type ServicePort struct { // name of this port within the service. This must be a DNS_LABEL. // All ports within a ServiceSpec must have unique names. This maps to // the 'Name' field in EndpointPort objects. - Name string `json:"name" description:"the name of this port; optional if only one port is defined"` + Name string `json:"name,omitempty" description:"the name of this port; optional if only one port is defined"` // Optional: The IP protocol for this port. Supports "TCP" and "UDP", // default is TCP. - Protocol Protocol `json:"protocol" description:"the protocol used by this port; must be UDP or TCP; TCP if unspecified"` + Protocol Protocol `json:"protocol,omitempty" description:"the protocol used by this port; must be UDP or TCP; TCP if unspecified"` // Required: The port that will be exposed by this service. Port int `json:"port" description:"the port number that is exposed"` @@ -1010,7 +1009,7 @@ type ServicePort struct { // If this is a string, it will be looked up as a named port in the // target Pod's container ports. If this is not specified, the value // of Port is used (an identity map). - TargetPort util.IntOrString `json:"targetPort" description:"the port to access on the pods targeted by the service; defaults to the service port"` + TargetPort util.IntOrString `json:"targetPort,omitempty" description:"the port to access on the pods targeted by the service; defaults to the service port"` } // Service is a named abstraction of software service (for example, mysql) consisting of local port @@ -1050,7 +1049,7 @@ type ServiceAccount struct { ObjectMeta `json:"metadata,omitempty" description:"standard object metadata; see http://docs.k8s.io/api-conventions.md#metadata"` // Secrets is the list of secrets allowed to be used by pods running using this ServiceAccount - Secrets []ObjectReference `json:"secrets" description:"list of secrets that can be used by pods running as this service account" patchStrategy:"merge" patchMergeKey:"name"` + Secrets []ObjectReference `json:"secrets,omitempty" description:"list of secrets that can be used by pods running as this service account" patchStrategy:"merge" patchMergeKey:"name"` } // ServiceAccountList is a list of ServiceAccount objects @@ -1329,13 +1328,13 @@ type ListOptions struct { TypeMeta `json:",inline"` // A selector based on labels - LabelSelector string `json:"labelSelector" description:"a selector to restrict the list of returned objects by their labels; defaults to everything"` + LabelSelector string `json:"labelSelector,omitempty" description:"a selector to restrict the list of returned objects by their labels; defaults to everything"` // A selector based on fields - FieldSelector string `json:"fieldSelector" description:"a selector to restrict the list of returned objects by their fields; defaults to everything"` + FieldSelector string `json:"fieldSelector,omitempty" description:"a selector to restrict the list of returned objects by their fields; defaults to everything"` // If true, watch for changes to the selected resources - Watch bool `json:"watch" description:"watch for changes to the described resources and return them as a stream of add, update, and remove notifications; specify resourceVersion"` + Watch bool `json:"watch,omitempty" description:"watch for changes to the described resources and return them as a stream of add, update, and remove notifications; specify resourceVersion"` // The desired resource version to watch - ResourceVersion string `json:"resourceVersion" description:"when specified with a watch call, shows changes that occur after that particular version of a resource; defaults to changes from the beginning of history"` + ResourceVersion string `json:"resourceVersion,omitempty" description:"when specified with a watch call, shows changes that occur after that particular version of a resource; defaults to changes from the beginning of history"` } // PodLogOptions is the query options for a Pod's logs REST call @@ -1576,7 +1575,7 @@ type Event struct { ObjectMeta `json:"metadata" description:"standard object metadata; see http://docs.k8s.io/api-conventions.md#metadata"` // Required. The object that this event is about. - InvolvedObject ObjectReference `json:"involvedObject,omitempty" description:"object this event is about"` + InvolvedObject ObjectReference `json:"involvedObject" description:"object this event is about"` // Optional; this should be a short, machine understandable string that gives the reason // for this event being generated. diff --git a/pkg/api/v1beta3/types.go b/pkg/api/v1beta3/types.go index d4e77963821..8e466a60c14 100644 --- a/pkg/api/v1beta3/types.go +++ b/pkg/api/v1beta3/types.go @@ -188,7 +188,7 @@ type Volume struct { // Source represents the location and type of a volume to mount. // This is optional for now. If not specified, the Volume is implied to be an EmptyDir. // This implied behavior is deprecated and will be removed in a future version. - VolumeSource `json:",inline,omitempty"` + VolumeSource `json:",inline"` } // VolumeSource represents the source location of a volume to mount. @@ -200,26 +200,26 @@ type VolumeSource struct { // to see the host machine. Most containers will NOT need this. // TODO(jonesdl) We need to restrict who can use host directory mounts and who can/can not // mount host directories as read/write. - HostPath *HostPathVolumeSource `json:"hostPath" description:"pre-existing host file or directory; generally for privileged system daemons or other agents tied to the host"` + HostPath *HostPathVolumeSource `json:"hostPath,omitempty" description:"pre-existing host file or directory; generally for privileged system daemons or other agents tied to the host"` // EmptyDir represents a temporary directory that shares a pod's lifetime. - EmptyDir *EmptyDirVolumeSource `json:"emptyDir" description:"temporary directory that shares a pod's lifetime"` + EmptyDir *EmptyDirVolumeSource `json:"emptyDir,omitempty" description:"temporary directory that shares a pod's lifetime"` // GCEPersistentDisk represents a GCE Disk resource that is attached to a // kubelet's host machine and then exposed to the pod. - GCEPersistentDisk *GCEPersistentDiskVolumeSource `json:"gcePersistentDisk" description:"GCE disk resource attached to the host machine on demand"` + GCEPersistentDisk *GCEPersistentDiskVolumeSource `json:"gcePersistentDisk,omitempty" description:"GCE disk resource attached to the host machine on demand"` // AWSElasticBlockStore represents an AWS Disk resource that is attached to a // kubelet's host machine and then exposed to the pod. - AWSElasticBlockStore *AWSElasticBlockStoreVolumeSource `json:"awsElasticBlockStore" description:"AWS disk resource attached to the host machine on demand"` + AWSElasticBlockStore *AWSElasticBlockStoreVolumeSource `json:"awsElasticBlockStore,omitempty" description:"AWS disk resource attached to the host machine on demand"` // GitRepo represents a git repository at a particular revision. - GitRepo *GitRepoVolumeSource `json:"gitRepo" description:"git repository at a particular revision"` + GitRepo *GitRepoVolumeSource `json:"gitRepo,omitempty" description:"git repository at a particular revision"` // Secret represents a secret that should populate this volume. - Secret *SecretVolumeSource `json:"secret" description:"secret to populate volume"` + Secret *SecretVolumeSource `json:"secret,omitempty" description:"secret to populate volume"` // NFS represents an NFS mount on the host that shares a pod's lifetime - NFS *NFSVolumeSource `json:"nfs" description:"NFS volume that will be mounted in the host machine"` + NFS *NFSVolumeSource `json:"nfs,omitempty" description:"NFS volume that will be mounted in the host machine"` // ISCSI represents an ISCSI Disk resource that is attached to a // kubelet's host machine and then exposed to the pod. - ISCSI *ISCSIVolumeSource `json:"iscsi" description:"iSCSI disk attached to host machine on demand"` + ISCSI *ISCSIVolumeSource `json:"iscsi,omitempty" description:"iSCSI disk attached to host machine on demand"` // Glusterfs represents a Glusterfs mount on the host that shares a pod's lifetime - Glusterfs *GlusterfsVolumeSource `json:"glusterfs" description:"Glusterfs volume that will be mounted on the host machine "` + Glusterfs *GlusterfsVolumeSource `json:"glusterfs,omitempty" description:"Glusterfs volume that will be mounted on the host machine "` // PersistentVolumeClaimVolumeSource represents a reference to a PersistentVolumeClaim in the same namespace PersistentVolumeClaimVolumeSource *PersistentVolumeClaimVolumeSource `json:"persistentVolumeClaim,omitempty" description:"a reference to a PersistentVolumeClaim in the same namespace"` } @@ -237,18 +237,18 @@ type PersistentVolumeClaimVolumeSource struct { type PersistentVolumeSource struct { // GCEPersistentDisk represents a GCE Disk resource that is attached to a // kubelet's host machine and then exposed to the pod. - GCEPersistentDisk *GCEPersistentDiskVolumeSource `json:"gcePersistentDisk" description:"GCE disk resource provisioned by an admin"` + GCEPersistentDisk *GCEPersistentDiskVolumeSource `json:"gcePersistentDisk,omitempty" description:"GCE disk resource provisioned by an admin"` // AWSElasticBlockStore represents an AWS Disk resource that is attached to a // kubelet's host machine and then exposed to the pod. - AWSElasticBlockStore *AWSElasticBlockStoreVolumeSource `json:"awsElasticBlockStore" description:"AWS disk resource provisioned by an admin"` + AWSElasticBlockStore *AWSElasticBlockStoreVolumeSource `json:"awsElasticBlockStore,omitempty" description:"AWS disk resource provisioned by an admin"` // HostPath represents a directory on the host. // This is useful for development and testing only. // on-host storage is not supported in any way. - HostPath *HostPathVolumeSource `json:"hostPath" description:"a HostPath provisioned by a developer or tester; for develment use only"` + HostPath *HostPathVolumeSource `json:"hostPath,omitempty" description:"a HostPath provisioned by a developer or tester; for develment use only"` // Glusterfs represents a Glusterfs volume that is attached to a host and exposed to the pod - Glusterfs *GlusterfsVolumeSource `json:"glusterfs" description:"Glusterfs volume resource provisioned by an admin"` + Glusterfs *GlusterfsVolumeSource `json:"glusterfs,omitempty" description:"Glusterfs volume resource provisioned by an admin"` // NFS represents an NFS mount on the host - NFS *NFSVolumeSource `json:"nfs" description:"NFS volume resource provisioned by an admin"` + NFS *NFSVolumeSource `json:"nfs,omitempty" description:"NFS volume resource provisioned by an admin"` } type PersistentVolume struct { @@ -366,7 +366,7 @@ type HostPathVolumeSource struct { type EmptyDirVolumeSource struct { // Optional: what type of storage medium should back this directory. // The default is "" which means to use the node's default medium. - Medium StorageType `json:"medium" description:"type of storage used to back the volume; must be an empty string (default) or Memory"` + Medium StorageType `json:"medium,omitempty" description:"type of storage used to back the volume; must be an empty string (default) or Memory"` } // GlusterfsVolumeSource represents a Glusterfs Mount that lasts the lifetime of a pod @@ -412,7 +412,7 @@ type GCEPersistentDiskVolumeSource struct { // Must be a filesystem type supported by the host operating system. // Ex. "ext4", "xfs", "ntfs" // TODO: how do we prevent errors in the filesystem from compromising the machine - FSType string `json:"fsType,omitempty" description:"file system type to mount, such as ext4, xfs, ntfs"` + FSType string `json:"fsType" description:"file system type to mount, such as ext4, xfs, ntfs"` // Optional: Partition on the disk to mount. // If omitted, kubelet will attempt to mount the device name. // Ex. For /dev/sda1, this field is "1", for /dev/sda, this field is 0 or empty. @@ -434,8 +434,7 @@ type AWSElasticBlockStoreVolumeSource struct { // Must be a filesystem type supported by the host operating system. // Ex. "ext4", "xfs", "ntfs" // TODO: how do we prevent errors in the filesystem from compromising the machine - // TODO: why omitempty if required? - FSType string `json:"fsType,omitempty" description:"file system type to mount, such as ext4, xfs, ntfs"` + FSType string `json:"fsType" description:"file system type to mount, such as ext4, xfs, ntfs"` // Optional: Partition on the disk to mount. // If omitted, kubelet will attempt to mount the device name. // Ex. For /dev/sda1, this field is "1", for /dev/sda, this field 0 or empty. @@ -450,7 +449,7 @@ type GitRepoVolumeSource struct { // Repository URL Repository string `json:"repository" description:"repository URL"` // Commit hash, this is optional - Revision string `json:"revision" description:"commit hash for the specified revision"` + Revision string `json:"revision,omitempty" description:"commit hash for the specified revision"` } // SecretVolumeSource adapts a Secret into a VolumeSource @@ -478,16 +477,16 @@ type NFSVolumeSource struct { type ISCSIVolumeSource struct { // Required: iSCSI target portal // the portal is either an IP or ip_addr:port if port is other than default (typically TCP ports 860 and 3260) - TargetPortal string `json:"targetPortal,omitempty" description:"iSCSI target portal"` + TargetPortal string `json:"targetPortal" description:"iSCSI target portal"` // Required: target iSCSI Qualified Name - IQN string `json:"iqn,omitempty" description:"iSCSI Qualified Name"` + IQN string `json:"iqn" description:"iSCSI Qualified Name"` // Required: iSCSI target lun number - Lun int `json:"lun,omitempty" description:"iscsi target lun number"` + Lun int `json:"lun" description:"iscsi target lun number"` // Required: Filesystem type to mount. // Must be a filesystem type supported by the host operating system. // Ex. "ext4", "xfs", "ntfs" // TODO: how do we prevent errors in the filesystem from compromising the machine - FSType string `json:"fsType,omitempty" description:"file system type to mount, such as ext4, xfs, ntfs"` + FSType string `json:"fsType" description:"file system type to mount, such as ext4, xfs, ntfs"` // Optional: Defaults to false (read/write). ReadOnly here will force // the ReadOnly setting in VolumeMounts. ReadOnly bool `json:"readOnly,omitempty" description:"read-only if true, read-write otherwise (false or unspecified)"` @@ -549,7 +548,7 @@ type HTTPGetAction struct { // Optional: Path to access on the HTTP server. Path string `json:"path,omitempty" description:"path to access on the HTTP server"` // Required: Name or number of the port to access on the container. - Port util.IntOrString `json:"port,omitempty" description:"number or name of the port to access on the container"` + Port util.IntOrString `json:"port" description:"number or name of the port to access on the container"` // Optional: Host name to connect to, defaults to the pod IP. Host string `json:"host,omitempty" description:"hostname to connect to; defaults to pod IP"` } @@ -557,7 +556,7 @@ type HTTPGetAction struct { // TCPSocketAction describes an action based on opening a socket type TCPSocketAction struct { // Required: Port to connect to. - Port util.IntOrString `json:"port,omitempty" description:"number of name of the port to access on the container"` + Port util.IntOrString `json:"port" description:"number of name of the port to access on the container"` } // ExecAction describes a "run in container" action. @@ -643,7 +642,7 @@ type Container struct { // Deprecated - see SecurityContext. Optional: Default to false. Privileged bool `json:"privileged,omitempty" description:"whether or not the container is granted privileged status; defaults to false; cannot be updated; deprecated; See SecurityContext."` // Optional: Policy for pulling images for this container - ImagePullPolicy PullPolicy `json:"imagePullPolicy" description:"image pull policy; one of PullAlways, PullNever, PullIfNotPresent; defaults to PullAlways if :latest tag is specified, or PullIfNotPresent otherwise; cannot be updated"` + ImagePullPolicy PullPolicy `json:"imagePullPolicy,omitempty" description:"image pull policy; one of PullAlways, PullNever, PullIfNotPresent; defaults to PullAlways if :latest tag is specified, or PullIfNotPresent otherwise; cannot be updated"` // Deprecated - see SecurityContext. Optional: Capabilities for container. Capabilities Capabilities `json:"capabilities,omitempty" description:"capabilities for container; cannot be updated; deprecated; See SecurityContext."` // Optional: SecurityContext defines the security options the pod should be run with @@ -802,7 +801,7 @@ const ( // PodSpec is a description of a pod type PodSpec struct { - Volumes []Volume `json:"volumes" description:"list of volumes that can be mounted by containers belonging to the pod" patchStrategy:"merge" patchMergeKey:"name"` + Volumes []Volume `json:"volumes,omitempty" description:"list of volumes that can be mounted by containers belonging to the pod" patchStrategy:"merge" patchMergeKey:"name"` // Required: there must be at least one container in a pod. Containers []Container `json:"containers" description:"list of containers belonging to the pod; cannot be updated; containers cannot currently be added or removed; there must be at least one container in a Pod" patchStrategy:"merge" patchMergeKey:"name"` RestartPolicy RestartPolicy `json:"restartPolicy,omitempty" description:"restart policy for all containers within the pod; one of RestartPolicyAlways, RestartPolicyOnFailure, RestartPolicyNever"` @@ -907,7 +906,7 @@ type PodTemplateList struct { // ReplicationControllerSpec is the specification of a replication controller. type ReplicationControllerSpec struct { // Replicas is the number of desired replicas. - Replicas int `json:"replicas" description:"number of replicas desired"` + Replicas int `json:"replicas,omitempty" description:"number of replicas desired"` // Selector is a label query over pods that should match the Replicas count. // If Selector is empty, it is defaulted to the labels present on the Pod template. @@ -972,7 +971,7 @@ type ServiceSpec struct { Ports []ServicePort `json:"ports" description:"ports exposed by the service"` // This service will route traffic to pods having labels matching this selector. If null, no endpoints will be automatically created. If empty, all pods will be selected. - Selector map[string]string `json:"selector" description:"label keys and values that must match in order to receive traffic for this service; if empty, all pods are selected, if not specified, endpoints must be manually specified"` + Selector map[string]string `json:"selector,omitempty" description:"label keys and values that must match in order to receive traffic for this service; if empty, all pods are selected, if not specified, endpoints must be manually specified"` // PortalIP is usually assigned by the master. If specified by the user // we will try to respect it or else fail the request. This field can @@ -997,11 +996,11 @@ type ServicePort struct { // name of this port within the service. This must be a DNS_LABEL. // All ports within a ServiceSpec must have unique names. This maps to // the 'Name' field in EndpointPort objects. - Name string `json:"name" description:"the name of this port; optional if only one port is defined"` + Name string `json:"name,omitempty" description:"the name of this port; optional if only one port is defined"` // Optional: The IP protocol for this port. Supports "TCP" and "UDP", // default is TCP. - Protocol Protocol `json:"protocol" description:"the protocol used by this port; must be UDP or TCP; TCP if unspecified"` + Protocol Protocol `json:"protocol,omitempty" description:"the protocol used by this port; must be UDP or TCP; TCP if unspecified"` // Required: The port that will be exposed by this service. Port int `json:"port" description:"the port number that is exposed"` @@ -1010,7 +1009,7 @@ type ServicePort struct { // If this is a string, it will be looked up as a named port in the // target Pod's container ports. If this is not specified, the value // of Port is used (an identity map). - TargetPort util.IntOrString `json:"targetPort" description:"the port to access on the pods targeted by the service; defaults to the service port"` + TargetPort util.IntOrString `json:"targetPort,omitempty" description:"the port to access on the pods targeted by the service; defaults to the service port"` } // Service is a named abstraction of software service (for example, mysql) consisting of local port @@ -1050,7 +1049,7 @@ type ServiceAccount struct { ObjectMeta `json:"metadata,omitempty" description:"standard object metadata; see http://docs.k8s.io/api-conventions.md#metadata"` // Secrets is the list of secrets allowed to be used by pods running using this ServiceAccount - Secrets []ObjectReference `json:"secrets" description:"list of secrets that can be used by pods running as this service account" patchStrategy:"merge" patchMergeKey:"name"` + Secrets []ObjectReference `json:"secrets,omitempty" description:"list of secrets that can be used by pods running as this service account" patchStrategy:"merge" patchMergeKey:"name"` } // ServiceAccountList is a list of ServiceAccount objects @@ -1321,7 +1320,7 @@ type DeleteOptions struct { // Optional duration in seconds before the object should be deleted. Value must be non-negative integer. // The value zero indicates delete immediately. If this value is nil, the default grace period for the // specified type will be used. - GracePeriodSeconds *int64 `json:"gracePeriodSeconds" description:"the duration in seconds to wait before deleting this object; defaults to a per object value if not specified; zero means delete immediately"` + GracePeriodSeconds *int64 `json:"gracePeriodSeconds,omitempty" description:"the duration in seconds to wait before deleting this object; defaults to a per object value if not specified; zero means delete immediately"` } // ListOptions is the query options to a standard REST list call @@ -1329,13 +1328,13 @@ type ListOptions struct { TypeMeta `json:",inline"` // A selector based on labels - LabelSelector string `json:"labelSelector" description:"a selector to restrict the list of returned objects by their labels; defaults to everything"` + LabelSelector string `json:"labelSelector,omitempty" description:"a selector to restrict the list of returned objects by their labels; defaults to everything"` // A selector based on fields - FieldSelector string `json:"fieldSelector" description:"a selector to restrict the list of returned objects by their fields; defaults to everything"` + FieldSelector string `json:"fieldSelector,omitempty" description:"a selector to restrict the list of returned objects by their fields; defaults to everything"` // If true, watch for changes to the selected resources - Watch bool `json:"watch" description:"watch for changes to the described resources and return them as a stream of add, update, and remove notifications; specify resourceVersion"` + Watch bool `json:"watch,omitempty" description:"watch for changes to the described resources and return them as a stream of add, update, and remove notifications; specify resourceVersion"` // The desired resource version to watch - ResourceVersion string `json:"resourceVersion" description:"when specified with a watch call, shows changes that occur after that particular version of a resource; defaults to changes from the beginning of history"` + ResourceVersion string `json:"resourceVersion,omitempty" description:"when specified with a watch call, shows changes that occur after that particular version of a resource; defaults to changes from the beginning of history"` } // PodLogOptions is the query options for a Pod's logs REST call @@ -1576,7 +1575,7 @@ type Event struct { ObjectMeta `json:"metadata" description:"standard object metadata; see http://docs.k8s.io/api-conventions.md#metadata"` // Required. The object that this event is about. - InvolvedObject ObjectReference `json:"involvedObject,omitempty" description:"object this event is about"` + InvolvedObject ObjectReference `json:"involvedObject" description:"object this event is about"` // Optional; this should be a short, machine understandable string that gives the reason // for this event being generated.