> -----Original Message-----
> From: John Burwell [mailto:nore...@reviews.apache.org] On Behalf Of John
> Burwell
> Sent: Monday, November 26, 2012 2:54 PM
> To: cloudstack; Rohit Yadav; John Burwell
> Subject: Re: Review Request: S3-backed Secondary Storage
> 
> 
> 
> > On Nov. 21, 2012, 4:32 a.m., Rohit Yadav wrote:
> > > Read the coding conventions and checkout the diff so you'll know.
> > >
> > > Watch out for the red lines and extra indents.
> > > For example, fix for following files with tabwidth=4 with spaces, no
> > > tabs; fix trailing spaces;
> > >
> > > api/src/com/cloud/agent/api/BackupSnapshotCommand.java
> > > api/src/com/cloud/agent/api/DeleteSnapshotBackupCommand.java
> > > api/src/com/cloud/agent/api/DeleteTemplateFromS3Command.java
> > > api/src/com/cloud/agent/api/DownloadSnapshotFromS3Command.java
> > > api/src/com/cloud/agent/api/to/S3TO.java
> > > core/src/com/cloud/storage/S3VO.java
> > > core/src/com/cloud/storage/SnapshotVO.java
> > > core/src/com/cloud/storage/VMTemplateS3VO.java
> > >
> core/src/com/cloud/storage/resource/NfsSecondaryStorageResource.java
> > > (lots of tab excess indents; 1tab>4spaces, trailing spaces)
> > > server/src/com/cloud/api/ApiDBUtils.java
> > > server/src/com/cloud/api/doc/ApiXmlDocWriter.java
> > > server/src/com/cloud/configuration/ConfigurationManagerImpl.java
> > > server/src/com/cloud/storage/StorageManagerImpl.java
> > > server/src/com/cloud/storage/dao/VMTemplateDaoImpl.java
> > > server/src/com/cloud/storage/dao/VMTemplateS3DaoImpl.java
> > > server/src/com/cloud/storage/s3/S3Manager.java
> > > server/src/com/cloud/storage/s3/S3ManagerImpl.java
> > > server/src/com/cloud/storage/snapshot/SnapshotManager.java
> > > server/src/com/cloud/storage/snapshot/SnapshotManagerImpl.java
> > > server/src/com/cloud/template/S3SyncTask.java
> > > server/src/com/cloud/template/TemplateManagerImpl.java
> > > utils/src/com/cloud/utils/S3Utils.java
> > > utils/src/com/cloud/utils/StringUtils.java
> > >
> > > Not sure about js, though they look alright:
> > > ui/scripts/system.js
> > >
> > > For python code, it should be pep8 compliant (for example all under
> > > 80 char width etc.), as per coding conventions; to check that I uses
> > > pep8; (for ex. tools/cli/codemonkey/*.py is pep8 compliant) pip
> > > install pep8
> > > pep8 <filename> will tell you what to fix; for example:
> > > pep8 scripts/vm/hypervisor/xenserver/s3xen.py
> > >
> > > Try to fix it until you get no error/output from pep8.
> > > Unfortunately, we don't have anything like pep8 for Java.
> > >
> > > Code reviews:
> > >
> > > For tools/marvin/marvin/cloudstackConnection.py:
> > > Why was the function moved: make_request_with_auth? Port 8096 is
> the
> > > default integration port, that is added to configuration when we do
> deploydb with mvn, If we replace this;
> > >         if port == 8096:
> > > by;
> > >         if self.apiKey == None and self.securityKey == None:
> > >
> > > If still fails, as I can feed incorrect api and secret keys, and if port 
> > > is 8096, I
> would still want non auth api calls? May be we can do this;
> > >         if port == 8096 or (self.apiKey == None and self.securityKey ==
> None):
> > > Lastly, why remove the logging code, we need that to see the response,
> to see what was returned.
> > >
> > > Great work, lastly one suggestion on submitting patches:
> > > Since, this is a  big patch you can split it and submit multiple patches. 
> > > This
> would make it easier to review, commit and revert if necessary.
> > > And, use git patch mode, using git add -p. This would ask you what parts
> of the changes, even withing a file to add or stage for commit.
> > > To fix the current patch (there may be other better ways), you can
> > > do this; assuming on your branch it was one patch and is on HEAD git
> > > format-patch -o patches HEAD~1 (backup your patch) git rebase -i
> > > HEAD~2; NOTE: this deletes the current commit from vim that deletes
> > > the commit from history, make sure you've a backup patch
> > >
> > > git apply <patch file> (this won't commit, but stage the changes)
> > > git add -p (add what is needed for a commit, say group changes by
> > > java/python/sql/js code or by server, api etc.) git commit -s repeat
> > > git add -p say you generated 10 patches; git format-patch -o patches
> > > HEAD~10 (email them on ML, review board fails for multiple patches,
> > > there is one way though by adding them as parent-child one after the
> > > other)
> > >
> > >
> 
> I have pushed a new version of the patch that corrects the tab and
> whitespace issues, as well as, PEP-8 compliance for the s3xen plugin.
> 
> Unfortunately, this patch can't reasonably be split into smaller pieces.  The 
> S3
> functionality, like Swift, cuts a wide path through the code base.  The
> enhancements added to utility classes (e.g. StringUtils, GlobalLock, etc) are


I want to add s3 as an example how to integrate storage into cloudstack storage 
subsystem I proposed in 
(https://cwiki.apache.org/confluence/display/CLOUDSTACK/Storage+subsystem+2.0), 
so hopefully, we don't need to change so many code, all over the place, to add 
a new storage.


> directly used by the S3 implementation.  There are roughly 10-20 lines of
> code (e.g. 1 line in cloudstackConnection.py and 3 lines in ApiXmlDocWriter)
> across the entire patch that are independent.  However, given the size of the
> work and the prospect of future submissions, it seems counter-productive to
> attempt to split them out from a 250k patch.
> 
> I made the change to the unauthenticated behavior of
> cloudstackConnection.py precisely because Marvin does not connect to the
> management server via 8096 in our integration environment.  I modified the
> change to match your recommendations, and narrowed the scope of the
> change to a single line in most recent revision of the patch,
> 
> 
> - John
> 
> 
> -----------------------------------------------------------
> This is an automatically generated e-mail. To reply, visit:
> https://reviews.apache.org/r/8123/#review13659
> -----------------------------------------------------------
> 
> 
> On Nov. 26, 2012, 9:44 p.m., John Burwell wrote:
> >
> > -----------------------------------------------------------
> > This is an automatically generated e-mail. To reply, visit:
> > https://reviews.apache.org/r/8123/
> > -----------------------------------------------------------
> >
> > (Updated Nov. 26, 2012, 9:44 p.m.)
> >
> >
> > Review request for cloudstack.
> >
> >
> > Description
> > -------
> >
> > Backs NFS-based secondary storage with an S3-compatible object store.
> Periodically, a reaper thread synchronizes templates and ISOs stored on a
> NFS secondary storage mount with a configured S3 object store. It also
> pushes snapshots to the object store when they are created and downloads
> them in other zones on-demand. In addition to permitting the use of
> commodity or IaaS storage solutions for static assets, it provides a means of
> automatically synchronizing template and ISO assets across multiple zones.
> >
> > For more information about the design of the patch, please see the design
> document (https://cwiki.apache.org/confluence/display/CLOUDSTACK/S3-
> backed+Secondary+Storage).
> >
> >
> > This addresses bug CLOUDSTACK-509.
> >
> >
> > Diffs
> > -----
> >
> >   .gitignore 33f95c7
> >   api/src/com/cloud/agent/api/BackupSnapshotCommand.java 9476d7d
> >   api/src/com/cloud/agent/api/DeleteSnapshotBackupCommand.java
> 3fa8c2b
> >   api/src/com/cloud/agent/api/DeleteTemplateFromS3Command.java PRE-
> CREATION
> >   api/src/com/cloud/agent/api/DownloadSnapshotFromS3Command.java
> PRE-CREATION
> >
> api/src/com/cloud/agent/api/DownloadTemplateFromS3ToSecondaryStorag
> eCommand.java PRE-CREATION
> >
> api/src/com/cloud/agent/api/UploadTemplateToS3FromSecondaryStorageC
> ommand.java PRE-CREATION
> >   api/src/com/cloud/agent/api/to/S3TO.java PRE-CREATION
> >   api/src/com/cloud/api/ApiConstants.java 78a3ded
> >   api/src/com/cloud/api/ResponseGenerator.java 4e8fbd8
> >   api/src/com/cloud/api/commands/AddS3Cmd.java PRE-CREATION
> >   api/src/com/cloud/api/commands/ListS3sCmd.java PRE-CREATION
> >   api/src/com/cloud/api/response/S3Response.java PRE-CREATION
> >   api/src/com/cloud/resource/ResourceService.java 1065453
> >   api/src/com/cloud/storage/S3.java PRE-CREATION
> >   build/package.xml 09ed939
> >   client/WEB-INF/classes/resources/messages.properties 626e44a
> >   client/tomcatconf/commands.properties.in 149547e
> >   core/pom.xml 15f0f7b
> >   core/src/com/cloud/storage/S3VO.java PRE-CREATION
> >   core/src/com/cloud/storage/SnapshotVO.java 08dfafa
> >   core/src/com/cloud/storage/VMTemplateS3VO.java PRE-CREATION
> >
> core/src/com/cloud/storage/resource/NfsSecondaryStorageResource.java
> 155210d
> >   patches/systemvm/debian/config/etc/sysctl.conf 7f945b0
> >
> plugins/hypervisors/xen/src/com/cloud/hypervisor/xen/resource/CitrixReso
> urceBase.java d2db85c
> >   pom.xml 4a4276e
> >   scripts/vm/hypervisor/xenserver/s3xen PRE-CREATION
> >   scripts/vm/hypervisor/xenserver/xenserver56/patch d485414
> >   scripts/vm/hypervisor/xenserver/xenserver56fp1/patch 9fe9740
> >   scripts/vm/hypervisor/xenserver/xenserver60/patch f049109
> >   server/pom.xml e3308d8
> >   server/src/com/cloud/api/ApiDBUtils.java 3b5f634
> >   server/src/com/cloud/api/ApiDispatcher.java dfe4a1f
> >   server/src/com/cloud/api/ApiResponseHelper.java ebe8415
> >   server/src/com/cloud/api/doc/ApiXmlDocWriter.java d31ef5a
> >   server/src/com/cloud/configuration/Config.java 66ac276
> >   server/src/com/cloud/configuration/ConfigurationManagerImpl.java
> ef940e8
> >   server/src/com/cloud/configuration/DefaultComponentLibrary.java
> ef61044
> >   server/src/com/cloud/resource/ResourceManagerImpl.java ced601b
> >   server/src/com/cloud/storage/StorageManagerImpl.java e252633
> >   server/src/com/cloud/storage/dao/S3Dao.java PRE-CREATION
> >   server/src/com/cloud/storage/dao/S3DaoImpl.java PRE-CREATION
> >   server/src/com/cloud/storage/dao/VMTemplateDao.java f5b6913
> >   server/src/com/cloud/storage/dao/VMTemplateDaoImpl.java 2a0dfc8
> >   server/src/com/cloud/storage/dao/VMTemplateS3Dao.java PRE-
> CREATION
> >   server/src/com/cloud/storage/dao/VMTemplateS3DaoImpl.java PRE-
> CREATION
> >   server/src/com/cloud/storage/s3/S3Manager.java PRE-CREATION
> >   server/src/com/cloud/storage/s3/S3ManagerImpl.java PRE-CREATION
> >   server/src/com/cloud/storage/snapshot/SnapshotManager.java a10298e
> >   server/src/com/cloud/storage/snapshot/SnapshotManagerImpl.java
> 32e37e6
> >   server/src/com/cloud/template/S3SyncTask.java PRE-CREATION
> >   server/src/com/cloud/template/TemplateManagerImpl.java 1e87de2
> >   setup/db/create-schema.sql fff084e
> >   setup/db/db/schema-40to410.sql PRE-CREATION
> >   tools/apidoc/gen_toc.py eeaf2a2
> >   tools/marvin/marvin/cloudstackConnection.py c805213
> >   tools/marvin/marvin/deployDataCenter.py bdf08cc
> >   ui/dictionary.jsp b80e296
> >   ui/scripts/cloudStack.js de3bd73
> >   ui/scripts/sharedFunctions.js b6b3ef8
> >   ui/scripts/system.js 9e3932f
> >   ui/scripts/templates.js 74511f0
> >   utils/pom.xml 6bed67f
> >   utils/src/com/cloud/utils/DateUtil.java be1627d
> >   utils/src/com/cloud/utils/S3Utils.java PRE-CREATION
> >   utils/src/com/cloud/utils/StringUtils.java 0f0ef05
> >   utils/src/com/cloud/utils/db/GlobalLock.java 7c1c943
> >
> > Diff: https://reviews.apache.org/r/8123/diff/
> >
> >
> > Testing
> > -------
> >
> > I am submitting patch to begin the feedback process while we complete
> integration testing.  I have verified that it does not interfere with normal
> CloudStack operations when S3-backed Secondary Storage is disabled (the
> default setting) .  I have successfully tested operation of single zone
> template and ISO scenarios on devcloud described in the design document.  I
> am currently working through some issues in our multi-zone test
> environment to complete all scenarios described.  The following are the
> known deficiencies of the current implementation which I plan to correct in a
> subsequent patch:
> >
> >    * Cross zone garbage collection: When a global asset is deleted from one
> zone's secondary storage, it is not deleted from the secondary storage of
> other zones which have downloaded it from the object store
> >    * S3 Configuration Update: The API only supports adding an object store
> configuration.  Users should be able to edit the access key, secret key,
> connection timeout. max error retries, and socket timeout.
> >    * Multi-threaded Uploads: Permit the upload of multiple assets to the
> object store simultaneously to decrease the propagation latency across all
> zones.
> >
> >
> > Screenshots
> > -----------
> >
> > S3 Configuration Form
> >   https://reviews.apache.org/r/8123/s/13/
> > S3 Enable Menu on the Zone Tab
> >   https://reviews.apache.org/r/8123/s/14/
> >
> >
> > Thanks,
> >
> > John Burwell
> >
> >

Reply via email to