Remove unused YAML tags and GetYAML/SetYAML methods
Unneeded after move to ghodss/yaml.
This commit is contained in:
@@ -16,8 +16,8 @@ $ enscope specFilename configFilename
|
|||||||
## Scope schema
|
## Scope schema
|
||||||
```
|
```
|
||||||
type EnscopeSpec struct {
|
type EnscopeSpec struct {
|
||||||
NameSuffix string `json:"nameSuffix,omitempty" yaml:"nameSuffix,omitempty"`
|
NameSuffix string `json:"nameSuffix,omitempty"`
|
||||||
Labels map[string]string `json:"labels,omitempty" yaml:"labels,omitempty"`
|
Labels map[string]string `json:"labels,omitempty"`
|
||||||
}
|
}
|
||||||
```
|
```
|
||||||
|
|
||||||
@@ -211,4 +211,4 @@ Output:
|
|||||||
name: bar-solo-coolapp-prod
|
name: bar-solo-coolapp-prod
|
||||||
status:
|
status:
|
||||||
replicas: 0
|
replicas: 0
|
||||||
```
|
```
|
||||||
|
@@ -38,8 +38,8 @@ func checkErr(err error) {
|
|||||||
// TODO: If name suffix is not specified, deterministically generate it by hashing the labels.
|
// TODO: If name suffix is not specified, deterministically generate it by hashing the labels.
|
||||||
|
|
||||||
type EnscopeSpec struct {
|
type EnscopeSpec struct {
|
||||||
NameSuffix string `json:"nameSuffix,omitempty" yaml:"nameSuffix,omitempty"`
|
NameSuffix string `json:"nameSuffix,omitempty"`
|
||||||
Labels map[string]string `json:"labels,omitempty" yaml:"labels,omitempty"`
|
Labels map[string]string `json:"labels,omitempty"`
|
||||||
}
|
}
|
||||||
|
|
||||||
func main() {
|
func main() {
|
||||||
|
@@ -17,13 +17,13 @@ $ simplegen http://some.blog.site.com/k8s-example.yaml
|
|||||||
### Schema
|
### Schema
|
||||||
```
|
```
|
||||||
// Optional: Defaults to image base name if not specified
|
// Optional: Defaults to image base name if not specified
|
||||||
Name string `yaml:"name,omitempty" json:"name,omitempty"`
|
Name string `json:"name,omitempty"`
|
||||||
// Required.
|
// Required.
|
||||||
Image string `yaml:"image" json:"image"`
|
Image string `json:"image"`
|
||||||
// Optional: Defaults to one
|
// 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
|
// Optional: Creates a service if specified: servicePort:containerPort
|
||||||
PortSpec string `yaml:"portSpec,omitempty" json:"portSpec,omitempty"`
|
PortSpec string `json:"portSpec,omitempty"`
|
||||||
```
|
```
|
||||||
|
|
||||||
### Example
|
### Example
|
||||||
|
@@ -45,13 +45,13 @@ const usage = "usage: simplegen filename"
|
|||||||
|
|
||||||
type SimpleService struct {
|
type SimpleService struct {
|
||||||
// Optional: Defaults to image base name if not specified
|
// Optional: Defaults to image base name if not specified
|
||||||
Name string `yaml:"name,omitempty" json:"name,omitempty"`
|
Name string `json:"name,omitempty"`
|
||||||
// Required.
|
// Required.
|
||||||
Image string `yaml:"image" json:"image"`
|
Image string `json:"image"`
|
||||||
// Optional: Defaults to one
|
// 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
|
// 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) {
|
func checkErr(err error) {
|
||||||
|
@@ -15,9 +15,9 @@ $ srvexpand myservice.yaml
|
|||||||
```
|
```
|
||||||
type HierarchicalController struct {
|
type HierarchicalController struct {
|
||||||
// Optional: Defaults to one
|
// 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 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
|
type ControllerMap map[string]HierarchicalController
|
||||||
@@ -25,9 +25,9 @@ type ControllerMap map[string]HierarchicalController
|
|||||||
type HierarchicalService struct {
|
type HierarchicalService struct {
|
||||||
// Optional: Creates a service if specified: servicePort:containerPort
|
// Optional: Creates a service if specified: servicePort:containerPort
|
||||||
// TODO: Support multiple protocols
|
// TODO: Support multiple protocols
|
||||||
PortSpec string `yaml:"portSpec,omitempty" json:"portSpec,omitempty"`
|
PortSpec string `json:"portSpec,omitempty"`
|
||||||
// Map of replication controllers to create
|
// Map of replication controllers to create
|
||||||
ControllerMap ControllerMap `json:"controllers,omitempty" yaml:"controllers,omitempty"`
|
ControllerMap ControllerMap `json:"controllers,omitempty"`
|
||||||
}
|
}
|
||||||
|
|
||||||
type ServiceMap map[string]HierarchicalService
|
type ServiceMap map[string]HierarchicalService
|
||||||
@@ -213,4 +213,4 @@ Output:
|
|||||||
status:
|
status:
|
||||||
replicas: 0
|
replicas: 0
|
||||||
|
|
||||||
```
|
```
|
||||||
|
@@ -62,9 +62,9 @@ const usage = "usage: srvexpand filename"
|
|||||||
|
|
||||||
type HierarchicalController struct {
|
type HierarchicalController struct {
|
||||||
// Optional: Defaults to one
|
// 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 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
|
type ControllerMap map[string]HierarchicalController
|
||||||
@@ -72,9 +72,9 @@ type ControllerMap map[string]HierarchicalController
|
|||||||
type HierarchicalService struct {
|
type HierarchicalService struct {
|
||||||
// Optional: Creates a service if specified: servicePort:containerPort
|
// Optional: Creates a service if specified: servicePort:containerPort
|
||||||
// TODO: Support multiple protocols
|
// TODO: Support multiple protocols
|
||||||
PortSpec string `yaml:"portSpec,omitempty" json:"portSpec,omitempty"`
|
PortSpec string `json:"portSpec,omitempty"`
|
||||||
// Map of replication controllers to create
|
// Map of replication controllers to create
|
||||||
ControllerMap ControllerMap `json:"controllers,omitempty" yaml:"controllers,omitempty"`
|
ControllerMap ControllerMap `json:"controllers,omitempty"`
|
||||||
}
|
}
|
||||||
|
|
||||||
type ServiceMap map[string]HierarchicalService
|
type ServiceMap map[string]HierarchicalService
|
||||||
|
@@ -48,14 +48,14 @@ A *Namespace* is a DNS compatible subdomain.
|
|||||||
```
|
```
|
||||||
// TypeMeta is shared by all objects sent to, or returned from the client
|
// TypeMeta is shared by all objects sent to, or returned from the client
|
||||||
type TypeMeta struct {
|
type TypeMeta struct {
|
||||||
Kind string `json:"kind,omitempty" yaml:"kind,omitempty"`
|
Kind string `json:"kind,omitempty"`
|
||||||
Uid string `json:"uid,omitempty" yaml:"uid,omitempty"`
|
Uid string `json:"uid,omitempty"`
|
||||||
CreationTimestamp util.Time `json:"creationTimestamp,omitempty" yaml:"creationTimestamp,omitempty"`
|
CreationTimestamp util.Time `json:"creationTimestamp,omitempty"`
|
||||||
SelfLink string `json:"selfLink,omitempty" yaml:"selfLink,omitempty"`
|
SelfLink string `json:"selfLink,omitempty"`
|
||||||
ResourceVersion uint64 `json:"resourceVersion,omitempty" yaml:"resourceVersion,omitempty"`
|
ResourceVersion uint64 `json:"resourceVersion,omitempty"`
|
||||||
APIVersion string `json:"apiVersion,omitempty" yaml:"apiVersion,omitempty"`
|
APIVersion string `json:"apiVersion,omitempty"`
|
||||||
Namespace string `json:"namespace,omitempty" yaml:"namespace,omitempty"`
|
Namespace string `json:"namespace,omitempty"`
|
||||||
Name string `json:"name,omitempty" yaml:"name,omitempty"`
|
Name string `json:"name,omitempty"`
|
||||||
}
|
}
|
||||||
```
|
```
|
||||||
|
|
||||||
|
@@ -26,19 +26,19 @@ import (
|
|||||||
|
|
||||||
func TestGenericTypeMeta(t *testing.T) {
|
func TestGenericTypeMeta(t *testing.T) {
|
||||||
type TypeMeta struct {
|
type TypeMeta struct {
|
||||||
Kind string `json:"kind,omitempty" yaml:"kind,omitempty"`
|
Kind string `json:"kind,omitempty"`
|
||||||
Namespace string `json:"namespace,omitempty" yaml:"namespace,omitempty"`
|
Namespace string `json:"namespace,omitempty"`
|
||||||
Name string `json:"name,omitempty" yaml:"name,omitempty"`
|
Name string `json:"name,omitempty"`
|
||||||
UID string `json:"uid,omitempty" yaml:"uid,omitempty"`
|
UID string `json:"uid,omitempty"`
|
||||||
CreationTimestamp util.Time `json:"creationTimestamp,omitempty" yaml:"creationTimestamp,omitempty"`
|
CreationTimestamp util.Time `json:"creationTimestamp,omitempty"`
|
||||||
SelfLink string `json:"selfLink,omitempty" yaml:"selfLink,omitempty"`
|
SelfLink string `json:"selfLink,omitempty"`
|
||||||
ResourceVersion string `json:"resourceVersion,omitempty" yaml:"resourceVersion,omitempty"`
|
ResourceVersion string `json:"resourceVersion,omitempty"`
|
||||||
APIVersion string `json:"apiVersion,omitempty" yaml:"apiVersion,omitempty"`
|
APIVersion string `json:"apiVersion,omitempty"`
|
||||||
Labels map[string]string `json:"labels,omitempty" yaml:"labels,omitempty"`
|
Labels map[string]string `json:"labels,omitempty"`
|
||||||
Annotations map[string]string `json:"annotations,omitempty" yaml:"annotations,omitempty"`
|
Annotations map[string]string `json:"annotations,omitempty"`
|
||||||
}
|
}
|
||||||
type Object struct {
|
type Object struct {
|
||||||
TypeMeta `json:",inline" yaml:",inline"`
|
TypeMeta `json:",inline"`
|
||||||
}
|
}
|
||||||
j := Object{
|
j := Object{
|
||||||
TypeMeta{
|
TypeMeta{
|
||||||
@@ -112,19 +112,19 @@ func TestGenericTypeMeta(t *testing.T) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
type InternalTypeMeta struct {
|
type InternalTypeMeta struct {
|
||||||
Kind string `json:"kind,omitempty" yaml:"kind,omitempty"`
|
Kind string `json:"kind,omitempty"`
|
||||||
Namespace string `json:"namespace,omitempty" yaml:"namespace,omitempty"`
|
Namespace string `json:"namespace,omitempty"`
|
||||||
Name string `json:"name,omitempty" yaml:"name,omitempty"`
|
Name string `json:"name,omitempty"`
|
||||||
UID string `json:"uid,omitempty" yaml:"uid,omitempty"`
|
UID string `json:"uid,omitempty"`
|
||||||
CreationTimestamp util.Time `json:"creationTimestamp,omitempty" yaml:"creationTimestamp,omitempty"`
|
CreationTimestamp util.Time `json:"creationTimestamp,omitempty"`
|
||||||
SelfLink string `json:"selfLink,omitempty" yaml:"selfLink,omitempty"`
|
SelfLink string `json:"selfLink,omitempty"`
|
||||||
ResourceVersion string `json:"resourceVersion,omitempty" yaml:"resourceVersion,omitempty"`
|
ResourceVersion string `json:"resourceVersion,omitempty"`
|
||||||
APIVersion string `json:"apiVersion,omitempty" yaml:"apiVersion,omitempty"`
|
APIVersion string `json:"apiVersion,omitempty"`
|
||||||
Labels map[string]string `json:"labels,omitempty" yaml:"labels,omitempty"`
|
Labels map[string]string `json:"labels,omitempty"`
|
||||||
Annotations map[string]string `json:"annotations,omitempty" yaml:"annotations,omitempty"`
|
Annotations map[string]string `json:"annotations,omitempty"`
|
||||||
}
|
}
|
||||||
type InternalObject struct {
|
type InternalObject struct {
|
||||||
TypeMeta InternalTypeMeta `json:",inline" yaml:",inline"`
|
TypeMeta InternalTypeMeta `json:",inline"`
|
||||||
}
|
}
|
||||||
|
|
||||||
func (*InternalObject) IsAnAPIObject() {}
|
func (*InternalObject) IsAnAPIObject() {}
|
||||||
@@ -269,22 +269,22 @@ func TestGenericTypeMetaAccessor(t *testing.T) {
|
|||||||
|
|
||||||
func TestGenericObjectMeta(t *testing.T) {
|
func TestGenericObjectMeta(t *testing.T) {
|
||||||
type TypeMeta struct {
|
type TypeMeta struct {
|
||||||
Kind string `json:"kind,omitempty" yaml:"kind,omitempty"`
|
Kind string `json:"kind,omitempty"`
|
||||||
APIVersion string `json:"apiVersion,omitempty" yaml:"apiVersion,omitempty"`
|
APIVersion string `json:"apiVersion,omitempty"`
|
||||||
}
|
}
|
||||||
type ObjectMeta struct {
|
type ObjectMeta struct {
|
||||||
Namespace string `json:"namespace,omitempty" yaml:"namespace,omitempty"`
|
Namespace string `json:"namespace,omitempty"`
|
||||||
Name string `json:"name,omitempty" yaml:"name,omitempty"`
|
Name string `json:"name,omitempty"`
|
||||||
UID string `json:"uid,omitempty" yaml:"uid,omitempty"`
|
UID string `json:"uid,omitempty"`
|
||||||
CreationTimestamp util.Time `json:"creationTimestamp,omitempty" yaml:"creationTimestamp,omitempty"`
|
CreationTimestamp util.Time `json:"creationTimestamp,omitempty"`
|
||||||
SelfLink string `json:"selfLink,omitempty" yaml:"selfLink,omitempty"`
|
SelfLink string `json:"selfLink,omitempty"`
|
||||||
ResourceVersion string `json:"resourceVersion,omitempty" yaml:"resourceVersion,omitempty"`
|
ResourceVersion string `json:"resourceVersion,omitempty"`
|
||||||
Labels map[string]string `json:"labels,omitempty" yaml:"labels,omitempty"`
|
Labels map[string]string `json:"labels,omitempty"`
|
||||||
Annotations map[string]string `json:"annotations,omitempty" yaml:"annotations,omitempty"`
|
Annotations map[string]string `json:"annotations,omitempty"`
|
||||||
}
|
}
|
||||||
type Object struct {
|
type Object struct {
|
||||||
TypeMeta `json:",inline" yaml:",inline"`
|
TypeMeta `json:",inline"`
|
||||||
ObjectMeta `json:"metadata" yaml:"metadata"`
|
ObjectMeta `json:"metadata"`
|
||||||
}
|
}
|
||||||
j := Object{
|
j := Object{
|
||||||
TypeMeta{
|
TypeMeta{
|
||||||
@@ -375,16 +375,16 @@ func TestGenericObjectMeta(t *testing.T) {
|
|||||||
|
|
||||||
func TestGenericListMeta(t *testing.T) {
|
func TestGenericListMeta(t *testing.T) {
|
||||||
type TypeMeta struct {
|
type TypeMeta struct {
|
||||||
Kind string `json:"kind,omitempty" yaml:"kind,omitempty"`
|
Kind string `json:"kind,omitempty"`
|
||||||
APIVersion string `json:"apiVersion,omitempty" yaml:"apiVersion,omitempty"`
|
APIVersion string `json:"apiVersion,omitempty"`
|
||||||
}
|
}
|
||||||
type ListMeta struct {
|
type ListMeta struct {
|
||||||
SelfLink string `json:"selfLink,omitempty" yaml:"selfLink,omitempty"`
|
SelfLink string `json:"selfLink,omitempty"`
|
||||||
ResourceVersion string `json:"resourceVersion,omitempty" yaml:"resourceVersion,omitempty"`
|
ResourceVersion string `json:"resourceVersion,omitempty"`
|
||||||
}
|
}
|
||||||
type Object struct {
|
type Object struct {
|
||||||
TypeMeta `json:",inline" yaml:",inline"`
|
TypeMeta `json:",inline"`
|
||||||
ListMeta `json:"metadata" yaml:"metadata"`
|
ListMeta `json:"metadata"`
|
||||||
}
|
}
|
||||||
j := Object{
|
j := Object{
|
||||||
TypeMeta{
|
TypeMeta{
|
||||||
@@ -442,7 +442,7 @@ func TestGenericListMeta(t *testing.T) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
type MyAPIObject struct {
|
type MyAPIObject struct {
|
||||||
TypeMeta InternalTypeMeta `json:",inline" yaml:",inline"`
|
TypeMeta InternalTypeMeta `json:",inline"`
|
||||||
}
|
}
|
||||||
|
|
||||||
func (*MyAPIObject) IsAnAPIObject() {}
|
func (*MyAPIObject) IsAnAPIObject() {}
|
||||||
|
420
pkg/api/types.go
420
pkg/api/types.go
@@ -51,25 +51,25 @@ import (
|
|||||||
type TypeMeta struct {
|
type TypeMeta struct {
|
||||||
// Kind is a string value representing the REST resource this object represents.
|
// Kind is a string value representing the REST resource this object represents.
|
||||||
// Servers may infer this from the endpoint the client submits requests to.
|
// 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.
|
// APIVersion defines the versioned schema of this representation of an object.
|
||||||
// Servers should convert recognized schemas to the latest internal value, and
|
// Servers should convert recognized schemas to the latest internal value, and
|
||||||
// may reject unrecognized values.
|
// 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
|
// ListMeta describes metadata that synthetic resources must have, including lists and
|
||||||
// various status objects. A resource may have only one of {ObjectMeta, ListMeta}.
|
// various status objects. A resource may have only one of {ObjectMeta, ListMeta}.
|
||||||
type ListMeta struct {
|
type ListMeta struct {
|
||||||
// SelfLink is a URL representing this object.
|
// 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
|
// 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
|
// 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
|
// and values may only be valid for a particular resource or set of resources. Only servers
|
||||||
// will generate resource versions.
|
// 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
|
// 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
|
// some resources may allow a client to request the generation of an appropriate name
|
||||||
// automatically. Name is primarily intended for creation idempotence and configuration
|
// automatically. Name is primarily intended for creation idempotence and configuration
|
||||||
// definition.
|
// 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
|
// 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.
|
// 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
|
// Not all objects are required to be scoped to a namespace - the value of this field for
|
||||||
// those objects will be empty.
|
// 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 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
|
// 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
|
// the server on successful creation of a resource and is not allowed to change on PUT
|
||||||
// operations.
|
// 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
|
// 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.
|
// 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
|
// 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.
|
// 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
|
// 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.
|
// 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.
|
// 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.
|
// Labels are key value pairs that may be used to scope and select individual resources.
|
||||||
// Label keys are of the form:
|
// 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
|
// 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.
|
// "kubernetes.io/" prefix is reserved for use by kubernetes components.
|
||||||
// TODO: replace map[string]string with labels.LabelSet type
|
// 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
|
// 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
|
// 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
|
// objects. Annotation keys have the same formatting restrictions as Label keys. See the
|
||||||
// comments on Labels for details.
|
// comments on Labels for details.
|
||||||
Annotations map[string]string `json:"annotations,omitempty" yaml:"annotations,omitempty"`
|
Annotations map[string]string `json:"annotations,omitempty"`
|
||||||
}
|
}
|
||||||
|
|
||||||
const (
|
const (
|
||||||
@@ -138,11 +138,11 @@ const (
|
|||||||
type Volume struct {
|
type Volume struct {
|
||||||
// Required: This must be a DNS_LABEL. Each volume in a pod must have
|
// Required: This must be a DNS_LABEL. Each volume in a pod must have
|
||||||
// a unique name.
|
// a unique name.
|
||||||
Name string `json:"name" yaml:"name"`
|
Name string `json:"name"`
|
||||||
// Source represents the location and type of a volume to mount.
|
// 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 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.
|
// 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.
|
// 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.
|
// 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
|
// TODO(jonesdl) We need to restrict who can use host directory mounts and who can/can not
|
||||||
// mount host directories as read/write.
|
// 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 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
|
// GCEPersistentDisk represents a GCE Disk resource that is attached to a
|
||||||
// kubelet's host machine and then exposed to the pod.
|
// 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 represents a git repository at a particular revision.
|
||||||
GitRepo *GitRepo `json:"gitRepo" yaml:"gitRepo"`
|
GitRepo *GitRepo `json:"gitRepo"`
|
||||||
}
|
}
|
||||||
|
|
||||||
// HostDir represents bare host directory volume.
|
// HostDir represents bare host directory volume.
|
||||||
type HostDir struct {
|
type HostDir struct {
|
||||||
Path string `json:"path" yaml:"path"`
|
Path string `json:"path"`
|
||||||
}
|
}
|
||||||
|
|
||||||
type EmptyDir struct{}
|
type EmptyDir struct{}
|
||||||
@@ -187,27 +187,27 @@ const (
|
|||||||
// A GCE PD can only be mounted as read/write once.
|
// A GCE PD can only be mounted as read/write once.
|
||||||
type GCEPersistentDisk struct {
|
type GCEPersistentDisk struct {
|
||||||
// Unique name of the PD resource. Used to identify the disk in GCE
|
// 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.
|
// Required: Filesystem type to mount.
|
||||||
// Must be a filesystem type supported by the host operating system.
|
// Must be a filesystem type supported by the host operating system.
|
||||||
// Ex. "ext4", "xfs", "ntfs"
|
// Ex. "ext4", "xfs", "ntfs"
|
||||||
// TODO: how do we prevent errors in the filesystem from compromising the machine
|
// 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.
|
// Optional: Partition on the disk to mount.
|
||||||
// If omitted, kubelet will attempt to mount the device name.
|
// 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.
|
// 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
|
// Optional: Defaults to false (read/write). ReadOnly here will force
|
||||||
// the ReadOnly setting in VolumeMounts.
|
// 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.
|
// GitRepo represents a volume that is pulled from git when the pod is created.
|
||||||
type GitRepo struct {
|
type GitRepo struct {
|
||||||
// Repository URL
|
// Repository URL
|
||||||
Repository string `yaml:"repository" json:"repository"`
|
Repository string `json:"repository"`
|
||||||
// Commit hash, this is optional
|
// Commit hash, this is optional
|
||||||
Revision string `yaml:"revision" json:"revision"`
|
Revision string `json:"revision"`
|
||||||
// TODO: Consider credentials here.
|
// TODO: Consider credentials here.
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -215,49 +215,49 @@ type GitRepo struct {
|
|||||||
type Port struct {
|
type Port struct {
|
||||||
// Optional: If specified, this must be a DNS_LABEL. Each named port
|
// Optional: If specified, this must be a DNS_LABEL. Each named port
|
||||||
// in a pod must have a unique name.
|
// 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.
|
// 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.
|
// 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".
|
// 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.
|
// 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.
|
// VolumeMount describes a mounting of a Volume within a container.
|
||||||
type VolumeMount struct {
|
type VolumeMount struct {
|
||||||
// Required: This must match the Name of a Volume [above].
|
// 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).
|
// Optional: Defaults to false (read-write).
|
||||||
ReadOnly bool `json:"readOnly,omitempty" yaml:"readOnly,omitempty"`
|
ReadOnly bool `json:"readOnly,omitempty"`
|
||||||
// Required.
|
// Required.
|
||||||
MountPath string `json:"mountPath,omitempty" yaml:"mountPath,omitempty"`
|
MountPath string `json:"mountPath,omitempty"`
|
||||||
}
|
}
|
||||||
|
|
||||||
// EnvVar represents an environment variable present in a Container.
|
// EnvVar represents an environment variable present in a Container.
|
||||||
type EnvVar struct {
|
type EnvVar struct {
|
||||||
// Required: This must be a C_IDENTIFIER.
|
// Required: This must be a C_IDENTIFIER.
|
||||||
Name string `json:"name" yaml:"name"`
|
Name string `json:"name"`
|
||||||
// Optional: defaults to "".
|
// 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.
|
// HTTPGetAction describes an action based on HTTP Get requests.
|
||||||
type HTTPGetAction struct {
|
type HTTPGetAction struct {
|
||||||
// Optional: Path to access on the HTTP server.
|
// 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.
|
// 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.
|
// 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
|
// TCPSocketAction describes an action based on opening a socket
|
||||||
type TCPSocketAction struct {
|
type TCPSocketAction struct {
|
||||||
// Required: Port to connect to.
|
// 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.
|
// 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
|
// 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
|
// 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 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.
|
// LivenessProbe describes a liveness probe to be examined to the container.
|
||||||
// TODO: pass structured data to the actions, and document that data here.
|
// TODO: pass structured data to the actions, and document that data here.
|
||||||
type LivenessProbe struct {
|
type LivenessProbe struct {
|
||||||
// HTTPGetProbe parameters, required if Type == 'http'
|
// 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'
|
// 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'
|
// 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.
|
// 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
|
// PullPolicy describes a policy for if/when to pull a container image
|
||||||
@@ -298,28 +298,28 @@ const (
|
|||||||
type Container struct {
|
type Container struct {
|
||||||
// Required: This must be a DNS_LABEL. Each container in a pod must
|
// Required: This must be a DNS_LABEL. Each container in a pod must
|
||||||
// have a unique name.
|
// have a unique name.
|
||||||
Name string `json:"name" yaml:"name"`
|
Name string `json:"name"`
|
||||||
// Required.
|
// Required.
|
||||||
Image string `json:"image" yaml:"image"`
|
Image string `json:"image"`
|
||||||
// Optional: Defaults to whatever is defined in the 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.
|
// Optional: Defaults to Docker's default.
|
||||||
WorkingDir string `json:"workingDir,omitempty" yaml:"workingDir,omitempty"`
|
WorkingDir string `json:"workingDir,omitempty"`
|
||||||
Ports []Port `json:"ports,omitempty" yaml:"ports,omitempty"`
|
Ports []Port `json:"ports,omitempty"`
|
||||||
Env []EnvVar `json:"env,omitempty" yaml:"env,omitempty"`
|
Env []EnvVar `json:"env,omitempty"`
|
||||||
// Optional: Defaults to unlimited.
|
// Optional: Defaults to unlimited.
|
||||||
Memory int `json:"memory,omitempty" yaml:"memory,omitempty"`
|
Memory int `json:"memory,omitempty"`
|
||||||
// Optional: Defaults to unlimited.
|
// Optional: Defaults to unlimited.
|
||||||
CPU int `json:"cpu,omitempty" yaml:"cpu,omitempty"`
|
CPU int `json:"cpu,omitempty"`
|
||||||
VolumeMounts []VolumeMount `json:"volumeMounts,omitempty" yaml:"volumeMounts,omitempty"`
|
VolumeMounts []VolumeMount `json:"volumeMounts,omitempty"`
|
||||||
LivenessProbe *LivenessProbe `json:"livenessProbe,omitempty" yaml:"livenessProbe,omitempty"`
|
LivenessProbe *LivenessProbe `json:"livenessProbe,omitempty"`
|
||||||
Lifecycle *Lifecycle `json:"lifecycle,omitempty" yaml:"lifecycle,omitempty"`
|
Lifecycle *Lifecycle `json:"lifecycle,omitempty"`
|
||||||
// Optional: Defaults to /dev/termination-log
|
// Optional: Defaults to /dev/termination-log
|
||||||
TerminationMessagePath string `json:"terminationMessagePath,omitempty" yaml:"terminationMessagePath,omitempty"`
|
TerminationMessagePath string `json:"terminationMessagePath,omitempty"`
|
||||||
// Optional: Default to false.
|
// 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
|
// 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
|
// Handler defines a specific action that should be taken
|
||||||
@@ -327,9 +327,9 @@ type Container struct {
|
|||||||
type Handler struct {
|
type Handler struct {
|
||||||
// One and only one of the following should be specified.
|
// One and only one of the following should be specified.
|
||||||
// Exec specifies the action to take.
|
// 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 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
|
// Lifecycle describes actions that the management system should take in response to container lifecycle
|
||||||
@@ -338,10 +338,10 @@ type Handler struct {
|
|||||||
type Lifecycle struct {
|
type Lifecycle struct {
|
||||||
// PostStart is called immediately after a container is created. If the handler fails, the container
|
// PostStart is called immediately after a container is created. If the handler fails, the container
|
||||||
// is terminated and restarted.
|
// 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
|
// 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.
|
// 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.
|
// The below types are used by kube_client and api_server.
|
||||||
@@ -368,43 +368,43 @@ const (
|
|||||||
|
|
||||||
type ContainerStateWaiting struct {
|
type ContainerStateWaiting struct {
|
||||||
// Reason could be pulling image,
|
// Reason could be pulling image,
|
||||||
Reason string `json:"reason,omitempty" yaml:"reason,omitempty"`
|
Reason string `json:"reason,omitempty"`
|
||||||
}
|
}
|
||||||
|
|
||||||
type ContainerStateRunning struct {
|
type ContainerStateRunning struct {
|
||||||
StartedAt time.Time `json:"startedAt,omitempty" yaml:"startedAt,omitempty"`
|
StartedAt time.Time `json:"startedAt,omitempty"`
|
||||||
}
|
}
|
||||||
|
|
||||||
type ContainerStateTerminated struct {
|
type ContainerStateTerminated struct {
|
||||||
ExitCode int `json:"exitCode" yaml:"exitCode"`
|
ExitCode int `json:"exitCode"`
|
||||||
Signal int `json:"signal,omitempty" yaml:"signal,omitempty"`
|
Signal int `json:"signal,omitempty"`
|
||||||
Reason string `json:"reason,omitempty" yaml:"reason,omitempty"`
|
Reason string `json:"reason,omitempty"`
|
||||||
Message string `json:"message,omitempty" yaml:"message,omitempty"`
|
Message string `json:"message,omitempty"`
|
||||||
StartedAt time.Time `json:"startedAt,omitempty" yaml:"startedAt,omitempty"`
|
StartedAt time.Time `json:"startedAt,omitempty"`
|
||||||
FinishedAt time.Time `json:"finishedAt,omitempty" yaml:"finishedAt,omitempty"`
|
FinishedAt time.Time `json:"finishedAt,omitempty"`
|
||||||
}
|
}
|
||||||
|
|
||||||
// ContainerState holds a possible state of container.
|
// ContainerState holds a possible state of container.
|
||||||
// Only one of its members may be specified.
|
// Only one of its members may be specified.
|
||||||
// If none of them is specified, the default one is ContainerStateWaiting.
|
// If none of them is specified, the default one is ContainerStateWaiting.
|
||||||
type ContainerState struct {
|
type ContainerState struct {
|
||||||
Waiting *ContainerStateWaiting `json:"waiting,omitempty" yaml:"waiting,omitempty"`
|
Waiting *ContainerStateWaiting `json:"waiting,omitempty"`
|
||||||
Running *ContainerStateRunning `json:"running,omitempty" yaml:"running,omitempty"`
|
Running *ContainerStateRunning `json:"running,omitempty"`
|
||||||
Termination *ContainerStateTerminated `json:"termination,omitempty" yaml:"termination,omitempty"`
|
Termination *ContainerStateTerminated `json:"termination,omitempty"`
|
||||||
}
|
}
|
||||||
|
|
||||||
type ContainerStatus struct {
|
type ContainerStatus struct {
|
||||||
// TODO(dchen1107): Should we rename PodStatus to a more generic name or have a separate states
|
// TODO(dchen1107): Should we rename PodStatus to a more generic name or have a separate states
|
||||||
// defined for container?
|
// 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
|
// 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.
|
// 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,
|
// 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
|
// 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
|
// 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.
|
// 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
|
// If none of the following policies is specified, the default one
|
||||||
// is RestartPolicyAlways.
|
// is RestartPolicyAlways.
|
||||||
type RestartPolicy struct {
|
type RestartPolicy struct {
|
||||||
Always *RestartPolicyAlways `json:"always,omitempty" yaml:"always,omitempty"`
|
Always *RestartPolicyAlways `json:"always,omitempty"`
|
||||||
OnFailure *RestartPolicyOnFailure `json:"onFailure,omitempty" yaml:"onFailure,omitempty"`
|
OnFailure *RestartPolicyOnFailure `json:"onFailure,omitempty"`
|
||||||
Never *RestartPolicyNever `json:"never,omitempty" yaml:"never,omitempty"`
|
Never *RestartPolicyNever `json:"never,omitempty"`
|
||||||
}
|
}
|
||||||
|
|
||||||
// PodState is the state of a pod, used as either input (desired state) or output (current state).
|
// PodState is the state of a pod, used as either input (desired state) or output (current state).
|
||||||
type PodState struct {
|
type PodState struct {
|
||||||
Manifest ContainerManifest `json:"manifest,omitempty" yaml:"manifest,omitempty"`
|
Manifest ContainerManifest `json:"manifest,omitempty"`
|
||||||
Status PodPhase `json:"status,omitempty" yaml:"status,omitempty"`
|
Status PodPhase `json:"status,omitempty"`
|
||||||
// A human readable message indicating details about why the pod is in this state.
|
// 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 string `json:"host,omitempty" yaml:"host,omitempty"`
|
Host string `json:"host,omitempty"`
|
||||||
HostIP string `json:"hostIP,omitempty" yaml:"hostIP,omitempty"`
|
HostIP string `json:"hostIP,omitempty"`
|
||||||
PodIP string `json:"podIP,omitempty" yaml:"podIP,omitempty"`
|
PodIP string `json:"podIP,omitempty"`
|
||||||
|
|
||||||
// The key of this map is the *name* of the container within the manifest; it has one
|
// 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
|
// entry per container in the manifest. The value of this map is currently the output
|
||||||
@@ -444,36 +444,36 @@ type PodState struct {
|
|||||||
// upon.
|
// upon.
|
||||||
// TODO: Make real decisions about what our info should look like. Re-enable fuzz test
|
// TODO: Make real decisions about what our info should look like. Re-enable fuzz test
|
||||||
// when we have done this.
|
// when we have done this.
|
||||||
Info PodInfo `json:"info,omitempty" yaml:"info,omitempty"`
|
Info PodInfo `json:"info,omitempty"`
|
||||||
}
|
}
|
||||||
|
|
||||||
// PodList is a list of Pods.
|
// PodList is a list of Pods.
|
||||||
type PodList struct {
|
type PodList struct {
|
||||||
TypeMeta `json:",inline" yaml:",inline"`
|
TypeMeta `json:",inline"`
|
||||||
ListMeta `json:"metadata,omitempty" yaml:"metadata,omitempty"`
|
ListMeta `json:"metadata,omitempty"`
|
||||||
|
|
||||||
Items []Pod `json:"items" yaml:"items"`
|
Items []Pod `json:"items"`
|
||||||
}
|
}
|
||||||
|
|
||||||
// PodSpec is a description of a pod
|
// PodSpec is a description of a pod
|
||||||
type PodSpec struct {
|
type PodSpec struct {
|
||||||
Volumes []Volume `json:"volumes" yaml:"volumes"`
|
Volumes []Volume `json:"volumes"`
|
||||||
Containers []Container `json:"containers" yaml:"containers"`
|
Containers []Container `json:"containers"`
|
||||||
RestartPolicy RestartPolicy `json:"restartPolicy,omitempty" yaml:"restartPolicy,omitempty"`
|
RestartPolicy RestartPolicy `json:"restartPolicy,omitempty"`
|
||||||
// NodeSelector is a selector which must be true for the pod to fit on a node
|
// 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
|
// PodStatus represents information about the status of a pod. Status may trail the actual
|
||||||
// state of a system.
|
// state of a system.
|
||||||
type PodStatus struct {
|
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
|
// Host is the name of the node that this Pod is currently bound to, or empty if no
|
||||||
// assignment has been done.
|
// assignment has been done.
|
||||||
Host string `json:"host,omitempty" yaml:"host,omitempty"`
|
Host string `json:"host,omitempty"`
|
||||||
HostIP string `json:"hostIP,omitempty" yaml:"hostIP,omitempty"`
|
HostIP string `json:"hostIP,omitempty"`
|
||||||
PodIP string `json:"podIP,omitempty" yaml:"podIP,omitempty"`
|
PodIP string `json:"podIP,omitempty"`
|
||||||
|
|
||||||
// The key of this map is the *name* of the container within the manifest; it has one
|
// 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
|
// entry per container in the manifest. The value of this map is currently the output
|
||||||
@@ -481,46 +481,46 @@ type PodStatus struct {
|
|||||||
// upon.
|
// upon.
|
||||||
// TODO: Make real decisions about what our info should look like. Re-enable fuzz test
|
// TODO: Make real decisions about what our info should look like. Re-enable fuzz test
|
||||||
// when we have done this.
|
// 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).
|
// Pod is a collection of containers, used as either input (create, update) or as output (list, get).
|
||||||
type Pod struct {
|
type Pod struct {
|
||||||
TypeMeta `json:",inline" yaml:",inline"`
|
TypeMeta `json:",inline"`
|
||||||
ObjectMeta `json:"metadata,omitempty" yaml:"metadata,omitempty"`
|
ObjectMeta `json:"metadata,omitempty"`
|
||||||
|
|
||||||
// Spec defines the behavior of a pod.
|
// 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
|
// Status represents the current information about a pod. This data may not be up
|
||||||
// to date.
|
// 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
|
// PodTemplateSpec describes the data a pod should have when created from a template
|
||||||
type PodTemplateSpec struct {
|
type PodTemplateSpec struct {
|
||||||
// Metadata of the pods created from this template.
|
// 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 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.
|
// PodTemplate describes a template for creating copies of a predefined pod.
|
||||||
type PodTemplate struct {
|
type PodTemplate struct {
|
||||||
TypeMeta `json:",inline" yaml:",inline"`
|
TypeMeta `json:",inline"`
|
||||||
ObjectMeta `json:"metadata,omitempty" yaml:"metadata,omitempty"`
|
ObjectMeta `json:"metadata,omitempty"`
|
||||||
|
|
||||||
// Spec defines the pods that will be created from this template
|
// 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.
|
// PodTemplateList is a list of PodTemplates.
|
||||||
type PodTemplateList struct {
|
type PodTemplateList struct {
|
||||||
TypeMeta `json:",inline" yaml:",inline"`
|
TypeMeta `json:",inline"`
|
||||||
ListMeta `json:"metadata,omitempty" yaml:"metadata,omitempty"`
|
ListMeta `json:"metadata,omitempty"`
|
||||||
|
|
||||||
Items []PodTemplate `json:"items" yaml:"items"`
|
Items []PodTemplate `json:"items"`
|
||||||
}
|
}
|
||||||
|
|
||||||
// ReplicationControllerSpec is the specification of a replication controller.
|
// ReplicationControllerSpec is the specification of a replication controller.
|
||||||
@@ -528,57 +528,57 @@ type PodTemplateList struct {
|
|||||||
// a TemplateRef or a Template set.
|
// a TemplateRef or a Template set.
|
||||||
type ReplicationControllerSpec struct {
|
type ReplicationControllerSpec struct {
|
||||||
// Replicas is the number of desired replicas.
|
// 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 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
|
// 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.
|
// insufficient replicas are detected. This reference is ignored if a Template is set.
|
||||||
// Must be set before converting to a v1beta3 API object
|
// 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
|
// Template is the object that describes the pod that will be created if
|
||||||
// insufficient replicas are detected. Internally, this takes precedence over a
|
// insufficient replicas are detected. Internally, this takes precedence over a
|
||||||
// TemplateRef.
|
// TemplateRef.
|
||||||
// Must be set before converting to a v1beta1 or v1beta2 API object.
|
// 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
|
// ReplicationControllerStatus represents the current status of a replication
|
||||||
// controller.
|
// controller.
|
||||||
type ReplicationControllerStatus struct {
|
type ReplicationControllerStatus struct {
|
||||||
// Replicas is the number of actual replicas.
|
// 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.
|
// ReplicationController represents the configuration of a replication controller.
|
||||||
type ReplicationController struct {
|
type ReplicationController struct {
|
||||||
TypeMeta `json:",inline" yaml:",inline"`
|
TypeMeta `json:",inline"`
|
||||||
ObjectMeta `json:"metadata,omitempty" yaml:"metadata,omitempty"`
|
ObjectMeta `json:"metadata,omitempty"`
|
||||||
|
|
||||||
// Spec defines the desired behavior of this replication controller.
|
// 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
|
// Status is the current status of this replication controller. This data may be
|
||||||
// out of date by some window of time.
|
// 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.
|
// ReplicationControllerList is a collection of replication controllers.
|
||||||
type ReplicationControllerList struct {
|
type ReplicationControllerList struct {
|
||||||
TypeMeta `json:",inline" yaml:",inline"`
|
TypeMeta `json:",inline"`
|
||||||
ListMeta `json:"metadata,omitempty" yaml:"metadata,omitempty"`
|
ListMeta `json:"metadata,omitempty"`
|
||||||
|
|
||||||
Items []ReplicationController `json:"items" yaml:"items"`
|
Items []ReplicationController `json:"items"`
|
||||||
}
|
}
|
||||||
|
|
||||||
// ServiceList holds a list of services.
|
// ServiceList holds a list of services.
|
||||||
type ServiceList struct {
|
type ServiceList struct {
|
||||||
TypeMeta `json:",inline" yaml:",inline"`
|
TypeMeta `json:",inline"`
|
||||||
ListMeta `json:"metadata,omitempty" yaml:"metadata,omitempty"`
|
ListMeta `json:"metadata,omitempty"`
|
||||||
|
|
||||||
Items []Service `json:"items" yaml:"items"`
|
Items []Service `json:"items"`
|
||||||
}
|
}
|
||||||
|
|
||||||
// ServiceStatus represents the current status of a service
|
// ServiceStatus represents the current status of a service
|
||||||
@@ -588,74 +588,74 @@ type ServiceStatus struct{}
|
|||||||
type ServiceSpec struct {
|
type ServiceSpec struct {
|
||||||
// Port is the TCP or UDP port that will be made available to each pod for connecting to the pods
|
// Port is the TCP or UDP port that will be made available to each pod for connecting to the pods
|
||||||
// proxied by this service.
|
// proxied by this service.
|
||||||
Port int `json:"port" yaml:"port"`
|
Port int `json:"port"`
|
||||||
|
|
||||||
// Optional: Supports "TCP" and "UDP". Defaults to "TCP".
|
// 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.
|
// 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
|
// 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
|
// we will try to respect it or else fail the request. This field can
|
||||||
// not be changed by updates.
|
// 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 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.
|
// 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 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 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.
|
// ContainerPort is the name of the port on the container to direct traffic to.
|
||||||
// Optional, if unspecified use the first port on the container.
|
// 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
|
// 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
|
// (for example 3306) that the proxy listens on, and the selector that determines which pods
|
||||||
// will answer requests sent through the proxy.
|
// will answer requests sent through the proxy.
|
||||||
type Service struct {
|
type Service struct {
|
||||||
TypeMeta `json:",inline" yaml:",inline"`
|
TypeMeta `json:",inline"`
|
||||||
ObjectMeta `json:"metadata,omitempty" yaml:"metadata,omitempty"`
|
ObjectMeta `json:"metadata,omitempty"`
|
||||||
|
|
||||||
// Spec defines the behavior of a service.
|
// 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 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:
|
// 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"]
|
// Name: "mysql", Endpoints: ["10.10.1.1:1909", "10.10.2.2:8834"]
|
||||||
type Endpoints struct {
|
type Endpoints struct {
|
||||||
TypeMeta `json:",inline" yaml:",inline"`
|
TypeMeta `json:",inline"`
|
||||||
ObjectMeta `json:"metadata,omitempty" yaml:"metadata,omitempty"`
|
ObjectMeta `json:"metadata,omitempty"`
|
||||||
|
|
||||||
Endpoints []string `json:"endpoints,omitempty" yaml:"endpoints,omitempty"`
|
Endpoints []string `json:"endpoints,omitempty"`
|
||||||
}
|
}
|
||||||
|
|
||||||
// EndpointsList is a list of endpoints.
|
// EndpointsList is a list of endpoints.
|
||||||
type EndpointsList struct {
|
type EndpointsList struct {
|
||||||
TypeMeta `json:",inline" yaml:",inline"`
|
TypeMeta `json:",inline"`
|
||||||
ListMeta `json:"metadata,omitempty" yaml:"metadata,omitempty"`
|
ListMeta `json:"metadata,omitempty"`
|
||||||
|
|
||||||
Items []Endpoints `json:"items" yaml:"items"`
|
Items []Endpoints `json:"items"`
|
||||||
}
|
}
|
||||||
|
|
||||||
// NodeSpec describes the attributes that a node is created with.
|
// NodeSpec describes the attributes that a node is created with.
|
||||||
type NodeSpec struct {
|
type NodeSpec struct {
|
||||||
// Capacity represents the available resources of a node
|
// 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.
|
// NodeStatus is information about the current status of a node.
|
||||||
type NodeStatus struct {
|
type NodeStatus struct {
|
||||||
// Queried from cloud provider, if available.
|
// 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.
|
// NodeResources is an object for conveying resource information about a node.
|
||||||
@@ -663,7 +663,7 @@ type NodeStatus struct {
|
|||||||
// TODO: Use ResourceList instead?
|
// TODO: Use ResourceList instead?
|
||||||
type NodeResources struct {
|
type NodeResources struct {
|
||||||
// Capacity represents the available resources of a node
|
// Capacity represents the available resources of a node
|
||||||
Capacity ResourceList `json:"capacity,omitempty" yaml:"capacity,omitempty"`
|
Capacity ResourceList `json:"capacity,omitempty"`
|
||||||
}
|
}
|
||||||
|
|
||||||
type ResourceName string
|
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.
|
// The name of the minion according to etcd is in ObjectMeta.Name.
|
||||||
// TODO: Rename to Node
|
// TODO: Rename to Node
|
||||||
type Minion struct {
|
type Minion struct {
|
||||||
TypeMeta `json:",inline" yaml:",inline"`
|
TypeMeta `json:",inline"`
|
||||||
ObjectMeta `json:"metadata,omitempty" yaml:"metadata,omitempty"`
|
ObjectMeta `json:"metadata,omitempty"`
|
||||||
|
|
||||||
// Spec defines the behavior of a node.
|
// 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 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.
|
// MinionList is a list of minions.
|
||||||
type MinionList struct {
|
type MinionList struct {
|
||||||
TypeMeta `json:",inline" yaml:",inline"`
|
TypeMeta `json:",inline"`
|
||||||
ListMeta `json:"metadata,omitempty" yaml:"metadata,omitempty"`
|
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.
|
// Binding is written by a scheduler to cause a pod to be bound to a host.
|
||||||
type Binding struct {
|
type Binding struct {
|
||||||
TypeMeta `json:",inline" yaml:",inline"`
|
TypeMeta `json:",inline"`
|
||||||
ObjectMeta `json:"metadata,omitempty" yaml:"metadata,omitempty"`
|
ObjectMeta `json:"metadata,omitempty"`
|
||||||
|
|
||||||
PodID string `json:"podID" yaml:"podID"`
|
PodID string `json:"podID"`
|
||||||
Host string `json:"host" yaml:"host"`
|
Host string `json:"host"`
|
||||||
}
|
}
|
||||||
|
|
||||||
// Status is a return value for calls that don't return other objects.
|
// 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
|
// TODO: this could go in apiserver, but I'm including it here so clients needn't
|
||||||
// import both.
|
// import both.
|
||||||
type Status struct {
|
type Status struct {
|
||||||
TypeMeta `json:",inline" yaml:",inline"`
|
TypeMeta `json:",inline"`
|
||||||
ObjectMeta `json:"metadata,omitempty" yaml:"metadata,omitempty"`
|
ObjectMeta `json:"metadata,omitempty"`
|
||||||
|
|
||||||
// One of: "Success", "Failure", "Working" (for operations not yet completed)
|
// 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.
|
// 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
|
// A machine-readable description of why this operation is in the
|
||||||
// "Failure" or "Working" status. If this value is empty there
|
// "Failure" or "Working" status. If this value is empty there
|
||||||
// is no information available. A Reason clarifies an HTTP status
|
// is no information available. A Reason clarifies an HTTP status
|
||||||
// code but does not override it.
|
// 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
|
// Extended data associated with the reason. Each reason may define its
|
||||||
// own extended details. This field is optional and the data returned
|
// own extended details. This field is optional and the data returned
|
||||||
// is not guaranteed to conform to any schema except that defined by
|
// is not guaranteed to conform to any schema except that defined by
|
||||||
// the reason type.
|
// 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.
|
// 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
|
// 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
|
// The ID attribute of the resource associated with the status StatusReason
|
||||||
// (when there is a single ID which can be described).
|
// (when there is a single ID which can be described).
|
||||||
// TODO: replace with Name with v1beta3
|
// 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.
|
// The kind attribute of the resource associated with the status StatusReason.
|
||||||
// On some operations may differ from the requested resource Kind.
|
// 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
|
// The Causes array includes more details associated with the StatusReason
|
||||||
// failure. Not all StatusReasons may provide detailed causes.
|
// 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
|
// Values of Status.Status
|
||||||
@@ -832,10 +832,10 @@ const (
|
|||||||
type StatusCause struct {
|
type StatusCause struct {
|
||||||
// A machine-readable description of the cause of the error. If this value is
|
// A machine-readable description of the cause of the error. If this value is
|
||||||
// empty there is no information available.
|
// 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
|
// A human-readable description of the cause of the error. This field may be
|
||||||
// presented as-is to a reader.
|
// 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
|
// 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.
|
// serialization. May include dot and postfix notation for nested attributes.
|
||||||
// Arrays are zero-indexed. Fields may appear more than once in an array of
|
// Arrays are zero-indexed. Fields may appear more than once in an array of
|
||||||
@@ -845,7 +845,7 @@ type StatusCause struct {
|
|||||||
// Examples:
|
// Examples:
|
||||||
// "name" - the field "name" on the current resource
|
// "name" - the field "name" on the current resource
|
||||||
// "items[0].name" - the field "name" on the first array entry in "items"
|
// "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
|
// CauseType is a machine readable value providing more detail about what
|
||||||
@@ -873,26 +873,26 @@ const (
|
|||||||
|
|
||||||
// ServerOp is an operation delivered to API clients.
|
// ServerOp is an operation delivered to API clients.
|
||||||
type ServerOp struct {
|
type ServerOp struct {
|
||||||
TypeMeta `yaml:",inline" json:",inline"`
|
TypeMeta `json:",inline"`
|
||||||
ObjectMeta `json:"metadata,omitempty" yaml:"metadata,omitempty"`
|
ObjectMeta `json:"metadata,omitempty"`
|
||||||
}
|
}
|
||||||
|
|
||||||
// ServerOpList is a list of operations, as delivered to API clients.
|
// ServerOpList is a list of operations, as delivered to API clients.
|
||||||
type ServerOpList struct {
|
type ServerOpList struct {
|
||||||
TypeMeta `yaml:",inline" json:",inline"`
|
TypeMeta `json:",inline"`
|
||||||
ListMeta `json:"metadata,omitempty" yaml:"metadata,omitempty"`
|
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.
|
// ObjectReference contains enough information to let you inspect or modify the referred object.
|
||||||
type ObjectReference struct {
|
type ObjectReference struct {
|
||||||
Kind string `json:"kind,omitempty" yaml:"kind,omitempty"`
|
Kind string `json:"kind,omitempty"`
|
||||||
Namespace string `json:"namespace,omitempty" yaml:"namespace,omitempty"`
|
Namespace string `json:"namespace,omitempty"`
|
||||||
Name string `json:"name,omitempty" yaml:"name,omitempty"`
|
Name string `json:"name,omitempty"`
|
||||||
UID string `json:"uid,omitempty" yaml:"uid,omitempty"`
|
UID string `json:"uid,omitempty"`
|
||||||
APIVersion string `json:"apiVersion,omitempty" yaml:"apiVersion,omitempty"`
|
APIVersion string `json:"apiVersion,omitempty"`
|
||||||
ResourceVersion string `json:"resourceVersion,omitempty" yaml:"resourceVersion,omitempty"`
|
ResourceVersion string `json:"resourceVersion,omitempty"`
|
||||||
|
|
||||||
// Optional. If referring to a piece of an object instead of an entire object, this string
|
// 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,
|
// 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
|
// both go and JavaScript. This is syntax is chosen only to have some well-defined way of
|
||||||
// referencing a part of an object.
|
// referencing a part of an object.
|
||||||
// TODO: this design is not final and this field is subject to change in the future.
|
// 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.
|
// 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.
|
// TODO: Decide whether to store these separately or with the object they apply to.
|
||||||
type Event struct {
|
type Event struct {
|
||||||
TypeMeta `yaml:",inline" json:",inline"`
|
TypeMeta `json:",inline"`
|
||||||
ObjectMeta `json:"metadata,omitempty" yaml:"metadata,omitempty"`
|
ObjectMeta `json:"metadata,omitempty"`
|
||||||
|
|
||||||
// Required. The object that this event is about.
|
// 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
|
// 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.
|
// 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.
|
// always be used for the same status.
|
||||||
// TODO: define a way of making sure these are consistent and don't collide.
|
// TODO: define a way of making sure these are consistent and don't collide.
|
||||||
// TODO: provide exact specification for format.
|
// 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
|
// 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
|
// for the transition into the object's current status. For example, if ObjectStatus is
|
||||||
// "cantStart", StatusReason might be "imageNotFound".
|
// "cantStart", StatusReason might be "imageNotFound".
|
||||||
// TODO: provide exact specification for format.
|
// 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.
|
// Optional. A human-readable description of the status of this operation.
|
||||||
// TODO: decide on maximum length.
|
// 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.
|
// Optional. The component reporting this event. Should be a short machine understandable string.
|
||||||
// TODO: provide exact specification for format.
|
// 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.)
|
// 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.
|
// EventList is a list of events.
|
||||||
type EventList struct {
|
type EventList struct {
|
||||||
TypeMeta `yaml:",inline" json:",inline"`
|
TypeMeta `json:",inline"`
|
||||||
ListMeta `json:"metadata,omitempty" yaml:"metadata,omitempty"`
|
ListMeta `json:"metadata,omitempty"`
|
||||||
|
|
||||||
Items []Event `yaml:"items" json:"items"`
|
Items []Event `json:"items"`
|
||||||
}
|
}
|
||||||
|
|
||||||
// ContainerManifest corresponds to the Container Manifest format, documented at:
|
// ContainerManifest corresponds to the Container Manifest format, documented at:
|
||||||
@@ -954,48 +954,48 @@ type EventList struct {
|
|||||||
// DEPRECATED: Replaced with BoundPod
|
// DEPRECATED: Replaced with BoundPod
|
||||||
type ContainerManifest struct {
|
type ContainerManifest struct {
|
||||||
// Required: This must be a supported version string, such as "v1beta1".
|
// 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.
|
// Required: This must be a DNS_SUBDOMAIN.
|
||||||
// TODO: ID on Manifest is deprecated and will be removed in the future.
|
// 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
|
// 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
|
// with the API refactoring. It is required for now to determine the instance
|
||||||
// of a Pod.
|
// of a Pod.
|
||||||
UUID string `yaml:"uuid,omitempty" json:"uuid,omitempty"`
|
UUID string `json:"uuid,omitempty"`
|
||||||
Volumes []Volume `yaml:"volumes" json:"volumes"`
|
Volumes []Volume `json:"volumes"`
|
||||||
Containers []Container `yaml:"containers" json:"containers"`
|
Containers []Container `json:"containers"`
|
||||||
RestartPolicy RestartPolicy `json:"restartPolicy,omitempty" yaml:"restartPolicy,omitempty"`
|
RestartPolicy RestartPolicy `json:"restartPolicy,omitempty"`
|
||||||
}
|
}
|
||||||
|
|
||||||
// ContainerManifestList is used to communicate container manifests to kubelet.
|
// ContainerManifestList is used to communicate container manifests to kubelet.
|
||||||
// DEPRECATED: Replaced with BoundPods
|
// DEPRECATED: Replaced with BoundPods
|
||||||
type ContainerManifestList struct {
|
type ContainerManifestList struct {
|
||||||
TypeMeta `json:",inline" yaml:",inline"`
|
TypeMeta `json:",inline"`
|
||||||
ListMeta `json:"metadata,omitempty" yaml:"metadata,omitempty"`
|
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
|
// 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
|
// 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.
|
// execute a pod, whereas a BoundPod is the specification that would be run on a server.
|
||||||
type BoundPod struct {
|
type BoundPod struct {
|
||||||
TypeMeta `json:",inline" yaml:",inline"`
|
TypeMeta `json:",inline"`
|
||||||
ObjectMeta `json:"metadata,omitempty" yaml:"metadata,omitempty"`
|
ObjectMeta `json:"metadata,omitempty"`
|
||||||
|
|
||||||
// Spec defines the behavior of a pod.
|
// 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
|
// 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.
|
// the pod list is guaranteed to only change when the list of bound pods changes.
|
||||||
type BoundPods struct {
|
type BoundPods struct {
|
||||||
TypeMeta `json:",inline" yaml:",inline"`
|
TypeMeta `json:",inline"`
|
||||||
ObjectMeta `json:"metadata,omitempty" yaml:"metadata,omitempty"`
|
ObjectMeta `json:"metadata,omitempty"`
|
||||||
|
|
||||||
// Host is the name of a node that these pods were bound to.
|
// 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 is the list of all pods bound to a given host.
|
||||||
Items []BoundPod `json:"items" yaml:"items"`
|
Items []BoundPod `json:"items"`
|
||||||
}
|
}
|
||||||
|
@@ -22,5 +22,5 @@ package api
|
|||||||
// version negotiation. APIVersions isn't just an unnamed array of
|
// version negotiation. APIVersions isn't just an unnamed array of
|
||||||
// strings in order to allow for future evolution, though unversioned
|
// strings in order to allow for future evolution, though unversioned
|
||||||
type APIVersions struct {
|
type APIVersions struct {
|
||||||
Versions []string `json:"versions" yaml:"versions"`
|
Versions []string `json:"versions"`
|
||||||
}
|
}
|
||||||
|
@@ -50,34 +50,34 @@ import (
|
|||||||
// This is used as the representation of Kubernetes workloads.
|
// This is used as the representation of Kubernetes workloads.
|
||||||
type ContainerManifest struct {
|
type ContainerManifest struct {
|
||||||
// Required: This must be a supported version string, such as "v1beta1".
|
// 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.
|
// Required: This must be a DNS_SUBDOMAIN.
|
||||||
// TODO: ID on Manifest is deprecated and will be removed in the future.
|
// 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
|
// 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
|
// with the API refactory. It is required for now to determine the instance
|
||||||
// of a Pod.
|
// of a Pod.
|
||||||
UUID string `yaml:"uuid,omitempty" json:"uuid,omitempty" description:"manifest UUID"`
|
UUID string `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"`
|
Volumes []Volume `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"`
|
Containers []Container `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"`
|
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.
|
// ContainerManifestList is used to communicate container manifests to kubelet.
|
||||||
type ContainerManifestList struct {
|
type ContainerManifestList struct {
|
||||||
TypeMeta `json:",inline" yaml:",inline"`
|
TypeMeta `json:",inline"`
|
||||||
Items []ContainerManifest `json:"items" yaml:"items" description:"list of pod container manifests"`
|
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.
|
// Volume represents a named volume in a pod that may be accessed by any containers in the pod.
|
||||||
type Volume struct {
|
type Volume struct {
|
||||||
// Required: This must be a DNS_LABEL. Each volume in a pod must have
|
// Required: This must be a DNS_LABEL. Each volume in a pod must have
|
||||||
// a unique name.
|
// 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.
|
// 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 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.
|
// 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.
|
// 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.
|
// 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
|
// TODO(jonesdl) We need to restrict who can use host directory mounts and
|
||||||
// who can/can not mount host directories as read/write.
|
// 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 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
|
// GCEPersistentDisk represents a GCE Disk resource that is attached to a
|
||||||
// kubelet's host machine and then exposed to the pod.
|
// 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 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.
|
// HostDir represents bare host directory volume.
|
||||||
type HostDir struct {
|
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{}
|
type EmptyDir struct{}
|
||||||
@@ -122,59 +122,59 @@ const (
|
|||||||
// A GCE PD can only be mounted as read/write once.
|
// A GCE PD can only be mounted as read/write once.
|
||||||
type GCEPersistentDisk struct {
|
type GCEPersistentDisk struct {
|
||||||
// Unique name of the PD resource. Used to identify the disk in GCE
|
// 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.
|
// Required: Filesystem type to mount.
|
||||||
// Must be a filesystem type supported by the host operating system.
|
// Must be a filesystem type supported by the host operating system.
|
||||||
// Ex. "ext4", "xfs", "ntfs"
|
// Ex. "ext4", "xfs", "ntfs"
|
||||||
// TODO: how do we prevent errors in the filesystem from compromising the machine
|
// TODO: how do we prevent errors in the filesystem from compromising the machine
|
||||||
// TODO: why omitempty if required?
|
// 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.
|
// Optional: Partition on the disk to mount.
|
||||||
// If omitted, kubelet will attempt to mount the device name.
|
// 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.
|
// 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
|
// Optional: Defaults to false (read/write). ReadOnly here will force
|
||||||
// the ReadOnly setting in VolumeMounts.
|
// 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.
|
// GitRepo represents a volume that is pulled from git when the pod is created.
|
||||||
type GitRepo struct {
|
type GitRepo struct {
|
||||||
// Repository URL
|
// Repository URL
|
||||||
Repository string `yaml:"repository" json:"repository" description:"repository URL"`
|
Repository string `json:"repository" description:"repository URL"`
|
||||||
// Commit hash, this is optional
|
// 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
|
// Port represents a network port in a single container
|
||||||
type Port struct {
|
type Port struct {
|
||||||
// Optional: If specified, this must be a DNS_LABEL. Each named port
|
// Optional: If specified, this must be a DNS_LABEL. Each named port
|
||||||
// in a pod must have a unique name.
|
// 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.
|
// 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.
|
// 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".
|
// 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.
|
// 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.
|
// VolumeMount describes a mounting of a Volume within a container.
|
||||||
type VolumeMount struct {
|
type VolumeMount struct {
|
||||||
// Required: This must match the Name of a Volume [above].
|
// 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).
|
// 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.
|
// Required.
|
||||||
// Exactly one of the following must be set. If both are set, prefer MountPath.
|
// 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.
|
// 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"`
|
MountPath string `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"`
|
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.
|
// 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.
|
// 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.
|
// EnvVar represents an environment variable present in a Container.
|
||||||
@@ -182,26 +182,26 @@ type EnvVar struct {
|
|||||||
// Required: This must be a C_IDENTIFIER.
|
// Required: This must be a C_IDENTIFIER.
|
||||||
// Exactly one of the following must be set. If both are set, prefer Name.
|
// 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.
|
// 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"`
|
Name string `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"`
|
Key string `json:"key,omitempty" description:"name of the environment variable; must be a C_IDENTIFIER; deprecated - use name instead"`
|
||||||
// Optional: defaults to "".
|
// 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.
|
// HTTPGetAction describes an action based on HTTP Get requests.
|
||||||
type HTTPGetAction struct {
|
type HTTPGetAction struct {
|
||||||
// Optional: Path to access on the HTTP server.
|
// 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.
|
// 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.
|
// 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
|
// TCPSocketAction describes an action based on opening a socket
|
||||||
type TCPSocketAction struct {
|
type TCPSocketAction struct {
|
||||||
// Required: Port to connect to.
|
// 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.
|
// 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
|
// 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 shell, you need to explicitly call out to that shell.
|
||||||
// A return code of zero is treated as 'Healthy', non-zero is 'Unhealthy'
|
// 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.
|
// LivenessProbe describes a liveness probe to be examined to the container.
|
||||||
// TODO: pass structured data to the actions, and document that data here.
|
// TODO: pass structured data to the actions, and document that data here.
|
||||||
type LivenessProbe struct {
|
type LivenessProbe struct {
|
||||||
// HTTPGetProbe parameters, required if Type == 'http'
|
// 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'
|
// 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'
|
// 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.
|
// 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
|
// PullPolicy describes a policy for if/when to pull a container image
|
||||||
@@ -243,28 +243,28 @@ const (
|
|||||||
type Container struct {
|
type Container struct {
|
||||||
// Required: This must be a DNS_LABEL. Each container in a pod must
|
// Required: This must be a DNS_LABEL. Each container in a pod must
|
||||||
// have a unique name.
|
// 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.
|
// 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.
|
// 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.
|
// Optional: Defaults to Docker's default.
|
||||||
WorkingDir string `yaml:"workingDir,omitempty" json:"workingDir,omitempty" description:"container's working directory; defaults to image's default"`
|
WorkingDir string `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"`
|
Ports []Port `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"`
|
Env []EnvVar `json:"env,omitempty" description:"list of environment variables to set in the container"`
|
||||||
// Optional: Defaults to unlimited.
|
// 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.
|
// Optional: Defaults to unlimited.
|
||||||
CPU int `yaml:"cpu,omitempty" json:"cpu,omitempty" description:"CPU share in thousandths of a core"`
|
CPU int `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"`
|
VolumeMounts []VolumeMount `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"`
|
LivenessProbe *LivenessProbe `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"`
|
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
|
// 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.
|
// 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
|
// 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
|
// Handler defines a specific action that should be taken
|
||||||
@@ -273,9 +273,9 @@ type Container struct {
|
|||||||
type Handler struct {
|
type Handler struct {
|
||||||
// One and only one of the following should be specified.
|
// One and only one of the following should be specified.
|
||||||
// Exec specifies the action to take.
|
// 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 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
|
// Lifecycle describes actions that the management system should take in response to container lifecycle
|
||||||
@@ -284,29 +284,29 @@ type Handler struct {
|
|||||||
type Lifecycle struct {
|
type Lifecycle struct {
|
||||||
// PostStart is called immediately after a container is created. If the handler fails, the container
|
// PostStart is called immediately after a container is created. If the handler fails, the container
|
||||||
// is terminated and restarted.
|
// 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
|
// 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.
|
// 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.
|
// The below types are used by kube_client and api_server.
|
||||||
|
|
||||||
// TypeMeta is shared by all objects sent to, or returned from the client.
|
// TypeMeta is shared by all objects sent to, or returned from the client.
|
||||||
type TypeMeta struct {
|
type TypeMeta struct {
|
||||||
Kind string `json:"kind,omitempty" yaml:"kind,omitempty" description:"kind of object, in CamelCase"`
|
Kind string `json:"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"`
|
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" yaml:"uid,omitempty" description:"UUID assigned by the system upon creation, unique across space and time"`
|
UID string `json:"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"`
|
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" yaml:"selfLink,omitempty" description:"URL for the object"`
|
SelfLink string `json:"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"`
|
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" yaml:"apiVersion,omitempty" description:"version of the schema the object should have"`
|
APIVersion string `json:"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"`
|
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
|
// 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
|
// external tooling. They are not queryable and should be preserved when modifying
|
||||||
// objects.
|
// 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.
|
// PodStatus represents a status of a pod.
|
||||||
@@ -324,46 +324,46 @@ const (
|
|||||||
|
|
||||||
type ContainerStateWaiting struct {
|
type ContainerStateWaiting struct {
|
||||||
// Reason could be pulling image,
|
// 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 {
|
type ContainerStateRunning struct {
|
||||||
// TODO: change to util.Time
|
// 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 {
|
type ContainerStateTerminated struct {
|
||||||
ExitCode int `json:"exitCode" yaml:"exitCode" description:"exit status from 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" yaml:"signal,omitempty" description:"signal 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" yaml:"reason,omitempty" description:"(brief) reason 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" yaml:"message,omitempty" description:"message regarding 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
|
// 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
|
// 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.
|
// ContainerState holds a possible state of container.
|
||||||
// Only one of its members may be specified.
|
// Only one of its members may be specified.
|
||||||
// If none of them is specified, the default one is ContainerStateWaiting.
|
// If none of them is specified, the default one is ContainerStateWaiting.
|
||||||
type ContainerState struct {
|
type ContainerState struct {
|
||||||
Waiting *ContainerStateWaiting `json:"waiting,omitempty" yaml:"waiting,omitempty" description:"details about a waiting container"`
|
Waiting *ContainerStateWaiting `json:"waiting,omitempty" description:"details about a waiting container"`
|
||||||
Running *ContainerStateRunning `json:"running,omitempty" yaml:"running,omitempty" description:"details about a running container"`
|
Running *ContainerStateRunning `json:"running,omitempty" description:"details about a running container"`
|
||||||
Termination *ContainerStateTerminated `json:"termination,omitempty" yaml:"termination,omitempty" description:"details about a terminated container"`
|
Termination *ContainerStateTerminated `json:"termination,omitempty" description:"details about a terminated container"`
|
||||||
}
|
}
|
||||||
|
|
||||||
type ContainerStatus struct {
|
type ContainerStatus struct {
|
||||||
// TODO(dchen1107): Should we rename PodStatus to a more generic name or have a separate states
|
// TODO(dchen1107): Should we rename PodStatus to a more generic name or have a separate states
|
||||||
// defined for container?
|
// 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
|
// 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.
|
// 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,
|
// 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
|
// 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
|
// 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.
|
// 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.
|
// Only one of the following restart policy may be specified.
|
||||||
// If none of the following policies is specified, the default one
|
// If none of the following policies is specified, the default one
|
||||||
// is RestartPolicyAlways.
|
// is RestartPolicyAlways.
|
||||||
Always *RestartPolicyAlways `json:"always,omitempty" yaml:"always,omitempty" description:"always restart the container after termination"`
|
Always *RestartPolicyAlways `json:"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)"`
|
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" yaml:"never,omitempty" description:"never restart the container"`
|
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).
|
// PodState is the state of a pod, used as either input (desired state) or output (current state).
|
||||||
type PodState struct {
|
type PodState struct {
|
||||||
Manifest ContainerManifest `json:"manifest,omitempty" yaml:"manifest,omitempty" description:"manifest of containers and volumes comprising the pod"`
|
Manifest ContainerManifest `json:"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"`
|
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.
|
// 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"`
|
Message string `json:"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"`
|
Host string `json:"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"`
|
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" yaml:"podIP,omitempty" description:"IP address allocated to the pod; routable at least within the cluster; empty if not yet allocated"`
|
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
|
// 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
|
// entry per container in the manifest. The value of this map is ContainerStatus for
|
||||||
// the container.
|
// 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.
|
// PodList is a list of Pods.
|
||||||
type PodList struct {
|
type PodList struct {
|
||||||
TypeMeta `json:",inline" yaml:",inline"`
|
TypeMeta `json:",inline"`
|
||||||
Items []Pod `json:"items" yaml:"items" description:"list of pods"`
|
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).
|
// Pod is a collection of containers, used as either input (create, update) or as output (list, get).
|
||||||
type Pod struct {
|
type Pod struct {
|
||||||
TypeMeta `json:",inline" yaml:",inline"`
|
TypeMeta `json:",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"`
|
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" yaml:"desiredState,omitempty" description:"specification of the desired state of the pod"`
|
DesiredState PodState `json:"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"`
|
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 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).
|
// ReplicationControllerState is the state of a replication controller, either input (create, update) or as output (list, get).
|
||||||
type ReplicationControllerState struct {
|
type ReplicationControllerState struct {
|
||||||
Replicas int `json:"replicas" yaml:"replicas" description:"number of replicas (desired or observed, as appropriate)"`
|
Replicas int `json:"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"`
|
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" 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"`
|
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.
|
// ReplicationControllerList is a collection of replication controllers.
|
||||||
type ReplicationControllerList struct {
|
type ReplicationControllerList struct {
|
||||||
TypeMeta `json:",inline" yaml:",inline"`
|
TypeMeta `json:",inline"`
|
||||||
Items []ReplicationController `json:"items" yaml:"items" description:"list of replication controllers"`
|
Items []ReplicationController `json:"items" description:"list of replication controllers"`
|
||||||
}
|
}
|
||||||
|
|
||||||
// ReplicationController represents the configuration of a replication controller.
|
// ReplicationController represents the configuration of a replication controller.
|
||||||
type ReplicationController struct {
|
type ReplicationController struct {
|
||||||
TypeMeta `json:",inline" yaml:",inline"`
|
TypeMeta `json:",inline"`
|
||||||
DesiredState ReplicationControllerState `json:"desiredState,omitempty" yaml:"desiredState,omitempty" description:"specification of the desired state of the replication controller"`
|
DesiredState ReplicationControllerState `json:"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"`
|
CurrentState ReplicationControllerState `json:"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"`
|
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.
|
// PodTemplate holds the information used for creating pods.
|
||||||
type PodTemplate struct {
|
type PodTemplate struct {
|
||||||
DesiredState PodState `json:"desiredState,omitempty" yaml:"desiredState,omitempty" description:"specification of the desired state of pods created from this template"`
|
DesiredState PodState `json:"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"`
|
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.
|
// ServiceList holds a list of services.
|
||||||
type ServiceList struct {
|
type ServiceList struct {
|
||||||
TypeMeta `json:",inline" yaml:",inline"`
|
TypeMeta `json:",inline"`
|
||||||
Items []Service `json:"items" yaml:"items" description:"list of services"`
|
Items []Service `json:"items" description:"list of services"`
|
||||||
}
|
}
|
||||||
|
|
||||||
// Service is a named abstraction of software service (for example, mysql) consisting of local port
|
// 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
|
// (for example 3306) that the proxy listens on, and the selector that determines which pods
|
||||||
// will answer requests sent through the proxy.
|
// will answer requests sent through the proxy.
|
||||||
type Service struct {
|
type Service struct {
|
||||||
TypeMeta `json:",inline" yaml:",inline"`
|
TypeMeta `json:",inline"`
|
||||||
|
|
||||||
// Required.
|
// 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".
|
// 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.
|
// 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.
|
// 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"`
|
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" yaml:"createExternalLoadBalancer,omitempty" description:"set up a cloud-provider-specific load balancer on an external IP"`
|
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 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.
|
// ContainerPort is the name of the port on the container to direct traffic to.
|
||||||
// Optional, if unspecified use the first port on the container.
|
// 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
|
// 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
|
// we will try to respect it or else fail the request. This field can
|
||||||
// not be changed by updates.
|
// 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 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:
|
// 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"]
|
// Name: "mysql", Endpoints: ["10.10.1.1:1909", "10.10.2.2:8834"]
|
||||||
type Endpoints struct {
|
type Endpoints struct {
|
||||||
TypeMeta `json:",inline" yaml:",inline"`
|
TypeMeta `json:",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"`
|
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.
|
// EndpointsList is a list of endpoints.
|
||||||
type EndpointsList struct {
|
type EndpointsList struct {
|
||||||
TypeMeta `json:",inline" yaml:",inline"`
|
TypeMeta `json:",inline"`
|
||||||
Items []Endpoints `json:"items" yaml:"items" description:"list of service endpoint lists"`
|
Items []Endpoints `json:"items" description:"list of service endpoint lists"`
|
||||||
}
|
}
|
||||||
|
|
||||||
// NodeResources represents resources on a Kubernetes system node
|
// NodeResources represents resources on a Kubernetes system node
|
||||||
// see https://github.com/GoogleCloudPlatform/kubernetes/blob/master/docs/resources.md for more details.
|
// see https://github.com/GoogleCloudPlatform/kubernetes/blob/master/docs/resources.md for more details.
|
||||||
type NodeResources struct {
|
type NodeResources struct {
|
||||||
// Capacity represents the available resources.
|
// 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
|
type ResourceName string
|
||||||
@@ -511,52 +511,52 @@ type ResourceList map[ResourceName]util.IntOrString
|
|||||||
// Minion is a worker node in Kubernetenes.
|
// Minion is a worker node in Kubernetenes.
|
||||||
// The name of the minion according to etcd is in ID.
|
// The name of the minion according to etcd is in ID.
|
||||||
type Minion struct {
|
type Minion struct {
|
||||||
TypeMeta `json:",inline" yaml:",inline"`
|
TypeMeta `json:",inline"`
|
||||||
// Queried from cloud provider, if available.
|
// 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
|
// 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 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.
|
// MinionList is a list of minions.
|
||||||
type MinionList struct {
|
type MinionList struct {
|
||||||
TypeMeta `json:",inline" yaml:",inline"`
|
TypeMeta `json:",inline"`
|
||||||
// DEPRECATED: the below Minions is due to a naming mistake and
|
// DEPRECATED: the below Minions is due to a naming mistake and
|
||||||
// will be replaced with Items in the future.
|
// will be replaced with Items in the future.
|
||||||
Minions []Minion `json:"minions,omitempty" yaml:"minions,omitempty" description:"list of nodes; deprecated"`
|
Minions []Minion `json:"minions,omitempty" description:"list of nodes; deprecated"`
|
||||||
Items []Minion `json:"items" yaml:"items" description:"list of nodes"`
|
Items []Minion `json:"items" description:"list of nodes"`
|
||||||
}
|
}
|
||||||
|
|
||||||
// Binding is written by a scheduler to cause a pod to be bound to a host.
|
// Binding is written by a scheduler to cause a pod to be bound to a host.
|
||||||
type Binding struct {
|
type Binding struct {
|
||||||
TypeMeta `json:",inline" yaml:",inline"`
|
TypeMeta `json:",inline"`
|
||||||
PodID string `json:"podID" yaml:"podID" description:"name of the pod to bind"`
|
PodID string `json:"podID" description:"name of the pod to bind"`
|
||||||
Host string `json:"host" yaml:"host" description:"host to which to bind the specified pod"`
|
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.
|
// 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
|
// TODO: this could go in apiserver, but I'm including it here so clients needn't
|
||||||
// import both.
|
// import both.
|
||||||
type Status struct {
|
type Status struct {
|
||||||
TypeMeta `json:",inline" yaml:",inline"`
|
TypeMeta `json:",inline"`
|
||||||
// One of: "Success", "Failure", "Working" (for operations not yet completed)
|
// 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.
|
// 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
|
// A machine-readable description of why this operation is in the
|
||||||
// "Failure" or "Working" status. If this value is empty there
|
// "Failure" or "Working" status. If this value is empty there
|
||||||
// is no information available. A Reason clarifies an HTTP status
|
// is no information available. A Reason clarifies an HTTP status
|
||||||
// code but does not override it.
|
// 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
|
// Extended data associated with the reason. Each reason may define its
|
||||||
// own extended details. This field is optional and the data returned
|
// own extended details. This field is optional and the data returned
|
||||||
// is not guaranteed to conform to any schema except that defined by
|
// is not guaranteed to conform to any schema except that defined by
|
||||||
// the reason type.
|
// 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.
|
// 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
|
// StatusDetails is a set of additional properties that MAY be set by the
|
||||||
@@ -568,13 +568,13 @@ type Status struct {
|
|||||||
type StatusDetails struct {
|
type StatusDetails struct {
|
||||||
// The ID attribute of the resource associated with the status StatusReason
|
// The ID attribute of the resource associated with the status StatusReason
|
||||||
// (when there is a single ID which can be described).
|
// (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.
|
// The kind attribute of the resource associated with the status StatusReason.
|
||||||
// On some operations may differ from the requested resource Kind.
|
// 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
|
// The Causes array includes more details associated with the StatusReason
|
||||||
// failure. Not all StatusReasons may provide detailed causes.
|
// 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
|
// Values of Status.Status
|
||||||
@@ -638,10 +638,10 @@ const (
|
|||||||
type StatusCause struct {
|
type StatusCause struct {
|
||||||
// A machine-readable description of the cause of the error. If this value is
|
// A machine-readable description of the cause of the error. If this value is
|
||||||
// empty there is no information available.
|
// 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
|
// A human-readable description of the cause of the error. This field may be
|
||||||
// presented as-is to a reader.
|
// 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
|
// 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.
|
// serialization. May include dot and postfix notation for nested attributes.
|
||||||
// Arrays are zero-indexed. Fields may appear more than once in an array of
|
// Arrays are zero-indexed. Fields may appear more than once in an array of
|
||||||
@@ -651,7 +651,7 @@ type StatusCause struct {
|
|||||||
// Examples:
|
// Examples:
|
||||||
// "name" - the field "name" on the current resource
|
// "name" - the field "name" on the current resource
|
||||||
// "items[0].name" - the field "name" on the first array entry in "items"
|
// "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
|
// CauseType is a machine readable value providing more detail about what
|
||||||
@@ -679,23 +679,23 @@ const (
|
|||||||
|
|
||||||
// ServerOp is an operation delivered to API clients.
|
// ServerOp is an operation delivered to API clients.
|
||||||
type ServerOp struct {
|
type ServerOp struct {
|
||||||
TypeMeta `yaml:",inline" json:",inline"`
|
TypeMeta `json:",inline"`
|
||||||
}
|
}
|
||||||
|
|
||||||
// ServerOpList is a list of operations, as delivered to API clients.
|
// ServerOpList is a list of operations, as delivered to API clients.
|
||||||
type ServerOpList struct {
|
type ServerOpList struct {
|
||||||
TypeMeta `yaml:",inline" json:",inline"`
|
TypeMeta `json:",inline"`
|
||||||
Items []ServerOp `yaml:"items" json:"items" description:"list of operations"`
|
Items []ServerOp `json:"items" description:"list of operations"`
|
||||||
}
|
}
|
||||||
|
|
||||||
// ObjectReference contains enough information to let you inspect or modify the referred object.
|
// ObjectReference contains enough information to let you inspect or modify the referred object.
|
||||||
type ObjectReference struct {
|
type ObjectReference struct {
|
||||||
Kind string `json:"kind,omitempty" yaml:"kind,omitempty" description:"kind of the referent"`
|
Kind string `json:"kind,omitempty" description:"kind of the referent"`
|
||||||
Namespace string `json:"namespace,omitempty" yaml:"namespace,omitempty" description:"namespace of the referent"`
|
Namespace string `json:"namespace,omitempty" description:"namespace of the referent"`
|
||||||
ID string `json:"name,omitempty" yaml:"name,omitempty" description:"id of the referent"`
|
ID string `json:"name,omitempty" description:"id of the referent"`
|
||||||
UID string `json:"uid,omitempty" yaml:"uid,omitempty" description:"uid of the referent"`
|
UID string `json:"uid,omitempty" description:"uid of the referent"`
|
||||||
APIVersion string `json:"apiVersion,omitempty" yaml:"apiVersion,omitempty" description:"API version of the referent"`
|
APIVersion string `json:"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"`
|
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
|
// 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,
|
// 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
|
// both go and JavaScript. This is syntax is chosen only to have some well-defined way of
|
||||||
// referencing a part of an object.
|
// referencing a part of an object.
|
||||||
// TODO: this design is not final and this field is subject to change in the future.
|
// 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.
|
// 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.
|
// TODO: Decide whether to store these separately or with the object they apply to.
|
||||||
type Event struct {
|
type Event struct {
|
||||||
TypeMeta `yaml:",inline" json:",inline"`
|
TypeMeta `json:",inline"`
|
||||||
|
|
||||||
// Required. The object that this event is about.
|
// 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
|
// 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.
|
// 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.
|
// always be used for the same status.
|
||||||
// TODO: define a way of making sure these are consistent and don't collide.
|
// TODO: define a way of making sure these are consistent and don't collide.
|
||||||
// TODO: provide exact specification for format.
|
// 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
|
// 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
|
// for the transition into the object's current status. For example, if ObjectStatus is
|
||||||
// "cantStart", StatusReason might be "imageNotFound".
|
// "cantStart", StatusReason might be "imageNotFound".
|
||||||
// TODO: provide exact specification for format.
|
// 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.
|
// Optional. A human-readable description of the status of this operation.
|
||||||
// TODO: decide on maximum length.
|
// 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.
|
// Optional. The component reporting this event. Should be a short machine understandable string.
|
||||||
// TODO: provide exact specification for format.
|
// 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.)
|
// 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.
|
// EventList is a list of events.
|
||||||
type EventList struct {
|
type EventList struct {
|
||||||
TypeMeta `yaml:",inline" json:",inline"`
|
TypeMeta `json:",inline"`
|
||||||
Items []Event `yaml:"items" json:"items" description:"list of events"`
|
Items []Event `json:"items" description:"list of events"`
|
||||||
}
|
}
|
||||||
|
|
||||||
// Backported from v1beta3 to replace ContainerManifest
|
// Backported from v1beta3 to replace ContainerManifest
|
||||||
|
|
||||||
// PodSpec is a description of a pod
|
// PodSpec is a description of a pod
|
||||||
type PodSpec struct {
|
type PodSpec struct {
|
||||||
Volumes []Volume `json:"volumes" yaml:"volumes" description:"list of volumes that can be mounted by containers belonging to the pod"`
|
Volumes []Volume `json:"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"`
|
Containers []Container `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"`
|
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 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
|
// 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
|
// 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.
|
// execute a pod, whereas a BoundPod is the specification that would be run on a server.
|
||||||
type BoundPod struct {
|
type BoundPod struct {
|
||||||
TypeMeta `json:",inline" yaml:",inline"`
|
TypeMeta `json:",inline"`
|
||||||
|
|
||||||
// Spec defines the behavior of a pod.
|
// 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
|
// 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.
|
// the pod list is guaranteed to only change when the list of bound pods changes.
|
||||||
type BoundPods struct {
|
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 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 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"`
|
||||||
}
|
}
|
||||||
|
@@ -49,11 +49,11 @@ import (
|
|||||||
type Volume struct {
|
type Volume struct {
|
||||||
// Required: This must be a DNS_LABEL. Each volume in a pod must have
|
// Required: This must be a DNS_LABEL. Each volume in a pod must have
|
||||||
// a unique name.
|
// 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.
|
// 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 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.
|
// 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.
|
// 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.
|
// 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
|
// TODO(jonesdl) We need to restrict who can use host directory mounts and
|
||||||
// who can/can not mount host directories as read/write.
|
// 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 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
|
// A persistent disk that is mounted to the
|
||||||
// kubelet's host machine and then exposed to the pod.
|
// 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 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.
|
// HostDir represents bare host directory volume.
|
||||||
type HostDir struct {
|
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{}
|
type EmptyDir struct{}
|
||||||
@@ -95,15 +95,15 @@ const (
|
|||||||
type Port struct {
|
type Port struct {
|
||||||
// Optional: If specified, this must be a DNS_LABEL. Each named port
|
// Optional: If specified, this must be a DNS_LABEL. Each named port
|
||||||
// in a pod must have a unique name.
|
// 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.
|
// 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.
|
// 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".
|
// 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.
|
// 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.
|
// 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.
|
// A GCE PD can only be mounted as read/write once.
|
||||||
type GCEPersistentDisk struct {
|
type GCEPersistentDisk struct {
|
||||||
// Unique name of the PD resource. Used to identify the disk in GCE
|
// 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.
|
// Required: Filesystem type to mount.
|
||||||
// Must be a filesystem type supported by the host operating system.
|
// Must be a filesystem type supported by the host operating system.
|
||||||
// Ex. "ext4", "xfs", "ntfs"
|
// Ex. "ext4", "xfs", "ntfs"
|
||||||
// TODO: how do we prevent errors in the filesystem from compromising the machine
|
// TODO: how do we prevent errors in the filesystem from compromising the machine
|
||||||
// TODO: why omitempty if required?
|
// 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.
|
// Optional: Partition on the disk to mount.
|
||||||
// If omitted, kubelet will attempt to mount the device name.
|
// 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.
|
// 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
|
// Optional: Defaults to false (read/write). ReadOnly here will force
|
||||||
// the ReadOnly setting in VolumeMounts.
|
// 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.
|
// GitRepo represents a volume that is pulled from git when the pod is created.
|
||||||
type GitRepo struct {
|
type GitRepo struct {
|
||||||
// Repository URL
|
// Repository URL
|
||||||
Repository string `yaml:"repository" json:"repository" description:"repository URL"`
|
Repository string `json:"repository" description:"repository URL"`
|
||||||
// Commit hash, this is optional
|
// 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.
|
// VolumeMount describes a mounting of a Volume within a container.
|
||||||
type VolumeMount struct {
|
type VolumeMount struct {
|
||||||
// Required: This must match the Name of a Volume [above].
|
// 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).
|
// 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.
|
// 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.
|
// EnvVar represents an environment variable present in a Container.
|
||||||
type EnvVar struct {
|
type EnvVar struct {
|
||||||
// Required: This must be a C_IDENTIFIER.
|
// 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 "".
|
// 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.
|
// HTTPGetAction describes an action based on HTTP Get requests.
|
||||||
type HTTPGetAction struct {
|
type HTTPGetAction struct {
|
||||||
// Optional: Path to access on the HTTP server.
|
// 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.
|
// 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.
|
// 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
|
// TCPSocketAction describes an action based on opening a socket
|
||||||
type TCPSocketAction struct {
|
type TCPSocketAction struct {
|
||||||
// Required: Port to connect to.
|
// 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.
|
// 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
|
// 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
|
// 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 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.
|
// LivenessProbe describes a liveness probe to be examined to the container.
|
||||||
// TODO: pass structured data to the actions, and document that data here.
|
// TODO: pass structured data to the actions, and document that data here.
|
||||||
type LivenessProbe struct {
|
type LivenessProbe struct {
|
||||||
// HTTPGetProbe parameters, required if Type == 'http'
|
// 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'
|
// 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'
|
// 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.
|
// 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
|
// PullPolicy describes a policy for if/when to pull a container image
|
||||||
@@ -209,28 +209,28 @@ const (
|
|||||||
type Container struct {
|
type Container struct {
|
||||||
// Required: This must be a DNS_LABEL. Each container in a pod must
|
// Required: This must be a DNS_LABEL. Each container in a pod must
|
||||||
// have a unique name.
|
// 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.
|
// 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.
|
// 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.
|
// Optional: Defaults to Docker's default.
|
||||||
WorkingDir string `yaml:"workingDir,omitempty" json:"workingDir,omitempty" description:"container's working directory; defaults to image's default"`
|
WorkingDir string `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"`
|
Ports []Port `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"`
|
Env []EnvVar `json:"env,omitempty" description:"list of environment variables to set in the container"`
|
||||||
// Optional: Defaults to unlimited.
|
// 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.
|
// Optional: Defaults to unlimited.
|
||||||
CPU int `yaml:"cpu,omitempty" json:"cpu,omitempty" description:"CPU share in thousandths of a core"`
|
CPU int `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"`
|
VolumeMounts []VolumeMount `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"`
|
LivenessProbe *LivenessProbe `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"`
|
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
|
// 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.
|
// 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
|
// 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
|
// Handler defines a specific action that should be taken
|
||||||
@@ -238,9 +238,9 @@ type Container struct {
|
|||||||
type Handler struct {
|
type Handler struct {
|
||||||
// One and only one of the following should be specified.
|
// One and only one of the following should be specified.
|
||||||
// Exec specifies the action to take.
|
// 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 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
|
// Lifecycle describes actions that the management system should take in response to container lifecycle
|
||||||
@@ -249,29 +249,29 @@ type Handler struct {
|
|||||||
type Lifecycle struct {
|
type Lifecycle struct {
|
||||||
// PostStart is called immediately after a container is created. If the handler fails, the container
|
// PostStart is called immediately after a container is created. If the handler fails, the container
|
||||||
// is terminated and restarted.
|
// 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
|
// 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.
|
// 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.
|
// The below types are used by kube_client and api_server.
|
||||||
|
|
||||||
// TypeMeta is shared by all objects sent to, or returned from the client.
|
// TypeMeta is shared by all objects sent to, or returned from the client.
|
||||||
type TypeMeta struct {
|
type TypeMeta struct {
|
||||||
Kind string `json:"kind,omitempty" yaml:"kind,omitempty" description:"kind of object, in CamelCase"`
|
Kind string `json:"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"`
|
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" yaml:"uid,omitempty" description:"UUID assigned by the system upon creation, unique across space and time"`
|
UID string `json:"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"`
|
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" yaml:"selfLink,omitempty" description:"URL for the object"`
|
SelfLink string `json:"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"`
|
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" yaml:"apiVersion,omitempty" description:"version of the schema the object should have"`
|
APIVersion string `json:"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"`
|
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
|
// 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
|
// external tooling. They are not queryable and should be preserved when modifying
|
||||||
// objects.
|
// 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.
|
// PodStatus represents a status of a pod.
|
||||||
@@ -289,46 +289,46 @@ const (
|
|||||||
|
|
||||||
type ContainerStateWaiting struct {
|
type ContainerStateWaiting struct {
|
||||||
// Reason could be pulling image,
|
// 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 {
|
type ContainerStateRunning struct {
|
||||||
// TODO: change to util.Time
|
// 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 {
|
type ContainerStateTerminated struct {
|
||||||
ExitCode int `json:"exitCode" yaml:"exitCode" description:"exit status from 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" yaml:"signal,omitempty" description:"signal 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" yaml:"reason,omitempty" description:"(brief) reason 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" yaml:"message,omitempty" description:"message regarding 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
|
// 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
|
// 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.
|
// ContainerState holds a possible state of container.
|
||||||
// Only one of its members may be specified.
|
// Only one of its members may be specified.
|
||||||
// If none of them is specified, the default one is ContainerStateWaiting.
|
// If none of them is specified, the default one is ContainerStateWaiting.
|
||||||
type ContainerState struct {
|
type ContainerState struct {
|
||||||
Waiting *ContainerStateWaiting `json:"waiting,omitempty" yaml:"waiting,omitempty" description:"details about a waiting container"`
|
Waiting *ContainerStateWaiting `json:"waiting,omitempty" description:"details about a waiting container"`
|
||||||
Running *ContainerStateRunning `json:"running,omitempty" yaml:"running,omitempty" description:"details about a running container"`
|
Running *ContainerStateRunning `json:"running,omitempty" description:"details about a running container"`
|
||||||
Termination *ContainerStateTerminated `json:"termination,omitempty" yaml:"termination,omitempty" description:"details about a terminated container"`
|
Termination *ContainerStateTerminated `json:"termination,omitempty" description:"details about a terminated container"`
|
||||||
}
|
}
|
||||||
|
|
||||||
type ContainerStatus struct {
|
type ContainerStatus struct {
|
||||||
// TODO(dchen1107): Should we rename PodStatus to a more generic name or have a separate states
|
// TODO(dchen1107): Should we rename PodStatus to a more generic name or have a separate states
|
||||||
// defined for container?
|
// 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
|
// 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.
|
// 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,
|
// 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
|
// 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
|
// 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.
|
// 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.
|
// Only one of the following restart policies may be specified.
|
||||||
// If none of the following policies is specified, the default one
|
// If none of the following policies is specified, the default one
|
||||||
// is RestartPolicyAlways.
|
// is RestartPolicyAlways.
|
||||||
Always *RestartPolicyAlways `json:"always,omitempty" yaml:"always,omitempty" description:"always restart the container after termination"`
|
Always *RestartPolicyAlways `json:"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)"`
|
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" yaml:"never,omitempty" description:"never restart the container"`
|
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).
|
// PodState is the state of a pod, used as either input (desired state) or output (current state).
|
||||||
type PodState struct {
|
type PodState struct {
|
||||||
Manifest ContainerManifest `json:"manifest,omitempty" yaml:"manifest,omitempty" description:"manifest of containers and volumes comprising the pod"`
|
Manifest ContainerManifest `json:"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"`
|
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.
|
// 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"`
|
Message string `json:"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"`
|
Host string `json:"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"`
|
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" yaml:"podIP,omitempty" description:"IP address allocated to the pod; routable at least within the cluster; empty if not yet allocated"`
|
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
|
// 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
|
// entry per container in the manifest. The value of this map is ContainerStatus for
|
||||||
// the container.
|
// 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.
|
// PodList is a list of Pods.
|
||||||
type PodList struct {
|
type PodList struct {
|
||||||
TypeMeta `json:",inline" yaml:",inline"`
|
TypeMeta `json:",inline"`
|
||||||
Items []Pod `json:"items" yaml:"items" description:"list of pods"`
|
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).
|
// Pod is a collection of containers, used as either input (create, update) or as output (list, get).
|
||||||
type Pod struct {
|
type Pod struct {
|
||||||
TypeMeta `json:",inline" yaml:",inline"`
|
TypeMeta `json:",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"`
|
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" yaml:"desiredState,omitempty" description:"specification of the desired state of the pod"`
|
DesiredState PodState `json:"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"`
|
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 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).
|
// ReplicationControllerState is the state of a replication controller, either input (create, update) or as output (list, get).
|
||||||
type ReplicationControllerState struct {
|
type ReplicationControllerState struct {
|
||||||
Replicas int `json:"replicas" yaml:"replicas" description:"number of replicas (desired or observed, as appropriate)"`
|
Replicas int `json:"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"`
|
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" 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"`
|
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.
|
// ReplicationControllerList is a collection of replication controllers.
|
||||||
type ReplicationControllerList struct {
|
type ReplicationControllerList struct {
|
||||||
TypeMeta `json:",inline" yaml:",inline"`
|
TypeMeta `json:",inline"`
|
||||||
Items []ReplicationController `json:"items" yaml:"items" description:"list of replication controllers"`
|
Items []ReplicationController `json:"items" description:"list of replication controllers"`
|
||||||
}
|
}
|
||||||
|
|
||||||
// ReplicationController represents the configuration of a replication controller.
|
// ReplicationController represents the configuration of a replication controller.
|
||||||
type ReplicationController struct {
|
type ReplicationController struct {
|
||||||
TypeMeta `json:",inline" yaml:",inline"`
|
TypeMeta `json:",inline"`
|
||||||
DesiredState ReplicationControllerState `json:"desiredState,omitempty" yaml:"desiredState,omitempty" description:"specification of the desired state of the replication controller"`
|
DesiredState ReplicationControllerState `json:"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"`
|
CurrentState ReplicationControllerState `json:"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"`
|
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.
|
// PodTemplate holds the information used for creating pods.
|
||||||
type PodTemplate struct {
|
type PodTemplate struct {
|
||||||
DesiredState PodState `json:"desiredState,omitempty" yaml:"desiredState,omitempty" description:"specification of the desired state of pods created from this template"`
|
DesiredState PodState `json:"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"`
|
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.
|
// ServiceList holds a list of services.
|
||||||
type ServiceList struct {
|
type ServiceList struct {
|
||||||
TypeMeta `json:",inline" yaml:",inline"`
|
TypeMeta `json:",inline"`
|
||||||
Items []Service `json:"items" yaml:"items" description:"list of services"`
|
Items []Service `json:"items" description:"list of services"`
|
||||||
}
|
}
|
||||||
|
|
||||||
// Service is a named abstraction of software service (for example, mysql) consisting of local port
|
// 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
|
// (for example 3306) that the proxy listens on, and the selector that determines which pods
|
||||||
// will answer requests sent through the proxy.
|
// will answer requests sent through the proxy.
|
||||||
type Service struct {
|
type Service struct {
|
||||||
TypeMeta `json:",inline" yaml:",inline"`
|
TypeMeta `json:",inline"`
|
||||||
|
|
||||||
// Required.
|
// 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".
|
// 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.
|
// 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.
|
// 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"`
|
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" yaml:"createExternalLoadBalancer,omitempty" description:"set up a cloud-provider-specific load balancer on an external IP"`
|
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 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.
|
// ContainerPort is the name of the port on the container to direct traffic to.
|
||||||
// Optional, if unspecified use the first port on the container.
|
// 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
|
// 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
|
// we will try to respect it or else fail the request. This field can
|
||||||
// not be changed by updates.
|
// 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 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:
|
// 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"]
|
// Name: "mysql", Endpoints: ["10.10.1.1:1909", "10.10.2.2:8834"]
|
||||||
type Endpoints struct {
|
type Endpoints struct {
|
||||||
TypeMeta `json:",inline" yaml:",inline"`
|
TypeMeta `json:",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"`
|
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.
|
// EndpointsList is a list of endpoints.
|
||||||
type EndpointsList struct {
|
type EndpointsList struct {
|
||||||
TypeMeta `json:",inline" yaml:",inline"`
|
TypeMeta `json:",inline"`
|
||||||
Items []Endpoints `json:"items" yaml:"items" description:"list of service endpoint lists"`
|
Items []Endpoints `json:"items" description:"list of service endpoint lists"`
|
||||||
}
|
}
|
||||||
|
|
||||||
// NodeResources represents resources on a Kubernetes system node
|
// NodeResources represents resources on a Kubernetes system node
|
||||||
// see https://github.com/GoogleCloudPlatform/kubernetes/blob/master/docs/resources.md for more details.
|
// see https://github.com/GoogleCloudPlatform/kubernetes/blob/master/docs/resources.md for more details.
|
||||||
type NodeResources struct {
|
type NodeResources struct {
|
||||||
// Capacity represents the available resources.
|
// 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
|
type ResourceName string
|
||||||
@@ -476,49 +476,49 @@ type ResourceList map[ResourceName]util.IntOrString
|
|||||||
// Minion is a worker node in Kubernetenes.
|
// Minion is a worker node in Kubernetenes.
|
||||||
// The name of the minion according to etcd is in ID.
|
// The name of the minion according to etcd is in ID.
|
||||||
type Minion struct {
|
type Minion struct {
|
||||||
TypeMeta `json:",inline" yaml:",inline"`
|
TypeMeta `json:",inline"`
|
||||||
// Queried from cloud provider, if available.
|
// 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
|
// 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 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.
|
// MinionList is a list of minions.
|
||||||
type MinionList struct {
|
type MinionList struct {
|
||||||
TypeMeta `json:",inline" yaml:",inline"`
|
TypeMeta `json:",inline"`
|
||||||
Items []Minion `json:"items" yaml:"items" description:"list of nodes"`
|
Items []Minion `json:"items" description:"list of nodes"`
|
||||||
}
|
}
|
||||||
|
|
||||||
// Binding is written by a scheduler to cause a pod to be bound to a host.
|
// Binding is written by a scheduler to cause a pod to be bound to a host.
|
||||||
type Binding struct {
|
type Binding struct {
|
||||||
TypeMeta `json:",inline" yaml:",inline"`
|
TypeMeta `json:",inline"`
|
||||||
PodID string `json:"podID" yaml:"podID" description:"name of the pod to bind"`
|
PodID string `json:"podID" description:"name of the pod to bind"`
|
||||||
Host string `json:"host" yaml:"host" description:"host to which to bind the specified pod"`
|
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.
|
// 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
|
// TODO: this could go in apiserver, but I'm including it here so clients needn't
|
||||||
// import both.
|
// import both.
|
||||||
type Status struct {
|
type Status struct {
|
||||||
TypeMeta `json:",inline" yaml:",inline"`
|
TypeMeta `json:",inline"`
|
||||||
// One of: "Success", "Failure", "Working" (for operations not yet completed)
|
// 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.
|
// 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
|
// A machine-readable description of why this operation is in the
|
||||||
// "Failure" or "Working" status. If this value is empty there
|
// "Failure" or "Working" status. If this value is empty there
|
||||||
// is no information available. A Reason clarifies an HTTP status
|
// is no information available. A Reason clarifies an HTTP status
|
||||||
// code but does not override it.
|
// 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
|
// Extended data associated with the reason. Each reason may define its
|
||||||
// own extended details. This field is optional and the data returned
|
// own extended details. This field is optional and the data returned
|
||||||
// is not guaranteed to conform to any schema except that defined by
|
// is not guaranteed to conform to any schema except that defined by
|
||||||
// the reason type.
|
// 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.
|
// 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
|
// StatusDetails is a set of additional properties that MAY be set by the
|
||||||
@@ -530,13 +530,13 @@ type Status struct {
|
|||||||
type StatusDetails struct {
|
type StatusDetails struct {
|
||||||
// The ID attribute of the resource associated with the status StatusReason
|
// The ID attribute of the resource associated with the status StatusReason
|
||||||
// (when there is a single ID which can be described).
|
// (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.
|
// The kind attribute of the resource associated with the status StatusReason.
|
||||||
// On some operations may differ from the requested resource Kind.
|
// 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
|
// The Causes array includes more details associated with the StatusReason
|
||||||
// failure. Not all StatusReasons may provide detailed causes.
|
// 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
|
// Values of Status.Status
|
||||||
@@ -613,10 +613,10 @@ const (
|
|||||||
type StatusCause struct {
|
type StatusCause struct {
|
||||||
// A machine-readable description of the cause of the error. If this value is
|
// A machine-readable description of the cause of the error. If this value is
|
||||||
// empty there is no information available.
|
// 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
|
// A human-readable description of the cause of the error. This field may be
|
||||||
// presented as-is to a reader.
|
// 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
|
// 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.
|
// serialization. May include dot and postfix notation for nested attributes.
|
||||||
// Arrays are zero-indexed. Fields may appear more than once in an array of
|
// Arrays are zero-indexed. Fields may appear more than once in an array of
|
||||||
@@ -626,7 +626,7 @@ type StatusCause struct {
|
|||||||
// Examples:
|
// Examples:
|
||||||
// "name" - the field "name" on the current resource
|
// "name" - the field "name" on the current resource
|
||||||
// "items[0].name" - the field "name" on the first array entry in "items"
|
// "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
|
// CauseType is a machine readable value providing more detail about what
|
||||||
@@ -654,23 +654,23 @@ const (
|
|||||||
|
|
||||||
// ServerOp is an operation delivered to API clients.
|
// ServerOp is an operation delivered to API clients.
|
||||||
type ServerOp struct {
|
type ServerOp struct {
|
||||||
TypeMeta `yaml:",inline" json:",inline"`
|
TypeMeta `json:",inline"`
|
||||||
}
|
}
|
||||||
|
|
||||||
// ServerOpList is a list of operations, as delivered to API clients.
|
// ServerOpList is a list of operations, as delivered to API clients.
|
||||||
type ServerOpList struct {
|
type ServerOpList struct {
|
||||||
TypeMeta `yaml:",inline" json:",inline"`
|
TypeMeta `json:",inline"`
|
||||||
Items []ServerOp `yaml:"items" json:"items" description:"list of operations"`
|
Items []ServerOp `json:"items" description:"list of operations"`
|
||||||
}
|
}
|
||||||
|
|
||||||
// ObjectReference contains enough information to let you inspect or modify the referred object.
|
// ObjectReference contains enough information to let you inspect or modify the referred object.
|
||||||
type ObjectReference struct {
|
type ObjectReference struct {
|
||||||
Kind string `json:"kind,omitempty" yaml:"kind,omitempty" description:"kind of the referent"`
|
Kind string `json:"kind,omitempty" description:"kind of the referent"`
|
||||||
Namespace string `json:"namespace,omitempty" yaml:"namespace,omitempty" description:"namespace of the referent"`
|
Namespace string `json:"namespace,omitempty" description:"namespace of the referent"`
|
||||||
ID string `json:"name,omitempty" yaml:"name,omitempty" description:"id of the referent"`
|
ID string `json:"name,omitempty" description:"id of the referent"`
|
||||||
UID string `json:"uid,omitempty" yaml:"uid,omitempty" description:"uid of the referent"`
|
UID string `json:"uid,omitempty" description:"uid of the referent"`
|
||||||
APIVersion string `json:"apiVersion,omitempty" yaml:"apiVersion,omitempty" description:"API version of the referent"`
|
APIVersion string `json:"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"`
|
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
|
// 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,
|
// 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
|
// both go and JavaScript. This is syntax is chosen only to have some well-defined way of
|
||||||
// referencing a part of an object.
|
// referencing a part of an object.
|
||||||
// TODO: this design is not final and this field is subject to change in the future.
|
// 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.
|
// 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.
|
// TODO: Decide whether to store these separately or with the object they apply to.
|
||||||
type Event struct {
|
type Event struct {
|
||||||
TypeMeta `yaml:",inline" json:",inline"`
|
TypeMeta `json:",inline"`
|
||||||
|
|
||||||
// Required. The object that this event is about.
|
// 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
|
// 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.
|
// 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.
|
// always be used for the same status.
|
||||||
// TODO: define a way of making sure these are consistent and don't collide.
|
// TODO: define a way of making sure these are consistent and don't collide.
|
||||||
// TODO: provide exact specification for format.
|
// 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
|
// 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
|
// for the transition into the object's current status. For example, if ObjectStatus is
|
||||||
// "cantStart", StatusReason might be "imageNotFound".
|
// "cantStart", StatusReason might be "imageNotFound".
|
||||||
// TODO: provide exact specification for format.
|
// 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.
|
// Optional. A human-readable description of the status of this operation.
|
||||||
// TODO: decide on maximum length.
|
// 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.
|
// Optional. The component reporting this event. Should be a short machine understandable string.
|
||||||
// TODO: provide exact specification for format.
|
// 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.)
|
// 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.
|
// EventList is a list of events.
|
||||||
type EventList struct {
|
type EventList struct {
|
||||||
TypeMeta `yaml:",inline" json:",inline"`
|
TypeMeta `json:",inline"`
|
||||||
Items []Event `yaml:"items" json:"items" description:"list of events"`
|
Items []Event `json:"items" description:"list of events"`
|
||||||
}
|
}
|
||||||
|
|
||||||
// ContainerManifest corresponds to the Container Manifest format, documented at:
|
// ContainerManifest corresponds to the Container Manifest format, documented at:
|
||||||
@@ -729,55 +729,55 @@ type EventList struct {
|
|||||||
// DEPRECATED: Replaced with BoundPod
|
// DEPRECATED: Replaced with BoundPod
|
||||||
type ContainerManifest struct {
|
type ContainerManifest struct {
|
||||||
// Required: This must be a supported version string, such as "v1beta1".
|
// 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.
|
// Required: This must be a DNS_SUBDOMAIN.
|
||||||
// TODO: ID on Manifest is deprecated and will be removed in the future.
|
// 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
|
// 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
|
// with the API refactory. It is required for now to determine the instance
|
||||||
// of a Pod.
|
// of a Pod.
|
||||||
UUID string `yaml:"uuid,omitempty" json:"uuid,omitempty" description:"manifest UUID"`
|
UUID string `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"`
|
Volumes []Volume `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"`
|
Containers []Container `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"`
|
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.
|
// ContainerManifestList is used to communicate container manifests to kubelet.
|
||||||
// DEPRECATED: Replaced with BoundPods
|
// DEPRECATED: Replaced with BoundPods
|
||||||
type ContainerManifestList struct {
|
type ContainerManifestList struct {
|
||||||
TypeMeta `json:",inline" yaml:",inline"`
|
TypeMeta `json:",inline"`
|
||||||
Items []ContainerManifest `json:"items" yaml:"items" description:"list of pod container manifests"`
|
Items []ContainerManifest `json:"items" description:"list of pod container manifests"`
|
||||||
}
|
}
|
||||||
|
|
||||||
// Backported from v1beta3 to replace ContainerManifest
|
// Backported from v1beta3 to replace ContainerManifest
|
||||||
|
|
||||||
// PodSpec is a description of a pod
|
// PodSpec is a description of a pod
|
||||||
type PodSpec struct {
|
type PodSpec struct {
|
||||||
Volumes []Volume `json:"volumes" yaml:"volumes" description:"list of volumes that can be mounted by containers belonging to the pod"`
|
Volumes []Volume `json:"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"`
|
Containers []Container `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"`
|
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 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
|
// 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
|
// 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.
|
// execute a pod, whereas a BoundPod is the specification that would be run on a server.
|
||||||
type BoundPod struct {
|
type BoundPod struct {
|
||||||
TypeMeta `json:",inline" yaml:",inline"`
|
TypeMeta `json:",inline"`
|
||||||
|
|
||||||
// Spec defines the behavior of a pod.
|
// 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
|
// 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.
|
// the pod list is guaranteed to only change when the list of bound pods changes.
|
||||||
type BoundPods struct {
|
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 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 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"`
|
||||||
}
|
}
|
||||||
|
@@ -51,25 +51,25 @@ import (
|
|||||||
type TypeMeta struct {
|
type TypeMeta struct {
|
||||||
// Kind is a string value representing the REST resource this object represents.
|
// Kind is a string value representing the REST resource this object represents.
|
||||||
// Servers may infer this from the endpoint the client submits requests to.
|
// 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.
|
// APIVersion defines the versioned schema of this representation of an object.
|
||||||
// Servers should convert recognized schemas to the latest internal value, and
|
// Servers should convert recognized schemas to the latest internal value, and
|
||||||
// may reject unrecognized values.
|
// 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
|
// ListMeta describes metadata that synthetic resources must have, including lists and
|
||||||
// various status objects.
|
// various status objects.
|
||||||
type ListMeta struct {
|
type ListMeta struct {
|
||||||
// SelfLink is a URL representing this object.
|
// 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
|
// 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
|
// 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
|
// and values may only be valid for a particular resource or set of resources. Only servers
|
||||||
// will generate resource versions.
|
// 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
|
// 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
|
// some resources may allow a client to request the generation of an appropriate name
|
||||||
// automatically. Name is primarily intended for creation idempotence and configuration
|
// automatically. Name is primarily intended for creation idempotence and configuration
|
||||||
// definition.
|
// 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
|
// 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.
|
// 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
|
// Not all objects are required to be scoped to a namespace - the value of this field for
|
||||||
// those objects will be empty.
|
// 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 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
|
// 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
|
// the server on successful creation of a resource and is not allowed to change on PUT
|
||||||
// operations.
|
// 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
|
// 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.
|
// 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
|
// 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.
|
// 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
|
// 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.
|
// 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.
|
// 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.
|
// Labels are key value pairs that may be used to scope and select individual resources.
|
||||||
// TODO: replace map[string]string with labels.LabelSet type
|
// 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
|
// 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
|
// external tooling. They are not queryable and should be preserved when modifying
|
||||||
// objects.
|
// objects.
|
||||||
Annotations map[string]string `json:"annotations,omitempty" yaml:"annotations,omitempty"`
|
Annotations map[string]string `json:"annotations,omitempty"`
|
||||||
}
|
}
|
||||||
|
|
||||||
const (
|
const (
|
||||||
@@ -131,39 +131,39 @@ const (
|
|||||||
//// directly.
|
//// directly.
|
||||||
//type ContainerManifest struct {
|
//type ContainerManifest struct {
|
||||||
// // Required: This must be a supported version string, such as "v1beta1".
|
// // 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.
|
// // Required: This must be a DNS_SUBDOMAIN.
|
||||||
// // TODO: ID on Manifest is deprecated and will be removed in the future.
|
// // 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
|
// // 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
|
// // with the API refactoring. It is required for now to determine the instance
|
||||||
// // of a Pod.
|
// // of a Pod.
|
||||||
// UUID string `json:"uuid,omitempty" yaml:"uuid,omitempty"`
|
// UUID string `json:"uuid,omitempty"`
|
||||||
// Volumes []Volume `json:"volumes" yaml:"volumes"`
|
// Volumes []Volume `json:"volumes"`
|
||||||
// Containers []Container `json:"containers" yaml:"containers"`
|
// Containers []Container `json:"containers"`
|
||||||
// RestartPolicy RestartPolicy `json:"restartPolicy,omitempty" yaml:"restartPolicy,omitempty"`
|
// RestartPolicy RestartPolicy `json:"restartPolicy,omitempty"`
|
||||||
//}
|
//}
|
||||||
//
|
//
|
||||||
//// ContainerManifestList is used to communicate container manifests to kubelet.
|
//// ContainerManifestList is used to communicate container manifests to kubelet.
|
||||||
//// DEPRECATED: Exists to allow backwards compatible storage for clients accessing etcd
|
//// DEPRECATED: Exists to allow backwards compatible storage for clients accessing etcd
|
||||||
//// directly.
|
//// directly.
|
||||||
//type ContainerManifestList struct {
|
//type ContainerManifestList struct {
|
||||||
// TypeMeta `json:",inline" yaml:",inline"`
|
// TypeMeta `json:",inline"`
|
||||||
// // ID is the legacy field representing Name
|
// // 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.
|
// Volume represents a named volume in a pod that may be accessed by any containers in the pod.
|
||||||
type Volume struct {
|
type Volume struct {
|
||||||
// Required: This must be a DNS_LABEL. Each volume in a pod must have
|
// Required: This must be a DNS_LABEL. Each volume in a pod must have
|
||||||
// a unique name.
|
// a unique name.
|
||||||
Name string `json:"name" yaml:"name"`
|
Name string `json:"name"`
|
||||||
// Source represents the location and type of a volume to mount.
|
// 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 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.
|
// 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.
|
// 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.
|
// 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
|
// TODO(jonesdl) We need to restrict who can use host directory mounts and who can/can not
|
||||||
// mount host directories as read/write.
|
// 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 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
|
// GCEPersistentDisk represents a GCE Disk resource that is attached to a
|
||||||
// kubelet's host machine and then exposed to the pod.
|
// 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 represents a git repository at a particular revision.
|
||||||
GitRepo *GitRepo `json:"gitRepo" yaml:"gitRepo"`
|
GitRepo *GitRepo `json:"gitRepo"`
|
||||||
}
|
}
|
||||||
|
|
||||||
// HostDir represents bare host directory volume.
|
// HostDir represents bare host directory volume.
|
||||||
type HostDir struct {
|
type HostDir struct {
|
||||||
Path string `json:"path" yaml:"path"`
|
Path string `json:"path"`
|
||||||
}
|
}
|
||||||
|
|
||||||
type EmptyDir struct{}
|
type EmptyDir struct{}
|
||||||
@@ -208,76 +208,76 @@ const (
|
|||||||
// A GCE PD can only be mounted as read/write once.
|
// A GCE PD can only be mounted as read/write once.
|
||||||
type GCEPersistentDisk struct {
|
type GCEPersistentDisk struct {
|
||||||
// Unique name of the PD resource. Used to identify the disk in GCE
|
// 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.
|
// Required: Filesystem type to mount.
|
||||||
// Must be a filesystem type supported by the host operating system.
|
// Must be a filesystem type supported by the host operating system.
|
||||||
// Ex. "ext4", "xfs", "ntfs"
|
// Ex. "ext4", "xfs", "ntfs"
|
||||||
// TODO: how do we prevent errors in the filesystem from compromising the machine
|
// 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.
|
// Optional: Partition on the disk to mount.
|
||||||
// If omitted, kubelet will attempt to mount the device name.
|
// 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.
|
// 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
|
// Optional: Defaults to false (read/write). ReadOnly here will force
|
||||||
// the ReadOnly setting in VolumeMounts.
|
// 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.
|
// GitRepo represents a volume that is pulled from git when the pod is created.
|
||||||
type GitRepo struct {
|
type GitRepo struct {
|
||||||
// Repository URL
|
// Repository URL
|
||||||
Repository string `yaml:"repository" json:"repository"`
|
Repository string `json:"repository"`
|
||||||
// Commit hash, this is optional
|
// Commit hash, this is optional
|
||||||
Revision string `yaml:"revision" json:"revision"`
|
Revision string `json:"revision"`
|
||||||
}
|
}
|
||||||
|
|
||||||
// Port represents a network port in a single container.
|
// Port represents a network port in a single container.
|
||||||
type Port struct {
|
type Port struct {
|
||||||
// Optional: If specified, this must be a DNS_LABEL. Each named port
|
// Optional: If specified, this must be a DNS_LABEL. Each named port
|
||||||
// in a pod must have a unique name.
|
// 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.
|
// 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.
|
// 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".
|
// 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.
|
// 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.
|
// VolumeMount describes a mounting of a Volume within a container.
|
||||||
type VolumeMount struct {
|
type VolumeMount struct {
|
||||||
// Required: This must match the Name of a Volume [above].
|
// 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).
|
// Optional: Defaults to false (read-write).
|
||||||
ReadOnly bool `json:"readOnly,omitempty" yaml:"readOnly,omitempty"`
|
ReadOnly bool `json:"readOnly,omitempty"`
|
||||||
// Required.
|
// Required.
|
||||||
MountPath string `json:"mountPath,omitempty" yaml:"mountPath,omitempty"`
|
MountPath string `json:"mountPath,omitempty"`
|
||||||
}
|
}
|
||||||
|
|
||||||
// EnvVar represents an environment variable present in a Container.
|
// EnvVar represents an environment variable present in a Container.
|
||||||
type EnvVar struct {
|
type EnvVar struct {
|
||||||
// Required: This must be a C_IDENTIFIER.
|
// Required: This must be a C_IDENTIFIER.
|
||||||
Name string `json:"name" yaml:"name"`
|
Name string `json:"name"`
|
||||||
// Optional: defaults to "".
|
// 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.
|
// HTTPGetAction describes an action based on HTTP Get requests.
|
||||||
type HTTPGetAction struct {
|
type HTTPGetAction struct {
|
||||||
// Optional: Path to access on the HTTP server.
|
// 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.
|
// 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.
|
// 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
|
// TCPSocketAction describes an action based on opening a socket
|
||||||
type TCPSocketAction struct {
|
type TCPSocketAction struct {
|
||||||
// Required: Port to connect to.
|
// 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.
|
// 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
|
// 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
|
// 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 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.
|
// LivenessProbe describes how to probe a container for liveness.
|
||||||
// TODO: pass structured data to the actions, and document that data here.
|
// TODO: pass structured data to the actions, and document that data here.
|
||||||
type LivenessProbe struct {
|
type LivenessProbe struct {
|
||||||
// Type of liveness probe. Current legal values "HTTP", "TCP", "Exec"
|
// 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'
|
// 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'
|
// 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'
|
// 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.
|
// 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
|
// PullPolicy describes a policy for if/when to pull a container image
|
||||||
@@ -320,28 +320,28 @@ const (
|
|||||||
type Container struct {
|
type Container struct {
|
||||||
// Required: This must be a DNS_LABEL. Each container in a pod must
|
// Required: This must be a DNS_LABEL. Each container in a pod must
|
||||||
// have a unique name.
|
// have a unique name.
|
||||||
Name string `json:"name" yaml:"name"`
|
Name string `json:"name"`
|
||||||
// Required.
|
// Required.
|
||||||
Image string `json:"image" yaml:"image"`
|
Image string `json:"image"`
|
||||||
// Optional: Defaults to whatever is defined in the 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.
|
// Optional: Defaults to Docker's default.
|
||||||
WorkingDir string `json:"workingDir,omitempty" yaml:"workingDir,omitempty"`
|
WorkingDir string `json:"workingDir,omitempty"`
|
||||||
Ports []Port `json:"ports,omitempty" yaml:"ports,omitempty"`
|
Ports []Port `json:"ports,omitempty"`
|
||||||
Env []EnvVar `json:"env,omitempty" yaml:"env,omitempty"`
|
Env []EnvVar `json:"env,omitempty"`
|
||||||
// Optional: Defaults to unlimited.
|
// Optional: Defaults to unlimited.
|
||||||
Memory int `json:"memory,omitempty" yaml:"memory,omitempty"`
|
Memory int `json:"memory,omitempty"`
|
||||||
// Optional: Defaults to unlimited.
|
// Optional: Defaults to unlimited.
|
||||||
CPU int `json:"cpu,omitempty" yaml:"cpu,omitempty"`
|
CPU int `json:"cpu,omitempty"`
|
||||||
VolumeMounts []VolumeMount `json:"volumeMounts,omitempty" yaml:"volumeMounts,omitempty"`
|
VolumeMounts []VolumeMount `json:"volumeMounts,omitempty"`
|
||||||
LivenessProbe *LivenessProbe `json:"livenessProbe,omitempty" yaml:"livenessProbe,omitempty"`
|
LivenessProbe *LivenessProbe `json:"livenessProbe,omitempty"`
|
||||||
Lifecycle *Lifecycle `json:"lifecycle,omitempty" yaml:"lifecycle,omitempty"`
|
Lifecycle *Lifecycle `json:"lifecycle,omitempty"`
|
||||||
// Optional: Defaults to /dev/termination-log
|
// Optional: Defaults to /dev/termination-log
|
||||||
TerminationMessagePath string `json:"terminationMessagePath,omitempty" yaml:"terminationMessagePath,omitempty"`
|
TerminationMessagePath string `json:"terminationMessagePath,omitempty"`
|
||||||
// Optional: Default to false.
|
// 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
|
// 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
|
// Handler defines a specific action that should be taken
|
||||||
@@ -349,9 +349,9 @@ type Container struct {
|
|||||||
type Handler struct {
|
type Handler struct {
|
||||||
// One and only one of the following should be specified.
|
// One and only one of the following should be specified.
|
||||||
// Exec specifies the action to take.
|
// 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 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
|
// Lifecycle describes actions that the management system should take in response to container lifecycle
|
||||||
@@ -360,10 +360,10 @@ type Handler struct {
|
|||||||
type Lifecycle struct {
|
type Lifecycle struct {
|
||||||
// PostStart is called immediately after a container is created. If the handler fails, the container
|
// PostStart is called immediately after a container is created. If the handler fails, the container
|
||||||
// is terminated and restarted.
|
// 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
|
// 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.
|
// 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.
|
// PodPhase is a label for the condition of a pod at the current time.
|
||||||
@@ -388,38 +388,38 @@ const (
|
|||||||
|
|
||||||
type ContainerStateWaiting struct {
|
type ContainerStateWaiting struct {
|
||||||
// Reason could be pulling image,
|
// Reason could be pulling image,
|
||||||
Reason string `json:"reason,omitempty" yaml:"reason,omitempty"`
|
Reason string `json:"reason,omitempty"`
|
||||||
}
|
}
|
||||||
|
|
||||||
type ContainerStateRunning struct {
|
type ContainerStateRunning struct {
|
||||||
StartedAt time.Time `json:"startedAt,omitempty" yaml:"startedAt,omitempty"`
|
StartedAt time.Time `json:"startedAt,omitempty"`
|
||||||
}
|
}
|
||||||
|
|
||||||
type ContainerStateTerminated struct {
|
type ContainerStateTerminated struct {
|
||||||
ExitCode int `json:"exitCode" yaml:"exitCode"`
|
ExitCode int `json:"exitCode"`
|
||||||
Signal int `json:"signal,omitempty" yaml:"signal,omitempty"`
|
Signal int `json:"signal,omitempty"`
|
||||||
Reason string `json:"reason,omitempty" yaml:"reason,omitempty"`
|
Reason string `json:"reason,omitempty"`
|
||||||
Message string `json:"message,omitempty" yaml:"message,omitempty"`
|
Message string `json:"message,omitempty"`
|
||||||
StartedAt time.Time `json:"startedAt,omitempty" yaml:"startedAt,omitempty"`
|
StartedAt time.Time `json:"startedAt,omitempty"`
|
||||||
FinishedAt time.Time `json:"finishedAt,omitempty" yaml:"finishedAt,omitempty"`
|
FinishedAt time.Time `json:"finishedAt,omitempty"`
|
||||||
}
|
}
|
||||||
|
|
||||||
// ContainerState holds a possible state of container.
|
// ContainerState holds a possible state of container.
|
||||||
// Only one of its members may be specified.
|
// Only one of its members may be specified.
|
||||||
// If none of them is specified, the default one is ContainerStateWaiting.
|
// If none of them is specified, the default one is ContainerStateWaiting.
|
||||||
type ContainerState struct {
|
type ContainerState struct {
|
||||||
Waiting *ContainerStateWaiting `json:"waiting,omitempty" yaml:"waiting,omitempty"`
|
Waiting *ContainerStateWaiting `json:"waiting,omitempty"`
|
||||||
Running *ContainerStateRunning `json:"running,omitempty" yaml:"running,omitempty"`
|
Running *ContainerStateRunning `json:"running,omitempty"`
|
||||||
Termination *ContainerStateTerminated `json:"termination,omitempty" yaml:"termination,omitempty"`
|
Termination *ContainerStateTerminated `json:"termination,omitempty"`
|
||||||
}
|
}
|
||||||
|
|
||||||
type ContainerStatus struct {
|
type ContainerStatus struct {
|
||||||
// TODO(dchen1107): Should we rename PodStatus to a more generic name or have a separate states
|
// TODO(dchen1107): Should we rename PodStatus to a more generic name or have a separate states
|
||||||
// defined for container?
|
// 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
|
// 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.
|
// 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): Introduce our own NetworkSettings struct here?
|
||||||
// TODO(dchen1107): Which image the container is running with?
|
// 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.
|
// Only one of the following restart policies may be specified.
|
||||||
// If none of the following policies is specified, the default one
|
// If none of the following policies is specified, the default one
|
||||||
// is RestartPolicyAlways.
|
// is RestartPolicyAlways.
|
||||||
Always *RestartPolicyAlways `json:"always,omitempty" yaml:"always,omitempty"`
|
Always *RestartPolicyAlways `json:"always,omitempty"`
|
||||||
OnFailure *RestartPolicyOnFailure `json:"onFailure,omitempty" yaml:"onFailure,omitempty"`
|
OnFailure *RestartPolicyOnFailure `json:"onFailure,omitempty"`
|
||||||
Never *RestartPolicyNever `json:"never,omitempty" yaml:"never,omitempty"`
|
Never *RestartPolicyNever `json:"never,omitempty"`
|
||||||
}
|
}
|
||||||
|
|
||||||
// PodSpec is a description of a pod
|
// PodSpec is a description of a pod
|
||||||
type PodSpec struct {
|
type PodSpec struct {
|
||||||
Volumes []Volume `json:"volumes" yaml:"volumes"`
|
Volumes []Volume `json:"volumes"`
|
||||||
Containers []Container `json:"containers" yaml:"containers"`
|
Containers []Container `json:"containers"`
|
||||||
RestartPolicy RestartPolicy `json:"restartPolicy,omitempty" yaml:"restartPolicy,omitempty"`
|
RestartPolicy RestartPolicy `json:"restartPolicy,omitempty"`
|
||||||
// NodeSelector is a selector which must be true for the pod to fit on a node
|
// 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
|
// PodStatus represents information about the status of a pod. Status may trail the actual
|
||||||
// state of a system.
|
// state of a system.
|
||||||
type PodStatus struct {
|
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.
|
// 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
|
// Host is the name of the node that this Pod is currently bound to, or empty if no
|
||||||
// assignment has been done.
|
// assignment has been done.
|
||||||
Host string `json:"host,omitempty" yaml:"host,omitempty"`
|
Host string `json:"host,omitempty"`
|
||||||
HostIP string `json:"hostIP,omitempty" yaml:"hostIP,omitempty"`
|
HostIP string `json:"hostIP,omitempty"`
|
||||||
PodIP string `json:"podIP,omitempty" yaml:"podIP,omitempty"`
|
PodIP string `json:"podIP,omitempty"`
|
||||||
|
|
||||||
// The key of this map is the *name* of the container within the manifest; it has one
|
// 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
|
// entry per container in the manifest. The value of this map is currently the output
|
||||||
@@ -472,121 +472,121 @@ type PodStatus struct {
|
|||||||
// upon.
|
// upon.
|
||||||
// TODO: Make real decisions about what our info should look like. Re-enable fuzz test
|
// TODO: Make real decisions about what our info should look like. Re-enable fuzz test
|
||||||
// when we have done this.
|
// 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
|
// 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
|
// by clients and scheduled onto hosts. BoundPod represents the state of this resource
|
||||||
// to hosts.
|
// to hosts.
|
||||||
type Pod struct {
|
type Pod struct {
|
||||||
TypeMeta `json:",inline" yaml:",inline"`
|
TypeMeta `json:",inline"`
|
||||||
ObjectMeta `json:"metadata,omitempty" yaml:"metadata,omitempty"`
|
ObjectMeta `json:"metadata,omitempty"`
|
||||||
|
|
||||||
// Spec defines the behavior of a pod.
|
// 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
|
// Status represents the current information about a pod. This data may not be up
|
||||||
// to date.
|
// to date.
|
||||||
Status PodStatus `json:"status,omitempty" yaml:"status,omitempty"`
|
Status PodStatus `json:"status,omitempty"`
|
||||||
}
|
}
|
||||||
|
|
||||||
// PodList is a list of Pods.
|
// PodList is a list of Pods.
|
||||||
type PodList struct {
|
type PodList struct {
|
||||||
TypeMeta `json:",inline" yaml:",inline"`
|
TypeMeta `json:",inline"`
|
||||||
ListMeta `json:"metadata,omitempty" yaml:"metadata,omitempty"`
|
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
|
// PodTemplateSpec describes the data a pod should have when created from a template
|
||||||
type PodTemplateSpec struct {
|
type PodTemplateSpec struct {
|
||||||
// Metadata of the pods created from this template.
|
// 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 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.
|
// PodTemplate describes a template for creating copies of a predefined pod.
|
||||||
type PodTemplate struct {
|
type PodTemplate struct {
|
||||||
TypeMeta `json:",inline" yaml:",inline"`
|
TypeMeta `json:",inline"`
|
||||||
ObjectMeta `json:"metadata,omitempty" yaml:"metadata,omitempty"`
|
ObjectMeta `json:"metadata,omitempty"`
|
||||||
|
|
||||||
// Spec defines the behavior of a pod.
|
// 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.
|
// PodTemplateList is a list of PodTemplates.
|
||||||
type PodTemplateList struct {
|
type PodTemplateList struct {
|
||||||
TypeMeta `json:",inline" yaml:",inline"`
|
TypeMeta `json:",inline"`
|
||||||
ListMeta `json:"metadata,omitempty" yaml:"metadata,omitempty"`
|
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
|
// 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
|
// 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.
|
// execute a pod, whereas a BoundPod is the specification that would be run on a server.
|
||||||
type BoundPod struct {
|
type BoundPod struct {
|
||||||
TypeMeta `json:",inline" yaml:",inline"`
|
TypeMeta `json:",inline"`
|
||||||
ObjectMeta `json:"metadata,omitempty" yaml:"metadata,omitempty"`
|
ObjectMeta `json:"metadata,omitempty"`
|
||||||
|
|
||||||
// Spec defines the behavior of a pod.
|
// 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
|
// 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.
|
// the pod list is guaranteed to only change when the list of bound pods changes.
|
||||||
type BoundPods struct {
|
type BoundPods struct {
|
||||||
TypeMeta `json:",inline" yaml:",inline"`
|
TypeMeta `json:",inline"`
|
||||||
ObjectMeta `json:"metadata,omitempty" yaml:"metadata,omitempty"`
|
ObjectMeta `json:"metadata,omitempty"`
|
||||||
|
|
||||||
// Host is the name of a node that these pods were bound to.
|
// 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 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.
|
// ReplicationControllerSpec is the specification of a replication controller.
|
||||||
type ReplicationControllerSpec struct {
|
type ReplicationControllerSpec struct {
|
||||||
// Replicas is the number of desired replicas.
|
// 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 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
|
// Template is a reference to an object that describes the pod that will be created if
|
||||||
// insufficient replicas are detected.
|
// 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
|
// ReplicationControllerStatus represents the current status of a replication
|
||||||
// controller.
|
// controller.
|
||||||
type ReplicationControllerStatus struct {
|
type ReplicationControllerStatus struct {
|
||||||
// Replicas is the number of actual replicas.
|
// 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.
|
// ReplicationController represents the configuration of a replication controller.
|
||||||
type ReplicationController struct {
|
type ReplicationController struct {
|
||||||
TypeMeta `json:",inline" yaml:",inline"`
|
TypeMeta `json:",inline"`
|
||||||
ObjectMeta `json:"metadata,omitempty" yaml:"metadata,omitempty"`
|
ObjectMeta `json:"metadata,omitempty"`
|
||||||
|
|
||||||
// Spec defines the desired behavior of this replication controller.
|
// 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
|
// Status is the current status of this replication controller. This data may be
|
||||||
// out of date by some window of time.
|
// 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.
|
// ReplicationControllerList is a collection of replication controllers.
|
||||||
type ReplicationControllerList struct {
|
type ReplicationControllerList struct {
|
||||||
TypeMeta `json:",inline" yaml:",inline"`
|
TypeMeta `json:",inline"`
|
||||||
ListMeta `json:"metadata,omitempty" yaml:"metadata,omitempty"`
|
ListMeta `json:"metadata,omitempty"`
|
||||||
|
|
||||||
Items []ReplicationController `json:"items" yaml:"items"`
|
Items []ReplicationController `json:"items"`
|
||||||
}
|
}
|
||||||
|
|
||||||
// ServiceStatus represents the current status of a service
|
// ServiceStatus represents the current status of a service
|
||||||
@@ -596,83 +596,83 @@ type ServiceStatus struct{}
|
|||||||
type ServiceSpec struct {
|
type ServiceSpec struct {
|
||||||
// Port is the TCP or UDP port that will be made available to each pod for connecting to the pods
|
// Port is the TCP or UDP port that will be made available to each pod for connecting to the pods
|
||||||
// proxied by this service.
|
// proxied by this service.
|
||||||
Port int `json:"port" yaml:"port"`
|
Port int `json:"port"`
|
||||||
|
|
||||||
// Optional: Supports "TCP" and "UDP". Defaults to "TCP".
|
// 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.
|
// 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
|
// 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
|
// we will try to respect it or else fail the request. This field can
|
||||||
// not be changed by updates.
|
// 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 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 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 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.
|
// ContainerPort is the name of the port on the container to direct traffic to.
|
||||||
// Optional, if unspecified use the first port on the container.
|
// 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
|
// 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
|
// (for example 3306) that the proxy listens on, and the selector that determines which pods
|
||||||
// will answer requests sent through the proxy.
|
// will answer requests sent through the proxy.
|
||||||
type Service struct {
|
type Service struct {
|
||||||
TypeMeta `json:",inline" yaml:",inline"`
|
TypeMeta `json:",inline"`
|
||||||
ObjectMeta `json:"metadata,omitempty" yaml:"metadata,omitempty"`
|
ObjectMeta `json:"metadata,omitempty"`
|
||||||
|
|
||||||
// Spec defines the behavior of a service.
|
// 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 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.
|
// ServiceList holds a list of services.
|
||||||
type ServiceList struct {
|
type ServiceList struct {
|
||||||
TypeMeta `json:",inline" yaml:",inline"`
|
TypeMeta `json:",inline"`
|
||||||
ListMeta `json:"metadata,omitempty" yaml:"metadata,omitempty"`
|
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:
|
// 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"]
|
// Name: "mysql", Endpoints: ["10.10.1.1:1909", "10.10.2.2:8834"]
|
||||||
type Endpoints struct {
|
type Endpoints struct {
|
||||||
TypeMeta `json:",inline" yaml:",inline"`
|
TypeMeta `json:",inline"`
|
||||||
ObjectMeta `json:"metadata" yaml:"metadata"`
|
ObjectMeta `json:"metadata"`
|
||||||
|
|
||||||
// Endpoints is the list of host ports that satisfy the service selector
|
// 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.
|
// EndpointsList is a list of endpoints.
|
||||||
type EndpointsList struct {
|
type EndpointsList struct {
|
||||||
TypeMeta `json:",inline" yaml:",inline"`
|
TypeMeta `json:",inline"`
|
||||||
ListMeta `json:"metadata,omitempty" yaml:"metadata,omitempty"`
|
ListMeta `json:"metadata,omitempty"`
|
||||||
|
|
||||||
Items []Endpoints `json:"items" yaml:"items"`
|
Items []Endpoints `json:"items"`
|
||||||
}
|
}
|
||||||
|
|
||||||
// NodeSpec describes the attributes that a node is created with.
|
// NodeSpec describes the attributes that a node is created with.
|
||||||
type NodeSpec struct {
|
type NodeSpec struct {
|
||||||
// Capacity represents the available resources of a node
|
// Capacity represents the available resources of a node
|
||||||
// see https://github.com/GoogleCloudPlatform/kubernetes/blob/master/docs/resources.md for more details.
|
// 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.
|
// NodeStatus is information about the current status of a node.
|
||||||
type NodeStatus struct {
|
type NodeStatus struct {
|
||||||
// Queried from cloud provider, if available.
|
// Queried from cloud provider, if available.
|
||||||
HostIP string `json:"hostIP,omitempty" yaml:"hostIP,omitempty"`
|
HostIP string `json:"hostIP,omitempty"`
|
||||||
}
|
}
|
||||||
|
|
||||||
type ResourceName string
|
type ResourceName string
|
||||||
@@ -682,57 +682,57 @@ type ResourceList map[ResourceName]util.IntOrString
|
|||||||
// Node is a worker node in Kubernetes.
|
// Node is a worker node in Kubernetes.
|
||||||
// The name of the node according to etcd is in ID.
|
// The name of the node according to etcd is in ID.
|
||||||
type Node struct {
|
type Node struct {
|
||||||
TypeMeta `json:",inline" yaml:",inline"`
|
TypeMeta `json:",inline"`
|
||||||
ObjectMeta `json:"metadata,omitempty" yaml:"metadata,omitempty"`
|
ObjectMeta `json:"metadata,omitempty"`
|
||||||
|
|
||||||
// Spec defines the behavior of a node.
|
// 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 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.
|
// NodeList is a list of minions.
|
||||||
type NodeList struct {
|
type NodeList struct {
|
||||||
TypeMeta `json:",inline" yaml:",inline"`
|
TypeMeta `json:",inline"`
|
||||||
ListMeta `json:"metadata,omitempty" yaml:"metadata,omitempty"`
|
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
|
// Binding is written by a scheduler to cause a pod to be bound to a node. Name is not
|
||||||
// required for Bindings.
|
// required for Bindings.
|
||||||
type Binding struct {
|
type Binding struct {
|
||||||
TypeMeta `json:",inline" yaml:",inline"`
|
TypeMeta `json:",inline"`
|
||||||
ObjectMeta `json:"metadata,omitempty" yaml:"metadata,omitempty"`
|
ObjectMeta `json:"metadata,omitempty"`
|
||||||
|
|
||||||
// PodID is a Pod name to be bound to a node.
|
// 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 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.
|
// Status is a return value for calls that don't return other objects.
|
||||||
type Status struct {
|
type Status struct {
|
||||||
TypeMeta `json:",inline" yaml:",inline"`
|
TypeMeta `json:",inline"`
|
||||||
ListMeta `json:"metadata,omitempty" yaml:"metadata,omitempty"`
|
ListMeta `json:"metadata,omitempty"`
|
||||||
|
|
||||||
// One of: "Success", "Failure", "Working" (for operations not yet completed)
|
// 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.
|
// 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
|
// A machine-readable description of why this operation is in the
|
||||||
// "Failure" or "Working" status. If this value is empty there
|
// "Failure" or "Working" status. If this value is empty there
|
||||||
// is no information available. A Reason clarifies an HTTP status
|
// is no information available. A Reason clarifies an HTTP status
|
||||||
// code but does not override it.
|
// 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
|
// Extended data associated with the reason. Each reason may define its
|
||||||
// own extended details. This field is optional and the data returned
|
// own extended details. This field is optional and the data returned
|
||||||
// is not guaranteed to conform to any schema except that defined by
|
// is not guaranteed to conform to any schema except that defined by
|
||||||
// the reason type.
|
// 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.
|
// 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
|
// StatusDetails is a set of additional properties that MAY be set by the
|
||||||
@@ -744,13 +744,13 @@ type Status struct {
|
|||||||
type StatusDetails struct {
|
type StatusDetails struct {
|
||||||
// The ID attribute of the resource associated with the status StatusReason
|
// The ID attribute of the resource associated with the status StatusReason
|
||||||
// (when there is a single ID which can be described).
|
// (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.
|
// The kind attribute of the resource associated with the status StatusReason.
|
||||||
// On some operations may differ from the requested resource Kind.
|
// 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
|
// The Causes array includes more details associated with the StatusReason
|
||||||
// failure. Not all StatusReasons may provide detailed causes.
|
// 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
|
// Values of Status.Status
|
||||||
@@ -827,10 +827,10 @@ const (
|
|||||||
type StatusCause struct {
|
type StatusCause struct {
|
||||||
// A machine-readable description of the cause of the error. If this value is
|
// A machine-readable description of the cause of the error. If this value is
|
||||||
// empty there is no information available.
|
// 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
|
// A human-readable description of the cause of the error. This field may be
|
||||||
// presented as-is to a reader.
|
// 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
|
// 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.
|
// serialization. May include dot and postfix notation for nested attributes.
|
||||||
// Arrays are zero-indexed. Fields may appear more than once in an array of
|
// Arrays are zero-indexed. Fields may appear more than once in an array of
|
||||||
@@ -840,7 +840,7 @@ type StatusCause struct {
|
|||||||
// Examples:
|
// Examples:
|
||||||
// "name" - the field "name" on the current resource
|
// "name" - the field "name" on the current resource
|
||||||
// "items[0].name" - the field "name" on the first array entry in "items"
|
// "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
|
// 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
|
// 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.
|
// clients to retrieve the final result of the operation at a later time.
|
||||||
type Operation struct {
|
type Operation struct {
|
||||||
TypeMeta `json:",inline" yaml:",inline"`
|
TypeMeta `json:",inline"`
|
||||||
ObjectMeta `json:"metadata" yaml:"metadata"`
|
ObjectMeta `json:"metadata"`
|
||||||
}
|
}
|
||||||
|
|
||||||
// OperationList is a list of operations, as delivered to API clients.
|
// OperationList is a list of operations, as delivered to API clients.
|
||||||
type OperationList struct {
|
type OperationList struct {
|
||||||
TypeMeta `json:",inline" yaml:",inline"`
|
TypeMeta `json:",inline"`
|
||||||
ListMeta `json:"metadata,omitempty" yaml:"metadata,omitempty"`
|
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.
|
// ObjectReference contains enough information to let you inspect or modify the referred object.
|
||||||
type ObjectReference struct {
|
type ObjectReference struct {
|
||||||
Kind string `json:"kind,omitempty" yaml:"kind,omitempty"`
|
Kind string `json:"kind,omitempty"`
|
||||||
Namespace string `json:"namespace,omitempty" yaml:"namespace,omitempty"`
|
Namespace string `json:"namespace,omitempty"`
|
||||||
Name string `json:"name,omitempty" yaml:"name,omitempty"`
|
Name string `json:"name,omitempty"`
|
||||||
UID string `json:"uid,omitempty" yaml:"uid,omitempty"`
|
UID string `json:"uid,omitempty"`
|
||||||
APIVersion string `json:"apiVersion,omitempty" yaml:"apiVersion,omitempty"`
|
APIVersion string `json:"apiVersion,omitempty"`
|
||||||
ResourceVersion string `json:"resourceVersion,omitempty" yaml:"resourceVersion,omitempty"`
|
ResourceVersion string `json:"resourceVersion,omitempty"`
|
||||||
|
|
||||||
// Optional. If referring to a piece of an object instead of an entire object, this string
|
// 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,
|
// 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
|
// both go and JavaScript. This is syntax is chosen only to have some well-defined way of
|
||||||
// referencing a part of an object.
|
// referencing a part of an object.
|
||||||
// TODO: this design is not final and this field is subject to change in the future.
|
// 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.
|
// 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.
|
// TODO: Decide whether to store these separately or with the object they apply to.
|
||||||
type Event struct {
|
type Event struct {
|
||||||
TypeMeta `json:",inline" yaml:",inline"`
|
TypeMeta `json:",inline"`
|
||||||
ObjectMeta `json:"metadata" yaml:"metadata"`
|
ObjectMeta `json:"metadata"`
|
||||||
|
|
||||||
// Required. The object that this event is about.
|
// 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
|
// 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.
|
// 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.
|
// always be used for the same status.
|
||||||
// TODO: define a way of making sure these are consistent and don't collide.
|
// TODO: define a way of making sure these are consistent and don't collide.
|
||||||
// TODO: provide exact specification for format.
|
// 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
|
// 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
|
// for the transition into the object's current status. For example, if ObjectStatus is
|
||||||
// "cantStart", StatusReason might be "imageNotFound".
|
// "cantStart", StatusReason might be "imageNotFound".
|
||||||
// TODO: provide exact specification for format.
|
// 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.
|
// Optional. A human-readable description of the status of this operation.
|
||||||
// TODO: decide on maximum length.
|
// 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.
|
// Optional. The component reporting this event. Should be a short machine understandable string.
|
||||||
// TODO: provide exact specification for format.
|
// 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.)
|
// 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.
|
// EventList is a list of events.
|
||||||
type EventList struct {
|
type EventList struct {
|
||||||
TypeMeta `json:",inline" yaml:",inline"`
|
TypeMeta `json:",inline"`
|
||||||
ListMeta `json:"metadata,omitempty" yaml:"metadata,omitempty"`
|
ListMeta `json:"metadata,omitempty"`
|
||||||
|
|
||||||
Items []Event `json:"items" yaml:"items"`
|
Items []Event `json:"items"`
|
||||||
}
|
}
|
||||||
|
@@ -95,17 +95,17 @@ func init() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
type Simple struct {
|
type Simple struct {
|
||||||
api.TypeMeta `yaml:",inline" json:",inline"`
|
api.TypeMeta `json:",inline"`
|
||||||
api.ObjectMeta `yaml:"metadata" json:"metadata"`
|
api.ObjectMeta `json:"metadata"`
|
||||||
Other string `yaml:"other,omitempty" json:"other,omitempty"`
|
Other string `json:"other,omitempty"`
|
||||||
}
|
}
|
||||||
|
|
||||||
func (*Simple) IsAnAPIObject() {}
|
func (*Simple) IsAnAPIObject() {}
|
||||||
|
|
||||||
type SimpleList struct {
|
type SimpleList struct {
|
||||||
api.TypeMeta `yaml:",inline" json:",inline"`
|
api.TypeMeta `json:",inline"`
|
||||||
api.ListMeta `yaml:"metadata,inline" json:"metadata,inline"`
|
api.ListMeta `json:"metadata,inline"`
|
||||||
Items []Simple `yaml:"items,omitempty" json:"items,omitempty"`
|
Items []Simple `json:"items,omitempty"`
|
||||||
}
|
}
|
||||||
|
|
||||||
func (*SimpleList) IsAnAPIObject() {}
|
func (*SimpleList) IsAnAPIObject() {}
|
||||||
|
@@ -32,8 +32,8 @@ import (
|
|||||||
|
|
||||||
// watchJSON defines the expected JSON wire equivalent of watch.Event
|
// watchJSON defines the expected JSON wire equivalent of watch.Event
|
||||||
type watchJSON struct {
|
type watchJSON struct {
|
||||||
Type watch.EventType `json:"type,omitempty" yaml:"type,omitempty"`
|
Type watch.EventType `json:"type,omitempty"`
|
||||||
Object json.RawMessage `json:"object,omitempty" yaml:"object,omitempty"`
|
Object json.RawMessage `json:"object,omitempty"`
|
||||||
}
|
}
|
||||||
|
|
||||||
var watchTestTable = []struct {
|
var watchTestTable = []struct {
|
||||||
|
@@ -37,7 +37,7 @@ import (
|
|||||||
// body.Namespace, if we want to add that feature, without affecting the
|
// body.Namespace, if we want to add that feature, without affecting the
|
||||||
// meta.Namespace.
|
// meta.Namespace.
|
||||||
type policy struct {
|
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 groups as well as users.
|
||||||
// TODO: add support for robot accounts as well as human user accounts.
|
// TODO: add support for robot accounts as well as human user accounts.
|
||||||
// TODO: decide how to namespace user names when multiple authentication
|
// 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?
|
// the API, we don't have to add lots of policy?
|
||||||
|
|
||||||
// TODO: make this a proper REST object with its own registry.
|
// TODO: make this a proper REST object with its own registry.
|
||||||
Readonly bool `json:"readonly,omitempty" yaml:"readonly,omitempty"`
|
Readonly bool `json:"readonly,omitempty"`
|
||||||
Kind string `json:"kind,omitempty" yaml:"kind,omitempty"`
|
Kind string `json:"kind,omitempty"`
|
||||||
Namespace string `json:"namespace,omitempty" yaml:"namespace,omitempty"`
|
Namespace string `json:"namespace,omitempty"`
|
||||||
|
|
||||||
// TODO: "expires" string in RFC3339 format.
|
// TODO: "expires" string in RFC3339 format.
|
||||||
|
|
||||||
|
@@ -55,8 +55,8 @@ type SimpleMetaFactory struct {
|
|||||||
// encoding of an object, or an error.
|
// encoding of an object, or an error.
|
||||||
func (SimpleMetaFactory) Interpret(data []byte) (version, kind string, err error) {
|
func (SimpleMetaFactory) Interpret(data []byte) (version, kind string, err error) {
|
||||||
findKind := struct {
|
findKind := struct {
|
||||||
APIVersion string `json:"apiVersion,omitempty" yaml:"apiVersion,omitempty"`
|
APIVersion string `json:"apiVersion,omitempty"`
|
||||||
Kind string `json:"kind,omitempty" yaml:"kind,omitempty"`
|
Kind string `json:"kind,omitempty"`
|
||||||
}{}
|
}{}
|
||||||
// yaml is a superset of json, so we use it to decode here. That way,
|
// yaml is a superset of json, so we use it to decode here. That way,
|
||||||
// we understand both.
|
// we understand both.
|
||||||
|
@@ -94,14 +94,14 @@ func TestSimpleMetaFactoryUpdateStruct(t *testing.T) {
|
|||||||
|
|
||||||
func TestMetaValues(t *testing.T) {
|
func TestMetaValues(t *testing.T) {
|
||||||
type InternalSimple struct {
|
type InternalSimple struct {
|
||||||
APIVersion string `json:"apiVersion,omitempty" yaml:"apiVersion,omitempty"`
|
APIVersion string `json:"apiVersion,omitempty"`
|
||||||
Kind string `json:"kind,omitempty" yaml:"kind,omitempty"`
|
Kind string `json:"kind,omitempty"`
|
||||||
TestString string `json:"testString" yaml:"testString"`
|
TestString string `json:"testString"`
|
||||||
}
|
}
|
||||||
type ExternalSimple struct {
|
type ExternalSimple struct {
|
||||||
APIVersion string `json:"apiVersion,omitempty" yaml:"apiVersion,omitempty"`
|
APIVersion string `json:"apiVersion,omitempty"`
|
||||||
Kind string `json:"kind,omitempty" yaml:"kind,omitempty"`
|
Kind string `json:"kind,omitempty"`
|
||||||
TestString string `json:"testString" yaml:"testString"`
|
TestString string `json:"testString"`
|
||||||
}
|
}
|
||||||
s := NewScheme()
|
s := NewScheme()
|
||||||
s.AddKnownTypeWithName("", "Simple", &InternalSimple{})
|
s.AddKnownTypeWithName("", "Simple", &InternalSimple{})
|
||||||
@@ -194,14 +194,14 @@ func TestMetaValues(t *testing.T) {
|
|||||||
|
|
||||||
func TestMetaValuesUnregisteredConvert(t *testing.T) {
|
func TestMetaValuesUnregisteredConvert(t *testing.T) {
|
||||||
type InternalSimple struct {
|
type InternalSimple struct {
|
||||||
Version string `json:"apiVersion,omitempty" yaml:"apiVersion,omitempty"`
|
Version string `json:"apiVersion,omitempty"`
|
||||||
Kind string `json:"kind,omitempty" yaml:"kind,omitempty"`
|
Kind string `json:"kind,omitempty"`
|
||||||
TestString string `json:"testString" yaml:"testString"`
|
TestString string `json:"testString"`
|
||||||
}
|
}
|
||||||
type ExternalSimple struct {
|
type ExternalSimple struct {
|
||||||
Version string `json:"apiVersion,omitempty" yaml:"apiVersion,omitempty"`
|
Version string `json:"apiVersion,omitempty"`
|
||||||
Kind string `json:"kind,omitempty" yaml:"kind,omitempty"`
|
Kind string `json:"kind,omitempty"`
|
||||||
TestString string `json:"testString" yaml:"testString"`
|
TestString string `json:"testString"`
|
||||||
}
|
}
|
||||||
s := NewScheme()
|
s := NewScheme()
|
||||||
s.InternalVersion = ""
|
s.InternalVersion = ""
|
||||||
|
@@ -34,65 +34,65 @@ var fuzzIters = flag.Int("fuzz_iters", 50, "How many fuzzing iterations to do.")
|
|||||||
|
|
||||||
// Test a weird version/kind embedding format.
|
// Test a weird version/kind embedding format.
|
||||||
type MyWeirdCustomEmbeddedVersionKindField struct {
|
type MyWeirdCustomEmbeddedVersionKindField struct {
|
||||||
ID string `yaml:"ID,omitempty" json:"ID,omitempty"`
|
ID string `json:"ID,omitempty"`
|
||||||
APIVersion string `json:"myVersionKey,omitempty" yaml:"myVersionKey,omitempty"`
|
APIVersion string `json:"myVersionKey,omitempty"`
|
||||||
ObjectKind string `json:"myKindKey,omitempty" yaml:"myKindKey,omitempty"`
|
ObjectKind string `json:"myKindKey,omitempty"`
|
||||||
Z string `yaml:"Z,omitempty" json:"Z,omitempty"`
|
Z string `json:"Z,omitempty"`
|
||||||
Y uint64 `yaml:"Y,omitempty" json:"Y,omitempty"`
|
Y uint64 `json:"Y,omitempty"`
|
||||||
}
|
}
|
||||||
|
|
||||||
type TestType1 struct {
|
type TestType1 struct {
|
||||||
MyWeirdCustomEmbeddedVersionKindField `json:",inline" yaml:",inline"`
|
MyWeirdCustomEmbeddedVersionKindField `json:",inline"`
|
||||||
A string `yaml:"A,omitempty" json:"A,omitempty"`
|
A string `json:"A,omitempty"`
|
||||||
B int `yaml:"B,omitempty" json:"B,omitempty"`
|
B int `json:"B,omitempty"`
|
||||||
C int8 `yaml:"C,omitempty" json:"C,omitempty"`
|
C int8 `json:"C,omitempty"`
|
||||||
D int16 `yaml:"D,omitempty" json:"D,omitempty"`
|
D int16 `json:"D,omitempty"`
|
||||||
E int32 `yaml:"E,omitempty" json:"E,omitempty"`
|
E int32 `json:"E,omitempty"`
|
||||||
F int64 `yaml:"F,omitempty" json:"F,omitempty"`
|
F int64 `json:"F,omitempty"`
|
||||||
G uint `yaml:"G,omitempty" json:"G,omitempty"`
|
G uint `json:"G,omitempty"`
|
||||||
H uint8 `yaml:"H,omitempty" json:"H,omitempty"`
|
H uint8 `json:"H,omitempty"`
|
||||||
I uint16 `yaml:"I,omitempty" json:"I,omitempty"`
|
I uint16 `json:"I,omitempty"`
|
||||||
J uint32 `yaml:"J,omitempty" json:"J,omitempty"`
|
J uint32 `json:"J,omitempty"`
|
||||||
K uint64 `yaml:"K,omitempty" json:"K,omitempty"`
|
K uint64 `json:"K,omitempty"`
|
||||||
L bool `yaml:"L,omitempty" json:"L,omitempty"`
|
L bool `json:"L,omitempty"`
|
||||||
M map[string]int `yaml:"M,omitempty" json:"M,omitempty"`
|
M map[string]int `json:"M,omitempty"`
|
||||||
N map[string]TestType2 `yaml:"N,omitempty" json:"N,omitempty"`
|
N map[string]TestType2 `json:"N,omitempty"`
|
||||||
O *TestType2 `yaml:"O,omitempty" json:"O,omitempty"`
|
O *TestType2 `json:"O,omitempty"`
|
||||||
P []TestType2 `yaml:"Q,omitempty" json:"Q,omitempty"`
|
P []TestType2 `json:"Q,omitempty"`
|
||||||
}
|
}
|
||||||
|
|
||||||
type TestType2 struct {
|
type TestType2 struct {
|
||||||
A string `yaml:"A,omitempty" json:"A,omitempty"`
|
A string `json:"A,omitempty"`
|
||||||
B int `yaml:"B,omitempty" json:"B,omitempty"`
|
B int `json:"B,omitempty"`
|
||||||
}
|
}
|
||||||
|
|
||||||
type ExternalTestType2 struct {
|
type ExternalTestType2 struct {
|
||||||
A string `yaml:"A,omitempty" json:"A,omitempty"`
|
A string `json:"A,omitempty"`
|
||||||
B int `yaml:"B,omitempty" json:"B,omitempty"`
|
B int `json:"B,omitempty"`
|
||||||
}
|
}
|
||||||
type ExternalTestType1 struct {
|
type ExternalTestType1 struct {
|
||||||
MyWeirdCustomEmbeddedVersionKindField `json:",inline" yaml:",inline"`
|
MyWeirdCustomEmbeddedVersionKindField `json:",inline"`
|
||||||
A string `yaml:"A,omitempty" json:"A,omitempty"`
|
A string `json:"A,omitempty"`
|
||||||
B int `yaml:"B,omitempty" json:"B,omitempty"`
|
B int `json:"B,omitempty"`
|
||||||
C int8 `yaml:"C,omitempty" json:"C,omitempty"`
|
C int8 `json:"C,omitempty"`
|
||||||
D int16 `yaml:"D,omitempty" json:"D,omitempty"`
|
D int16 `json:"D,omitempty"`
|
||||||
E int32 `yaml:"E,omitempty" json:"E,omitempty"`
|
E int32 `json:"E,omitempty"`
|
||||||
F int64 `yaml:"F,omitempty" json:"F,omitempty"`
|
F int64 `json:"F,omitempty"`
|
||||||
G uint `yaml:"G,omitempty" json:"G,omitempty"`
|
G uint `json:"G,omitempty"`
|
||||||
H uint8 `yaml:"H,omitempty" json:"H,omitempty"`
|
H uint8 `json:"H,omitempty"`
|
||||||
I uint16 `yaml:"I,omitempty" json:"I,omitempty"`
|
I uint16 `json:"I,omitempty"`
|
||||||
J uint32 `yaml:"J,omitempty" json:"J,omitempty"`
|
J uint32 `json:"J,omitempty"`
|
||||||
K uint64 `yaml:"K,omitempty" json:"K,omitempty"`
|
K uint64 `json:"K,omitempty"`
|
||||||
L bool `yaml:"L,omitempty" json:"L,omitempty"`
|
L bool `json:"L,omitempty"`
|
||||||
M map[string]int `yaml:"M,omitempty" json:"M,omitempty"`
|
M map[string]int `json:"M,omitempty"`
|
||||||
N map[string]ExternalTestType2 `yaml:"N,omitempty" json:"N,omitempty"`
|
N map[string]ExternalTestType2 `json:"N,omitempty"`
|
||||||
O *ExternalTestType2 `yaml:"O,omitempty" json:"O,omitempty"`
|
O *ExternalTestType2 `json:"O,omitempty"`
|
||||||
P []ExternalTestType2 `yaml:"Q,omitempty" json:"Q,omitempty"`
|
P []ExternalTestType2 `json:"Q,omitempty"`
|
||||||
}
|
}
|
||||||
|
|
||||||
type ExternalInternalSame struct {
|
type ExternalInternalSame struct {
|
||||||
MyWeirdCustomEmbeddedVersionKindField `json:",inline" yaml:",inline"`
|
MyWeirdCustomEmbeddedVersionKindField `json:",inline"`
|
||||||
A TestType2 `yaml:"A,omitempty" json:"A,omitempty"`
|
A TestType2 `json:"A,omitempty"`
|
||||||
}
|
}
|
||||||
|
|
||||||
// TestObjectFuzzer can randomly populate all the above objects.
|
// 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) {
|
func (testMetaFactory) Interpret(data []byte) (version, kind string, err error) {
|
||||||
findKind := struct {
|
findKind := struct {
|
||||||
APIVersion string `json:"myVersionKey,omitempty" yaml:"myVersionKey,omitempty"`
|
APIVersion string `json:"myVersionKey,omitempty"`
|
||||||
ObjectKind string `json:"myKindKey,omitempty" yaml:"myKindKey,omitempty"`
|
ObjectKind string `json:"myKindKey,omitempty"`
|
||||||
}{}
|
}{}
|
||||||
// yaml is a superset of json, so we use it to decode here. That way,
|
// yaml is a superset of json, so we use it to decode here. That way,
|
||||||
// we understand both.
|
// we understand both.
|
||||||
|
@@ -121,9 +121,9 @@ func TestParseController(t *testing.T) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
type TestParseType struct {
|
type TestParseType struct {
|
||||||
api.TypeMeta `json:",inline" yaml:",inline"`
|
api.TypeMeta `json:",inline"`
|
||||||
api.ObjectMeta `json:"metadata" yaml:"metadata"`
|
api.ObjectMeta `json:"metadata"`
|
||||||
Data string `json:"data" yaml:"data"`
|
Data string `json:"data"`
|
||||||
}
|
}
|
||||||
|
|
||||||
func (*TestParseType) IsAnAPIObject() {}
|
func (*TestParseType) IsAnAPIObject() {}
|
||||||
|
@@ -31,10 +31,10 @@ import (
|
|||||||
|
|
||||||
func TestYAMLPrinterPrint(t *testing.T) {
|
func TestYAMLPrinterPrint(t *testing.T) {
|
||||||
type testStruct struct {
|
type testStruct struct {
|
||||||
Key string `yaml:"Key" json:"Key"`
|
Key string `json:"Key"`
|
||||||
Map map[string]int `yaml:"Map" json:"Map"`
|
Map map[string]int `json:"Map"`
|
||||||
StringList []string `yaml:"StringList" json:"StringList"`
|
StringList []string `json:"StringList"`
|
||||||
IntList []int `yaml:"IntList" json:"IntList"`
|
IntList []int `json:"IntList"`
|
||||||
}
|
}
|
||||||
testData := testStruct{
|
testData := testStruct{
|
||||||
"testValue",
|
"testValue",
|
||||||
|
@@ -33,12 +33,12 @@ import (
|
|||||||
)
|
)
|
||||||
|
|
||||||
type testStruct struct {
|
type testStruct struct {
|
||||||
api.TypeMeta `yaml:",inline" json:",inline"`
|
api.TypeMeta `json:",inline"`
|
||||||
api.ObjectMeta `yaml:"metadata,omitempty" json:"metadata,omitempty"`
|
api.ObjectMeta `json:"metadata,omitempty"`
|
||||||
Key string `yaml:"Key" json:"Key"`
|
Key string `json:"Key"`
|
||||||
Map map[string]int `yaml:"Map" json:"Map"`
|
Map map[string]int `json:"Map"`
|
||||||
StringList []string `yaml:"StringList" json:"StringList"`
|
StringList []string `json:"StringList"`
|
||||||
IntList []int `yaml:"IntList" json:"IntList"`
|
IntList []int `json:"IntList"`
|
||||||
}
|
}
|
||||||
|
|
||||||
func (ts *testStruct) IsAnAPIObject() {}
|
func (ts *testStruct) IsAnAPIObject() {}
|
||||||
|
@@ -28,17 +28,17 @@ var scheme = runtime.NewScheme()
|
|||||||
var Codec = runtime.CodecFor(scheme, "v1test")
|
var Codec = runtime.CodecFor(scheme, "v1test")
|
||||||
|
|
||||||
type EmbeddedTest struct {
|
type EmbeddedTest struct {
|
||||||
runtime.TypeMeta `yaml:",inline" json:",inline"`
|
runtime.TypeMeta `json:",inline"`
|
||||||
ID string `yaml:"id,omitempty" json:"id,omitempty"`
|
ID string `json:"id,omitempty"`
|
||||||
Object runtime.EmbeddedObject `yaml:"object,omitempty" json:"object,omitempty"`
|
Object runtime.EmbeddedObject `json:"object,omitempty"`
|
||||||
EmptyObject runtime.EmbeddedObject `yaml:"emptyObject,omitempty" json:"emptyObject,omitempty"`
|
EmptyObject runtime.EmbeddedObject `json:"emptyObject,omitempty"`
|
||||||
}
|
}
|
||||||
|
|
||||||
type EmbeddedTestExternal struct {
|
type EmbeddedTestExternal struct {
|
||||||
runtime.TypeMeta `yaml:",inline" json:",inline"`
|
runtime.TypeMeta `json:",inline"`
|
||||||
ID string `yaml:"id,omitempty" json:"id,omitempty"`
|
ID string `json:"id,omitempty"`
|
||||||
Object runtime.RawExtension `yaml:"object,omitempty" json:"object,omitempty"`
|
Object runtime.RawExtension `json:"object,omitempty"`
|
||||||
EmptyObject runtime.RawExtension `yaml:"emptyObject,omitempty" json:"emptyObject,omitempty"`
|
EmptyObject runtime.RawExtension `json:"emptyObject,omitempty"`
|
||||||
}
|
}
|
||||||
|
|
||||||
func (*EmbeddedTest) IsAnAPIObject() {}
|
func (*EmbeddedTest) IsAnAPIObject() {}
|
||||||
|
@@ -16,11 +16,7 @@ limitations under the License.
|
|||||||
|
|
||||||
package runtime
|
package runtime
|
||||||
|
|
||||||
import (
|
import "errors"
|
||||||
"errors"
|
|
||||||
|
|
||||||
"github.com/ghodss/yaml"
|
|
||||||
)
|
|
||||||
|
|
||||||
func (re *RawExtension) UnmarshalJSON(in []byte) error {
|
func (re *RawExtension) UnmarshalJSON(in []byte) error {
|
||||||
if re == nil {
|
if re == nil {
|
||||||
@@ -33,28 +29,3 @@ func (re *RawExtension) UnmarshalJSON(in []byte) error {
|
|||||||
func (re *RawExtension) MarshalJSON() ([]byte, error) {
|
func (re *RawExtension) MarshalJSON() ([]byte, error) {
|
||||||
return re.RawJSON, nil
|
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
|
|
||||||
}
|
|
||||||
|
@@ -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.
|
// emptyPlugin is used to copy the Kind field to and from plugin objects.
|
||||||
type emptyPlugin struct {
|
type emptyPlugin struct {
|
||||||
PluginBase `json:",inline" yaml:",inline"`
|
PluginBase `json:",inline"`
|
||||||
}
|
}
|
||||||
|
|
||||||
// embeddedObjectToRawExtension does the conversion you would expect from the name, using the information
|
// embeddedObjectToRawExtension does the conversion you would expect from the name, using the information
|
||||||
|
@@ -25,18 +25,18 @@ import (
|
|||||||
)
|
)
|
||||||
|
|
||||||
type TypeMeta struct {
|
type TypeMeta struct {
|
||||||
Kind string `json:"kind,omitempty" yaml:"kind,omitempty"`
|
Kind string `json:"kind,omitempty"`
|
||||||
APIVersion string `json:"apiVersion,omitempty" yaml:"apiVersion,omitempty"`
|
APIVersion string `json:"apiVersion,omitempty"`
|
||||||
}
|
}
|
||||||
|
|
||||||
type InternalSimple struct {
|
type InternalSimple struct {
|
||||||
TypeMeta `json:",inline" yaml:",inline"`
|
TypeMeta `json:",inline"`
|
||||||
TestString string `json:"testString" yaml:"testString"`
|
TestString string `json:"testString"`
|
||||||
}
|
}
|
||||||
|
|
||||||
type ExternalSimple struct {
|
type ExternalSimple struct {
|
||||||
TypeMeta `json:",inline" yaml:",inline"`
|
TypeMeta `json:",inline"`
|
||||||
TestString string `json:"testString" yaml:"testString"`
|
TestString string `json:"testString"`
|
||||||
}
|
}
|
||||||
|
|
||||||
func (*InternalSimple) IsAnAPIObject() {}
|
func (*InternalSimple) IsAnAPIObject() {}
|
||||||
@@ -157,23 +157,23 @@ func TestBadJSONRejection(t *testing.T) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
type ExtensionA struct {
|
type ExtensionA struct {
|
||||||
runtime.PluginBase `json:",inline" yaml:",inline"`
|
runtime.PluginBase `json:",inline"`
|
||||||
TestString string `json:"testString" yaml:"testString"`
|
TestString string `json:"testString"`
|
||||||
}
|
}
|
||||||
|
|
||||||
type ExtensionB struct {
|
type ExtensionB struct {
|
||||||
runtime.PluginBase `json:",inline" yaml:",inline"`
|
runtime.PluginBase `json:",inline"`
|
||||||
TestString string `json:"testString" yaml:"testString"`
|
TestString string `json:"testString"`
|
||||||
}
|
}
|
||||||
|
|
||||||
type ExternalExtensionType struct {
|
type ExternalExtensionType struct {
|
||||||
TypeMeta `json:",inline" yaml:",inline"`
|
TypeMeta `json:",inline"`
|
||||||
Extension runtime.RawExtension `json:"extension" yaml:"extension"`
|
Extension runtime.RawExtension `json:"extension"`
|
||||||
}
|
}
|
||||||
|
|
||||||
type InternalExtensionType struct {
|
type InternalExtensionType struct {
|
||||||
TypeMeta `json:",inline" yaml:",inline"`
|
TypeMeta `json:",inline"`
|
||||||
Extension runtime.EmbeddedObject `json:"extension" yaml:"extension"`
|
Extension runtime.EmbeddedObject `json:"extension"`
|
||||||
}
|
}
|
||||||
|
|
||||||
func (*ExtensionA) IsAnAPIObject() {}
|
func (*ExtensionA) IsAnAPIObject() {}
|
||||||
|
@@ -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,
|
// TypeMeta is shared by all top level objects. The proper way to use it is to inline it in your type,
|
||||||
// like this:
|
// like this:
|
||||||
// type MyAwesomeAPIObject struct {
|
// type MyAwesomeAPIObject struct {
|
||||||
// runtime.TypeMeta `yaml:",inline" json:",inline"`
|
// runtime.TypeMeta `json:",inline"`
|
||||||
// ... // other fields
|
// ... // other fields
|
||||||
// }
|
// }
|
||||||
// func (*MyAwesomeAPIObject) IsAnAPIObject() {}
|
// func (*MyAwesomeAPIObject) IsAnAPIObject() {}
|
||||||
@@ -35,21 +35,21 @@ import (
|
|||||||
// your own with the same fields.
|
// your own with the same fields.
|
||||||
//
|
//
|
||||||
type TypeMeta struct {
|
type TypeMeta struct {
|
||||||
APIVersion string `json:"apiVersion,omitempty" yaml:"apiVersion,omitempty"`
|
APIVersion string `json:"apiVersion,omitempty"`
|
||||||
Kind string `json:"kind,omitempty" yaml:"kind,omitempty"`
|
Kind string `json:"kind,omitempty"`
|
||||||
|
|
||||||
Namespace string `json:"namespace,omitempty" yaml:"namespace,omitempty"`
|
Namespace string `json:"namespace,omitempty"`
|
||||||
Name string `json:"name,omitempty" yaml:"name,omitempty"`
|
Name string `json:"name,omitempty"`
|
||||||
UID string `json:"uid,omitempty" yaml:"uid,omitempty"`
|
UID string `json:"uid,omitempty"`
|
||||||
CreationTimestamp util.Time `json:"creationTimestamp,omitempty" yaml:"creationTimestamp,omitempty"`
|
CreationTimestamp util.Time `json:"creationTimestamp,omitempty"`
|
||||||
SelfLink string `json:"selfLink,omitempty" yaml:"selfLink,omitempty"`
|
SelfLink string `json:"selfLink,omitempty"`
|
||||||
ResourceVersion string `json:"resourceVersion,omitempty" yaml:"resourceVersion,omitempty"`
|
ResourceVersion string `json:"resourceVersion,omitempty"`
|
||||||
}
|
}
|
||||||
|
|
||||||
// PluginBase is like TypeMeta, but it's intended for plugin objects that won't ever be encoded
|
// PluginBase is like TypeMeta, but it's intended for plugin objects that won't ever be encoded
|
||||||
// except while embedded in other objects.
|
// except while embedded in other objects.
|
||||||
type PluginBase struct {
|
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
|
// EmbeddedObject has appropriate encoder and decoder functions, such that on the wire, it's
|
||||||
@@ -74,22 +74,22 @@ type EmbeddedObject struct {
|
|||||||
//
|
//
|
||||||
// // Internal package:
|
// // Internal package:
|
||||||
// type MyAPIObject struct {
|
// type MyAPIObject struct {
|
||||||
// runtime.TypeMeta `yaml:",inline" json:",inline"`
|
// runtime.TypeMeta `json:",inline"`
|
||||||
// MyPlugin runtime.EmbeddedObject `json:"myPlugin" yaml:"myPlugin"`
|
// MyPlugin runtime.EmbeddedObject `json:"myPlugin"`
|
||||||
// }
|
// }
|
||||||
// type PluginA struct {
|
// type PluginA struct {
|
||||||
// runtime.PluginBase `yaml:",inline" json:",inline"`
|
// runtime.PluginBase `json:",inline"`
|
||||||
// AOption string `yaml:"aOption" json:"aOption"`
|
// AOption string `json:"aOption"`
|
||||||
// }
|
// }
|
||||||
//
|
//
|
||||||
// // External package:
|
// // External package:
|
||||||
// type MyAPIObject struct {
|
// type MyAPIObject struct {
|
||||||
// runtime.TypeMeta `yaml:",inline" json:",inline"`
|
// runtime.TypeMeta `json:",inline"`
|
||||||
// MyPlugin runtime.RawExtension `json:"myPlugin" yaml:"myPlugin"`
|
// MyPlugin runtime.RawExtension `json:"myPlugin"`
|
||||||
// }
|
// }
|
||||||
// type PluginA struct {
|
// type PluginA struct {
|
||||||
// runtime.PluginBase `yaml:",inline" json:",inline"`
|
// runtime.PluginBase `json:",inline"`
|
||||||
// AOption string `yaml:"aOption" json:"aOption"`
|
// AOption string `json:"aOption"`
|
||||||
// }
|
// }
|
||||||
//
|
//
|
||||||
// // On the wire, the JSON will look something like this:
|
// // On the wire, the JSON will look something like this:
|
||||||
@@ -118,7 +118,7 @@ type RawExtension struct {
|
|||||||
// TypeMeta features-- kind, version, resourceVersion, etc.
|
// TypeMeta features-- kind, version, resourceVersion, etc.
|
||||||
// TODO: Not implemented yet!
|
// TODO: Not implemented yet!
|
||||||
type Unknown struct {
|
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
|
// 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
|
// with a registered type. Most likely, nothing should be done with this
|
||||||
// except for passing it through the system.
|
// except for passing it through the system.
|
||||||
|
@@ -36,9 +36,9 @@ type fakeClientGetSet struct {
|
|||||||
}
|
}
|
||||||
|
|
||||||
type TestResource struct {
|
type TestResource struct {
|
||||||
api.TypeMeta `json:",inline" yaml:",inline"`
|
api.TypeMeta `json:",inline"`
|
||||||
api.ObjectMeta `json:"metadata" yaml:"metadata"`
|
api.ObjectMeta `json:"metadata"`
|
||||||
Value int `json:"value" yaml:"value,omitempty"`
|
Value int `json:"value"`
|
||||||
}
|
}
|
||||||
|
|
||||||
func (*TestResource) IsAnAPIObject() {}
|
func (*TestResource) IsAnAPIObject() {}
|
||||||
|
@@ -79,35 +79,3 @@ func (t Time) MarshalJSON() ([]byte, error) {
|
|||||||
|
|
||||||
return json.Marshal(t.Format(time.RFC3339))
|
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
|
|
||||||
}
|
|
||||||
|
@@ -26,7 +26,7 @@ import (
|
|||||||
)
|
)
|
||||||
|
|
||||||
type TimeHolder struct {
|
type TimeHolder struct {
|
||||||
T Time `json:"t" yaml:"t"`
|
T Time `json:"t"`
|
||||||
}
|
}
|
||||||
|
|
||||||
func TestTimeMarshalYAML(t *testing.T) {
|
func TestTimeMarshalYAML(t *testing.T) {
|
||||||
|
@@ -88,34 +88,6 @@ func NewIntOrStringFromString(val string) IntOrString {
|
|||||||
return IntOrString{Kind: IntstrString, StrVal: val}
|
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.
|
// UnmarshalJSON implements the json.Unmarshaller interface.
|
||||||
func (intstr *IntOrString) UnmarshalJSON(value []byte) error {
|
func (intstr *IntOrString) UnmarshalJSON(value []byte) error {
|
||||||
if value[0] == '"' {
|
if value[0] == '"' {
|
||||||
|
@@ -54,7 +54,7 @@ func TestNewIntOrStringFromString(t *testing.T) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
type IntOrStringHolder struct {
|
type IntOrStringHolder struct {
|
||||||
IOrS IntOrString `json:"val" yaml:"val"`
|
IOrS IntOrString `json:"val"`
|
||||||
}
|
}
|
||||||
|
|
||||||
func TestIntOrStringUnmarshalYAML(t *testing.T) {
|
func TestIntOrStringUnmarshalYAML(t *testing.T) {
|
||||||
|
@@ -20,11 +20,11 @@ package version
|
|||||||
// TODO: Add []string of api versions supported? It's still unclear
|
// TODO: Add []string of api versions supported? It's still unclear
|
||||||
// how we'll want to distribute that information.
|
// how we'll want to distribute that information.
|
||||||
type Info struct {
|
type Info struct {
|
||||||
Major string `json:"major" yaml:"major"`
|
Major string `json:"major"`
|
||||||
Minor string `json:"minor" yaml:"minor"`
|
Minor string `json:"minor"`
|
||||||
GitVersion string `json:"gitVersion" yaml:"gitVersion"`
|
GitVersion string `json:"gitVersion"`
|
||||||
GitCommit string `json:"gitCommit" yaml:"gitCommit"`
|
GitCommit string `json:"gitCommit"`
|
||||||
GitTreeState string `json:"gitTreeState" yaml:"gitTreeState"`
|
GitTreeState string `json:"gitTreeState"`
|
||||||
}
|
}
|
||||||
|
|
||||||
// Get returns the overall codebase version. It's for detecting
|
// Get returns the overall codebase version. It's for detecting
|
||||||
|
@@ -29,12 +29,12 @@ import (
|
|||||||
// These are not API objects and are unversioned today.
|
// These are not API objects and are unversioned today.
|
||||||
type watchEvent struct {
|
type watchEvent struct {
|
||||||
// The type of the watch event; added, modified, or deleted.
|
// 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,
|
// 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.
|
// it's the state of the object immediately prior to its deletion.
|
||||||
// For errors, it's an api.Status.
|
// 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
|
// Object converts a watch.Event into an appropriately serializable JSON object
|
||||||
|
Reference in New Issue
Block a user