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