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

Reply via email to