-
Notifications
You must be signed in to change notification settings - Fork 60
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Create service provider defined QoS Profile #138
Conversation
@eric-murray I think that I've incorporated your feedback into the PR. But there's a decent chance that I missed something. Thanks! |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Thanks for the PR. Some initial comments from a first review
code/API_definitions/qod-api.yaml
Outdated
@@ -279,7 +426,9 @@ components: | |||
applicationServerPorts: | |||
$ref: "#/components/schemas/PortsSpec" | |||
qosProfile: | |||
$ref: "#/components/schemas/QosProfile" | |||
oneOf: |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
We should consolidate both within the same model. Legacy qosProfile
values should correspond also to some profiles returned with the new model, so they should have an Id as well. We may think of defining per profile both an Id (UUID-like) and some short of alias-name, such as previous ones (QOS_L, QOS_E, etc), and allow to use any of them
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
In general, we should still retain the option of using a qosProfile
without doing a GET of available qosProfiles
. As we know, a qosProfile
string's associated SLAs are agreed outside of the scope of this spec. If an user deciding on using a profile, they know what they are getting. In this case, the mandatory GET option needed to get an id
seems unnecessary to me.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
@jlurien
I assume the intention is to drop this support for the "legacy" QoS profiles at some stage, so QosProfile
would be deleted and qosProfile
would then be of type QoSProfileId
only. If that is the intention, then we should keep the restriction that QoSProfileId
be a uuid (I agree with your comment below) and live with this workaround until it is agreed that the current QoS profiles are no longer useful.
If that is not the intention, and the legacy profiles must always be supported, then simply redefining QoSProfileId
to have minLength: 5
would achieve that, albeit at the cost of more complex validation.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
@RandyLevensalor @eric-murray @jlurien @hdamker @emil-cheung @ToshiWakayama-KDDI @patrice-conil
I guess we as a community should make a decision now on how to proceed with legacy qosProfile
. I made a comment here regarding this. I believe we should be able to combine both legacy and extended qos profiles now as the api is not stable yet.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
To me the proposal by @sfnuser makes sense. I don't see why the current predefined qosProfiles should be treated differently once we have the new discovery functionality in place.
We should also decide if API spec enforce some predefined QoS Profile to be offered by all implementations, and what is the best unique identifier for a profile, a UUID or some more friendly label such as current QOS_X. Problem with UUID is that they are not friendly for predefined profiles.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
To me the proposal by @sfnuser makes sense. I don't see why the current predefined qosProfiles should be treated differently once we have the new discovery functionality in place.
I can see going down this path of not using a UUID for the QoS profiles and instead use a name as the id. We can define this name to be a unique string that matches this regex ^[a-zA-Z0-9_]+$
The length of the name can be from 1 to 128 characters?
With this, the name would replace the ID as the unique identifier.
I'd also like to add an optional displayName
attribute as a string that could be easier to read, and can contain spaces and other special characters. This would replace the current name attribute and would not be unique.
Since the QOS_S etc. can be a part of this, I think that all of the other attributes would become optional without default values. This is due to the fact that QOS_S etc. can be defined by only using the name field.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
One more note. Using a name with some constraints is consistent with the way amazon implemented their EC2 instance types. EC2 instance sizing is a rough analogy for the QoSProfiles. https://aws.amazon.com/ec2/instance-types. So this pattern should be familiar to many application developers.
code/API_definitions/qod-api.yaml
Outdated
format: string | ||
status: | ||
$ref: "#/components/schemas/QosProfileStatusEnum" | ||
description: The status of the profile. See QosProfileStatusEnum for description. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
In general it is safer to move description to referenced Schema when possible. According to spec any sibling elements of a $ref are ignored, although some visualizers allow them. In cases where a schema is reused by several properties but description is different in each property, we may "take the risk"
code/API_definitions/qod-api.yaml
Outdated
@@ -279,7 +426,9 @@ components: | |||
applicationServerPorts: | |||
$ref: "#/components/schemas/PortsSpec" | |||
qosProfile: | |||
$ref: "#/components/schemas/QosProfile" | |||
oneOf: |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
In general, we should still retain the option of using a qosProfile
without doing a GET of available qosProfiles
. As we know, a qosProfile
string's associated SLAs are agreed outside of the scope of this spec. If an user deciding on using a profile, they know what they are getting. In this case, the mandatory GET option needed to get an id
seems unnecessary to me.
code/API_definitions/qod-api.yaml
Outdated
@@ -279,7 +426,9 @@ components: | |||
applicationServerPorts: | |||
$ref: "#/components/schemas/PortsSpec" | |||
qosProfile: | |||
$ref: "#/components/schemas/QosProfile" | |||
oneOf: |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
@RandyLevensalor @eric-murray @jlurien @hdamker @emil-cheung @ToshiWakayama-KDDI @patrice-conil
I guess we as a community should make a decision now on how to proceed with legacy qosProfile
. I made a comment here regarding this. I believe we should be able to combine both legacy and extended qos profiles now as the api is not stable yet.
@RandyLevensalor Could you make a list of the topics we need to discuss tomorrow in our call - best with the options we have? (and try to resolve the others before the call, just if possible) |
@hdamker I'll get the updated PR posted this evening. @eric-murray thanks for all of your comments and feedback. I'm working on incorporating it. |
Open items to discuss:
|
@RandyLevensalor thanks for the summary of open issues
No, see #144 (but we might want to keep the mapping table seperat). |
These revised description address feedback in the PR and from the sub-project meeting.
Co-authored-by: Jose Luis Urien <[email protected]>
As discussed: @sfnuser @eric-murray @jlurien please do the final check (and) if possible approval until June 6th. Feel free to create issues for later improvements of the descriptions - the goal is to get the PR merged if possible asap. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Thanks @RandyLevensalor for driving this to conclusion.
@hdamker @RandyLevensalor |
@eric-murray I've rebased the branch. Surprisingly enough, there were no conflicts and I didn't see any regressions. Though an additional set of eyes on this will make me feel better. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Thanks @RandyLevensalor
I'm happy with the structure, so am approving. Parameter descriptions can be reviewed as part of the ongoing API documentation effort!
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Some final suggestions and I give the approval in advance. We can refine parameters and descriptions in subsequent iterations.
Also "pathfile.diff" file should not be part of the PR
Co-authored-by: Jose Luis Urien <[email protected]>
b7826e1
Co-authored-by: Jose Luis Urien <[email protected]>
Co-authored-by: Jose Luis Urien <[email protected]>
Co-authored-by: Jose Luis Urien <[email protected]>
Co-authored-by: Jose Luis Urien <[email protected]>
@jlurien Thanks for the additional suggestions. I've merged them into the PR. |
LGTM - thanks @sfnuser @jlurien @eric-murray for the detailed reviews and your approvals. I will try to delete the patchfile.diff and merge. |
Implememnted issue #125