Return-Path: X-Original-To: apmail-cloudstack-dev-archive@www.apache.org Delivered-To: apmail-cloudstack-dev-archive@www.apache.org Received: from mail.apache.org (hermes.apache.org [140.211.11.3]) by minotaur.apache.org (Postfix) with SMTP id 36C9211EF9 for ; Wed, 18 Jun 2014 01:07:06 +0000 (UTC) Received: (qmail 79245 invoked by uid 500); 18 Jun 2014 01:07:05 -0000 Delivered-To: apmail-cloudstack-dev-archive@cloudstack.apache.org Received: (qmail 79203 invoked by uid 500); 18 Jun 2014 01:07:05 -0000 Mailing-List: contact dev-help@cloudstack.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: dev@cloudstack.apache.org Delivered-To: mailing list dev@cloudstack.apache.org Received: (qmail 79187 invoked by uid 99); 18 Jun 2014 01:07:05 -0000 Received: from reviews-vm.apache.org (HELO reviews.apache.org) (140.211.11.40) by apache.org (qpsmtpd/0.29) with ESMTP; Wed, 18 Jun 2014 01:07:05 +0000 Received: from reviews.apache.org (localhost [127.0.0.1]) by reviews.apache.org (Postfix) with ESMTP id 5DC3E1DB07A; Wed, 18 Jun 2014 01:06:55 +0000 (UTC) Content-Type: multipart/alternative; boundary="===============6932094565121646180==" MIME-Version: 1.0 Subject: Re: Review Request 22706: This test suite contains test cases relating to access checks for listVolume() with parameters - id, listall, isrecursive, account and domainid executed as ROOT admin, domain admin and regular users. From: "sangeetha hariharan" To: "Prachi Damle" , "Santhosh Edukulla" , "Min Chen" Cc: "sangeetha hariharan" , "cloudstack" Date: Wed, 18 Jun 2014 01:06:55 -0000 Message-ID: <20140618010655.13794.96823@reviews.apache.org> X-ReviewBoard-URL: https://reviews.apache.org Auto-Submitted: auto-generated Sender: "sangeetha hariharan" X-ReviewGroup: cloudstack X-ReviewRequest-URL: https://reviews.apache.org/r/22706/ X-Sender: "sangeetha hariharan" References: <20140618010618.6312.15013@reviews.apache.org> In-Reply-To: <20140618010618.6312.15013@reviews.apache.org> Reply-To: "sangeetha hariharan" X-ReviewRequest-Repository: cloudstack-git --===============6932094565121646180== Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit ----------------------------------------------------------- This is an automatically generated e-mail. To reply, visit: https://reviews.apache.org/r/22706/ ----------------------------------------------------------- (Updated June 18, 2014, 1:06 a.m.) Review request for cloudstack, Min Chen, Prachi Damle, and Santhosh Edukulla. Repository: cloudstack-git Description ------- This test suite contains test cases relating to access checks for listVolume() with parameters - id,listall,isrecursive,account and domainid executed as ROOT admin,domain admin and regular users. Diffs ----- test/integration/component/test_acl_listvolume.py PRE-CREATION Diff: https://reviews.apache.org/r/22706/diff/ Testing ------- test_listVolume_as_domainadmin (integration.component.test_acl_listvolume.TestVolumeList) ... === TestName: test_listVolume_as_domainadmin | Status : SUCCESS === ok test_listVolume_as_domainadmin_cross_domainid (integration.component.test_acl_listvolume.TestVolumeList) ... === TestName: test_listVolume_as_domainadmin_cross_domainid | Status : SUCCESS === ok test_listVolume_as_domainadmin_cross_domainid_accountid (integration.component.test_acl_listvolume.TestVolumeList) ... === TestName: test_listVolume_as_domainadmin_cross_domainid_accountid | Status : SUCCESS === ok test_listVolume_as_domainadmin_domainid (integration.component.test_acl_listvolume.TestVolumeList) ... === TestName: test_listVolume_as_domainadmin_domainid | Status : SUCCESS === ok test_listVolume_as_domainadmin_domainid_accountid (integration.component.test_acl_listvolume.TestVolumeList) ... === TestName: test_listVolume_as_domainadmin_domainid_accountid | Status : SUCCESS === ok test_listVolume_as_domainadmin_domainid_accountid_listall_false (integration.component.test_acl_listvolume.TestVolumeList) ... === TestName: test_listVolume_as_domainadmin_domainid_accountid_listall_false | Status : SUCCESS === ok test_listVolume_as_domainadmin_domainid_accountid_listall_false_rec_false (integration.component.test_acl_listvolume.TestVolumeList) ... === TestName: test_listVolume_as_domainadmin_domainid_accountid_listall_false_rec_false | Status : SUCCESS === ok test_listVolume_as_domainadmin_domainid_accountid_listall_false_rec_true (integration.component.test_acl_listvolume.TestVolumeList) ... === TestName: test_listVolume_as_domainadmin_domainid_accountid_listall_false_rec_true | Status : SUCCESS === ok test_listVolume_as_domainadmin_domainid_accountid_listall_true (integration.component.test_acl_listvolume.TestVolumeList) ... === TestName: test_listVolume_as_domainadmin_domainid_accountid_listall_true | Status : SUCCESS === ok test_listVolume_as_domainadmin_domainid_accountid_listall_true_rec_false (integration.component.test_acl_listvolume.TestVolumeList) ... === TestName: test_listVolume_as_domainadmin_domainid_accountid_listall_true_rec_false | Status : SUCCESS === ok test_listVolume_as_domainadmin_domainid_accountid_listall_true_rec_true (integration.component.test_acl_listvolume.TestVolumeList) ... === TestName: test_listVolume_as_domainadmin_domainid_accountid_listall_true_rec_true | Status : SUCCESS === ok test_listVolume_as_domainadmin_domainid_accountid_rec_false (integration.component.test_acl_listvolume.TestVolumeList) ... === TestName: test_listVolume_as_domainadmin_domainid_accountid_rec_false | Status : SUCCESS === ok test_listVolume_as_domainadmin_domainid_accountid_rec_true (integration.component.test_acl_listvolume.TestVolumeList) ... === TestName: test_listVolume_as_domainadmin_domainid_accountid_rec_true | Status : SUCCESS === ok test_listVolume_as_domainadmin_domainid_listall_false (integration.component.test_acl_listvolume.TestVolumeList) ... === TestName: test_listVolume_as_domainadmin_domainid_listall_false | Status : SUCCESS === ok test_listVolume_as_domainadmin_domainid_listall_false_rec_false (integration.component.test_acl_listvolume.TestVolumeList) ... === TestName: test_listVolume_as_domainadmin_domainid_listall_false_rec_false | Status : SUCCESS === ok test_listVolume_as_domainadmin_domainid_listall_false_rec_true (integration.component.test_acl_listvolume.TestVolumeList) ... === TestName: test_listVolume_as_domainadmin_domainid_listall_false_rec_true | Status : SUCCESS === ok test_listVolume_as_domainadmin_domainid_listall_true (integration.component.test_acl_listvolume.TestVolumeList) ... === TestName: test_listVolume_as_domainadmin_domainid_listall_true | Status : SUCCESS === ok test_listVolume_as_domainadmin_domainid_listall_true_rec_false (integration.component.test_acl_listvolume.TestVolumeList) ... === TestName: test_listVolume_as_domainadmin_domainid_listall_true_rec_false | Status : SUCCESS === ok test_listVolume_as_domainadmin_domainid_listall_true_rec_true (integration.component.test_acl_listvolume.TestVolumeList) ... === TestName: test_listVolume_as_domainadmin_domainid_listall_true_rec_true | Status : SUCCESS === ok test_listVolume_as_domainadmin_domainid_rec_false (integration.component.test_acl_listvolume.TestVolumeList) ... === TestName: test_listVolume_as_domainadmin_domainid_rec_false | Status : SUCCESS === ok test_listVolume_as_domainadmin_domainid_rec_true (integration.component.test_acl_listvolume.TestVolumeList) ... === TestName: test_listVolume_as_domainadmin_domainid_rec_true | Status : SUCCESS === ok test_listVolume_as_domainadmin_listall_false (integration.component.test_acl_listvolume.TestVolumeList) ... === TestName: test_listVolume_as_domainadmin_listall_false | Status : SUCCESS === ok test_listVolume_as_domainadmin_listall_false_rec_false (integration.component.test_acl_listvolume.TestVolumeList) ... === TestName: test_listVolume_as_domainadmin_listall_false_rec_false | Status : SUCCESS === ok test_listVolume_as_domainadmin_listall_false_rec_true (integration.component.test_acl_listvolume.TestVolumeList) ... === TestName: test_listVolume_as_domainadmin_listall_false_rec_true | Status : SUCCESS === ok test_listVolume_as_domainadmin_listall_true (integration.component.test_acl_listvolume.TestVolumeList) ... === TestName: test_listVolume_as_domainadmin_listall_true | Status : SUCCESS === ok test_listVolume_as_domainadmin_listall_true_rec_false (integration.component.test_acl_listvolume.TestVolumeList) ... === TestName: test_listVolume_as_domainadmin_listall_true_rec_false | Status : SUCCESS === ok test_listVolume_as_domainadmin_listall_true_rec_true (integration.component.test_acl_listvolume.TestVolumeList) ... === TestName: test_listVolume_as_domainadmin_listall_true_rec_true | Status : SUCCESS === ok test_listVolume_as_domainadmin_rec_true (integration.component.test_acl_listvolume.TestVolumeList) ... === TestName: test_listVolume_as_domainadmin_rec_true | Status : SUCCESS === ok test_listVolume_as_domainadmin_true_rec_false (integration.component.test_acl_listvolume.TestVolumeList) ... === TestName: test_listVolume_as_domainadmin_true_rec_false | Status : SUCCESS === ok test_listVolume_as_regularuser (integration.component.test_acl_listvolume.TestVolumeList) ... === TestName: test_listVolume_as_regularuser | Status : SUCCESS === ok test_listVolume_as_regularuser_cross_domainid (integration.component.test_acl_listvolume.TestVolumeList) ... === TestName: test_listVolume_as_regularuser_cross_domainid | Status : SUCCESS === ok test_listVolume_as_regularuser_cross_domainid_accountid (integration.component.test_acl_listvolume.TestVolumeList) ... === TestName: test_listVolume_as_regularuser_cross_domainid_accountid | Status : SUCCESS === ok test_listVolume_as_regularuser_domainid (integration.component.test_acl_listvolume.TestVolumeList) ... === TestName: test_listVolume_as_regularuser_domainid | Status : SUCCESS === ok test_listVolume_as_regularuser_domainid__rec_false (integration.component.test_acl_listvolume.TestVolumeList) ... === TestName: test_listVolume_as_regularuser_domainid__rec_false | Status : SUCCESS === ok test_listVolume_as_regularuser_domainid_accountid (integration.component.test_acl_listvolume.TestVolumeList) ... === TestName: test_listVolume_as_regularuser_domainid_accountid | Status : SUCCESS === ok test_listVolume_as_regularuser_domainid_accountid_listall_false (integration.component.test_acl_listvolume.TestVolumeList) ... === TestName: test_listVolume_as_regularuser_domainid_accountid_listall_false | Status : SUCCESS === ok test_listVolume_as_regularuser_domainid_accountid_listall_false_rec_false (integration.component.test_acl_listvolume.TestVolumeList) ... === TestName: test_listVolume_as_regularuser_domainid_accountid_listall_false_rec_false | Status : SUCCESS === ok test_listVolume_as_regularuser_domainid_accountid_listall_false_rec_true (integration.component.test_acl_listvolume.TestVolumeList) ... === TestName: test_listVolume_as_regularuser_domainid_accountid_listall_false_rec_true | Status : SUCCESS === ok test_listVolume_as_regularuser_domainid_accountid_listall_true (integration.component.test_acl_listvolume.TestVolumeList) ... === TestName: test_listVolume_as_regularuser_domainid_accountid_listall_true | Status : SUCCESS === ok test_listVolume_as_regularuser_domainid_accountid_listall_true_rec_false (integration.component.test_acl_listvolume.TestVolumeList) ... === TestName: test_listVolume_as_regularuser_domainid_accountid_listall_true_rec_false | Status : SUCCESS === ok test_listVolume_as_regularuser_domainid_accountid_listall_true_rec_true (integration.component.test_acl_listvolume.TestVolumeList) ... === TestName: test_listVolume_as_regularuser_domainid_accountid_listall_true_rec_true | Status : SUCCESS === ok test_listVolume_as_regularuser_domainid_accountid_rec_false (integration.component.test_acl_listvolume.TestVolumeList) ... === TestName: test_listVolume_as_regularuser_domainid_accountid_rec_false | Status : SUCCESS === ok test_listVolume_as_regularuser_domainid_accountid_rec_true (integration.component.test_acl_listvolume.TestVolumeList) ... === TestName: test_listVolume_as_regularuser_domainid_accountid_rec_true | Status : SUCCESS === ok test_listVolume_as_regularuser_domainid_listall_false (integration.component.test_acl_listvolume.TestVolumeList) ... === TestName: test_listVolume_as_regularuser_domainid_listall_false | Status : SUCCESS === ok test_listVolume_as_regularuser_domainid_listall_false_rec_false (integration.component.test_acl_listvolume.TestVolumeList) ... === TestName: test_listVolume_as_regularuser_domainid_listall_false_rec_false | Status : SUCCESS === ok test_listVolume_as_regularuser_domainid_listall_false_rec_true (integration.component.test_acl_listvolume.TestVolumeList) ... === TestName: test_listVolume_as_regularuser_domainid_listall_false_rec_true | Status : SUCCESS === ok test_listVolume_as_regularuser_domainid_listall_true (integration.component.test_acl_listvolume.TestVolumeList) ... === TestName: test_listVolume_as_regularuser_domainid_listall_true | Status : SUCCESS === ok test_listVolume_as_regularuser_domainid_listall_true_rec_false (integration.component.test_acl_listvolume.TestVolumeList) ... === TestName: test_listVolume_as_regularuser_domainid_listall_true_rec_false | Status : SUCCESS === ok test_listVolume_as_regularuser_domainid_listall_true_rec_true (integration.component.test_acl_listvolume.TestVolumeList) ... === TestName: test_listVolume_as_regularuser_domainid_listall_true_rec_true | Status : SUCCESS === ok test_listVolume_as_regularuser_domainid_true_rec_true (integration.component.test_acl_listvolume.TestVolumeList) ... === TestName: test_listVolume_as_regularuser_domainid_true_rec_true | Status : SUCCESS === ok test_listVolume_as_regularuser_listall_false (integration.component.test_acl_listvolume.TestVolumeList) ... === TestName: test_listVolume_as_regularuser_listall_false | Status : SUCCESS === ok test_listVolume_as_regularuser_listall_false_rec_false (integration.component.test_acl_listvolume.TestVolumeList) ... === TestName: test_listVolume_as_regularuser_listall_false_rec_false | Status : SUCCESS === ok test_listVolume_as_regularuser_listall_false_rec_true (integration.component.test_acl_listvolume.TestVolumeList) ... === TestName: test_listVolume_as_regularuser_listall_false_rec_true | Status : SUCCESS === ok test_listVolume_as_regularuser_listall_true (integration.component.test_acl_listvolume.TestVolumeList) ... === TestName: test_listVolume_as_regularuser_listall_true | Status : SUCCESS === ok test_listVolume_as_regularuser_listall_true_rec_false (integration.component.test_acl_listvolume.TestVolumeList) ... === TestName: test_listVolume_as_regularuser_listall_true_rec_false | Status : SUCCESS === ok test_listVolume_as_regularuser_listall_true_rec_true (integration.component.test_acl_listvolume.TestVolumeList) ... === TestName: test_listVolume_as_regularuser_listall_true_rec_true | Status : SUCCESS === ok test_listVolume_as_regularuser_rec_false (integration.component.test_acl_listvolume.TestVolumeList) ... === TestName: test_listVolume_as_regularuser_rec_false | Status : SUCCESS === ok test_listVolume_as_regularuser_rec_true (integration.component.test_acl_listvolume.TestVolumeList) ... === TestName: test_listVolume_as_regularuser_rec_true | Status : SUCCESS === ok test_listVolume_as_rootadmin (integration.component.test_acl_listvolume.TestVolumeList) ... === TestName: test_listVolume_as_rootadmin | Status : SUCCESS === ok test_listVolume_as_rootadmin_domainid (integration.component.test_acl_listvolume.TestVolumeList) ... === TestName: test_listVolume_as_rootadmin_domainid | Status : SUCCESS === ok test_listVolume_as_rootadmin_domainid_accountid (integration.component.test_acl_listvolume.TestVolumeList) ... === TestName: test_listVolume_as_rootadmin_domainid_accountid | Status : SUCCESS === ok test_listVolume_as_rootadmin_domainid_accountid_listall_false (integration.component.test_acl_listvolume.TestVolumeList) ... === TestName: test_listVolume_as_rootadmin_domainid_accountid_listall_false | Status : SUCCESS === ok test_listVolume_as_rootadmin_domainid_accountid_listall_false_rec_false (integration.component.test_acl_listvolume.TestVolumeList) ... === TestName: test_listVolume_as_rootadmin_domainid_accountid_listall_false_rec_false | Status : SUCCESS === ok test_listVolume_as_rootadmin_domainid_accountid_listall_false_rec_true (integration.component.test_acl_listvolume.TestVolumeList) ... === TestName: test_listVolume_as_rootadmin_domainid_accountid_listall_false_rec_true | Status : SUCCESS === ok test_listVolume_as_rootadmin_domainid_accountid_listall_true (integration.component.test_acl_listvolume.TestVolumeList) ... === TestName: test_listVolume_as_rootadmin_domainid_accountid_listall_true | Status : SUCCESS === ok test_listVolume_as_rootadmin_domainid_accountid_listall_true_rec_false (integration.component.test_acl_listvolume.TestVolumeList) ... === TestName: test_listVolume_as_rootadmin_domainid_accountid_listall_true_rec_false | Status : SUCCESS === ok test_listVolume_as_rootadmin_domainid_accountid_listall_true_rec_true (integration.component.test_acl_listvolume.TestVolumeList) ... === TestName: test_listVolume_as_rootadmin_domainid_accountid_listall_true_rec_true | Status : SUCCESS === ok test_listVolume_as_rootadmin_domainid_accountid_rec_false (integration.component.test_acl_listvolume.TestVolumeList) ... === TestName: test_listVolume_as_rootadmin_domainid_accountid_rec_false | Status : SUCCESS === ok test_listVolume_as_rootadmin_domainid_accountid_rec_true (integration.component.test_acl_listvolume.TestVolumeList) ... === TestName: test_listVolume_as_rootadmin_domainid_accountid_rec_true | Status : SUCCESS === ok test_listVolume_as_rootadmin_domainid_listall_false (integration.component.test_acl_listvolume.TestVolumeList) ... === TestName: test_listVolume_as_rootadmin_domainid_listall_false | Status : SUCCESS === ok test_listVolume_as_rootadmin_domainid_listall_false_rec_false (integration.component.test_acl_listvolume.TestVolumeList) ... === TestName: test_listVolume_as_rootadmin_domainid_listall_false_rec_false | Status : SUCCESS === ok test_listVolume_as_rootadmin_domainid_listall_false_rec_true (integration.component.test_acl_listvolume.TestVolumeList) ... === TestName: test_listVolume_as_rootadmin_domainid_listall_false_rec_true | Status : SUCCESS === ok test_listVolume_as_rootadmin_domainid_listall_true (integration.component.test_acl_listvolume.TestVolumeList) ... === TestName: test_listVolume_as_rootadmin_domainid_listall_true | Status : SUCCESS === ok test_listVolume_as_rootadmin_domainid_listall_true_rec_false (integration.component.test_acl_listvolume.TestVolumeList) ... === TestName: test_listVolume_as_rootadmin_domainid_listall_true_rec_false | Status : SUCCESS === ok test_listVolume_as_rootadmin_domainid_listall_true_rec_true (integration.component.test_acl_listvolume.TestVolumeList) ... === TestName: test_listVolume_as_rootadmin_domainid_listall_true_rec_true | Status : SUCCESS === ok test_listVolume_as_rootadmin_domainid_rec_false (integration.component.test_acl_listvolume.TestVolumeList) ... === TestName: test_listVolume_as_rootadmin_domainid_rec_false | Status : SUCCESS === ok test_listVolume_as_rootadmin_domainid_rec_true (integration.component.test_acl_listvolume.TestVolumeList) ... === TestName: test_listVolume_as_rootadmin_domainid_rec_true | Status : SUCCESS === ok test_listVolume_as_rootadmin_listall_false (integration.component.test_acl_listvolume.TestVolumeList) ... === TestName: test_listVolume_as_rootadmin_listall_false | Status : SUCCESS === ok test_listVolume_as_rootadmin_listall_false_rec_false (integration.component.test_acl_listvolume.TestVolumeList) ... === TestName: test_listVolume_as_rootadmin_listall_false_rec_false | Status : SUCCESS === ok test_listVolume_as_rootadmin_listall_false_rec_true (integration.component.test_acl_listvolume.TestVolumeList) ... === TestName: test_listVolume_as_rootadmin_listall_false_rec_true | Status : SUCCESS === ok test_listVolume_as_rootadmin_listall_true (integration.component.test_acl_listvolume.TestVolumeList) ... === TestName: test_listVolume_as_rootadmin_listall_true | Status : SUCCESS === ok test_listVolume_as_rootadmin_listall_true_rec_false (integration.component.test_acl_listvolume.TestVolumeList) ... === TestName: test_listVolume_as_rootadmin_listall_true_rec_false | Status : SUCCESS === ok test_listVolume_as_rootadmin_listall_true_rec_true (integration.component.test_acl_listvolume.TestVolumeList) ... === TestName: test_listVolume_as_rootadmin_listall_true_rec_true | Status : SUCCESS === ok test_listVolume_as_rootadmin_rec_false (integration.component.test_acl_listvolume.TestVolumeList) ... === TestName: test_listVolume_as_rootadmin_rec_false | Status : SUCCESS === ok test_listVolume_as_rootadmin_rec_true (integration.component.test_acl_listvolume.TestVolumeList) ... === TestName: test_listVolume_as_rootadmin_rec_true | Status : SUCCESS === ok test_listVolume_by_id_as_domainadmin_ownedbyusersindomain (integration.component.test_acl_listvolume.TestVolumeList) ... === TestName: test_listVolume_by_id_as_domainadmin_ownedbyusersindomain | Status : SUCCESS === ok test_listVolume_by_id_as_domainadmin_ownedbyusersinsubdomain (integration.component.test_acl_listvolume.TestVolumeList) ... === TestName: test_listVolume_by_id_as_domainadmin_ownedbyusersinsubdomain | Status : SUCCESS === ok test_listVolume_by_id_as_domainadmin_ownedbyusersinsubdomain2 (integration.component.test_acl_listvolume.TestVolumeList) ... === TestName: test_listVolume_by_id_as_domainadmin_ownedbyusersinsubdomain2 | Status : SUCCESS === ok test_listVolume_by_id_as_domainadmin_ownedbyusersnotindomain (integration.component.test_acl_listvolume.TestVolumeList) ... === TestName: test_listVolume_by_id_as_domainadmin_ownedbyusersnotindomain | Status : SUCCESS === ok test_listVolume_by_id_as_domainadmin_owns (integration.component.test_acl_listvolume.TestVolumeList) ... === TestName: test_listVolume_by_id_as_domainadmin_owns | Status : SUCCESS === ok test_listVolume_by_id_as_rootadmin_Volumesownedbyothers (integration.component.test_acl_listvolume.TestVolumeList) ... === TestName: test_listVolume_by_id_as_rootadmin_Volumesownedbyothers | Status : SUCCESS === ok test_listVolume_by_id_as_rootadmin_owns (integration.component.test_acl_listvolume.TestVolumeList) ... === TestName: test_listVolume_by_id_as_rootadmin_owns | Status : SUCCESS === ok test_listVolume_by_id_as_user_own (integration.component.test_acl_listvolume.TestVolumeList) ... === TestName: test_listVolume_by_id_as_user_own | Status : SUCCESS === ok test_listVolume_by_id_as_user_volumefromotherdomain (integration.component.test_acl_listvolume.TestVolumeList) ... === TestName: test_listVolume_by_id_as_user_volumefromotherdomain | Status : SUCCESS === ok test_listVolume_by_id_as_user_volumefromsamedomaindifferentaccount (integration.component.test_acl_listvolume.TestVolumeList) ... === TestName: test_listVolume_by_id_as_user_volumefromsamedomaindifferentaccount | Status : SUCCESS === ok ---------------------------------------------------------------------- Ran 95 tests in 139.480s OK Thanks, sangeetha hariharan --===============6932094565121646180==--