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? > 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 >>>> >> >>