[ 
https://issues.apache.org/jira/browse/CLOUDSTACK-7111?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14065808#comment-14065808
 ] 

Sheng Yang commented on CLOUDSTACK-7111:
----------------------------------------

Introduced by: 

commit c12767908deb8f038d62827ae30bd3cfa302c8a6
Author: Hugo Trippaers <[email protected]>
Date:   Fri Jul 11 09:09:32 2014 +0200

    Refactor VirtualRoutingResource, put the ConfigItems in separate classes 
and create a separate ConfigHelper

The old code:


-            ExecutionResult result = new ExecutionResult(true, "No configure 
to be applied");
-            for (ConfigItem c : cfg) {
-                result = applyConfigToVR(cmd, c);
-                if (!result.isSuccess()) {
-                    break;
-                }
-            }
-            return new Answer(cmd, result.isSuccess(), result.getDetails());
-        }

The result is true by default, because in some cases, configuration won't be 
generated since VR determined it's not necessary, for example when VPN is 
created first time, there is no VPN user available. So cfg can be null and 
success.

And here is the new code.

        boolean finalResult = false;
        for (ConfigItem configItem : cfg) {
            ExecutionResult result = applyConfigToVR(cmd.getRouterAccessIp(), 
configItem);
            if (result == null) {
                result = new ExecutionResult(false, "null execution result");
            }
            results.add(result);
            details.add(configItem.getInfo() + (result.isSuccess() ? " - 
success: " : " - failed: ") + result.getDetails());
            finalResult = result.isSuccess();
        }

        // Not sure why this matters, but log it anyway
        if (cmd.getAnswersCount() != results.size()) {
            s_logger.warn("Expected " + cmd.getAnswersCount() + " answers while 
executing " + cmd.getClass().getSimpleName() + " but received " + 
results.size());
        }

If cfg is null, then you would have less Answers than cfg.

Then finalResult is false in the new code, which caused bug on create VPN 
failure.


> [Automation] Failed to Enable VPN for VPC 
> ------------------------------------------
>
>                 Key: CLOUDSTACK-7111
>                 URL: https://issues.apache.org/jira/browse/CLOUDSTACK-7111
>             Project: CloudStack
>          Issue Type: Bug
>      Security Level: Public(Anyone can view this level - this is the 
> default.) 
>          Components: Network Controller
>    Affects Versions: 4.5.0
>         Environment: KVM 6.3
> 4.5 build
>            Reporter: Rayees Namathponnan
>            Assignee: Sheng Yang
>            Priority: Blocker
>             Fix For: 4.5.0
>
>
> Steps to reproduce 
> Run the BVT test integration.smoke.test_vpc_vpn
> This test performing below steps 
> # 0) Get the default network offering for VPC
> # 1) Create VPC
> # 2) Create network in VPC
> # 3) Deploy a vm
> # 4) Enable VPN for VPC
> Failed to create VM here, with below exception
> 2014-07-14 22:53:05,871 INFO  [o.a.c.f.j.i.AsyncJobMonitor] 
> (API-Job-Executor-36:ctx-fc4efaf3 job-74) Add job-74 into job monitoring
> 2014-07-14 22:53:05,872 DEBUG [o.a.c.f.j.i.AsyncJobManagerImpl] 
> (API-Job-Executor-36:ctx-fc4efaf3 job-74) Executing AsyncJobVO {id:74,
> userId: 2, accountId: 2, instanceType: None, instanceId: 1, cmd: 
> org.apache.cloudstack.api.command.user.vpn.CreateRemoteAccessVpnCmd, c
> mdInfo: 
> {"id":"1","response":"json","ctxDetails":"{\"com.cloud.network.IpAddress\":\"66bf0fbf-ac94-4770-8507-52a1f8b9a7d8\",\"com.cloud
> .network.RemoteAccessVpn\":\"bd20bd01-ae57-498b-9069-b1c138f27913\",\"com.cloud.domain.Domain\":\"68e734aa-0bdf-11e4-b040-1a6f7bb0d0a8\
> "}","cmdEventType":"VPN.REMOTE.ACCESS.CREATE","ctxUserId":"2","account":"test-account-TestVpcRemoteAccessVpn-ZDPAJA","httpmethod":"GET"
> ,"domainid":"68e734aa-0bdf-11e4-b040-1a6f7bb0d0a8","uuid":"bd20bd01-ae57-498b-9069-b1c138f27913","ctxAccountId":"2","ctxStartEventId":"
> 190","apiKey":"d7qu6koH_u-l9nc42w6ytRz4xyDyYiwQZEyBhNWiEEXFwjnrU6ol4utGN0J4GxNj6J-PCun_VLaLOJ9lwARLtA","publicipid":"66bf0fbf-ac94-4770
> -8507-52a1f8b9a7d8","signature":"7wR4z472+EYAuM2XzDYv81uCY7A\u003d"}, 
> cmdVersion: 0, status: IN_PROGRESS, processStatus: 0, resultCode:
>  0, result: null, initMsid: 29066118877352, completeMsid: null, lastUpdated: 
> null, lastPolled: null, created: null}
> 2014-07-14 22:53:05,875 DEBUG [c.c.a.ApiServlet] 
> (catalina-exec-14:ctx-0328e9cc) ===START===  10.223.240.194 -- GET  
> jobid=a7799878-d5c
> c-4a89-a1d5-1bb3208cfa07&apiKey=d7qu6koH_u-l9nc42w6ytRz4xyDyYiwQZEyBhNWiEEXFwjnrU6ol4utGN0J4GxNj6J-PCun_VLaLOJ9lwARLtA&command=queryAsy
> ncJobResult&response=json&signature=cpelD6icZqrDQFDAY0wj9fSjOnY%3D
> 2014-07-14 22:53:05,881 DEBUG [c.c.n.IpAddressManagerImpl] 
> (API-Job-Executor-35:ctx-76a0736f job-73 ctx-aa6075d3) Associating ip Ip[10.
> 223.122.75-1] to network Ntwk[210|Guest|8]
> 2014-07-14 22:53:05,903 DEBUG [c.c.a.ApiServlet] 
> (catalina-exec-14:ctx-0328e9cc ctx-6d712844 ctx-6fc284cd) ===END===  
> 10.223.240.194 --
>  GET  
> jobid=a7799878-d5cc-4a89-a1d5-1bb3208cfa07&apiKey=d7qu6koH_u-l9nc42w6ytRz4xyDyYiwQZEyBhNWiEEXFwjnrU6ol4utGN0J4GxNj6J-PCun_VLaLOJ9
> lwARLtA&command=queryAsyncJobResult&response=json&signature=cpelD6icZqrDQFDAY0wj9fSjOnY%3D
> 2014-07-14 22:53:05,907 DEBUG [c.c.n.IpAddressManagerImpl] 
> (API-Job-Executor-35:ctx-76a0736f job-73 ctx-aa6075d3) Successfully associat
> ed ip address 10.223.122.75 to network Ntwk[210|Guest|8]
> 2014-07-14 22:53:05,930 DEBUG [o.a.c.f.j.i.AsyncJobManagerImpl] 
> (API-Job-Executor-35:ctx-76a0736f job-73 ctx-aa6075d3) Complete async j
> ob-73, jobStatus: SUCCEEDED, resultCode: 0, result: 
> org.apache.cloudstack.api.response.IPAddressResponse/ipaddress/{"id":"665a562a-377b
> -4ec9-8439-1c6b3acee07a","ipaddress":"10.223.122.75","allocated":"2014-07-14T22:53:05-0700","zoneid":"af2983df-186a-4425-974b-bc104c48c
> 51f","zonename":"Adv-KVM-Zone1","issourcenat":false,"account":"test-account-TestCreateVolume-PZC40O","domainid":"68e734aa-0bdf-11e4-b04
> 0-1a6f7bb0d0a8","domain":"ROOT","forvirtualnetwork":true,"vlanid":"a644b87b-48a6-4114-8b77-957f0a796563","vlanname":"vlan://1221","isst
> aticnat":false,"issystem":false,"associatednetworkid":"3269567f-7916-47f6-b2e5-c052b393fd03","associatednetworkname":"test-account-Test
> CreateVolume-PZC40O-network","networkid":"9b0a5472-1441-4b0d-be85-7c5562c2172e","state":"Allocating","physicalnetworkid":"5f21a284-0845
> -48e8-8533-52c68df2510e","tags":[],"isportable":false,"fordisplay":true}
> 2014-07-14 22:53:05,936 DEBUG [c.c.a.t.Request] 
> (API-Job-Executor-36:ctx-fc4efaf3 job-74 ctx-0a401278) Seq 
> 1-5112992951949066325: Sendi
> ng  { Cmd , MgmtId: 29066118877352, via: 1(Rack2Host11.lab.vmops.com), Ver: 
> v1, Flags: 100111, [{"com.cloud.agent.api.routing.VpnUsersC
> fgCommand":{"userpwds":[],"accessDetails":{"account.id":"9","zone.network.type":"Advanced","router.ip":"169.254.3.27","router.name":"r-
> 13-VM"},"wait":0}},{"com.cloud.agent.api.routing.RemoteAccessVpnCfgCommand":{"create":true,"vpcEnabled":true,"vpnServerIp":"10.223.122.
> 73","ipRange":"10.1.2.2-10.1.2.8","presharedKey":"zKxOudqtjrMP6wwgO3WuvHzr","localIp":"10.1.2.1","localCidr":"10.1.1.0/24","publicInter
> face":"eth1","accessDetails":{"zone.network.type":"Advanced","router.ip":"169.254.3.27","router.name":"r-13-VM"},"wait":0}}]
>  }
> 2014-07-14 22:53:05,941 DEBUG [o.a.c.f.j.i.AsyncJobManagerImpl] 
> (API-Job-Executor-35:ctx-76a0736f job-73) Done executing org.apache.clo
> udstack.api.command.admin.address.AssociateIPAddrCmdByAdmin for job-73
> 2014-07-14 22:53:05,947 DEBUG [c.c.a.t.Request] (AgentManager-Handler-1:null) 
> Seq 1-5112992951949066325: Processing:  { Ans: , MgmtId:
> 29066118877352, via: 1, Ver: v1, Flags: 110, 
> [{"com.cloud.agent.api.routing.GroupAnswer":{"results":[],"result":false,"wait":0}},{"com.
> cloud.agent.api.Answer":{"result":false,"details":"Stopped by previous 
> failure","wait":0}}] }
> 2014-07-14 22:53:05,947 DEBUG [c.c.a.m.AgentAttache] 
> (AgentManager-Handler-1:null) Seq 1-5112992951949066325: No more commands 
> found
> 2014-07-14 22:53:05,947 DEBUG [c.c.a.t.Request] 
> (API-Job-Executor-36:ctx-fc4efaf3 job-74 ctx-0a401278) Seq 
> 1-5112992951949066325: Recei
> ved:  { Ans: , MgmtId: 29066118877352, via: 1, Ver: v1, Flags: 110, { 
> GroupAnswer, Answer } }
> 2014-07-14 22:53:05,948 ERROR [c.c.n.r.VpcVirtualNetworkApplianceManagerImpl] 
> (API-Job-Executor-36:ctx-fc4efaf3 job-74 ctx-0a401278) Unable to start vpn: 
> unable add users to vpn in zone 1 for account 9 on domR: r-13-VM due to null
> 2014-07-14 22:53:05,949 INFO  [o.a.c.f.j.i.AsyncJobMonitor] 
> (API-Job-Executor-35:ctx-76a0736f job-73) Remove job-73 from job monitoring
> 2014-07-14 22:53:05,958 WARN  [o.a.c.a.c.u.v.CreateRemoteAccessVpnCmd] 
> (API-Job-Executor-36:ctx-fc4efaf3 job-74 ctx-0a401278) Exception:
> com.cloud.exception.ResourceUnavailableException: Resource [DataCenter:1] is 
> unreachable: Unable to start vpn: Unable to add users to vpn in zone 1 for 
> account 9 on domR: r-13-VM due to null
>         at 
> com.cloud.network.router.VpcVirtualNetworkApplianceManagerImpl.startRemoteAccessVpn(VpcVirtualNetworkApplianceManagerImpl.java:1452)
>         at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
>         at 
> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
>         at 
> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
>         at java.lang.reflect.Method.invoke(Method.java:606)
>         at 
> org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:317)
>         at 
> org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:183)
>         at 
> org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:150)
>         at 
> org.springframework.aop.interceptor.ExposeInvocationInterceptor.invoke(ExposeInvocationInterceptor.java:91)
>         at 
> org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:172)
>         at 
> org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:204)
>         at com.sun.proxy.$Proxy189.startRemoteAccessVpn(Unknown Source)
>         at 
> com.cloud.network.element.VpcVirtualRouterElement.startVpn(VpcVirtualRouterElement.java:563)
>         at 
> com.cloud.network.vpn.RemoteAccessVpnManagerImpl.startRemoteAccessVpn(RemoteAccessVpnManagerImpl.java:477)
>         at 
> com.cloud.network.vpn.RemoteAccessVpnManagerImpl.startRemoteAccessVpn(RemoteAccessVpnManagerImpl.java:95)
>         at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
>         at 
> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
>         at 
> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
>         at java.lang.reflect.Method.invoke(Method.java:606)
>         at 
> org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:317)
>         at 
> org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:183)
>         at 
> org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:150)
>         at 
> org.apache.cloudstack.network.contrail.management.EventUtils$EventInterceptor.invoke(EventUtils.java:106)
>         at 
> org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:161)
>         at 
> com.cloud.event.ActionEventInterceptor.invoke(ActionEventInterceptor.java:51)
>         at 
> org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:161)
>         at 
> org.springframework.aop.interceptor.ExposeInvocationInterceptor.invoke(ExposeInvocationInterceptor.java:91)
>         at 
> org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:172)
>         at 
> org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:204)
>         at com.sun.proxy.$Proxy226.startRemoteAccessVpn(Unknown Source)
>         at 
> org.apache.cloudstack.api.command.user.vpn.CreateRemoteAccessVpnCmd.execute(CreateRemoteAccessVpnCmd.java:165)
>         at com.cloud.api.ApiDispatcher.dispatch(ApiDispatcher.java:141)
>         at 
> com.cloud.api.ApiAsyncJobDispatcher.runJob(ApiAsyncJobDispatcher.java:108)
>         at 
> org.apache.cloudstack.framework.jobs.impl.AsyncJobManagerImpl$5.runInContext(AsyncJobManagerImpl.java:507)
>         at 
> org.apache.cloudstack.managed.context.ManagedContextRunnable$1.run(ManagedContextRunnable.java:49)
>         at 
> org.apache.cloudstack.managed.context.impl.DefaultManagedContext$1.call(DefaultManagedContext.java:56)
>         at 
> org.apache.cloudstack.managed.context.impl.DefaultManagedContext.callWithContext(DefaultManagedContext.java:103)
>         at 
> org.apache.cloudstack.managed.context.impl.DefaultManagedContext.runWithContext(DefaultManagedContext.java:53)
>         at 
> org.apache.cloudstack.managed.context.ManagedContextRunnable.run(ManagedContextRunnable.java:46)
>         at 
> org.apache.cloudstack.framework.jobs.impl.AsyncJobManagerImpl$5.run(AsyncJobManagerImpl.java:464)
>         at 
> java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:471)
>         at java.util.concurrent.FutureTask.run(FutureTask.java:262)
>         at 
> java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
>         at 
> java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
>         at java.lang.Thread.run(Thread.java:744)
>  



--
This message was sent by Atlassian JIRA
(v6.2#6252)

Reply via email to