diff --git a/contrib/enscope/README.md b/contrib/enscope/README.md index 78b4dcba8e3..0dab0868327 100644 --- a/contrib/enscope/README.md +++ b/contrib/enscope/README.md @@ -16,8 +16,8 @@ $ enscope specFilename configFilename ## Scope schema ``` type EnscopeSpec struct { - NameSuffix string `json:"nameSuffix,omitempty" yaml:"nameSuffix,omitempty"` - Labels map[string]string `json:"labels,omitempty" yaml:"labels,omitempty"` + NameSuffix string `json:"nameSuffix,omitempty"` + Labels map[string]string `json:"labels,omitempty"` } ``` @@ -211,4 +211,4 @@ Output: name: bar-solo-coolapp-prod status: replicas: 0 -``` \ No newline at end of file +``` diff --git a/contrib/enscope/enscope.go b/contrib/enscope/enscope.go index 594d5625bc3..33bcc71670a 100644 --- a/contrib/enscope/enscope.go +++ b/contrib/enscope/enscope.go @@ -38,8 +38,8 @@ func checkErr(err error) { // TODO: If name suffix is not specified, deterministically generate it by hashing the labels. type EnscopeSpec struct { - NameSuffix string `json:"nameSuffix,omitempty" yaml:"nameSuffix,omitempty"` - Labels map[string]string `json:"labels,omitempty" yaml:"labels,omitempty"` + NameSuffix string `json:"nameSuffix,omitempty"` + Labels map[string]string `json:"labels,omitempty"` } func main() { diff --git a/contrib/simplegen/README.md b/contrib/simplegen/README.md index f2031756f78..a06a5957b4f 100644 --- a/contrib/simplegen/README.md +++ b/contrib/simplegen/README.md @@ -17,13 +17,13 @@ $ simplegen http://some.blog.site.com/k8s-example.yaml ### Schema ``` // Optional: Defaults to image base name if not specified -Name string `yaml:"name,omitempty" json:"name,omitempty"` +Name string `json:"name,omitempty"` // Required. -Image string `yaml:"image" json:"image"` +Image string `json:"image"` // Optional: Defaults to one -Replicas int `yaml:"replicas,omitempty" json:"replicas,omitempty"` +Replicas int `json:"replicas,omitempty"` // Optional: Creates a service if specified: servicePort:containerPort -PortSpec string `yaml:"portSpec,omitempty" json:"portSpec,omitempty"` +PortSpec string `json:"portSpec,omitempty"` ``` ### Example diff --git a/contrib/simplegen/simplegen.go b/contrib/simplegen/simplegen.go index a4ff7fc58cf..752e1f888fb 100644 --- a/contrib/simplegen/simplegen.go +++ b/contrib/simplegen/simplegen.go @@ -45,13 +45,13 @@ const usage = "usage: simplegen filename" type SimpleService struct { // Optional: Defaults to image base name if not specified - Name string `yaml:"name,omitempty" json:"name,omitempty"` + Name string `json:"name,omitempty"` // Required. - Image string `yaml:"image" json:"image"` + Image string `json:"image"` // Optional: Defaults to one - Replicas int `yaml:"replicas,omitempty" json:"replicas,omitempty"` + Replicas int `json:"replicas,omitempty"` // Optional: Creates a service if specified: servicePort:containerPort - PortSpec string `yaml:"portSpec,omitempty" json:"portSpec,omitempty"` + PortSpec string `json:"portSpec,omitempty"` } func checkErr(err error) { diff --git a/contrib/srvexpand/README.md b/contrib/srvexpand/README.md index 7e1588fc66f..19944a918dc 100644 --- a/contrib/srvexpand/README.md +++ b/contrib/srvexpand/README.md @@ -15,9 +15,9 @@ $ srvexpand myservice.yaml ``` type HierarchicalController struct { // Optional: Defaults to one - Replicas int `yaml:"replicas,omitempty" json:"replicas,omitempty"` + Replicas int `json:"replicas,omitempty"` // Spec defines the behavior of a pod. - Spec v1beta3.PodSpec `json:"spec,omitempty" yaml:"spec,omitempty"` + Spec v1beta3.PodSpec `json:"spec,omitempty"` } type ControllerMap map[string]HierarchicalController @@ -25,9 +25,9 @@ type ControllerMap map[string]HierarchicalController type HierarchicalService struct { // Optional: Creates a service if specified: servicePort:containerPort // TODO: Support multiple protocols - PortSpec string `yaml:"portSpec,omitempty" json:"portSpec,omitempty"` + PortSpec string `json:"portSpec,omitempty"` // Map of replication controllers to create - ControllerMap ControllerMap `json:"controllers,omitempty" yaml:"controllers,omitempty"` + ControllerMap ControllerMap `json:"controllers,omitempty"` } type ServiceMap map[string]HierarchicalService @@ -213,4 +213,4 @@ Output: status: replicas: 0 -``` \ No newline at end of file +``` diff --git a/contrib/srvexpand/srvexpand.go b/contrib/srvexpand/srvexpand.go index f94a7eb14df..2e55dc5492d 100644 --- a/contrib/srvexpand/srvexpand.go +++ b/contrib/srvexpand/srvexpand.go @@ -62,9 +62,9 @@ const usage = "usage: srvexpand filename" type HierarchicalController struct { // Optional: Defaults to one - Replicas int `yaml:"replicas,omitempty" json:"replicas,omitempty"` + Replicas int `json:"replicas,omitempty"` // Spec defines the behavior of a pod. - Spec v1beta3.PodSpec `json:"spec,omitempty" yaml:"spec,omitempty"` + Spec v1beta3.PodSpec `json:"spec,omitempty"` } type ControllerMap map[string]HierarchicalController @@ -72,9 +72,9 @@ type ControllerMap map[string]HierarchicalController type HierarchicalService struct { // Optional: Creates a service if specified: servicePort:containerPort // TODO: Support multiple protocols - PortSpec string `yaml:"portSpec,omitempty" json:"portSpec,omitempty"` + PortSpec string `json:"portSpec,omitempty"` // Map of replication controllers to create - ControllerMap ControllerMap `json:"controllers,omitempty" yaml:"controllers,omitempty"` + ControllerMap ControllerMap `json:"controllers,omitempty"` } type ServiceMap map[string]HierarchicalService diff --git a/docs/design/namespaces.md b/docs/design/namespaces.md index b80c68259d9..761daa1a50a 100644 --- a/docs/design/namespaces.md +++ b/docs/design/namespaces.md @@ -48,14 +48,14 @@ A *Namespace* is a DNS compatible subdomain. ``` // TypeMeta is shared by all objects sent to, or returned from the client type TypeMeta struct { - Kind string `json:"kind,omitempty" yaml:"kind,omitempty"` - Uid string `json:"uid,omitempty" yaml:"uid,omitempty"` - CreationTimestamp util.Time `json:"creationTimestamp,omitempty" yaml:"creationTimestamp,omitempty"` - SelfLink string `json:"selfLink,omitempty" yaml:"selfLink,omitempty"` - ResourceVersion uint64 `json:"resourceVersion,omitempty" yaml:"resourceVersion,omitempty"` - APIVersion string `json:"apiVersion,omitempty" yaml:"apiVersion,omitempty"` - Namespace string `json:"namespace,omitempty" yaml:"namespace,omitempty"` - Name string `json:"name,omitempty" yaml:"name,omitempty"` + Kind string `json:"kind,omitempty"` + Uid string `json:"uid,omitempty"` + CreationTimestamp util.Time `json:"creationTimestamp,omitempty"` + SelfLink string `json:"selfLink,omitempty"` + ResourceVersion uint64 `json:"resourceVersion,omitempty"` + APIVersion string `json:"apiVersion,omitempty"` + Namespace string `json:"namespace,omitempty"` + Name string `json:"name,omitempty"` } ``` diff --git a/pkg/api/meta/meta_test.go b/pkg/api/meta/meta_test.go index 18dfd50abe4..2309c11f365 100644 --- a/pkg/api/meta/meta_test.go +++ b/pkg/api/meta/meta_test.go @@ -26,19 +26,19 @@ import ( func TestGenericTypeMeta(t *testing.T) { type TypeMeta struct { - Kind string `json:"kind,omitempty" yaml:"kind,omitempty"` - Namespace string `json:"namespace,omitempty" yaml:"namespace,omitempty"` - Name string `json:"name,omitempty" yaml:"name,omitempty"` - UID string `json:"uid,omitempty" yaml:"uid,omitempty"` - CreationTimestamp util.Time `json:"creationTimestamp,omitempty" yaml:"creationTimestamp,omitempty"` - SelfLink string `json:"selfLink,omitempty" yaml:"selfLink,omitempty"` - ResourceVersion string `json:"resourceVersion,omitempty" yaml:"resourceVersion,omitempty"` - APIVersion string `json:"apiVersion,omitempty" yaml:"apiVersion,omitempty"` - Labels map[string]string `json:"labels,omitempty" yaml:"labels,omitempty"` - Annotations map[string]string `json:"annotations,omitempty" yaml:"annotations,omitempty"` + Kind string `json:"kind,omitempty"` + Namespace string `json:"namespace,omitempty"` + Name string `json:"name,omitempty"` + UID string `json:"uid,omitempty"` + CreationTimestamp util.Time `json:"creationTimestamp,omitempty"` + SelfLink string `json:"selfLink,omitempty"` + ResourceVersion string `json:"resourceVersion,omitempty"` + APIVersion string `json:"apiVersion,omitempty"` + Labels map[string]string `json:"labels,omitempty"` + Annotations map[string]string `json:"annotations,omitempty"` } type Object struct { - TypeMeta `json:",inline" yaml:",inline"` + TypeMeta `json:",inline"` } j := Object{ TypeMeta{ @@ -112,19 +112,19 @@ func TestGenericTypeMeta(t *testing.T) { } type InternalTypeMeta struct { - Kind string `json:"kind,omitempty" yaml:"kind,omitempty"` - Namespace string `json:"namespace,omitempty" yaml:"namespace,omitempty"` - Name string `json:"name,omitempty" yaml:"name,omitempty"` - UID string `json:"uid,omitempty" yaml:"uid,omitempty"` - CreationTimestamp util.Time `json:"creationTimestamp,omitempty" yaml:"creationTimestamp,omitempty"` - SelfLink string `json:"selfLink,omitempty" yaml:"selfLink,omitempty"` - ResourceVersion string `json:"resourceVersion,omitempty" yaml:"resourceVersion,omitempty"` - APIVersion string `json:"apiVersion,omitempty" yaml:"apiVersion,omitempty"` - Labels map[string]string `json:"labels,omitempty" yaml:"labels,omitempty"` - Annotations map[string]string `json:"annotations,omitempty" yaml:"annotations,omitempty"` + Kind string `json:"kind,omitempty"` + Namespace string `json:"namespace,omitempty"` + Name string `json:"name,omitempty"` + UID string `json:"uid,omitempty"` + CreationTimestamp util.Time `json:"creationTimestamp,omitempty"` + SelfLink string `json:"selfLink,omitempty"` + ResourceVersion string `json:"resourceVersion,omitempty"` + APIVersion string `json:"apiVersion,omitempty"` + Labels map[string]string `json:"labels,omitempty"` + Annotations map[string]string `json:"annotations,omitempty"` } type InternalObject struct { - TypeMeta InternalTypeMeta `json:",inline" yaml:",inline"` + TypeMeta InternalTypeMeta `json:",inline"` } func (*InternalObject) IsAnAPIObject() {} @@ -269,22 +269,22 @@ func TestGenericTypeMetaAccessor(t *testing.T) { func TestGenericObjectMeta(t *testing.T) { type TypeMeta struct { - Kind string `json:"kind,omitempty" yaml:"kind,omitempty"` - APIVersion string `json:"apiVersion,omitempty" yaml:"apiVersion,omitempty"` + Kind string `json:"kind,omitempty"` + APIVersion string `json:"apiVersion,omitempty"` } type ObjectMeta struct { - Namespace string `json:"namespace,omitempty" yaml:"namespace,omitempty"` - Name string `json:"name,omitempty" yaml:"name,omitempty"` - UID string `json:"uid,omitempty" yaml:"uid,omitempty"` - CreationTimestamp util.Time `json:"creationTimestamp,omitempty" yaml:"creationTimestamp,omitempty"` - SelfLink string `json:"selfLink,omitempty" yaml:"selfLink,omitempty"` - ResourceVersion string `json:"resourceVersion,omitempty" yaml:"resourceVersion,omitempty"` - Labels map[string]string `json:"labels,omitempty" yaml:"labels,omitempty"` - Annotations map[string]string `json:"annotations,omitempty" yaml:"annotations,omitempty"` + Namespace string `json:"namespace,omitempty"` + Name string `json:"name,omitempty"` + UID string `json:"uid,omitempty"` + CreationTimestamp util.Time `json:"creationTimestamp,omitempty"` + SelfLink string `json:"selfLink,omitempty"` + ResourceVersion string `json:"resourceVersion,omitempty"` + Labels map[string]string `json:"labels,omitempty"` + Annotations map[string]string `json:"annotations,omitempty"` } type Object struct { - TypeMeta `json:",inline" yaml:",inline"` - ObjectMeta `json:"metadata" yaml:"metadata"` + TypeMeta `json:",inline"` + ObjectMeta `json:"metadata"` } j := Object{ TypeMeta{ @@ -375,16 +375,16 @@ func TestGenericObjectMeta(t *testing.T) { func TestGenericListMeta(t *testing.T) { type TypeMeta struct { - Kind string `json:"kind,omitempty" yaml:"kind,omitempty"` - APIVersion string `json:"apiVersion,omitempty" yaml:"apiVersion,omitempty"` + Kind string `json:"kind,omitempty"` + APIVersion string `json:"apiVersion,omitempty"` } type ListMeta struct { - SelfLink string `json:"selfLink,omitempty" yaml:"selfLink,omitempty"` - ResourceVersion string `json:"resourceVersion,omitempty" yaml:"resourceVersion,omitempty"` + SelfLink string `json:"selfLink,omitempty"` + ResourceVersion string `json:"resourceVersion,omitempty"` } type Object struct { - TypeMeta `json:",inline" yaml:",inline"` - ListMeta `json:"metadata" yaml:"metadata"` + TypeMeta `json:",inline"` + ListMeta `json:"metadata"` } j := Object{ TypeMeta{ @@ -442,7 +442,7 @@ func TestGenericListMeta(t *testing.T) { } type MyAPIObject struct { - TypeMeta InternalTypeMeta `json:",inline" yaml:",inline"` + TypeMeta InternalTypeMeta `json:",inline"` } func (*MyAPIObject) IsAnAPIObject() {} diff --git a/pkg/api/types.go b/pkg/api/types.go index 76953e64449..8b87f8b7da0 100644 --- a/pkg/api/types.go +++ b/pkg/api/types.go @@ -51,25 +51,25 @@ import ( type TypeMeta struct { // Kind is a string value representing the REST resource this object represents. // Servers may infer this from the endpoint the client submits requests to. - Kind string `json:"kind,omitempty" yaml:"kind,omitempty"` + Kind string `json:"kind,omitempty"` // APIVersion defines the versioned schema of this representation of an object. // Servers should convert recognized schemas to the latest internal value, and // may reject unrecognized values. - APIVersion string `json:"apiVersion,omitempty" yaml:"apiVersion,omitempty"` + APIVersion string `json:"apiVersion,omitempty"` } // ListMeta describes metadata that synthetic resources must have, including lists and // various status objects. A resource may have only one of {ObjectMeta, ListMeta}. type ListMeta struct { // SelfLink is a URL representing this object. - SelfLink string `json:"selfLink,omitempty" yaml:"selfLink,omitempty"` + SelfLink string `json:"selfLink,omitempty"` // An opaque value that represents the version of this response for use with optimistic // concurrency and change monitoring endpoints. Clients must treat these values as opaque // and values may only be valid for a particular resource or set of resources. Only servers // will generate resource versions. - ResourceVersion string `json:"resourceVersion,omitempty" yaml:"resourceVersion,omitempty"` + ResourceVersion string `json:"resourceVersion,omitempty"` } // ObjectMeta is metadata that all persisted resources must have, which includes all objects @@ -79,32 +79,32 @@ type ObjectMeta struct { // some resources may allow a client to request the generation of an appropriate name // automatically. Name is primarily intended for creation idempotence and configuration // definition. - Name string `json:"name,omitempty" yaml:"name,omitempty"` + Name string `json:"name,omitempty"` // Namespace defines the space within which name must be unique. An empty namespace is // equivalent to the "default" namespace, but "default" is the canonical representation. // Not all objects are required to be scoped to a namespace - the value of this field for // those objects will be empty. - Namespace string `json:"namespace,omitempty" yaml:"namespace,omitempty"` + Namespace string `json:"namespace,omitempty"` // SelfLink is a URL representing this object. - SelfLink string `json:"selfLink,omitempty" yaml:"selfLink,omitempty"` + SelfLink string `json:"selfLink,omitempty"` // UID is the unique in time and space value for this object. It is typically generated by // the server on successful creation of a resource and is not allowed to change on PUT // operations. - UID string `json:"uid,omitempty" yaml:"uid,omitempty"` + UID string `json:"uid,omitempty"` // An opaque value that represents the version of this resource. May be used for optimistic // concurrency, change detection, and the watch operation on a resource or set of resources. // Clients must treat these values as opaque and values may only be valid for a particular // resource or set of resources. Only servers will generate resource versions. - ResourceVersion string `json:"resourceVersion,omitempty" yaml:"resourceVersion,omitempty"` + ResourceVersion string `json:"resourceVersion,omitempty"` // CreationTimestamp is a timestamp representing the server time when this object was // created. It is not guaranteed to be set in happens-before order across separate operations. // Clients may not set this value. It is represented in RFC3339 form and is in UTC. - CreationTimestamp util.Time `json:"creationTimestamp,omitempty" yaml:"creationTimestamp,omitempty"` + CreationTimestamp util.Time `json:"creationTimestamp,omitempty"` // Labels are key value pairs that may be used to scope and select individual resources. // Label keys are of the form: @@ -116,13 +116,13 @@ type ObjectMeta struct { // to the user. Other system components that wish to use labels must specify a prefix. The // "kubernetes.io/" prefix is reserved for use by kubernetes components. // TODO: replace map[string]string with labels.LabelSet type - Labels map[string]string `json:"labels,omitempty" yaml:"labels,omitempty"` + Labels map[string]string `json:"labels,omitempty"` // Annotations are unstructured key value data stored with a resource that may be set by // external tooling. They are not queryable and should be preserved when modifying // objects. Annotation keys have the same formatting restrictions as Label keys. See the // comments on Labels for details. - Annotations map[string]string `json:"annotations,omitempty" yaml:"annotations,omitempty"` + Annotations map[string]string `json:"annotations,omitempty"` } const ( @@ -138,11 +138,11 @@ const ( type Volume struct { // Required: This must be a DNS_LABEL. Each volume in a pod must have // a unique name. - Name string `json:"name" yaml:"name"` + Name string `json:"name"` // 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. - Source *VolumeSource `json:"source" yaml:"source"` + Source *VolumeSource `json:"source"` } // VolumeSource represents the source location of a valume to mount. @@ -153,19 +153,19 @@ type VolumeSource struct { // things that are allowed 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. - HostDir *HostDir `json:"hostDir" yaml:"hostDir"` + HostDir *HostDir `json:"hostDir"` // EmptyDir represents a temporary directory that shares a pod's lifetime. - EmptyDir *EmptyDir `json:"emptyDir" yaml:"emptyDir"` + EmptyDir *EmptyDir `json:"emptyDir"` // GCEPersistentDisk represents a GCE Disk resource that is attached to a // kubelet's host machine and then exposed to the pod. - GCEPersistentDisk *GCEPersistentDisk `json:"persistentDisk" yaml:"persistentDisk"` + GCEPersistentDisk *GCEPersistentDisk `json:"persistentDisk"` // GitRepo represents a git repository at a particular revision. - GitRepo *GitRepo `json:"gitRepo" yaml:"gitRepo"` + GitRepo *GitRepo `json:"gitRepo"` } // HostDir represents bare host directory volume. type HostDir struct { - Path string `json:"path" yaml:"path"` + Path string `json:"path"` } type EmptyDir struct{} @@ -187,27 +187,27 @@ const ( // A GCE PD can only be mounted as read/write once. type GCEPersistentDisk struct { // Unique name of the PD resource. Used to identify the disk in GCE - PDName string `yaml:"pdName" json:"pdName"` + PDName string `json:"pdName"` // 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 `yaml:"fsType,omitempty" json:"fsType,omitempty"` + FSType string `json:"fsType,omitempty"` // 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. - Partition int `yaml:"partition,omitempty" json:"partition,omitempty"` + Partition int `json:"partition,omitempty"` // Optional: Defaults to false (read/write). ReadOnly here will force // the ReadOnly setting in VolumeMounts. - ReadOnly bool `yaml:"readOnly,omitempty" json:"readOnly,omitempty"` + ReadOnly bool `json:"readOnly,omitempty"` } // GitRepo represents a volume that is pulled from git when the pod is created. type GitRepo struct { // Repository URL - Repository string `yaml:"repository" json:"repository"` + Repository string `json:"repository"` // Commit hash, this is optional - Revision string `yaml:"revision" json:"revision"` + Revision string `json:"revision"` // TODO: Consider credentials here. } @@ -215,49 +215,49 @@ type GitRepo struct { type Port struct { // Optional: If specified, this must be a DNS_LABEL. Each named port // in a pod must have a unique name. - Name string `json:"name,omitempty" yaml:"name,omitempty"` + Name string `json:"name,omitempty"` // Optional: If specified, this must be a valid port number, 0 < x < 65536. - HostPort int `json:"hostPort,omitempty" yaml:"hostPort,omitempty"` + HostPort int `json:"hostPort,omitempty"` // Required: This must be a valid port number, 0 < x < 65536. - ContainerPort int `json:"containerPort" yaml:"containerPort"` + ContainerPort int `json:"containerPort"` // Optional: Supports "TCP" and "UDP". Defaults to "TCP". - Protocol Protocol `json:"protocol,omitempty" yaml:"protocol,omitempty"` + Protocol Protocol `json:"protocol,omitempty"` // Optional: What host IP to bind the external port to. - HostIP string `json:"hostIP,omitempty" yaml:"hostIP,omitempty"` + HostIP string `json:"hostIP,omitempty"` } // VolumeMount describes a mounting of a Volume within a container. type VolumeMount struct { // Required: This must match the Name of a Volume [above]. - Name string `json:"name" yaml:"name"` + Name string `json:"name"` // Optional: Defaults to false (read-write). - ReadOnly bool `json:"readOnly,omitempty" yaml:"readOnly,omitempty"` + ReadOnly bool `json:"readOnly,omitempty"` // Required. - MountPath string `json:"mountPath,omitempty" yaml:"mountPath,omitempty"` + MountPath string `json:"mountPath,omitempty"` } // EnvVar represents an environment variable present in a Container. type EnvVar struct { // Required: This must be a C_IDENTIFIER. - Name string `json:"name" yaml:"name"` + Name string `json:"name"` // Optional: defaults to "". - Value string `json:"value,omitempty" yaml:"value,omitempty"` + Value string `json:"value,omitempty"` } // HTTPGetAction describes an action based on HTTP Get requests. type HTTPGetAction struct { // Optional: Path to access on the HTTP server. - Path string `json:"path,omitempty" yaml:"path,omitempty"` + Path string `json:"path,omitempty"` // Required: Name or number of the port to access on the container. - Port util.IntOrString `json:"port,omitempty" yaml:"port,omitempty"` + Port util.IntOrString `json:"port,omitempty"` // Optional: Host name to connect to, defaults to the pod IP. - Host string `json:"host,omitempty" yaml:"host,omitempty"` + Host string `json:"host,omitempty"` } // TCPSocketAction describes an action based on opening a socket type TCPSocketAction struct { // Required: Port to connect to. - Port util.IntOrString `json:"port,omitempty" yaml:"port,omitempty"` + Port util.IntOrString `json:"port,omitempty"` } // ExecAction describes a "run in container" action. @@ -266,20 +266,20 @@ type ExecAction struct { // command is root ('/') in the container's filesystem. The command is simply exec'd, it is // not run inside a shell, so traditional shell instructions ('|', etc) won't work. To use // a shell, you need to explicitly call out to that shell. - Command []string `yaml:"command,omitempty" json:"command,omitempty"` + Command []string `json:"command,omitempty"` } // LivenessProbe describes a liveness probe to be examined to the container. // TODO: pass structured data to the actions, and document that data here. type LivenessProbe struct { // HTTPGetProbe parameters, required if Type == 'http' - HTTPGet *HTTPGetAction `yaml:"httpGet,omitempty" json:"httpGet,omitempty"` + HTTPGet *HTTPGetAction `json:"httpGet,omitempty"` // TCPSocketProbe parameter, required if Type == 'tcp' - TCPSocket *TCPSocketAction `yaml:"tcpSocket,omitempty" json:"tcpSocket,omitempty"` + TCPSocket *TCPSocketAction `json:"tcpSocket,omitempty"` // ExecProbe parameter, required if Type == 'exec' - Exec *ExecAction `yaml:"exec,omitempty" json:"exec,omitempty"` + Exec *ExecAction `json:"exec,omitempty"` // Length of time before health checking is activated. In seconds. - InitialDelaySeconds int64 `yaml:"initialDelaySeconds,omitempty" json:"initialDelaySeconds,omitempty"` + InitialDelaySeconds int64 `json:"initialDelaySeconds,omitempty"` } // PullPolicy describes a policy for if/when to pull a container image @@ -298,28 +298,28 @@ const ( type Container struct { // Required: This must be a DNS_LABEL. Each container in a pod must // have a unique name. - Name string `json:"name" yaml:"name"` + Name string `json:"name"` // Required. - Image string `json:"image" yaml:"image"` + Image string `json:"image"` // Optional: Defaults to whatever is defined in the image. - Command []string `json:"command,omitempty" yaml:"command,omitempty"` + Command []string `json:"command,omitempty"` // Optional: Defaults to Docker's default. - WorkingDir string `json:"workingDir,omitempty" yaml:"workingDir,omitempty"` - Ports []Port `json:"ports,omitempty" yaml:"ports,omitempty"` - Env []EnvVar `json:"env,omitempty" yaml:"env,omitempty"` + WorkingDir string `json:"workingDir,omitempty"` + Ports []Port `json:"ports,omitempty"` + Env []EnvVar `json:"env,omitempty"` // Optional: Defaults to unlimited. - Memory int `json:"memory,omitempty" yaml:"memory,omitempty"` + Memory int `json:"memory,omitempty"` // Optional: Defaults to unlimited. - CPU int `json:"cpu,omitempty" yaml:"cpu,omitempty"` - VolumeMounts []VolumeMount `json:"volumeMounts,omitempty" yaml:"volumeMounts,omitempty"` - LivenessProbe *LivenessProbe `json:"livenessProbe,omitempty" yaml:"livenessProbe,omitempty"` - Lifecycle *Lifecycle `json:"lifecycle,omitempty" yaml:"lifecycle,omitempty"` + CPU int `json:"cpu,omitempty"` + VolumeMounts []VolumeMount `json:"volumeMounts,omitempty"` + LivenessProbe *LivenessProbe `json:"livenessProbe,omitempty"` + Lifecycle *Lifecycle `json:"lifecycle,omitempty"` // Optional: Defaults to /dev/termination-log - TerminationMessagePath string `json:"terminationMessagePath,omitempty" yaml:"terminationMessagePath,omitempty"` + TerminationMessagePath string `json:"terminationMessagePath,omitempty"` // Optional: Default to false. - Privileged bool `json:"privileged,omitempty" yaml:"privileged,omitempty"` + Privileged bool `json:"privileged,omitempty"` // Optional: Policy for pulling images for this container - ImagePullPolicy PullPolicy `json:"imagePullPolicy" yaml:"imagePullPolicy"` + ImagePullPolicy PullPolicy `json:"imagePullPolicy"` } // Handler defines a specific action that should be taken @@ -327,9 +327,9 @@ type Container struct { type Handler struct { // One and only one of the following should be specified. // Exec specifies the action to take. - Exec *ExecAction `json:"exec,omitempty" yaml:"exec,omitempty"` + Exec *ExecAction `json:"exec,omitempty"` // HTTPGet specifies the http request to perform. - HTTPGet *HTTPGetAction `json:"httpGet,omitempty" yaml:"httpGet,omitempty"` + HTTPGet *HTTPGetAction `json:"httpGet,omitempty"` } // Lifecycle describes actions that the management system should take in response to container lifecycle @@ -338,10 +338,10 @@ type Handler struct { type Lifecycle struct { // PostStart is called immediately after a container is created. If the handler fails, the container // is terminated and restarted. - PostStart *Handler `json:"postStart,omitempty" yaml:"postStart,omitempty"` + PostStart *Handler `json:"postStart,omitempty"` // PreStop is called immediately before a container is terminated. The reason for termination is // passed to the handler. Regardless of the outcome of the handler, the container is eventually terminated. - PreStop *Handler `yaml:"preStop,omitempty" json:"preStop,omitempty"` + PreStop *Handler `json:"preStop,omitempty"` } // The below types are used by kube_client and api_server. @@ -368,43 +368,43 @@ const ( type ContainerStateWaiting struct { // Reason could be pulling image, - Reason string `json:"reason,omitempty" yaml:"reason,omitempty"` + Reason string `json:"reason,omitempty"` } type ContainerStateRunning struct { - StartedAt time.Time `json:"startedAt,omitempty" yaml:"startedAt,omitempty"` + StartedAt time.Time `json:"startedAt,omitempty"` } type ContainerStateTerminated struct { - ExitCode int `json:"exitCode" yaml:"exitCode"` - Signal int `json:"signal,omitempty" yaml:"signal,omitempty"` - Reason string `json:"reason,omitempty" yaml:"reason,omitempty"` - Message string `json:"message,omitempty" yaml:"message,omitempty"` - StartedAt time.Time `json:"startedAt,omitempty" yaml:"startedAt,omitempty"` - FinishedAt time.Time `json:"finishedAt,omitempty" yaml:"finishedAt,omitempty"` + ExitCode int `json:"exitCode"` + Signal int `json:"signal,omitempty"` + Reason string `json:"reason,omitempty"` + Message string `json:"message,omitempty"` + StartedAt time.Time `json:"startedAt,omitempty"` + FinishedAt time.Time `json:"finishedAt,omitempty"` } // ContainerState holds a possible state of container. // Only one of its members may be specified. // If none of them is specified, the default one is ContainerStateWaiting. type ContainerState struct { - Waiting *ContainerStateWaiting `json:"waiting,omitempty" yaml:"waiting,omitempty"` - Running *ContainerStateRunning `json:"running,omitempty" yaml:"running,omitempty"` - Termination *ContainerStateTerminated `json:"termination,omitempty" yaml:"termination,omitempty"` + Waiting *ContainerStateWaiting `json:"waiting,omitempty"` + Running *ContainerStateRunning `json:"running,omitempty"` + Termination *ContainerStateTerminated `json:"termination,omitempty"` } type ContainerStatus struct { // TODO(dchen1107): Should we rename PodStatus to a more generic name or have a separate states // defined for container? - State ContainerState `json:"state,omitempty" yaml:"state,omitempty"` + State ContainerState `json:"state,omitempty"` // Note that this is calculated from dead containers. But those containers are subject to // garbage collection. This value will get capped at 5 by GC. - RestartCount int `json:"restartCount" yaml:"restartCount"` + RestartCount int `json:"restartCount"` // TODO(dchen1107): Deprecated this soon once we pull entire PodStatus from node, // not just PodInfo. Now we need this to remove docker.Container from API - PodIP string `json:"podIP,omitempty" yaml:"podIP,omitempty"` + PodIP string `json:"podIP,omitempty"` // TODO(dchen1107): Need to decide how to represent this in v1beta3 - Image string `yaml:"image" json:"image"` + Image string `json:"image"` } // PodInfo contains one entry for every container with available info. @@ -423,20 +423,20 @@ type RestartPolicyNever struct{} // If none of the following policies is specified, the default one // is RestartPolicyAlways. type RestartPolicy struct { - Always *RestartPolicyAlways `json:"always,omitempty" yaml:"always,omitempty"` - OnFailure *RestartPolicyOnFailure `json:"onFailure,omitempty" yaml:"onFailure,omitempty"` - Never *RestartPolicyNever `json:"never,omitempty" yaml:"never,omitempty"` + Always *RestartPolicyAlways `json:"always,omitempty"` + OnFailure *RestartPolicyOnFailure `json:"onFailure,omitempty"` + Never *RestartPolicyNever `json:"never,omitempty"` } // PodState is the state of a pod, used as either input (desired state) or output (current state). type PodState struct { - Manifest ContainerManifest `json:"manifest,omitempty" yaml:"manifest,omitempty"` - Status PodPhase `json:"status,omitempty" yaml:"status,omitempty"` + Manifest ContainerManifest `json:"manifest,omitempty"` + Status PodPhase `json:"status,omitempty"` // A human readable message indicating details about why the pod is in this state. - Message string `json:"message,omitempty" yaml:"message,omitempty"` - Host string `json:"host,omitempty" yaml:"host,omitempty"` - HostIP string `json:"hostIP,omitempty" yaml:"hostIP,omitempty"` - PodIP string `json:"podIP,omitempty" yaml:"podIP,omitempty"` + Message string `json:"message,omitempty"` + Host string `json:"host,omitempty"` + HostIP string `json:"hostIP,omitempty"` + PodIP string `json:"podIP,omitempty"` // The key of this map is the *name* of the container within the manifest; it has one // entry per container in the manifest. The value of this map is currently the output @@ -444,36 +444,36 @@ type PodState struct { // upon. // TODO: Make real decisions about what our info should look like. Re-enable fuzz test // when we have done this. - Info PodInfo `json:"info,omitempty" yaml:"info,omitempty"` + Info PodInfo `json:"info,omitempty"` } // PodList is a list of Pods. type PodList struct { - TypeMeta `json:",inline" yaml:",inline"` - ListMeta `json:"metadata,omitempty" yaml:"metadata,omitempty"` + TypeMeta `json:",inline"` + ListMeta `json:"metadata,omitempty"` - Items []Pod `json:"items" yaml:"items"` + Items []Pod `json:"items"` } // PodSpec is a description of a pod type PodSpec struct { - Volumes []Volume `json:"volumes" yaml:"volumes"` - Containers []Container `json:"containers" yaml:"containers"` - RestartPolicy RestartPolicy `json:"restartPolicy,omitempty" yaml:"restartPolicy,omitempty"` + Volumes []Volume `json:"volumes"` + Containers []Container `json:"containers"` + RestartPolicy RestartPolicy `json:"restartPolicy,omitempty"` // NodeSelector is a selector which must be true for the pod to fit on a node - NodeSelector map[string]string `json:"nodeSelector,omitempty" yaml:"nodeSelector,omitempty"` + NodeSelector map[string]string `json:"nodeSelector,omitempty"` } // PodStatus represents information about the status of a pod. Status may trail the actual // state of a system. type PodStatus struct { - Phase PodPhase `json:"phase,omitempty" yaml:"phase,omitempty"` + Phase PodPhase `json:"phase,omitempty"` // Host is the name of the node that this Pod is currently bound to, or empty if no // assignment has been done. - Host string `json:"host,omitempty" yaml:"host,omitempty"` - HostIP string `json:"hostIP,omitempty" yaml:"hostIP,omitempty"` - PodIP string `json:"podIP,omitempty" yaml:"podIP,omitempty"` + Host string `json:"host,omitempty"` + HostIP string `json:"hostIP,omitempty"` + PodIP string `json:"podIP,omitempty"` // The key of this map is the *name* of the container within the manifest; it has one // entry per container in the manifest. The value of this map is currently the output @@ -481,46 +481,46 @@ type PodStatus struct { // upon. // TODO: Make real decisions about what our info should look like. Re-enable fuzz test // when we have done this. - Info PodInfo `json:"info,omitempty" yaml:"info,omitempty"` + Info PodInfo `json:"info,omitempty"` } // Pod is a collection of containers, used as either input (create, update) or as output (list, get). type Pod struct { - TypeMeta `json:",inline" yaml:",inline"` - ObjectMeta `json:"metadata,omitempty" yaml:"metadata,omitempty"` + TypeMeta `json:",inline"` + ObjectMeta `json:"metadata,omitempty"` // Spec defines the behavior of a pod. - Spec PodSpec `json:"spec,omitempty" yaml:"spec,omitempty"` + Spec PodSpec `json:"spec,omitempty"` // Status represents the current information about a pod. This data may not be up // to date. - Status PodStatus `json:"status,omitempty" yaml:"status,omitempty"` + Status PodStatus `json:"status,omitempty"` } // PodTemplateSpec describes the data a pod should have when created from a template type PodTemplateSpec struct { // Metadata of the pods created from this template. - ObjectMeta `json:"metadata,omitempty" yaml:"metadata,omitempty"` + ObjectMeta `json:"metadata,omitempty"` // Spec defines the behavior of a pod. - Spec PodSpec `json:"spec,omitempty" yaml:"spec,omitempty"` + Spec PodSpec `json:"spec,omitempty"` } // PodTemplate describes a template for creating copies of a predefined pod. type PodTemplate struct { - TypeMeta `json:",inline" yaml:",inline"` - ObjectMeta `json:"metadata,omitempty" yaml:"metadata,omitempty"` + TypeMeta `json:",inline"` + ObjectMeta `json:"metadata,omitempty"` // Spec defines the pods that will be created from this template - Spec PodTemplateSpec `json:"spec,omitempty" yaml:"spec,omitempty"` + Spec PodTemplateSpec `json:"spec,omitempty"` } // PodTemplateList is a list of PodTemplates. type PodTemplateList struct { - TypeMeta `json:",inline" yaml:",inline"` - ListMeta `json:"metadata,omitempty" yaml:"metadata,omitempty"` + TypeMeta `json:",inline"` + ListMeta `json:"metadata,omitempty"` - Items []PodTemplate `json:"items" yaml:"items"` + Items []PodTemplate `json:"items"` } // ReplicationControllerSpec is the specification of a replication controller. @@ -528,57 +528,57 @@ type PodTemplateList struct { // a TemplateRef or a Template set. type ReplicationControllerSpec struct { // Replicas is the number of desired replicas. - Replicas int `json:"replicas" yaml:"replicas"` + Replicas int `json:"replicas"` // Selector is a label query over pods that should match the Replicas count. - Selector map[string]string `json:"selector" yaml:"selector"` + Selector map[string]string `json:"selector"` // TemplateRef is a reference to an object that describes the pod that will be created if // insufficient replicas are detected. This reference is ignored if a Template is set. // Must be set before converting to a v1beta3 API object - TemplateRef *ObjectReference `json:"templateRef,omitempty" yaml:"templateRef,omitempty"` + TemplateRef *ObjectReference `json:"templateRef,omitempty"` // Template is the object that describes the pod that will be created if // insufficient replicas are detected. Internally, this takes precedence over a // TemplateRef. // Must be set before converting to a v1beta1 or v1beta2 API object. - Template *PodTemplateSpec `json:"template,omitempty" yaml:"template,omitempty"` + Template *PodTemplateSpec `json:"template,omitempty"` } // ReplicationControllerStatus represents the current status of a replication // controller. type ReplicationControllerStatus struct { // Replicas is the number of actual replicas. - Replicas int `json:"replicas" yaml:"replicas"` + Replicas int `json:"replicas"` } // ReplicationController represents the configuration of a replication controller. type ReplicationController struct { - TypeMeta `json:",inline" yaml:",inline"` - ObjectMeta `json:"metadata,omitempty" yaml:"metadata,omitempty"` + TypeMeta `json:",inline"` + ObjectMeta `json:"metadata,omitempty"` // Spec defines the desired behavior of this replication controller. - Spec ReplicationControllerSpec `json:"spec,omitempty" yaml:"spec,omitempty"` + Spec ReplicationControllerSpec `json:"spec,omitempty"` // Status is the current status of this replication controller. This data may be // out of date by some window of time. - Status ReplicationControllerStatus `json:"status,omitempty" yaml:"status,omitempty"` + Status ReplicationControllerStatus `json:"status,omitempty"` } // ReplicationControllerList is a collection of replication controllers. type ReplicationControllerList struct { - TypeMeta `json:",inline" yaml:",inline"` - ListMeta `json:"metadata,omitempty" yaml:"metadata,omitempty"` + TypeMeta `json:",inline"` + ListMeta `json:"metadata,omitempty"` - Items []ReplicationController `json:"items" yaml:"items"` + Items []ReplicationController `json:"items"` } // ServiceList holds a list of services. type ServiceList struct { - TypeMeta `json:",inline" yaml:",inline"` - ListMeta `json:"metadata,omitempty" yaml:"metadata,omitempty"` + TypeMeta `json:",inline"` + ListMeta `json:"metadata,omitempty"` - Items []Service `json:"items" yaml:"items"` + Items []Service `json:"items"` } // ServiceStatus represents the current status of a service @@ -588,74 +588,74 @@ type ServiceStatus struct{} type ServiceSpec struct { // Port is the TCP or UDP port that will be made available to each pod for connecting to the pods // proxied by this service. - Port int `json:"port" yaml:"port"` + Port int `json:"port"` // Optional: Supports "TCP" and "UDP". Defaults to "TCP". - Protocol Protocol `json:"protocol,omitempty" yaml:"protocol,omitempty"` + Protocol Protocol `json:"protocol,omitempty"` // This service will route traffic to pods having labels matching this selector. - Selector map[string]string `json:"selector,omitempty" yaml:"selector,omitempty"` + Selector map[string]string `json:"selector,omitempty"` // 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 // not be changed by updates. - PortalIP string `json:"portalIP,omitempty" yaml:"portalIP,omitempty"` + PortalIP string `json:"portalIP,omitempty"` // ProxyPort is assigned by the master. If 0, the proxy will choose an ephemeral port. // TODO: This is awkward - if we had a BoundService, it would be better factored. - ProxyPort int `json:"proxyPort,omitempty" yaml:"proxyPort,omitempty"` + ProxyPort int `json:"proxyPort,omitempty"` // CreateExternalLoadBalancer indicates whether a load balancer should be created for this service. - CreateExternalLoadBalancer bool `json:"createExternalLoadBalancer,omitempty" yaml:"createExternalLoadBalancer,omitempty"` + CreateExternalLoadBalancer bool `json:"createExternalLoadBalancer,omitempty"` // PublicIPs are used by external load balancers. - PublicIPs []string `json:"publicIPs,omitempty" yaml:"publicIPs,omitempty"` + PublicIPs []string `json:"publicIPs,omitempty"` // ContainerPort is the name of the port on the container to direct traffic to. // Optional, if unspecified use the first port on the container. - ContainerPort util.IntOrString `json:"containerPort,omitempty" yaml:"containerPort,omitempty"` + ContainerPort util.IntOrString `json:"containerPort,omitempty"` } // Service is a named abstraction of software service (for example, mysql) consisting of local port // (for example 3306) that the proxy listens on, and the selector that determines which pods // will answer requests sent through the proxy. type Service struct { - TypeMeta `json:",inline" yaml:",inline"` - ObjectMeta `json:"metadata,omitempty" yaml:"metadata,omitempty"` + TypeMeta `json:",inline"` + ObjectMeta `json:"metadata,omitempty"` // Spec defines the behavior of a service. - Spec ServiceSpec `json:"spec,omitempty" yaml:"spec,omitempty"` + Spec ServiceSpec `json:"spec,omitempty"` // Status represents the current status of a service. - Status ServiceStatus `json:"status,omitempty" yaml:"status,omitempty"` + Status ServiceStatus `json:"status,omitempty"` } // Endpoints is a collection of endpoints that implement the actual service, for example: // Name: "mysql", Endpoints: ["10.10.1.1:1909", "10.10.2.2:8834"] type Endpoints struct { - TypeMeta `json:",inline" yaml:",inline"` - ObjectMeta `json:"metadata,omitempty" yaml:"metadata,omitempty"` + TypeMeta `json:",inline"` + ObjectMeta `json:"metadata,omitempty"` - Endpoints []string `json:"endpoints,omitempty" yaml:"endpoints,omitempty"` + Endpoints []string `json:"endpoints,omitempty"` } // EndpointsList is a list of endpoints. type EndpointsList struct { - TypeMeta `json:",inline" yaml:",inline"` - ListMeta `json:"metadata,omitempty" yaml:"metadata,omitempty"` + TypeMeta `json:",inline"` + ListMeta `json:"metadata,omitempty"` - Items []Endpoints `json:"items" yaml:"items"` + Items []Endpoints `json:"items"` } // NodeSpec describes the attributes that a node is created with. type NodeSpec struct { // Capacity represents the available resources of a node - Capacity ResourceList `json:"capacity,omitempty" yaml:"capacity,omitempty"` + Capacity ResourceList `json:"capacity,omitempty"` } // NodeStatus is information about the current status of a node. type NodeStatus struct { // Queried from cloud provider, if available. - HostIP string `json:"hostIP,omitempty" yaml:"hostIP,omitempty"` + HostIP string `json:"hostIP,omitempty"` } // NodeResources is an object for conveying resource information about a node. @@ -663,7 +663,7 @@ type NodeStatus struct { // TODO: Use ResourceList instead? type NodeResources struct { // Capacity represents the available resources of a node - Capacity ResourceList `json:"capacity,omitempty" yaml:"capacity,omitempty"` + Capacity ResourceList `json:"capacity,omitempty"` } type ResourceName string @@ -674,56 +674,56 @@ type ResourceList map[ResourceName]util.IntOrString // The name of the minion according to etcd is in ObjectMeta.Name. // TODO: Rename to Node type Minion struct { - TypeMeta `json:",inline" yaml:",inline"` - ObjectMeta `json:"metadata,omitempty" yaml:"metadata,omitempty"` + TypeMeta `json:",inline"` + ObjectMeta `json:"metadata,omitempty"` // Spec defines the behavior of a node. - Spec NodeSpec `json:"spec,omitempty" yaml:"spec,omitempty"` + Spec NodeSpec `json:"spec,omitempty"` // Status describes the current status of a Node - Status NodeStatus `json:"status,omitempty" yaml:"status,omitempty"` + Status NodeStatus `json:"status,omitempty"` } // MinionList is a list of minions. type MinionList struct { - TypeMeta `json:",inline" yaml:",inline"` - ListMeta `json:"metadata,omitempty" yaml:"metadata,omitempty"` + TypeMeta `json:",inline"` + ListMeta `json:"metadata,omitempty"` - Items []Minion `json:"items" yaml:"items"` + Items []Minion `json:"items"` } // Binding is written by a scheduler to cause a pod to be bound to a host. type Binding struct { - TypeMeta `json:",inline" yaml:",inline"` - ObjectMeta `json:"metadata,omitempty" yaml:"metadata,omitempty"` + TypeMeta `json:",inline"` + ObjectMeta `json:"metadata,omitempty"` - PodID string `json:"podID" yaml:"podID"` - Host string `json:"host" yaml:"host"` + PodID string `json:"podID"` + Host string `json:"host"` } // Status is a return value for calls that don't return other objects. // TODO: this could go in apiserver, but I'm including it here so clients needn't // import both. type Status struct { - TypeMeta `json:",inline" yaml:",inline"` - ObjectMeta `json:"metadata,omitempty" yaml:"metadata,omitempty"` + TypeMeta `json:",inline"` + ObjectMeta `json:"metadata,omitempty"` // One of: "Success", "Failure", "Working" (for operations not yet completed) - Status string `json:"status,omitempty" yaml:"status,omitempty"` + Status string `json:"status,omitempty"` // A human-readable description of the status of this operation. - Message string `json:"message,omitempty" yaml:"message,omitempty"` + Message string `json:"message,omitempty"` // A machine-readable description of why this operation is in the // "Failure" or "Working" status. If this value is empty there // is no information available. A Reason clarifies an HTTP status // code but does not override it. - Reason StatusReason `json:"reason,omitempty" yaml:"reason,omitempty"` + Reason StatusReason `json:"reason,omitempty"` // Extended data associated with the reason. Each reason may define its // own extended details. This field is optional and the data returned // is not guaranteed to conform to any schema except that defined by // the reason type. - Details *StatusDetails `json:"details,omitempty" yaml:"details,omitempty"` + Details *StatusDetails `json:"details,omitempty"` // Suggested HTTP return code for this status, 0 if not set. - Code int `json:"code,omitempty" yaml:"code,omitempty"` + Code int `json:"code,omitempty"` } // StatusDetails is a set of additional properties that MAY be set by the @@ -736,13 +736,13 @@ type StatusDetails struct { // The ID attribute of the resource associated with the status StatusReason // (when there is a single ID which can be described). // TODO: replace with Name with v1beta3 - ID string `json:"id,omitempty" yaml:"id,omitempty"` + ID string `json:"id,omitempty"` // The kind attribute of the resource associated with the status StatusReason. // On some operations may differ from the requested resource Kind. - Kind string `json:"kind,omitempty" yaml:"kind,omitempty"` + Kind string `json:"kind,omitempty"` // The Causes array includes more details associated with the StatusReason // failure. Not all StatusReasons may provide detailed causes. - Causes []StatusCause `json:"causes,omitempty" yaml:"causes,omitempty"` + Causes []StatusCause `json:"causes,omitempty"` } // Values of Status.Status @@ -832,10 +832,10 @@ const ( type StatusCause struct { // A machine-readable description of the cause of the error. If this value is // empty there is no information available. - Type CauseType `json:"reason,omitempty" yaml:"reason,omitempty"` + Type CauseType `json:"reason,omitempty"` // A human-readable description of the cause of the error. This field may be // presented as-is to a reader. - Message string `json:"message,omitempty" yaml:"message,omitempty"` + Message string `json:"message,omitempty"` // The field of the resource that has caused this error, as named by its JSON // serialization. May include dot and postfix notation for nested attributes. // Arrays are zero-indexed. Fields may appear more than once in an array of @@ -845,7 +845,7 @@ type StatusCause struct { // Examples: // "name" - the field "name" on the current resource // "items[0].name" - the field "name" on the first array entry in "items" - Field string `json:"field,omitempty" yaml:"field,omitempty"` + Field string `json:"field,omitempty"` } // CauseType is a machine readable value providing more detail about what @@ -873,26 +873,26 @@ const ( // ServerOp is an operation delivered to API clients. type ServerOp struct { - TypeMeta `yaml:",inline" json:",inline"` - ObjectMeta `json:"metadata,omitempty" yaml:"metadata,omitempty"` + TypeMeta `json:",inline"` + ObjectMeta `json:"metadata,omitempty"` } // ServerOpList is a list of operations, as delivered to API clients. type ServerOpList struct { - TypeMeta `yaml:",inline" json:",inline"` - ListMeta `json:"metadata,omitempty" yaml:"metadata,omitempty"` + TypeMeta `json:",inline"` + ListMeta `json:"metadata,omitempty"` - Items []ServerOp `yaml:"items" json:"items"` + Items []ServerOp `json:"items"` } // ObjectReference contains enough information to let you inspect or modify the referred object. type ObjectReference struct { - Kind string `json:"kind,omitempty" yaml:"kind,omitempty"` - Namespace string `json:"namespace,omitempty" yaml:"namespace,omitempty"` - Name string `json:"name,omitempty" yaml:"name,omitempty"` - UID string `json:"uid,omitempty" yaml:"uid,omitempty"` - APIVersion string `json:"apiVersion,omitempty" yaml:"apiVersion,omitempty"` - ResourceVersion string `json:"resourceVersion,omitempty" yaml:"resourceVersion,omitempty"` + Kind string `json:"kind,omitempty"` + Namespace string `json:"namespace,omitempty"` + Name string `json:"name,omitempty"` + UID string `json:"uid,omitempty"` + APIVersion string `json:"apiVersion,omitempty"` + ResourceVersion string `json:"resourceVersion,omitempty"` // Optional. If referring to a piece of an object instead of an entire object, this string // should contain a valid field access statement. For example, @@ -901,17 +901,17 @@ type ObjectReference struct { // both go and JavaScript. This is syntax is chosen only to have some well-defined way of // referencing a part of an object. // TODO: this design is not final and this field is subject to change in the future. - FieldPath string `json:"fieldPath,omitempty" yaml:"fieldPath,omitempty"` + FieldPath string `json:"fieldPath,omitempty"` } // Event is a report of an event somewhere in the cluster. // TODO: Decide whether to store these separately or with the object they apply to. type Event struct { - TypeMeta `yaml:",inline" json:",inline"` - ObjectMeta `json:"metadata,omitempty" yaml:"metadata,omitempty"` + TypeMeta `json:",inline"` + ObjectMeta `json:"metadata,omitempty"` // Required. The object that this event is about. - InvolvedObject ObjectReference `json:"involvedObject,omitempty" yaml:"involvedObject,omitempty"` + InvolvedObject ObjectReference `json:"involvedObject,omitempty"` // Should be a short, machine understandable string that describes the current status // of the referred object. This should not give the reason for being in this state. @@ -920,32 +920,32 @@ type Event struct { // always be used for the same status. // TODO: define a way of making sure these are consistent and don't collide. // TODO: provide exact specification for format. - Status string `json:"status,omitempty" yaml:"status,omitempty"` + Status string `json:"status,omitempty"` // Optional; this should be a short, machine understandable string that gives the reason // for the transition into the object's current status. For example, if ObjectStatus is // "cantStart", StatusReason might be "imageNotFound". // TODO: provide exact specification for format. - Reason string `json:"reason,omitempty" yaml:"reason,omitempty"` + Reason string `json:"reason,omitempty"` // Optional. A human-readable description of the status of this operation. // TODO: decide on maximum length. - Message string `json:"message,omitempty" yaml:"message,omitempty"` + Message string `json:"message,omitempty"` // Optional. The component reporting this event. Should be a short machine understandable string. // TODO: provide exact specification for format. - Source string `json:"source,omitempty" yaml:"source,omitempty"` + Source string `json:"source,omitempty"` // The time at which the client recorded the event. (Time of server receipt is in TypeMeta.) - Timestamp util.Time `json:"timestamp,omitempty" yaml:"timestamp,omitempty"` + Timestamp util.Time `json:"timestamp,omitempty"` } // EventList is a list of events. type EventList struct { - TypeMeta `yaml:",inline" json:",inline"` - ListMeta `json:"metadata,omitempty" yaml:"metadata,omitempty"` + TypeMeta `json:",inline"` + ListMeta `json:"metadata,omitempty"` - Items []Event `yaml:"items" json:"items"` + Items []Event `json:"items"` } // ContainerManifest corresponds to the Container Manifest format, documented at: @@ -954,48 +954,48 @@ type EventList struct { // DEPRECATED: Replaced with BoundPod type ContainerManifest struct { // Required: This must be a supported version string, such as "v1beta1". - Version string `yaml:"version" json:"version"` + Version string `json:"version"` // Required: This must be a DNS_SUBDOMAIN. // TODO: ID on Manifest is deprecated and will be removed in the future. - ID string `yaml:"id" json:"id"` + ID string `json:"id"` // TODO: UUID on Manifest is deprecated in the future once we are done // with the API refactoring. It is required for now to determine the instance // of a Pod. - UUID string `yaml:"uuid,omitempty" json:"uuid,omitempty"` - Volumes []Volume `yaml:"volumes" json:"volumes"` - Containers []Container `yaml:"containers" json:"containers"` - RestartPolicy RestartPolicy `json:"restartPolicy,omitempty" yaml:"restartPolicy,omitempty"` + UUID string `json:"uuid,omitempty"` + Volumes []Volume `json:"volumes"` + Containers []Container `json:"containers"` + RestartPolicy RestartPolicy `json:"restartPolicy,omitempty"` } // ContainerManifestList is used to communicate container manifests to kubelet. // DEPRECATED: Replaced with BoundPods type ContainerManifestList struct { - TypeMeta `json:",inline" yaml:",inline"` - ListMeta `json:"metadata,omitempty" yaml:"metadata,omitempty"` + TypeMeta `json:",inline"` + ListMeta `json:"metadata,omitempty"` - Items []ContainerManifest `json:"items" yaml:"items,omitempty"` + Items []ContainerManifest `json:"items"` } // BoundPod is a collection of containers that should be run on a host. A BoundPod // defines how a Pod may change after a Binding is created. A Pod is a request to // execute a pod, whereas a BoundPod is the specification that would be run on a server. type BoundPod struct { - TypeMeta `json:",inline" yaml:",inline"` - ObjectMeta `json:"metadata,omitempty" yaml:"metadata,omitempty"` + TypeMeta `json:",inline"` + ObjectMeta `json:"metadata,omitempty"` // Spec defines the behavior of a pod. - Spec PodSpec `json:"spec,omitempty" yaml:"spec,omitempty"` + Spec PodSpec `json:"spec,omitempty"` } // BoundPods is a list of Pods bound to a common server. The resource version of // the pod list is guaranteed to only change when the list of bound pods changes. type BoundPods struct { - TypeMeta `json:",inline" yaml:",inline"` - ObjectMeta `json:"metadata,omitempty" yaml:"metadata,omitempty"` + TypeMeta `json:",inline"` + ObjectMeta `json:"metadata,omitempty"` // Host is the name of a node that these pods were bound to. - Host string `json:"host" yaml:"host"` + Host string `json:"host"` // Items is the list of all pods bound to a given host. - Items []BoundPod `json:"items" yaml:"items"` + Items []BoundPod `json:"items"` } diff --git a/pkg/api/unversioned.go b/pkg/api/unversioned.go index 4f405580b13..302c0eaa1a8 100644 --- a/pkg/api/unversioned.go +++ b/pkg/api/unversioned.go @@ -22,5 +22,5 @@ package api // version negotiation. APIVersions isn't just an unnamed array of // strings in order to allow for future evolution, though unversioned type APIVersions struct { - Versions []string `json:"versions" yaml:"versions"` + Versions []string `json:"versions"` } diff --git a/pkg/api/v1beta1/types.go b/pkg/api/v1beta1/types.go index 0d7a3a69fe2..fad4907f123 100644 --- a/pkg/api/v1beta1/types.go +++ b/pkg/api/v1beta1/types.go @@ -50,34 +50,34 @@ import ( // This is used as the representation of Kubernetes workloads. type ContainerManifest struct { // Required: This must be a supported version string, such as "v1beta1". - Version string `yaml:"version" json:"version" description:"manifest version; must be v1beta1"` + Version string `json:"version" description:"manifest version; must be v1beta1"` // Required: This must be a DNS_SUBDOMAIN. // TODO: ID on Manifest is deprecated and will be removed in the future. - ID string `yaml:"id" json:"id" description:"manifest name; must be a DNS_SUBDOMAIN"` + ID string `json:"id" description:"manifest name; must be a DNS_SUBDOMAIN"` // TODO: UUID on Manifext is deprecated in the future once we are done // with the API refactory. It is required for now to determine the instance // of a Pod. - UUID string `yaml:"uuid,omitempty" json:"uuid,omitempty" description:"manifest UUID"` - Volumes []Volume `yaml:"volumes" json:"volumes" description:"list of volumes that can be mounted by containers belonging to the pod"` - Containers []Container `yaml:"containers" json:"containers" description:"list of containers belonging to the pod"` - RestartPolicy RestartPolicy `json:"restartPolicy,omitempty" yaml:"restartPolicy,omitempty" description:"restart policy for all containers within the pod; one of RestartPolicyAlways, RestartPolicyOnFailure, RestartPolicyNever"` + UUID string `json:"uuid,omitempty" description:"manifest UUID"` + Volumes []Volume `json:"volumes" description:"list of volumes that can be mounted by containers belonging to the pod"` + Containers []Container `json:"containers" description:"list of containers belonging to the pod"` + RestartPolicy RestartPolicy `json:"restartPolicy,omitempty" description:"restart policy for all containers within the pod; one of RestartPolicyAlways, RestartPolicyOnFailure, RestartPolicyNever"` } // ContainerManifestList is used to communicate container manifests to kubelet. type ContainerManifestList struct { - TypeMeta `json:",inline" yaml:",inline"` - Items []ContainerManifest `json:"items" yaml:"items" description:"list of pod container manifests"` + TypeMeta `json:",inline"` + Items []ContainerManifest `json:"items" description:"list of pod container manifests"` } // Volume represents a named volume in a pod that may be accessed by any containers in the pod. type Volume struct { // Required: This must be a DNS_LABEL. Each volume in a pod must have // a unique name. - Name string `yaml:"name" json:"name" description:"volume name; must be a DNS_LABEL and unique within the pod"` + Name string `json:"name" description:"volume name; must be a DNS_LABEL and unique within the pod"` // 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. - Source *VolumeSource `yaml:"source" json:"source" description:"location and type of volume to mount; at most one of HostDir, EmptyDir, GCEPersistentDisk, or GitRepo; default is EmptyDir"` + Source *VolumeSource `json:"source" description:"location and type of volume to mount; at most one of HostDir, EmptyDir, GCEPersistentDisk, or GitRepo; default is EmptyDir"` } // VolumeSource represents the source location of a valume to mount. @@ -88,19 +88,19 @@ type VolumeSource struct { // things that are allowed 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. - HostDir *HostDir `yaml:"hostDir" json:"hostDir" description:"pre-existing host directory; generally for privileged system daemons or other agents tied to the host"` + HostDir *HostDir `json:"hostDir" description:"pre-existing host 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 *EmptyDir `yaml:"emptyDir" json:"emptyDir" description:"temporary directory that shares a pod's lifetime"` + EmptyDir *EmptyDir `json:"emptyDir" 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 *GCEPersistentDisk `yaml:"persistentDisk" json:"persistentDisk" description:"GCE disk resource attached to the host machine on demand"` + GCEPersistentDisk *GCEPersistentDisk `json:"persistentDisk" description:"GCE disk resource attached to the host machine on demand"` // GitRepo represents a git repository at a particular revision. - GitRepo *GitRepo `json:"gitRepo" yaml:"gitRepo" description:"git repository at a particular revision"` + GitRepo *GitRepo `json:"gitRepo" description:"git repository at a particular revision"` } // HostDir represents bare host directory volume. type HostDir struct { - Path string `yaml:"path" json:"path" description:"path of the directory on the host"` + Path string `json:"path" description:"path of the directory on the host"` } type EmptyDir struct{} @@ -122,59 +122,59 @@ const ( // A GCE PD can only be mounted as read/write once. type GCEPersistentDisk struct { // Unique name of the PD resource. Used to identify the disk in GCE - PDName string `yaml:"pdName" json:"pdName" description:"unique name of the PD resource in GCE"` + PDName string `json:"pdName" description:"unique name of the PD resource in GCE"` // 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 // TODO: why omitempty if required? - FSType string `yaml:"fsType,omitempty" json:"fsType,omitempty" description:"file system type to mount, such as ext4, xfs, ntfs"` + FSType string `json:"fsType,omitempty" 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. - Partition int `yaml:"partition,omitempty" json:"partition,omitempty" description:"partition on the disk to mount (e.g., '1' for /dev/sda1); if omitted the plain device name (e.g., /dev/sda) will be mounted"` + Partition int `json:"partition,omitempty" description:"partition on the disk to mount (e.g., '1' for /dev/sda1); if omitted the plain device name (e.g., /dev/sda) will be mounted"` // Optional: Defaults to false (read/write). ReadOnly here will force // the ReadOnly setting in VolumeMounts. - ReadOnly bool `yaml:"readOnly,omitempty" json:"readOnly,omitempty" description:"read-only if true, read-write otherwise (false or unspecified)"` + ReadOnly bool `json:"readOnly,omitempty" description:"read-only if true, read-write otherwise (false or unspecified)"` } // GitRepo represents a volume that is pulled from git when the pod is created. type GitRepo struct { // Repository URL - Repository string `yaml:"repository" json:"repository" description:"repository URL"` + Repository string `json:"repository" description:"repository URL"` // Commit hash, this is optional - Revision string `yaml:"revision" json:"revision" description:"commit hash for the specified revision"` + Revision string `json:"revision" description:"commit hash for the specified revision"` } // Port represents a network port in a single container type Port struct { // Optional: If specified, this must be a DNS_LABEL. Each named port // in a pod must have a unique name. - Name string `yaml:"name,omitempty" json:"name,omitempty" description:"name for the port that can be referred to by services; must be a DNS_LABEL and unique without the pod"` + Name string `json:"name,omitempty" description:"name for the port that can be referred to by services; must be a DNS_LABEL and unique without the pod"` // Optional: If specified, this must be a valid port number, 0 < x < 65536. - HostPort int `yaml:"hostPort,omitempty" json:"hostPort,omitempty" description:"number of port to expose on the host; most containers do not need this"` + HostPort int `json:"hostPort,omitempty" description:"number of port to expose on the host; most containers do not need this"` // Required: This must be a valid port number, 0 < x < 65536. - ContainerPort int `yaml:"containerPort" json:"containerPort" description:"number of port to expose on the pod's IP address"` + ContainerPort int `json:"containerPort" description:"number of port to expose on the pod's IP address"` // Optional: Defaults to "TCP". - Protocol Protocol `yaml:"protocol,omitempty" json:"protocol,omitempty" description:"protocol for port; must be UDP or TCP; TCP if unspecified"` + Protocol Protocol `json:"protocol,omitempty" description:"protocol for port; must be UDP or TCP; TCP if unspecified"` // Optional: What host IP to bind the external port to. - HostIP string `yaml:"hostIP,omitempty" json:"hostIP,omitempty" description:"host IP to bind the port to"` + HostIP string `json:"hostIP,omitempty" description:"host IP to bind the port to"` } // VolumeMount describes a mounting of a Volume within a container. type VolumeMount struct { // Required: This must match the Name of a Volume [above]. - Name string `yaml:"name" json:"name" description:"name of the volume to mount"` + Name string `json:"name" description:"name of the volume to mount"` // Optional: Defaults to false (read-write). - ReadOnly bool `yaml:"readOnly,omitempty" json:"readOnly,omitempty" description:"mounted read-only if true, read-write otherwise (false or unspecified)"` + ReadOnly bool `json:"readOnly,omitempty" description:"mounted read-only if true, read-write otherwise (false or unspecified)"` // Required. // Exactly one of the following must be set. If both are set, prefer MountPath. // DEPRECATED: Path will be removed in a future version of the API. - MountPath string `yaml:"mountPath,omitempty" json:"mountPath,omitempty" description:"path within the container at which the volume should be mounted; overrides path"` - Path string `yaml:"path,omitempty" json:"path,omitempty" description:"path within the container at which the volume should be mounted; deprecated"` + MountPath string `json:"mountPath,omitempty" description:"path within the container at which the volume should be mounted; overrides path"` + Path string `json:"path,omitempty" description:"path within the container at which the volume should be mounted; deprecated"` // One of: "LOCAL" (local volume) or "HOST" (external mount from the host). Default: LOCAL. // DEPRECATED: MountType will be removed in a future version of the API. - MountType string `yaml:"mountType,omitempty" json:"mountType,omitempty" description:"LOCAL or HOST; defaults to LOCAL; deprecated"` + MountType string `json:"mountType,omitempty" description:"LOCAL or HOST; defaults to LOCAL; deprecated"` } // EnvVar represents an environment variable present in a Container. @@ -182,26 +182,26 @@ type EnvVar struct { // Required: This must be a C_IDENTIFIER. // Exactly one of the following must be set. If both are set, prefer Name. // DEPRECATED: EnvVar.Key will be removed in a future version of the API. - Name string `yaml:"name" json:"name" description:"name of the environment variable; must be a C_IDENTIFIER"` - Key string `yaml:"key,omitempty" json:"key,omitempty" description:"name of the environment variable; must be a C_IDENTIFIER; deprecated - use name instead"` + Name string `json:"name" description:"name of the environment variable; must be a C_IDENTIFIER"` + Key string `json:"key,omitempty" description:"name of the environment variable; must be a C_IDENTIFIER; deprecated - use name instead"` // Optional: defaults to "". - Value string `yaml:"value,omitempty" json:"value,omitempty" description:"value of the environment variable; defaults to empty string"` + Value string `json:"value,omitempty" description:"value of the environment variable; defaults to empty string"` } // HTTPGetAction describes an action based on HTTP Get requests. type HTTPGetAction struct { // Optional: Path to access on the HTTP server. - Path string `yaml:"path,omitempty" json:"path,omitempty" description:"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 `yaml:"port,omitempty" json:"port,omitempty" description:"number or name 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"` // Optional: Host name to connect to, defaults to the pod IP. - Host string `yaml:"host,omitempty" json:"host,omitempty" description:"hostname to connect to; defaults to pod IP"` + Host string `json:"host,omitempty" description:"hostname to connect to; defaults to pod IP"` } // TCPSocketAction describes an action based on opening a socket type TCPSocketAction struct { // Required: Port to connect to. - Port util.IntOrString `yaml:"port,omitempty" json:"port,omitempty" description:"number of name of the port to access on the container"` + Port util.IntOrString `json:"port,omitempty" description:"number of name of the port to access on the container"` } // ExecAction describes a "run in container" action. @@ -211,20 +211,20 @@ type ExecAction struct { // not run inside a shell, so traditional shell instructions ('|', etc) won't work. To use // a shell, you need to explicitly call out to that shell. // A return code of zero is treated as 'Healthy', non-zero is 'Unhealthy' - Command []string `yaml:"command,omitempty" json:"command,omitempty" description:"command line to execute inside the container; working directory for the command is root ('/') in the container's file system; the command is exec'd, not run inside a shell; exit status of 0 is treated as live/healthy and non-zero is unhealthy"` + Command []string `json:"command,omitempty" description:"command line to execute inside the container; working directory for the command is root ('/') in the container's file system; the command is exec'd, not run inside a shell; exit status of 0 is treated as live/healthy and non-zero is unhealthy"` } // LivenessProbe describes a liveness probe to be examined to the container. // TODO: pass structured data to the actions, and document that data here. type LivenessProbe struct { // HTTPGetProbe parameters, required if Type == 'http' - HTTPGet *HTTPGetAction `yaml:"httpGet,omitempty" json:"httpGet,omitempty" description:"parameters for HTTP-based liveness probe"` + HTTPGet *HTTPGetAction `json:"httpGet,omitempty" description:"parameters for HTTP-based liveness probe"` // TCPSocketProbe parameter, required if Type == 'tcp' - TCPSocket *TCPSocketAction `yaml:"tcpSocket,omitempty" json:"tcpSocket,omitempty" description:"parameters for TCP-based liveness probe"` + TCPSocket *TCPSocketAction `json:"tcpSocket,omitempty" description:"parameters for TCP-based liveness probe"` // ExecProbe parameter, required if Type == 'exec' - Exec *ExecAction `yaml:"exec,omitempty" json:"exec,omitempty" description:"parameters for exec-based liveness probe"` + Exec *ExecAction `json:"exec,omitempty" description:"parameters for exec-based liveness probe"` // Length of time before health checking is activated. In seconds. - InitialDelaySeconds int64 `yaml:"initialDelaySeconds,omitempty" json:"initialDelaySeconds,omitempty" description:"number of seconds after the container has started before liveness probes are initiated"` + InitialDelaySeconds int64 `json:"initialDelaySeconds,omitempty" description:"number of seconds after the container has started before liveness probes are initiated"` } // PullPolicy describes a policy for if/when to pull a container image @@ -243,28 +243,28 @@ const ( type Container struct { // Required: This must be a DNS_LABEL. Each container in a pod must // have a unique name. - Name string `yaml:"name" json:"name" description:"name of the container; must be a DNS_LABEL and unique within the pod"` + Name string `json:"name" description:"name of the container; must be a DNS_LABEL and unique within the pod"` // Required. - Image string `yaml:"image" json:"image" description:"Docker image name"` + Image string `json:"image" description:"Docker image name"` // Optional: Defaults to whatever is defined in the image. - Command []string `yaml:"command,omitempty" json:"command,omitempty" description:"command argv array; not executed within a shell; defaults to entrypoint or command in the image"` + Command []string `json:"command,omitempty" description:"command argv array; not executed within a shell; defaults to entrypoint or command in the image"` // Optional: Defaults to Docker's default. - WorkingDir string `yaml:"workingDir,omitempty" json:"workingDir,omitempty" description:"container's working directory; defaults to image's default"` - Ports []Port `yaml:"ports,omitempty" json:"ports,omitempty" description:"list of ports to expose from the container"` - Env []EnvVar `yaml:"env,omitempty" json:"env,omitempty" description:"list of environment variables to set in the container"` + WorkingDir string `json:"workingDir,omitempty" description:"container's working directory; defaults to image's default"` + Ports []Port `json:"ports,omitempty" description:"list of ports to expose from the container"` + Env []EnvVar `json:"env,omitempty" description:"list of environment variables to set in the container"` // Optional: Defaults to unlimited. - Memory int `yaml:"memory,omitempty" json:"memory,omitempty" description:"memory limit in bytes; defaults to unlimited"` + Memory int `json:"memory,omitempty" description:"memory limit in bytes; defaults to unlimited"` // Optional: Defaults to unlimited. - CPU int `yaml:"cpu,omitempty" json:"cpu,omitempty" description:"CPU share in thousandths of a core"` - VolumeMounts []VolumeMount `yaml:"volumeMounts,omitempty" json:"volumeMounts,omitempty" description:"pod volumes to mount into the container's filesystem"` - LivenessProbe *LivenessProbe `yaml:"livenessProbe,omitempty" json:"livenessProbe,omitempty" description:"periodic probe of container liveness; container will be restarted if the probe fails"` - Lifecycle *Lifecycle `yaml:"lifecycle,omitempty" json:"lifecycle,omitempty" description:"actions that the management system should take in response to container lifecycle events"` + CPU int `json:"cpu,omitempty" description:"CPU share in thousandths of a core"` + VolumeMounts []VolumeMount `json:"volumeMounts,omitempty" description:"pod volumes to mount into the container's filesystem"` + LivenessProbe *LivenessProbe `json:"livenessProbe,omitempty" description:"periodic probe of container liveness; container will be restarted if the probe fails"` + Lifecycle *Lifecycle `json:"lifecycle,omitempty" description:"actions that the management system should take in response to container lifecycle events"` // Optional: Defaults to /dev/termination-log - TerminationMessagePath string `yaml:"terminationMessagePath,omitempty" json:"terminationMessagePath,omitempty" description:"path at which the file to which the container's termination message will be written is mounted into the container's filesystem; message written is intended to be brief final status, such as an assertion failure message; defaults to /dev/termination-log"` + TerminationMessagePath string `json:"terminationMessagePath,omitempty" description:"path at which the file to which the container's termination message will be written is mounted into the container's filesystem; message written is intended to be brief final status, such as an assertion failure message; defaults to /dev/termination-log"` // Optional: Default to false. - Privileged bool `json:"privileged,omitempty" yaml:"privileged,omitempty" description:"whether or not the container is granted privileged status; defaults to false"` + Privileged bool `json:"privileged,omitempty" description:"whether or not the container is granted privileged status; defaults to false"` // Optional: Policy for pulling images for this container - ImagePullPolicy PullPolicy `json:"imagePullPolicy" yaml:"imagePullPolicy" description:"image pull policy; one of PullAlways, PullNever, PullIfNotPresent; defaults to PullAlways if :latest tag is specified, or PullIfNotPresent otherwise"` + ImagePullPolicy PullPolicy `json:"imagePullPolicy" description:"image pull policy; one of PullAlways, PullNever, PullIfNotPresent; defaults to PullAlways if :latest tag is specified, or PullIfNotPresent otherwise"` } // Handler defines a specific action that should be taken @@ -273,9 +273,9 @@ type Container struct { type Handler struct { // One and only one of the following should be specified. // Exec specifies the action to take. - Exec *ExecAction `yaml:"exec,omitempty" json:"exec,omitempty" description:"exec-based hook handler"` + Exec *ExecAction `json:"exec,omitempty" description:"exec-based hook handler"` // HTTPGet specifies the http request to perform. - HTTPGet *HTTPGetAction `yaml:"httpGet,omitempty" json:"httpGet,omitempty" description:"HTTP-based hook handler"` + HTTPGet *HTTPGetAction `json:"httpGet,omitempty" description:"HTTP-based hook handler"` } // Lifecycle describes actions that the management system should take in response to container lifecycle @@ -284,29 +284,29 @@ type Handler struct { type Lifecycle struct { // PostStart is called immediately after a container is created. If the handler fails, the container // is terminated and restarted. - PostStart *Handler `yaml:"postStart,omitempty" json:"postStart,omitempty" description:"called immediately after a container is started; if the handler fails, the container is terminated and restarted according to its restart policy; other management of the container blocks until the hook completes"` + PostStart *Handler `json:"postStart,omitempty" description:"called immediately after a container is started; if the handler fails, the container is terminated and restarted according to its restart policy; other management of the container blocks until the hook completes"` // PreStop is called immediately before a container is terminated. The reason for termination is // passed to the handler. Regardless of the outcome of the handler, the container is eventually terminated. - PreStop *Handler `yaml:"preStop,omitempty" json:"preStop,omitempty" description:"called before a container is terminated; the container is terminated after the handler completes; other management of the container blocks until the hook completes"` + PreStop *Handler `json:"preStop,omitempty" description:"called before a container is terminated; the container is terminated after the handler completes; other management of the container blocks until the hook completes"` } // The below types are used by kube_client and api_server. // TypeMeta is shared by all objects sent to, or returned from the client. type TypeMeta struct { - Kind string `json:"kind,omitempty" yaml:"kind,omitempty" description:"kind of object, in CamelCase"` - ID string `json:"id,omitempty" yaml:"id,omitempty" description:"name of the object; must be a DNS_SUBDOMAIN and unique among all objects of the same kind within the same namespace; used in resource URLs"` - UID string `json:"uid,omitempty" yaml:"uid,omitempty" description:"UUID assigned by the system upon creation, unique across space and time"` - CreationTimestamp util.Time `json:"creationTimestamp,omitempty" yaml:"creationTimestamp,omitempty" description:"RFC 3339 date and time at which the object was created; recorded by the system; null for lists"` - SelfLink string `json:"selfLink,omitempty" yaml:"selfLink,omitempty" description:"URL for the object"` - ResourceVersion uint64 `json:"resourceVersion,omitempty" yaml:"resourceVersion,omitempty" description:"string that identifies the internal version of this object that can be used by clients to determine when objects have changed; value must be treated as opaque by clients and passed unmodified back to the server"` - APIVersion string `json:"apiVersion,omitempty" yaml:"apiVersion,omitempty" description:"version of the schema the object should have"` - Namespace string `json:"namespace,omitempty" yaml:"namespace,omitempty" description:"namespace to which the object belongs; must be a DNS_SUBDOMAIN; 'default' by default"` + Kind string `json:"kind,omitempty" description:"kind of object, in CamelCase"` + ID string `json:"id,omitempty" description:"name of the object; must be a DNS_SUBDOMAIN and unique among all objects of the same kind within the same namespace; used in resource URLs"` + UID string `json:"uid,omitempty" description:"UUID assigned by the system upon creation, unique across space and time"` + CreationTimestamp util.Time `json:"creationTimestamp,omitempty" description:"RFC 3339 date and time at which the object was created; recorded by the system; null for lists"` + SelfLink string `json:"selfLink,omitempty" description:"URL for the object"` + ResourceVersion uint64 `json:"resourceVersion,omitempty" description:"string that identifies the internal version of this object that can be used by clients to determine when objects have changed; value must be treated as opaque by clients and passed unmodified back to the server"` + APIVersion string `json:"apiVersion,omitempty" description:"version of the schema the object should have"` + Namespace string `json:"namespace,omitempty" description:"namespace to which the object belongs; must be a DNS_SUBDOMAIN; 'default' by default"` // Annotations are unstructured key value data stored with a resource that may be set by // external tooling. They are not queryable and should be preserved when modifying // objects. - Annotations map[string]string `json:"annotations,omitempty" yaml:"annotations,omitempty" description:"map of string keys and values that can be used by external tooling to store and retrieve arbitrary metadata about the object"` + Annotations map[string]string `json:"annotations,omitempty" description:"map of string keys and values that can be used by external tooling to store and retrieve arbitrary metadata about the object"` } // PodStatus represents a status of a pod. @@ -324,46 +324,46 @@ const ( type ContainerStateWaiting struct { // Reason could be pulling image, - Reason string `json:"reason,omitempty" yaml:"reason,omitempty" description:"(brief) reason the container is not yet running, such as pulling its image"` + Reason string `json:"reason,omitempty" description:"(brief) reason the container is not yet running, such as pulling its image"` } type ContainerStateRunning struct { // TODO: change to util.Time - StartedAt time.Time `json:"startedAt,omitempty" yaml:"startedAt,omitempty" description:"time at which the container was last (re-)started"` + StartedAt time.Time `json:"startedAt,omitempty" description:"time at which the container was last (re-)started"` } type ContainerStateTerminated struct { - ExitCode int `json:"exitCode" yaml:"exitCode" description:"exit status from the last termination of the container"` - Signal int `json:"signal,omitempty" yaml:"signal,omitempty" description:"signal from the last termination of the container"` - Reason string `json:"reason,omitempty" yaml:"reason,omitempty" description:"(brief) reason from the last termination of the container"` - Message string `json:"message,omitempty" yaml:"message,omitempty" description:"message regarding the last termination of the container"` + ExitCode int `json:"exitCode" description:"exit status from the last termination of the container"` + Signal int `json:"signal,omitempty" description:"signal from the last termination of the container"` + Reason string `json:"reason,omitempty" description:"(brief) reason from the last termination of the container"` + Message string `json:"message,omitempty" description:"message regarding the last termination of the container"` // TODO: change to util.Time - StartedAt time.Time `json:"startedAt,omitempty" yaml:"startedAt,omitempty" description:"time at which previous execution of the container started"` + StartedAt time.Time `json:"startedAt,omitempty" description:"time at which previous execution of the container started"` // TODO: change to util.Time - FinishedAt time.Time `json:"finishedAt,omitempty" yaml:"finishedAt,omitempty" description:"time at which the container last terminated"` + FinishedAt time.Time `json:"finishedAt,omitempty" description:"time at which the container last terminated"` } // ContainerState holds a possible state of container. // Only one of its members may be specified. // If none of them is specified, the default one is ContainerStateWaiting. type ContainerState struct { - Waiting *ContainerStateWaiting `json:"waiting,omitempty" yaml:"waiting,omitempty" description:"details about a waiting container"` - Running *ContainerStateRunning `json:"running,omitempty" yaml:"running,omitempty" description:"details about a running container"` - Termination *ContainerStateTerminated `json:"termination,omitempty" yaml:"termination,omitempty" description:"details about a terminated container"` + Waiting *ContainerStateWaiting `json:"waiting,omitempty" description:"details about a waiting container"` + Running *ContainerStateRunning `json:"running,omitempty" description:"details about a running container"` + Termination *ContainerStateTerminated `json:"termination,omitempty" description:"details about a terminated container"` } type ContainerStatus struct { // TODO(dchen1107): Should we rename PodStatus to a more generic name or have a separate states // defined for container? - State ContainerState `json:"state,omitempty" yaml:"state,omitempty" description:"details about the container's current condition"` + State ContainerState `json:"state,omitempty" description:"details about the container's current condition"` // Note that this is calculated from dead containers. But those containers are subject to // garbage collection. This value will get capped at 5 by GC. - RestartCount int `json:"restartCount" yaml:"restartCount" description:"the number of times the container has been restarted, currently based on the number of dead containers that have not yet been removed"` + RestartCount int `json:"restartCount" description:"the number of times the container has been restarted, currently based on the number of dead containers that have not yet been removed"` // TODO(dchen1107): Deprecated this soon once we pull entire PodStatus from node, // not just PodInfo. Now we need this to remove docker.Container from API - PodIP string `json:"podIP,omitempty" yaml:"podIP,omitempty" description:"pod's IP address"` + PodIP string `json:"podIP,omitempty" description:"pod's IP address"` // TODO(dchen1107): Need to decide how to reprensent this in v1beta3 - Image string `yaml:"image" json:"image" description:"image of the container"` + Image string `json:"image" description:"image of the container"` } // PodInfo contains one entry for every container with available info. @@ -381,127 +381,127 @@ type RestartPolicy struct { // Only one of the following restart policy may be specified. // If none of the following policies is specified, the default one // is RestartPolicyAlways. - Always *RestartPolicyAlways `json:"always,omitempty" yaml:"always,omitempty" description:"always restart the container after termination"` - OnFailure *RestartPolicyOnFailure `json:"onFailure,omitempty" yaml:"onFailure,omitempty" description:"restart the container if it fails for any reason, but not if it succeeds (exit 0)"` - Never *RestartPolicyNever `json:"never,omitempty" yaml:"never,omitempty" description:"never restart the container"` + Always *RestartPolicyAlways `json:"always,omitempty" description:"always restart the container after termination"` + OnFailure *RestartPolicyOnFailure `json:"onFailure,omitempty" description:"restart the container if it fails for any reason, but not if it succeeds (exit 0)"` + Never *RestartPolicyNever `json:"never,omitempty" description:"never restart the container"` } // PodState is the state of a pod, used as either input (desired state) or output (current state). type PodState struct { - Manifest ContainerManifest `json:"manifest,omitempty" yaml:"manifest,omitempty" description:"manifest of containers and volumes comprising the pod"` - Status PodStatus `json:"status,omitempty" yaml:"status,omitempty" description:"current condition of the pod, Waiting, Running, or Terminated"` + Manifest ContainerManifest `json:"manifest,omitempty" description:"manifest of containers and volumes comprising the pod"` + Status PodStatus `json:"status,omitempty" description:"current condition of the pod, Waiting, Running, or Terminated"` // A human readable message indicating details about why the pod is in this state. - Message string `json:"message,omitempty" yaml:"message,omitempty" description:"human readable message indicating details about why the pod is in this condition"` - Host string `json:"host,omitempty" yaml:"host,omitempty" description:"host to which the pod is assigned; empty if not yet scheduled"` - HostIP string `json:"hostIP,omitempty" yaml:"hostIP,omitempty" description:"IP address of the host to which the pod is assigned; empty if not yet scheduled"` - PodIP string `json:"podIP,omitempty" yaml:"podIP,omitempty" description:"IP address allocated to the pod; routable at least within the cluster; empty if not yet allocated"` + Message string `json:"message,omitempty" description:"human readable message indicating details about why the pod is in this condition"` + Host string `json:"host,omitempty" description:"host to which the pod is assigned; empty if not yet scheduled"` + HostIP string `json:"hostIP,omitempty" description:"IP address of the host to which the pod is assigned; empty if not yet scheduled"` + PodIP string `json:"podIP,omitempty" description:"IP address allocated to the pod; routable at least within the cluster; empty if not yet allocated"` // The key of this map is the *name* of the container within the manifest; it has one // entry per container in the manifest. The value of this map is ContainerStatus for // the container. - Info PodInfo `json:"info,omitempty" yaml:"info,omitempty" description:"map of container name to container status"` + Info PodInfo `json:"info,omitempty" description:"map of container name to container status"` } // PodList is a list of Pods. type PodList struct { - TypeMeta `json:",inline" yaml:",inline"` - Items []Pod `json:"items" yaml:"items" description:"list of pods"` + TypeMeta `json:",inline"` + Items []Pod `json:"items" description:"list of pods"` } // Pod is a collection of containers, used as either input (create, update) or as output (list, get). type Pod struct { - TypeMeta `json:",inline" yaml:",inline"` - Labels map[string]string `json:"labels,omitempty" yaml:"labels,omitempty" description:"map of string keys and values that can be used to organize and categorize pods; may match selectors of replication controllers and services"` - DesiredState PodState `json:"desiredState,omitempty" yaml:"desiredState,omitempty" description:"specification of the desired state of the pod"` - CurrentState PodState `json:"currentState,omitempty" yaml:"currentState,omitempty" description:"current state of the pod"` + TypeMeta `json:",inline"` + Labels map[string]string `json:"labels,omitempty" description:"map of string keys and values that can be used to organize and categorize pods; may match selectors of replication controllers and services"` + DesiredState PodState `json:"desiredState,omitempty" description:"specification of the desired state of the pod"` + CurrentState PodState `json:"currentState,omitempty" description:"current state of the pod"` // NodeSelector is a selector which must be true for the pod to fit on a node - NodeSelector map[string]string `json:"nodeSelector,omitempty" yaml:"nodeSelector,omitempty" description:"selector which must match a node's labels for the pod to be scheduled on that node"` + 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"` } // ReplicationControllerState is the state of a replication controller, either input (create, update) or as output (list, get). type ReplicationControllerState struct { - Replicas int `json:"replicas" yaml:"replicas" description:"number of replicas (desired or observed, as appropriate)"` - ReplicaSelector map[string]string `json:"replicaSelector,omitempty" yaml:"replicaSelector,omitempty" description:"label keys and values that must match in order to be controlled by this replication controller"` - PodTemplate PodTemplate `json:"podTemplate,omitempty" yaml:"podTemplate,omitempty" description:"template for pods to be created by this replication controller when the observed number of replicas is less than the desired number of replicas"` + Replicas int `json:"replicas" description:"number of replicas (desired or observed, as appropriate)"` + ReplicaSelector map[string]string `json:"replicaSelector,omitempty" description:"label keys and values that must match in order to be controlled by this replication controller"` + PodTemplate PodTemplate `json:"podTemplate,omitempty" description:"template for pods to be created by this replication controller when the observed number of replicas is less than the desired number of replicas"` } // ReplicationControllerList is a collection of replication controllers. type ReplicationControllerList struct { - TypeMeta `json:",inline" yaml:",inline"` - Items []ReplicationController `json:"items" yaml:"items" description:"list of replication controllers"` + TypeMeta `json:",inline"` + Items []ReplicationController `json:"items" description:"list of replication controllers"` } // ReplicationController represents the configuration of a replication controller. type ReplicationController struct { - TypeMeta `json:",inline" yaml:",inline"` - DesiredState ReplicationControllerState `json:"desiredState,omitempty" yaml:"desiredState,omitempty" description:"specification of the desired state of the replication controller"` - CurrentState ReplicationControllerState `json:"currentState,omitempty" yaml:"currentState,omitempty" description:"current state of the replication controller"` - Labels map[string]string `json:"labels,omitempty" yaml:"labels,omitempty" description:"map of string keys and values that can be used to organize and categorize replication controllers"` + TypeMeta `json:",inline"` + DesiredState ReplicationControllerState `json:"desiredState,omitempty" description:"specification of the desired state of the replication controller"` + CurrentState ReplicationControllerState `json:"currentState,omitempty" description:"current state of the replication controller"` + Labels map[string]string `json:"labels,omitempty" description:"map of string keys and values that can be used to organize and categorize replication controllers"` } // PodTemplate holds the information used for creating pods. type PodTemplate struct { - DesiredState PodState `json:"desiredState,omitempty" yaml:"desiredState,omitempty" description:"specification of the desired state of pods created from this template"` - Labels map[string]string `json:"labels,omitempty" yaml:"labels,omitempty" description:"map of string keys and values that can be used to organize and categorize the pods created from the template; must match the selector of the replication controller to which the template belongs; may match selectors of services"` + DesiredState PodState `json:"desiredState,omitempty" description:"specification of the desired state of pods created from this template"` + Labels map[string]string `json:"labels,omitempty" description:"map of string keys and values that can be used to organize and categorize the pods created from the template; must match the selector of the replication controller to which the template belongs; may match selectors of services"` } // ServiceList holds a list of services. type ServiceList struct { - TypeMeta `json:",inline" yaml:",inline"` - Items []Service `json:"items" yaml:"items" description:"list of services"` + TypeMeta `json:",inline"` + Items []Service `json:"items" description:"list of services"` } // Service is a named abstraction of software service (for example, mysql) consisting of local port // (for example 3306) that the proxy listens on, and the selector that determines which pods // will answer requests sent through the proxy. type Service struct { - TypeMeta `json:",inline" yaml:",inline"` + TypeMeta `json:",inline"` // Required. - Port int `json:"port" yaml:"port" description:"port exposed by the service"` + Port int `json:"port" description:"port exposed by the service"` // Optional: Defaults to "TCP". - Protocol Protocol `yaml:"protocol,omitempty" json:"protocol,omitempty" description:"protocol for port; must be UDP or TCP; TCP if unspecified"` + Protocol Protocol `json:"protocol,omitempty" description:"protocol for port; must be UDP or TCP; TCP if unspecified"` // This service's labels. - Labels map[string]string `json:"labels,omitempty" yaml:"labels,omitempty" description:"map of string keys and values that can be used to organize and categorize services"` + Labels map[string]string `json:"labels,omitempty" description:"map of string keys and values that can be used to organize and categorize services"` // This service will route traffic to pods having labels matching this selector. - Selector map[string]string `json:"selector,omitempty" yaml:"selector,omitempty" description:"label keys and values that must match in order to receive traffic for this service"` - CreateExternalLoadBalancer bool `json:"createExternalLoadBalancer,omitempty" yaml:"createExternalLoadBalancer,omitempty" description:"set up a cloud-provider-specific load balancer on an external IP"` + Selector map[string]string `json:"selector,omitempty" description:"label keys and values that must match in order to receive traffic for this service"` + CreateExternalLoadBalancer bool `json:"createExternalLoadBalancer,omitempty" description:"set up a cloud-provider-specific load balancer on an external IP"` // PublicIPs are used by external load balancers. - PublicIPs []string `json:"publicIPs,omitempty" yaml:"publicIPs,omitempty" description:"externally visible IPs from which to select the address for the external load balancer"` + PublicIPs []string `json:"publicIPs,omitempty" description:"externally visible IPs from which to select the address for the external load balancer"` // ContainerPort is the name of the port on the container to direct traffic to. // Optional, if unspecified use the first port on the container. - ContainerPort util.IntOrString `json:"containerPort,omitempty" yaml:"containerPort,omitempty" description:"number or name of the port to access on the containers belonging to pods targeted by the service"` + ContainerPort util.IntOrString `json:"containerPort,omitempty" description:"number or name of the port to access on the containers belonging to pods targeted by the service"` // 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 // not be changed by updates. - PortalIP string `json:"portalIP,omitempty" yaml:"portalIP,omitempty" description:"IP address of the service; usually assigned by the system; if specified, it will be allocated to the service if unused, and creation of the service will fail otherwise; cannot be updated"` + PortalIP string `json:"portalIP,omitempty" description:"IP address of the service; usually assigned by the system; if specified, it will be allocated to the service if unused, and creation of the service will fail otherwise; cannot be updated"` // ProxyPort is assigned by the master. If specified by the user it will be ignored. - ProxyPort int `json:"proxyPort,omitempty" yaml:"proxyPort,omitempty" description:"if non-zero, a pre-allocated host port used for this service by the proxy on each node; assigned by the master and ignored on input"` + ProxyPort int `json:"proxyPort,omitempty" description:"if non-zero, a pre-allocated host port used for this service by the proxy on each node; assigned by the master and ignored on input"` } // Endpoints is a collection of endpoints that implement the actual service, for example: // Name: "mysql", Endpoints: ["10.10.1.1:1909", "10.10.2.2:8834"] type Endpoints struct { - TypeMeta `json:",inline" yaml:",inline"` - Endpoints []string `json:"endpoints,omitempty" yaml:"endpoints,omitempty" description:"list of endpoints corresponding to a service, of the form address:port, such as 10.10.1.1:1909"` + TypeMeta `json:",inline"` + Endpoints []string `json:"endpoints,omitempty" description:"list of endpoints corresponding to a service, of the form address:port, such as 10.10.1.1:1909"` } // EndpointsList is a list of endpoints. type EndpointsList struct { - TypeMeta `json:",inline" yaml:",inline"` - Items []Endpoints `json:"items" yaml:"items" description:"list of service endpoint lists"` + TypeMeta `json:",inline"` + Items []Endpoints `json:"items" description:"list of service endpoint lists"` } // NodeResources represents resources on a Kubernetes system node // see https://github.com/GoogleCloudPlatform/kubernetes/blob/master/docs/resources.md for more details. type NodeResources struct { // Capacity represents the available resources. - Capacity ResourceList `json:"capacity,omitempty" yaml:"capacity,omitempty" description:"resource capacity of a node represented as a map of resource name to quantity of resource"` + Capacity ResourceList `json:"capacity,omitempty" description:"resource capacity of a node represented as a map of resource name to quantity of resource"` } type ResourceName string @@ -511,52 +511,52 @@ type ResourceList map[ResourceName]util.IntOrString // Minion is a worker node in Kubernetenes. // The name of the minion according to etcd is in ID. type Minion struct { - TypeMeta `json:",inline" yaml:",inline"` + TypeMeta `json:",inline"` // Queried from cloud provider, if available. - HostIP string `json:"hostIP,omitempty" yaml:"hostIP,omitempty" description:"IP address of the node"` + HostIP string `json:"hostIP,omitempty" description:"IP address of the node"` // Resources available on the node - NodeResources NodeResources `json:"resources,omitempty" yaml:"resources,omitempty" description:"characterization of node resources"` + NodeResources NodeResources `json:"resources,omitempty" description:"characterization of node resources"` // Labels for the node - Labels map[string]string `json:"labels,omitempty" yaml:"labels,omitempty" description:"map of string keys and values that can be used to organize and categorize minions; labels of a minion assigned by the scheduler must match the scheduled pod's nodeSelector"` + Labels map[string]string `json:"labels,omitempty" description:"map of string keys and values that can be used to organize and categorize minions; labels of a minion assigned by the scheduler must match the scheduled pod's nodeSelector"` } // MinionList is a list of minions. type MinionList struct { - TypeMeta `json:",inline" yaml:",inline"` + TypeMeta `json:",inline"` // DEPRECATED: the below Minions is due to a naming mistake and // will be replaced with Items in the future. - Minions []Minion `json:"minions,omitempty" yaml:"minions,omitempty" description:"list of nodes; deprecated"` - Items []Minion `json:"items" yaml:"items" description:"list of nodes"` + Minions []Minion `json:"minions,omitempty" description:"list of nodes; deprecated"` + Items []Minion `json:"items" description:"list of nodes"` } // Binding is written by a scheduler to cause a pod to be bound to a host. type Binding struct { - TypeMeta `json:",inline" yaml:",inline"` - PodID string `json:"podID" yaml:"podID" description:"name of the pod to bind"` - Host string `json:"host" yaml:"host" description:"host to which to bind the specified pod"` + TypeMeta `json:",inline"` + PodID string `json:"podID" description:"name of the pod to bind"` + Host string `json:"host" description:"host to which to bind the specified pod"` } // Status is a return value for calls that don't return other objects. // TODO: this could go in apiserver, but I'm including it here so clients needn't // import both. type Status struct { - TypeMeta `json:",inline" yaml:",inline"` + TypeMeta `json:",inline"` // One of: "Success", "Failure", "Working" (for operations not yet completed) - Status string `json:"status,omitempty" yaml:"status,omitempty" description:"status of the operation; either Working (not yet completed), Success, or Failure"` + Status string `json:"status,omitempty" description:"status of the operation; either Working (not yet completed), Success, or Failure"` // A human-readable description of the status of this operation. - Message string `json:"message,omitempty" yaml:"message,omitempty" description:"human-readable description of the status of this operation"` + Message string `json:"message,omitempty" description:"human-readable description of the status of this operation"` // A machine-readable description of why this operation is in the // "Failure" or "Working" status. If this value is empty there // is no information available. A Reason clarifies an HTTP status // code but does not override it. - Reason StatusReason `json:"reason,omitempty" yaml:"reason,omitempty" description:"machine-readable description of why this operation is in the 'Failure' or 'Working' status; if this value is empty there is no information available; a reason clarifies an HTTP status code but does not override it"` + Reason StatusReason `json:"reason,omitempty" description:"machine-readable description of why this operation is in the 'Failure' or 'Working' status; if this value is empty there is no information available; a reason clarifies an HTTP status code but does not override it"` // Extended data associated with the reason. Each reason may define its // own extended details. This field is optional and the data returned // is not guaranteed to conform to any schema except that defined by // the reason type. - Details *StatusDetails `json:"details,omitempty" yaml:"details,omitempty" description:"extended data associated with the reason; each reason may define its own extended details; this field is optional and the data returned is not guaranteed to conform to any schema except that defined by the reason type"` + Details *StatusDetails `json:"details,omitempty" description:"extended data associated with the reason; each reason may define its own extended details; this field is optional and the data returned is not guaranteed to conform to any schema except that defined by the reason type"` // Suggested HTTP return code for this status, 0 if not set. - Code int `json:"code,omitempty" yaml:"code,omitempty" description:"suggested HTTP return code for this status; 0 if not set"` + Code int `json:"code,omitempty" description:"suggested HTTP return code for this status; 0 if not set"` } // StatusDetails is a set of additional properties that MAY be set by the @@ -568,13 +568,13 @@ type Status struct { type StatusDetails struct { // The ID attribute of the resource associated with the status StatusReason // (when there is a single ID which can be described). - ID string `json:"id,omitempty" yaml:"id,omitempty" description:"the ID attribute of the resource associated with the status StatusReason (when there is a single ID which can be described)"` + ID string `json:"id,omitempty" description:"the ID attribute of the resource associated with the status StatusReason (when there is a single ID which can be described)"` // The kind attribute of the resource associated with the status StatusReason. // On some operations may differ from the requested resource Kind. - Kind string `json:"kind,omitempty" yaml:"kind,omitempty" description:"the kind attribute of the resource associated with the status StatusReason; on some operations may differ from the requested resource Kind"` + Kind string `json:"kind,omitempty" description:"the kind attribute of the resource associated with the status StatusReason; on some operations may differ from the requested resource Kind"` // The Causes array includes more details associated with the StatusReason // failure. Not all StatusReasons may provide detailed causes. - Causes []StatusCause `json:"causes,omitempty" yaml:"causes,omitempty" description:"the Causes array includes more details associated with the StatusReason failure; not all StatusReasons may provide detailed causes"` + Causes []StatusCause `json:"causes,omitempty" description:"the Causes array includes more details associated with the StatusReason failure; not all StatusReasons may provide detailed causes"` } // Values of Status.Status @@ -638,10 +638,10 @@ const ( type StatusCause struct { // A machine-readable description of the cause of the error. If this value is // empty there is no information available. - Type CauseType `json:"reason,omitempty" yaml:"reason,omitempty" description:"machine-readable description of the cause of the error; if this value is empty there is no information available"` + Type CauseType `json:"reason,omitempty" description:"machine-readable description of the cause of the error; if this value is empty there is no information available"` // A human-readable description of the cause of the error. This field may be // presented as-is to a reader. - Message string `json:"message,omitempty" yaml:"message,omitempty" description:"human-readable description of the cause of the error; this field may be presented as-is to a reader"` + Message string `json:"message,omitempty" description:"human-readable description of the cause of the error; this field may be presented as-is to a reader"` // The field of the resource that has caused this error, as named by its JSON // serialization. May include dot and postfix notation for nested attributes. // Arrays are zero-indexed. Fields may appear more than once in an array of @@ -651,7 +651,7 @@ type StatusCause struct { // Examples: // "name" - the field "name" on the current resource // "items[0].name" - the field "name" on the first array entry in "items" - Field string `json:"field,omitempty" yaml:"field,omitempty" description:"field of the resource that has caused this error, as named by its JSON serialization; may include dot and postfix notation for nested attributes; arrays are zero-indexed; fields may appear more than once in an array of causes due to fields having multiple errors"` + Field string `json:"field,omitempty" description:"field of the resource that has caused this error, as named by its JSON serialization; may include dot and postfix notation for nested attributes; arrays are zero-indexed; fields may appear more than once in an array of causes due to fields having multiple errors"` } // CauseType is a machine readable value providing more detail about what @@ -679,23 +679,23 @@ const ( // ServerOp is an operation delivered to API clients. type ServerOp struct { - TypeMeta `yaml:",inline" json:",inline"` + TypeMeta `json:",inline"` } // ServerOpList is a list of operations, as delivered to API clients. type ServerOpList struct { - TypeMeta `yaml:",inline" json:",inline"` - Items []ServerOp `yaml:"items" json:"items" description:"list of operations"` + TypeMeta `json:",inline"` + Items []ServerOp `json:"items" description:"list of operations"` } // ObjectReference contains enough information to let you inspect or modify the referred object. type ObjectReference struct { - Kind string `json:"kind,omitempty" yaml:"kind,omitempty" description:"kind of the referent"` - Namespace string `json:"namespace,omitempty" yaml:"namespace,omitempty" description:"namespace of the referent"` - ID string `json:"name,omitempty" yaml:"name,omitempty" description:"id of the referent"` - UID string `json:"uid,omitempty" yaml:"uid,omitempty" description:"uid of the referent"` - APIVersion string `json:"apiVersion,omitempty" yaml:"apiVersion,omitempty" description:"API version of the referent"` - ResourceVersion string `json:"resourceVersion,omitempty" yaml:"resourceVersion,omitempty" description:"specific resourceVersion to which this reference is made, if any"` + Kind string `json:"kind,omitempty" description:"kind of the referent"` + Namespace string `json:"namespace,omitempty" description:"namespace of the referent"` + ID string `json:"name,omitempty" description:"id of the referent"` + UID string `json:"uid,omitempty" description:"uid of the referent"` + APIVersion string `json:"apiVersion,omitempty" description:"API version of the referent"` + ResourceVersion string `json:"resourceVersion,omitempty" description:"specific resourceVersion to which this reference is made, if any"` // Optional. If referring to a piece of an object instead of an entire object, this string // should contain a valid field access statement. For example, @@ -704,16 +704,16 @@ type ObjectReference struct { // both go and JavaScript. This is syntax is chosen only to have some well-defined way of // referencing a part of an object. // TODO: this design is not final and this field is subject to change in the future. - FieldPath string `json:"fieldPath,omitempty" yaml:"fieldPath,omitempty" description:"if referring to a piece of an object instead of an entire object, this string should contain a valid JSON/Go field access statement, such as desiredState.manifest.containers[2]"` + FieldPath string `json:"fieldPath,omitempty" description:"if referring to a piece of an object instead of an entire object, this string should contain a valid JSON/Go field access statement, such as desiredState.manifest.containers[2]"` } // Event is a report of an event somewhere in the cluster. // TODO: Decide whether to store these separately or with the object they apply to. type Event struct { - TypeMeta `yaml:",inline" json:",inline"` + TypeMeta `json:",inline"` // Required. The object that this event is about. - InvolvedObject ObjectReference `json:"involvedObject,omitempty" yaml:"involvedObject,omitempty" description:"object that this event is about"` + InvolvedObject ObjectReference `json:"involvedObject,omitempty" description:"object that this event is about"` // Should be a short, machine understandable string that describes the current status // of the referred object. This should not give the reason for being in this state. @@ -722,61 +722,61 @@ type Event struct { // always be used for the same status. // TODO: define a way of making sure these are consistent and don't collide. // TODO: provide exact specification for format. - Status string `json:"status,omitempty" yaml:"status,omitempty" description:"short, machine understandable string that describes the current status of the referred object"` + Status string `json:"status,omitempty" description:"short, machine understandable string that describes the current status of the referred object"` // Optional; this should be a short, machine understandable string that gives the reason // for the transition into the object's current status. For example, if ObjectStatus is // "cantStart", StatusReason might be "imageNotFound". // TODO: provide exact specification for format. - Reason string `json:"reason,omitempty" yaml:"reason,omitempty" description:"short, machine understandable string that gives the reason for the transition into the object's current status"` + Reason string `json:"reason,omitempty" description:"short, machine understandable string that gives the reason for the transition into the object's current status"` // Optional. A human-readable description of the status of this operation. // TODO: decide on maximum length. - Message string `json:"message,omitempty" yaml:"message,omitempty" description:"human-readable description of the status of this operation"` + Message string `json:"message,omitempty" description:"human-readable description of the status of this operation"` // Optional. The component reporting this event. Should be a short machine understandable string. // TODO: provide exact specification for format. - Source string `json:"source,omitempty" yaml:"source,omitempty" description:"component reporting this event; short machine understandable string"` + Source string `json:"source,omitempty" description:"component reporting this event; short machine understandable string"` // The time at which the client recorded the event. (Time of server receipt is in TypeMeta.) - Timestamp util.Time `json:"timestamp,omitempty" yaml:"timestamp,omitempty" description:"time at which the client recorded the event"` + Timestamp util.Time `json:"timestamp,omitempty" description:"time at which the client recorded the event"` } // EventList is a list of events. type EventList struct { - TypeMeta `yaml:",inline" json:",inline"` - Items []Event `yaml:"items" json:"items" description:"list of events"` + TypeMeta `json:",inline"` + Items []Event `json:"items" description:"list of events"` } // Backported from v1beta3 to replace ContainerManifest // PodSpec is a description of a pod type PodSpec struct { - Volumes []Volume `json:"volumes" yaml:"volumes" description:"list of volumes that can be mounted by containers belonging to the pod"` - Containers []Container `json:"containers" yaml:"containers" description:"list of containers belonging to the pod"` - RestartPolicy RestartPolicy `json:"restartPolicy,omitempty" yaml:"restartPolicy,omitempty" description:"restart policy for all containers within the pod; one of RestartPolicyAlways, RestartPolicyOnFailure, RestartPolicyNever"` + Volumes []Volume `json:"volumes" description:"list of volumes that can be mounted by containers belonging to the pod"` + Containers []Container `json:"containers" description:"list of containers belonging to the pod"` + RestartPolicy RestartPolicy `json:"restartPolicy,omitempty" description:"restart policy for all containers within the pod; one of RestartPolicyAlways, RestartPolicyOnFailure, RestartPolicyNever"` // NodeSelector is a selector which must be true for the pod to fit on a node - NodeSelector map[string]string `json:"nodeSelector,omitempty" yaml:"nodeSelector,omitempty" description:"selector which must match a node's labels for the pod to be scheduled on that node"` + 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"` } // BoundPod is a collection of containers that should be run on a host. A BoundPod // defines how a Pod may change after a Binding is created. A Pod is a request to // execute a pod, whereas a BoundPod is the specification that would be run on a server. type BoundPod struct { - TypeMeta `json:",inline" yaml:",inline"` + TypeMeta `json:",inline"` // Spec defines the behavior of a pod. - Spec PodSpec `json:"spec,omitempty" yaml:"spec,omitempty" description:"specification of the desired state of containers and volumes comprising the pod"` + Spec PodSpec `json:"spec,omitempty" description:"specification of the desired state of containers and volumes comprising the pod"` } // BoundPods is a list of Pods bound to a common server. The resource version of // the pod list is guaranteed to only change when the list of bound pods changes. type BoundPods struct { - TypeMeta `json:",inline" yaml:",inline"` + TypeMeta `json:",inline"` // Host is the name of a node that these pods were bound to. - Host string `json:"host" yaml:"host" description:"name of a node that these pods were bound to"` + Host string `json:"host" description:"name of a node that these pods were bound to"` // Items is the list of all pods bound to a given host. - Items []BoundPod `json:"items" yaml:"items" description:"list of all pods bound to a given host"` + Items []BoundPod `json:"items" description:"list of all pods bound to a given host"` } diff --git a/pkg/api/v1beta2/types.go b/pkg/api/v1beta2/types.go index 91db025fbe9..b5b1f1adca4 100644 --- a/pkg/api/v1beta2/types.go +++ b/pkg/api/v1beta2/types.go @@ -49,11 +49,11 @@ import ( type Volume struct { // Required: This must be a DNS_LABEL. Each volume in a pod must have // a unique name. - Name string `yaml:"name" json:"name" description:"volume name; must be a DNS_LABEL and unique within the pod"` + Name string `json:"name" description:"volume name; must be a DNS_LABEL and unique within the pod"` // 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. - Source *VolumeSource `yaml:"source" json:"source" description:"location and type of volume to mount; at most one of HostDir, EmptyDir, GCEPersistentDisk, or GitRepo; default is EmptyDir"` + Source *VolumeSource `json:"source" description:"location and type of volume to mount; at most one of HostDir, EmptyDir, GCEPersistentDisk, or GitRepo; default is EmptyDir"` } // VolumeSource represents the source location of a valume to mount. @@ -64,19 +64,19 @@ type VolumeSource struct { // things that are allowed 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. - HostDir *HostDir `yaml:"hostDir" json:"hostDir" description:"pre-existing host directory; generally for privileged system daemons or other agents tied to the host"` + HostDir *HostDir `json:"hostDir" description:"pre-existing host 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 *EmptyDir `yaml:"emptyDir" json:"emptyDir" description:"temporary directory that shares a pod's lifetime"` + EmptyDir *EmptyDir `json:"emptyDir" description:"temporary directory that shares a pod's lifetime"` // A persistent disk that is mounted to the // kubelet's host machine and then exposed to the pod. - GCEPersistentDisk *GCEPersistentDisk `yaml:"persistentDisk" json:"persistentDisk" description:"GCE disk resource attached to the host machine on demand"` + GCEPersistentDisk *GCEPersistentDisk `json:"persistentDisk" description:"GCE disk resource attached to the host machine on demand"` // GitRepo represents a git repository at a particular revision. - GitRepo *GitRepo `json:"gitRepo" yaml:"gitRepo" description:"git repository at a particular revision"` + GitRepo *GitRepo `json:"gitRepo" description:"git repository at a particular revision"` } // HostDir represents bare host directory volume. type HostDir struct { - Path string `yaml:"path" json:"path" description:"path of the directory on the host"` + Path string `json:"path" description:"path of the directory on the host"` } type EmptyDir struct{} @@ -95,15 +95,15 @@ const ( type Port struct { // Optional: If specified, this must be a DNS_LABEL. Each named port // in a pod must have a unique name. - Name string `yaml:"name,omitempty" json:"name,omitempty" description:"name for the port that can be referred to by services; must be a DNS_LABEL and unique without the pod"` + Name string `json:"name,omitempty" description:"name for the port that can be referred to by services; must be a DNS_LABEL and unique without the pod"` // Optional: If specified, this must be a valid port number, 0 < x < 65536. - HostPort int `yaml:"hostPort,omitempty" json:"hostPort,omitempty" description:"number of port to expose on the host; most containers do not need this"` + HostPort int `json:"hostPort,omitempty" description:"number of port to expose on the host; most containers do not need this"` // Required: This must be a valid port number, 0 < x < 65536. - ContainerPort int `yaml:"containerPort" json:"containerPort" description:"number of port to expose on the pod's IP address"` + ContainerPort int `json:"containerPort" description:"number of port to expose on the pod's IP address"` // Optional: Defaults to "TCP". - Protocol Protocol `yaml:"protocol,omitempty" json:"protocol,omitempty" description:"protocol for port; must be UDP or TCP; TCP if unspecified"` + Protocol Protocol `json:"protocol,omitempty" description:"protocol for port; must be UDP or TCP; TCP if unspecified"` // Optional: What host IP to bind the external port to. - HostIP string `yaml:"hostIP,omitempty" json:"hostIP,omitempty" description:"host IP to bind the port to"` + HostIP string `json:"hostIP,omitempty" description:"host IP to bind the port to"` } // GCEPersistentDisk represents a Persistent Disk resource in Google Compute Engine. @@ -113,62 +113,62 @@ type Port struct { // A GCE PD can only be mounted as read/write once. type GCEPersistentDisk struct { // Unique name of the PD resource. Used to identify the disk in GCE - PDName string `yaml:"pdName" json:"pdName" description:"unique name of the PD resource in GCE"` + PDName string `json:"pdName" description:"unique name of the PD resource in GCE"` // 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 // TODO: why omitempty if required? - FSType string `yaml:"fsType,omitempty" json:"fsType,omitempty" description:"file system type to mount, such as ext4, xfs, ntfs"` + FSType string `json:"fsType,omitempty" 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. - Partition int `yaml:"partition,omitempty" json:"partition,omitempty" description:"partition on the disk to mount (e.g., '1' for /dev/sda1); if omitted the plain device name (e.g., /dev/sda) will be mounted"` + Partition int `json:"partition,omitempty" description:"partition on the disk to mount (e.g., '1' for /dev/sda1); if omitted the plain device name (e.g., /dev/sda) will be mounted"` // Optional: Defaults to false (read/write). ReadOnly here will force // the ReadOnly setting in VolumeMounts. - ReadOnly bool `yaml:"readOnly,omitempty" json:"readOnly,omitempty" description:"read-only if true, read-write otherwise (false or unspecified)"` + ReadOnly bool `json:"readOnly,omitempty" description:"read-only if true, read-write otherwise (false or unspecified)"` } // GitRepo represents a volume that is pulled from git when the pod is created. type GitRepo struct { // Repository URL - Repository string `yaml:"repository" json:"repository" description:"repository URL"` + Repository string `json:"repository" description:"repository URL"` // Commit hash, this is optional - Revision string `yaml:"revision" json:"revision" description:"commit hash for the specified revision"` + Revision string `json:"revision" description:"commit hash for the specified revision"` } // VolumeMount describes a mounting of a Volume within a container. type VolumeMount struct { // Required: This must match the Name of a Volume [above]. - Name string `yaml:"name" json:"name" description:"name of the volume to mount"` + Name string `json:"name" description:"name of the volume to mount"` // Optional: Defaults to false (read-write). - ReadOnly bool `yaml:"readOnly,omitempty" json:"readOnly,omitempty" description:"mounted read-only if true, read-write otherwise (false or unspecified)"` + ReadOnly bool `json:"readOnly,omitempty" description:"mounted read-only if true, read-write otherwise (false or unspecified)"` // Required. - MountPath string `yaml:"mountPath,omitempty" json:"mountPath,omitempty" description:"path within the container at which the volume should be mounted"` + MountPath string `json:"mountPath,omitempty" description:"path within the container at which the volume should be mounted"` } // EnvVar represents an environment variable present in a Container. type EnvVar struct { // Required: This must be a C_IDENTIFIER. - Name string `yaml:"name" json:"name" description:"name of the environment variable; must be a C_IDENTIFIER"` + Name string `json:"name" description:"name of the environment variable; must be a C_IDENTIFIER"` // Optional: defaults to "". - Value string `yaml:"value,omitempty" json:"value,omitempty" description:"value of the environment variable; defaults to empty string"` + Value string `json:"value,omitempty" description:"value of the environment variable; defaults to empty string"` } // HTTPGetAction describes an action based on HTTP Get requests. type HTTPGetAction struct { // Optional: Path to access on the HTTP server. - Path string `yaml:"path,omitempty" json:"path,omitempty" description:"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 `yaml:"port,omitempty" json:"port,omitempty" description:"number or name 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"` // Optional: Host name to connect to, defaults to the pod IP. - Host string `yaml:"host,omitempty" json:"host,omitempty" description:"hostname to connect to; defaults to pod IP"` + Host string `json:"host,omitempty" description:"hostname to connect to; defaults to pod IP"` } // TCPSocketAction describes an action based on opening a socket type TCPSocketAction struct { // Required: Port to connect to. - Port util.IntOrString `yaml:"port,omitempty" json:"port,omitempty" description:"number of name of the port to access on the container"` + Port util.IntOrString `json:"port,omitempty" description:"number of name of the port to access on the container"` } // ExecAction describes a "run in container" action. @@ -177,20 +177,20 @@ type ExecAction struct { // command is root ('/') in the container's filesystem. The command is simply exec'd, it is // not run inside a shell, so traditional shell instructions ('|', etc) won't work. To use // a shell, you need to explicitly call out to that shell. - Command []string `yaml:"command,omitempty" json:"command,omitempty" description:"command line to execute inside the container; working directory for the command is root ('/') in the container's file system; the command is exec'd, not run inside a shell; exit status of 0 is treated as live/healthy and non-zero is unhealthy"` + Command []string `json:"command,omitempty" description:"command line to execute inside the container; working directory for the command is root ('/') in the container's file system; the command is exec'd, not run inside a shell; exit status of 0 is treated as live/healthy and non-zero is unhealthy"` } // LivenessProbe describes a liveness probe to be examined to the container. // TODO: pass structured data to the actions, and document that data here. type LivenessProbe struct { // HTTPGetProbe parameters, required if Type == 'http' - HTTPGet *HTTPGetAction `yaml:"httpGet,omitempty" json:"httpGet,omitempty" description:"parameters for HTTP-based liveness probe"` + HTTPGet *HTTPGetAction `json:"httpGet,omitempty" description:"parameters for HTTP-based liveness probe"` // TCPSocketProbe parameter, required if Type == 'tcp' - TCPSocket *TCPSocketAction `yaml:"tcpSocket,omitempty" json:"tcpSocket,omitempty" description:"parameters for TCP-based liveness probe"` + TCPSocket *TCPSocketAction `json:"tcpSocket,omitempty" description:"parameters for TCP-based liveness probe"` // ExecProbe parameter, required if Type == 'exec' - Exec *ExecAction `yaml:"exec,omitempty" json:"exec,omitempty" description:"parameters for exec-based liveness probe"` + Exec *ExecAction `json:"exec,omitempty" description:"parameters for exec-based liveness probe"` // Length of time before health checking is activated. In seconds. - InitialDelaySeconds int64 `yaml:"initialDelaySeconds,omitempty" json:"initialDelaySeconds,omitempty" description:"number of seconds after the container has started before liveness probes are initiated"` + InitialDelaySeconds int64 `json:"initialDelaySeconds,omitempty" description:"number of seconds after the container has started before liveness probes are initiated"` } // PullPolicy describes a policy for if/when to pull a container image @@ -209,28 +209,28 @@ const ( type Container struct { // Required: This must be a DNS_LABEL. Each container in a pod must // have a unique name. - Name string `yaml:"name" json:"name" description:"name of the container; must be a DNS_LABEL and unique within the pod"` + Name string `json:"name" description:"name of the container; must be a DNS_LABEL and unique within the pod"` // Required. - Image string `yaml:"image" json:"image" description:"Docker image name"` + Image string `json:"image" description:"Docker image name"` // Optional: Defaults to whatever is defined in the image. - Command []string `yaml:"command,omitempty" json:"command,omitempty" description:"command argv array; not executed within a shell; defaults to entrypoint or command in the image"` + Command []string `json:"command,omitempty" description:"command argv array; not executed within a shell; defaults to entrypoint or command in the image"` // Optional: Defaults to Docker's default. - WorkingDir string `yaml:"workingDir,omitempty" json:"workingDir,omitempty" description:"container's working directory; defaults to image's default"` - Ports []Port `yaml:"ports,omitempty" json:"ports,omitempty" description:"list of ports to expose from the container"` - Env []EnvVar `yaml:"env,omitempty" json:"env,omitempty" description:"list of environment variables to set in the container"` + WorkingDir string `json:"workingDir,omitempty" description:"container's working directory; defaults to image's default"` + Ports []Port `json:"ports,omitempty" description:"list of ports to expose from the container"` + Env []EnvVar `json:"env,omitempty" description:"list of environment variables to set in the container"` // Optional: Defaults to unlimited. - Memory int `yaml:"memory,omitempty" json:"memory,omitempty" description:"memory limit in bytes; defaults to unlimited"` + Memory int `json:"memory,omitempty" description:"memory limit in bytes; defaults to unlimited"` // Optional: Defaults to unlimited. - CPU int `yaml:"cpu,omitempty" json:"cpu,omitempty" description:"CPU share in thousandths of a core"` - VolumeMounts []VolumeMount `yaml:"volumeMounts,omitempty" json:"volumeMounts,omitempty" description:"pod volumes to mount into the container's filesystem"` - LivenessProbe *LivenessProbe `yaml:"livenessProbe,omitempty" json:"livenessProbe,omitempty" description:"periodic probe of container liveness; container will be restarted if the probe fails"` - Lifecycle *Lifecycle `yaml:"lifecycle,omitempty" json:"lifecycle,omitempty" description:"actions that the management system should take in response to container lifecycle events"` + CPU int `json:"cpu,omitempty" description:"CPU share in thousandths of a core"` + VolumeMounts []VolumeMount `json:"volumeMounts,omitempty" description:"pod volumes to mount into the container's filesystem"` + LivenessProbe *LivenessProbe `json:"livenessProbe,omitempty" description:"periodic probe of container liveness; container will be restarted if the probe fails"` + Lifecycle *Lifecycle `json:"lifecycle,omitempty" description:"actions that the management system should take in response to container lifecycle events"` // Optional: Defaults to /dev/termination-log - TerminationMessagePath string `yaml:"terminationMessagePath,omitempty" json:"terminationMessagePath,omitempty" description:"path at which the file to which the container's termination message will be written is mounted into the container's filesystem; message written is intended to be brief final status, such as an assertion failure message; defaults to /dev/termination-log"` + TerminationMessagePath string `json:"terminationMessagePath,omitempty" description:"path at which the file to which the container's termination message will be written is mounted into the container's filesystem; message written is intended to be brief final status, such as an assertion failure message; defaults to /dev/termination-log"` // Optional: Default to false. - Privileged bool `json:"privileged,omitempty" yaml:"privileged,omitempty" description:"whether or not the container is granted privileged status; defaults to false"` + Privileged bool `json:"privileged,omitempty" description:"whether or not the container is granted privileged status; defaults to false"` // Optional: Policy for pulling images for this container - ImagePullPolicy PullPolicy `json:"imagePullPolicy" yaml:"imagePullPolicy" description:"image pull policy; one of PullAlways, PullNever, PullIfNotPresent; defaults to PullAlways if :latest tag is specified, or PullIfNotPresent otherwise"` + ImagePullPolicy PullPolicy `json:"imagePullPolicy" description:"image pull policy; one of PullAlways, PullNever, PullIfNotPresent; defaults to PullAlways if :latest tag is specified, or PullIfNotPresent otherwise"` } // Handler defines a specific action that should be taken @@ -238,9 +238,9 @@ type Container struct { type Handler struct { // One and only one of the following should be specified. // Exec specifies the action to take. - Exec *ExecAction `yaml:"exec,omitempty" json:"exec,omitempty" description:"exec-based hook handler"` + Exec *ExecAction `json:"exec,omitempty" description:"exec-based hook handler"` // HTTPGet specifies the http request to perform. - HTTPGet *HTTPGetAction `yaml:"httpGet,omitempty" json:"httpGet,omitempty" description:"HTTP-based hook handler"` + HTTPGet *HTTPGetAction `json:"httpGet,omitempty" description:"HTTP-based hook handler"` } // Lifecycle describes actions that the management system should take in response to container lifecycle @@ -249,29 +249,29 @@ type Handler struct { type Lifecycle struct { // PostStart is called immediately after a container is created. If the handler fails, the container // is terminated and restarted. - PostStart *Handler `yaml:"postStart,omitempty" json:"postStart,omitempty" description:"called immediately after a container is started; if the handler fails, the container is terminated and restarted according to its restart policy; other management of the container blocks until the hook completes"` + PostStart *Handler `json:"postStart,omitempty" description:"called immediately after a container is started; if the handler fails, the container is terminated and restarted according to its restart policy; other management of the container blocks until the hook completes"` // PreStop is called immediately before a container is terminated. The reason for termination is // passed to the handler. Regardless of the outcome of the handler, the container is eventually terminated. - PreStop *Handler `yaml:"preStop,omitempty" json:"preStop,omitempty" description:"called before a container is terminated; the container is terminated after the handler completes; other management of the container blocks until the hook completes"` + PreStop *Handler `json:"preStop,omitempty" description:"called before a container is terminated; the container is terminated after the handler completes; other management of the container blocks until the hook completes"` } // The below types are used by kube_client and api_server. // TypeMeta is shared by all objects sent to, or returned from the client. type TypeMeta struct { - Kind string `json:"kind,omitempty" yaml:"kind,omitempty" description:"kind of object, in CamelCase"` - ID string `json:"id,omitempty" yaml:"id,omitempty" description:"name of the object; must be a DNS_SUBDOMAIN and unique among all objects of the same kind within the same namespace; used in resource URLs"` - UID string `json:"uid,omitempty" yaml:"uid,omitempty" description:"UUID assigned by the system upon creation, unique across space and time"` - CreationTimestamp util.Time `json:"creationTimestamp,omitempty" yaml:"creationTimestamp,omitempty" description:"RFC 3339 date and time at which the object was created; recorded by the system; null for lists"` - SelfLink string `json:"selfLink,omitempty" yaml:"selfLink,omitempty" description:"URL for the object"` - ResourceVersion uint64 `json:"resourceVersion,omitempty" yaml:"resourceVersion,omitempty" description:"string that identifies the internal version of this object that can be used by clients to determine when objects have changed; value must be treated as opaque by clients and passed unmodified back to the server"` - APIVersion string `json:"apiVersion,omitempty" yaml:"apiVersion,omitempty" description:"version of the schema the object should have"` - Namespace string `json:"namespace,omitempty" yaml:"namespace,omitempty" description:"namespace to which the object belongs; must be a DNS_SUBDOMAIN; 'default' by default"` + Kind string `json:"kind,omitempty" description:"kind of object, in CamelCase"` + ID string `json:"id,omitempty" description:"name of the object; must be a DNS_SUBDOMAIN and unique among all objects of the same kind within the same namespace; used in resource URLs"` + UID string `json:"uid,omitempty" description:"UUID assigned by the system upon creation, unique across space and time"` + CreationTimestamp util.Time `json:"creationTimestamp,omitempty" description:"RFC 3339 date and time at which the object was created; recorded by the system; null for lists"` + SelfLink string `json:"selfLink,omitempty" description:"URL for the object"` + ResourceVersion uint64 `json:"resourceVersion,omitempty" description:"string that identifies the internal version of this object that can be used by clients to determine when objects have changed; value must be treated as opaque by clients and passed unmodified back to the server"` + APIVersion string `json:"apiVersion,omitempty" description:"version of the schema the object should have"` + Namespace string `json:"namespace,omitempty" description:"namespace to which the object belongs; must be a DNS_SUBDOMAIN; 'default' by default"` // Annotations are unstructured key value data stored with a resource that may be set by // external tooling. They are not queryable and should be preserved when modifying // objects. - Annotations map[string]string `json:"annotations,omitempty" yaml:"annotations,omitempty" description:"map of string keys and values that can be used by external tooling to store and retrieve arbitrary metadata about the object"` + Annotations map[string]string `json:"annotations,omitempty" description:"map of string keys and values that can be used by external tooling to store and retrieve arbitrary metadata about the object"` } // PodStatus represents a status of a pod. @@ -289,46 +289,46 @@ const ( type ContainerStateWaiting struct { // Reason could be pulling image, - Reason string `json:"reason,omitempty" yaml:"reason,omitempty" description:"(brief) reason the container is not yet running, such as pulling its image"` + Reason string `json:"reason,omitempty" description:"(brief) reason the container is not yet running, such as pulling its image"` } type ContainerStateRunning struct { // TODO: change to util.Time - StartedAt time.Time `json:"startedAt,omitempty" yaml:"startedAt,omitempty" description:"time at which the container was last (re-)started"` + StartedAt time.Time `json:"startedAt,omitempty" description:"time at which the container was last (re-)started"` } type ContainerStateTerminated struct { - ExitCode int `json:"exitCode" yaml:"exitCode" description:"exit status from the last termination of the container"` - Signal int `json:"signal,omitempty" yaml:"signal,omitempty" description:"signal from the last termination of the container"` - Reason string `json:"reason,omitempty" yaml:"reason,omitempty" description:"(brief) reason from the last termination of the container"` - Message string `json:"message,omitempty" yaml:"message,omitempty" description:"message regarding the last termination of the container"` + ExitCode int `json:"exitCode" description:"exit status from the last termination of the container"` + Signal int `json:"signal,omitempty" description:"signal from the last termination of the container"` + Reason string `json:"reason,omitempty" description:"(brief) reason from the last termination of the container"` + Message string `json:"message,omitempty" description:"message regarding the last termination of the container"` // TODO: change to util.Time - StartedAt time.Time `json:"startedAt,omitempty" yaml:"startedAt,omitempty" description:"time at which previous execution of the container started"` + StartedAt time.Time `json:"startedAt,omitempty" description:"time at which previous execution of the container started"` // TODO: change to util.Time - FinishedAt time.Time `json:"finishedAt,omitempty" yaml:"finishedAt,omitempty" description:"time at which the container last terminated"` + FinishedAt time.Time `json:"finishedAt,omitempty" description:"time at which the container last terminated"` } // ContainerState holds a possible state of container. // Only one of its members may be specified. // If none of them is specified, the default one is ContainerStateWaiting. type ContainerState struct { - Waiting *ContainerStateWaiting `json:"waiting,omitempty" yaml:"waiting,omitempty" description:"details about a waiting container"` - Running *ContainerStateRunning `json:"running,omitempty" yaml:"running,omitempty" description:"details about a running container"` - Termination *ContainerStateTerminated `json:"termination,omitempty" yaml:"termination,omitempty" description:"details about a terminated container"` + Waiting *ContainerStateWaiting `json:"waiting,omitempty" description:"details about a waiting container"` + Running *ContainerStateRunning `json:"running,omitempty" description:"details about a running container"` + Termination *ContainerStateTerminated `json:"termination,omitempty" description:"details about a terminated container"` } type ContainerStatus struct { // TODO(dchen1107): Should we rename PodStatus to a more generic name or have a separate states // defined for container? - State ContainerState `json:"state,omitempty" yaml:"state,omitempty" description:"details about the container's current condition"` + State ContainerState `json:"state,omitempty" description:"details about the container's current condition"` // Note that this is calculated from dead containers. But those containers are subject to // garbage collection. This value will get capped at 5 by GC. - RestartCount int `json:"restartCount" yaml:"restartCount" description:"the number of times the container has been restarted, currently based on the number of dead containers that have not yet been removed"` + RestartCount int `json:"restartCount" description:"the number of times the container has been restarted, currently based on the number of dead containers that have not yet been removed"` // TODO(dchen1107): Deprecated this soon once we pull entire PodStatus from node, // not just PodInfo. Now we need this to remove docker.Container from API - PodIP string `json:"podIP,omitempty" yaml:"podIP,omitempty" description:"pod's IP address"` + PodIP string `json:"podIP,omitempty" description:"pod's IP address"` // TODO(dchen1107): Need to decide how to reprensent this in v1beta3 - Image string `yaml:"image" json:"image" description:"image of the container"` + Image string `json:"image" description:"image of the container"` } // PodInfo contains one entry for every container with available info. @@ -346,127 +346,127 @@ type RestartPolicy struct { // Only one of the following restart policies may be specified. // If none of the following policies is specified, the default one // is RestartPolicyAlways. - Always *RestartPolicyAlways `json:"always,omitempty" yaml:"always,omitempty" description:"always restart the container after termination"` - OnFailure *RestartPolicyOnFailure `json:"onFailure,omitempty" yaml:"onFailure,omitempty" description:"restart the container if it fails for any reason, but not if it succeeds (exit 0)"` - Never *RestartPolicyNever `json:"never,omitempty" yaml:"never,omitempty" description:"never restart the container"` + Always *RestartPolicyAlways `json:"always,omitempty" description:"always restart the container after termination"` + OnFailure *RestartPolicyOnFailure `json:"onFailure,omitempty" description:"restart the container if it fails for any reason, but not if it succeeds (exit 0)"` + Never *RestartPolicyNever `json:"never,omitempty" description:"never restart the container"` } // PodState is the state of a pod, used as either input (desired state) or output (current state). type PodState struct { - Manifest ContainerManifest `json:"manifest,omitempty" yaml:"manifest,omitempty" description:"manifest of containers and volumes comprising the pod"` - Status PodStatus `json:"status,omitempty" yaml:"status,omitempty" description:"current condition of the pod, Waiting, Running, or Terminated"` + Manifest ContainerManifest `json:"manifest,omitempty" description:"manifest of containers and volumes comprising the pod"` + Status PodStatus `json:"status,omitempty" description:"current condition of the pod, Waiting, Running, or Terminated"` // A human readable message indicating details about why the pod is in this state. - Message string `json:"message,omitempty" yaml:"message,omitempty" description:"human readable message indicating details about why the pod is in this condition"` - Host string `json:"host,omitempty" yaml:"host,omitempty" description:"host to which the pod is assigned; empty if not yet scheduled"` - HostIP string `json:"hostIP,omitempty" yaml:"hostIP,omitempty" description:"IP address of the host to which the pod is assigned; empty if not yet scheduled"` - PodIP string `json:"podIP,omitempty" yaml:"podIP,omitempty" description:"IP address allocated to the pod; routable at least within the cluster; empty if not yet allocated"` + Message string `json:"message,omitempty" description:"human readable message indicating details about why the pod is in this condition"` + Host string `json:"host,omitempty" description:"host to which the pod is assigned; empty if not yet scheduled"` + HostIP string `json:"hostIP,omitempty" description:"IP address of the host to which the pod is assigned; empty if not yet scheduled"` + PodIP string `json:"podIP,omitempty" description:"IP address allocated to the pod; routable at least within the cluster; empty if not yet allocated"` // The key of this map is the *name* of the container within the manifest; it has one // entry per container in the manifest. The value of this map is ContainerStatus for // the container. - Info PodInfo `json:"info,omitempty" yaml:"info,omitempty" description:"map of container name to container status"` + Info PodInfo `json:"info,omitempty" description:"map of container name to container status"` } // PodList is a list of Pods. type PodList struct { - TypeMeta `json:",inline" yaml:",inline"` - Items []Pod `json:"items" yaml:"items" description:"list of pods"` + TypeMeta `json:",inline"` + Items []Pod `json:"items" description:"list of pods"` } // Pod is a collection of containers, used as either input (create, update) or as output (list, get). type Pod struct { - TypeMeta `json:",inline" yaml:",inline"` - Labels map[string]string `json:"labels,omitempty" yaml:"labels,omitempty" description:"map of string keys and values that can be used to organize and categorize pods; may match selectors of replication controllers and services"` - DesiredState PodState `json:"desiredState,omitempty" yaml:"desiredState,omitempty" description:"specification of the desired state of the pod"` - CurrentState PodState `json:"currentState,omitempty" yaml:"currentState,omitempty" description:"current state of the pod"` + TypeMeta `json:",inline"` + Labels map[string]string `json:"labels,omitempty" description:"map of string keys and values that can be used to organize and categorize pods; may match selectors of replication controllers and services"` + DesiredState PodState `json:"desiredState,omitempty" description:"specification of the desired state of the pod"` + CurrentState PodState `json:"currentState,omitempty" description:"current state of the pod"` // NodeSelector is a selector which must be true for the pod to fit on a node - NodeSelector map[string]string `json:"nodeSelector,omitempty" yaml:"nodeSelector,omitempty" description:"selector which must match a node's labels for the pod to be scheduled on that node"` + 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"` } // ReplicationControllerState is the state of a replication controller, either input (create, update) or as output (list, get). type ReplicationControllerState struct { - Replicas int `json:"replicas" yaml:"replicas" description:"number of replicas (desired or observed, as appropriate)"` - ReplicaSelector map[string]string `json:"replicaSelector,omitempty" yaml:"replicaSelector,omitempty" description:"label keys and values that must match in order to be controlled by this replication controller"` - PodTemplate PodTemplate `json:"podTemplate,omitempty" yaml:"podTemplate,omitempty" description:"template for pods to be created by this replication controller when the observed number of replicas is less than the desired number of replicas"` + Replicas int `json:"replicas" description:"number of replicas (desired or observed, as appropriate)"` + ReplicaSelector map[string]string `json:"replicaSelector,omitempty" description:"label keys and values that must match in order to be controlled by this replication controller"` + PodTemplate PodTemplate `json:"podTemplate,omitempty" description:"template for pods to be created by this replication controller when the observed number of replicas is less than the desired number of replicas"` } // ReplicationControllerList is a collection of replication controllers. type ReplicationControllerList struct { - TypeMeta `json:",inline" yaml:",inline"` - Items []ReplicationController `json:"items" yaml:"items" description:"list of replication controllers"` + TypeMeta `json:",inline"` + Items []ReplicationController `json:"items" description:"list of replication controllers"` } // ReplicationController represents the configuration of a replication controller. type ReplicationController struct { - TypeMeta `json:",inline" yaml:",inline"` - DesiredState ReplicationControllerState `json:"desiredState,omitempty" yaml:"desiredState,omitempty" description:"specification of the desired state of the replication controller"` - CurrentState ReplicationControllerState `json:"currentState,omitempty" yaml:"currentState,omitempty" description:"current state of the replication controller"` - Labels map[string]string `json:"labels,omitempty" yaml:"labels,omitempty" description:"map of string keys and values that can be used to organize and categorize replication controllers"` + TypeMeta `json:",inline"` + DesiredState ReplicationControllerState `json:"desiredState,omitempty" description:"specification of the desired state of the replication controller"` + CurrentState ReplicationControllerState `json:"currentState,omitempty" description:"current state of the replication controller"` + Labels map[string]string `json:"labels,omitempty" description:"map of string keys and values that can be used to organize and categorize replication controllers"` } // PodTemplate holds the information used for creating pods. type PodTemplate struct { - DesiredState PodState `json:"desiredState,omitempty" yaml:"desiredState,omitempty" description:"specification of the desired state of pods created from this template"` - Labels map[string]string `json:"labels,omitempty" yaml:"labels,omitempty" description:"map of string keys and values that can be used to organize and categorize the pods created from the template; must match the selector of the replication controller to which the template belongs; may match selectors of services"` + DesiredState PodState `json:"desiredState,omitempty" description:"specification of the desired state of pods created from this template"` + Labels map[string]string `json:"labels,omitempty" description:"map of string keys and values that can be used to organize and categorize the pods created from the template; must match the selector of the replication controller to which the template belongs; may match selectors of services"` } // ServiceList holds a list of services. type ServiceList struct { - TypeMeta `json:",inline" yaml:",inline"` - Items []Service `json:"items" yaml:"items" description:"list of services"` + TypeMeta `json:",inline"` + Items []Service `json:"items" description:"list of services"` } // Service is a named abstraction of software service (for example, mysql) consisting of local port // (for example 3306) that the proxy listens on, and the selector that determines which pods // will answer requests sent through the proxy. type Service struct { - TypeMeta `json:",inline" yaml:",inline"` + TypeMeta `json:",inline"` // Required. - Port int `json:"port" yaml:"port" description:"port exposed by the service"` + Port int `json:"port" description:"port exposed by the service"` // Optional: Defaults to "TCP". - Protocol Protocol `yaml:"protocol,omitempty" json:"protocol,omitempty" description:"protocol for port; must be UDP or TCP; TCP if unspecified"` + Protocol Protocol `json:"protocol,omitempty" description:"protocol for port; must be UDP or TCP; TCP if unspecified"` // This service's labels. - Labels map[string]string `json:"labels,omitempty" yaml:"labels,omitempty" description:"map of string keys and values that can be used to organize and categorize services"` + Labels map[string]string `json:"labels,omitempty" description:"map of string keys and values that can be used to organize and categorize services"` // This service will route traffic to pods having labels matching this selector. - Selector map[string]string `json:"selector,omitempty" yaml:"selector,omitempty" description:"label keys and values that must match in order to receive traffic for this service"` - CreateExternalLoadBalancer bool `json:"createExternalLoadBalancer,omitempty" yaml:"createExternalLoadBalancer,omitempty" description:"set up a cloud-provider-specific load balancer on an external IP"` + Selector map[string]string `json:"selector,omitempty" description:"label keys and values that must match in order to receive traffic for this service"` + CreateExternalLoadBalancer bool `json:"createExternalLoadBalancer,omitempty" description:"set up a cloud-provider-specific load balancer on an external IP"` // PublicIPs are used by external load balancers. - PublicIPs []string `json:"publicIPs,omitempty" yaml:"publicIPs,omitempty" description:"externally visible IPs from which to select the address for the external load balancer"` + PublicIPs []string `json:"publicIPs,omitempty" description:"externally visible IPs from which to select the address for the external load balancer"` // ContainerPort is the name of the port on the container to direct traffic to. // Optional, if unspecified use the first port on the container. - ContainerPort util.IntOrString `json:"containerPort,omitempty" yaml:"containerPort,omitempty" description:"number or name of the port to access on the containers belonging to pods targeted by the service"` + ContainerPort util.IntOrString `json:"containerPort,omitempty" description:"number or name of the port to access on the containers belonging to pods targeted by the service"` // 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 // not be changed by updates. - PortalIP string `json:"portalIP,omitempty" yaml:"portalIP,omitempty" description:"IP address of the service; usually assigned by the system; if specified, it will be allocated to the service if unused, and creation of the service will fail otherwise; cannot be updated"` + PortalIP string `json:"portalIP,omitempty" description:"IP address of the service; usually assigned by the system; if specified, it will be allocated to the service if unused, and creation of the service will fail otherwise; cannot be updated"` // ProxyPort is assigned by the master. If specified by the user it will be ignored. - ProxyPort int `json:"proxyPort,omitempty" yaml:"proxyPort,omitempty" description:"if non-zero, a pre-allocated host port used for this service by the proxy on each node; assigned by the master and ignored on input"` + ProxyPort int `json:"proxyPort,omitempty" description:"if non-zero, a pre-allocated host port used for this service by the proxy on each node; assigned by the master and ignored on input"` } // Endpoints is a collection of endpoints that implement the actual service, for example: // Name: "mysql", Endpoints: ["10.10.1.1:1909", "10.10.2.2:8834"] type Endpoints struct { - TypeMeta `json:",inline" yaml:",inline"` - Endpoints []string `json:"endpoints,omitempty" yaml:"endpoints,omitempty" description:"list of endpoints corresponding to a service, of the form address:port, such as 10.10.1.1:1909"` + TypeMeta `json:",inline"` + Endpoints []string `json:"endpoints,omitempty" description:"list of endpoints corresponding to a service, of the form address:port, such as 10.10.1.1:1909"` } // EndpointsList is a list of endpoints. type EndpointsList struct { - TypeMeta `json:",inline" yaml:",inline"` - Items []Endpoints `json:"items" yaml:"items" description:"list of service endpoint lists"` + TypeMeta `json:",inline"` + Items []Endpoints `json:"items" description:"list of service endpoint lists"` } // NodeResources represents resources on a Kubernetes system node // see https://github.com/GoogleCloudPlatform/kubernetes/blob/master/docs/resources.md for more details. type NodeResources struct { // Capacity represents the available resources. - Capacity ResourceList `json:"capacity,omitempty" yaml:"capacity,omitempty" description:"resource capacity of a node represented as a map of resource name to quantity of resource"` + Capacity ResourceList `json:"capacity,omitempty" description:"resource capacity of a node represented as a map of resource name to quantity of resource"` } type ResourceName string @@ -476,49 +476,49 @@ type ResourceList map[ResourceName]util.IntOrString // Minion is a worker node in Kubernetenes. // The name of the minion according to etcd is in ID. type Minion struct { - TypeMeta `json:",inline" yaml:",inline"` + TypeMeta `json:",inline"` // Queried from cloud provider, if available. - HostIP string `json:"hostIP,omitempty" yaml:"hostIP,omitempty" description:"IP address of the node"` + HostIP string `json:"hostIP,omitempty" description:"IP address of the node"` // Resources available on the node - NodeResources NodeResources `json:"resources,omitempty" yaml:"resources,omitempty" description:"characterization of node resources"` + NodeResources NodeResources `json:"resources,omitempty" description:"characterization of node resources"` // Labels for the node - Labels map[string]string `json:"labels,omitempty" yaml:"labels,omitempty" description:"map of string keys and values that can be used to organize and categorize minions; labels of a minion assigned by the scheduler must match the scheduled pod's nodeSelector"` + Labels map[string]string `json:"labels,omitempty" description:"map of string keys and values that can be used to organize and categorize minions; labels of a minion assigned by the scheduler must match the scheduled pod's nodeSelector"` } // MinionList is a list of minions. type MinionList struct { - TypeMeta `json:",inline" yaml:",inline"` - Items []Minion `json:"items" yaml:"items" description:"list of nodes"` + TypeMeta `json:",inline"` + Items []Minion `json:"items" description:"list of nodes"` } // Binding is written by a scheduler to cause a pod to be bound to a host. type Binding struct { - TypeMeta `json:",inline" yaml:",inline"` - PodID string `json:"podID" yaml:"podID" description:"name of the pod to bind"` - Host string `json:"host" yaml:"host" description:"host to which to bind the specified pod"` + TypeMeta `json:",inline"` + PodID string `json:"podID" description:"name of the pod to bind"` + Host string `json:"host" description:"host to which to bind the specified pod"` } // Status is a return value for calls that don't return other objects. // TODO: this could go in apiserver, but I'm including it here so clients needn't // import both. type Status struct { - TypeMeta `json:",inline" yaml:",inline"` + TypeMeta `json:",inline"` // One of: "Success", "Failure", "Working" (for operations not yet completed) - Status string `json:"status,omitempty" yaml:"status,omitempty" description:"status of the operation; either Working (not yet completed), Success, or Failure"` + Status string `json:"status,omitempty" description:"status of the operation; either Working (not yet completed), Success, or Failure"` // A human-readable description of the status of this operation. - Message string `json:"message,omitempty" yaml:"message,omitempty" description:"human-readable description of the status of this operation"` + Message string `json:"message,omitempty" description:"human-readable description of the status of this operation"` // A machine-readable description of why this operation is in the // "Failure" or "Working" status. If this value is empty there // is no information available. A Reason clarifies an HTTP status // code but does not override it. - Reason StatusReason `json:"reason,omitempty" yaml:"reason,omitempty" description:"machine-readable description of why this operation is in the 'Failure' or 'Working' status; if this value is empty there is no information available; a reason clarifies an HTTP status code but does not override it"` + Reason StatusReason `json:"reason,omitempty" description:"machine-readable description of why this operation is in the 'Failure' or 'Working' status; if this value is empty there is no information available; a reason clarifies an HTTP status code but does not override it"` // Extended data associated with the reason. Each reason may define its // own extended details. This field is optional and the data returned // is not guaranteed to conform to any schema except that defined by // the reason type. - Details *StatusDetails `json:"details,omitempty" yaml:"details,omitempty" description:"extended data associated with the reason; each reason may define its own extended details; this field is optional and the data returned is not guaranteed to conform to any schema except that defined by the reason type"` + Details *StatusDetails `json:"details,omitempty" description:"extended data associated with the reason; each reason may define its own extended details; this field is optional and the data returned is not guaranteed to conform to any schema except that defined by the reason type"` // Suggested HTTP return code for this status, 0 if not set. - Code int `json:"code,omitempty" yaml:"code,omitempty" description:"suggested HTTP return code for this status; 0 if not set"` + Code int `json:"code,omitempty" description:"suggested HTTP return code for this status; 0 if not set"` } // StatusDetails is a set of additional properties that MAY be set by the @@ -530,13 +530,13 @@ type Status struct { type StatusDetails struct { // The ID attribute of the resource associated with the status StatusReason // (when there is a single ID which can be described). - ID string `json:"id,omitempty" yaml:"id,omitempty" description:"the ID attribute of the resource associated with the status StatusReason (when there is a single ID which can be described)"` + ID string `json:"id,omitempty" description:"the ID attribute of the resource associated with the status StatusReason (when there is a single ID which can be described)"` // The kind attribute of the resource associated with the status StatusReason. // On some operations may differ from the requested resource Kind. - Kind string `json:"kind,omitempty" yaml:"kind,omitempty" description:"the kind attribute of the resource associated with the status StatusReason; on some operations may differ from the requested resource Kind"` + Kind string `json:"kind,omitempty" description:"the kind attribute of the resource associated with the status StatusReason; on some operations may differ from the requested resource Kind"` // The Causes array includes more details associated with the StatusReason // failure. Not all StatusReasons may provide detailed causes. - Causes []StatusCause `json:"causes,omitempty" yaml:"causes,omitempty" description:"the Causes array includes more details associated with the StatusReason failure; not all StatusReasons may provide detailed causes"` + Causes []StatusCause `json:"causes,omitempty" description:"the Causes array includes more details associated with the StatusReason failure; not all StatusReasons may provide detailed causes"` } // Values of Status.Status @@ -613,10 +613,10 @@ const ( type StatusCause struct { // A machine-readable description of the cause of the error. If this value is // empty there is no information available. - Type CauseType `json:"reason,omitempty" yaml:"reason,omitempty" description:"machine-readable description of the cause of the error; if this value is empty there is no information available"` + Type CauseType `json:"reason,omitempty" description:"machine-readable description of the cause of the error; if this value is empty there is no information available"` // A human-readable description of the cause of the error. This field may be // presented as-is to a reader. - Message string `json:"message,omitempty" yaml:"message,omitempty" description:"human-readable description of the cause of the error; this field may be presented as-is to a reader"` + Message string `json:"message,omitempty" description:"human-readable description of the cause of the error; this field may be presented as-is to a reader"` // The field of the resource that has caused this error, as named by its JSON // serialization. May include dot and postfix notation for nested attributes. // Arrays are zero-indexed. Fields may appear more than once in an array of @@ -626,7 +626,7 @@ type StatusCause struct { // Examples: // "name" - the field "name" on the current resource // "items[0].name" - the field "name" on the first array entry in "items" - Field string `json:"field,omitempty" yaml:"field,omitempty" description:"field of the resource that has caused this error, as named by its JSON serialization; may include dot and postfix notation for nested attributes; arrays are zero-indexed; fields may appear more than once in an array of causes due to fields having multiple errors"` + Field string `json:"field,omitempty" description:"field of the resource that has caused this error, as named by its JSON serialization; may include dot and postfix notation for nested attributes; arrays are zero-indexed; fields may appear more than once in an array of causes due to fields having multiple errors"` } // CauseType is a machine readable value providing more detail about what @@ -654,23 +654,23 @@ const ( // ServerOp is an operation delivered to API clients. type ServerOp struct { - TypeMeta `yaml:",inline" json:",inline"` + TypeMeta `json:",inline"` } // ServerOpList is a list of operations, as delivered to API clients. type ServerOpList struct { - TypeMeta `yaml:",inline" json:",inline"` - Items []ServerOp `yaml:"items" json:"items" description:"list of operations"` + TypeMeta `json:",inline"` + Items []ServerOp `json:"items" description:"list of operations"` } // ObjectReference contains enough information to let you inspect or modify the referred object. type ObjectReference struct { - Kind string `json:"kind,omitempty" yaml:"kind,omitempty" description:"kind of the referent"` - Namespace string `json:"namespace,omitempty" yaml:"namespace,omitempty" description:"namespace of the referent"` - ID string `json:"name,omitempty" yaml:"name,omitempty" description:"id of the referent"` - UID string `json:"uid,omitempty" yaml:"uid,omitempty" description:"uid of the referent"` - APIVersion string `json:"apiVersion,omitempty" yaml:"apiVersion,omitempty" description:"API version of the referent"` - ResourceVersion string `json:"resourceVersion,omitempty" yaml:"resourceVersion,omitempty" description:"specific resourceVersion to which this reference is made, if any"` + Kind string `json:"kind,omitempty" description:"kind of the referent"` + Namespace string `json:"namespace,omitempty" description:"namespace of the referent"` + ID string `json:"name,omitempty" description:"id of the referent"` + UID string `json:"uid,omitempty" description:"uid of the referent"` + APIVersion string `json:"apiVersion,omitempty" description:"API version of the referent"` + ResourceVersion string `json:"resourceVersion,omitempty" description:"specific resourceVersion to which this reference is made, if any"` // Optional. If referring to a piece of an object instead of an entire object, this string // should contain a valid field access statement. For example, @@ -679,16 +679,16 @@ type ObjectReference struct { // both go and JavaScript. This is syntax is chosen only to have some well-defined way of // referencing a part of an object. // TODO: this design is not final and this field is subject to change in the future. - FieldPath string `json:"fieldPath,omitempty" yaml:"fieldPath,omitempty" description:"if referring to a piece of an object instead of an entire object, this string should contain a valid JSON/Go field access statement, such as desiredState.manifest.containers[2]"` + FieldPath string `json:"fieldPath,omitempty" description:"if referring to a piece of an object instead of an entire object, this string should contain a valid JSON/Go field access statement, such as desiredState.manifest.containers[2]"` } // Event is a report of an event somewhere in the cluster. // TODO: Decide whether to store these separately or with the object they apply to. type Event struct { - TypeMeta `yaml:",inline" json:",inline"` + TypeMeta `json:",inline"` // Required. The object that this event is about. - InvolvedObject ObjectReference `json:"involvedObject,omitempty" yaml:"involvedObject,omitempty" description:"object that this event is about"` + InvolvedObject ObjectReference `json:"involvedObject,omitempty" description:"object that this event is about"` // Should be a short, machine understandable string that describes the current status // of the referred object. This should not give the reason for being in this state. @@ -697,30 +697,30 @@ type Event struct { // always be used for the same status. // TODO: define a way of making sure these are consistent and don't collide. // TODO: provide exact specification for format. - Status string `json:"status,omitempty" yaml:"status,omitempty" description:"short, machine understandable string that describes the current status of the referred object"` + Status string `json:"status,omitempty" description:"short, machine understandable string that describes the current status of the referred object"` // Optional; this should be a short, machine understandable string that gives the reason // for the transition into the object's current status. For example, if ObjectStatus is // "cantStart", StatusReason might be "imageNotFound". // TODO: provide exact specification for format. - Reason string `json:"reason,omitempty" yaml:"reason,omitempty" description:"short, machine understandable string that gives the reason for the transition into the object's current status"` + Reason string `json:"reason,omitempty" description:"short, machine understandable string that gives the reason for the transition into the object's current status"` // Optional. A human-readable description of the status of this operation. // TODO: decide on maximum length. - Message string `json:"message,omitempty" yaml:"message,omitempty" description:"human-readable description of the status of this operation"` + Message string `json:"message,omitempty" description:"human-readable description of the status of this operation"` // Optional. The component reporting this event. Should be a short machine understandable string. // TODO: provide exact specification for format. - Source string `json:"source,omitempty" yaml:"source,omitempty" description:"component reporting this event; short machine understandable string"` + Source string `json:"source,omitempty" description:"component reporting this event; short machine understandable string"` // The time at which the client recorded the event. (Time of server receipt is in TypeMeta.) - Timestamp util.Time `json:"timestamp,omitempty" yaml:"timestamp,omitempty" description:"time at which the client recorded the event"` + Timestamp util.Time `json:"timestamp,omitempty" description:"time at which the client recorded the event"` } // EventList is a list of events. type EventList struct { - TypeMeta `yaml:",inline" json:",inline"` - Items []Event `yaml:"items" json:"items" description:"list of events"` + TypeMeta `json:",inline"` + Items []Event `json:"items" description:"list of events"` } // ContainerManifest corresponds to the Container Manifest format, documented at: @@ -729,55 +729,55 @@ type EventList struct { // DEPRECATED: Replaced with BoundPod type ContainerManifest struct { // Required: This must be a supported version string, such as "v1beta1". - Version string `yaml:"version" json:"version" description:"manifest version; must be v1beta1"` + Version string `json:"version" description:"manifest version; must be v1beta1"` // Required: This must be a DNS_SUBDOMAIN. // TODO: ID on Manifest is deprecated and will be removed in the future. - ID string `yaml:"id" json:"id" description:"manifest name; must be a DNS_SUBDOMAIN"` + ID string `json:"id" description:"manifest name; must be a DNS_SUBDOMAIN"` // TODO: UUID on Manifext is deprecated in the future once we are done // with the API refactory. It is required for now to determine the instance // of a Pod. - UUID string `yaml:"uuid,omitempty" json:"uuid,omitempty" description:"manifest UUID"` - Volumes []Volume `yaml:"volumes" json:"volumes" description:"list of volumes that can be mounted by containers belonging to the pod"` - Containers []Container `yaml:"containers" json:"containers" description:"list of containers belonging to the pod"` - RestartPolicy RestartPolicy `json:"restartPolicy,omitempty" yaml:"restartPolicy,omitempty" description:"restart policy for all containers within the pod; one of RestartPolicyAlways, RestartPolicyOnFailure, RestartPolicyNever"` + UUID string `json:"uuid,omitempty" description:"manifest UUID"` + Volumes []Volume `json:"volumes" description:"list of volumes that can be mounted by containers belonging to the pod"` + Containers []Container `json:"containers" description:"list of containers belonging to the pod"` + RestartPolicy RestartPolicy `json:"restartPolicy,omitempty" description:"restart policy for all containers within the pod; one of RestartPolicyAlways, RestartPolicyOnFailure, RestartPolicyNever"` } // ContainerManifestList is used to communicate container manifests to kubelet. // DEPRECATED: Replaced with BoundPods type ContainerManifestList struct { - TypeMeta `json:",inline" yaml:",inline"` - Items []ContainerManifest `json:"items" yaml:"items" description:"list of pod container manifests"` + TypeMeta `json:",inline"` + Items []ContainerManifest `json:"items" description:"list of pod container manifests"` } // Backported from v1beta3 to replace ContainerManifest // PodSpec is a description of a pod type PodSpec struct { - Volumes []Volume `json:"volumes" yaml:"volumes" description:"list of volumes that can be mounted by containers belonging to the pod"` - Containers []Container `json:"containers" yaml:"containers" description:"list of containers belonging to the pod"` - RestartPolicy RestartPolicy `json:"restartPolicy,omitempty" yaml:"restartPolicy,omitempty" description:"restart policy for all containers within the pod; one of RestartPolicyAlways, RestartPolicyOnFailure, RestartPolicyNever"` + Volumes []Volume `json:"volumes" description:"list of volumes that can be mounted by containers belonging to the pod"` + Containers []Container `json:"containers" description:"list of containers belonging to the pod"` + RestartPolicy RestartPolicy `json:"restartPolicy,omitempty" description:"restart policy for all containers within the pod; one of RestartPolicyAlways, RestartPolicyOnFailure, RestartPolicyNever"` // NodeSelector is a selector which must be true for the pod to fit on a node - NodeSelector map[string]string `json:"nodeSelector,omitempty" yaml:"nodeSelector,omitempty" description:"selector which must match a node's labels for the pod to be scheduled on that node"` + 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"` } // BoundPod is a collection of containers that should be run on a host. A BoundPod // defines how a Pod may change after a Binding is created. A Pod is a request to // execute a pod, whereas a BoundPod is the specification that would be run on a server. type BoundPod struct { - TypeMeta `json:",inline" yaml:",inline"` + TypeMeta `json:",inline"` // Spec defines the behavior of a pod. - Spec PodSpec `json:"spec,omitempty" yaml:"spec,omitempty" description:"specification of the desired state of containers and volumes comprising the pod"` + Spec PodSpec `json:"spec,omitempty" description:"specification of the desired state of containers and volumes comprising the pod"` } // BoundPods is a list of Pods bound to a common server. The resource version of // the pod list is guaranteed to only change when the list of bound pods changes. type BoundPods struct { - TypeMeta `json:",inline" yaml:",inline"` + TypeMeta `json:",inline"` // Host is the name of a node that these pods were bound to. - Host string `json:"host" yaml:"host" description:"name of a node that these pods were bound to"` + Host string `json:"host" description:"name of a node that these pods were bound to"` // Items is the list of all pods bound to a given host. - Items []BoundPod `json:"items" yaml:"items" description:"list of all pods bound to a given host"` + Items []BoundPod `json:"items" description:"list of all pods bound to a given host"` } diff --git a/pkg/api/v1beta3/types.go b/pkg/api/v1beta3/types.go index 92b982114d4..65160c5dc6c 100644 --- a/pkg/api/v1beta3/types.go +++ b/pkg/api/v1beta3/types.go @@ -51,25 +51,25 @@ import ( type TypeMeta struct { // Kind is a string value representing the REST resource this object represents. // Servers may infer this from the endpoint the client submits requests to. - Kind string `json:"kind,omitempty" yaml:"kind,omitempty"` + Kind string `json:"kind,omitempty"` // APIVersion defines the versioned schema of this representation of an object. // Servers should convert recognized schemas to the latest internal value, and // may reject unrecognized values. - APIVersion string `json:"apiVersion,omitempty" yaml:"apiVersion,omitempty"` + APIVersion string `json:"apiVersion,omitempty"` } // ListMeta describes metadata that synthetic resources must have, including lists and // various status objects. type ListMeta struct { // SelfLink is a URL representing this object. - SelfLink string `json:"selfLink,omitempty" yaml:"selfLink,omitempty"` + SelfLink string `json:"selfLink,omitempty"` // An opaque value that represents the version of this response for use with optimistic // concurrency and change monitoring endpoints. Clients must treat these values as opaque // and values may only be valid for a particular resource or set of resources. Only servers // will generate resource versions. - ResourceVersion string `json:"resourceVersion,omitempty" yaml:"resourceVersion,omitempty"` + ResourceVersion string `json:"resourceVersion,omitempty"` } // ObjectMeta is metadata that all persisted resources must have, which includes all objects @@ -79,41 +79,41 @@ type ObjectMeta struct { // some resources may allow a client to request the generation of an appropriate name // automatically. Name is primarily intended for creation idempotence and configuration // definition. - Name string `json:"name,omitempty" yaml:"name,omitempty"` + Name string `json:"name,omitempty"` // Namespace defines the space within which name must be unique. An empty namespace is // equivalent to the "default" namespace, but "default" is the canonical representation. // Not all objects are required to be scoped to a namespace - the value of this field for // those objects will be empty. - Namespace string `json:"namespace,omitempty" yaml:"namespace,omitempty"` + Namespace string `json:"namespace,omitempty"` // SelfLink is a URL representing this object. - SelfLink string `json:"selfLink,omitempty" yaml:"selfLink,omitempty"` + SelfLink string `json:"selfLink,omitempty"` // UID is the unique in time and space value for this object. It is typically generated by // the server on successful creation of a resource and is not allowed to change on PUT // operations. - UID string `json:"uid,omitempty" yaml:"uid,omitempty"` + UID string `json:"uid,omitempty"` // An opaque value that represents the version of this resource. May be used for optimistic // concurrency, change detection, and the watch operation on a resource or set of resources. // Clients must treat these values as opaque and values may only be valid for a particular // resource or set of resources. Only servers will generate resource versions. - ResourceVersion string `json:"resourceVersion,omitempty" yaml:"resourceVersion,omitempty"` + ResourceVersion string `json:"resourceVersion,omitempty"` // CreationTimestamp is a timestamp representing the server time when this object was // created. It is not guaranteed to be set in happens-before order across separate operations. // Clients may not set this value. It is represented in RFC3339 form and is in UTC. - CreationTimestamp util.Time `json:"creationTimestamp,omitempty" yaml:"creationTimestamp,omitempty"` + CreationTimestamp util.Time `json:"creationTimestamp,omitempty"` // Labels are key value pairs that may be used to scope and select individual resources. // TODO: replace map[string]string with labels.LabelSet type - Labels map[string]string `json:"labels,omitempty" yaml:"labels,omitempty"` + Labels map[string]string `json:"labels,omitempty"` // Annotations are unstructured key value data stored with a resource that may be set by // external tooling. They are not queryable and should be preserved when modifying // objects. - Annotations map[string]string `json:"annotations,omitempty" yaml:"annotations,omitempty"` + Annotations map[string]string `json:"annotations,omitempty"` } const ( @@ -131,39 +131,39 @@ const ( //// directly. //type ContainerManifest struct { // // Required: This must be a supported version string, such as "v1beta1". -// Version string `json:"version" yaml:"version"` +// Version string `json:"version"` // // Required: This must be a DNS_SUBDOMAIN. // // TODO: ID on Manifest is deprecated and will be removed in the future. -// ID string `json:"id" yaml:"id"` +// ID string `json:"id"` // // TODO: UUID on Manifest is deprecated in the future once we are done // // with the API refactoring. It is required for now to determine the instance // // of a Pod. -// UUID string `json:"uuid,omitempty" yaml:"uuid,omitempty"` -// Volumes []Volume `json:"volumes" yaml:"volumes"` -// Containers []Container `json:"containers" yaml:"containers"` -// RestartPolicy RestartPolicy `json:"restartPolicy,omitempty" yaml:"restartPolicy,omitempty"` +// UUID string `json:"uuid,omitempty"` +// Volumes []Volume `json:"volumes"` +// Containers []Container `json:"containers"` +// RestartPolicy RestartPolicy `json:"restartPolicy,omitempty"` //} // //// ContainerManifestList is used to communicate container manifests to kubelet. //// DEPRECATED: Exists to allow backwards compatible storage for clients accessing etcd //// directly. //type ContainerManifestList struct { -// TypeMeta `json:",inline" yaml:",inline"` +// TypeMeta `json:",inline"` // // ID is the legacy field representing Name -// ID string `json:"id,omitempty" yaml:"id,omitempty"` +// ID string `json:"id,omitempty"` // -// Items []ContainerManifest `json:"items,omitempty" yaml:"items,omitempty"` +// Items []ContainerManifest `json:"items,omitempty"` //} // Volume represents a named volume in a pod that may be accessed by any containers in the pod. type Volume struct { // Required: This must be a DNS_LABEL. Each volume in a pod must have // a unique name. - Name string `json:"name" yaml:"name"` + Name string `json:"name"` // 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. - Source *VolumeSource `json:"source" yaml:"source"` + Source *VolumeSource `json:"source"` } // VolumeSource represents the source location of a valume to mount. @@ -174,19 +174,19 @@ type VolumeSource struct { // things that are allowed 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. - HostDir *HostDir `json:"hostDir" yaml:"hostDir"` + HostDir *HostDir `json:"hostDir"` // EmptyDir represents a temporary directory that shares a pod's lifetime. - EmptyDir *EmptyDir `json:"emptyDir" yaml:"emptyDir"` + EmptyDir *EmptyDir `json:"emptyDir"` // GCEPersistentDisk represents a GCE Disk resource that is attached to a // kubelet's host machine and then exposed to the pod. - GCEPersistentDisk *GCEPersistentDisk `yaml:"persistentDisk" json:"persistentDisk"` + GCEPersistentDisk *GCEPersistentDisk `json:"persistentDisk"` // GitRepo represents a git repository at a particular revision. - GitRepo *GitRepo `json:"gitRepo" yaml:"gitRepo"` + GitRepo *GitRepo `json:"gitRepo"` } // HostDir represents bare host directory volume. type HostDir struct { - Path string `json:"path" yaml:"path"` + Path string `json:"path"` } type EmptyDir struct{} @@ -208,76 +208,76 @@ const ( // A GCE PD can only be mounted as read/write once. type GCEPersistentDisk struct { // Unique name of the PD resource. Used to identify the disk in GCE - PDName string `yaml:"pdName" json:"pdName"` + PDName string `json:"pdName"` // 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 `yaml:"fsType,omitempty" json:"fsType,omitempty"` + FSType string `json:"fsType,omitempty"` // 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. - Partition int `yaml:"partition,omitempty" json:"partition,omitempty"` + Partition int `json:"partition,omitempty"` // Optional: Defaults to false (read/write). ReadOnly here will force // the ReadOnly setting in VolumeMounts. - ReadOnly bool `yaml:"readOnly,omitempty" json:"readOnly,omitempty"` + ReadOnly bool `json:"readOnly,omitempty"` } // GitRepo represents a volume that is pulled from git when the pod is created. type GitRepo struct { // Repository URL - Repository string `yaml:"repository" json:"repository"` + Repository string `json:"repository"` // Commit hash, this is optional - Revision string `yaml:"revision" json:"revision"` + Revision string `json:"revision"` } // Port represents a network port in a single container. type Port struct { // Optional: If specified, this must be a DNS_LABEL. Each named port // in a pod must have a unique name. - Name string `json:"name,omitempty" yaml:"name,omitempty"` + Name string `json:"name,omitempty"` // Optional: If specified, this must be a valid port number, 0 < x < 65536. - HostPort int `json:"hostPort,omitempty" yaml:"hostPort,omitempty"` + HostPort int `json:"hostPort,omitempty"` // Required: This must be a valid port number, 0 < x < 65536. - ContainerPort int `json:"containerPort" yaml:"containerPort"` + ContainerPort int `json:"containerPort"` // Optional: Supports "TCP" and "UDP". Defaults to "TCP". - Protocol Protocol `json:"protocol,omitempty" yaml:"protocol,omitempty"` + Protocol Protocol `json:"protocol,omitempty"` // Optional: What host IP to bind the external port to. - HostIP string `json:"hostIP,omitempty" yaml:"hostIP,omitempty"` + HostIP string `json:"hostIP,omitempty"` } // VolumeMount describes a mounting of a Volume within a container. type VolumeMount struct { // Required: This must match the Name of a Volume [above]. - Name string `json:"name" yaml:"name"` + Name string `json:"name"` // Optional: Defaults to false (read-write). - ReadOnly bool `json:"readOnly,omitempty" yaml:"readOnly,omitempty"` + ReadOnly bool `json:"readOnly,omitempty"` // Required. - MountPath string `json:"mountPath,omitempty" yaml:"mountPath,omitempty"` + MountPath string `json:"mountPath,omitempty"` } // EnvVar represents an environment variable present in a Container. type EnvVar struct { // Required: This must be a C_IDENTIFIER. - Name string `json:"name" yaml:"name"` + Name string `json:"name"` // Optional: defaults to "". - Value string `json:"value,omitempty" yaml:"value,omitempty"` + Value string `json:"value,omitempty"` } // HTTPGetAction describes an action based on HTTP Get requests. type HTTPGetAction struct { // Optional: Path to access on the HTTP server. - Path string `json:"path,omitempty" yaml:"path,omitempty"` + Path string `json:"path,omitempty"` // Required: Name or number of the port to access on the container. - Port util.IntOrString `json:"port,omitempty" yaml:"port,omitempty"` + Port util.IntOrString `json:"port,omitempty"` // Optional: Host name to connect to, defaults to the pod IP. - Host string `json:"host,omitempty" yaml:"host,omitempty"` + Host string `json:"host,omitempty"` } // TCPSocketAction describes an action based on opening a socket type TCPSocketAction struct { // Required: Port to connect to. - Port util.IntOrString `json:"port,omitempty" yaml:"port,omitempty"` + Port util.IntOrString `json:"port,omitempty"` } // ExecAction describes a "run in container" action. @@ -286,22 +286,22 @@ type ExecAction struct { // command is root ('/') in the container's filesystem. The command is simply exec'd, it is // not run inside a shell, so traditional shell instructions ('|', etc) won't work. To use // a shell, you need to explicitly call out to that shell. - Command []string `json:"command,omitempty" yaml:"command,omitempty"` + Command []string `json:"command,omitempty"` } // LivenessProbe describes how to probe a container for liveness. // TODO: pass structured data to the actions, and document that data here. type LivenessProbe struct { // Type of liveness probe. Current legal values "HTTP", "TCP", "Exec" - Type string `json:"type,omitempty" yaml:"type,omitempty"` + Type string `json:"type,omitempty"` // HTTPGetProbe parameters, required if Type == 'HTTP' - HTTPGet *HTTPGetAction `json:"httpGet,omitempty" yaml:"httpGet,omitempty"` + HTTPGet *HTTPGetAction `json:"httpGet,omitempty"` // TCPSocketProbe parameter, required if Type == 'TCP' - TCPSocket *TCPSocketAction `json:"tcpSocket,omitempty" yaml:"tcpSocket,omitempty"` + TCPSocket *TCPSocketAction `json:"tcpSocket,omitempty"` // ExecProbe parameter, required if Type == 'Exec' - Exec *ExecAction `json:"exec,omitempty" yaml:"exec,omitempty"` + Exec *ExecAction `json:"exec,omitempty"` // Length of time before health checking is activated. In seconds. - InitialDelaySeconds int64 `json:"initialDelaySeconds,omitempty" yaml:"initialDelaySeconds,omitempty"` + InitialDelaySeconds int64 `json:"initialDelaySeconds,omitempty"` } // PullPolicy describes a policy for if/when to pull a container image @@ -320,28 +320,28 @@ const ( type Container struct { // Required: This must be a DNS_LABEL. Each container in a pod must // have a unique name. - Name string `json:"name" yaml:"name"` + Name string `json:"name"` // Required. - Image string `json:"image" yaml:"image"` + Image string `json:"image"` // Optional: Defaults to whatever is defined in the image. - Command []string `json:"command,omitempty" yaml:"command,omitempty"` + Command []string `json:"command,omitempty"` // Optional: Defaults to Docker's default. - WorkingDir string `json:"workingDir,omitempty" yaml:"workingDir,omitempty"` - Ports []Port `json:"ports,omitempty" yaml:"ports,omitempty"` - Env []EnvVar `json:"env,omitempty" yaml:"env,omitempty"` + WorkingDir string `json:"workingDir,omitempty"` + Ports []Port `json:"ports,omitempty"` + Env []EnvVar `json:"env,omitempty"` // Optional: Defaults to unlimited. - Memory int `json:"memory,omitempty" yaml:"memory,omitempty"` + Memory int `json:"memory,omitempty"` // Optional: Defaults to unlimited. - CPU int `json:"cpu,omitempty" yaml:"cpu,omitempty"` - VolumeMounts []VolumeMount `json:"volumeMounts,omitempty" yaml:"volumeMounts,omitempty"` - LivenessProbe *LivenessProbe `json:"livenessProbe,omitempty" yaml:"livenessProbe,omitempty"` - Lifecycle *Lifecycle `json:"lifecycle,omitempty" yaml:"lifecycle,omitempty"` + CPU int `json:"cpu,omitempty"` + VolumeMounts []VolumeMount `json:"volumeMounts,omitempty"` + LivenessProbe *LivenessProbe `json:"livenessProbe,omitempty"` + Lifecycle *Lifecycle `json:"lifecycle,omitempty"` // Optional: Defaults to /dev/termination-log - TerminationMessagePath string `json:"terminationMessagePath,omitempty" yaml:"terminationMessagePath,omitempty"` + TerminationMessagePath string `json:"terminationMessagePath,omitempty"` // Optional: Default to false. - Privileged bool `json:"privileged,omitempty" yaml:"privileged,omitempty"` + Privileged bool `json:"privileged,omitempty"` // Optional: Policy for pulling images for this container - ImagePullPolicy PullPolicy `json:"imagePullPolicy" yaml:"imagePullPolicy"` + ImagePullPolicy PullPolicy `json:"imagePullPolicy"` } // Handler defines a specific action that should be taken @@ -349,9 +349,9 @@ type Container struct { type Handler struct { // One and only one of the following should be specified. // Exec specifies the action to take. - Exec *ExecAction `json:"exec,omitempty" yaml:"exec,omitempty"` + Exec *ExecAction `json:"exec,omitempty"` // HTTPGet specifies the http request to perform. - HTTPGet *HTTPGetAction `json:"httpGet,omitempty" yaml:"httpGet,omitempty"` + HTTPGet *HTTPGetAction `json:"httpGet,omitempty"` } // Lifecycle describes actions that the management system should take in response to container lifecycle @@ -360,10 +360,10 @@ type Handler struct { type Lifecycle struct { // PostStart is called immediately after a container is created. If the handler fails, the container // is terminated and restarted. - PostStart *Handler `json:"postStart,omitempty" yaml:"postStart,omitempty"` + PostStart *Handler `json:"postStart,omitempty"` // PreStop is called immediately before a container is terminated. The reason for termination is // passed to the handler. Regardless of the outcome of the handler, the container is eventually terminated. - PreStop *Handler `json:"preStop,omitempty" yaml:"preStop,omitempty"` + PreStop *Handler `json:"preStop,omitempty"` } // PodPhase is a label for the condition of a pod at the current time. @@ -388,38 +388,38 @@ const ( type ContainerStateWaiting struct { // Reason could be pulling image, - Reason string `json:"reason,omitempty" yaml:"reason,omitempty"` + Reason string `json:"reason,omitempty"` } type ContainerStateRunning struct { - StartedAt time.Time `json:"startedAt,omitempty" yaml:"startedAt,omitempty"` + StartedAt time.Time `json:"startedAt,omitempty"` } type ContainerStateTerminated struct { - ExitCode int `json:"exitCode" yaml:"exitCode"` - Signal int `json:"signal,omitempty" yaml:"signal,omitempty"` - Reason string `json:"reason,omitempty" yaml:"reason,omitempty"` - Message string `json:"message,omitempty" yaml:"message,omitempty"` - StartedAt time.Time `json:"startedAt,omitempty" yaml:"startedAt,omitempty"` - FinishedAt time.Time `json:"finishedAt,omitempty" yaml:"finishedAt,omitempty"` + ExitCode int `json:"exitCode"` + Signal int `json:"signal,omitempty"` + Reason string `json:"reason,omitempty"` + Message string `json:"message,omitempty"` + StartedAt time.Time `json:"startedAt,omitempty"` + FinishedAt time.Time `json:"finishedAt,omitempty"` } // ContainerState holds a possible state of container. // Only one of its members may be specified. // If none of them is specified, the default one is ContainerStateWaiting. type ContainerState struct { - Waiting *ContainerStateWaiting `json:"waiting,omitempty" yaml:"waiting,omitempty"` - Running *ContainerStateRunning `json:"running,omitempty" yaml:"running,omitempty"` - Termination *ContainerStateTerminated `json:"termination,omitempty" yaml:"termination,omitempty"` + Waiting *ContainerStateWaiting `json:"waiting,omitempty"` + Running *ContainerStateRunning `json:"running,omitempty"` + Termination *ContainerStateTerminated `json:"termination,omitempty"` } type ContainerStatus struct { // TODO(dchen1107): Should we rename PodStatus to a more generic name or have a separate states // defined for container? - State ContainerState `json:"state,omitempty" yaml:"state,omitempty"` + State ContainerState `json:"state,omitempty"` // Note that this is calculated from dead containers. But those containers are subject to // garbage collection. This value will get capped at 5 by GC. - RestartCount int `json:"restartCount" yaml:"restartCount"` + RestartCount int `json:"restartCount"` // TODO(dchen1107): Introduce our own NetworkSettings struct here? // TODO(dchen1107): Which image the container is running with? } @@ -439,32 +439,32 @@ type RestartPolicy struct { // Only one of the following restart policies may be specified. // If none of the following policies is specified, the default one // is RestartPolicyAlways. - Always *RestartPolicyAlways `json:"always,omitempty" yaml:"always,omitempty"` - OnFailure *RestartPolicyOnFailure `json:"onFailure,omitempty" yaml:"onFailure,omitempty"` - Never *RestartPolicyNever `json:"never,omitempty" yaml:"never,omitempty"` + Always *RestartPolicyAlways `json:"always,omitempty"` + OnFailure *RestartPolicyOnFailure `json:"onFailure,omitempty"` + Never *RestartPolicyNever `json:"never,omitempty"` } // PodSpec is a description of a pod type PodSpec struct { - Volumes []Volume `json:"volumes" yaml:"volumes"` - Containers []Container `json:"containers" yaml:"containers"` - RestartPolicy RestartPolicy `json:"restartPolicy,omitempty" yaml:"restartPolicy,omitempty"` + Volumes []Volume `json:"volumes"` + Containers []Container `json:"containers"` + RestartPolicy RestartPolicy `json:"restartPolicy,omitempty"` // NodeSelector is a selector which must be true for the pod to fit on a node - NodeSelector map[string]string `json:"nodeSelector,omitempty" yaml:"nodeSelector,omitempty"` + NodeSelector map[string]string `json:"nodeSelector,omitempty"` } // PodStatus represents information about the status of a pod. Status may trail the actual // state of a system. type PodStatus struct { - Phase PodPhase `json:"phase,omitempty" yaml:"phase,omitempty"` + Phase PodPhase `json:"phase,omitempty"` // A human readable message indicating details about why the pod is in this state. - Message string `json:"message,omitempty" yaml:"message,omitempty"` + Message string `json:"message,omitempty"` // Host is the name of the node that this Pod is currently bound to, or empty if no // assignment has been done. - Host string `json:"host,omitempty" yaml:"host,omitempty"` - HostIP string `json:"hostIP,omitempty" yaml:"hostIP,omitempty"` - PodIP string `json:"podIP,omitempty" yaml:"podIP,omitempty"` + Host string `json:"host,omitempty"` + HostIP string `json:"hostIP,omitempty"` + PodIP string `json:"podIP,omitempty"` // The key of this map is the *name* of the container within the manifest; it has one // entry per container in the manifest. The value of this map is currently the output @@ -472,121 +472,121 @@ type PodStatus struct { // upon. // TODO: Make real decisions about what our info should look like. Re-enable fuzz test // when we have done this. - Info PodInfo `json:"info,omitempty" yaml:"info,omitempty"` + Info PodInfo `json:"info,omitempty"` } // Pod is a collection of containers that can run on a host. This resource is created // by clients and scheduled onto hosts. BoundPod represents the state of this resource // to hosts. type Pod struct { - TypeMeta `json:",inline" yaml:",inline"` - ObjectMeta `json:"metadata,omitempty" yaml:"metadata,omitempty"` + TypeMeta `json:",inline"` + ObjectMeta `json:"metadata,omitempty"` // Spec defines the behavior of a pod. - Spec PodSpec `json:"spec,omitempty" yaml:"spec,omitempty"` + Spec PodSpec `json:"spec,omitempty"` // Status represents the current information about a pod. This data may not be up // to date. - Status PodStatus `json:"status,omitempty" yaml:"status,omitempty"` + Status PodStatus `json:"status,omitempty"` } // PodList is a list of Pods. type PodList struct { - TypeMeta `json:",inline" yaml:",inline"` - ListMeta `json:"metadata,omitempty" yaml:"metadata,omitempty"` + TypeMeta `json:",inline"` + ListMeta `json:"metadata,omitempty"` - Items []Pod `json:"items" yaml:"items"` + Items []Pod `json:"items"` } // PodTemplateSpec describes the data a pod should have when created from a template type PodTemplateSpec struct { // Metadata of the pods created from this template. - ObjectMeta `json:"metadata,omitempty" yaml:"metadata,omitempty"` + ObjectMeta `json:"metadata,omitempty"` // Spec defines the behavior of a pod. - Spec PodSpec `json:"spec,omitempty" yaml:"spec,omitempty"` + Spec PodSpec `json:"spec,omitempty"` } // PodTemplate describes a template for creating copies of a predefined pod. type PodTemplate struct { - TypeMeta `json:",inline" yaml:",inline"` - ObjectMeta `json:"metadata,omitempty" yaml:"metadata,omitempty"` + TypeMeta `json:",inline"` + ObjectMeta `json:"metadata,omitempty"` // Spec defines the behavior of a pod. - Spec PodTemplateSpec `json:"spec,omitempty" yaml:"spec,omitempty"` + Spec PodTemplateSpec `json:"spec,omitempty"` } // PodTemplateList is a list of PodTemplates. type PodTemplateList struct { - TypeMeta `json:",inline" yaml:",inline"` - ListMeta `json:"metadata,omitempty" yaml:"metadata,omitempty"` + TypeMeta `json:",inline"` + ListMeta `json:"metadata,omitempty"` - Items []PodTemplate `json:"items" yaml:"items"` + Items []PodTemplate `json:"items"` } // BoundPod is a collection of containers that should be run on a host. A BoundPod // defines how a Pod may change after a Binding is created. A Pod is a request to // execute a pod, whereas a BoundPod is the specification that would be run on a server. type BoundPod struct { - TypeMeta `json:",inline" yaml:",inline"` - ObjectMeta `json:"metadata,omitempty" yaml:"metadata,omitempty"` + TypeMeta `json:",inline"` + ObjectMeta `json:"metadata,omitempty"` // Spec defines the behavior of a pod. - Spec PodSpec `json:"spec,omitempty" yaml:"spec,omitempty"` + Spec PodSpec `json:"spec,omitempty"` } // BoundPods is a list of Pods bound to a common server. The resource version of // the pod list is guaranteed to only change when the list of bound pods changes. type BoundPods struct { - TypeMeta `json:",inline" yaml:",inline"` - ObjectMeta `json:"metadata,omitempty" yaml:"metadata,omitempty"` + TypeMeta `json:",inline"` + ObjectMeta `json:"metadata,omitempty"` // Host is the name of a node that these pods were bound to. - Host string `json:"host" yaml:"host"` + Host string `json:"host"` // Items is the list of all pods bound to a given host. - Items []BoundPod `json:"items" yaml:"items"` + Items []BoundPod `json:"items"` } // ReplicationControllerSpec is the specification of a replication controller. type ReplicationControllerSpec struct { // Replicas is the number of desired replicas. - Replicas int `json:"replicas" yaml:"replicas"` + Replicas int `json:"replicas"` // Selector is a label query over pods that should match the Replicas count. - Selector map[string]string `json:"selector,omitempty" yaml:"selector,omitempty"` + Selector map[string]string `json:"selector,omitempty"` // Template is a reference to an object that describes the pod that will be created if // insufficient replicas are detected. - Template ObjectReference `json:"template,omitempty" yaml:"template,omitempty"` + Template ObjectReference `json:"template,omitempty"` } // ReplicationControllerStatus represents the current status of a replication // controller. type ReplicationControllerStatus struct { // Replicas is the number of actual replicas. - Replicas int `json:"replicas" yaml:"replicas"` + Replicas int `json:"replicas"` } // ReplicationController represents the configuration of a replication controller. type ReplicationController struct { - TypeMeta `json:",inline" yaml:",inline"` - ObjectMeta `json:"metadata,omitempty" yaml:"metadata,omitempty"` + TypeMeta `json:",inline"` + ObjectMeta `json:"metadata,omitempty"` // Spec defines the desired behavior of this replication controller. - Spec ReplicationControllerSpec `json:"spec,omitempty" yaml:"spec,omitempty"` + Spec ReplicationControllerSpec `json:"spec,omitempty"` // Status is the current status of this replication controller. This data may be // out of date by some window of time. - Status ReplicationControllerStatus `json:"status,omitempty" yaml:"status,omitempty"` + Status ReplicationControllerStatus `json:"status,omitempty"` } // ReplicationControllerList is a collection of replication controllers. type ReplicationControllerList struct { - TypeMeta `json:",inline" yaml:",inline"` - ListMeta `json:"metadata,omitempty" yaml:"metadata,omitempty"` + TypeMeta `json:",inline"` + ListMeta `json:"metadata,omitempty"` - Items []ReplicationController `json:"items" yaml:"items"` + Items []ReplicationController `json:"items"` } // ServiceStatus represents the current status of a service @@ -596,83 +596,83 @@ type ServiceStatus struct{} type ServiceSpec struct { // Port is the TCP or UDP port that will be made available to each pod for connecting to the pods // proxied by this service. - Port int `json:"port" yaml:"port"` + Port int `json:"port"` // Optional: Supports "TCP" and "UDP". Defaults to "TCP". - Protocol Protocol `json:"protocol,omitempty" yaml:"protocol,omitempty"` + Protocol Protocol `json:"protocol,omitempty"` // This service will route traffic to pods having labels matching this selector. - Selector map[string]string `json:"selector,omitempty" yaml:"selector,omitempty"` + Selector map[string]string `json:"selector,omitempty"` // 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 // not be changed by updates. - PortalIP string `json:"portalIP,omitempty" yaml:"portalIP,omitempty"` + PortalIP string `json:"portalIP,omitempty"` // ProxyPort is assigned by the master. If 0, the proxy will choose an ephemeral port. - ProxyPort int `json:"proxyPort,omitempty" yaml:"proxyPort,omitempty"` + ProxyPort int `json:"proxyPort,omitempty"` // CreateExternalLoadBalancer indicates whether a load balancer should be created for this service. - CreateExternalLoadBalancer bool `json:"createExternalLoadBalancer,omitempty" yaml:"createExternalLoadBalancer,omitempty"` + CreateExternalLoadBalancer bool `json:"createExternalLoadBalancer,omitempty"` // PublicIPs are used by external load balancers. - PublicIPs []string `json:"publicIPs,omitempty" yaml:"publicIPs,omitempty"` + PublicIPs []string `json:"publicIPs,omitempty"` // ContainerPort is the name of the port on the container to direct traffic to. // Optional, if unspecified use the first port on the container. - ContainerPort util.IntOrString `json:"containerPort,omitempty" yaml:"containerPort,omitempty"` + ContainerPort util.IntOrString `json:"containerPort,omitempty"` } // Service is a named abstraction of software service (for example, mysql) consisting of local port // (for example 3306) that the proxy listens on, and the selector that determines which pods // will answer requests sent through the proxy. type Service struct { - TypeMeta `json:",inline" yaml:",inline"` - ObjectMeta `json:"metadata,omitempty" yaml:"metadata,omitempty"` + TypeMeta `json:",inline"` + ObjectMeta `json:"metadata,omitempty"` // Spec defines the behavior of a service. - Spec ServiceSpec `json:"spec,omitempty" yaml:"spec,omitempty"` + Spec ServiceSpec `json:"spec,omitempty"` // Status represents the current status of a service. - Status ServiceStatus `json:"status,omitempty" yaml:"status,omitempty"` + Status ServiceStatus `json:"status,omitempty"` } // ServiceList holds a list of services. type ServiceList struct { - TypeMeta `json:",inline" yaml:",inline"` - ListMeta `json:"metadata,omitempty" yaml:"metadata,omitempty"` + TypeMeta `json:",inline"` + ListMeta `json:"metadata,omitempty"` - Items []Service `json:"items" yaml:"items"` + Items []Service `json:"items"` } // Endpoints is a collection of endpoints that implement the actual service, for example: // Name: "mysql", Endpoints: ["10.10.1.1:1909", "10.10.2.2:8834"] type Endpoints struct { - TypeMeta `json:",inline" yaml:",inline"` - ObjectMeta `json:"metadata" yaml:"metadata"` + TypeMeta `json:",inline"` + ObjectMeta `json:"metadata"` // Endpoints is the list of host ports that satisfy the service selector - Endpoints []string `json:"endpoints" yaml:"endpoints"` + Endpoints []string `json:"endpoints"` } // EndpointsList is a list of endpoints. type EndpointsList struct { - TypeMeta `json:",inline" yaml:",inline"` - ListMeta `json:"metadata,omitempty" yaml:"metadata,omitempty"` + TypeMeta `json:",inline"` + ListMeta `json:"metadata,omitempty"` - Items []Endpoints `json:"items" yaml:"items"` + Items []Endpoints `json:"items"` } // NodeSpec describes the attributes that a node is created with. type NodeSpec struct { // Capacity represents the available resources of a node // see https://github.com/GoogleCloudPlatform/kubernetes/blob/master/docs/resources.md for more details. - Capacity ResourceList `json:"capacity,omitempty" yaml:"capacity,omitempty"` + Capacity ResourceList `json:"capacity,omitempty"` } // NodeStatus is information about the current status of a node. type NodeStatus struct { // Queried from cloud provider, if available. - HostIP string `json:"hostIP,omitempty" yaml:"hostIP,omitempty"` + HostIP string `json:"hostIP,omitempty"` } type ResourceName string @@ -682,57 +682,57 @@ type ResourceList map[ResourceName]util.IntOrString // Node is a worker node in Kubernetes. // The name of the node according to etcd is in ID. type Node struct { - TypeMeta `json:",inline" yaml:",inline"` - ObjectMeta `json:"metadata,omitempty" yaml:"metadata,omitempty"` + TypeMeta `json:",inline"` + ObjectMeta `json:"metadata,omitempty"` // Spec defines the behavior of a node. - Spec NodeSpec `json:"spec,omitempty" yaml:"spec,omitempty"` + Spec NodeSpec `json:"spec,omitempty"` // Status describes the current status of a Node - Status NodeStatus `json:"status,omitempty" yaml:"status,omitempty"` + Status NodeStatus `json:"status,omitempty"` } // NodeList is a list of minions. type NodeList struct { - TypeMeta `json:",inline" yaml:",inline"` - ListMeta `json:"metadata,omitempty" yaml:"metadata,omitempty"` + TypeMeta `json:",inline"` + ListMeta `json:"metadata,omitempty"` - Items []Node `json:"items" yaml:"items"` + Items []Node `json:"items"` } // Binding is written by a scheduler to cause a pod to be bound to a node. Name is not // required for Bindings. type Binding struct { - TypeMeta `json:",inline" yaml:",inline"` - ObjectMeta `json:"metadata,omitempty" yaml:"metadata,omitempty"` + TypeMeta `json:",inline"` + ObjectMeta `json:"metadata,omitempty"` // PodID is a Pod name to be bound to a node. - PodID string `json:"podID" yaml:"podID"` + PodID string `json:"podID"` // Host is the name of a node to bind to. - Host string `json:"host" yaml:"host"` + Host string `json:"host"` } // Status is a return value for calls that don't return other objects. type Status struct { - TypeMeta `json:",inline" yaml:",inline"` - ListMeta `json:"metadata,omitempty" yaml:"metadata,omitempty"` + TypeMeta `json:",inline"` + ListMeta `json:"metadata,omitempty"` // One of: "Success", "Failure", "Working" (for operations not yet completed) - Status string `json:"status,omitempty" yaml:"status,omitempty"` + Status string `json:"status,omitempty"` // A human-readable description of the status of this operation. - Message string `json:"message,omitempty" yaml:"message,omitempty"` + Message string `json:"message,omitempty"` // A machine-readable description of why this operation is in the // "Failure" or "Working" status. If this value is empty there // is no information available. A Reason clarifies an HTTP status // code but does not override it. - Reason StatusReason `json:"reason,omitempty" yaml:"reason,omitempty"` + Reason StatusReason `json:"reason,omitempty"` // Extended data associated with the reason. Each reason may define its // own extended details. This field is optional and the data returned // is not guaranteed to conform to any schema except that defined by // the reason type. - Details *StatusDetails `json:"details,omitempty" yaml:"details,omitempty"` + Details *StatusDetails `json:"details,omitempty"` // Suggested HTTP return code for this status, 0 if not set. - Code int `json:"code,omitempty" yaml:"code,omitempty"` + Code int `json:"code,omitempty"` } // StatusDetails is a set of additional properties that MAY be set by the @@ -744,13 +744,13 @@ type Status struct { type StatusDetails struct { // The ID attribute of the resource associated with the status StatusReason // (when there is a single ID which can be described). - ID string `json:"id,omitempty" yaml:"id,omitempty"` + ID string `json:"id,omitempty"` // The kind attribute of the resource associated with the status StatusReason. // On some operations may differ from the requested resource Kind. - Kind string `json:"kind,omitempty" yaml:"kind,omitempty"` + Kind string `json:"kind,omitempty"` // The Causes array includes more details associated with the StatusReason // failure. Not all StatusReasons may provide detailed causes. - Causes []StatusCause `json:"causes,omitempty" yaml:"causes,omitempty"` + Causes []StatusCause `json:"causes,omitempty"` } // Values of Status.Status @@ -827,10 +827,10 @@ const ( type StatusCause struct { // A machine-readable description of the cause of the error. If this value is // empty there is no information available. - Type CauseType `json:"reason,omitempty" yaml:"reason,omitempty"` + Type CauseType `json:"reason,omitempty"` // A human-readable description of the cause of the error. This field may be // presented as-is to a reader. - Message string `json:"message,omitempty" yaml:"message,omitempty"` + Message string `json:"message,omitempty"` // The field of the resource that has caused this error, as named by its JSON // serialization. May include dot and postfix notation for nested attributes. // Arrays are zero-indexed. Fields may appear more than once in an array of @@ -840,7 +840,7 @@ type StatusCause struct { // Examples: // "name" - the field "name" on the current resource // "items[0].name" - the field "name" on the first array entry in "items" - Field string `json:"field,omitempty" yaml:"field,omitempty"` + Field string `json:"field,omitempty"` } // CauseType is a machine readable value providing more detail about what @@ -870,26 +870,26 @@ const ( // Operation is assigned by the server when an operation is started, and can be used by // clients to retrieve the final result of the operation at a later time. type Operation struct { - TypeMeta `json:",inline" yaml:",inline"` - ObjectMeta `json:"metadata" yaml:"metadata"` + TypeMeta `json:",inline"` + ObjectMeta `json:"metadata"` } // OperationList is a list of operations, as delivered to API clients. type OperationList struct { - TypeMeta `json:",inline" yaml:",inline"` - ListMeta `json:"metadata,omitempty" yaml:"metadata,omitempty"` + TypeMeta `json:",inline"` + ListMeta `json:"metadata,omitempty"` - Items []Operation `json:"items" yaml:"items"` + Items []Operation `json:"items"` } // ObjectReference contains enough information to let you inspect or modify the referred object. type ObjectReference struct { - Kind string `json:"kind,omitempty" yaml:"kind,omitempty"` - Namespace string `json:"namespace,omitempty" yaml:"namespace,omitempty"` - Name string `json:"name,omitempty" yaml:"name,omitempty"` - UID string `json:"uid,omitempty" yaml:"uid,omitempty"` - APIVersion string `json:"apiVersion,omitempty" yaml:"apiVersion,omitempty"` - ResourceVersion string `json:"resourceVersion,omitempty" yaml:"resourceVersion,omitempty"` + Kind string `json:"kind,omitempty"` + Namespace string `json:"namespace,omitempty"` + Name string `json:"name,omitempty"` + UID string `json:"uid,omitempty"` + APIVersion string `json:"apiVersion,omitempty"` + ResourceVersion string `json:"resourceVersion,omitempty"` // Optional. If referring to a piece of an object instead of an entire object, this string // should contain a valid field access statement. For example, @@ -898,17 +898,17 @@ type ObjectReference struct { // both go and JavaScript. This is syntax is chosen only to have some well-defined way of // referencing a part of an object. // TODO: this design is not final and this field is subject to change in the future. - FieldPath string `json:"fieldPath,omitempty" yaml:"fieldPath,omitempty"` + FieldPath string `json:"fieldPath,omitempty"` } // Event is a report of an event somewhere in the cluster. // TODO: Decide whether to store these separately or with the object they apply to. type Event struct { - TypeMeta `json:",inline" yaml:",inline"` - ObjectMeta `json:"metadata" yaml:"metadata"` + TypeMeta `json:",inline"` + ObjectMeta `json:"metadata"` // Required. The object that this event is about. - InvolvedObject ObjectReference `json:"involvedObject,omitempty" yaml:"involvedObject,omitempty"` + InvolvedObject ObjectReference `json:"involvedObject,omitempty"` // Should be a short, machine understandable string that describes the current status // of the referred object. This should not give the reason for being in this state. @@ -917,30 +917,30 @@ type Event struct { // always be used for the same status. // TODO: define a way of making sure these are consistent and don't collide. // TODO: provide exact specification for format. - Condition string `json:"condition,omitempty" yaml:"condition,omitempty"` + Condition string `json:"condition,omitempty"` // Optional; this should be a short, machine understandable string that gives the reason // for the transition into the object's current status. For example, if ObjectStatus is // "cantStart", StatusReason might be "imageNotFound". // TODO: provide exact specification for format. - Reason string `json:"reason,omitempty" yaml:"reason,omitempty"` + Reason string `json:"reason,omitempty"` // Optional. A human-readable description of the status of this operation. // TODO: decide on maximum length. - Message string `json:"message,omitempty" yaml:"message,omitempty"` + Message string `json:"message,omitempty"` // Optional. The component reporting this event. Should be a short machine understandable string. // TODO: provide exact specification for format. - Source string `json:"source,omitempty" yaml:"source,omitempty"` + Source string `json:"source,omitempty"` // The time at which the client recorded the event. (Time of server receipt is in TypeMeta.) - Timestamp util.Time `json:"timestamp,omitempty" yaml:"timestamp,omitempty"` + Timestamp util.Time `json:"timestamp,omitempty"` } // EventList is a list of events. type EventList struct { - TypeMeta `json:",inline" yaml:",inline"` - ListMeta `json:"metadata,omitempty" yaml:"metadata,omitempty"` + TypeMeta `json:",inline"` + ListMeta `json:"metadata,omitempty"` - Items []Event `json:"items" yaml:"items"` + Items []Event `json:"items"` } diff --git a/pkg/apiserver/apiserver_test.go b/pkg/apiserver/apiserver_test.go index 709bddf06f1..fc17d7c54d9 100644 --- a/pkg/apiserver/apiserver_test.go +++ b/pkg/apiserver/apiserver_test.go @@ -95,17 +95,17 @@ func init() { } type Simple struct { - api.TypeMeta `yaml:",inline" json:",inline"` - api.ObjectMeta `yaml:"metadata" json:"metadata"` - Other string `yaml:"other,omitempty" json:"other,omitempty"` + api.TypeMeta `json:",inline"` + api.ObjectMeta `json:"metadata"` + Other string `json:"other,omitempty"` } func (*Simple) IsAnAPIObject() {} type SimpleList struct { - api.TypeMeta `yaml:",inline" json:",inline"` - api.ListMeta `yaml:"metadata,inline" json:"metadata,inline"` - Items []Simple `yaml:"items,omitempty" json:"items,omitempty"` + api.TypeMeta `json:",inline"` + api.ListMeta `json:"metadata,inline"` + Items []Simple `json:"items,omitempty"` } func (*SimpleList) IsAnAPIObject() {} diff --git a/pkg/apiserver/watch_test.go b/pkg/apiserver/watch_test.go index 6b83efa3201..ce31b9b8150 100644 --- a/pkg/apiserver/watch_test.go +++ b/pkg/apiserver/watch_test.go @@ -32,8 +32,8 @@ import ( // watchJSON defines the expected JSON wire equivalent of watch.Event type watchJSON struct { - Type watch.EventType `json:"type,omitempty" yaml:"type,omitempty"` - Object json.RawMessage `json:"object,omitempty" yaml:"object,omitempty"` + Type watch.EventType `json:"type,omitempty"` + Object json.RawMessage `json:"object,omitempty"` } var watchTestTable = []struct { diff --git a/pkg/auth/authorizer/abac/abac.go b/pkg/auth/authorizer/abac/abac.go index f7fbd7ec106..03b704c2eec 100644 --- a/pkg/auth/authorizer/abac/abac.go +++ b/pkg/auth/authorizer/abac/abac.go @@ -37,7 +37,7 @@ import ( // body.Namespace, if we want to add that feature, without affecting the // meta.Namespace. type policy struct { - User string `json:"user,omitempty" yaml:"user,omitempty"` + User string `json:"user,omitempty"` // TODO: add support for groups as well as users. // TODO: add support for robot accounts as well as human user accounts. // TODO: decide how to namespace user names when multiple authentication @@ -51,9 +51,9 @@ type policy struct { // the API, we don't have to add lots of policy? // TODO: make this a proper REST object with its own registry. - Readonly bool `json:"readonly,omitempty" yaml:"readonly,omitempty"` - Kind string `json:"kind,omitempty" yaml:"kind,omitempty"` - Namespace string `json:"namespace,omitempty" yaml:"namespace,omitempty"` + Readonly bool `json:"readonly,omitempty"` + Kind string `json:"kind,omitempty"` + Namespace string `json:"namespace,omitempty"` // TODO: "expires" string in RFC3339 format. diff --git a/pkg/conversion/meta.go b/pkg/conversion/meta.go index 533193d6e7e..18c0d966e93 100644 --- a/pkg/conversion/meta.go +++ b/pkg/conversion/meta.go @@ -55,8 +55,8 @@ type SimpleMetaFactory struct { // encoding of an object, or an error. func (SimpleMetaFactory) Interpret(data []byte) (version, kind string, err error) { findKind := struct { - APIVersion string `json:"apiVersion,omitempty" yaml:"apiVersion,omitempty"` - Kind string `json:"kind,omitempty" yaml:"kind,omitempty"` + APIVersion string `json:"apiVersion,omitempty"` + Kind string `json:"kind,omitempty"` }{} // yaml is a superset of json, so we use it to decode here. That way, // we understand both. diff --git a/pkg/conversion/meta_test.go b/pkg/conversion/meta_test.go index f7ede632123..12b502c21fa 100644 --- a/pkg/conversion/meta_test.go +++ b/pkg/conversion/meta_test.go @@ -94,14 +94,14 @@ func TestSimpleMetaFactoryUpdateStruct(t *testing.T) { func TestMetaValues(t *testing.T) { type InternalSimple struct { - APIVersion string `json:"apiVersion,omitempty" yaml:"apiVersion,omitempty"` - Kind string `json:"kind,omitempty" yaml:"kind,omitempty"` - TestString string `json:"testString" yaml:"testString"` + APIVersion string `json:"apiVersion,omitempty"` + Kind string `json:"kind,omitempty"` + TestString string `json:"testString"` } type ExternalSimple struct { - APIVersion string `json:"apiVersion,omitempty" yaml:"apiVersion,omitempty"` - Kind string `json:"kind,omitempty" yaml:"kind,omitempty"` - TestString string `json:"testString" yaml:"testString"` + APIVersion string `json:"apiVersion,omitempty"` + Kind string `json:"kind,omitempty"` + TestString string `json:"testString"` } s := NewScheme() s.AddKnownTypeWithName("", "Simple", &InternalSimple{}) @@ -194,14 +194,14 @@ func TestMetaValues(t *testing.T) { func TestMetaValuesUnregisteredConvert(t *testing.T) { type InternalSimple struct { - Version string `json:"apiVersion,omitempty" yaml:"apiVersion,omitempty"` - Kind string `json:"kind,omitempty" yaml:"kind,omitempty"` - TestString string `json:"testString" yaml:"testString"` + Version string `json:"apiVersion,omitempty"` + Kind string `json:"kind,omitempty"` + TestString string `json:"testString"` } type ExternalSimple struct { - Version string `json:"apiVersion,omitempty" yaml:"apiVersion,omitempty"` - Kind string `json:"kind,omitempty" yaml:"kind,omitempty"` - TestString string `json:"testString" yaml:"testString"` + Version string `json:"apiVersion,omitempty"` + Kind string `json:"kind,omitempty"` + TestString string `json:"testString"` } s := NewScheme() s.InternalVersion = "" diff --git a/pkg/conversion/scheme_test.go b/pkg/conversion/scheme_test.go index 2f6f1e8e378..146afd0587f 100644 --- a/pkg/conversion/scheme_test.go +++ b/pkg/conversion/scheme_test.go @@ -34,65 +34,65 @@ var fuzzIters = flag.Int("fuzz_iters", 50, "How many fuzzing iterations to do.") // Test a weird version/kind embedding format. type MyWeirdCustomEmbeddedVersionKindField struct { - ID string `yaml:"ID,omitempty" json:"ID,omitempty"` - APIVersion string `json:"myVersionKey,omitempty" yaml:"myVersionKey,omitempty"` - ObjectKind string `json:"myKindKey,omitempty" yaml:"myKindKey,omitempty"` - Z string `yaml:"Z,omitempty" json:"Z,omitempty"` - Y uint64 `yaml:"Y,omitempty" json:"Y,omitempty"` + ID string `json:"ID,omitempty"` + APIVersion string `json:"myVersionKey,omitempty"` + ObjectKind string `json:"myKindKey,omitempty"` + Z string `json:"Z,omitempty"` + Y uint64 `json:"Y,omitempty"` } type TestType1 struct { - MyWeirdCustomEmbeddedVersionKindField `json:",inline" yaml:",inline"` - A string `yaml:"A,omitempty" json:"A,omitempty"` - B int `yaml:"B,omitempty" json:"B,omitempty"` - C int8 `yaml:"C,omitempty" json:"C,omitempty"` - D int16 `yaml:"D,omitempty" json:"D,omitempty"` - E int32 `yaml:"E,omitempty" json:"E,omitempty"` - F int64 `yaml:"F,omitempty" json:"F,omitempty"` - G uint `yaml:"G,omitempty" json:"G,omitempty"` - H uint8 `yaml:"H,omitempty" json:"H,omitempty"` - I uint16 `yaml:"I,omitempty" json:"I,omitempty"` - J uint32 `yaml:"J,omitempty" json:"J,omitempty"` - K uint64 `yaml:"K,omitempty" json:"K,omitempty"` - L bool `yaml:"L,omitempty" json:"L,omitempty"` - M map[string]int `yaml:"M,omitempty" json:"M,omitempty"` - N map[string]TestType2 `yaml:"N,omitempty" json:"N,omitempty"` - O *TestType2 `yaml:"O,omitempty" json:"O,omitempty"` - P []TestType2 `yaml:"Q,omitempty" json:"Q,omitempty"` + MyWeirdCustomEmbeddedVersionKindField `json:",inline"` + A string `json:"A,omitempty"` + B int `json:"B,omitempty"` + C int8 `json:"C,omitempty"` + D int16 `json:"D,omitempty"` + E int32 `json:"E,omitempty"` + F int64 `json:"F,omitempty"` + G uint `json:"G,omitempty"` + H uint8 `json:"H,omitempty"` + I uint16 `json:"I,omitempty"` + J uint32 `json:"J,omitempty"` + K uint64 `json:"K,omitempty"` + L bool `json:"L,omitempty"` + M map[string]int `json:"M,omitempty"` + N map[string]TestType2 `json:"N,omitempty"` + O *TestType2 `json:"O,omitempty"` + P []TestType2 `json:"Q,omitempty"` } type TestType2 struct { - A string `yaml:"A,omitempty" json:"A,omitempty"` - B int `yaml:"B,omitempty" json:"B,omitempty"` + A string `json:"A,omitempty"` + B int `json:"B,omitempty"` } type ExternalTestType2 struct { - A string `yaml:"A,omitempty" json:"A,omitempty"` - B int `yaml:"B,omitempty" json:"B,omitempty"` + A string `json:"A,omitempty"` + B int `json:"B,omitempty"` } type ExternalTestType1 struct { - MyWeirdCustomEmbeddedVersionKindField `json:",inline" yaml:",inline"` - A string `yaml:"A,omitempty" json:"A,omitempty"` - B int `yaml:"B,omitempty" json:"B,omitempty"` - C int8 `yaml:"C,omitempty" json:"C,omitempty"` - D int16 `yaml:"D,omitempty" json:"D,omitempty"` - E int32 `yaml:"E,omitempty" json:"E,omitempty"` - F int64 `yaml:"F,omitempty" json:"F,omitempty"` - G uint `yaml:"G,omitempty" json:"G,omitempty"` - H uint8 `yaml:"H,omitempty" json:"H,omitempty"` - I uint16 `yaml:"I,omitempty" json:"I,omitempty"` - J uint32 `yaml:"J,omitempty" json:"J,omitempty"` - K uint64 `yaml:"K,omitempty" json:"K,omitempty"` - L bool `yaml:"L,omitempty" json:"L,omitempty"` - M map[string]int `yaml:"M,omitempty" json:"M,omitempty"` - N map[string]ExternalTestType2 `yaml:"N,omitempty" json:"N,omitempty"` - O *ExternalTestType2 `yaml:"O,omitempty" json:"O,omitempty"` - P []ExternalTestType2 `yaml:"Q,omitempty" json:"Q,omitempty"` + MyWeirdCustomEmbeddedVersionKindField `json:",inline"` + A string `json:"A,omitempty"` + B int `json:"B,omitempty"` + C int8 `json:"C,omitempty"` + D int16 `json:"D,omitempty"` + E int32 `json:"E,omitempty"` + F int64 `json:"F,omitempty"` + G uint `json:"G,omitempty"` + H uint8 `json:"H,omitempty"` + I uint16 `json:"I,omitempty"` + J uint32 `json:"J,omitempty"` + K uint64 `json:"K,omitempty"` + L bool `json:"L,omitempty"` + M map[string]int `json:"M,omitempty"` + N map[string]ExternalTestType2 `json:"N,omitempty"` + O *ExternalTestType2 `json:"O,omitempty"` + P []ExternalTestType2 `json:"Q,omitempty"` } type ExternalInternalSame struct { - MyWeirdCustomEmbeddedVersionKindField `json:",inline" yaml:",inline"` - A TestType2 `yaml:"A,omitempty" json:"A,omitempty"` + MyWeirdCustomEmbeddedVersionKindField `json:",inline"` + A TestType2 `json:"A,omitempty"` } // TestObjectFuzzer can randomly populate all the above objects. @@ -139,8 +139,8 @@ type testMetaFactory struct{} func (testMetaFactory) Interpret(data []byte) (version, kind string, err error) { findKind := struct { - APIVersion string `json:"myVersionKey,omitempty" yaml:"myVersionKey,omitempty"` - ObjectKind string `json:"myKindKey,omitempty" yaml:"myKindKey,omitempty"` + APIVersion string `json:"myVersionKey,omitempty"` + ObjectKind string `json:"myKindKey,omitempty"` }{} // yaml is a superset of json, so we use it to decode here. That way, // we understand both. diff --git a/pkg/kubecfg/parse_test.go b/pkg/kubecfg/parse_test.go index 1ba5c1d1f2b..4100fbfc6e3 100644 --- a/pkg/kubecfg/parse_test.go +++ b/pkg/kubecfg/parse_test.go @@ -121,9 +121,9 @@ func TestParseController(t *testing.T) { } type TestParseType struct { - api.TypeMeta `json:",inline" yaml:",inline"` - api.ObjectMeta `json:"metadata" yaml:"metadata"` - Data string `json:"data" yaml:"data"` + api.TypeMeta `json:",inline"` + api.ObjectMeta `json:"metadata"` + Data string `json:"data"` } func (*TestParseType) IsAnAPIObject() {} diff --git a/pkg/kubecfg/resource_printer_test.go b/pkg/kubecfg/resource_printer_test.go index 0efd8c66574..ef5abd96048 100644 --- a/pkg/kubecfg/resource_printer_test.go +++ b/pkg/kubecfg/resource_printer_test.go @@ -31,10 +31,10 @@ import ( func TestYAMLPrinterPrint(t *testing.T) { type testStruct struct { - Key string `yaml:"Key" json:"Key"` - Map map[string]int `yaml:"Map" json:"Map"` - StringList []string `yaml:"StringList" json:"StringList"` - IntList []int `yaml:"IntList" json:"IntList"` + Key string `json:"Key"` + Map map[string]int `json:"Map"` + StringList []string `json:"StringList"` + IntList []int `json:"IntList"` } testData := testStruct{ "testValue", diff --git a/pkg/kubectl/resource_printer_test.go b/pkg/kubectl/resource_printer_test.go index 17eafb0394d..7285567694f 100644 --- a/pkg/kubectl/resource_printer_test.go +++ b/pkg/kubectl/resource_printer_test.go @@ -33,12 +33,12 @@ import ( ) type testStruct struct { - api.TypeMeta `yaml:",inline" json:",inline"` - api.ObjectMeta `yaml:"metadata,omitempty" json:"metadata,omitempty"` - Key string `yaml:"Key" json:"Key"` - Map map[string]int `yaml:"Map" json:"Map"` - StringList []string `yaml:"StringList" json:"StringList"` - IntList []int `yaml:"IntList" json:"IntList"` + api.TypeMeta `json:",inline"` + api.ObjectMeta `json:"metadata,omitempty"` + Key string `json:"Key"` + Map map[string]int `json:"Map"` + StringList []string `json:"StringList"` + IntList []int `json:"IntList"` } func (ts *testStruct) IsAnAPIObject() {} diff --git a/pkg/runtime/embedded_test.go b/pkg/runtime/embedded_test.go index c7b7c721d91..9fb795c95bb 100644 --- a/pkg/runtime/embedded_test.go +++ b/pkg/runtime/embedded_test.go @@ -28,17 +28,17 @@ var scheme = runtime.NewScheme() var Codec = runtime.CodecFor(scheme, "v1test") type EmbeddedTest struct { - runtime.TypeMeta `yaml:",inline" json:",inline"` - ID string `yaml:"id,omitempty" json:"id,omitempty"` - Object runtime.EmbeddedObject `yaml:"object,omitempty" json:"object,omitempty"` - EmptyObject runtime.EmbeddedObject `yaml:"emptyObject,omitempty" json:"emptyObject,omitempty"` + runtime.TypeMeta `json:",inline"` + ID string `json:"id,omitempty"` + Object runtime.EmbeddedObject `json:"object,omitempty"` + EmptyObject runtime.EmbeddedObject `json:"emptyObject,omitempty"` } type EmbeddedTestExternal struct { - runtime.TypeMeta `yaml:",inline" json:",inline"` - ID string `yaml:"id,omitempty" json:"id,omitempty"` - Object runtime.RawExtension `yaml:"object,omitempty" json:"object,omitempty"` - EmptyObject runtime.RawExtension `yaml:"emptyObject,omitempty" json:"emptyObject,omitempty"` + runtime.TypeMeta `json:",inline"` + ID string `json:"id,omitempty"` + Object runtime.RawExtension `json:"object,omitempty"` + EmptyObject runtime.RawExtension `json:"emptyObject,omitempty"` } func (*EmbeddedTest) IsAnAPIObject() {} diff --git a/pkg/runtime/extension.go b/pkg/runtime/extension.go index 6fe7fea2e91..8f94f2b578f 100644 --- a/pkg/runtime/extension.go +++ b/pkg/runtime/extension.go @@ -16,11 +16,7 @@ limitations under the License. package runtime -import ( - "errors" - - "github.com/ghodss/yaml" -) +import "errors" func (re *RawExtension) UnmarshalJSON(in []byte) error { if re == nil { @@ -33,28 +29,3 @@ func (re *RawExtension) UnmarshalJSON(in []byte) error { func (re *RawExtension) MarshalJSON() ([]byte, error) { return re.RawJSON, nil } - -// SetYAML implements the yaml.Setter interface. -func (re *RawExtension) SetYAML(tag string, value interface{}) bool { - if value == nil { - re.RawJSON = []byte("null") - return true - } - // Why does the yaml package send value as a map[interface{}]interface{}? - // It's especially frustrating because encoding/json does the right thing - // by giving a []byte. So here we do the embarrasing thing of re-encode and - // de-encode the right way. - // TODO: Write a version of Decode that uses reflect to turn this value - // into an API object. - b, err := yaml.Marshal(value) - if err != nil { - panic("yaml can't reverse its own object") - } - re.RawJSON = b - return true -} - -// GetYAML implements the yaml.Getter interface. -func (re *RawExtension) GetYAML() (tag string, value interface{}) { - return tag, re.RawJSON -} diff --git a/pkg/runtime/scheme.go b/pkg/runtime/scheme.go index 2f05401fb78..3984eabd2d5 100644 --- a/pkg/runtime/scheme.go +++ b/pkg/runtime/scheme.go @@ -40,7 +40,7 @@ func (self *Scheme) fromScope(s conversion.Scope) (inVersion, outVersion string, // emptyPlugin is used to copy the Kind field to and from plugin objects. type emptyPlugin struct { - PluginBase `json:",inline" yaml:",inline"` + PluginBase `json:",inline"` } // embeddedObjectToRawExtension does the conversion you would expect from the name, using the information diff --git a/pkg/runtime/scheme_test.go b/pkg/runtime/scheme_test.go index 36aac48e3cc..d68c99d0aba 100644 --- a/pkg/runtime/scheme_test.go +++ b/pkg/runtime/scheme_test.go @@ -25,18 +25,18 @@ import ( ) type TypeMeta struct { - Kind string `json:"kind,omitempty" yaml:"kind,omitempty"` - APIVersion string `json:"apiVersion,omitempty" yaml:"apiVersion,omitempty"` + Kind string `json:"kind,omitempty"` + APIVersion string `json:"apiVersion,omitempty"` } type InternalSimple struct { - TypeMeta `json:",inline" yaml:",inline"` - TestString string `json:"testString" yaml:"testString"` + TypeMeta `json:",inline"` + TestString string `json:"testString"` } type ExternalSimple struct { - TypeMeta `json:",inline" yaml:",inline"` - TestString string `json:"testString" yaml:"testString"` + TypeMeta `json:",inline"` + TestString string `json:"testString"` } func (*InternalSimple) IsAnAPIObject() {} @@ -157,23 +157,23 @@ func TestBadJSONRejection(t *testing.T) { } type ExtensionA struct { - runtime.PluginBase `json:",inline" yaml:",inline"` - TestString string `json:"testString" yaml:"testString"` + runtime.PluginBase `json:",inline"` + TestString string `json:"testString"` } type ExtensionB struct { - runtime.PluginBase `json:",inline" yaml:",inline"` - TestString string `json:"testString" yaml:"testString"` + runtime.PluginBase `json:",inline"` + TestString string `json:"testString"` } type ExternalExtensionType struct { - TypeMeta `json:",inline" yaml:",inline"` - Extension runtime.RawExtension `json:"extension" yaml:"extension"` + TypeMeta `json:",inline"` + Extension runtime.RawExtension `json:"extension"` } type InternalExtensionType struct { - TypeMeta `json:",inline" yaml:",inline"` - Extension runtime.EmbeddedObject `json:"extension" yaml:"extension"` + TypeMeta `json:",inline"` + Extension runtime.EmbeddedObject `json:"extension"` } func (*ExtensionA) IsAnAPIObject() {} diff --git a/pkg/runtime/types.go b/pkg/runtime/types.go index f79ec42f4d2..aa7eec39201 100644 --- a/pkg/runtime/types.go +++ b/pkg/runtime/types.go @@ -26,7 +26,7 @@ import ( // TypeMeta is shared by all top level objects. The proper way to use it is to inline it in your type, // like this: // type MyAwesomeAPIObject struct { -// runtime.TypeMeta `yaml:",inline" json:",inline"` +// runtime.TypeMeta `json:",inline"` // ... // other fields // } // func (*MyAwesomeAPIObject) IsAnAPIObject() {} @@ -35,21 +35,21 @@ import ( // your own with the same fields. // type TypeMeta struct { - APIVersion string `json:"apiVersion,omitempty" yaml:"apiVersion,omitempty"` - Kind string `json:"kind,omitempty" yaml:"kind,omitempty"` + APIVersion string `json:"apiVersion,omitempty"` + Kind string `json:"kind,omitempty"` - Namespace string `json:"namespace,omitempty" yaml:"namespace,omitempty"` - Name string `json:"name,omitempty" yaml:"name,omitempty"` - UID string `json:"uid,omitempty" yaml:"uid,omitempty"` - CreationTimestamp util.Time `json:"creationTimestamp,omitempty" yaml:"creationTimestamp,omitempty"` - SelfLink string `json:"selfLink,omitempty" yaml:"selfLink,omitempty"` - ResourceVersion string `json:"resourceVersion,omitempty" yaml:"resourceVersion,omitempty"` + Namespace string `json:"namespace,omitempty"` + Name string `json:"name,omitempty"` + UID string `json:"uid,omitempty"` + CreationTimestamp util.Time `json:"creationTimestamp,omitempty"` + SelfLink string `json:"selfLink,omitempty"` + ResourceVersion string `json:"resourceVersion,omitempty"` } // PluginBase is like TypeMeta, but it's intended for plugin objects that won't ever be encoded // except while embedded in other objects. type PluginBase struct { - Kind string `json:"kind,omitempty" yaml:"kind,omitempty"` + Kind string `json:"kind,omitempty"` } // EmbeddedObject has appropriate encoder and decoder functions, such that on the wire, it's @@ -74,22 +74,22 @@ type EmbeddedObject struct { // // // Internal package: // type MyAPIObject struct { -// runtime.TypeMeta `yaml:",inline" json:",inline"` -// MyPlugin runtime.EmbeddedObject `json:"myPlugin" yaml:"myPlugin"` +// runtime.TypeMeta `json:",inline"` +// MyPlugin runtime.EmbeddedObject `json:"myPlugin"` // } // type PluginA struct { -// runtime.PluginBase `yaml:",inline" json:",inline"` -// AOption string `yaml:"aOption" json:"aOption"` +// runtime.PluginBase `json:",inline"` +// AOption string `json:"aOption"` // } // // // External package: // type MyAPIObject struct { -// runtime.TypeMeta `yaml:",inline" json:",inline"` -// MyPlugin runtime.RawExtension `json:"myPlugin" yaml:"myPlugin"` +// runtime.TypeMeta `json:",inline"` +// MyPlugin runtime.RawExtension `json:"myPlugin"` // } // type PluginA struct { -// runtime.PluginBase `yaml:",inline" json:",inline"` -// AOption string `yaml:"aOption" json:"aOption"` +// runtime.PluginBase `json:",inline"` +// AOption string `json:"aOption"` // } // // // On the wire, the JSON will look something like this: @@ -118,7 +118,7 @@ type RawExtension struct { // TypeMeta features-- kind, version, resourceVersion, etc. // TODO: Not implemented yet! type Unknown struct { - TypeMeta `yaml:",inline" json:",inline"` + TypeMeta `json:",inline"` // RawJSON will hold the complete JSON of the object which couldn't be matched // with a registered type. Most likely, nothing should be done with this // except for passing it through the system. diff --git a/pkg/tools/etcd_tools_test.go b/pkg/tools/etcd_tools_test.go index 7bf2950b19d..6a9e7fa0482 100644 --- a/pkg/tools/etcd_tools_test.go +++ b/pkg/tools/etcd_tools_test.go @@ -36,9 +36,9 @@ type fakeClientGetSet struct { } type TestResource struct { - api.TypeMeta `json:",inline" yaml:",inline"` - api.ObjectMeta `json:"metadata" yaml:"metadata"` - Value int `json:"value" yaml:"value,omitempty"` + api.TypeMeta `json:",inline"` + api.ObjectMeta `json:"metadata"` + Value int `json:"value"` } func (*TestResource) IsAnAPIObject() {} diff --git a/pkg/util/time.go b/pkg/util/time.go index 2c4226f1c19..0b9bed866a8 100644 --- a/pkg/util/time.go +++ b/pkg/util/time.go @@ -79,35 +79,3 @@ func (t Time) MarshalJSON() ([]byte, error) { return json.Marshal(t.Format(time.RFC3339)) } - -// SetYAML implements the yaml.Setter interface. -func (t *Time) SetYAML(tag string, value interface{}) bool { - if value == nil { - t.Time = time.Time{} - return true - } - - str, ok := value.(string) - if !ok { - return false - } - - pt, err := time.Parse(time.RFC3339, str) - if err != nil { - return false - } - - t.Time = pt - return true -} - -// GetYAML implements the yaml.Getter interface. -func (t Time) GetYAML() (tag string, value interface{}) { - if t.IsZero() { - value = "null" - return - } - - value = t.Format(time.RFC3339) - return tag, value -} diff --git a/pkg/util/time_test.go b/pkg/util/time_test.go index aef8517f481..23a8fd3347f 100644 --- a/pkg/util/time_test.go +++ b/pkg/util/time_test.go @@ -26,7 +26,7 @@ import ( ) type TimeHolder struct { - T Time `json:"t" yaml:"t"` + T Time `json:"t"` } func TestTimeMarshalYAML(t *testing.T) { diff --git a/pkg/util/util.go b/pkg/util/util.go index 7baffc31af7..93424cdffa4 100644 --- a/pkg/util/util.go +++ b/pkg/util/util.go @@ -88,34 +88,6 @@ func NewIntOrStringFromString(val string) IntOrString { return IntOrString{Kind: IntstrString, StrVal: val} } -// SetYAML implements the yaml.Setter interface. -func (intstr *IntOrString) SetYAML(tag string, value interface{}) bool { - switch v := value.(type) { - case int: - intstr.Kind = IntstrInt - intstr.IntVal = v - return true - case string: - intstr.Kind = IntstrString - intstr.StrVal = v - return true - } - return false -} - -// GetYAML implements the yaml.Getter interface. -func (intstr IntOrString) GetYAML() (tag string, value interface{}) { - switch intstr.Kind { - case IntstrInt: - value = intstr.IntVal - case IntstrString: - value = intstr.StrVal - default: - panic("impossible IntOrString.Kind") - } - return -} - // UnmarshalJSON implements the json.Unmarshaller interface. func (intstr *IntOrString) UnmarshalJSON(value []byte) error { if value[0] == '"' { diff --git a/pkg/util/util_test.go b/pkg/util/util_test.go index 9c3c0300048..585d2ad7410 100644 --- a/pkg/util/util_test.go +++ b/pkg/util/util_test.go @@ -54,7 +54,7 @@ func TestNewIntOrStringFromString(t *testing.T) { } type IntOrStringHolder struct { - IOrS IntOrString `json:"val" yaml:"val"` + IOrS IntOrString `json:"val"` } func TestIntOrStringUnmarshalYAML(t *testing.T) { diff --git a/pkg/version/version.go b/pkg/version/version.go index 1343e4bde26..551b03f329f 100644 --- a/pkg/version/version.go +++ b/pkg/version/version.go @@ -20,11 +20,11 @@ package version // TODO: Add []string of api versions supported? It's still unclear // how we'll want to distribute that information. type Info struct { - Major string `json:"major" yaml:"major"` - Minor string `json:"minor" yaml:"minor"` - GitVersion string `json:"gitVersion" yaml:"gitVersion"` - GitCommit string `json:"gitCommit" yaml:"gitCommit"` - GitTreeState string `json:"gitTreeState" yaml:"gitTreeState"` + Major string `json:"major"` + Minor string `json:"minor"` + GitVersion string `json:"gitVersion"` + GitCommit string `json:"gitCommit"` + GitTreeState string `json:"gitTreeState"` } // Get returns the overall codebase version. It's for detecting diff --git a/pkg/watch/json/types.go b/pkg/watch/json/types.go index 0b0e7812b7b..6688e0fbba2 100644 --- a/pkg/watch/json/types.go +++ b/pkg/watch/json/types.go @@ -29,12 +29,12 @@ import ( // These are not API objects and are unversioned today. type watchEvent struct { // The type of the watch event; added, modified, or deleted. - Type watch.EventType `json:"type,omitempty" yaml:"type,omitempty"` + Type watch.EventType `json:"type,omitempty"` // For added or modified objects, this is the new object; for deleted objects, // it's the state of the object immediately prior to its deletion. // For errors, it's an api.Status. - Object runtime.RawExtension `json:"object,omitempty" yaml:"object,omitempty"` + Object runtime.RawExtension `json:"object,omitempty"` } // Object converts a watch.Event into an appropriately serializable JSON object