<html>
<head>
<meta content="text/html; charset=ISO-8859-1"
http-equiv="Content-Type">
</head>
<body bgcolor="#FFFFFF" text="#000000">
<div class="moz-cite-prefix">On 2014年02月28日 13:40, Chris Friesen
wrote:<br>
</div>
<blockquote cite="mid:5310215E.4010304@windriver.com" type="cite">On
02/27/2014 06:00 PM, Alex Xu wrote:
<br>
<br>
<blockquote type="cite">Does mean our code looks like as below?
<br>
if client_version > 2:
<br>
....
<br>
elif client_version > 3
<br>
...
<br>
elif client_version > 4:
<br>
...
<br>
elif client_version > 5:
<br>
...
<br>
elif client_version > 6:
<br>
..
<br>
<br>
And we need test each version... That looks bad...
<br>
</blockquote>
<br>
I don't think the code would look like that
<br>
<br>
Each part of the API could look at the version separately. And
each part of the API only needs to check the client version if it
has made a backwards-incompatible change.
<br>
<br>
So a part of the API that only made one backwards-incompatible
change at version 3 would only need one check.
<br>
<br>
if client_version >= 3
<br>
do_newer_something()
<br>
else
<br>
do_something()
<br>
<br>
<br>
<br>
Maybe some other part of the API made a change at v6 (assuming
global versioning). That part of the API would also only need one
check.
<br>
<br>
<br>
if client version >= 6
<br>
do_newer_something()
<br>
else
<br>
do_something()
<br>
<br>
</blockquote>
<br>
Yes, I know it. But it still looks bad :(<br>
<br>
In api code, it will be looks like as below:<br>
<br>
def do_something(self, body):<br>
if client_version == 2:<br>
args = body['SomeArguments']<br>
elif client_version == 3:<br>
args = body['some_arguments']<br>
<br>
try:<br>
ret = self.compute_api.do_something(args)<br>
except exception.SomeException:<br>
if client_version == 2:<br>
raise exception.HTTPBadRequest()<br>
elif client_version == 4:<br>
raise exception.HTTPConflictRequest()<br>
<br>
if client_version == 2:<br>
return {'some_arguments':
<meta http-equiv="content-type" content="text/html;
charset=ISO-8859-1">
ret}<br>
elif client_version == 3:<br>
return {'SomeArguments': ret}<br>
<br>
<blockquote cite="mid:5310215E.4010304@windriver.com" type="cite">
<br>
Chris
<br>
<br>
<br>
_______________________________________________
<br>
OpenStack-dev mailing list
<br>
<a class="moz-txt-link-abbreviated" href="mailto:OpenStack-dev@lists.openstack.org">OpenStack-dev@lists.openstack.org</a>
<br>
<a class="moz-txt-link-freetext" href="http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev">http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev</a>
<br>
<br>
<br>
<br>
</blockquote>
<br>
</body>
</html>