Return-Path: X-Original-To: apmail-stratos-dev-archive@minotaur.apache.org Delivered-To: apmail-stratos-dev-archive@minotaur.apache.org Received: from mail.apache.org (hermes.apache.org [140.211.11.3]) by minotaur.apache.org (Postfix) with SMTP id BB59C18CEE for ; Thu, 25 Jun 2015 11:49:43 +0000 (UTC) Received: (qmail 38521 invoked by uid 500); 25 Jun 2015 11:49:43 -0000 Delivered-To: apmail-stratos-dev-archive@stratos.apache.org Received: (qmail 38467 invoked by uid 500); 25 Jun 2015 11:49:43 -0000 Mailing-List: contact dev-help@stratos.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: dev@stratos.apache.org Delivered-To: mailing list dev@stratos.apache.org Received: (qmail 38456 invoked by uid 99); 25 Jun 2015 11:49:43 -0000 Received: from mail-relay.apache.org (HELO mail-relay.apache.org) (140.211.11.15) by apache.org (qpsmtpd/0.29) with ESMTP; Thu, 25 Jun 2015 11:49:43 +0000 Received: from mail-yk0-f174.google.com (mail-yk0-f174.google.com [209.85.160.174]) by mail-relay.apache.org (ASF Mail Server at mail-relay.apache.org) with ESMTPSA id 1F25C1A05A2 for ; Thu, 25 Jun 2015 11:49:43 +0000 (UTC) Received: by ykfy125 with SMTP id y125so39134417ykf.1 for ; Thu, 25 Jun 2015 04:49:42 -0700 (PDT) X-Received: by 10.170.96.131 with SMTP id n125mr42997439yka.53.1435232982235; Thu, 25 Jun 2015 04:49:42 -0700 (PDT) MIME-Version: 1.0 Received: by 10.13.222.134 with HTTP; Thu, 25 Jun 2015 04:49:22 -0700 (PDT) In-Reply-To: <07110D8A7AC60C49AE2432100017A3F628A1A4B5@xmb-rcd-x12.cisco.com> References: <07110D8A7AC60C49AE2432100017A3F628A1A43A@xmb-rcd-x12.cisco.com> <07110D8A7AC60C49AE2432100017A3F628A1A47F@xmb-rcd-x12.cisco.com> <07110D8A7AC60C49AE2432100017A3F628A1A4B5@xmb-rcd-x12.cisco.com> From: Imesh Gunaratne Date: Thu, 25 Jun 2015 17:19:22 +0530 Message-ID: Subject: Re: Testing Stratos 4.1 - application removal still fails in certain cases To: dev Cc: Reka Thirunavukkarasu , "Ryan Du Plessis (rdupless)" , "Shaheedur Haque (shahhaqu)" Content-Type: multipart/related; boundary=001a113b445613b7da05195638fd --001a113b445613b7da05195638fd Content-Type: multipart/alternative; boundary=001a113b445613b7d605195638fc --001a113b445613b7d605195638fc Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: quoted-printable Hi Martin, Do we know whether this error is correct in this scenario? org.apache.stratos.rest.endpoint.exception.RestAPIException: Cannot remove cartridge group: [group-name] sub-G1-G2-G3-1 since it is used in another cartridge group or an application BTW it would be better if we can list the groups/applications which are referring this cartridge group in the error message. Thanks On Thu, Jun 25, 2015 at 5:10 PM, Martin Eppel (meppel) wrote: > Before an application is deployed, our =E2=80=9Cwrapper code=E2=80=9D tr= ies to remove > any cartridge group within the application which causes the following > exception: > > > > TID: [0] [STRATOS] [2015-06-25 09:55:30,791] DEBUG > {org.apache.stratos.autoscaler.registry.RegistryManager} - > org.apache.stratos.autoscaler.pojo.ServiceGroup@6aa447a0 > > TID: [0] [STRATOS] [2015-06-25 09:55:30,810] ERROR > {org.apache.stratos.rest.endpoint.api.StratosApiV41Utils} - Cannot remov= e > cartridge group: [group-name] sub-G1-G2-G3-1 since it is used in another > cartridge group or an application > > TID: [0] [STRATOS] [2015-06-25 09:55:30,811] ERROR > {org.apache.stratos.rest.endpoint.handlers.CustomExceptionMapper} - Cann= ot > remove cartridge group: [group-name] sub-G1-G2-G3-1 since it is used in > another cartridge group or an application > > org.apache.stratos.rest.endpoint.exception.RestAPIException: Cannot remov= e > cartridge group: [group-name] sub-G1-G2-G3-1 since it is used in another > cartridge group or an application > > at > org.apache.stratos.rest.endpoint.api.StratosApiV41Utils.removeServiceGrou= p(StratosApiV41Utils.java:1252) > > at > org.apache.stratos.rest.endpoint.api.StratosApiV41.removeServiceGroup(Str= atosApiV41.java:587) > > at sun.reflect.NativeMethodAccessorImpl.invoke0(Native > Method) > > at > sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java= :57) > > at > sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorI= mpl.java:43) > > at java.lang.reflect.Method.invoke(Method.java:606) > > at > org.apache.cxf.service.invoker.AbstractInvoker.performInvocation(Abstract= Invoker.java:180) > > at > org.apache.cxf.service.invoker.AbstractInvoker.invoke(AbstractInvoker.jav= a:96) > > at > org.apache.cxf.jaxrs.JAXRSInvoker.invoke(JAXRSInvoker.java:194) > > at > org.apache.cxf.jaxrs.JAXRSInvoker.invoke(JAXRSInvoker.java:100) > > at > org.apache.cxf.interceptor.ServiceInvokerInterceptor$1.run(ServiceInvoker= Interceptor.java:57) > > at > org.apache.cxf.interceptor.ServiceInvokerInterceptor.handleMessage(Servic= eInvokerInterceptor.java:93) > > at > org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorCh= ain.java:271) > > at > org.apache.cxf.transport.ChainInitiationObserver.onMessage(ChainInitiatio= nObserver.java:121) > > at > org.apache.cxf.transport.http.AbstractHTTPDestination.invoke(AbstractHTTP= Destination.java:239) > > at > org.apache.cxf.transport.servlet.ServletController.invokeDestination(Serv= letController.java:223) > > at > org.apache.cxf.transport.servlet.ServletController.invoke(ServletControll= er.java:203) > > at > org.apache.cxf.transport.servlet.ServletController.invoke(ServletControll= er.java:137) > > at > org.apache.cxf.transport.servlet.CXFNonSpringServlet.invoke(CXFNonSpringS= ervlet.java:159) > > at > org.apache.cxf.transport.servlet.AbstractHTTPServlet.handleRequest(Abstra= ctHTTPServlet.java:286) > > at > org.apache.cxf.transport.servlet.AbstractHTTPServlet.doDelete(AbstractHTT= PServlet.java:217) > > at > javax.servlet.http.HttpServlet.service(HttpServlet.java:761) > > at > org.apache.cxf.transport.servlet.AbstractHTTPServlet.service(AbstractHTTP= Servlet.java:262) > > at > org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(Applicat= ionFilterChain.java:305) > > at > org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilte= rChain.java:210) > > at > org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve= .java:222) > > at > org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve= .java:123) > > at > org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorB= ase.java:472) > > at > org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:= 171) > > at > org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:= 99) > > at > org.wso2.carbon.tomcat.ext.valves.CompositeValve.continueInvocation(Compo= siteValve.java:178) > > > > *From:* Imesh Gunaratne [mailto:imesh@apache.org] > *Sent:* Thursday, June 25, 2015 4:29 AM > *To:* dev > *Cc:* Reka Thirunavukkarasu; Ryan Du Plessis (rdupless); Shaheedur Haque > (shahhaqu) > > *Subject:* Re: Testing Stratos 4.1 - application removal still fails in > certain cases > > > > Hi Martin, > > > > On Thu, Jun 25, 2015 at 4:38 PM, Martin Eppel (meppel) > wrote: > > > > What happens if I want to restart / redeploy the application - currently= , > when I try to re-deploy the application it throws an exception that the > cartridge group is still referenced by another application ? > > > > Will you be able to send the log file related to this error? > > > > On Thu, Jun 25, 2015 at 4:38 PM, Martin Eppel (meppel) > wrote: > > > > What happens if I want to restart / redeploy the application - currently= , > when I try to re-deploy the application it throws an exception that the > cartridge group is still referenced by another application ? Even if the > group would not exist, wouldn=E2=80=99t stratos throw an exception that t= he > application already exists ? What is the proper way to restart / redeploy > an application ? > > > > Thanks > > > > Martin > > > > Adding Shaheed > > > > *From:* Reka Thirunavukkarasu [mailto:reka@wso2.com] > *Sent:* Thursday, June 25, 2015 3:45 AM > *To:* Martin Eppel (meppel) > *Cc:* dev@stratos.apache.org; Ryan Du Plessis (rdupless) > *Subject:* Re: Testing Stratos 4.1 - application removal still fails in > certain cases > > > > Hi Martin, > > > > On Thu, Jun 25, 2015 at 3:58 PM, Martin Eppel (meppel) > wrote: > > Hi Reka, > > > > I pulled the latest code today and tested the following application [1a.= , > 1b.] for removal and, after all the instances were terminated the > application still shows in the =E2=80=9CCreated=E2=80=9D state [1c.] an= d maintains a > reference to the cartridge groups, my expectation would be that it had be= en > removed completely ! > > > > This is the expected behaviour. This is the status of the application > definition. I just verified it in the CLI. After the successful > undeployment, it shows as below for me. > > Applications found: > +----------------+------------+---------+ > | Application ID | Alias | Status | > +----------------+------------+---------+ > | g-sc-G12-1 | g-sc-G12-1 | Created | > +----------------+------------+---------+ > > In order to check the runtime, you will have to invoke below command: > > stratos> describe-application-runtime g-sc-G12-1 > Application not found: g-sc-G12-1 > stratos> > > However there seems to be a small issue with this message as it says > applicaiton not found instead of application runtime. We will fix this AS= AP > in the cli. > > If you invoke rest endpoint, you will get the following message: > > curl -X GET -H "Content-Type: application/json" -k -v -u admin:admin > https://127.0.0.1:9443/api/applications/g-sc-G12-1/runtime > > {"status":"error","message":"Application runtime not found"} > > Please let me know if you still have any issues.. > > Thanks, > > Reka > > > > > > The logs actually state that the application was successfully un-deployed > !? Logs are attached as usual, application json, group json are below > > > > TID: [0] [STRATOS] [2015-06-25 09:48:23,302] INFO > {org.apache.stratos.autoscaler.applications.topic.ApplicationBuilder} - > Application un-deployed successfully: [application-id] sub-G1-G2-G3-1 > > > > Please note that the screenshot was taken after the request to remove the > application was done. > > > > > > [1a.] > > > > [1b] > > > > Cartridge-group: > > > > {"name": "sub-G1-G2-G3-1", "dependencies": {"terminationBehaviour": > "terminate-none", "startupOrders": []}, "cartridges": [], "groups": > [{"name": "multiple-groups-no-startup-G1-1", "dependencies": > {"terminationBehaviour": "terminate-none", "startupOrders": []}, > "cartridges": ["c1", "c2"], "groups": []}, {"name": > "multiple-groups-no-startup-G2-1", "dependencies": {"terminationBehaviour= ": > "terminate-none", "startupOrders": []}, "cartridges": ["c3", "c4"], > "groups": []}]} > > > > > > Application: > > > > {"alias": "sub-G1-G2-G3-1", "applicationId": "sub-G1-G2-G3-1", > "components": {"cartridges": [], "groups": [{"name": "sub-G1-G2-G3-1", > "groupMaxInstances": 1, "groupMinInstances": 1, "alias": > "sub-G1-G2-G3-1-x0x", "cartridges": [], "groups": [{"name": > "multiple-groups-no-startup-G1-1", "groupMaxInstances": 1, > "groupMinInstances": 1, "alias": "multiple-groups-no-startup-G1-1-0x0", > "cartridges": [{"cartridgeMin": 1, "cartridgeMax": 1, "type": "c1", > "subscribableInfo": {"alias": "c1-1x0", "deploymentPolicy": "static-1", > "artifactRepository": {"repoUsername": "user", "repoUrl": " > http://octl.qmog.cisco.com:10080/git/default.git", "privateRepo": true, > "repoPassword": "c-policy"}, "autoscalingPolicy": "economyPolicy"}}, > {"cartridgeMin": 1, "cartridgeMax": 1, "type": "c2", "subscribableInfo": > {"alias": "c2-1x0", "deploymentPolicy": "static-1", "artifactRepository": > {"repoUsername": "user", "repoUrl": " > http://octl.qmog.cisco.com:10080/git/default.git", "privateRepo": true, > "repoPassword": "c-policy"}, "autoscalingPolicy": "economyPolicy"}}], > "groups": []}, {"name": "multiple-groups-no-startup-G2-1", > "groupMaxInstances": 1, "groupMinInstances": 1, "alias": > "multiple-groups-no-startup-G2-1-0x0", "cartridges": [{"cartridgeMin": 1, > "cartridgeMax": 1, "type": "c3", "subscribableInfo": {"alias": "c3-1x1", > "deploymentPolicy": "static-1", "artifactRepository": {"repoUsername": > "user", "repoUrl": "http://octl.qmog.cisco.com:10080/git/default.git", > "privateRepo": true, "repoPassword": "c-policy"}, "autoscalingPolicy": > "economyPolicy"}}, {"cartridgeMin": 1, "cartridgeMax": 1, "type": "c4", > "subscribableInfo": {"alias": "c4-1x1", "deploymentPolicy": "static-1", > "artifactRepository": {"repoUsername": "user", "repoUrl": " > http://octl.qmog.cisco.com:10080/git/default.git", "privateRepo": true, > "repoPassword": "c-policy"}, "autoscalingPolicy": "economyPolicy"}}], > "groups": []}]}]}} > > > > > > [1c.] > > > > stratos> list-applications > > Applications found: > > +----------------+----------------+---------+ > > | Application ID | Alias | Status | > > +----------------+----------------+---------+ > > | sub-G1-G2-G3-1 | sub-G1-G2-G3-1 | Created | > > +----------------+----------------+---------+ > > stratos> > > > > > > > -- > > Reka Thirunavukkarasu > Senior Software Engineer, > WSO2, Inc.:http://wso2.com, > > Mobile: +94776442007 > > > > > > > > -- > > Imesh Gunaratne > > > > Senior Technical Lead, WSO2 > > Committer & PMC Member, Apache Stratos > --=20 Imesh Gunaratne Senior Technical Lead, WSO2 Committer & PMC Member, Apache Stratos --001a113b445613b7d605195638fc Content-Type: text/html; charset=UTF-8 Content-Transfer-Encoding: quoted-printable
Hi Martin,

Do we know whether this erro= r is correct in this scenario?

org.apache.stratos.rest.endpoint.exception.= RestAPIException: Cannot remove cartridge grou= p: [group-name] sub-G1-G2-G3-1 since it is used in another cartridge group = or an application

BTW it would be bette= r if we can list the groups/applications which are referring this cartridge= group in the error message.

Thanks

On Thu, Jun 25, 2015= at 5:10 PM, Martin Eppel (meppel) <meppel@cisco.com> wrote:<= br>

Before an application is = deployed, our =E2=80=9Cwrapper code=E2=80=9D tries to remove any cartridge = group within the application which causes the following exception:

=C2=A0

TID: [0] [STRATOS] [2015-= 06-25 09:55:30,791] DEBUG {org.apache.stratos.autoscaler.registry.RegistryM= anager} -=C2=A0 org.apache.stratos.autoscaler.pojo.ServiceGroup@6aa447a0=

TID: [0] [STRATOS] [2015-= 06-25 09:55:30,810] ERROR {org.apache.stratos.rest.endpoint.api.StratosApiV= 41Utils} -=C2=A0 Cannot remove cartridge group: [group-name] sub-G1-G2-G3-1 since it is used in another cartridge group or an applicati= on

TID: [0] [STRATOS] [2015-= 06-25 09:55:30,811] ERROR {org.apache.stratos.rest.endpoint.handlers.Custom= ExceptionMapper} -=C2=A0 Cannot remove cartridge group: [group-name] sub-G1-G2-G3-1 since it is used in another cartridge group or an applicati= on

org.apache.stratos.rest.e= ndpoint.exception.RestAPIException: Cannot remove cartridge group: [group-n= ame] sub-G1-G2-G3-1 since it is used in another cartridge group or an application

=C2=A0=C2=A0=C2=A0=C2=A0= =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 at org.apache.= stratos.rest.endpoint.api.StratosApiV41Utils.removeServiceGroup(StratosApiV= 41Utils.java:1252)

=C2=A0=C2=A0=C2=A0=C2=A0= =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 at org.apache.= stratos.rest.endpoint.api.StratosApiV41.removeServiceGroup(StratosApiV41.ja= va:587)

=C2=A0=C2=A0=C2=A0=C2=A0= =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 at sun.reflect= .NativeMethodAccessorImpl.invoke0(Native Method)

=C2=A0=C2=A0=C2=A0=C2=A0= =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 at sun.reflect= .NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)

=C2=A0=C2=A0=C2=A0=C2=A0= =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 at sun.reflect= .DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)<= u>

=C2=A0=C2=A0=C2=A0=C2=A0= =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 at java.lang.r= eflect.Method.invoke(Method.java:606)

=C2=A0=C2=A0=C2=A0=C2=A0= =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 at org.apache.= cxf.service.invoker.AbstractInvoker.performInvocation(AbstractInvoker.java:= 180)

=C2=A0=C2=A0=C2=A0=C2=A0= =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 at org.apache.= cxf.service.invoker.AbstractInvoker.invoke(AbstractInvoker.java:96)<= u>

=C2=A0=C2=A0=C2=A0=C2=A0= =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 at org.apache.= cxf.jaxrs.JAXRSInvoker.invoke(JAXRSInvoker.java:194)

=C2=A0=C2=A0=C2=A0=C2=A0= =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 at org.apache.= cxf.jaxrs.JAXRSInvoker.invoke(JAXRSInvoker.java:100)

=C2=A0=C2=A0=C2=A0=C2=A0= =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 at org.apache.= cxf.interceptor.ServiceInvokerInterceptor$1.run(ServiceInvokerInterceptor.j= ava:57)

=C2=A0=C2=A0=C2=A0=C2=A0= =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 at org.apache.= cxf.interceptor.ServiceInvokerInterceptor.handleMessage(ServiceInvokerInter= ceptor.java:93)

=C2=A0=C2=A0=C2=A0=C2=A0= =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 at org.apache.= cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChain.java:271)=

=C2=A0=C2=A0=C2=A0=C2=A0= =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 at org.apache.= cxf.transport.ChainInitiationObserver.onMessage(ChainInitiationObserver.jav= a:121)

=C2=A0=C2=A0=C2=A0=C2=A0= =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 at org.apache.= cxf.transport.http.AbstractHTTPDestination.invoke(AbstractHTTPDestination.j= ava:239)

=C2=A0=C2=A0=C2=A0=C2=A0= =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 at org.apache.= cxf.transport.servlet.ServletController.invokeDestination(ServletController= .java:223)

=C2=A0=C2=A0=C2=A0=C2=A0= =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 at org.apache.= cxf.transport.servlet.ServletController.invoke(ServletController.java:203)<= u>

=C2=A0=C2=A0=C2=A0=C2=A0= =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 at org.apache.= cxf.transport.servlet.ServletController.invoke(ServletController.java:137)<= u>

=C2=A0=C2=A0=C2=A0=C2=A0= =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 at org.apache.= cxf.transport.servlet.CXFNonSpringServlet.invoke(CXFNonSpringServlet.java:1= 59)

=C2=A0=C2=A0=C2=A0=C2=A0= =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 at org.apache.= cxf.transport.servlet.AbstractHTTPServlet.handleRequest(AbstractHTTPServlet= .java:286)

=C2=A0=C2=A0=C2=A0=C2=A0= =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 at org.apache.= cxf.transport.servlet.AbstractHTTPServlet.doDelete(AbstractHTTPServlet.java= :217)

=C2=A0=C2=A0=C2=A0=C2=A0= =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 at javax.servl= et.http.HttpServlet.service(HttpServlet.java:761)

=C2=A0=C2=A0=C2=A0=C2=A0= =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 at org.apache.= cxf.transport.servlet.AbstractHTTPServlet.service(AbstractHTTPServlet.java:= 262)

=C2=A0=C2=A0=C2=A0=C2=A0= =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 at org.apache.= catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChai= n.java:305)

=C2=A0=C2=A0=C2=A0=C2=A0= =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 at org.apache.= catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:2= 10)

=C2=A0=C2=A0=C2=A0=C2=A0= =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 at org.apache.= catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:222)=

=C2=A0=C2=A0=C2=A0=C2=A0= =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 at org.apache.= catalina.core.StandardContextValve.invoke(StandardContextValve.java:123)=

=C2=A0=C2=A0=C2=A0=C2=A0= =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 at org.apache.= catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:472)=

=C2=A0=C2=A0=C2=A0=C2=A0= =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 at org.apache.= catalina.core.StandardHostValve.invoke(StandardHostValve.java:171)

=C2=A0=C2=A0=C2=A0=C2=A0= =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 at org.apache.= catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:99)=

=C2=A0=C2=A0=C2=A0=C2=A0= =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 at org.wso2.ca= rbon.tomcat.ext.valves.CompositeValve.continueInvocation(CompositeValve.jav= a:178)

=C2=A0

From: Imesh Gu= naratne [mailto:imesh= @apache.org]
Sent: Thursday, June 25, 2015 4:29 AM
To: dev
Cc: Reka Thirunavukkarasu; Ryan Du Plessis (rdupless); Shaheedur Haq= ue (shahhaqu)


Subject: Re: Testing Stratos 4.1 - application removal still fails i= n certain cases

=C2=A0

Hi Martin,

=C2=A0

On Thu, Jun 25, 2015 at 4:38 PM, Martin Eppel (meppe= l)=C2=A0<meppel@ci= sco.com>=C2=A0wrote:

=C2=A0

What happens if I want to= restart / redeploy the application -=C2=A0 currently, when I try to re-dep= loy the application it throws an exception that the cartridge group is still r= eferenced by another application ?=C2=A0

=C2=A0

Will you be able to send the log file related to thi= s error?

=C2=A0

On Thu, Jun 25, 2015 at 4:38 PM, Martin Eppel (meppe= l) <meppel@cisco.c= om> wrote:

=C2=A0

What happens if I want to= restart / redeploy the application -=C2=A0 currently, when I try to re-dep= loy the application it throws an exception that the cartridge group is still r= eferenced by another application ? Even if the group would not exist, would= n=E2=80=99t stratos throw an exception that the application already exists = ? What is the proper way to restart / redeploy an application ?

=C2=A0

Thanks

=C2=A0

Martin

=C2=A0

Adding Shaheed<= /u>

=C2=A0

From: Reka Thi= runavukkarasu [mailto:re= ka@wso2.com]
Sent: Thursday, June 25, 2015 3:45 AM
To: Martin Eppel (meppel)
Cc: dev@= stratos.apache.org; Ryan Du Plessis (rdupless)
Subject: Re: Testing Stratos 4.1 - application removal still fails i= n certain cases

=C2=A0

Hi Martin,

=C2=A0

On Thu, Jun 25, 2015 at 3:58 PM, Martin Eppel (meppe= l) <meppel@cisco.c= om> wrote:

Hi Reka,

=C2=A0

I pulled the latest code today and =C2=A0tested the = following application [1a., 1b.] for removal and, after all the instances w= ere terminated the application still shows in the =E2=80=9CCreated=E2=80=9D state =C2=A0[1c.] =C2=A0and maintains a reference to the cartridge groups,= my expectation would be that it had been removed completely !

=C2=A0

This is the expected = behaviour. This is the status of the application definition. I just verifie= d it in the CLI. After the successful undeployment, it shows as below for m= e.

Applications found:
+----------------+------------+---------+
| Application ID | Alias=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 | Status=C2=A0 |
+----------------+------------+---------+
| g-sc-G12-1=C2=A0=C2=A0=C2=A0=C2=A0 | g-sc-G12-1 | Created |
+----------------+------------+---------+

In order to check the= runtime, you will have to invoke below command:

stratos> describe-application-runtime g-sc-G12-1
Application not found: g-sc-G12-1
stratos>

However there seems t= o be a small issue with this message as it says applicaiton not found inste= ad of application runtime. We will fix this ASAP in the cli.<= /p>

If you invoke rest en= dpoint, you will get the following message:

curl -X GET -H "Content-Type: application/json"=C2=A0 -k -v -u ad= min:admin https://127.0.0.1:9443/api/applications/g-sc-G12-1/runtime

{"status":"error","message":"Application= runtime not found"}

Please let me know if= you still have any issues..

Thanks,

Reka

=C2=A0

=C2=A0

The logs actually state that the application was suc= cessfully un-deployed !?=C2=A0 Logs are attached as usual, application json= , group json are below

=C2=A0

TID: [0] [STRATOS] [2015-06-25 09:48:23,302]=C2=A0 I= NFO {org.apache.stratos.autoscaler.applications.topic.ApplicationBuilder} -= =C2=A0 Application un-deployed successfully: [application-id] sub-G1-G2-G3-1

=C2=A0

Please note that the screenshot was taken after the = request to remove the application was done.

=C2=A0

=C2=A0

[1a.]

=C2=A0

[1b]

=C2=A0

Cartridge-group:

=C2=A0

{"name": "sub-G1-G2-G3-1", "= ;dependencies": {"terminationBehaviour": "terminate-non= e", "startupOrders": []}, "cartridges": [], "= groups": [{"name": "multiple-groups-no-startup-G1-1&quo= t;, "dependencies": {"terminationBehaviour": "termina= te-none", "startupOrders": []}, "cartridges": [&qu= ot;c1", "c2"], "groups": []}, {"name": &= quot;multiple-groups-no-startup-G2-1", "dependencies": {&quo= t;terminationBehaviour": "terminate-none", "startupOrde= rs": []}, "cartridges": ["c3", "c4"], "groups": []}]}<= /p>

=C2=A0

=C2=A0

Application:

=C2=A0

{"alias": "sub-G1-G2-G3-1", &quo= t;applicationId": "sub-G1-G2-G3-1", "components": = {"cartridges": [], "groups": [{"name": "= sub-G1-G2-G3-1", "groupMaxInstances": 1, "groupMinInsta= nces": 1, "alias": "sub-G1-G2-G3-1-x0x", "cartridges&quo= t;: [], "groups": [{"name": "multiple-groups-no-st= artup-G1-1", "groupMaxInstances": 1, "groupMinInstances= ": 1, "alias": "multiple-groups-no-startup-G1-1-0x0&quo= t;, "cartridges": [{"cartridgeMin": 1, "cartridgeM= ax": 1, "type": "c1", "subscribableInfo": {"ali= as": "c1-1x0", "deploymentPolicy": "static-1&= quot;, "artifactRepository": {"repoUsername": "use= r", "repoUrl": "http://octl.qmog.cisco.com:10080/gi= t/default.git", "privateRepo": true, "repoPassword": "c-policy&qu= ot;}, "autoscalingPolicy": "economyPolicy"}}, {"ca= rtridgeMin": 1, "cartridgeMax": 1, "type": "c= 2", "subscribableInfo": {"alias": "c2-1x0&quo= t;, "deploymentPolicy": "static-1", "artifactRepos= itory": {"repoUsername": "user", "repoUrl": "http://octl.qmog.cisco.com:10080/git/defaul= t.git", "privateRepo": true, "repoPassword": &= quot;c-policy"}, "autoscalingPolicy": "economyPolicy&qu= ot;}}], "groups": []}, {"name": "multiple-groups-no-startup-G2-1", "groupMaxInstances"= : 1, "groupMinInstances": 1, "alias": "multiple-gr= oups-no-startup-G2-1-0x0", "cartridges": [{"cartridgeMi= n": 1, "cartridgeMax": 1, "type": "c3", = "subscribableInfo": {"alias": "c3-1x1", "= ;deploymentPolicy": "static-1", "artifactRepository": {"repoUsername&= quot;: "user", "repoUrl": "http://octl.qmog.ci= sco.com:10080/git/default.git", "privateRepo": true, &qu= ot;repoPassword": "c-policy"}, "autoscalingPolicy"= : "economyPolicy"}}, {"cartridgeMin": 1, "cartridge= Max": 1, "type": "c4", "subscribableInfo"= ;: {"alias": "c4-1x1", "deploymentPolicy": &q= uot;static-1", "artifactRepository": {"repoUsername&quo= t;: "user", "repoUrl": "http://octl.qmog.cisco= .com:10080/git/default.git", "privateRepo": true, "repoPassword": "c-policy&qu= ot;}, "autoscalingPolicy": "economyPolicy"}}], "gr= oups": []}]}]}}

=C2=A0

=C2=A0

[1c.]

=C2=A0

stratos> list-applications

Applications found:

+----------------+----------------+---------+=

| Application ID | Alias=C2=A0=C2=A0=C2=A0=C2=A0=C2= =A0=C2=A0=C2=A0=C2=A0=C2=A0 | Status=C2=A0 |

+----------------+----------------+---------+=

| sub-G1-G2-G3-1 | sub-G1-G2-G3-1 | Created |=

+----------------+----------------+---------+=

stratos>

=C2=A0




--

Reka Thirunavukkarasu
Senior Software Engineer,
WSO2, Inc.:http://wso2.com,

Mobile: +94776442007=

=C2=A0<= /p>



=C2=A0

--

Imesh Gunaratne

=C2=A0

Senior Technical Le= ad, WSO2

Committer & PMC= Member, Apache Stratos




--
Imesh Gunaratne=

Senior Technical Lead, WSO2
Committer & PMC Member, Apache Stratos
--001a113b445613b7d605195638fc-- --001a113b445613b7da05195638fd Content-Type: image/png; name="image001.png" Content-Disposition: inline; filename="image001.png" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: 76e8290e65490b1e_0.1 iVBORw0KGgoAAAANSUhEUgAAAd8AAAIBCAIAAACHviLNAAAAAXNSR0IArs4c6QAAAAlwSFlzAAAS dAAAEnQB3mYfeAAAKg9JREFUeF7tnY114zqPhp3dLrYNpY4tw2njayNuY9sY1eSFw3s5ii1LJEVS BPDozJmTmfAHeAC9hiFZ/rjf7xcOCEAAAhAYjMB/DWYP5kAAAhCAwIMA6kweQAACEBiRAOo8YlSw CQIQgADqTA5AAAIQGJEA6jxiVLAJAhCAAOpMDkAAAhAYkQDqPGJUsAkCEIAA6kwOQAACEBiRAOo8 YlSwCQIQgADqTA5AAAIQGJEA6jxiVLAJAhCAAOpMDkAAAhAYkQDqPGJUsAkCEIAA6kwOQAACEBiR AOo8YlSwCQIQgADqTA5AAAIQGJEA6jxiVLAJAhCAwAffjUISlBGY57lsYvVZ0zRVX5MFIXA6AdT5 9BBoMmAcRX5HDaXWlE/YukkAdSZBkgiMr8tLN9DopKAyaGwCqPPY8RnAOl26jEYPkDKYUIcA6lyH o8lV9OoyGm0yIb05xT0b3iKe6q8NaRZvzTiSGjnGWSFA7WwlkvX8sCpnNKPr5Qgr9SCAOvegrGiP J2nWqGgbry4a3VGUPJhalwCdjbo87awmQqZUy/Rabid78KQGAdS5BkUra8SqU6ku714MtNq0sZKA +PGLAOpMQvxDwIlyOXGTtDZAAHU2EMTKLhgonAMRM45UDjDLKSGAOisJVGMzXVWUrpxtnDgs35AA 6twQLktDAAIQKCaAOhejszPRYS3p0GU7+erGE9TZTahxFAIQUEUAdVYVrgbGuq0i3TreIIlYsgkB 1LkJVhaFAAQgcJAA6nwQINMhAAEINCGAOjfByqIQgAAEDhJAnQ8C1D3dee/Vufu6c9eB9aizgyDj IgQgoJAA6qwwaJgMAQg4IIA6OwgyLkIAAgoJoM4Kg4bJEICAAwKos4Mg4yIEIKCQAOqsMGiYDAEI OCCAOjsIMi5CAAIKCaDOCoOGyRCAgAMCqLODIOMiBCCgkADqrDBomAwBCDgggDo7CDIuQgACCgmg zgqDhskQgIADAqizgyDjIgQgoJAA6qwwaJgMAQg4IIA6OwjySS5+fX3dbreTNmdbCKgngDqrD6EZ B0TKRdA/fw6U3UxYcaSYAOpcjI6JNQmIHMuz8K/X65+fQ36YpqnmBqwFAW0EUGdtETvPXlHPZW0b DAmqGo0K9e/Sxjhlo8sRfvX9/R0VWX5Anc8LNTsPQQB1HiIMKowQnV3Wtik2i+zGKSLi7wQ6DEtZ kDEQ8EMAdfYT65qeJha2ywaF/MxFwpoxYC3rBFBn6xGu55/Iq5TPT62M9OXfCfrTV6/KP8OFQTnS F2ckBOwRQJ3txbSVR6FHISL72lzO2nKpv/Lzk2rLP2UX6UFnrclgCNgjgDrbi2lbj0SjRTpFVZ9q 3t1d4/igv+EI0hwUf3cFBkDAFQHU2VW46zi71OWlsL5e9xPNjYM3Lv2J4ocbQlYVXyZG7X73cx3H WAUCIxFAnUeKxsC2LG+nE4mMd7+Fey1Cmzj8/9IJ+af8Z/it6Pi7GzNCNS1/L2+/ix2PpWS/+3lg cpgGgUICH/f7vXAq0/QTWK1VE+/HUOH9bvvFkrMqIoKR6QSondNZMRICEIBAPwKocz/W7AQBCEAg nQDqnM6KkRCAAAT6EUCd+7FmJwhAAALpBFDndFaMhAAEINCPAOrcjzU7QQACEEgngDqns2IkBCAA gX4EUOd+rNkJAhCAQDoB1DmdFSMhAAEI9COAOvdjzU4QgAAE0gmgzumsGAkBCECgHwHUuR9rdoIA BCCQTgB1TmfFSAhAAAL9CKDO/VizEwQgAIF0AqhzOitGQgACEOhHAHXux5qdIAABCKQTQJ3TWTES AhCAQD8CqHM/1uwEAQhAIJ0A6pzOipHqCMzqLMZgCEQCqLPrZLD8rXrz7XL72o6uZfdd57UR51Fn I4HEjV8EHtJ8u1A6kxaaCaDOmqOH7asEgjRzQEA5AdRZeQAx/5nAfBF1DscEHQgoJoA6Kw5eFdOt 9V5/NTS25Nma41WygUVGIoA6jxSNMWyZZ739WimcF8ZPFM9jpBRWFBFAnYuw2Zpkp4r8Jc1yUfCt Ottx2VYq4s2SAOpMPqwQ0Fo+R3WeLvP0TWghoJrAx/1+V+0AxtcisKrIymrM2+fjUuA0bVTNj4uF dDxqJQ3rtCSAOrekq2ptrfVyPmTUOZ8ZM04ggDqfAH3YLWsJdFhn69riLB3hrQI3NoyrK2n1BYeN JoZpJ0DfWXsEa9pvXrnMO1gzG1jrbAKo89kRsL2/1M+rf4LX27+1TQbvILBHAHXeI+Ts9xWry+Kb jYsnbseqomvOkgJ3zyGAOp/DfeRdRcWMCZk9j0bOH2yrRYCrgrVIGlyn+CLhbechRKE43v9EYhVV NfZKYzDPcOkNAWpnUuMtgSri+Lr6/Lhho8fRyP4eprMHBC4X1Jks2CGgUeM02kwiQuCJAOpMSiQR qK13+22NJLNeBtW2s8wKZkGgAgHUuQJEP0sE7TumgPXbGjWs8hNDPFVDgKuCakJlw9DH45fnyzdP KLIRTrxoSYDauSVd1n4hINLMM4jICwikEECdUygxphoB1LkaShayTgB1th5h/IMABHQSQJ11xk2n 1eHh+HQ2dEYPq3sTQJ17E/e8H20Nz9HH91wCqHMuMcaXE0Cdy9kx0x8B1NlfzM/zWPGXfZ8HjZ3d EkCd3Yb+BMepnU+AzpZqCaDOakOnzfAgzVwS1BY37D2NAOp8GnpvG1M4e4s4/h4kgDofBMj0VAKo cyopxkHghwDP2SAROhH4+Lj8+UNnoxNttjFAgNrZQBAVuEDTWUGQMHEwAqjzYAExag5tDaOBxa2G BFDnhnBZOhKQB4dytwb5AIEsAvSds3AxuJCANJ3v98K5TIOATwLUzj7j3tVrCueuuNnMCgHU2Uok B/ZD1Pl6Hdg+TIPAkARQ5yHDYsio8GwN1NlQSHGlEwHUuRNot9t8fXE90G3wcfwQAdT5ED4m7xKQ L3jl0XS7lBgAgVcCqDNZ0ZZAuJFOWs8cEIBAFgHUOQsXg0sISNOZ8rkEHHN8E+B+Z9/x7+U99zv3 Is0+dghQO9uJ5cieSH+D5sbIAcK2AQmgzgMGxaBJNDcMBhWXGhNAnRsDZvkfAlI703omFyCQRYC+ cxYuBpcT4PnO5eyY6ZIAtbPLsJ/hNOXzGdTZUzEB1Flx8HSZTutZV7yw9nQCqPPpIfBiALWzl0jj ZyUC9J0rgWSZBALc9ZwAiSEQ+IcAtTOp0I8A5XM/1uyknwDqrD+GejxAnfXECkvPJ4A6nx8DPxag zn5ijafHCaDOxxmyQioB1DmVFOMgcLlwVZAs6EqAC4NdcbOZZgLUzpqjp9B2ymeFQcPkcwigzudw d7sr6uw29DieSwB1ziXG+EMEUOdD+JjsiQDq7CnaA/iKOg8QBEzQQYCrgjriZMDK2+02/zxF9Hb7 vl6/lh5N03SVx3BwQAACCwKoM+nQnICIskhz3Gaer5dplgc+P20sAi0y3dwaNoCAEgJ0NpQESq2Z T9L8jx/Pyvz471hcq/UVwyFQkwDqXJMmaz0RWJfm95gQaFIIApEAnQ2SoZBAaCJvH9Jpfv3Gqvki XQ3pYfztdfxaRHrQmf0N+iF7ceD3KgmgzirDdpbRKYq8tG3Zbl78/zRvqPPlcuQKIUp9Vm6wb3UC dDaqI7W5oOhyrjS/H79TdOdutCReYKfNgOGVfgKos/4YNvagWO/2Oh9vb8/Ym7jvcLHN+0szAgK9 CKDOvUgr3KehxnW5ca6h/QqjicnqCNB3VheyTgYfaS8EE+XTJ8W2yq3PxXNfJ9KMrgiTpboRQJ27 oVaz0XFdHtNVNHrMuGDVOwKoM7nxi8CTNGtUtI1XF43ukKBuCdB3dhv6HcdFyJRqmV7LyUUILAmg zuTDXwKx6lSqy8tYrrpgtWlDEpskgDqbDGuJU06Uy4mbJRnAnMEIoM6DBWQAcwwUzoGiGUcGSApM OIEA6nwC9AG3dFVRunJ2wGTDpEQCqHMiKIZBAAIQ6EoAde6Ke8zNHNaSDl0eM/ewaoMA6kx6QAAC EBiRAOo8YlR62uS2inTreM/sYq8jBFDnI/SYCwEIQKAVAdS5FVnWhQAEIHCEAOp8hB5zIQABCLQi gDq3IqtiXee9V+fuq0hRz0aizp6jj+8QgMC4BFDncWODZRCAgGcCqLPn6OM7BCAwLgHUedzYYBkE IOCZAOrsOfr4DgEIjEsAdR43NlgGAQh4JoA6e44+vkMAAuMSQJ3HjQ2WQQACngmgzp6jj+8QgMC4 BFDncWODZRCAgGcCqLPn6OM7BCAwLgHUedzYYBkEIOCZAOrsOfr4DgEIjEsAdR43NlgGAQh4JoA6 e45+W9+/vr5ut1vbPVgdAnYJoM52Y6vNM5FyEfTPnwNl1xY97K1PAHWuz5QVCwiIHMuz8K/X65+f Q36YpqlgHaZAwAwB1NlMKJs7Iuq5rG3DfkFV496h/l2aEqdsdDnCr76/v6Miyw+oc/OIssHYBFDn seMzknWis8vaNsU0kd04RUT8nUCHYSkLMgYCfgigzn5iXdPTxMJ22aCQn7lIWDMGrGWdAOpsPcL1 /BN5lfL5qZWRvvw7QX/66lX5Z7gwKEf64oyEgD0CqLO9mLbyKPQoRGRfm8tZWy71V35+Um35p+wi PeisNRkMAXsEUGd7MW3rkWi0SKeo6lPNu7trHB/0NxxBmoPi767AAAi4IoA6uwp3HWeXurwU1tfr fqK5cfDGpT9R/HBDyKriy8So3e9+ruMYq0BgJAKo80jRGNiW5e10IpHx7rdwr0VoE4f/Xzoh/5T/ DL8VHX93Y0aopuXv5e13seOxlOx3Pw9MDtMgUEjg436/F05lmn4Cq7Vq4v0YKrzfbb9YclZFRDAy nQC1czorRkIAAhDoRwB17seanSAAAQikE0Cd01kxEgIQgEA/AqhzP9bsBAEIQCCdAOqczoqREIAA BPoRQJ37sWYnCEAAAukEUOd0VoyEAAQg0I8A6tyPNTtBAAIQSCeAOqezYiQEIACBfgRQ536s2QkC EIBAOgHUOZ0VIyEAAQj0I4A692PNThCAAATSCaDO6awYCQEIQKAfAdS5H2t2ggAEIJBOAHVOZ8VI CEAAAv0IoM79WLMTBCAAgXQCqHM6K0ZCAAIQ6EcAde7Hmp0gAAEIpBNAndNZMVIdgVmdxRgMgUgA dXadDJa/VW++XW5f29G17L7rvDbiPOpsJJC48YvAQ5pvF0pn0kIzAdRZc/SwfZVAkGYOCCgngDor DyDmPxOYL6LO4ZigAwHFBFBnxcGrYrq13uuvhsaWPFtzvEo2sMhIBFDnkaIxhi3zrLdfK4XzwviJ 4nmMlMKKIgKocxE2W5PsVJG/pFkuCr5VZzsu20pFvFkSQJ3JhxUCWsvnqM7TZZ6+CS0EVBP4uN/v qh3A+FoEVhVZWY15+3xcCpymjar5cbGQjketpGGdlgRQ55Z0Va2ttV7Oh4w65zNjxgkEUOcToA+7 ZS2BDutsXVucpSO8VeDGhnF1Ja2+4LDRxDDtBOg7a49gTfvNK5d5B2tmA2udTQB1PjsChveX4vnd n+D19m8Nk8E1CCQQQJ0TIHkaUrO6HOxu45queUoJfD2LAOp8Fvlx9xUVqyJkG+K8/XmX6qpey6Nx Y4ZlFglwVdBiVCv5VHyR8LbzEKJpnkUw9x9UVEVVq7zSVCLKMhDIIEDtnAHL29Aq4ngiNO32n4iO rUcggDqPEIWhbdCocRptHjoJMO4MAqjzGdQV7llV7+Rejeq95X+YVrVTYZww2RAB+s6GgtnXlY2u 9F7fWR4kd5X76R6fuN48EqWWznLfyLNbJwKocyfQbLMk8CnPw7hc/vyBCgQg8JYAnQ2SAwIQgMCI BFDnEaOCTRCAAARQZ3IAAhCAwIgEUOcRo2LbpvhBQcXfkGU7Qng3BgHUeYw4eLJCRFkefy9/UGdP YcfXbALcs5GNjAkHCcgNG98/3yr19cVtGwdZMt0yAWpny9Ed0LfwBI5QO8ux80COAR3AJAj0IoA6 9yLNPvL5k/khx6FwlkN+kH/S3yA1ILBKAHUmMfoREC2OVXOsoCmf+wWAnVQRQJ1VhUuzsaFMjoVz LJ9DQc0BAQg8EUCdSYkeBER/lz2N5Zahv4FA9wgDe6gigDqrCpdOY6M0hyuBT4f8JwKtM7BY3ZYA d9S15et89dC1CA2NVWmOfGSM3GAnY67XnZHOkeK+HwLUzn5i3dtT0eX4LLptaRbLZEB4ZJ1oNF2O 3qFivyEJUDsPGRblRsU+8m7J/OpoKKLlkCJa/nBAwC0B1Nlt6Os7LsIab8Ao0OWlQUuNXt6EV99o VoTAqARQ51Ejo8eu2FyWH0LBu9vHSHQurBzvkq64cqIBDIPAiQRQ5xPha9061MjxT6htm0rn8gUg bBf/aIWI3RDYI4A67xFy9vvl56qfHvUZ/hmfMBdaw7XK5HTMsXkSXh6CAcu/4z/Dmv0tTPeFkRDY IIA6j5UeUQGDDoZjVTHb2b2Us1ftG03sXomdjuvp1WI0Yu0yh5XrEkCd6/LMXu2pS/DuxH49wxPP +ZRnDCUule3beBMq0nhd6t1bjRBTujHjpcPoFqHOJ0ToXReVt+EnBKP9lrG679mpb+8WOzQngDo3 Rxw3iKIcVPiUpm0/b9npPQEygexIIYA6p1A6OibeGVb3hrOjZjH/bAIkxtkRGHp/1LlteJafquCT b21Za179yKcrNfuN7VsEUOeG+REeGSGfmkOXG1I2tLRki+SMZMvTU7ANuYgrGQR4ClIGrPShUjLL A4Dkb3myD9Kczs35SEkVSZiYPM5p4D7qXD8HQjcjPHTNz81q9Tm6XDGmjaRQyv1/LiF5cZrORuVI B2nm+WqVsfpbbvsrC/zx8Ogx6lw56tLQCF/2wQGBgwRC+Rwee83hkACdjZpBDw8mRpprMnW8Vkik kFQcDglQO1cLeriYQ6+5GlAW+nnECknlNhGonauFXmqcg4+cr2YKC1khEL8S14pD+JFBAHXOgLUx NFxe5+a5OjRZZUFAkio8oIPDGwHUuU7Ew/d3cECgBQFJLb4JtwXYwdek71wnQB8fdJzrkGSVVwLh Nk1u3vCWG9TOFSIevqGD2rkCSpZYIxBSi+aGt+xAnStEPKgzBwTaEZAEQ53b4R1zZdS5QlxQ5woQ WWKTAOrsMEFQ5wpBR50rQGQJ1Jkc+E0AdSYjIAABCIxIgHs2CqNyu93mfxuBt9v39fr387bTNF25 87mQK9P+EljmmPzvMs3IMQ+JgjpnR1lEWU6b5bR5/p6m56chiEDLKZS9OhMg8Lg94znHhMprmpFj tpOFzkZefFdPm9UlngqfvG0Y7ZgAOeY4+L9cR50zMiH9tAmLItAZcBn6Q4AcIxEiATob/6CITeSN 5JBO8+pNp6udjX/WkR50Zn+DfojV8/NIjq12Nsgxq6kS/HKtzilnyzL8T+3m+Kt5FgX+1Ylezjpy hRCl1n761cqxH3V+m2bkmPY8WbXfaWdDzpnc02Zv/NsLgHsTt/KqwE6TaarRqYLYbabK1hVmckxj huza7E6dC86ZALH4c7TFExe1efZryW7gGdCOADnWjq2rlR2pc/E5s5sQmY3l3fXWB7Szv9Agpr0Q aBqjDmnW1H7yJZeAl77zkbd+gal8+iQXbhwvtz4Xz32dSDO6IsyKS5FjFWGylBCwr87Hz5kxEwWN Hicu5Ng4sbBkiXF1fjptNCraxpmv0R1LJ0/whRyzF9NBPPLSdxYhU6plei0fJMW7maE3Unot7xbc UzayrM6xqFGqy8uEWHXB6hvqU86Esk3JsTJuzEohYFadnSiXEzdTUrn/GCfwnbjZP392dzSrztFz A4Vz8MWMI7tJqW6AmdCYcURdCq0abFOdXb3au3J2nLPOFXZXzo6TYzbVeRy+WAIBCECgjIBBdXb4 Ou/Q5bJ0rzXLIXCHLtfKluJ1DKpzMQsmQgACEBiHgDV1dvsK79bx/ueSW9RuHe+fY2FHa+p8Fkf2 hQAEIFCXAOpclyerQQACEKhDAHWuw5FVIAABCNQlYEqdnffFnLtf98R4t5pzyM7d75NjcRdT6tyZ HdtBAAIQaEcAdW7HlpUhAAEIlBNAncvZMRMCEIBAOwKoczu2rAwBCECgnADqXM6OmRCAAATaEUCd 27FlZQhAAALlBFDncnbMhAAEINCOAOrcji0rQwACECgngDqXs2MmBCAAgXYEUOd2bFkZAhCAQDkB 1LmcHTMhAAEItCOAOrdjy8oQgAAEygmgzuXsmAkBCECgHQHUuR1bVoYABCBQTgB1Lmf39fV1u91W 58uDFnnWYjlZZv5LgBzznAuoc53oixYvlRp1roOVVRYEyDFv6YA614n4UxF9/TnqLM0qEPghQI55 SwS/6hzeM8rfn5+f8ncoTOTn8M+YB+FX8Z9hylOWyH/G6eEU2nhD6i3DPPtLjnmO/nHf/apzKEak wv3z5880TUGF5Wc5grymw5VFZIWwFCVzOjcPI8kxD1Fu5KNrdQ6qKmSDpEZhRWEbZZvDZckxh0Gv 5bJrdd6AyB0XtTKMdd4RIMfIjW0CrtU5FM7xePonqQOB4wTIseMM3a7gWp3dRh3HIQCB8Qmgzjsx kton3sn0dMPpU9397o2qTI8rvPt5/ETBwnYEyLF2bFWvjDrvhC9cIQx32om2fn9/r06Iw14/PbhU 7Xc/q84hjD9IgBw7CNDq9I/7/W7Gt9Xq1VI3efc6kiVnx0xLcowc65aZ1M7dULMRBCAAgQwCqHMG LIZCAAIQ6EYAde6Gmo0gAAEIZBBAnTNgMRQCEIBANwKoczfUbAQBCEAggwDqnAGLoRCAAAS6EUCd u6FmIwhAAAIZBFDnDFgMhQAEINCNAOrcDTUbQQACEMgggDpnwGIoBCAAgW4EUOduqNkIAhCAQAYB 1DkDFkMhAAEIdCOAOndDzUYQgAAEMgigzhmwGAoBCECgGwHUuRtqNoIABCCQQQB1zoDFUAhAAALd CKDO3VCzEQQgAIEMAqhzBiyGQgACEOhGAHXuhvr4RvPxJVgBApsEyLGBEsSUOlv+xrP5drl9bSeO ZfeHOWUsQybHhkmzYIgpdR6MbT1zHqfN7UJZU48oKz0TIMfGywnUebyYPFkUThsOCLQjQI61Y3tg ZdT5ALweU+eLnDnhmHrsxx7+CJBjg8bcmjpbawv+amhsybM1xwc9X35eJSdbr5Pk2KjJZk2dXznP s95+rRQ1C+ONicKop0SBXeRYATSm7BIwqM52Sptf0iwXBd+WbHZc3k3YMQbYAU6OjZFRq1YYVGc7 5XM8c6bLPH0PnEWYJm9ydL5FI8cGTt6P+/0+sHnlpq2eLcpKntvn41LgNG1UzQbboOUx7z2THOtN 3Nl+vtTZZHCVveQYioHWejk/BORYPrMKM8yqs7CpdfKEdbbeuM7SEd4qcGPDuHqWV1+wQk55WoIc 8xTt3r5a7jubVy7zDvY+G/L3Mx8C8w7mx7zfDMvqXJmiFM/v/oSdtn9b2RqWs0iAHLMY1WKfjKtz zVf+9x9BOOVyfU3XitOHiXU/nEKOkVELAsbVWTwVFasiZMWfDyue+C5Ra3nEiVCLQK2IFKdK8URy rFYOtFjH8lXBJ17FF3BuOw8hmuZZTs/9BxVVOYervNK0yCTWfDS3St9GkWPkzysB+7Vz9LmKOJ6Y Q9rtPxFdt621x0i7/d0C3WcjR+ocgGrMP40290nfMXfRGC+NNo8Z/YpWuVPn6hrd9AO8nDMVc73z UhVjR451jt0g2zlV56VGVzqL5MJMnWszwZ5KVg2SZn7NqBpNcsxXIjm6KtgosI+n4/7UNvKAz+u1 0SYs65oAOeYz/K5rZ58hx2sIQEAFAdRZRZgwEgIQcEcAdXYXchyGAARUEECdj4ZJ2s3Sd5Y/fLHU UZTMf0OAHPOZGqizz7jjNQQgMDoB7tmoEKGPj8ciRr9kpgIfljhOgBw7zlDdCtTOFUImbzxpa1Tg yBLvCZBjDrMDdXYYdFyGAAQUEECdFQQJEyEAAYcEUOejQQ83bIQ/HBBoQYAca0F1/DW5Kng0Rl9f f1f4/j66GvMh8EqAHPOZFajzobhLUfP5efnz57FI+IHLg4eAMvmFADnmNilQ50OhD0VNKJmXPx9a lMkQWBAgx9ymA33n8tCHJ4fFbob8IP/c+Zar8t2Y6ZEAOeYx6v/6/N//+c9/PPtf7LucNlLU/N// Xf7nf/6uIW2N//3fx//Q3ygGy8RIgBxzngzUziUJIKeN/HntMosoy3+G33JA4AgBcuwIPRtz6Tvn xVF6F7EP+K5AThmTtyujPRFIyZ+UMZ6Y2fQVdU6Ka7jhNFTE8gUoKd+BEitoGczHcJMo+x5EjvmO /4r3qPMKlPC5kvh3OG2CyKbo8nLFcFVH/g4CHcrt5d9kpE8C5JjPuGd5bU2dlx/bW54AWVCWArpU 1dxFluOfPu5V9sHCJ3GnJD8SkeK55FgxOiZmETCizqE+jd++GuR12Rde7RG/SmT/ey0SbVgOi58a j/6Gup6jKQFyjBxrmmCvi6tXZ+ft3YJmZecMM7AdOZZ70cVA0EdwQbE6x1om8TLdCLjb2RAUJHTG qXFqcSbHni6ikGO1UitlHa33O8c7iuT+4twrdSlc1I0RCOFxH3LDX1lTW53LrQ0mx54Ik2OtU+5p fZW1czhtKJlXcyUU0fKxciroI+cSObZBjxw7klrpc1WqszwNDmnePXlCKc1RRoAc2+YWP8pYhpdZ KQT0dTbCR/XoZmxEN8BZPhQ4JRUYEwmQY7vJQI7tIjo+QFntLO83eYxyStQBlUJpdQzoEtEBKhFU 8TBl6swzlNMjDat0VsuRcEvnBqt0VgUjlanzxwffP5Ia5VDa3O+p4xkXCJBj6ZlAjqWzKhipqe8s qcBnl9NjHFhxd106MRlJjmXhIseycOUO1qTO4U54jnQCgosnTafjkpHkWBYuGUyO5RJLH69JnaWu 4VaN9NDKSMFF7ZxFjBzLwkWO5eLKGq9MnbN8Y3B4q86RTgBc6aziSKAVQEuZokadl8+fS3GMMeFd JwKdngnkWDqrOJIcK4CWOEWNOketSXSMYYEAnfqsTABXFi5yrABX+hQ16hwupnPkEuC2jXRi5Fg6 q+VIcqyM2+4sNeq86wkDIAABCFgigDpbiia+QAACdgigznZiiScQgIAlAqizpWjiCwQgYIfA6M/Z uN1u88+NTvMs1wSnabpF9vKPK59OeUnFSCz8Zp7lcaLzND0YQmz1xCXHcvWMHMslVjZ+3NpZRPnr 6ytI8+qxO6CMiN5Zu0B2B+j1vczyXSC7A8r21TtrF8juAL2+97d8UHWWGMvr8y8cb26ne3oZ709w kB1XiP19l/HLRoj9+66CHMtLXnIsj9fh0SOq81YSrDmM3EAs90SAGMRyCfQf37vvvNGpiM5Lp3nt 8RCTtJ6XfefflfV0zfywiqzVH3fBjgeIPXaTvvNP0/mlQSRd+0wCDoiRY28z9M1Z6TTHCk7kgik9 1DlFX5amP/c0/v3dPH9P08+3Cq4dR64QjqY7tYj9qPNbaBB7zSNy7N359e6s9JNjBfJ6cErbzoao TK7QbI6XAvBtwZu70RJcgZ0Hub+bXmDJpuOCa+uyarEXBXYW77U9scASciz3ZHGeY41Sd3fZVupc cM4EW4ufRlg8MTIqtnmXcsqA4t2LHS+eCLGUgK6OKY5y8Y5VqpDiVCmeOEiOVcFevEh9dW6Xf5lt 0kIm7eyvWC+n+9YBmiViHXD9lCDZ7ynTI97/VaEDtP7EDgKvMr1y3zn3HdOrD/Lpk2LHrteaF/r6 NKMhlhtuiEEsl4DS8dXU+fg5MybBdhoNsdyIQwxigUC7szKXcNPxddT56bTRyG7jzG/hDsRy0xpi EFsSaHFW5hJuPb5y31mQKaV2luVn7Xs8sc6y/Kx9IXacQO4KemOd6+nq+ArqHIsapbq8+4Jc/Q01 xHJzF2IQeyJQ/azMJdxh/FF19sBIwlDRzYpLdciP4i0qullxqWJ3Okys6GbFpTo4XryFeTePqnMk a6Bw7nzBAWK5pyXEIJZLQPX4Q+ps/rVrGdoqzlZZREvCVXG2yiIQ00Ig107b6XFInXNRMh4CEIAA BBIJlKuz7VetVXwHXT44PTGiQw076PLB6UOhSDTmoMsHpycaOdQwwy6Xq/NQEcIYCEAAAsYIFKqz 4der7QAXO148UXvCFTtePBFi2gnk2m81VQrVORcf4yEAAQhAIIsA6pyFi8EQgAAEOhFAnTuBZhsI QAACWQRK1NlqlycRXIH7BVMSjVExrMD9gikqUCQaWeB+wZREY1QMM+l+iTqriBZGQgACEFBNAHVW HT6MhwAEzBJAnc2GFscgAAHVBFBn1eHDeAhAwCwB1NlsaHEMAhBQTQB1Vh0+jIcABMwSQJ3NhhbH IAAB1QRQZ9Xhw3gIQMAsAdTZbGhxDAIQUE0AdVYdPoyHAATMEkCdzYYWxyAAAdUEUGfV4cN4CEDA LAHU2WxocQwCEFBNAHVWHT6MhwAEzBJAnc2GFscgAAHVBLSq89fX1+fnp2r03YyXR98GXHLcbrdu ++rdSChFYvKDXkf6Wy7JJmlm8mnL/WGqVGdOmKxEEa25Xq9/fg45bRDoFHqRmAwm31KIhTGSXdM0 pY9n5AaB0dVZgh2KPjlDwgtyCL+cPMR1lcArse/v73jCyA/UNU/cXolJdkViZNprmr0SC2PkJEWa K+rS0OosSSBSIuIiRV88YeQHTph3GbBKrGK62Ftqm1h4q4HiLOP+jlh41efcrHiOjK7OUZQ5Q1Ki HpoYgdUqsTAgZSknY94RC33nUAxC7EmdV3NMWAGq7lkztDq/k5i6CIyttvEyFs4fXueeIr4KJLxj k7/DNVVjSXLQnVdipNZBpKvTR1fnFj77XJMysCDuIkNBoAvm+plCT6NRrEdXZ06M3MCvEkOaNzCS YwdzLHSiw9X7cDud5BtvOHKpvo4fWp3lbXgIvNgtf3MW7cZ7lRjSvMHtldgy04LQ0AtaAnwlFrpA 8QhvOOTYTVcGbBMYXZ0l0uH6DHfppqRyaCsviQWtibdAxeomZTUPY16JidcRV7hhA6F5UmfOyj6n xsf9fs/dabWGtVRf7Bbpuc5CDGJPZxk5VkV2lovk5liuAf3HD10798fBjhCAAAQGIYA6DxIIzIAA BCDwiwDqTEJAAAIQGJEA6jxiVLAJAhCAAOpMDkAAAhAYkQDqPGJUsAkCEIAA6kwOQAACEBiRAOo8 YlSwCQIQgADqTA5AAAIQGJEA6jxiVLAJAhCAAOpMDkAAAhAYkQDqPGJUsAkCEIAA6kwOQAACEBiR AOo8YlSwCQIQgADqTA5AAAIQGJEA6jxiVLAJAhCAAOpMDkAAAhAYkQDqPGJUsAkCEIAA6vyaA48v meXIIQCxHFqPsRCD2D6BEnW29/1dfznNt8vtaxtbgfsFU/ZDN8gIiOUGAmJjEMu1ov/4EnXub2Wn HR+nzY2yJoM2xDJg/QyFGMSSCaDO/6IKpw1HOgGIpbMKIyEGsRwCqPM/583jzAnHlMPP79gZYpnB h1gmMHkb6/usLFRna43UXw2NLXkudrx4Ym5GdxoPsVzQEBuPWK5FnccXqvOrlfOs9zK0vEQvjJ86 Fc8Qy811iEEsl4Dq8eXqbKcY/CXN8m7qrTofdPng9IHyDGK5wYDYqMRy7eo5vlyd7ZTP8cyZLvP0 3ZO+1mIQYrlZAjE9xHItbTf+436/H1l9VV+UFYm3z8elwGnaqJofFwsrdTwglptvEIPYOwK1zspc wn3GN1HnPqZ33qVWHmitl/NxQyyXGcTOIpa7b5/xRzsbtfKpj7fFu1R0s+JSxe50mFjRzYpLdXC8 eIuKblZcqtidDhPNu3lUnSu+5e8QzrItqidB9QXL/Go3q7qD1Rds53vZytUdrL5gmV/tZpl3UNBV UOd2AWBlCEAAAm4J1FFnw69jjVxrtOwIedzItUbLQmwEArk2GE6GJYqjVwWfsFq65NUnAyCWe2ZC DGK5BJSOr1M7R+f7KFoH1t0c6bZRa2jdHOm2EcRaE8hd30zoEx2vXDvHXfUWOGdlAMQSU5YcywUF sWJi505spc7BK12Kc5YuLzMAYrnnA8QglktAy/i26qxFo0fQZV0aDbHcMxxi2onl2n98fA91HlN3 Rjtb3sVynNoQYrnnG8SsEsv1q2x8b3Uus5JZEIAABLwRqHzPhjd8+AsBCECgEQHUuRFYloUABCBw iADqfAgfkyEAAQg0IoA6NwLLshCAAAQOEUCdD+FjMgQgAIFGBFDnRmBZFgIQgMAhAqjzIXxMhgAE INCIAOrcCCzLQgACEDhEAHU+hI/JEIAABBoRQJ0bgWVZCEAAAocIoM6H8DEZAhCAQCMCqHMjsCwL AQhA4BCB/wcMJuWtm/m9egAAAABJRU5ErkJggg== --001a113b445613b7da05195638fd--