cloudfoundry / cloudfoundry/cf-java-client

DefaultServices.updateInstance() rejects plan updates despites plan is updateable.

Ouverte
#1,044 1 commentaire 0 réactions 0 personnes assignées Voir sur GitHub

Personne n'a encore pris cette issue.

bug client triaged
Langage dominant
Java
Étoiles
334
Forks
319
Métriques de merge des PR
Aucune PR mergée en 30 j

Description

The OSB API states regarding a service offering metadata that its updateable flag can be overriden in plans.

https://github.com/openservicebrokerapi/servicebroker/blob/master/spec.md#service-offering-object

Response Field Type Description
[...]
plan_updateable boolean Whether the Service Offering supports upgrade/downgrade for Service Plans by default. Service Plans can override this field (see Service Plan). Please note that the misspelling of the attribute plan_updatable as plan_updateable was done by mistake. We have opted to keep that misspelling instead of fixing it and thus breaking backward compatibility. Defaults to false.

https://github.com/openservicebrokerapi/servicebroker/blob/master/spec.md#service-plan-object

Response Field Type Description
[...]
plan_updateable boolean Whether the Plan supports upgrade/downgrade/sidegrade to another version. This field is OPTIONAL. If specificed, this takes precedence over the Service Offering's plan_updateable field. If not specified, the default is derived from the Service Offering. Please note that the attribute is intentionally misspelled as plan_updateable for legacy reasons.

Unfortunately the CC API reuses the two fields, but isn't precise enough to state that plan.updateable override serviceoffering.plan_updateable

https://apidocs.cloudfoundry.org/12.42.0/services/retrieve_a_particular_service.html

Name Description Default Valid Values Example Values
plan_updateable A boolean describing that an instance of this service can be updated to a different plan false    

https://apidocs.cloudfoundry.org/12.42.0/service_plans/retrieve_a_particular_service_plan.html

"plan_updateable": true,

As a result, cf-java-client refuses service instance updates unless the service definition is updateable, regardless than the service plan is updateable.

https://github.com/cloudfoundry/cf-java-client/blob/8ec06b4cdd61dda0f0ba5e4d546651b880735faa/cloudfoundry-operations/src/main/java/org/cloudfoundry/operations/services/DefaultServices.java#L515-L517

Given that CloudFoundry itself likely performs the checks, is there any reason to also perform the check client-side ?

If there is a good reason, then the logic should be fixed to only reject when both serviceplan.plan_updateable=false and servicedefinition.plan_updateable=false

Guide de contribution

Aucun guide de contribution indexé pour ce dépôt

Par où commencer

  1. Lisez l'issue en entier, puis le guide de contribution du projet.
  2. Signalez en commentaire que vous la prenez — cela évite que deux personnes fassent le même travail.
  3. Forkez le dépôt et travaillez sur une branche.
  4. Ouvrez une pull request qui référence le numéro de l'issue.

Piste de recherche

Commencez à cloudfoundry-operations/src/main/java/org/cloudfoundry/operations/services/DefaultServices.java, aux lignes 515-517, et comparez les champs d’actualisabilité de la définition du service et du plan de service avec les définitions OSB et Cloud Foundry API liées. Examinez le flux existant de mise à jour des instances de service et ses tests, s’ils existent. Le travail est terminé lorsque les mises à jour de plan valides ne sont plus rejetées uniquement parce que la définition du service n’est pas actualisable.

Rédigé par le modèle d'indexation à partir du texte de l'issue.

Évaluation

Stack technique
java
Domaine
api
Type d'issue
Bug
Difficulté
3/5
Temps estimé
1-2 jours
Activité
À l'abandon
Clarté
Clairement spécifiée
Accessibilité débutants
45/100

Recevez les nouvelles issues par e-mail

Un résumé court des issues GitHub adaptées aux débutants.