Kubernetes: UpdateStatus() pour les ressources personnalisées ne fonctionne pas

Créé le 27 oct. 2017  ·  1Commentaire  ·  Source: kubernetes/kubernetes

/genre bogue
/sig api-machines
@kubernetes/sig-api-machinery-bugs

Que s'est-il passé :
Mon type de ressource personnalisé a un champ de statut. J'ai généré un client pour cela en utilisant genclient.
Voici la définition de mon type 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 fonction UpdateStatus() générée :

// 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
}

Maintenant, lorsque j'appelle UpdateStatus() pour un objet de récupération (stash-mduabx), l'erreur suivante est générée :

the server could not find the requested resource (put recoveries.stash.appscode.com stash-mduabx)

Et le journal de l'appel 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

Ce à quoi vous vous attendiez :
Il devrait mettre à jour le champ d'état.

Comment le reproduire :
Définissez un type CRD avec un champ de statut et générez un client pour celui-ci à l'aide de genclient. Créez un objet de ce type à l'aide de kubectl. Maintenant, récupérez l'objet du programme go et appelez UpdateStatus() pour l'objet.

Environnement :

  • Version Kubernetes : 1.7.5
arecustom-resources kinbug siapi-machinery

Commentaire le plus utile

Le client génère une méthode d'état car il existe un champ d'état, mais cela ne signifie pas que le serveur prend en charge cette méthode.

https://github.com/kubernetes/community/pull/913 est une proposition visant à ajouter la prise en charge du serveur pour les sous-ressources d'état pour les objets CRD.

>Tous les commentaires

Le client génère une méthode d'état car il existe un champ d'état, mais cela ne signifie pas que le serveur prend en charge cette méthode.

https://github.com/kubernetes/community/pull/913 est une proposition visant à ajouter la prise en charge du serveur pour les sous-ressources d'état pour les objets CRD.

Cette page vous a été utile?
0 / 5 - 0 notes