Clay Baenziger wrote: > I changed it as SUNWpython-lxml appears available, and looked to be the > convention used by CherryPy, which I had not realized when we discussed > Do you have a package SUNWpython-lxml? How do we get the package? > it earlier. > Thank you, > Clay > > On Wed, 15 Oct 2008, Sundar Yamunachari wrote: > > >> Clay Baenziger wrote: >> >>> Hi Sundar, >>> To allow delivery and merge with your changes from Monday in >>> installadm, I've pulled it out of this delivery. >>> >> Do you have a bug filed for installadm integration? >> You didn't answer this question. You removed the installadm integration changes. We need it make the installadm work. When will it be done? Is there a bug filed to track the installadm changes?
Thanks, Sundar >>> Looking at setup-service.sh I see on line 46 the path being >>> /usr/sbin/installadm/webserver (no .py) >>> I've got in the depend file the following additions: >>> P SUNWsqlite3 SQLite3 >>> P SUNWpython-cherrypy >>> P SUNWpython-lxml >>> >> Is it supposed to SUNWlxml-cython? or you have changed it to >> SUNWpython-lxml? >> >> Thanks, >> Sundar >> >>> If you would like to see more see the webrev at >>> http://cr.opensolaris.org/~clayb/AI_server/webrev_final_rc2/. >>> >>> Thank you, >>> Clay >>> >>> On Wed, 15 Oct 2008, Sundar Yamunachari wrote: >>> >>> >>>> Clay, >>>> You need to do the webrev comparing your code the slim-gate at >>>> hg.opensolaris.org/hg/caiman/slim_source and not against my workspace. >>>> >>>> >>>> *installadm.c*: >>>> >>>> The code for the installadm.c in the slim-gate is changed and that will >>>> affect your code. Please take the latest code and make your changes. >>>> >>>> 634, 804, 846 : In the case of error, you may have to display a proper >>>> error message before exiting. The error messages are defined in >>>> installadm.h and you have to add specific error messages to suit your >>>> needs. >>>> >>>> *setup-service.sh*: >>>> >>>> 46: AIWEBSERVER is defined as webserver.py. Please change it to webserver >>>> since the binary delivered is 'webserver' and not 'webserver.py' >>>> >>>> *SUNWinstalladm-tools:* >>>> >>>> The SUNWinstalladm-tools/depend file is missing. SUWNpython-Cherry, >>>> SUNWsqlite3 and package for lxml are needed for your ai webserver and >>>> publish manifest to work. Please add them to the package depend file. >>>> >>>> Thanks, >>>> Sundar >>>> >>>> >>>> Clay Baenziger wrote: >>>> >>>>> Hi Dave, >>>>> I've fixed the webrev, you'll find the newest one (with the head >>>>> merged at http://cr.opensolaris.org/~clayb/AI_server/webrev_final_rc2. >>>>> I've filed the following bugs to address comments not addressed in the >>>>> code at this time: >>>>> Bug 3953 Need protocol in A/I webserver/client >>>>> Bug 3954 Should limit queue sizes for programs interacting with >>>>> AI_database >>>>> Bug 3955 Please use sanity in setting and getting variables from classes >>>>> >>>>> Please let me know what you think. >>>>> Thank you, >>>>> Clay >>>>> >>>>> On Wed, 15 Oct 2008, Dave Miner wrote: >>>>> >>>>> >>>>>> Clay Baenziger wrote: >>>>>> >>>>>>> Hi Dave, >>>>>>> Thank you very much for taking the time to code review this! My my >>>>>>> please let me know if I'm okay to push as soon as you can. My current >>>>>>> webrev is at: >>>>>>> http://cr.opensolaris.org/~clayb/AI_server/webrev_final_rc0/. >>>>>>> >>>>>>> Thank you, >>>>>>> Clay >>>>>>> >>>>>>> >>>>>> I started to re-review, but stopped, as there are significant >>>>>> discrepancies between your responses and what appears in the webrev, so >>>>>> I think there was an error in generating the webrev. Additionally, this >>>>>> needs to be merged against the current gate, proper bug numbers added to >>>>>> the commit comments, and a crying need to run cstyle. Please do all of >>>>>> these things before asking for another review, we won't get to closure >>>>>> without them. >>>>>> >>>>>> Some additional comments on your responses in-line below, and comments >>>>>> at the end on pieces I hadn't seen before. >>>>>> >>>>>> >>>>>>> On Thu, 9 Oct 2008, Dave Miner wrote: >>>>>>> >>>>>>> >>>>>>>> General stylistic issues: >>>>>>>> >>>>>>>> - inconsistent with the existing python code in the project, which >>>>>>>> uses >>>>>>>> 8 character indent. >>>>>>>> >>>>>>> PEP 008 says to use 4 spaces, as a recommendation by the Python >>>>>>> community >>>>>>> and I see some continuation indents in the distro constructor use 4 >>>>>>> spaces, however, most of the code uses tabs instead of spaces. Again >>>>>>> the >>>>>>> PEP (and -t/-tt flags to Python) strongly discourage mixing tabs and >>>>>>> spaces. I'd like to defer to the Python community's recommendations >>>>>>> here; >>>>>>> but have implemented the standard of tabs and 4 space continuation >>>>>>> indents >>>>>>> which the DC and other AI Python code follows. >>>>>>> >>>>>>> >>>>>> Establishing style is a collective decision, so you should work with the >>>>>> others on the team to sort out a recommendation for style going forward. >>>>>> I have no problem using the PEP standards, but I'm more interested in >>>>>> consistency among our own code. I also continue to see a lack of >>>>>> consistency in what you've don here; continuations are all over the map >>>>>> still in AI_database.py, for example. >>>>>> >>>>>> >>>>>>>> - use more vertical whitespace to separate stanzas within functions >>>>>>>> and >>>>>>>> methods to improve readability >>>>>>>> >>>>>>> I've tried to add some for readability's sake. >>>>>>> >>>>>>> >>>>>> I'd like much more. Long functions such as findManifest, getCriteria, >>>>>> etc., need to be much more readable than they are. >>>>>> >>>>>> >>>>>>>> - much more commenting, especially of algorithms and assumptions. My >>>>>>>> feedback would likely be more extensive if I better understood the >>>>>>>> theory of operation in many of these functions. >>>>>>>> >>>>>>> After realizing I was misguided to have been told to tone my comments >>>>>>> back >>>>>>> I went through commenting >>>>>>> >>>>>>> >>>>>>>> AI_database.py >>>>>>>> >>>>>>>> 95: "needs" >>>>>>>> >>>>>>> Thank you >>>>>>> >>>>>>> >>>>>>>> 104, 125: I don't understand the perceived advantage in combining both >>>>>>>> set and get in a single method, which is generally undesirable. This >>>>>>>> would be much clearer as separate methods, which is basically how it's >>>>>>>> written, anyway. >>>>>>>> >>>>>>> The difference between response and finished are for if success and we >>>>>>> have a response, or an error condition. They could probably be >>>>>>> condensed >>>>>>> with a better more wholistic approach. I don't see the advantage to >>>>>>> breaking them out to be a set_response and get_response method though. >>>>>>> It >>>>>>> seems to be a more traditional way of coding it up, versus a way using >>>>>>> Python's interesting control flow abilities. (Jack persuaded me that >>>>>>> using >>>>>>> set and get methods would be advantageous for being able to init things >>>>>>> like _ans in the class initializer.) I think this can be done in an RFE >>>>>>> as it's a maintainability enhancement as I perceive it. >>>>>>> >>>>>>> >>>>>> Bluntly, I don't regard maintainability issues as RFE's. I don't see >>>>>> any "interesting control flow abilities" here; the same thing could be >>>>>> done (equally badly) in any language I've used. Using presence or >>>>>> absence of an argument to completely switch the sense of a method from >>>>>> get to set is bad design anywhere. >>>>>> >>>>>> >>>>>>>> 137: is there a need to use timeouts to prevent the service from being >>>>>>>> unresponsive? >>>>>>>> >>>>>>> If we don't get a database response it won't be gracefully handled and >>>>>>> CherryPy will spawn a new thread per request (or publish_manifest will >>>>>>> get >>>>>>> killed by the user). Though, to prevent stuck processes just hanging >>>>>>> out >>>>>>> forever, I did change this to 15 seconds. >>>>>>> >>>>>>> >>>>>> A comment as to why 15 seconds would be helpful. >>>>>> >>>>>> >>>>>>>> 166: please put errors on stderr >>>>>>>> >>>>>>> Ah yes; I would agree, but CherryPy doesn't seem to pass STDERR. I >>>>>>> should >>>>>>> be using a more robust logging interface, but for the prototype there >>>>>>> simply isn't time. I've taken that out of the comment, however, as this >>>>>>> is >>>>>>> a bigger problem. The print function shouldn't be used anywhere where >>>>>>> it >>>>>>> shouldn't be replaced with a logging subsystem. >>>>>>> >>>>>>> >>>>>> I need to see an RFE filed for that. Karen can probably help you with >>>>>> logging since she just overhauled this in DC. >>>>>> >>>>>> >>>>>>>> 170: a comment as to why IMMEDIATE would be useful >>>>>>>> >>>>>>> I added: >>>>>>> # use SQLite IMMEDIATE isolation to prevent any writers changing >>>>>>> # the DB while we are working on it (but don't use EXCLUSIVE since >>>>>>> # there may be persistent readers) >>>>>>> >>>>>>> >>>>>>>> 184,190: there's no error information we can pass on from the >>>>>>>> execute() >>>>>>>> that would help diagnose the problem? >>>>>>>> >>>>>>> Hi Dave, I'm not sure but some exceptions raised will pass an error >>>>>>> string >>>>>>> in. I've modified the function to pass that error string in case it's >>>>>>> of >>>>>>> use. >>>>>>> >>>>>>> >>>>>>>> 232ff: please add whitespace between comment delimiter and comment >>>>>>>> >>>>>>> Thank you >>>>>>> >>>>>>> >>>>>>>> 238-end: lots of inconsistent (and excessive) continuation indents to >>>>>>>> clean up. this applies to other files and I won't repeat for them. >>>>>>>> >>>>>>> I've been trying to indent to the last parenthesis of the block above, >>>>>>> but now follow pretty strictly using a 4 space indent per Jack's >>>>>>> explanation of the standard. >>>>>>> >>>>>>> >>>>>> As noted above, need to get more strict. >>>>>> >>>>>> at line 250: "instance" >>>>>> >>>>>> >>>>>>>> 272,312: a comment here seems necessary >>>>>>>> >>>>>>> I have commented the use of the SQL HEX() function in >>>>>>> getSpecificCriteria() and thoroughly commented getCriteria() >>>>>>> >>>>>>> >>>>>> I see no comment related to HEX() in the webrev. >>>>>> >>>>>> >>>>>>>> 353: a boolean flag would be preferable to an indirect test on length >>>>>>>> of >>>>>>>> a string >>>>>>>> >>>>>>> I could test off getCriteria.next() != None instead of the string >>>>>>> length. >>>>>>> It's equivalent to my intention of if queryStr != "SELECT " (as it was >>>>>>> set >>>>>>> on 346). I've put in the test against getCriteria for now. >>>>>>> >>>>>>> >>>>>> My comment was against the line: >>>>>> 353 if len(queryStr) > 7: >>>>>> >>>>>> which still remains, now as 361 in the new webrev. >>>>>> >>>>>> >>>>>>>> 371: you're not providing the default here, that would be at a higher >>>>>>>> level, whose behavior shouldn't be assumed here >>>>>>>> >>>>>>> Thank you for catching the layering error. I've changed the comment >>>>>>> appropriately. >>>>>>> >>>>>>> >>>>>> I still see the original comment in this webrev. >>>>>> >>>>>> 399,410: the error messages here still are a layering violation >>>>>> >>>>>> >>>>>>>> webserver.py >>>>>>>> >>>>>>>> general comment here is that some versioning of the protocol should be >>>>>>>> considered, perhaps something like the IPS scheme >>>>>>>> >>>>>>> I think that's a good RFE that should be filed and done before this >>>>>>> hits >>>>>>> 1.0 >>>>>>> >>>>>>> >>>>>> It's a bug, actually. Please file it. >>>>>> >>>>>> this file also continues to need more vertical spacing in the larger >>>>>> functions. >>>>>> >>>>>> >>>>>>>> 174ff: excessively indented continuation here. >>>>>>>> >>>>>>> Yes, I was trying to align with the abspath, but shouldn't have for the >>>>>>> serve_files options. >>>>>>> >>>>>>> >>>>>>>> 177,187: perhaps we should define a specific x- mime type for our >>>>>>>> usage? >>>>>>>> >>>>>>> The download is useful for admins testing with a web browser so that it >>>>>>> doesn't try to interpret it. I don't know if they would try downloading >>>>>>> the file were it a different type? Plus we intend to download this file >>>>>>> with the A/I client so it seems to make sense. Perhaps, I'm a bit >>>>>>> confused >>>>>>> what advantages a specific MIME type could buy us though? >>>>>>> >>>>>>> >>>>>> I think it would help to validate that you aren't directed to a server >>>>>> (perhaps due to admin mis-configuration) that's providing something >>>>>> other than what you're expecting. Any unknown x- type would seemingly >>>>>> provide the same web browser advantages you get from x-download. >>>>>> >>>>>> >>>>>>>> 192: so what are we attempting to return here? >>>>>>>> >>>>>>> This is the XML-ish criteria list for the AI client to know what's >>>>>>> requested of it. However, perhaps splitting this up wouldn't be a bad >>>>>>> idea. Also, this shouldn't be testing against the postData string, but >>>>>>> using cherrypy handlers for POST versus GET (as per >>>>>>> http://www.cherrypy.org/wiki/RequestObject). >>>>>>> >>>>>>> I've added a comment for now >>>>>>> >>>>>>> >>>>>> Again, I don't see this comment in the posted webrev. >>>>>> >>>>>> >>>>>>>> 246: seems like a questionable redirection to me (218 seems a little >>>>>>>> less odd, though still somewhat questionable). A 404 seems more >>>>>>>> appropriate for what looks like a malformed request. >>>>>>>> >>>>>>> I agree for 246. I've changed not to a 404, but a 403 with the message >>>>>>> "Index listing denied". >>>>>>> >>>>>>> >>>>>>>> 269,271: these should be configurable >>>>>>>> >>>>>>> I have made these command line options >>>>>>> >>>>>>> >>>>>>>> Comments below are against revised version from >>>>>>>> http://cr.opensolaris.org/~clayb/AI_server/webrev1/ >>>>>>>> >>>>>>>> publish_manifest.py >>>>>>>> >>>>>>>> Will this support publishing via non-CLI interfaces as presently >>>>>>>> structured? >>>>>>>> >>>>>>> A U/I can import publish_manifest and the much of the work in >>>>>>> parseOptions() can be done by the U/I, but the main logic of publishing >>>>>>> the manifest would be in publish_manifest not the U/I. >>>>>>> >>>>>>> >>>>>>>> 1: missing CDDL >>>>>>>> >>>>>>> CDDL'ized >>>>>>> >>>>>>> >>>>>>>> 132,143,159,169: so what Python would that be? Is it one we actually >>>>>>>> need to run on? >>>>>>>> >>>>>>> The thought was that A/I could be independent of Solaris at some point >>>>>>> (i.e. run on Linux/OS X or Windows). It seems IEEE754 support in Python >>>>>>> is a bit unstable and I preferred to play it safe for now. >>>>>>> >>>>>>> >>>>>>>> 135: Assuming we do actually need this, I don't really see the point >>>>>>>> in >>>>>>>> a separate upper-bound value for MAC vs. non-MAC. It's just a big >>>>>>>> number. >>>>>>>> >>>>>>> Good point I don't either. >>>>>>> >>>>>>> >>>>>>>> 156ff: need much more commenting here about what's happening >>>>>>>> >>>>>>> Yes, checkCriteria() is a scary, scary function. I have broken it up to >>>>>>> make it much more approachable. >>>>>>> >>>>>>> >>>>>>>> 214: "determine" >>>>>>>> >>>>>>> Thank you, I'll remember to aspell(1) more often >>>>>>> >>>>>>> >>>>>>>> 303: not obvious why they must be the same; if so, why would we bother >>>>>>>> copying in the new one? >>>>>>>> >>>>>>> We don't have a way to support having two manifests with the same name, >>>>>>> so >>>>>>> we warn the user that there's a difference but that the criteria was >>>>>>> still >>>>>>> added to the database already. There was a bug, we shouldn't copy the >>>>>>> new manifest in if it's already (same or not). >>>>>>> >>>>>>> >>>>>>>> 307ff: how about doing this join() once and not 5 times? >>>>>>>> >>>>>>> Yes, this does clean up the code nicely. >>>>>>> >>>>>>> >>>>>>>> 401: this comment doesn't appear to match the code >>>>>>>> >>>>>>> My intention for the comment matches the code but it's unclear. I >>>>>>> change >>>>>>> the comment and simplified it >>>>>>> >>>>>>> >>>>>>>> 440: comment here, please >>>>>>>> >>>>>>> I changed tag to a more descriptive name and added comments >>>>>>> >>>>>>> >>>>>>>> 539: "separate" >>>>>>>> >>>>>>> Yes late night my spelling goes down hill >>>>>>> >>>>>>> >>>>>>>> 561: "validation" >>>>>>>> >>>>>>> A lot... >>>>>>> >>>>>>> >>>>>>>> verifyXML.py >>>>>>>> >>>>>>>> 1: missing CDDL >>>>>>>> >>>>>>> CDDL'ized >>>>>>> >>>>>>> >>>>>>>> 38: "receive" >>>>>>>> >>>>>>> Zzz... Zzz... Type... Type... Zzz... Zzz.. Thank you again for the idea >>>>>>> to >>>>>>> run aspell against my code >>>>>>> >>>>>>> >>>>>>>> Dave >>>>>>>> >>>>>>>> >>>>>> So what's the AI.db file? >>>>>> >>>>>> usr/src/cmd/Makefile: >>>>>> 36: Alphabetize lists such as this. This also hasn't been merged >>>>>> against the current version yet. >>>>>> >>>>>> usr/src/cmd/ai-webserver/Makefile: >>>>>> continuations in Makefiles conventionally are indented to align with the >>>>>> item they're continuing, and we don't spread content that fits in a >>>>>> single line across a continuation. Consult existing Makefiles for >>>>>> stylistic examples. Copying existing practice is much preferred over >>>>>> making up your own. >>>>>> >>>>>> 95 et al: 744 is a most unusual mode. 755 for executables, please, >>>>>> though in general we just don't bother with setting modes in these rules >>>>>> and do so on the install phase. >>>>>> >>>>>> default.xml >>>>>> why do we set swap size in the default manifest? Can't we use the >>>>>> algorithms in the orchestrator to compute this automatically in the >>>>>> default case? >>>>>> >>>>>> SUNWinstalladm-tools/prototype_com: >>>>>> I don't think the schema files belong in /var; something in /usr/share, >>>>>> perhaps, seems more appropriate. This would affect Makefile.cmd and >>>>>> Targetdirs. >>>>>> >>>>>> installadm.c: >>>>>> >>>>>> There are so many cstyle errors here I hardly know where to begin, but >>>>>> there are incorrect continuation indents in all of the new code. The >>>>>> rules are simple: 4 space indent on a continuation line, period. Style >>>>>> of switch statements is also incorrect: cases are to be at the same >>>>>> indent level as the switch. Please review a copy of the C style >>>>>> guidelines from http://www.opensolaris.org/os/community/on/, and run >>>>>> cstyle on your code before sending for review. >>>>>> >>>>>> 782,815: incorrect usage of MAXPATHLEN. These aren't path names, so use >>>>>> a constant specific to your usage. >>>>>> >>>>>> >>>>>> Dave >>>>>> _______________________________________________ >>>>>> caiman-discuss mailing list >>>>>> caiman-discuss at opensolaris.org >>>>>> http://mail.opensolaris.org/mailman/listinfo/caiman-discuss >>>>>> >>>>>> >>>> >> > _______________________________________________ > caiman-discuss mailing list > caiman-discuss at opensolaris.org > http://mail.opensolaris.org/mailman/listinfo/caiman-discuss > -------------- next part -------------- An HTML attachment was scrubbed... URL: <http://mail.opensolaris.org/pipermail/caiman-discuss/attachments/20081015/5dbb2642/attachment.html>