On Dec 12, 2013, at 8:36 PM, Santhosh Edukulla <santhosh.eduku...@citrix.com> 
wrote:

> Sebastian\Team,
> 
> Few notes.
> 
> 1. The whole exercise is to bring quality and make Marvin "little" cleaner 
> where ever possible. If we see earlier\currently, at some places we followed 
> some convention, say to use proper casing for class names and modules and at 
> some places we break from this, some times the directory structure convention 
> is properly not followed, few dead code, hard coded strings, invalid returns 
> or no check of returns some times for function calls, hard design 
> implementations to work only with first zone,domain etc, repeatable service 
> class in each test module, no proper exception handling, not cleaning 
> resources at some places when exceptions are thrown etc few issues we have 
> seen currently. So, we tried to fix them them wherever we can, to get to a 
> cleaner and better state.   
> 
> 2. We did few changes as you mentioned to bring out EX: catching test 
> exceptions by plugin itself etc to catch test script failures for entire run 
> at a single place to differentiate them from product failures and uncover as 
> many script errors as possible, streamlining logging etc, fixing few ssh 
> bugs, config folder to config parser  etc.  Even automation code is also code 
> and to make integration tests good, we did these changes. I believe if all 
> agree we will make few more as well to fix few issues mentioned in note 1 
> above. 
> 
> 3. Following a proper convention i believe is good ( provided agreeable to 
> all ). We make sure that main marvin code we check in  atleast  pep8 
> compliant and all follows proper convention to make it maintainable. Separate 
> few responsibilities for individual modules, make it work with few design 
> issues removed  etc.  We can have multiple entities and framework should cope 
> up to ensure that it works with minimal configuration and scalable for cloud 
> testing. 
> 
> "Pass","pass","PASS" etc are few notions where different conventions were 
> getting followed, so added codes( I agree name of this module can be still 
> better ) to make sure that all follow same convention, least possible if they 
> are related to increase readability and one point of change rather than 
> changing at multiple places. We make sure that temporary changes are zero or 
> not at all. Some changes are done to keep current tests going with out which 
> they failed. EX: We started VM but didnt verified the operation was 
> successful and many like these at some places, this was existing currently at 
> some\many places.   As such we cant clean all things as a whole, whenever we 
> encounter few issues, with out breaking the current tests, we are fixing 
> these conventions though few are simple along with other issues.  

These are all good and needed to improve Marvin. However they are not just bug 
fixes, they fit into a 'refactoring' endeavor and as such should be made in a 
separate branch. I feel that these changes should not be committed to master 
and 4.3 and certainly not into 4.2 which is now in a bug fix only release cycle.

There is already a branch marvin_refactoring (which I believe was merged some 
time back), I have not checked what's in there, but I suggest that you commit 
all your changes to such branch until the code stabilizes. then we can call for 
a merge to the master branch.


> 
> There were few build scripts maintained separately from this repo and are 
> using relevant lib calls from marvin, Any change to marvin here, we have to 
> see these builds scripts dependencies in other repo before checking them in 
> are not broken. Felt that maintaining a separate repo for build scripts 
> dependent upon marvin framework\libs(  not all ) is little away and moved 
> them here under misc\build. This place holder can be used again for ACS 
> related build scripts as well if there are any dependencies used. Its just a 
> misc\build folder. 
> 

I need to understand this better, but it seems very wrong. As noted by 
Prasanna, this is a bad fit to bring it within the marvin code. I would be in 
favor to revert that commit.


> Currently, any change requires push to 4.2,master,4.3, a user install again  
> and we some how made to fit marvin in mvn life cycle. I believe we can make 
> this segregation of CS and marvin and carve out a new repo to ease fixing any 
> issues here like we did for documentation ( only if agreed by all ). keeping 
> CS dependencies minimal is also one goal to change, i mean in terms of 
> branching and maintenance. We can separate marvin and with init point for 
> marvin can take api.xml and start generating relevant structures possible 
> decouple it totally from mvn as an example, rather tightly integrating 
> currently with CS build.
> 
> Regarding maintaining a separate branch for refactoring, i believe Its  a 
> good point and i second that the changes need to be done separately and be 
> merged once tested and agreed post verification, and not break the current 
> Automation Runs. We are making sure that every effort is made not to break 
> the runs as much as possible. We will make sure that the changes will not 
> impact the current runs. We as well agreed to make the changes separately in 
> a different branch and merge them here going ahead. 

Current runs should use current Marvin. Your refactoring should go in a 
separate branch. Looks like we agree.

Let's see if we need to revive this thread 
http://markmail.org/thread/a3rha4zwetfngqxb

> 
> Please feel free to add your comments to the reviews, wherever you feel it 
> can be fixed better\improved and as well log bugs under Automation\Marvin and 
> assign them to me. 
> 
> 
> 
> Regards,
> Santhosh
> ________________________________________
> From: sebgoa [run...@gmail.com]
> Sent: Wednesday, December 11, 2013 4:12 AM
> To: Santhosh Edukulla; gir...@clogeny.com; dev@cloudstack.apache.org
> Cc: Prasanna Santhanam
> Subject: Marvin refactoring
> 
> Hi devs and Santosh and Girish,
> 
> I am looking at Marvin lately and I am seeing lots of changes happening, 
> especially:
> https://reviews.apache.org/users/santhoshe/
> 
> That's great to see effort for integration testing. However I am concerned 
> that these changes (sometimes temporary fixes) are going straight in 4.2, 4.3 
> and master.
> 
> How about creating a marvin refactoring branch and working there ?
> 
> I believe that what is being done to Marvin is significant enough (renaming 
> of files, change of logger structures, change of function names, addition of 
> constants etc..) that it should be developed in its own feature branch and a 
> merge should be called once the refactoring is done.
> 
> Personally, I don't agree with some of the cosmetic changes: like move to 
> camel case for function name (not pythonic even though pep8 compliant) or the 
> addition of codes.py (different name maybe ?).  Sometimes the api gets broken 
> as well, like in cloudstackConnection.
> 
> We should also have an open discussion about the import of 
> https://github.com/vogxn/cloud-autodeploy in marvin/marvin/misc/build. That 
> repo from prasanna while part of the CI infra is really custom config for 
> Citrix internal infra (right ?). I don't think this has a place inside the 
> Marvin code. When we build Marvin for instance, what happens to that code ? 
> Does it get uploaded to pypi if we push Marvin to pypi ?
> 
> Let me know what you think,
> 
> thanks,
> 
> -Sebastien

Reply via email to