Closed williammartin closed 5 years ago
I think this proposal makes more sense than #628 as it is more generic. But if we only include a version
field, why don't we make it at the root of the plan? This information is also helpful outside the maintenance use case.
I don't see any additional value of adding the maintenance_info
field without also adding the JSON object details
.
Thanks for your thoughts. I think this is captured in:
I feel like the first point is uncontroversial, and the second is where there is some disagreement about whether an arbitrary data structure is required, or whether a string could suffice. In either case, we should have a structure we can extend to capture this.
We believe there will be something there, we just need to figure out what that will look like. Is there some way for me to make this clearer? What other use case are you thinking for the version field other than maintenance?
I think it's helpful to provide the current version of a certain service. This could also be saved to be able to compare it with new versions (as per your description above). If I'm not missing anything there is currently no way to provide that except adding it into the description or as metadata.
The expectation is that the platform stores the maintenance_info
for comparison, so in that way I think it already satisfies your request.
If maintenance can be triggered through the dashboard, the mainenance_info
held by the platform can go out of sync. It might make sense to provide the current version of a service instance also through the fetch endpoint.
Is this a use case we actually want to support? Since maintenance_info
is a new concept, I guess we could also include a updates to a service instance that change the
maintenance_infoMUST only be triggered via the platform
.
I can't say I have enough experience or knowledge of breadth of brokers to understand if this is something service providers want.
With your suggestion, I'm guessing you think that if a user triggers maintenance via a platform, the platform should fetch first to see that maintenance really should happen, and then report back to a user that maintenance wasn't actually required after all?
Closing this as #642 has been merged
Given some disagreement on https://github.com/openservicebrokerapi/servicebroker/pull/628 about the need for arbitrary data to describe the changes in some particular maintenance, I'd like to propose we tackle this problem in two steps.
What are the problem statements?
What is required to support this?
What changes are proposed to the spec?
Since there is already a way to update a service instance via a
PATCH
:I feel like the first point is uncontroversial, and the second is where there is some disagreement about whether an arbitrary data structure is required, or whether a string could suffice. In either case, we should have a structure we can extend to capture this:
This should provide sufficient information for the Platform to determine (and provide this information to an Application Developer/Platform Operator), and trigger (as instructed by an Application Developer/Platform Operator) maintenance.
I can open a separate PR to deal with point 2, but the summary can be found below.
Why should there be an indication of what is available in an update?
One of our customers strongly desires the ability to show details of specific changes in a service, for example, changes in middleware. One way we could solve this is to have a
details
string as an absolute representation about what is contained in this version:Which, if the platform compared to a previously stored version might produce an experience like:
So why might this not be sufficient or unpleasant?
details
field cannot be written as a description of changes, only as an absolute statement of what is contained in a version.What could we do instead?
We could add a
details
object (for arbitrary keys to values) to themaintenance_info
:The platform could then compare changes between stored
details
and those in the catalog if aversion
change has happened:If we provide
details
as a structure, isn't that hash sufficient to determine that an update is available, why provide a version string?Yes, it is sufficient. A version string may be beneficial or a hinderance to authors, or it may simply allow us to progress.