Commit Graph

164 Commits

Author SHA1 Message Date
Alex Huang d140ca7555 Fixes the issue where the Job-Executor can hit an exception in cleanup and eventually the entire executor pool is gone. 2011-06-02 09:54:34 -07:00
alena b5aabfab75 bug 9898: fixed attachIso by domain admin - no need to make permission check when iso is public
status 9898: resolved fixed
2011-05-17 11:11:13 -07:00
alena a4619c8347 bug 9859: added missing permission checks to queryAsyncJobResult API
status 9859: resolved fixed

Conflicts:

	server/src/com/cloud/async/AsyncJobManagerImpl.java
2011-05-13 14:03:12 -07:00
alena 41e5e38fef bug 9336: securityGroups can be used by other securityGroups in the same domain only; no cross domain SG authentication
status 9336: resolved fixed

Following changes were made:

* deleteSecurityGroup/authorizeSecurityGroupIngress - removed account/domainId parameters as SG is uniquely identified by id now
* removed account_name field from securityGroup DB table; removed allowed_security_group/allowed_sec_grp_acct from security_ingress_rule.
These values were used for api response generation only for performance purposes; added caching on API level to improve performance
* Added missing security checks for securityGroups/ingressRules
2011-04-22 11:35:29 -07:00
alena 1a6d78eae4 Code cleanup. No need to declare runtime exceptions (CloudRuntimeException, InvalidParameterException, PermissionDenied exceptions) 2011-04-21 16:26:53 -07:00
Frank 92155522f2 Add license header to files 2011-04-14 11:23:14 -07:00
Kelven Yang 1b9cbd9166 bug 9223, 9224: persist runid to form cluster session, based on cluster session and DB condition to issue isolation notification for self-fencing 2011-04-13 15:13:54 -07:00
Alex Huang 075fba5899 stackmaid is now taskmanager 2011-04-05 10:17:22 -07:00
Alex Huang 9d158dc060 Removed the async create status for volume now that our customers don't use it 2011-03-24 20:04:23 -07:00
Kelven Yang 65d4cc98be Allow template re-deployment once template is deleted from hypervisor and CloudStack still holds out-dated status 2011-03-17 17:59:51 -07:00
Kelven Yang 6203ba6bfe bug 8558: improve cluster management 2011-03-09 17:18:48 -08:00
Kelven Yang 33b3333d65 Add JMX support to async job management, active job details will be checked in jConsole 2011-03-08 16:34:17 -08:00
Kelven Yang 2f5bacf980 bug 8768: merge fix in 2.2.2 to master 2011-02-28 15:59:21 -08:00
Kelven Yang 1d8eab2a11 Let reset job description to be in API standard 2011-02-22 17:40:05 -08:00
alena e4765fb32b bug 6969: return jobId/jobStatus for IpAddress and SecurityGroup as ids for these objects were introduced in 2.2.x 2011-02-22 09:09:55 -08:00
alena 6f55c4dd7e bug 8270: Synchronize on 1) ipAddress object when create/delete ipForwarding/portForwardingRule and vpn service 2) on networkId when assignTo/removeFrom/deleteLoadBalancer
status 8270: resolved fixed
2011-02-03 18:45:49 -08:00
alena 026e6905c9 bug 8343: in api commands extending BaseAsyncCreate set owner account information only after all request parameters were read as account/domainId information can be specified in the request
status 8343: resolved fixed
2011-02-03 09:53:18 -08:00
Kelven Yang 244d8c198b Cleanup UserContext after execution for better security 2011-01-26 17:06:14 -08:00
Kelven Yang 28bbba3cea Reset pending-only jobs upon management server startup 2011-01-25 11:19:35 -08:00
Alex Huang 73e5a789d1 removed useless code 2011-01-21 12:10:50 -08:00
Alex Huang 48ec23ce95 Removed a bunch of useless code 2011-01-21 12:10:50 -08:00
Alex Huang 16bb33979d bug 7896: Added check for template constraint in template_spool_ref table. Removed On delete cascade on the template_host_ref table 2011-01-19 17:05:58 -08:00
Kelven Yang ea88089fd2 Bug 7409: Implement forcely-cancelling mechenism for jobs that have been staying in queue for too long
1) introduced a global configuration variable job.cancel.threshold.minutes
2) Default value for the job.cancel.threshold.minutes is 60 minutes, if a job has been staying in processing state for over 60 minutes, system will forcely remove it from the queue to allow others to run
2011-01-05 15:44:10 -08:00
Alex Huang 4eba6d10d7 Moved State into VirtualMachine like other States of objects 2011-01-04 15:01:34 -08:00
Kelven Yang 7c5895d7d5 Bug 7598: add management server restart and peer-cleanup within cluster handling to async job processing 2011-01-03 16:47:46 -08:00
Kelven Yang 3a6a7e30ce Make management server peer in cluster to help cleanup left-over pending jobs 2010-12-30 18:53:26 -08:00
alena dfecc1f448 Changed account state to be in lower case. 2010-12-30 09:57:59 -08:00
Alex Huang 544fa7ff1b remote access vpn, user ip address changes 2010-12-29 09:32:54 -08:00
alena 7b3b9076b0 bug 6168: throw a runtime exception when unable to schedule Async job instead of returning jobId=0L
status 6168: resolved fixed
2010-12-27 17:00:29 -08:00
kishan bb0e6a0ae3 bug 7504: Events refactoring 2010-12-24 12:58:32 +05:30
Alex Huang 356526db83 Changed exception code to give the scope of the problem 2010-12-21 03:54:30 -08:00
abhishek 5154ba1539 bug 6361: this is a good point to commit; 1st round of refactor is done, code is clean compiling and ms is deploying 2010-12-16 15:37:19 -08:00
Alex Huang 65d0b32182 removed a bunch of old code 2010-12-16 14:04:32 -08:00
alena d077b127aa bug 7498: fixed search by keyword in listUserVm/listSystemVms/listRouters commands
status 7498: resolved fixed
2010-12-13 15:22:11 -08:00
alena 7e9579dab2 Fixed create/list LoadBalancerRules 2010-12-09 21:06:48 -08:00
Alex Huang e49fab6903 Renamed MauricMoss now that we're going public with this. 2010-12-08 09:28:01 -08:00
Alex Huang 16caf1954b New ip address states and mode 2010-12-04 17:32:32 -08:00
edison d17beeb348 move all the vm's state machine to itmgr->statetransitTO 2010-12-04 15:02:02 -08:00
Alex Huang 223688d0bf Port forwarding rules and load balancing rules rewrite 2010-12-03 08:48:02 -08:00
will c67d26cec4 bug 6969: First step of now displaying pending async jobs for listXXXCommands. There is a lot more cleanup and fixing to do but all commands acting against VirtualMachines now work. 2010-11-30 19:12:09 -08:00
alena aa8aa6027a Modified UserContext - got rid of accountName, domainId fields as we can get this information from Account field. 2010-11-24 14:29:08 -08:00
alena cb74030d01 bug 7298: throw an Exception when invalid job Id is specified in queryAsyncJobResult
status 7298: resolved fixed
2010-11-23 15:06:29 -08:00
Alex Huang d38f7fd56d Moved DAO to server 2010-11-22 07:40:41 -08:00
Alex Huang 1e44925564 api refactoring 2010-11-21 12:00:21 -08:00
alena c5d78a726e Modified exception handing in API. Following exceptions are supported now (location - BaseCmd.java):
* MALFORMED_PARAMETER_ERROR - when type of the request parameter is invalid (String instead of Long for id for example)
* PARAM_ERROR - when invalid parameter value is specified in api request. For example, id of non existing vm for StartVmCmd
* ACCOUNT_RESOURCE_LIMIT_ERROR - when user tries to exceed his resource limits by executing the api command.
* INSUFFICIENT_CAPACITY_ERROR - when resource fails to create/start due to insufficient capacity.
* RESOURCE_UNAVAILABLE_ERROR - when user tries to create a vm when storage is not available.
* RESOURCE_IN_USE_ERROR - when user tries to delete/modify resource while it's in use. For example, when we try to delete a network group when it contains ingress rules.
* NETWORK_RULE_CONFLICT_ERROR - when LB/PF rule to add conflicts with existing rule
* ACCOUNT_ERROR - when user is not authorized to execute operation on the resource.
* INTERNAL_ERROR
2010-11-16 11:56:34 -08:00
alena 5fafef9970 More api refactor - build api response is execute() method instead of getResponse method. 2010-11-09 09:58:05 -08:00
alena 1c24deda34 1) Refactored current Apis not to use reflection for method invocation. In new version following has to be done:
* Implement callCreate() and execute() methods in apis extending BaseAsyncCreateCmd (example - CreateVolumeCmd)
* Implement execute() method in apis extending BaseCmd and BaseAsyncCmd (example - deleteVolumeCmd and deleteUserCmd)

We no longer need createMethod(), method(), manager() fields in @Implementation annotation, cleanup has to be done.

2) Moved Account/User related methods to AccountManagerImpl. Methods are exposed via AccountService interface.
3) Enhanced exception handing for Api calls.
4) Created ConfigurationService interface, all Api config methods are exposed via it.
2010-11-08 11:27:36 -08:00
will 05ab3bf673 bug 7063: AsyncJobResult should now return the correct success and error tags upon the completion of a async job. It should now follow either the format ... jobresult.success or jobresult.errorcode and jobresult.errortext
- Fixed a lot of other Async related packaging issues.  It's not all done but will continue to refactor this later.
2010-11-05 17:30:03 -07:00
Alex Huang e27bb550fe Harmony among gurus 2010-11-03 21:18:31 -07:00
Alex Huang 560d7a275e Removed InternalErrorException. Renamed the lock methods on the DAO objects to be more understandable. 2010-11-02 12:25:08 -07:00
Alex Huang 3279c26796 Removed a bunch of InternalErrorException 2010-11-02 12:25:08 -07:00
kishan 3a0f30a049 bug 6408: remove security groups/port forwarding service in virtual network case
status 6408: resolved fixed
2010-11-01 14:28:03 +05:30
Kris McQueen 484f334d7a bug 6799: if there's an exception executing the Async command, create an error response with the appropriate information so that queryAsyncJobResult returns the relevant information
status 6799: resolved fixed
2010-10-27 18:23:23 -07:00
Kris McQueen e63d17dd41 bug 6739: stopSystemVm needs to return the appropriate VM instance type. The manager methods were returing VMInstanceVO, which is not sufficient for getting, for example, active viewer sessions from the console proxy object. Make sure the right VO object is returned, and all the data should be available for the API to generate a full response.
status 6739: resolved fixed
2010-10-26 17:33:53 -07:00
Kris McQueen a788d2cb2e bug 6736: rebootSystemVm should return the vm properties, not success true/false.
status 6736: resolved fixed
2010-10-26 17:19:55 -07:00
Alex Huang 2bc938c3f8 checkins for problems. 2010-10-26 09:35:24 -07:00
nit 497c60d63d Extending extract functionlity for volumes to allow download. The
extraction can have two modes FTP_UPLOAD and HTTP_DOWNLOAD. In the former one
the user would provide the ftp url where the entity needs to be uploaded and in
the later the user would be provided a HTTP URL where from he/she can download
the entity. This url would be exposed for a specific time limit and would not
function after the time limit
2010-10-26 18:49:43 +05:30
Kris McQueen e6f7a480ae bug 6674: Fix VM responses
- ostypeid -> guestosid
 - findRootVolume is now in ApiDBUtils (from mgmt server) since it's for API responses only
 - add rootdeviceid and rootdevicetype to various VM respones (listVirtualMachines, deployVirtualMachine, start/stopVirtualMachine)

status 6674: resolved fixed
2010-10-22 13:57:03 -07:00
nit 6723549fc7 bug 6399: extending extract functionlity for templates and ISO's to allow download. The extraction can have two modes FTP_UPLOAD and HTTP_DOWNLOAD. In the former one the user would provide the ftp url where the entity needs to be uploaded and in the later the user would be provided a HTTP URL where from he/she can download the entity. This url would be exposed for a specific time limit and would not function after the time limit. 2010-10-20 11:40:03 +05:30
Kris McQueen 8e086d7a21 resolving merge conflicts between 2.1.refactor and master 2010-10-12 16:28:16 -07:00
Kris McQueen 2740ba6c40 final merge of master->2.1.refactor preparing for merge back into master 2010-10-12 14:46:24 -07:00
Alex Huang ce091de3d2 more changes for refactor 2010-10-12 07:17:47 -07:00
nit 09768ca751 bug 5363: Adding Scheduled and Started event for SNAPSHOT.CREATE.
status 5363: resolved fixed
2010-10-04 19:51:19 +05:30
edison 26807bc701 bug 6362: Need to call guestos.getDisplayName to the guest os name now.
status 6362: resolved fixed
2010-09-30 12:26:37 -07:00
edison 7615f569ff after rebase, fix bugs 2010-09-29 18:41:55 -07:00
edison 6fc7528809 create data volume is splitted into two stage:
1. create a volume entry in the database,
2. when user attaching the volume to a VM, then actually create the volume on storage pool.
2010-09-29 18:41:54 -07:00
edison 9e0f57bc0e change code for new UI 2010-09-29 18:40:52 -07:00
edison 8943cc6745 create volume
Conflicts:

	api/src/com/cloud/vm/VmCharacteristics.java
	core/src/com/cloud/dc/ClusterVO.java
	core/src/com/cloud/server/ManagementServer.java
	server/src/com/cloud/network/NetworkManager.java
	server/src/com/cloud/storage/allocator/AbstractStoragePoolAllocator.java
2010-09-29 18:40:51 -07:00
Kris McQueen 9e2d1f5e70 Refactoring disableUser and disableAccount to new API framework (they are both async commands). 2010-09-29 13:57:26 -07:00
anthony 319d4f1aa0 snapshot redesign
1. use full snapshot and delta snapshot, there are maxsnashot/2 of delta snapshot between two full snapshot
2. only support one policy for one volume
3. remove all coleases in secondary storage.
2010-09-28 18:37:46 -07:00
Kris McQueen 848ce60097 Merging master into 2.1.refactor, resolve the merge conflicts as best I can. New commands related to extracting template/iso/volume and related to instance groups were refactored to the new API framework. 2010-09-28 15:47:14 -07:00
nit 27a32380f2 bug 5360: Adding scheduled and started events for USER.DELETE.
status 5360: resolved fixed
2010-09-27 20:39:05 +05:30
Kris McQueen 62257d4021 Fix serializing async job responses by writing a custom adapter for ResponseObjects. Improve exception handling when calling async commands (the job still needs to complete, but with FAILED status). 2010-09-24 13:52:35 -07:00
Kris McQueen 2a4ddac41a Change getResponse() to return a ResponseObject so that the caller can choose how to serialize. This in in preparation for serializing the async commands to the database with class information and deserializing them into the ResponseObject itself when queryAsyncJobResult is called. Once the ResponseObject is deserialized, the proper string can be returned to the caller.
The previous behavior had the JSON response from the command embedded into the queryAsyncJobResult response as a string rather than a JSON object which prevented the client from being able to read the response.  With this new behavior an actual JSON object should be returned which can then be parsed on the client side.
2010-09-23 17:34:28 -07:00
abhishek 188711c18d bug 6236: fixing some more api issues, this time with the stopped vm.
status 6236: resolved fixed
2010-09-23 16:21:10 -07:00
abhishek 24dd41f9d0 some api changes to enable vm functioning 2010-09-23 16:09:21 -07:00
abhishek eee7c2c97e bug 6212: returning a whole bunch of new params in the api response
status 6212: resolved fixed
2010-09-23 15:36:19 -07:00
abhishek 29f8c5d94c bug 6217: incremental checkin 2010-09-23 14:55:13 -07:00
abhishek 5d97c029bf bug 6217: incremental checkin 2010-09-23 14:55:13 -07:00
abhishek 2d67815ddf bug 6239: some changes to the router api
status 6239: resolved fixed
2010-09-23 10:23:03 -07:00
abhishek 29bf0cd718 bug 6238: fixing some api issues with the deploy vm cmd
status 6238: resolved fixed
2010-09-23 10:05:56 -07:00
abhishek 32884572b9 bug 6241: incremental checkin 2010-09-22 15:32:42 -07:00
nit 8b23507f68 bug 6270: Fixed DeleteTemplate so that QueryAsyncJob API returns jobresulttype and jobresult values as well on a successful Deletion of the template.
status 6270: resolved fixed
2010-09-22 15:36:38 +05:30
Kris McQueen c32d6e7524 Template id is not a required parameter when listing templates. The proper serialized name for the async job id is jobid, not id. Sadly, ctxAccoutId != ctxAccountId, ugh, no wonder the UserContext wasn't getting set up correctly. Clean up some miscellaneous unnecessary casts. 2010-09-21 17:00:50 -07:00
nit 0669c2c1d4 Merge branch 'master' of ssh://git.cloud.com/var/lib/git/cloudstack-oss 2010-09-21 13:37:47 +05:30
nit 7ff551bd5c bug 4286: Extract functionality - code cleanup 2010-09-21 13:36:57 +05:30
abhishek a9c96b4da0 bug 3120: incremental checkin 2010-09-20 14:54:06 -07:00
nit 33e683e2c7 bug 4286: Making ExtractVolumeCommand async and some code cleanup 2010-09-19 18:34:12 +05:30
nit 3b8c811143 bug 4286: Making ExtractVolumeCommand async and some code cleanup 2010-09-19 18:33:47 +05:30
Kris McQueen e2e0e76063 More work on serializing responses. Now responses have to have the name set on them, and the name will eventually be serialized to the JSON/XML response the way it used to work for commands themselves [the result of cmd.getName() was written to the response string]. For list respones, we wrap the individual objects in a ListResponse object that has the name of the response, and the individual objects have the object name so that accounts will be something like <listaccountsresponse><account><...></account><account><...></account></listaccountsresponse>. 2010-09-17 17:13:04 -07:00
Kris McQueen 4a73639d67 Fix up setting the response object correctly after dispatching the api method call. Begin working on the serialization of the responses which don't include the command name just yet, that's coming. 2010-09-17 14:56:55 -07:00
Kris McQueen d7b6ccd056 Comment out code in executors during the transition to the new API framework. The code is being left around for reference during testing/debugging of the new framework and will be removed in the future. 2010-09-17 11:13:29 -07:00
nit 636dc041c7 bug 4286: Making extractIsoCmd and extractTemplateCmd async 2010-09-17 17:04:07 +05:30
nit fceb9378ca bug 4286: Making extractIsoCmd and extractTemplateCmd async 2010-09-17 16:59:09 +05:30
Kris McQueen 19413d0bec Comment out executor code to make the branch compile. The executors will be removed after the branch has been thoroughly tested and regressions have been resolved, but in the mean time leave the code around so that it can be used to help debug any problems during the testing phase. 2010-09-16 19:09:04 -07:00
Kris McQueen 3f6a438d92 Refactoring the AsyncJobManager to queue jobs appropriately if there is a need to synchronize execution on an object, e.g. a router. API developers can now call command.synchronizeCommand(String, Long) to force the command to be synchronized on a particular object type [the string arg] with a particular id [the long arg]. When synchronizeCommand() is invoked, an exception maybe thrown by the framework (AsyncCommandQueued exception) to force the business logic to abort. The command will then be queued and invoked at the appropriate time. The synchronizeCommand() is re-entrant and will be a no-op if the command has already been queued and is now ready for execution. 2010-09-16 19:05:06 -07:00
alena 091b28a6b3 Modified addSecondaryStorage/addHost/updateHost/associateIpAddress/attachIso/copyIso/copyTemplate/deletePortForwardingService/startRouter/stopRouter/rebootRouter commands to new API framework. 2010-09-16 18:54:15 -07:00
alena b26ac321de bug 6177: Make VM group a first class object
1) Added new apis: createInstanceGroup, updateInstanceGroup, deleteInstanceGroup, listInstanceGroups
2) Group can be created using:
* createInsanceGroup api
* deployVirtualMachine/updateVirtualMachine commands (we create a group with name equal to "group" parameter value if the group doesn't exist already)
3) Group can be removed by:
* deleteInstanceGroup api
* when corresponding account is removed
4) Vm can be assigned to one group only. To move vm from one group to another, use updateVirtualMachine command with "group" parameter
5) Changed listVirtualMachines command to use "groupId" parameter instead of "group".

status 6177: resolved fixed
2010-09-14 19:08:01 -07:00
Kris McQueen dbb2897626 Unexposed parameters can now be assigned to commands. This are for internal use of the command, and will be serialized/deserialized during execution/response phases, but will not be accepted as part of the API request. Also create a DB utility file for the API to use which delegates requests to the DAOs. Mostly this utility class will look up objects by ID, and it allows the removal of similar methods from ManagementServer, thereby reducing some of the clutter in ManagementServer. 2010-09-14 14:54:04 -07:00
Kris McQueen f4caf145c3 Refactoring dispatching API commands from the scheduled async job. Instead of calling an executor, the dispatcher invokes the method on the manager directly. After the command is executed the response is serialized to the async job table so it can be queried later. Also serialize a response for async create commands that includes the id of the object being created. 2010-09-13 18:28:19 -07:00