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

ASF GitHub Bot commented on CLOUDSTACK-9081:
--------------------------------------------

Github user remibergsma commented on the pull request:

    https://github.com/apache/cloudstack/pull/1118#issuecomment-160390779
  
    LGTM based on these tests (although I didn't test the actual change).
    
    ```
    nosetests --with-marvin --marvin-config=${marvinCfg} -s -a 
tags=advanced,required_hardware=true \
    component/test_vpc_redundant.py \
    component/test_routers_iptables_default_policy.py \
    component/test_routers_network_ops.py \
    component/test_vpc_router_nics.py \
    smoke/test_loadbalance.py \
    smoke/test_internal_lb.py \
    smoke/test_ssvm.py \
    smoke/test_network.py
    
    ```
    
    Result:
    
    ```
    Test iptables default INPUT/FORWARD policies on VPC router ... === 
TestName: test_01_single_VPC_iptables_policies | Status : SUCCESS ===
    ok
    Test redundant router internals ... === TestName: 
test_01_isolate_network_FW_PF_default_routes_egress_true | Status : SUCCESS ===
    ok
    Test redundant router internals ... === TestName: 
test_02_isolate_network_FW_PF_default_routes_egress_false | Status : SUCCESS ===
    ok
    Test redundant router internals ... === TestName: 
test_01_RVR_Network_FW_PF_SSH_default_routes_egress_true | Status : SUCCESS ===
    ok
    Test redundant router internals ... === TestName: 
test_02_RVR_Network_FW_PF_SSH_default_routes_egress_false | Status : SUCCESS ===
    ok
    Create a VPC with two networks with one VM in each network and test nics 
after destroy ... === TestName: test_01_VPC_nics_after_destroy | Status : 
SUCCESS ===
    ok
    Create a VPC with two networks with one VM in each network and test default 
routes ... === TestName: test_02_VPC_default_routes | Status : SUCCESS ===
    ok
    Check the password file in the Router VM ... === TestName: 
test_isolate_network_password_server | Status : SUCCESS ===
    ok
    Check that the /etc/dhcphosts.txt doesn't contain duplicate IPs ... === 
TestName: test_router_dhcphosts | Status : SUCCESS ===
    ok
    Test to create Load balancing rule with source NAT ... === TestName: 
test_01_create_lb_rule_src_nat | Status : SUCCESS ===
    ok
    Test to create Load balancing rule with non source NAT ... === TestName: 
test_02_create_lb_rule_non_nat | Status : SUCCESS ===
    ok
    Test for assign & removing load balancing rule ... === TestName: 
test_assign_and_removal_lb | Status : SUCCESS ===
    ok
    Test to verify access to loadbalancer haproxy admin stats page ... === 
TestName: test02_internallb_haproxy_stats_on_all_interfaces | Status : SUCCESS 
===
    ok
    Test create, assign, remove of an Internal LB with roundrobin http traffic 
to 3 vm's ... === TestName: test_01_internallb_roundrobin_1VPC_3VM_HTTP_port80 
| Status : SUCCESS ===
    ok
    Test SSVM Internals ... === TestName: test_03_ssvm_internals | Status : 
SUCCESS ===
    ok
    Test CPVM Internals ... === TestName: test_04_cpvm_internals | Status : 
SUCCESS ===
    ok
    Test stop SSVM ... === TestName: test_05_stop_ssvm | Status : SUCCESS ===
    ok
    Test stop CPVM ... === TestName: test_06_stop_cpvm | Status : SUCCESS ===
    ok
    Test reboot SSVM ... === TestName: test_07_reboot_ssvm | Status : SUCCESS 
===
    ok
    Test reboot CPVM ... === TestName: test_08_reboot_cpvm | Status : SUCCESS 
===
    ok
    Test destroy SSVM ... === TestName: test_09_destroy_ssvm | Status : SUCCESS 
===
    ok
    Test destroy CPVM ... === TestName: test_10_destroy_cpvm | Status : SUCCESS 
===
    ok
    Test Remote Access VPN in VPC ... === TestName: test_vpc_remote_access_vpn 
| Status : SUCCESS ===
    ok
    Test VPN in VPC ... === TestName: test_vpc_site2site_vpn | Status : SUCCESS 
===
    ok
    Test for port forwarding on source NAT ... === TestName: 
test_01_port_fwd_on_src_nat | Status : SUCCESS ===
    ok
    Test for port forwarding on non source NAT ... === TestName: 
test_02_port_fwd_on_non_src_nat | Status : SUCCESS ===
    ok
    Test for reboot router ... === TestName: test_reboot_router | Status : 
SUCCESS ===
    ok
    Test for Router rules for network rules on acquired public IP ... === 
TestName: test_network_rules_acquired_public_ip_1_static_nat_rule | Status : 
SUCCESS ===
    ok
    Test for Router rules for network rules on acquired public IP ... === 
TestName: test_network_rules_acquired_public_ip_2_nat_rule | Status : SUCCESS 
===
    ok
    Test for Router rules for network rules on acquired public IP ... === 
TestName: test_network_rules_acquired_public_ip_3_Load_Balancer_Rule | Status : 
SUCCESS ===
    ok
    
    ----------------------------------------------------------------------
    Ran 33 tests in 17430.478s
    
    OK
    ```
    
    
    And:
    
    ```
    nosetests --with-marvin --marvin-config=${marvinCfg} -s -a 
tags=advanced,required_hardware=false \
    smoke/test_routers.py \
    smoke/test_network_acl.py \
    smoke/test_privategw_acl.py \
    smoke/test_reset_vm_on_reboot.py \
    smoke/test_vm_life_cycle.py \
    smoke/test_vpc_vpn.py \
    smoke/test_service_offerings.py \
    component/test_vpc_offerings.py \
    component/test_vpc_routers.py
    ```
    
    Result:
    
    ```
    Test router internal advanced zone ... === TestName: 
test_02_router_internal_adv | Status : SUCCESS ===
    ok
    Test restart network ... === TestName: test_03_restart_network_cleanup | 
Status : SUCCESS ===
    ok
    Test router basic setup ... === TestName: test_05_router_basic | Status : 
SUCCESS ===
    ok
    Test router advanced setup ... === TestName: test_06_router_advanced | 
Status : SUCCESS ===
    ok
    Test stop router ... === TestName: test_07_stop_router | Status : SUCCESS 
===
    ok
    Test start router ... === TestName: test_08_start_router | Status : SUCCESS 
===
    ok
    Test reboot router ... === TestName: test_09_reboot_router | Status : 
SUCCESS ===
    ok
    test_privategw_acl (integration.smoke.test_privategw_acl.TestPrivateGwACL) 
... === TestName: test_privategw_acl | Status : SUCCESS ===
    ok
    Test reset virtual machine on reboot ... === TestName: 
test_01_reset_vm_on_reboot | Status : SUCCESS ===
    ok
    Test advanced zone virtual router ... === TestName: 
test_advZoneVirtualRouter | Status : SUCCESS ===
    ok
    Test Deploy Virtual Machine ... === TestName: test_deploy_vm | Status : 
SUCCESS ===
    ok
    Test Multiple Deploy Virtual Machine ... === TestName: 
test_deploy_vm_multiple | Status : SUCCESS ===
    ok
    Test Stop Virtual Machine ... === TestName: test_01_stop_vm | Status : 
SUCCESS ===
    ok
    Test Start Virtual Machine ... === TestName: test_02_start_vm | Status : 
SUCCESS ===
    ok
    Test Reboot Virtual Machine ... === TestName: test_03_reboot_vm | Status : 
SUCCESS ===
    ok
    Test destroy Virtual Machine ... === TestName: test_06_destroy_vm | Status 
: SUCCESS ===
    ok
    Test recover Virtual Machine ... === TestName: test_07_restore_vm | Status 
: SUCCESS ===
    ok
    Test migrate VM ... === TestName: test_08_migrate_vm | Status : SUCCESS ===
    ok
    Test destroy(expunge) Virtual Machine ... === TestName: test_09_expunge_vm 
| Status : SUCCESS ===
    ok
    Test to create service offering ... === TestName: 
test_01_create_service_offering | Status : SUCCESS ===
    ok
    Test to update existing service offering ... === TestName: 
test_02_edit_service_offering | Status : SUCCESS ===
    ok
    Test to delete service offering ... === TestName: 
test_03_delete_service_offering | Status : SUCCESS ===
    ok
    Test for delete account ... === TestName: test_delete_account | Status : 
SUCCESS ===
    ok
    Test for Associate/Disassociate public IP address for admin account ... === 
TestName: test_public_ip_admin_account | Status : SUCCESS ===
    ok
    Test for Associate/Disassociate public IP address for user account ... === 
TestName: test_public_ip_user_account | Status : SUCCESS ===
    ok
    Test for release public IP address ... === TestName: test_releaseIP | 
Status : SUCCESS ===
    ok
    Test create VPC offering ... === TestName: test_01_create_vpc_offering | 
Status : SUCCESS ===
    ok
    Test VPC offering without load balancing service ... === TestName: 
test_03_vpc_off_without_lb | Status : SUCCESS ===
    ok
    Test VPC offering without static NAT service ... === TestName: 
test_04_vpc_off_without_static_nat | Status : SUCCESS ===
    ok
    Test VPC offering without port forwarding service ... === TestName: 
test_05_vpc_off_without_pf | Status : SUCCESS ===
    ok
    Test VPC offering with invalid services ... === TestName: 
test_06_vpc_off_invalid_services | Status : SUCCESS ===
    ok
    Test update VPC offering ... === TestName: test_07_update_vpc_off | Status 
: SUCCESS ===
    ok
    Test list VPC offering ... === TestName: test_08_list_vpc_off | Status : 
SUCCESS ===
    test_09_create_redundant_vpc_offering 
(integration.component.test_vpc_offerings.TestVPCOffering) ... === TestName: 
test_09_create_redundant_vpc_offering | Status : SUCCESS ===
    ok
    Test start/stop of router after addition of one guest network ... === 
TestName: test_01_start_stop_router_after_addition_of_one_guest_network | 
Status : SUCCESS ===
    ok
    Test reboot of router after addition of one guest network ... === TestName: 
test_02_reboot_router_after_addition_of_one_guest_network | Status : SUCCESS ===
    ok
    Test to change service offering of router after addition of one guest 
network ... === TestName: 
test_04_chg_srv_off_router_after_addition_of_one_guest_network | Status : 
SUCCESS ===
    ok
    Test destroy of router after addition of one guest network ... === 
TestName: test_05_destroy_router_after_addition_of_one_guest_network | Status : 
SUCCESS ===
    ok
    Test to stop and start router after creation of VPC ... === TestName: 
test_01_stop_start_router_after_creating_vpc | Status : SUCCESS ===
    ok
    Test to reboot the router after creating a VPC ... === TestName: 
test_02_reboot_router_after_creating_vpc | Status : SUCCESS ===
    ok
    Tests to change service offering of the Router after ... === TestName: 
test_04_change_service_offerring_vpc | Status : SUCCESS ===
    ok
    Test to destroy the router after creating a VPC ... === TestName: 
test_05_destroy_router_after_creating_vpc | Status : SUCCESS ===
    ok
    
    ----------------------------------------------------------------------
    Ran 42 tests in 9114.052s
    
    OK
    ```


> Unable to convert to json in Storage XenMotion
> ----------------------------------------------
>
>                 Key: CLOUDSTACK-9081
>                 URL: https://issues.apache.org/jira/browse/CLOUDSTACK-9081
>             Project: CloudStack
>          Issue Type: Bug
>      Security Level: Public(Anyone can view this level - this is the 
> default.) 
>            Reporter: Rajani Karuturi
>
> Storage motion of vm across clusters/xenserver-pools fails
> in a clustered management server setup. In xen storage motion we have to send 
> a migrate_receive command to the destination host, followed by migrate_send 
> command to the source host. The sr and network detials of the destination 
> host have to be passed in migrate_send command on the source. While migrating 
> across clusters the source and destination resources are seperate objects. To 
> pass this information across resources we have to send seperate migrate with 
> storage receive and send commands to the resource. In a clustered ms setup 
> these commands may have to be forwarded to another ms as the resource may be 
> owned by it. The serilization of the command and answer objects fails in such 
> case as it doesn't understand the xapi sr and network objects.
> The following JSON conversion error was recorded in management-server2.log.
> {noformat}
> 2015-06-19 10:36:48,507 ERROR [c.c.a.t.Request] (AgentManager-Handler-7:null) 
> (logid:) Unable to convert to json: 
> [{"com.cloud.agent.api.MigrateWithStorageReceiveAnswer":{"volumeToSr":[{"t":{"id":51828,"name":"Data4","path":"abce3250-8c25-4634-89e3-cef7af6e16b8","size":5368709120,"type":"DATADISK","storagePoolType":"IscsiLUN","storagePoolUuid":"3ae7d68f-8981-34ac-95f0-c67ef3354748","deviceId":4},"u":{"ref":"OpaqueRef:63e4185a-835a-c7e2-4dc3-fbcb95e97872"}},{"t":{"id":51729,"name":"ROOT-61290","path":"19a7495d-fb3b-45ef-92e6-e86c017ed1f2","size":53687091200,"type":"ROOT","storagePoolType":"IscsiLUN","storagePoolUuid":"cb398aad-77cc-3916-9e3f-3debec31ff71","deviceId":0},"u":{"ref":"OpaqueRef:63e4185a-835a-c7e2-4dc3-fbcb95e97872"}},{"t":{"id":51826,"name":"Data2","path":"13982b0d-e427-45df-9c7f-b258406bdcd7","size":5368709120,"type":"DATADISK","storagePoolType":"IscsiLUN","storagePoolUuid":"3ae7d68f-8981-34ac-95f0-c67ef3354748","deviceId":2},"u":{"ref":"OpaqueRef:63e4185a-835a-c7e2-4dc3-fbcb95e97872"}},{"t":{"id":51825,"name":"Data1","path":"064685fc-1abf-4086-8f81-98dfea2090ce","size":5368709120,"type":"DATADISK","storagePoolType":"IscsiLUN","storagePoolUuid":"3ae7d68f-8981-34ac-95f0-c67ef3354748","deviceId":1},"u":{"ref":"OpaqueRef:63e4185a-835a-c7e2-4dc3-fbcb95e97872"}},{"t":{"id":51829,"name":"Data5","path":"85d8ab52-7c79-4338-9433-11a50cb0bbc1","size":5368709120,"type":"DATADISK","storagePoolType":"IscsiLUN","storagePoolUuid":"3ae7d68f-8981-34ac-95f0-c67ef3354748","deviceId":5},"u":{"ref":"OpaqueRef:63e4185a-835a-c7e2-4dc3-fbcb95e97872"}},{"t":{"id":51827,"name":"Data3","path":"7fc80df1-5065-4286-a1c8-87574e798251","size":5368709120,"type":"DATADISK","storagePoolType":"IscsiLUN","storagePoolUuid":"3ae7d68f-8981-34ac-95f0-c67ef3354748","deviceId":12},"u":{"ref":"OpaqueRef:63e4185a-835a-c7e2-4dc3-fbcb95e97872"}}],"nicToNetwork":[{"t":{"deviceId":0,"networkRateMbps":2000,"defaultNic":true,"pxeDisable":false,"nicUuid":"45cd68fb-fe60-454c-9a08-f73fd902cef0","uuid":"38a40e2d-0f12-4015-9753-8c08d76d52dc","ip":"172.27.0.113","netmask":"255.255.0.0","gateway":"172.27.0.1","mac":"02:00:59:6b:00:08","dns1":"8.8.8.8","dns2":"8.8.4.4","broadcastType":"Vlan","type":"Guest","broadcastUri":"vlan://1109","isolationUri":"vlan://1109","isSecurityGroupEnabled":false,"name":"cloud-public"},"u":{"ref":"OpaqueRef:c9087c77-81f9-03eb-9cf8-df7868354563"}},{"t":{"deviceId":1,"networkRateMbps":-1,"defaultNic":false,"pxeDisable":false,"nicUuid":"1504aed4-4871-48d5-abed-581889cea7c7","uuid":"28f3a4f4-dd3d-42d2-b4a4-5243a50232c8","ip":"10.10.10.2","netmask":"255.255.255.0","gateway":"10.10.10.1","mac":"06:a8:b8:00:10:83","dns1":"8.8.8.8","dns2":"8.8.4.4","broadcastType":"Vlan","type":"Guest","broadcastUri":"vlan://3339","isolationUri":"vlan://3339","isSecurityGroupEnabled":false,"name":"cloud-public"},"u":{"ref":"OpaqueRef:0110ebab-607d-f02f-134a-383e77324677"}}],"token":{"session_id":"OpaqueRef:c5929d08-fc30-939b-fd01-0921799fb98a","host":"OpaqueRef:0d842514-468d-4dd9-5dfe-015ce3898a66","SM":"http://10.32.1.4/services/SM?session_id\u003dOpaqueRef:c5929d08-fc30-939b-fd01-0921799fb98a","master":"http://10.13.4.1/","xenops":"http://10.32.1.4/services/xenops?session_id\u003dOpaqueRef:c5929d08-fc30-939b-fd01-0921799fb98a"},"result":true,"contextMap":{},"wait":0}}]
> 2015-06-19 10:36:48,507 WARN  [c.c.u.n.Task] (AgentManager-Handler-7:null) 
> (logid:) Caught the following exception but pushing on
> com.google.gson.JsonParseException: Type information is unavailable, and the 
> target object is not a primitive: 
> {"ref":"OpaqueRef:63e4185a-835a-c7e2-4dc3-fbcb95e97872"}
>       at 
> com.google.gson.JsonObjectDeserializationVisitor.visitPrimitive(JsonObjectDeserializationVisitor.java:130)
>       at com.google.gson.ObjectNavigator.accept(ObjectNavigator.java:116)
>       at 
> com.google.gson.JsonDeserializationVisitor.visitChild(JsonDeserializationVisitor.java:110)
>       at 
> com.google.gson.JsonDeserializationVisitor.visitChildAsObject(JsonDeserializationVisitor.java:99)
>       at 
> com.google.gson.JsonObjectDeserializationVisitor.visitObjectField(JsonObjectDeserializationVisitor.java:63)
>       at 
> com.google.gson.ReflectingFieldNavigator.visitFieldsReflectively(ReflectingFieldNavigator.java:69)
>       at com.google.gson.ObjectNavigator.accept(ObjectNavigator.java:120)
>       at 
> com.google.gson.JsonDeserializationContextDefault.fromJsonObject(JsonDeserializationContextDefault.java:76)
>       at 
> com.google.gson.JsonDeserializationContextDefault.deserialize(JsonDeserializationContextDefault.java:54)
>       at 
> com.google.gson.DefaultTypeAdapters$CollectionTypeAdapter.deserialize(DefaultTypeAdapters.java:663)
>       at 
> com.google.gson.DefaultTypeAdapters$CollectionTypeAdapter.deserialize(DefaultTypeAdapters.java:624)
>       at 
> com.google.gson.JsonDeserializerExceptionWrapper.deserialize(JsonDeserializerExceptionWrapper.java:51)
>       at 
> com.google.gson.JsonDeserializationVisitor.invokeCustomDeserializer(JsonDeserializationVisitor.java:92)
>       at 
> com.google.gson.JsonObjectDeserializationVisitor.visitFieldUsingCustomHandler(JsonObjectDeserializationVisitor.java:117)
>       at 
> com.google.gson.ReflectingFieldNavigator.visitFieldsReflectively(ReflectingFieldNavigator.java:63)
>       at com.google.gson.ObjectNavigator.accept(ObjectNavigator.java:120)
>       at 
> com.google.gson.JsonDeserializationContextDefault.fromJsonObject(JsonDeserializationContextDefault.java:76)
>       at 
> com.google.gson.JsonDeserializationContextDefault.deserialize(JsonDeserializationContextDefault.java:54)
>       at com.google.gson.Gson.fromJson(Gson.java:551)
>       at com.google.gson.Gson.fromJson(Gson.java:521)
>       at 
> com.cloud.agent.transport.ArrayTypeAdaptor.deserialize(ArrayTypeAdaptor.java:80)
>       at 
> com.cloud.agent.transport.ArrayTypeAdaptor.deserialize(ArrayTypeAdaptor.java:40)
>       at 
> com.google.gson.JsonDeserializerExceptionWrapper.deserialize(JsonDeserializerExceptionWrapper.java:51)
>       at 
> com.google.gson.JsonDeserializationVisitor.invokeCustomDeserializer(JsonDeserializationVisitor.java:92)
>       at 
> com.google.gson.JsonDeserializationVisitor.visitUsingCustomHandler(JsonDeserializationVisitor.java:80)
>       at com.google.gson.ObjectNavigator.accept(ObjectNavigator.java:101)
>       at 
> com.google.gson.JsonDeserializationContextDefault.fromJsonArray(JsonDeserializationContextDefault.java:67)
>       at 
> com.google.gson.JsonDeserializationContextDefault.deserialize(JsonDeserializationContextDefault.java:52)
>       at com.google.gson.Gson.fromJson(Gson.java:551)
>       at com.google.gson.Gson.fromJson(Gson.java:498)
>       at com.google.gson.Gson.fromJson(Gson.java:467)
>       at com.google.gson.Gson.fromJson(Gson.java:417)
>       at com.google.gson.Gson.fromJson(Gson.java:389)
>       at com.cloud.agent.transport.Request.log(Request.java:398)
>       at com.cloud.agent.transport.Request.logD(Request.java:367)
>       at 
> com.cloud.agent.manager.AgentAttache.processAnswers(AgentAttache.java:272)
>       at 
> com.cloud.agent.manager.ClusteredAgentManagerImpl$ClusteredAgentHandler.doTask(ClusteredAgentManagerImpl.java:696)
>       at com.cloud.utils.nio.Task.run(Task.java:84)
>       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:745)
> {noformat}



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Reply via email to