Prasanna does the regression test scripts call using 8096 port? If yes then that's the reason why the API is failing.
From: Alena Prokharchyk Sent: Thursday, July 18, 2013 4:13 PM To: [email protected]; Prachi Damle; Alex Huang Subject: Re: deleteAffinityGroup API If the API came through port 8096, then the caller comes as a System context (System default user id=1, account id=1). It was always like this since the time the UserContext was introduced. -Alena. From: Alex Huang <[email protected]<mailto:[email protected]>> Reply-To: "[email protected]<mailto:[email protected]>" <[email protected]<mailto:[email protected]>> Date: Thursday, July 18, 2013 4:00 PM To: Prachi Damle <[email protected]<mailto:[email protected]>>, "[email protected]<mailto:[email protected]>" <[email protected]<mailto:[email protected]>> Subject: RE: deleteAffinityGroup API This one is a problem. I will look into it. In the bug description, all the logs were background threads. All of CloudStack background threads act with system context. That's correct. That's why I closed it out. Here I think you're actually saying that when called through admin API, it came in as System context. That would be a bug if I understand you correctly. --Alex -----Original Message----- From: Prachi Damle Sent: Thursday, July 18, 2013 11:55 AM To: [email protected]<mailto:[email protected]> Cc: Alex Huang Subject: RE: deleteAffinityGroup API Hi Alex, The error thrown while deleting affinitygroup by Id is: " Account and domainId are needed for resource creation " Many of our APIs call AccntManager to figure out owner of the resources the API is working on like this: Account caller = CallContext.current().getCallingAccount(); //earlier it was using UserContext and was replaced by CallContext Account owner = _accountMgr.finalizeOwner(caller, account, domainId, null); And AccountManager: finalizeOwner has this check at start: if (caller.getId() == Account.ACCOUNT_ID_SYSTEM && ((accountName == null || domainId == null) && projectId == null)) { throw new InvalidParameterValueException("Account and domainId are needed for resource creation"); } Now the CallContext.current().getCallingAccount(); is returning the System user causing the subsequent failure. Why would it return system user, if the caller is admin user? Thanks, Prachi -----Original Message----- From: Prasanna Santhanam [mailto:[email protected]] Sent: Thursday, July 18, 2013 6:09 AM To: [email protected]<mailto:[email protected]> Subject: Re: deleteAffinityGroup API On Thu, Jul 18, 2013 at 02:17:46PM +0530, Prasanna Santhanam wrote: > On Thu, Jul 18, 2013 at 07:14:42AM +0000, Prachi Damle wrote: > > Account and domainId are not required parameters of this API. It > > works fine with just an id too. > > > > Account and domain will be used if delete is called providing a name > > of the group instead of id, say by an admin for a regular user's > > group. > > > > Thanks Prachi - I think it is related to the recent changes in > CallContext that is making the user system for the API call preventing > it from deleteing the aff.group with just an id. Filed a bug for it. Ok - Alex mentioned the bug is 'Not a Problem'. So it's only the background CS workers which use the CallContext. But the affinity group is still failing to delete using the id. -- Prasanna., ------------------------ Powered by BigRock.com
