Commit Graph

44 Commits

Author SHA1 Message Date
Alex Huang a73e3dc9ac new networking can be set by use.new.networking 2010-11-17 17:51:17 -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 050eed742f 1) Removed account/domainId info from deleteSnapshot and deleteSnapshotPolicy commands as we get account info from the snapshot/policy object.
2) Introduced responseObject field in @Implementation for all apis. This field contains information about the response object class, so we can used it for generating API documentation.
2010-11-12 17:36:17 -08:00
abhishek fc461abed1 bug 6755: adding checks for commands before they hit the ms; to ensure they are valid. Also returning the right error msg if the command is not valid
status 6755: resolved fixed
2010-11-12 13:55:06 -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
Alex Huang c8a3ea3080 merge conflict with alena's changes 2010-11-08 12:40:38 -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
abhishek d96a1a841d adding logic to prevent commands from being sent to the pool when it is NOT up; also adding better thread safety and db locking, along with a general refactor 2010-11-04 13:35:57 -07:00
abhishek 84ee08430a making changes to the list zones flow, to add the domain name to the table, and return it 2010-11-03 22:08:32 -07:00
root 3752a4eb31 making the logic more robust, testing more corner cases, improving efficiency and changing the schema 2010-11-01 09:04:51 -07:00
Kris McQueen 88dac13bb0 use the API response date format when serializing response objects 2010-10-29 13:23:29 -07:00
Kris McQueen 9056653e17 Change the API Implementation annotation to use the manager's class rather than an enum. This allows methods for new managers to be added trivially rather than having to modify the dispatcher to load a new manager class. 2010-10-27 12:23:31 -07:00
Alex Huang d5d8f27cad Added more changes to the api 2010-10-21 15:11:49 -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 2740ba6c40 final merge of master->2.1.refactor preparing for merge back into master 2010-10-12 14:46:24 -07:00
alena 136060e5cf 1) Finished XmlApiDoc writer. The program gets api classes from commands.properties.in file, and build Command objects with "name"/"description"/"request"/"response" fields. Request and response are represented by the list of arguments, each argument contains "name"/"description"/"isrequired" fields. The commands are being serialized to commands.xml using imported xstream library, and can be desiarialized later - it will help to compare commands from differemt product versions.
2) Added description() methods to Implementation and Param annotations.
2010-10-04 09:50:14 -07:00
edison ad1ef80459 Now we have multiple routing template and buitin templates now, refactor template download code, that can handle it.
Basically, change the meaning of type field in template table: SYSTEM means sytem vm template, BUILIIN means buildin templates.
2010-09-29 18:41:55 -07:00
Kris McQueen 95a7f20a0a Adding in XML response serializing. Now the new API framework supports both XML and JSON responses the way the old framework did. 2010-09-28 17:36:27 -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 122b15071d bug 6334: Correcting the syntax of json data when the response is empty.
status 6334: resolved fixed
2010-09-28 14:46:44 +05:30
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
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
kishan b606d14396 Bug 5904: Included version in API header 2010-09-20 15:00:57 +05:30
Kris McQueen 8bdb8f3581 Adding more db operations to the API utils class and removing them from ManagementServer. These methods delegate directly to the DAO and are cluttering ManagementServer with cover methods specifically for the API. Now that these methods are being moved to the API Utils class, ManagementServer has a smaller, cleaner API than before. 2010-09-15 12:16:00 -07:00
nit f5ac46255c bug 4286: Schema changes to include the upload table, Introducing extractIso command and extractVolume command 2010-09-15 17:51:42 +05:30
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 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
Kris McQueen df10af0688 cleaning up imports, fixing up some compilation problems related to API refactoring 2010-09-13 15:25:46 -07:00
Alex Huang 7249f168d5 more file changes 2010-09-09 13:27:20 -07:00
abhishek 3a2930e383 Adding another manager 2010-08-26 10:16:51 -07:00
abhishek 7f771cbe24 bug 5883: Final checkin for volume lineage
status 5853: RESOLVED FIXED
2010-08-23 16:17:18 -07:00
abhishek d468a0bd7f Incremental checkin 2010-08-19 16:40:41 -07:00
abhishek fcdeb5a97d Incremental checkin 2010-08-19 14:40:08 -07:00
Kris McQueen da03aee028 Add snapshot manager to the list of managers that can be invoked through the API. This prepares the way for refactoring createSnapshot, but since the method is an async create that also needs to create a policy first and generally does not follow any other patters, I'll do this one last. 2010-08-18 19:08:23 -07:00
Alex Huang b250b985ec changes 2010-08-18 12:19:22 -07:00
alena e2950eb5a1 Merge branch '2.1.refactor' of ssh://git.cloud.com/var/lib/git/cloudstack-oss into 2.1.refactor
Conflicts:
	server/src/com/cloud/api/BaseCmd.java
	server/src/com/cloud/network/security/NetworkGroupManagerImpl.java
2010-08-18 11:36:05 -07:00
alena 3d85fdf687 API refactor 2010-08-18 11:24:29 -07:00
abhishek 8f54cac031 Resolve conflicts
Merge branch '2.1.refactor' of ssh://git.cloud.com/var/lib/git/cloudstack-oss into 2.1.refactor

Conflicts:
	server/src/com/cloud/api/BaseCmd.java
2010-08-18 10:41:34 -07:00
abhishek e553bcde96 Refactoring the updateResourceLimits code, moving all logic to agent manager, updating the enum with a new manager type for reflection 2010-08-18 10:32:21 -07:00
Kris McQueen 21ab91dc2c refactoring CreateNetworkGroup API command to new API framework 2010-08-17 19:07:00 -07:00
Kris McQueen 5ed3ec9192 Add response object interface.
Add response objects for CreateDiskOffering and CreateDomain.
Move validation of parameters for CreateDiskOffering and CreateDomain to business logic, add getResponse logic for these commands.
2010-08-16 18:12:31 -07:00
Kris McQueen 96f76062f9 Moving createDiskOffering to configurationManager, make AssignToLoadBalancer async 2010-08-11 19:32:09 -07:00
Manuel Amador (Rudd-O) ac730ec496 Branch 2.1.refactor committed 2010-08-11 09:13:42 -07:00
Manuel Amador (Rudd-O) 05c020e1f6 Source code committed 2010-08-11 09:13:29 -07:00