Commit Graph

281 Commits

Author SHA1 Message Date
prachi 8570b25506 NAAS: APIServer changes to introduce framework to read commands from pluggable components having separate commands.properties file
Changes:
- Added a new interface 'PluggableService'
- Any component that can be packaged separately from cloudstack, can implement this interface and provide its own property file listing the API commands the component supports
- As an example have made VirtualNetworkApplianceService pluggable and a new configureRouter command is added
- ComponentLocator reads all the pluggable service from componentLibrary or from components.xml and instantiates the services.
- As an example, DefaultComponentLibrary adds the pluggable service 'VirtualNetworkApplianceService'
- Also components.xml.in has an entry to show how a pluggable service can be added, but it is commented out.
- APIServer now reads the commands for each pluggable service and when a command for such a service is called, APIServer sets the required instance of the pluggable service in the coomand.
- To do this a new annotation '@PlugService' is added that is processed by APIServer. This eliminates the dependency on the BaseCmd to instantiate the service instances.
2011-10-11 17:34:57 -07:00
alena a1331d1cfc Intermidiate checkin to Project feature:
1) Introduce new managers - ProjectManager and DomainManager. Moved all domain related code from AccountManager to DomainManager.
2) Moved some code from ManagementServerImpl to the correct managers.
3) New resource limit for Domain - Project
2011-09-20 18:35:28 -07:00
alena b883b25a12 bug 11348: make content type for "json" files configurable
status 11348: resolved fixed
2011-09-07 14:22:01 -07:00
kishan 066537a565 bug 4282: Removed caching of signatures. Added detailed error message expires parameter parsing 2011-09-07 17:51:09 +05:30
alena 39b78ee17c bug 11298: give detailed error message when failed to authenticate a user
status 11298: resolved fixed
2011-08-30 16:51:45 -07:00
kishan 83991a8494 bug 4282: Storing signatures cache using ehcache. ToDo- Relicate cache for clustered mgmt server setup 2011-08-12 20:27:20 +05:30
kishan 219336e07c bug 4282: Initial Checkin. Added new parameters expires, signatureversion. Checking expires time and storing used signatures in-memory locally implemented. 2011-08-10 19:52:43 +05:30
frank 6aaf3d5ae0 Merge branch 'cvm'
Conflicts:
	api/src/com/cloud/api/BaseCmd.java
	api/src/com/cloud/storage/Storage.java
	cloud.spec
	core/src/com/cloud/storage/template/DownloadManagerImpl.java
	server/src/com/cloud/agent/manager/AgentManagerImpl.java
	server/src/com/cloud/configuration/DefaultComponentLibrary.java
	server/src/com/cloud/deploy/FirstFitPlanner.java
	server/src/com/cloud/host/dao/HostDao.java
	server/src/com/cloud/storage/StorageManagerImpl.java
	server/src/com/cloud/vm/UserVmManagerImpl.java
	server/src/com/cloud/vm/VirtualMachineManagerImpl.java
	utils/src/com/cloud/utils/SerialVersionUID.java
2011-08-08 14:14:09 -07:00
alena daad9e4b81 Keep "encode.api.response" parameter in ApiServer class; initialize it as a part of init() method 2011-06-21 11:05:57 -07:00
Frank 379cbc1d55 Store all parameters of url call to BaseCmd.fullUrlParams so there will be no
changes in future API because all parameters can be retrieve from API command itself
2011-06-08 10:25:15 -07:00
alena 3d3bfcddaa bug 9858: added missing security checks to listAsyncJobs command
status 9858: resolved fixed

Conflicts:

	server/src/com/cloud/api/ApiServer.java
2011-05-21 15:00:50 -07:00
Chiradeep Vittal 303e2a7481 Start of zonesfeature / mycloud/cloudkit 2011-05-03 10:40:17 -07:00
alena b7e4ec1749 bug 9564: 1) For all list commands set pageSize() to default.page.size if not specified 2) When pageSize is specified in the request, and it's more than default.page.size - throw an exception
status 9564: resolved fixed
2011-04-29 16:57:38 -07:00
will 633d024b7c - Merge all CloudZones Registration feature into master 2011-04-28 16:05:36 -07:00
alena c7e120a72e Transform InvalidParameterValueException and PermissionDeniedException to proper API exceptions 2011-04-19 17:07:05 -07:00
Frank 92155522f2 Add license header to files 2011-04-14 11:23:14 -07:00
Alex Huang 075fba5899 stackmaid is now taskmanager 2011-04-05 10:17:22 -07:00
alena af4459f24f Fixed list* api commands. 2011-04-04 11:36:49 -07:00
alena 2aeacd5a4c bug 3179: added "count" parameter to the response to all List* api commands 2011-04-01 19:29:08 -07:00
alena 2af8b32d31 bug 9245: save ownerAccountId (instead of callerAccountId) to account_id field in async_job table. We already save caller info to user_id field
status 9245: resolved fixed
2011-03-31 15:27:35 -07:00
nit ded1184548 bug 8710: Introducing a new user role in cloudstack called RESOURCE_DOMAIN_ADMIN. The role would have all the domain_admin rights and the rights to list zone,pods,clusters and so on. More info in the bug 2011-03-25 18:04:09 -07:00
alena 7dce8412e4 Fixed API xml doc generation 2011-03-23 12:12:29 -07:00
alena d3f04b2b38 bug 8945: introduced "default.page.limit" config param (default value is 500). Used for pagination in API list* commands.
status 8945: resolved fixed
2011-03-15 15:06:52 -07: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 a05400604b bug 8565: throw unsupported error code when non existing api command is sent
status 8565: resolved fixed
2011-02-15 16:01:09 -08:00
abhishek f0f643dffe adding exceptions so that we can use login and logout commands via 8080 2011-02-08 14:06:33 -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
will 953c862713 Removed hypervisor.type from the login response since this capability does make sense anymore in 2.2 2011-01-20 17:49:13 -08:00
will 1634c29e81 - Cleaned up more capabilities related to security groups and to make use of listCapabilities. 2011-01-20 16:35:40 -08:00
kishan 94ec7bf27a bug 7842: events refactoring. Still wrok in progress 2011-01-20 21:49:50 +05:30
will d497a71619 Cleaned up uselocal storage config param as I don't see what it is beng used anymore as. Also, removed the filter for not allowing the user to set "offerHA" if hypervisor.type == KVM. 2011-01-19 16:06:47 -08:00
kishan 03a66d4b90 bug 7842: events refactoring 2011-01-14 18:55:54 +05:30
kishan a2752c6207 bug 7842: Move events to service layer from http api 2011-01-14 03:58:57 +05:30
alena c74fd529be bug 7611: get directPodBased default network when deploy vm with no networkId specified
status 7611: resolved fixed
2011-01-04 18:43:03 -08:00
alena 5743db87e1 bug 5482: build Error api response based on responseType(xml, json) specified in the request instead of using default HttpServlet error response format
status 5482: resolved fixed
2011-01-04 15:08:12 -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
abhishek 5d3173eabf bug 7721: generically fixing the url decoder issue for all commands, wherein we block any input which contains % eg. name, displayText. We throw the apt error back to the UI for the user to act upon
status 7721: resolved fixed
2010-12-28 14:23:21 -08:00
alena 2d316eabb7 bug 6056: Changed format for API error response.
status 6056: resolved fixed

Example of error response:

Json:

 { "updatedomainresponse" : {"errorcode" : "431, "errortext" : "Unable to find domain 4"}  }

Xml:

<updatedomainresponse cloud-stack-version="1.9.1.2010-12-28T18:14:57Z">
<errorcode>431</errorcode>
<errortext>Unable to find domain 4</errortext>
</updatedomainresponse>
2010-12-28 10:36:04 -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
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
alena 52e6e4d06e bug 6930: return async job info in listHost/listStoragePools commands
status 6930: resolved fixed
2010-12-15 18:58:56 -08:00
abhishek 61cf2308a1 bug 7264: removing the unused param direct.attach.untagged.vlan.enabled; also changing the use of this param to Data_center.networktype.basic usage as this maps to the removed param in the case of direct untagged network. This is used in a check in recreatehostallocator 2010-12-08 16:11:16 -08:00
abhishek 8fa364e4d5 first part of checkin, wherein network.type param is being removed 2010-12-08 09:58:12 -08:00
Alex Huang 96ac136b8c changed getAccountId to getEntityOwnerId 2010-12-03 11:59:45 -08:00
Alex Huang b859e103d8 ip nat rule forwarding done 2010-12-03 08:48:03 -08:00
will cd5afb3d7e bug 6969: Fixed snapshots, templates, isos, routers, volumes, and system vms async commands to make use of the new job id/job status when listing objects with pending jobs. 2010-12-01 16:50:56 -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
Kelven Yang 54f177cacc 1) Make generic dao be able to persist UTF-8 string for internationalization support
2) Undo gson Unicode escape in API response object to avoid double escaping which can break Javascript from getting correct text content
3) Correct API layer in dealing with character encoding
4) Remove double escape in cloud.core.js
2010-11-30 09:40:54 -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
Alex Huang 1e44925564 api refactoring 2010-11-21 12:00:21 -08:00
Alex Huang a73e3dc9ac new networking can be set by use.new.networking 2010-11-17 17:51:17 -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
Alex Huang c6033baa78 system vm start and stop added 2010-11-11 12:53:19 -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 d5d8f27cad Added more changes to the api 2010-10-21 15:11:49 -07:00
Kris McQueen f4f00cbe2d bug 6655: when verifying request signature for API requests that use keys, pass the userId of the requester as a Long to avoid NPEs when converting it to a string. Also set up the UserContext for both normal users and admins.
status 6655: resolved fixed
2010-10-19 11:41:09 -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
Kris McQueen 9c593352d0 Fixing events for async jobs so that there's a scheduled event recorded with appropriate type/description whenever the API framework schedules the async command to run. A few miscellaneous fixes as well uncovered during regression testing (router response was not parsed correctly by UI, etc.) 2010-10-05 20:26:18 -07:00
nit f7f2b5666a bug 5871: removing the NDC since there is no nested context involved in the audit trail and since its leaking into the management server logs. 2010-10-05 19:51:12 +05:30
nit 38fd80e522 bug 5871: Introducing audit trail for all the interactions with the cloud stack - User 'X' initiated an action 'Y' on resource 'Z'. The audit will contain http api request along with the contextual parameters (userId, accountId, sessionId). For the response part only log success/failure for all sync api's with the exception of queryAsyncJob where reason code and reason will also be logged. For async api's I will also log the async job id. 2010-10-04 14:27:40 +05:30
Kris McQueen 41a16a478a Fixes required for regressions found running automated tests. (1) method signatures that weren't properly refactored to new API framework (2) API request parameter types should always be specified lest they default to String which may or may not be desired (3) better exception handling with regard to Queued commands and generic exceptions (4) fix eventing to pass the proper accountId where neccessary 2010-10-01 14:11:18 -07:00
Kris McQueen 0105aec338 Always set the response type on the command object so that the correct output is generated. Add both Strings and Longs to the login response (domainId and userId will be the Longs). Use the correct method name for ListSystemVMsCmd. 2010-09-29 17:32:19 -07:00
Kris McQueen da660f2575 Change session parameters to be their actual type (domainId and userId are saved to the session as Longs and not Strings) 2010-09-29 15:18:43 -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
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
Kris McQueen e31f89e6a9 Set up accountId in the AsyncJob since it's needed for proper validation when querying the job status. 2010-09-21 18:26:34 -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
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
Kris McQueen a8112f65de When using session based authentication, we now store the parameters in the session as part of the login processing, instead of returning those parameters so that the caller has to update the session. Authentication now throws an exception on failure and the caught exception is where the session is invalidated. 2010-09-13 17:04:11 -07:00
Kris McQueen 449d1f3acf working through some compilation errors that have arisen due to all the API refactoring... 2010-09-13 14:46:23 -07:00
Alex Huang b250b985ec changes 2010-08-18 12:19:22 -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