Hi Sundar,
        To allow delivery and merge with your changes from Monday in 
installadm, I've pulled it out of this delivery.
        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

        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