/ tipo de error
/ sig api-maquinaria
@ kubernetes / sig-api-machinery-bugs
Que paso :
Mi tipo de recurso personalizado tiene un campo de estado. He generado un cliente para ello usando genclient.
Aquí está la definición de mi tipo de CRD:
// +genclient
// +k8s:openapi-gen=true
// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
type Recovery struct {
metav1.TypeMeta `json:",inline,omitempty"`
metav1.ObjectMeta `json:"metadata,omitempty"`
Spec RecoverySpec `json:"spec,omitempty"`
Status RecoveryStatus `json:"status,omitempty"`
}
La función UpdateStatus () generada:
// UpdateStatus was generated because the type contains a Status member.
// Add a +genclient:noStatus comment above the type to avoid generating UpdateStatus().
func (c *recoveries) UpdateStatus(recovery *v1alpha1.Recovery) (result *v1alpha1.Recovery, err error) {
result = &v1alpha1.Recovery{}
err = c.client.Put().
Namespace(c.ns).
Resource("recoveries").
Name(recovery.Name).
SubResource("status").
Body(recovery).
Do().
Into(result)
return
}
Ahora, cuando llamo a UpdateStatus () para un objeto de recuperación (stash-mduabx), aparece el siguiente error:
the server could not find the requested resource (put recoveries.stash.appscode.com stash-mduabx)
Y el registro de llamada api:
PUT https://192.168.99.100:8443/apis/stash.appscode.com/v1alpha1/namespaces/test-stash/recoveries/stash-mduabx/status 404 Not Found in 11 milliseconds
Qué esperabas que sucediera :
Debería actualizar el campo de estado.
Cómo reproducirlo :
Defina un tipo de CRD con campo de estado y genere un cliente para él usando genclient. Crea un objeto de ese tipo usando kubectl. Ahora obtenga el objeto del programa go y llame a UpdateStatus () para el objeto.
Medio ambiente :
El cliente genera un método de estado porque hay un campo de estado, pero eso no significa que el servidor tenga soporte para ese método.
https://github.com/kubernetes/community/pull/913 es una propuesta para agregar soporte de servidor para subrecursos de estado para objetos CRD.
Comentario más útil
El cliente genera un método de estado porque hay un campo de estado, pero eso no significa que el servidor tenga soporte para ese método.
https://github.com/kubernetes/community/pull/913 es una propuesta para agregar soporte de servidor para subrecursos de estado para objetos CRD.