I've been tinkering with: /usr/share/cloudstack-bridge/webapps/awsapi/WEB-INF/web.xml and added some servlet mappings (don't really know what I am doing):
<servlet-mapping> <servlet-name>EC2RestServlet</servlet-name> <url-pattern>/services/AmazonEC2</url-pattern> </servlet-mapping> <servlet-mapping> <servlet-name>EC2RestServlet</servlet-name> <url-pattern>/services/AmazonEC2/*</url-pattern> </servlet-mapping> which gets me past the EPR issue, but it caused an error on the client when attempting any of the ec2 commands (eg ec2-describe-instances). Don't know if these use rest on the backend so I also tried the following mapping: <servlet-mapping> <servlet-name>EC2RestServlet</servlet-name> <url-pattern>/services/AmazonEC2</url-pattern> </servlet-mapping> <servlet-mapping> <servlet-name>EC2RestServlet</servlet-name> <url-pattern>/services/AmazonEC2/*</url-pattern> </servlet-mapping> This causes a stack overflow in catalina so probably not the correct mapping.... I'll keep you posted if i figure anything else out... On Thu, Aug 1, 2013 at 6:35 AM, François Bousquet < francois.bousq...@radialpoint.com> wrote: > Same bug here with CloudStack 4.1.0 RPM. I had to manually copy > xes.keystore for the registration to work but now I am getting the same > error as you: > > The service cannot be found for the endpoint reference (EPR) > http://localhost:7080/awsapi/services/AmazonEC2/ > > I posted the question on Tuesday, but still no answer. > > -----Original Message----- > From: create...@gmail.com [mailto:create...@gmail.com] On Behalf Of > Carlos Reategui > Sent: Wednesday, July 31, 2013 19:14 > To: users@cloudstack.apache.org > Subject: Re: AWS API setup > > No luck with the EC2 api. I am seeing this in catalina log: > > Jul 31, 2013 3:54:41 PM org.apache.axis2.engine.AxisEngine receive > SEVERE: The service cannot be found for the endpoint reference (EPR) > http://localhost:7080/awsapi/services/AmazonEC2/ > org.apache.axis2.AxisFault: The service cannot be found for the endpoint > reference (EPR) http://localhost:7080/awsapi/services/AmazonEC2/ > at > > org.apache.axis2.engine.DispatchPhase.checkPostConditions(DispatchPhase.java:65) > at org.apache.axis2.engine.Phase.invoke(Phase.java:334) > at org.apache.axis2.engine.AxisEngine.invoke(AxisEngine.java:254) > at org.apache.axis2.engine.AxisEngine.receive(AxisEngine.java:160) > at > > org.apache.axis2.transport.http.HTTPTransportUtils.processHTTPPostRequest(HTTPTransportUtils.java:173) > at > org.apache.axis2.transport.http.AxisServlet.doPost(AxisServlet.java:144) > at javax.servlet.http.HttpServlet.service(HttpServlet.java:637) > at javax.servlet.http.HttpServlet.service(HttpServlet.java:717) > at > > org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290) > at > > org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) > at > > org.apache.catalina.core.ApplicationDispatcher.invoke(ApplicationDispatcher.java:646) > at > > org.apache.catalina.core.ApplicationDispatcher.processRequest(ApplicationDispatcher.java:436) > at > > org.apache.catalina.core.ApplicationDispatcher.doForward(ApplicationDispatcher.java:374) > at > > org.apache.catalina.core.ApplicationDispatcher.forward(ApplicationDispatcher.java:302) > at > > com.cloud.bridge.service.EC2MainServlet.doGetOrPost(EC2MainServlet.java:114) > at > com.cloud.bridge.service.EC2MainServlet.doPost(EC2MainServlet.java:89) > at javax.servlet.http.HttpServlet.service(HttpServlet.java:637) > at javax.servlet.http.HttpServlet.service(HttpServlet.java:717) > at > > org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290) > at > > org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) > at > > org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233) > at > > org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191) > at > > org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127) > at > > org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102) > at > org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:615) > at > > org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109) > at > org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:293) > at > > org.apache.coyote.http11.Http11NioProcessor.process(Http11NioProcessor.java:889) > at > > org.apache.coyote.http11.Http11NioProtocol$Http11ConnectionHandler.process(Http11NioProtocol.java:744) > at > > org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.run(NioEndpoint.java:2282) > at > > java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1146) > at > > java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615) > at java.lang.Thread.run(Thread.java:679) > > > > On Wed, Jul 31, 2013 at 2:22 PM, Carlos Reategui <car...@reategui.com > >wrote: > > > Looks like I'm on my own here.... > > > > I poked around the cloudstack-setup-databases script and the sql it > > uses drops the tables before recreating them so it is not safe for me > > to run that or it will kill my current cloud db. > > > > In that script I did find references to the cloud-bridge sql files > > found > > here: > > # ls -l /usr/share/cloudstack-bridge/setup/ > > total 56 > > -rw-r--r-- 1 root root 1592 Jun 4 11:45 cloudbridge_bucketpolicy.sql > > -rw-r--r-- 1 root root 1148 Jun 4 11:45 cloudbridge_db.sql > > -rw-r--r-- 1 root root 3711 Jun 4 11:45 cloudbridge_index.sql > > -rw-r--r-- 1 root root 1170 Jun 4 11:45 > > cloudbridge_multipart_alter.sql > > -rw-r--r-- 1 root root 2468 Jun 4 11:45 cloudbridge_multipart.sql > > -rw-r--r-- 1 root root 896 Jun 4 11:45 > > cloudbridge_offering_alter.sql > > -rw-r--r-- 1 root root 1551 Jun 4 11:45 cloudbridge_offering.sql > > -rw-r--r-- 1 root root 897 Jun 4 11:45 cloudbridge_policy_alter.sql > > -rw-r--r-- 1 root root 4462 Jun 4 11:45 cloudbridge_schema.sql > > -rw-r--r-- 1 root root 2365 Jun 4 11:45 deploy-db-bridge.sh > > -rw-r--r-- 1 root root 1377 Jun 4 11:45 init_db.bat > > > > I noticed the deploy-db-bridge.sh, so I ran it and now I have a > > cloudbridge db. > > > > Please note that this will set the cloud db user pw to cloud, so if > > you used a different pw make sure to: > > mysql> set password for 'cloud'@'%' = password('mypw'); set password > > mysql> for 'cloud'@'localhost' = password('mypw'); > > or your management server will not start. > > > > I then ran into this bug: > > https://issues.apache.org/jira/browse/CLOUDSTACK-3295 > > but I am on 4.1 not 4.2. > > > > Searching for "xes.keystore" I I found this in the debian install rules: > > > > for i in cloud-bridge.properties commons-logging.properties > > crypto.properties xes.keystore ec2-service.properties; do \ > > > > mv $(DESTDIR)/usr/share/$(PACKAGE) > > -bridge/webapps/awsapi/WEB-INF/classes/$$i $(DESTDIR)/$(SYSCONFDIR)/$( > > PACKAGE)/management/; \. > > > > Which is moving the files to /etc/cloudstack/management. So I moved > > these > > 2 back: > > # mv /etc/cloudstack/management/xes.keystore > > /usr/share/cloudstack-management/webapps7080/awsapi/WEB-INF/classes/. > > # mv /etc/cloudstack/management/crypto.properties > > /usr/share/cloudstack-management/webapps7080/awsapi/WEB-INF/classes/. > > > > Is this a bug in the debian packager? > > > > Now when I run the cloudstack-aws-api-register script I get: > > User registration failed with http error code: 401 > > > > The awsapi.log shows: > > 2013-07-31 12:16:11,245 ERROR [bridge.service.EC2RestServlet] > > (catalina-exec-int-1:null) SetUserKeys Entity already exists: > > javax.persistence.EntityExistsException: Entity already exists: > > at > > com.cloud.utils.db.GenericDaoBase.persist(GenericDaoBase.java:1340) > > at > > > com.cloud.utils.component.ComponentInstantiationPostProcessor$InterceptorDispatcher.intercept(ComponentInstantiationPostProcessor.java:125) > > at > > > com.cloud.bridge.service.EC2RestServlet.setUserKeys(EC2RestServlet.java:395) > > at > > > com.cloud.bridge.service.EC2RestServlet.doGetOrPost(EC2RestServlet.java:243) > > at > > com.cloud.bridge.service.EC2RestServlet.doGet(EC2RestServlet.java:218) > > at javax.servlet.http.HttpServlet.service(HttpServlet.java:617) > > at javax.servlet.http.HttpServlet.service(HttpServlet.java:717) > > at > > > org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290) > > at > > > org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) > > at > > > org.apache.catalina.core.ApplicationDispatcher.invoke(ApplicationDispatcher.java:646) > > at > > > org.apache.catalina.core.ApplicationDispatcher.processRequest(ApplicationDispatcher.java:436) > > at > > > org.apache.catalina.core.ApplicationDispatcher.doForward(ApplicationDispatcher.java:374) > > at > > > org.apache.catalina.core.ApplicationDispatcher.forward(ApplicationDispatcher.java:302) > > at > > > com.cloud.bridge.service.EC2MainServlet.doGetOrPost(EC2MainServlet.java:105) > > at > > com.cloud.bridge.service.EC2MainServlet.doGet(EC2MainServlet.java:84) > > at javax.servlet.http.HttpServlet.service(HttpServlet.java:617) > > at javax.servlet.http.HttpServlet.service(HttpServlet.java:717) > > at > > > org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290) > > at > > > org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) > > at > > > org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233) > > at > > > org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191) > > at > > > org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127) > > at > > > org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102) > > at > > org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:615) > > at > > > org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109) > > at > > > org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:293) > > at > > > org.apache.coyote.http11.Http11NioProcessor.process(Http11NioProcessor.java:889) > > at > > > org.apache.coyote.http11.Http11NioProtocol$Http11ConnectionHandler.process(Http11NioProtocol.java:744) > > at > > > org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.run(NioEndpoint.java:2282) > > at > > > java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1146) > > at > > > java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615) > > at java.lang.Thread.run(Thread.java:679) > > > > So looks like one of the previous attempts even though they failed, > > did something. > > > > I'll give the ec2 apis a try and see if they work. > > > > > > On Fri, Jul 26, 2013 at 5:39 PM, Carlos Reategui <car...@reategui.com > >wrote: > > > >> I can't seem to find docs to properly install the AWS API. > >> > >> I started with this: > >> http://cloudstack.apache.org/docs/en-US/Apache_CloudStack/4.1.0/html/ > >> Installation_Guide/aws-ec2-user-setup.html > >> but got nowhere because port 7080 was not available. > >> > >> I am on ubuntu 12.04 installed from repo -- actually upgraded 4.01 to > >> 4.1 > >> -- did not have awsapi installed before. > >> > >> Here is the progress I have made so far: > >> a) apt-get install cloudstack-awsapi > >> This should probably be explained in the above docs to get the awsapi > >> on > >> 7080 > >> b) chgrp cloud /var/log/cloudstack/awsapi; chmod g+w > >> /var/log/cloudstack/awsapi Otherwise it was unable to create > >> awsapi.log. Seems to be an installation bug. > >> > >> Currently stuck trying to "cloudstack-aws-api-register" as it is > >> returning "User registration failed with http error code: 500" > >> > >> From the awsapi logs looks to be a problem with cloudbridge database > >> not available. I found this > >> https://issues.apache.org/jira/browse/CLOUDSTACK-1557 which seems to > >> imply this was fixed. In the notes it talks about running > >> cloudstack-setup-databases to create this one. However shouldn't > >> this have already been run as part of the cloudstack install? Is it > >> safe to run again? > >> > >> With regards to cloudstack-aws-api-register, the docs say to download > >> it from a location it specifies. There appears to be one that is > >> already installed by cloudstack-awsapi: > >> # dpkg -S /usr/bin/cloudstack-aws-api-register > >> cloudstack-awsapi: /usr/bin/cloudstack-aws-api-register > >> Is the one that is installed no good? > >> > >> thanks, > >> Carlos > >> > >> > >> > > > *********************************************************************** > This e-mail and attachments are confidential, legally privileged, may be > subject to copyright and sent solely for the attention of the addressee(s). > Any unauthorized use or disclosure is prohibited. Statements and opinions > expressed in this e-mail may not represent those of Radialpoint. > ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Le contenu du présent > courriel est confidentiel, privilégié et peut être soumis à des droits > d'auteur. Il est envoyé à l'intention exclusive de son ou de ses > destinataires. Il est interdit de l'utiliser ou de le divulguer sans > autorisation. Les opinions exprimées dans le présent courriel peuvent > diverger de celles de Radialpoint. >