/ tipo bug
/ sig api-maquinários
@ kubernetes / sig-api-machines-bugs
O que aconteceu :
Meu tipo de recurso personalizado possui um campo de status. Eu gerei um cliente para ele usando o genclient.
Aqui está a definição do meu 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"`
}
A função UpdateStatus () gerada:
// 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
}
Agora, quando chamo UpdateStatus () para um objeto Recovery (stash-mduabx), ocorre o seguinte erro:
the server could not find the requested resource (put recoveries.stash.appscode.com stash-mduabx)
E o log da chamada da 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
O que você esperava que acontecesse :
Deve atualizar o campo de status.
Como reproduzi-lo :
Defina um tipo de CRD com o campo de status e gere o cliente para ele usando o genclient. Crie um objeto desse tipo usando kubectl. Agora pegue o objeto do programa go e chame UpdateStatus () para o objeto.
Meio Ambiente :
O cliente gera um método de status porque existe um campo de status, mas isso não significa que o servidor tenha suporte para esse método.
https://github.com/kubernetes/community/pull/913 é uma proposta para adicionar suporte de servidor para sub-recursos de status para objetos CRD.
Comentários muito úteis
O cliente gera um método de status porque existe um campo de status, mas isso não significa que o servidor tenha suporte para esse método.
https://github.com/kubernetes/community/pull/913 é uma proposta para adicionar suporte de servidor para sub-recursos de status para objetos CRD.